Информация о состоянии файлов таблицы (LINTER_FILE_INFO)
Функция
Предоставление информации о текущем состоянии файлов таблицы.
Спецификация
::=::=Общие правила
-
Параметр
<идентификатор таблицы>задает идентификатор той таблицы, информацию о состоянии файлов которой требуется получить. Идентификаторы таблиц хранятся в системной таблице$$$SYSRL, столбец$$$S11. -
Параметр
<тип файла>задает тип файла таблицы:-
0 – индексный файл;
-
1 – файл данных;
-
2 – файл BLOB-данных.
-
-
Параметр
<номер файла>определяет порядковый номер файла заданного типа (начиная с 1). -
Параметр
<тип информации>определяет тип запрашиваемой о файле информации. Тип данных параметра – CHAR, значения параметра являются регистронезависимыми. -
Допустимые значения параметра приведены в пункте «Возвращаемое значение».
-
Аргументы могут быть заданы
<SQL-параметром>, который должен содержать спецификацию типа данных параметра.select linter_file_info(? (int), ? (int), ? (int), ? (char(15))); 532 1 1 bitmap_size | 1|
Возвращаемое значение
-
Тип возвращаемого значения – INTEGER.
-
Возвращаемое значение зависит от параметра
<тип информации>.
| Значение параметра <тип информации> | Возвращаемое значение | |
|---|---|---|
| size | Размер файла в страницах | |
| bitmap_size | Размер битовой карты файла в страницах | |
| conv_size | Размер файла-конвертера в страницах | |
| free_page_count | Число страниц файла (кроме битовой карты и конвертера), помеченных как свободные | |
| full_page_count | Число страниц файла (кроме битовой карты и конвертера), помеченных как занятые |
-
Если хотя бы один аргумент равен NULL-значению, результат NULL-значение.
Пример
select cast ($$$s34 as char(18)) as "UserName",
cast ($$$s13 as char(18)) as "TableName",
linter_file_info($$$s11,0,1,'size') as "IndexFileSize",
linter_file_info($$$s11,0,1,'bitmap_size') as "IndexBitmapSize",
linter_file_info($$$s11,0,1,'conv_size') as "IndexConvSize",
linter_file_info($$$s11,0,1,'full_page_count')
as "IndexFullCount",
linter_file_info($$$s11,0,1,'free_page_count')
as "IndexFreeCount",
linter_file_info($$$s11,1,1,'size') as "DataFileSize",
linter_file_info($$$s11,1,1,'bitmap_size')
as "DataBitmapSize",
linter_file_info($$$s11,1,1,'full_page_count')
as "DataFullCount",
linter_file_info($$$s11,1,1,'free_page_count')
as "DataFreeCount",
case when getbyte($$$s14,102) > 0
then linter_file_info($$$s11,2,1,'size')
else NULL end as "BlobFileSize",
case when getbyte($$$s14,102) > 0
then linter_file_info($$$s11,2,1,'bitmap_size')
else NULL end as "BlobBitmapSize",
case when getbyte($$$s14,102) > 0
then linter_file_info($$$s11,2,1,'full_page_count')
else NULL end as "BlobFullCount",
case when getbyte($$$s14,102) > 0
then linter_file_info($$$s11,2,1,'free_page_count')
else NULL end as "BlobFreeCount"
from LINTER_SYSTEM_USER.$$$sysrl,
LINTER_SYSTEM_USER.$$$usr
where $$$s31 = $$$s12 and
$$$s11 > 0 and
$$$s32 = 0 and
getbyte($$$s14,6) = 0;
Данный запрос выдает информацию о первых файлах таблицы каждого типа, для получения информации о прочих файлах таблицы запрос необходимо корректировать (усложнить).