$$$ATTRI

Назначение

Системная таблица $$$ATTRI предназначена для хранения информации:

  • о столбцах таблиц БД и их атрибутах;

  • о простых и составных индексах (как именованных, так и неименованных).

Максимальное количество записей в таблице равно 1024 К (1048576 записей).

Схема таблицы

Схема записи о столбцах и их атрибутах

Схема таблицы $$$ATTRI для записей о столбцах и их атрибутах приведена в таблице 1.

Таблица 1. Схема таблицы $$$ATTRI для записей о столбцах и их атрибутах
Имя столбцаТип данныхСодержание
$$$S21integer

Системный идентификатор таблицы.

$$$S22smallint

Порядковый номер столбца таблицы.

Если столбец имеет положительное значение, то запись содержит информацию о столбцах таблиц БД и их атрибутах, если отрицательное – то о простых и составных индексах.

$$$S23char(66)

Имя столбца.

$$$S24byte(80)

Описание атрибутов столбца (таблица 2).


Структура записи о столбцах и их атрибутах

Структура записи ATTRI о столбцах и их атрибутах приведена в таблице 2.

Таблица 2. Структура записи таблицы $$$ATTRI о столбцах и их атрибутах
ПолеТип данныхСмещениеСодержание
PRZNULL_BYTE0

Флаг допустимости NULL-значения:

  • 0 – разрешено;

  • 1 – запрещено.

Примечание

Это поле и все остальные нижеследующие поля таблицы соответствуют столбцу $$$S24.

TYPATRL_BYTE1

Тип данных столбца:

  • 0 – структура описывает индекс;

  • 1 – char [(n)];

  • 2 – bigint/integer/smallint;

  • 3 – real/double;

  • 4 – date;

  • 5 – decimal/numeric;

  • 6 – byte[(n)];

  • 7 – blob;

  • 8 – vachar;

  • 9 – varbyte;

  • 10 – boolean;

  • 11 – nchar[(n)];

  • 12 – nchar varying;

  • 13 – extfile.

PrecL_BYTE2

Точность для столбцов типа decimal/numeric. Для геометрических типов содержит идентификатор геометрического типа:

  • 0x01 – POINT;

  • 0x02 – LINESTRING;

  • 0x03 – POLYGON;

  • 0x04 – MULTIPOINT;

  • 0x05 – MULTI LINESTRING;

  • 0x06 – MULTIPOLYGON;

  • 0x07 – GEOMETRY COLLECTION;

  • 0x81 – CIRCLE;

  • 0x82 – LINE.

ScaleL_BYTE3Масштаб для столбцов типа decimal/numeric.
DLNL_WORD4

Длина столбца в байтах.

Primary_KeyL_BYTE6

Не используется.

UniqueL_BYTE7

Не используется.

KEYL_BYTE8

Признак индексирования:

  • 0 – столбец не индексирован;

  • 3 – столбец индексирован (является ключом).

NMRASL_BYTE9

Номер файла области индексов для индекса по столбцу.

Default_NullL_BYTE10

Не используется.

ForeignL_BYTE11

Признак ссылающегося столбца:

  • 0 – ссылки нет;

  • N – номер столбца во внешней таблице, на который ссылается данный столбец.

SDVINKORL_WORD12

Номер байта, с которого начинается значение атрибута в неупакованной записи. Подсчет начинается с 0.

Delete_ActionL_BYTE14

Наличие операции удаления по ссылочной целостности:

  • 0 – Noaction (Restricts);

  • 1 – Set Null;

  • 2 – Set Default;

  • 3 – Cascade.

Update_ActionL_BYTE15

Наличие операции обновления по ссылочной целостности:

  • 0 – Noaction (Restricts);

  • 1 – Set Null;

  • 2 – Set Default;

  • 3 – Cascade.

PrimaryOrderL_BYTE16

Порядковый номер столбца в составном первичном ключе.

AccessGroupL_BYTE17

Группа доступа. Определяется мандатным доступом.1)

AccessLevelsL_BYTE18

Уровни доступа. Старшие 4 бита – RAL, младшие 4 бита – WAL. Определяется мандатным доступом.1)

CKEYCOUNTL_BYTE19

Количество составных ключей, в которых задействован данный столбец.

DEFLENL_WORD20

Длина значения по умолчанию (для столбца со строковым типом данных или для столбца типа extfile).

CharSetL_WORD22

Идентификатор кодовой страницы, используемой для представления данных столбца.

PhIndexL_BYTE24

Признак принадлежности столбца к фразовому индексу.

Res[3]L_BYTE25

Зарезервировано.

RANGE_IDL_LONG28

Номер страницы файла данных (1.01) системной таблицы $$$SYSRL, в которой содержится информация для ранжированного столбца.

AUTOINC_BASEL_LONG32

Начальное значение для AUTOINCREMENT.

DEFAULT_IDL_LONG36

Смещение в странице Integrity родительской таблицы, по которому хранится значение по умолчанию.

CHECK_IDL_LONG40

Не используется.

DEF_FILTERL_LONG44

Идентификатор фильтра полнотекстового поиска по умолчанию.

FOR_TABLE_IDL_LONG48

Идентификатор внешней таблицы.

Foreign_Column_IdL_LONG52

Не используется.

REF_ACTIONSL_LONG56

Не используется.

CAS_FLL_LONG60

