Модуль index
-
enum
iterator_type
Управление итерацией кортежей в индексе. Различные типы индексов поддерживают различные типы итераторов. Например, можно начать итерацию с определенного значения (ключ запроса), а затем получить все кортежи, ключи которых больше или равны (= GE) заданному ключу.
Если тип итератора не поддерживается выбранным типом индекса, конструктор итератора прекратит работу с ошибкой ER_UNSUPPORTED. Чтобы индекс можно было выбрать для первичного ключа, он должен поддерживать типы ITER_EQ и ITER_GE.
Значение ключа запроса NULL соответствует первому или последнему ключу в индексе, в зависимости от направления итерации (первый ключ для типов GE и GT, последний ключ для типов LE и LT). Таким образом, для итерации по всем кортежам в индексе можно использовать типы итерации ITER_GE или ITER_LE с начальным ключом, который равен NULL. Для ITER_EQ ключ не должен равняться NULL.
-
box_iterator_t *
box_index_iterator
(uint32_t space_id, uint32_t index_id, int type, const char *key, const char *key_end) Выделение и инициализация итератора для space_id, index_id.
Возвращаемый итератор следует удалить с помощью box_iterator_free.
Параметры: - space_id (uint32_t) – идентификатор спейса
- index_id (uint32_t) – идентификатор индекса
- type (int) – iterator_type
- char* key (const) – кодировка ключа в формате MsgPack-массива ([part1, part2, …])
- char* key_end (const) – часть закодированного ключа
key
Результат: NULL в случае ошибки (проверьте box_error_last())
Результат: итератор в остальных случаях
См. также box_iterator_next, box_iterator_free
-
int
box_iterator_next
(box_iterator_t *iterator, box_tuple_t **result) Получение следующего пункта из итератора
iterator
.Параметры: - iterator (box_iterator_t*) – итератор, возвращаемый box_index_iterator
- result (box_tuple_t**) – аргумент вывода. Результатом будет кортеж или NULL, если данных больше нет.
Результат: -1 в случае ошибки (проверьте box_error_last())
Результат: 0 в случае выполнения. Отсутствие данных не является ошибкой.
-
void
box_iterator_free
(box_iterator_t *iterator) Удаление и освобождение итератора.
Параметры: - iterator (box_iterator_t*) – итератор, возвращаемый box_index_iterator
-
int
iterator_direction
(enum iterator_type type) Определение направления заданного типа итератора: -1 для REQ, LT, LE, и +1 для всех остальных.
-
ssize_t
box_index_len
(uint32_t space_id, uint32_t index_id) Возврат номера элемента в индексе.
Параметры: - space_id (uint32_t) – идентификатор спейса
- index_id (uint32_t) – идентификатор индекса
Результат: -1 в случае ошибки (проверьте box_error_last())
Результат: >= 0 в остальных случаях
-
ssize_t
box_index_bsize
(uint32_t space_id, uint32_t index_id) Возврат количества байтов памяти, используемых индексом.
Параметры: - space_id (uint32_t) – идентификатор спейса
- index_id (uint32_t) – идентификатор индекса
Результат: -1 в случае ошибки (проверьте box_error_last())
Результат: >= 0 в остальных случаях
-
int
box_index_random
(uint32_t space_id, uint32_t index_id, uint32_t rnd, box_tuple_t **result) Возврат случайного кортежа из индекса (используется для статистического анализа).
Параметры: - space_id (uint32_t) – идентификатор спейса
- index_id (uint32_t) – идентификатор индекса
- rnd (uint32_t) – случайное начальное число
- result (box_tuple_t**) – аргумент вывода. Результатом будет кортеж или NULL, если в спейсе нет кортежей.
См. также index_object:random()
-
int
box_index_get
(uint32_t space_id, uint32_t index_id, const char *key, const char *key_end, box_tuple_t **result) Получение кортежа из индекса по ключу.
Следует отметить, что данная функция работает намного быстрее, чем index_object:select() или box_index_iterator + box_iterator_next.
Параметры: - space_id (uint32_t) – идентификатор спейса
- index_id (uint32_t) – идентификатор индекса
- char* key (const) – кодировка ключа в формате MsgPack-массива ([part1, part2, …])
- char* key_end (const) – часть закодированного ключа
key
- result (box_tuple_t**) – аргумент вывода. Результатом будет кортеж или NULL, если в спейсе нет кортежей.
Результат: -1 в случае ошибки (проверьте box_error_last())
Результат: 0, если выполнено
См. также
index_object.get()
-
int
box_index_min
(uint32_t space_id, uint32_t index_id, const char *key, const char *key_end, box_tuple_t **result) Возврат первого (минимального) кортежа, который соответствует заданному ключу.
Параметры: - space_id (uint32_t) – идентификатор спейса
- index_id (uint32_t) – идентификатор индекса
- char* key (const) – кодировка ключа в формате MsgPack-массива ([part1, part2, …])
- char* key_end (const) – часть закодированного ключа
key
- result (box_tuple_t**) – аргумент вывода. Результатом будет кортеж или NULL, если в спейсе нет кортежей.
Результат: -1 в случае ошибки (проверьте box_error_last())
Результат: 0, если выполнено
См. также index_object:min()
-
int
box_index_max
(uint32_t space_id, uint32_t index_id, const char *key, const char *key_end, box_tuple_t **result) Возврат последнего (максимального) кортежа, который соответствует заданному ключу.
Параметры: - space_id (uint32_t) – идентификатор спейса
- index_id (uint32_t) – идентификатор индекса
- char* key (const) – кодировка ключа в формате MsgPack-массива ([part1, part2, …])
- char* key_end (const) – часть закодированного ключа
key
- result (box_tuple_t**) – аргумент вывода. Результатом будет кортеж или NULL, если в спейсе нет кортежей.
Результат: -1 в случае ошибки (проверьте box_error_last())
Результат: 0, если выполнено
См. также index_object:max()
-
ssize_t
box_index_count
(uint32_t space_id, uint32_t index_id, int type, const char *key, const char *key_end) Подсчет количества кортежей, которые соответствуют заданному ключу.
Параметры: - space_id (uint32_t) – идентификатор спейса
- index_id (uint32_t) – идентификатор индекса
- type (int) – iterator_type
- char* key (const) – кодировка ключа в формате MsgPack-массива ([part1, part2, …])
- char* key_end (const) – часть закодированного ключа
key
Результат: -1 в случае ошибки (проверьте box_error_last())
Результат: 0, если выполнено
См. также index_object.count()
-
const box_key_def_t *
box_index_key_def
(uint32_t space_id, uint32_t index_id) Возврат определения ключа для индекса
Возвращаемый объект действителен до следующей передачи управления.
Параметры: - space_id (uint32_t) – идентификатор спейса
- index_id (uint32_t) – идентификатор индекса
Результат: определение ключа, если выполнено
Результат: NULL в случае ошибки
- См. также box_tuple_compare(),
- box_tuple_format_new()