Страница 1 из 1

Замена sub_type и segment_length blob полей

Добавлено: 01 апр 2011, 15:36
sergei7
Сервер FB1.5. В БД существует ряд таблиц с BLOB полями с разными типами и длинами сегментов, но предназначенные для хранения бинарных объектов (документы msword). Хочу привести базу в порядок (в последствии портировать на FB2.5). Создаю домен CREATE DOMAIN TTEXT AS BLOB SUB_TYPE 1. Пытаюсь привести существующие типы столбцов (BLOB) таблиц к домену TTEXT.
Т.е. по сути: задача изменить SUB_TYPE и segment_length blob поля в уже работающей базе.

Конструкция
ALTER TABLE TABLE_NAME ALTER COLUMN FIELD_NAME TYPE DOMEN_NAME
не применима к BLOB полям.

Вопрос: допустима ли "прямая" модификация системных таблиц?
update RDB$RELATION_FIELDS set RDB$FIELD_SOURCE = DOMEN_NAME where (RDB$FIELD_NAME = FIELD_NAME) and RDB$RELATION_NAME = TABLE_NAME

Re: Замена sub_type и segment_length blob полей

Добавлено: 01 апр 2011, 16:57
kdv
системные таблицы лучше не ковырять.
Если вы храните двоичные данные, то SUB_TYPE блоба должен быть 0, потому как подтип 1 в Firebird 2.1 или 2.5 уже конвертируется между чарсетами (раньше конвертации фактически не было).
То есть, в блобы подтипа 1 можно класть только голый текст, txt файлы, html-страницы, и т.д. Но не документы msword. Это не текст, собственно.

Re: Замена sub_type и segment_length blob полей

Добавлено: 01 апр 2011, 21:35
sergei7
kdv писал(а):системные таблицы лучше не ковырять.
Жаль! Это сильно все усложнит :(
kdv писал(а):Если вы храните двоичные данные, то SUB_TYPE блоба должен быть 0, потому как подтип 1 в Firebird 2.1 или 2.5 уже конвертируется между чарсетами (раньше конвертации фактически не было).
То есть, в блобы подтипа 1 можно класть только голый текст, txt файлы, html-страницы, и т.д. Но не документы msword. Это не текст, собственно.
Спасибо! Здесь я действительно ошибся с sub_type - он должен быть нулем а не единицей.

Из-за этого sub_type'а все и затевалось (подготовка к портированию на fb2.5) - в существующей базе sub_type (у блоб полей) находится в положительном диапазоне. Я правильно понимаю: замена только sub_type "через системные" таблицы также нежелательна?