Флаги столбца:

  • 0x8000 – установлено значение по умолчанию;

  • 0x4000 – значение по умолчанию Null;

  • 0x2000 – значение по умолчанию User;

  • 0x1000 – значение по умолчанию sysdate;

  • 0x0800 – столбец не допускает NULL-значений;

  • 0x0400 – unique;

  • 0x0200 – primary key;

  • 0x0100 – autoinc;

  • 0x0080 – foreign key;

  • 0x0040 – autorowid;

  • 0x0020 – autoinc range.

NMRFPAGL_LONG64

Номер первой страницы индекса верхнего уровня.

NMRLPAGL_LONG68

Номер последней страницы индекса верхнего уровня.

CKEYROWID[2]L_LONG72

RowId описателя составного ключа в таблице $$$ATTRI.


1) Применяется только в СУБД ЛИНТЕР БАСТИОН

Пример

Получить системные атрибуты столбца MODEL пользовательской таблицы SYSTEM.AUTO:

select rowid
  from $$$attri
 where $$$s23='MODEL'
   and $$$s21=(select $$$s11
                from $$$sysrl
               where $$$s12=(select rowid
                               from $$$usr
                              where $$$s34='SYSTEM')
                 and $$$s13='AUTO');
|        852|
! Длина столбца
select getword ($$$s24,4)
  from $$$attri
 where rowid=852;
|         20|

! Признак индексированности столбца
select case when getbyte ($$$s24,8)=0 then 'Не индексирован' else 'Индексирован' end
  from $$$attri
 where rowid=852;
|Не индексирован|

! Кодировка столбца
select name
  from $$$charset
 where ident=(select getword($$$s24,22) from $$$attri where rowid=852);
|CP866                                                          |

Схема записи об индексах таблиц БД

Схема таблицы $$$ATTRI для записей об индексах таблиц приведена в таблице 3.

Таблица 3. Схема таблицы $$$ATTRI для записей об индексах таблиц
Имя столбцаТип данныхСодержание
$$$S21integer

Системный идентификатор таблицы.

$$$S22smallint

Порядковый номер индекса таблицы.

$$$S23char(66)

Имя индекса.

$$$S24byte(80)

Описание индекса (таблица 4).


Структура записи об индексах таблиц БД

Структура записи ATTRI об индексах приведена в таблице 4.

Таблица 4. Структура записи таблицы $$$ATTRI об индексах
ПолеТип данныхСмещениеСодержание
NMRASL_BYTE0

Номер файла индексов, где хранится информация о данном индексе. Для одностолбцовых именованных индексов это значение равно 255.

Примечание

Это поле и все остальные нижеследующие поля таблицы соответствуют столбцу $$$S24.

Delete_ActionL_BYTE1

Наличие операции удаления по ссылочной целостности:

  • 0 – Noaction (Restricts);

  • 1 – Set Null;

  • 2 – Set Default;

  • 3 – Cascade.

Update_ActionL_BYTE2

Наличие операции обновления по ссылочной целостности:

  • 0 – Noaction (Restricts);

  • 1 – Set Null;

  • 2 – Set Default;

  • 3 – Cascade.

AccessGroupL_BYTE3

Группа доступа. Определяется мандатным доступом.1)

AccessLevelsL_BYTE4

Уровни доступа. Старшие 4 бита – RAL, младшие 4 бита – WAL. Определяется мандатным доступом.1)

ATRCNT L_BYTE5

Количество столбцов в индексе.

Columns [6]TCKEYPART6

Описание столбцов составного индекса.

Структура элемента массива TCKEYPART, соответствующая старой версии ключа приведена в таблице 5, новой – в таблице 6.

Признак новизны ключа содержится в поле VerType структуры записи таблицы $$$ATTRI.

DLNKEYL_WORD54

Длина составного ключа.

FOR_TABLE_IDL_LONG56

Идентификатор внешней таблицы.

Foreign_Column_Id L_LONG60

Идентификатор внешнего ключа.

CAS_FLL_LONG64

Флаги индекса:

  • 0x0400 – unique;

  • 0x0200 – primary key;

  • 0x0080 – foreign key;

  • 0x0008 – ключ именованный.

TreeTopL_LONG68

Номер начальной страницы файла индексов, где хранится информация о данном индексе.

TreeLabL_LONG72

Метка уровня дерева индексов.

geoTypeL_BYTE76

Не используется.

TailL_BYTE77

Не используется.

VerTypeL_WORD78

Версия ключа. Если установлен флаг 0x8000, то составной ключ имеет новую структуру (максимальный размер ключа 1024 байта).

idxCreationTimeDATE80

Зарезервировано.

ResL_WORD86

Зарезервировано.


1) Применяется только в СУБД ЛИНТЕР БАСТИОН

Таблица 5. Старая структура элемента массива TCKEYPART
ПолеТип данныхСодержание
NmratrL_BYTE

Порядковый номер данного столбца в составном индексе.

PartLenL_BYTE

Длина столбца.

PartShfL_WORD

Смещение столбца в записи таблицы.

CharSetL_WORD

Идентификатор кодовой страницы столбца.

PartTypL_BYTE

Тип данных столбца (см. поле TYPATR в таблице 2).

Tail_byteL_BYTE

Не используется.


Таблица 6. Новая структура элемента массива TCKEYPART
ПолеТип данныхСодержание
NmratrL_BYTE

Порядковый номер данного столбца в составном индексе.

PartTypL_BYTE

Тип данных столбца (см. поле TYPATR в таблице 2).

PartLenL_WORD

Длина столбца.

PartShfL_WORD

Смещение столбца в записи таблицы.

CharSetL_WORD

Идентификатор кодовой страницы столбца.