Информация о состоянии файлов таблицы
Функция
Предоставление информации о текущем состоянии файлов таблицы.
Спецификация
::=
::=
Общие правила
-
Параметр
< идентификатор таблицы >
задает идентификатор той таблицы, информацию о состоянии файлов которой требуется получить. Идентификаторы таблиц хранятся в системной таблице$$$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;
Данный запрос выдает информацию о первых файлах таблицы каждого типа, для получения информации о прочих файлах таблицы запрос необходимо корректировать (усложнить).