Module index
-
type
box_iterator_t
¶ Итератор спейса
-
enum
iterator_type
¶ Управление итерацией кортежей в индексе. Различные типы индексов поддерживают различные типы итераторов. Например, можно начать итерацию с определенного значения (ключ запроса), а затем получить все кортежи, ключи которых больше или равны (= GE) заданному ключу.
Если тип итератора не поддерживается выбранным типом индекса, конструктор итератора прекратит работу с ошибкой ER_UNSUPPORTED. Чтобы индекс можно было выбрать для первичного ключа, он должен поддерживать типы ITER_EQ и ITER_GE.
Значение ключа запроса NULL соответствует первому или последнему ключу в индексе, в зависимости от направления итерации (первый ключ для типов GE и GT, последний ключ для типов LE и LT). Таким образом, для итерации по всем кортежам в индексе можно использовать типы итерации ITER_GE или ITER_LE с начальным ключом, который равен NULL. Для ITER_EQ ключ не должен равняться NULL.
-
enumerator ::
ITER_EQ
¶ ключ == x в порядке возрастания
-
enumerator ::
ITER_REQ
¶ ключ == x в порядке убывания
-
enumerator ::
ITER_ALL
¶ все кортежи
-
enumerator ::
ITER_LT
¶ ключ < x
-
enumerator ::
ITER_LE
¶ ключ <= x
-
enumerator ::
ITER_GE
¶ ключ >= x
-
enumerator ::
ITER_GT
¶ ключ > x
-
enumerator ::
ITER_BITS_ALL_SET
¶ все биты из x заданы в ключе
-
enumerator ::
ITER_BITS_ANY_SET
¶ задан хотя бы один бит из x
-
enumerator ::
ITER_BITS_ALL_NOT_SET
¶ ни один бит не задан
-
enumerator ::
ITER_OVERLAPS
¶ ключ пересекается с x
-
enumerator ::
ITER_NEIGHBOR
¶ кортежи в порядке возрастания расстояния из указанной точки
-
enumerator ::
-
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
- key (const char*) – кодировка ключа в формате MsgPack-массива ([part1, part2, …])
- key_end (const char*) – часть закодированного ключа
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) – идентификатор индекса
- key (const char*) – кодировка ключа в формате MsgPack-массива ([part1, part2, …])
- key_end (const char*) – часть закодированного ключа
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) – идентификатор индекса
- key (const char*) – кодировка ключа в формате MsgPack-массива ([part1, part2, …])
- key_end (const char*) – часть закодированного ключа
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) – идентификатор индекса
- key (const char*) – кодировка ключа в формате MsgPack-массива ([part1, part2, …])
- key_end (const char*) – часть закодированного ключа
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
- key (const char*) – кодировка ключа в формате MsgPack-массива ([part1, part2, …])
- key_end (const char*) – часть закодированного ключа
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()