Информация о состоянии файлов таблицы

Функция

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

Спецификация
 
Общие правила
  1. Параметр < идентификатор таблицы > задает идентификатор той таблицы, информацию о состоянии файлов которой требуется получить. Идентификаторы таблиц хранятся в системной таблице $$$SYSRL, столбец $$$S11.

  2. Параметр < тип файла > задает тип файла таблицы:

    • 0 – индексный файл;

    • 1 – файл данных;

    • 2 – файл BLOB-данных.

  3. Параметр < номер файла > определяет порядковый номер файла заданного типа (начиная с 1).

  4. Параметр < тип информации > определяет тип запрашиваемой о файле информации. Тип данных параметра – CHAR, значения параметра являются регистронезависимыми.

  5. Допустимые значения параметра приведены в пункте «Возвращаемое значение».

  6. Аргументы могут быть заданы < SQL-параметром >, который должен содержать спецификацию типа данных параметра.

    select linter_file_info(? (int), ? (int), ? (int), ? (char(15)));
    532
    1
    1
    bitmap_size
    |          1|

Возвращаемое значение
  1. Тип возвращаемого значения – INTEGER.

  2. Возвращаемое значение зависит от параметра < тип информации >.

Значение параметра
< тип информации >
 Возвращаемое значение
size Размер файла в страницах
bitmap_size Размер битовой карты файла в страницах
conv_size Размер файла-конвертера в страницах
free_page_count Число страниц файла (кроме битовой карты и конвертера), помеченных как свободные
full_page_count Число страниц файла (кроме битовой карты и конвертера), помеченных как занятые
  1. Если хотя бы один аргумент равен 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;

Данный запрос выдает информацию о первых файлах таблицы каждого типа, для получения информации о прочих файлах таблицы запрос необходимо корректировать (усложнить).