Страница 30 из 38 RDB$EXCEPTIONS - исключения. Хотя предусмотрено хранение системных, на самом деле видны только пользовательские. RDB$EXCEPTION_NAME - идентификатор. RDB$EXCEPTION_NUMBER - номер. RDB$MESSAGE - сообщение, которое получит пользователь при срабатывании. RDB$DESCRIPTION - комментарий (всё время null) RDB$SYSTEM_FLAG - признак системности. По документации 0 - пользовательское, не 0 - системное. Реально - везде null. RDB$FIELD_DIMENSIONS - размерности полей массивных типов. Записи ссылаются на RDB$FIELDS, то есть сгенерированные внутренние домены для полей. RDB$FIELD_NAME - ссылка на RDB$FIELDS. RDB$FIELD_NAME. RDB$DIMENSION - номер измерения. Измерения нумеруются с нуля, видимо, от старших. RDB$LOWER_BOUND - нижняя граница в данном измерении. RDB$UPPER_BOUND - верхняя граница в данном измерении. RDB$FIELDS - поля. Реально эта таблица описывает специальные внутренние домены, которые автоматически генерируются для каждого поля, хотя попадаются и настоящие домены. Названия самих полей и привязку к отношениям нужно искать в RDB$RELATION_FIELDS. RDB$FIELD_NAME - имя пользовательского домена или сгенериорованное имя домена в виде RDB$nnn. RDB$QUERY_NAME - в документации говорится, что оно не используется. Реально либо null, либо пустая строка. RDB$VALIDATION_BLR - в документации говорится, что не используется. Вероятно, предусматривалось для какого-то проверочного кода. RDB$VALIDATION_SOURCE - в документации говорится, что не используется. Вероятно, исходник для предыдущего поля. RDB$COMPUTED_BLR - код для вычисления на случай, если это поле - вычисляемое. RDB$COMPUTED_SOURCE - исходник выражения для вычисляемого поля. RDB$DEFAULT_VALUE - значение по умолчанию для поля в двоичном виде. RDB$DEFAULT_SOURCE - исходник значения по умолчанию для поля. RDB$FIELD_LENGTH - содержит длинну в поля. Для большинства нестроковых типов - 8 байт, для LONG и FLOAT - по 4, для SMALLINT - 2. RDB$FIELD_SCALE - количество знаков после запятой в числах фиксированного формата. Хранится в отрицательном виде. У остальных полей - 0. RDB$FIELD_TYPE - тип данных поля. smallint = 7, integer = 8, quad = 9, float=10, d_float=11, char=14, double=27, date=35, varchar=37, blob=261. Подробности можно извлечь из rdb_types RDB$FIELD_SUB_TYPE - подтип поля. Для блобов: 0 = неизвестный, 1 = текст, 2 = BLR (внутренний код interbase, результат компиляции выражений), 3 = ACL (список прав доступа), 4 = зарезервировано, 5 = закодированные метаданные таблицы, 6 = описание распределённой транзакции, завершившейся необычным образом. Для символьных полей: 0 = неизвестно, 1 = двоичные данные. RDB$MISSING_VALUE - не используется. RDB$MISSING_SOURCE - не используется. RDB$DESCRIPTION - комментарий. Тоже реально не используется. RDB$SYSTEM_FLAG - 0 = пользовательское поле. 1 = системное (по документации - не 0). RDB$QUERY_HEADER - не используется. RDB$SEGMENT_LENGTH - размер сегмента для блоба. Какими кусками его будут читать и писать. RDB$EDIT_STRING - по всей видимости, какая-то строка формата редактирования. Реально не используется, везде либо null, либо пустая строка. RDB$EXTERNAL_LENGTH - физическая длинна поля внешней таблицы, если поле в такой таблице. RDB$EXTERNAL_SCALE - масштаб целочисленного поля внешней таблицы. Значение, взятое оттуда домножается на 10 в этой степени. RDB$EXTERNAL_TYPE - тип данных внешнего поля. То же, что и для RDB$FIELD_TYPE выше, с дополнением: строка в формате Си (завершённая нулём) имеет код 40. RDB$DIMENSIONS - количество измерений для поля типа массива. Для скалярных полей = 0. RDB$NULL_FLAG - признак not null, если 1. Иначе обычно в этом поле null. RDB$CHARACTER_LENGTH - длинна символа в байтах. RDB$COLLATION_ID - номер сравнения символов согласно RDB$COLLATIONS. RDB$CHARACTER_SET_ID - номер кодировки символов согласно RDB$CHARACTER_SETS. RDB$FILES - вторичные и теневые файлы базы. Главный файл здесь не описывается. Про структуру файлов базы есть отдельный раздел. RDB$FILE_NAME - имя файла. Между прочим, 253 символа. Видимо, если реальный путь будет длиннее, то будут проблемы. RDB$FILE_SEQUENCE - номер файла в данной последовательности (главной или теневой). RDB$FILE_START - начальная страница файла. RDB$FILE_LENGTH - длинна файла в страницах. RDB$FILE_FLAGS - какие-то флаги, зарезервировано в системных целях. RDB$SHADOW_NUMBER - номер теневой последовательности. Файлы главной последовательности имеют значение 0 или null, теневые последовательности нумеруются положительными числами. RDB$FILTERS - блобовые фильтры. Это такая разновидность внешних функций, которая подключается к interbase для конвертации подтипов блобов. RDB$FUNCTION_NAME - имя фильтра в базе. RDB$DESCRIPTION - комментарий. Наверняка, как обычно не используется. RDB$MODULE_NAME - имя модуля (путь к нему в операционке), в котором сидит функция. RDB$ENTRY_POINT - точка входа в модуль, которую надо вызвать. RDB$INPUT_SUB_TYPE - подтип блоба, который функция принимает на вход. RDB$OUTPUT_SUB_TYPE - подтип блоба, который функция выдаёт на выход. RDB$SYSTEM_FLAG - признак системности (ненулевое значение - системный фильтр, иначе - пользовательский). RDB$FORMATS - форматы таблиц. Фактически - сколько раз таблица альтерилась, столько записей сюда и поступает. Однако старые форматы, похоже после перебэкапов выбывают. Поскольку представления в interbase не альтерятся, речь идёт только о хранимых таблицах. RDB$RELATION_ID - ссылка на RDB$RELATIONS, о какой таблице идёт речь. RDB$FORMAT - номер формата. RDB$DESCRIPTOR - описание формата. Блоб, который теоретически должен в каком-то формате описывать таблицу. Что там реально - неизвестно. RDB$FUNCTION_ARGUMENTS - параметры внешних функций. Детализация RDB$FUNCTIONS. RDB$FUNCTION_NAME - имя функции, ссылка на RDB$FUNCTIONS. RDB$ARGUMENT_POSITION - номер параметра, начиная с 0. RDB$MECHANISM - способ передачи параметров. 0 = по значению, 1 = по ссылке. RDB$FIELD_TYPE - тип значения. Набор тот же, что и в RDB$FIELDS. RDB$FIELD_SCALE - то же, что и в RDB$FIELDS. RDB$FIELD_LENGTH - то же, что и в RDB$FIELDS. RDB$FIELD_SUB_TYPE - видимо подтип блоба, как и в RDB$FIELDS, но в документации написано, что зарезервировано на будущее. То есть видать не поддерживается пока. RDB$CHARACTER_SET_ID - кодировка символов, ссылка на RDB$CHARACTER_SETS. RDB$FUNCTIONS - внешние функции (UDF). RDB$FUNCTION_NAME - имя функции RDB$FUNCTION_TYPE - зарезервировано на будущее. Реально - 0. RDB$QUERY_NAME - альтернативное имя функции, которое можно использовать в ISQL. Реально - пустая строка. RDB$DESCRIPTION - комментарий. Реально не используется. RDB$MODULE_NAME - имя модуля (путь в операционке), в котором находится функция. RDB$ENTRY_POINT - точка входа в загрузочном модуле, определённом в предыдущем поле. RDB$RETURN_ARGUMENT - номер аргумента согласно RDB$FUNCTION_ARGUMENTS, в котором описан возвращаемый функцией результат. То есть тип результата описывается, как один из аргументов. RDB$SYSTEM_FLAG - признак системности. Реально везде null. По документации 0 = пользовательская функция, 1 = системная. |