Rambler's Top100

(c)2009-2017 openinfotech.ru

СУБД HyTech

Документация
Форматы хранения результатов поиска

Форматы хранения результатов поиска

Результаты поиска можно представить хранящимися в виде массива. Конкретный способ и место хранения массива зависит от наличия ресурсов, алгоритмов доступа и пр.

Физический смысл элемента массива зависит от типа результата и приводится для более полного понимания возможных и "невозможных" операций над результатами:

  • RES_RECORD (несортированные записи) - элемент массива - физический номер записи. Массив упорядочен в порядке возрастания номеров.
  • RES_VALUE (список значений поля) - элемент массива - уникальное значение поля. Массив упорядочен в порядке возрастания значений элементов.
  • RES_HISTO (гистограмма значений поля) - элемент массива - уникальное значение поля, снабженное счетчиком повторов. Массив упорядочен в порядке возрастания значений элементов.
  • RES_JOIN/RES_SORTJOIN (связка таблиц) - элемент массива - вектор, состоящий из группы обработчиков записей в таблицах связки. Размерность вектора определяется числом таблиц в связке. Каждый элемент вектора - обработчик записи соответствующей таблицы из связки. Сам вектор - установленное соответствие записей из группы таблиц. Упорядоченность массива определяется соображениями эффективности или задана пользователем (RES_SORTJOIN). Сохранить критерий сортировки и значения полей упорядочивания не представляется возможным.
  • RES_SORTED (сортированные записи) - элемент массива - обработчик записи таблицы. Массив упорядочен в соответствии с критерием выполненной сортировки. Сохранить критерий сортировки и значения полей упорядочивания не представляется возможным.
  • RES_GROUP (результаты группировки) - элемент массива - структура, содержащая уникальные значения полей группирования и вычисленные значения функционалов. Массив упорядочен в соответствии с критерием группирования.

Обычно после открытия доступа к результатам, содержащим записи в каком-либо виде (RES_SORTED, RES_JOIN/RES_SORTEDJOIN) и последующем чтении поля с номером 0, выходной буфер будет содержать длинное целое - физический номер записи. Однако, при открытии доступа к результатам с флагом ROPEN_HNDL, вместо физического номера записи будет выведен ее обработчик. Таким образом, флаг ROPEN_HNDL является одним из способов получения обработчиков записей из результатов поиска.

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