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