InterBase: тормозология и глюконавтика
Страница 30. Системные таблицы. Часть 2


 

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 = системная.
 
« Предыдущая статья