FB server 1.5.2.4731, база диалект 1, IBExpert 2005.05.10.
Не могу понять что делается. Ситуация: в реальных FDB поменять тип полей,
определенных доменом TXXX numeric(9,2), на (15,2).
В базах b/r IB/FB без вопросов.
В базе, созданой под FB, изменение домена дает непонятный результат.
Проведены исследования. При исследованиях обнаружено:
Код: Выделить всё
CREATE DOMAIN TTMP AS NUMERIC(9,2)
RDB$FIELD_LENGTH: 4,
RDB$FIELD_SCALE: -2,
RDB$FIELD_TYPE: 8, <--- INTEGER
RDB$FIELD_SUB_TYPE: 1, <--- Текст ( ?? )
RDB$SYSTEM_FLAG: 0, <--- пользовательский
RDB$FIELD_PRECISION: 9 <--- Точность числа (для вещественных типов)
Код: Выделить всё
ALTER DOMAIN TTMP TYPE NUMERIC(15,2)
RDB$FIELD_LENGTH: 8,
RDB$FIELD_SCALE: -2,
RDB$FIELD_TYPE: 27, <--- DOUBLE
RDB$FIELD_SUB_TYPE: 1,
RDB$SYSTEM_FLAG: 0,
RDB$FIELD_PRECISION: 9 <--- ???
IBExpert настойчиво показывает домен TTMP как 9,2 .
Если посмотреть на поле в таблице по TTMP, IBExpert показывает его как 15,2 (??)
isql показывет как 15,2:
SQL> show domain TTMP;
TTMP NUMERIC(15, 2) Nullable
В RDB$FIELDS select показывает гибрид - в меру моей колокольни.
Вопросы:
1. Почему RDB$FIELD_PRECISION не изменяется на 15 ?
Почему при CREATE DOMAIN TTMP1 AS NUMERIC(15,2)
имеем(я) : RDB$FIELD_SUB_TYPE null; RDB$FIELD_PRECISION null ?
2. Есть ли альтернатива что то сделать с тем типом даных
кроме вариантов alter table TBTABLE alter FFIELD type TNEW_TYPE ?
3. Кто курит зебру ?