Rambler's Top100

(c)2009-2017 openinfotech.ru

СУБД HyTech

Документация
Функция htBuildIndexes

htBuildIndexes - Построение индексов для ключевых элементов

Назначение:

Выполнение поиска в таблице, имеющей постоянную часть, как правило, ускоряется при операциях на ключевых элементах. Элементы являются ключевыми, если в описателе таблицы проставлены соответствующие отметки. Если таблица имеет постоянную часть и ключевые элементы в записи, она должна быть проиндексирована. Функция выполняет построение индексов для ключевых элементов таблицы. Таблица, для которой строятся индексы, должна быть закрыта. Таблица не должна использоваться в сети другими пользователями, иначе функция завершится с ошибкой. Операция требует знания паролей доступа как на чтение, так и на запись.

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

Прототип:

 long HTAPI htBuildIndexes(
  char far	*fpTableName, 	/* Имя таблицы */
  char far	*fpReadPswd,	/* Пароль доступа на чтение */
  char far	*fpWritePswd,	/* Пароль доступа на запись*/
  int	 	nTestSpace,	/* Проверка пространства на диске */
  int		nDenyOut 	/* Вывод отвергнутых записей в таблицу */
 );

Параметры

fpTableName Имя таблицы
fpReadPswd Пароль доступа на чтение
fpWritePswd Пароль доступа на запись
nTestSpace Проверка пространства на диске. Перед выполнением операции можно оценить доступное дисковое пространство, для чего следует задать параметр nTestSpace отличным от 0.
nDenyOut Задает режим обработки записей с дубликатами уникальных ключей. Если параметр nDenyOut равен 0, записи просто удаляются. Если же параметр задан отличным от нуля, такие записи будут собраны в отдельную таблицу с именем PROBLEM.HTB

Результат

В качестве кода завершения функция построения индексов возвращает длинное целое со знаком.

< 0 код ошибки
> 0 количество отвергнутых записей
= 0 Отвергнутых записей не найдено

Пример.

Выполнить индексирование таблицы, с выводом отвергнутых записей в таблицу PROBLEM. Места на диске много. Доступ к таблице разрешен всем.

#define TRUE 1
#define FALSE 0
long	rc;
rc = htBuildIndexes( "table", NULL, NULL, FALSE, TRUE );
if( rc < 0L )
	/* Обработка ошибок */
else if( rc == 0L )
	/* Успешное завершение */
else
	/* Отвергнуто rc записей */