Дать элемент очереди столбцов
Назначение
Команда
DIRA
предназначена для получения информации об указанном элементе
очереди столбцов.
Параметры вызова
inter(CBL, NULL, [OpBuf], [CondBuf], RowBuf);
Входные данные
Входными данными являются:
-
контрольный блок
CBL
; -
буфер SQL-запросов
OpBuf
.
В контрольном блоке должны быть заполнены поля:
Имя поля | Значение | |
---|---|---|
Command
|
"DIRA"
| |
RowId
| Порядковый номер элемента очереди столбцов (отсчет начинается с 1) | |
LnBufRow
| Длина буфера выборки данных | |
Node
| Имя ЛИНТЕР-сервера |
Буфер SQL-запросов OpBuf может содержать имя устанавливаемой для данного канала кодовой страницы, которая должна быть известна БД, то есть:
-
находиться в системной таблице LINTER_SYSTEM_USER.$$$CHARSET;
-
или быть описана как синоним в таблице LINTER_SYSTEM_USER.$$$CSALIAS;
-
или быть предопределённым значением UTF-8 или UCS2.
Выходные данные
Выходными данными являются:
-
контрольный блок
CBL
; -
буфер выборки данных
RowBuf
.
В контрольном блоке будут возвращены:
Имя поля | Значение | |
---|---|---|
CodErr
| Код завершения запроса к СУБД ЛИНТЕР | |
LnBufRow
| Фактическая длина буфера выборки данных (sizeof(DIRA_OUT)) | |
SysErr
| Код состояния ОС |
В буфере выборки данных
RowBuf
информация будет представлена в следующем виде:
struct DIRA_OUT { L_LONG Owner; /* Идентификатор владельца таблицы */ L_CHAR TblName[MAX_ID_LEN]; /* Имя таблицы */ L_CHAR ColName[MAX_ID_LEN]; /* Имя столбца */ L_BYTE UpdFlag; /* Признак корректировки столбца */ L_BYTE Reserve[3]; /* Резерв */ };
В полях буфера выборки данных будет содержаться:
Имя поля | Значение | |
---|---|---|
Owner
| Идентификатор владельца таблицы, столбец которой находится в указанном элементе очереди столбцов | |
TblName
| Имя таблицы, содержащей столбец элемента | |
ColName
| Имя столбца, находящегося в указанном элементе | |
UpdFlag
|
Возвращается значение 1, если в момент выдачи команды
DIRA
измененные данные соответствующего столбца еще не были
перенесены из системного пула в БД.
После того как данные будут изменены в БД, этот признак
сбрасывается. Поэтому для получения достоверной информации о
частоте изменения данных столбца
периодичность опроса очереди столбцов должна быть не больше периодичности
обновления информации в БД
|
С помощью команды
DIRA
может быть получена следующая информация:
-
о частоте обращения к столбцу данной таблицы (по частоте присутствия данного элемента в очереди таблиц);
-
об интенсивности обращения к столбцу таблицы (чем меньше порядковый номер элемента очереди столбцов, тем чаще происходит обращение к данному столбцу таблицы);
-
о частоте корректировки данных в столбце таблицы (путем суммирования значений поля
UpdFlag
); -
о влиянии установленного размера очереди столбцов на производительность (по частоте вытеснения и повторного включения элементов в очередь).
Первые 13 элементов очереди столбцов заняты столбцами системных таблиц в порядке, приведенном в таблице 14.
№ элемента | Имя столбца | Имя таблицы |
---|---|---|
1 | $$$S11 |
$$$SYSRL
|
2 | $$$S12 |
$$$SYSRL
|
3 | $$$S13 |
$$$SYSRL
|
4 | $$$S14 |
$$$SYSRL
|
5 | $$$S21 |
$$$ATTRI
|
6 | $$$S22 |
$$$ATTRI
|
7 | $$$S23 |
$$$ATTRI
|
8 | $$$S24 |
$$$ATTRI
|
9 | $$$S31 |
$$$USR
|
10 | $$$S32 |
$$$USR
|
11 | $$$S33 |
$$$USR
|
12 | $$$S34 |
$$$USR
|
13 | $$$S35 |
$$$USR
|
Описание
Коды завершения
Код | Описание | |
---|---|---|
NORMAL | Нормальное завершение | |
SMALLBUFKOR | Недостаточный размер буфера выборки данных | |
EORR | Элемент очереди с заданным порядковым номером не найден |
Пример формирования команды
#include < string.h > #include < stdlib.h > #include "inter.h" L_LONG LinterDIRA(TCBL *pCBL, L_LONG N, DIRA_OUT *Out) { memcpy(pCBL- >Command, "DIRA", 4); pCBL- >LnBufRow=sizeof(DIRA_OUT); pCBL- >RowId=N; pCBL- >PrzExe &= ~Q_ASYNC; inter(pCBL, NULL, NULL, NULL, Out); return pCBL- >CodErr; }