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

Функция

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

Спецификация
 
Общие правила
  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;

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