Module box
-
type
box_function_ctx_t
¶ Непрозрачная структура, передаваемая в хранимую процедуру на языке C.
-
int
box_return_tuple
(box_function_ctx_t *ctx, box_tuple_t *tuple)¶ Возврат кортежа с помощью хранимой процедуры на языке C.
Для возвращаемого кортежа Tarantool проводит автоматический подсчет ссылок. Пример программы, которая использует
box_return_tuple()
: write.c.Параметры: - ctx (box_function_ctx_t*) – непрозрачная структура, передаваемая Tarantool в хранимую процедуру на языке C
- tuple (box_tuple_t*) – возвращаемый кортеж
Результат: -1 в случае ошибки (возможная нехватка памяти; проверьте box_error_last())
Результат: 0 в остальных случаях
-
int
box_return_mp
(box_function_ctx_t *ctx, const char *mp, const char *mp_end)¶ Возврат указателя на серию байтов в формате MessagePack.
Можно использовать вместо box_return_tuple(): передаст то же значение, но в формате MessagePack, а не в виде кортежа. Это может быть проще, чем
box_return_tuple()
, если результат будет небольшим, например, число, логическое значение или короткая строка. Кроме того, это экономит время в отличие отbox_return_tuple()
, если в результате пользователю не приходится создавать кортеж каждый раз, когда он хочет вернуть что-то из функции на C.С другой стороны, если из итератора получен уже существующий кортеж, то быстрее будет вернуть кортеж через
box_return_tuple()
, чем извлекать его части и отправлять их черезbox_return_mp()
.Параметры: - ctx (box_function_ctx_t*) – непрозрачная структура, передаваемая Tarantool в хранимую процедуру на языке C
- mp (char*) – первый байт в MessagePack
- mp_end (char*) – после последнего байта в MessagePack
Результат: -1 в случае ошибки (возможная нехватка памяти; проверьте box_error_last())
Результат: 0 в остальных случаях
Например, если
mp
— это буфер, аmp_end
— возвращаемое значение, полученное путем кодирования одного скалярного значения MP_UINT с помощьюmp_end=mp_encode_uint(mp,1);
, тоbox_return_mp(ctx,mp,mp_end);
вернет0
.
-
uint32_t
box_space_id_by_name
(const char *name, uint32_t len)¶ Поиск идентификатора спейса по имени.
Данная функция делает запрос выборки SELECT из системного спейса
_vspace
.Параметры: - name (const char*) – имя спейса
- len (uint32_t) – длина имени
name
Результат: BOX_ID_NIL
в случае ошибки или отсутствия (проверьте box_error_last())Результат: space_id в остальных случаях
См. также
box_index_id_by_name
-
uint32_t
box_index_id_by_name
(uint32_t space_id, const char *name, uint32_t len)¶ Поиск идентификатора индекса по имени.
Данная функция делает запрос выборки SELECT из системного спейса
_vindex
.Параметры: - space_id (uint32_t) – идентификатор спейса
- name (const char*) – имя индекса
- len (uint32_t) – длина имени
name
Результат: BOX_ID_NIL
в случае ошибки или отсутствия (проверьте box_error_last())Результат: space_id в остальных случаях
См. также
box_space_id_by_name
-
int
box_insert
(uint32_t space_id, const char *tuple, const char *tuple_end, box_tuple_t **result)¶ Выполнение запроса вставки или замены (INSERT/REPLACE).
Параметры: - space_id (uint32_t) – идентификатор спейса
- tuple (const char*) – закодированный кортеж в формате MsgPack-массива ([ field1, field2, …])
- tuple_end (const char*) – конец кортежа
tuple
- result (box_tuple_t**) – аргумент вывода. Возвращаемый кортеж. Можно задать значение NULL для сброса результата
Результат: -1 в случае ошибки (проверьте box_error_last())
Результат: 0 в остальных случаях
См. также space_object.insert()
-
int
box_replace
(uint32_t space_id, const char *tuple, const char *tuple_end, box_tuple_t **result)¶ Выполнение запроса замены (REPLACE).
Параметры: - space_id (uint32_t) – идентификатор спейса
- tuple (const char*) – закодированный кортеж в формате MsgPack-массива ([ field1, field2, …])
- tuple_end (const char*) – конец кортежа
tuple
- result (box_tuple_t**) – аргумент вывода. Возвращаемый кортеж. Можно задать значение NULL для сброса результата
Результат: -1 в случае ошибки (проверьте box_error_last())
Результат: 0 в остальных случаях
См. также space_object.replace()
-
int
box_delete
(uint32_t space_id, uint32_t index_id, const char *key, const char *key_end, box_tuple_t **result)¶ Выполнение запроса удаления (DELETE).
Параметры: - space_id (uint32_t) – идентификатор спейса
- index_id (uint32_t) – идентификатор индекса
- key (const char*) – закодированный ключ в формате MsgPack-массива ([ field1, field2, …])
- key_end (const char*) – конец ключа
key
- result (box_tuple_t**) – аргумент вывода. Старый кортеж. Можно задать значение NULL для сброса результата
Результат: -1 в случае ошибки (проверьте box_error_last())
Результат: 0 в остальных случаях
См. также space_object.delete()
-
int
box_update
(uint32_t space_id, uint32_t index_id, const char *key, const char *key_end, const char *ops, const char *ops_end, int index_base, box_tuple_t **result)¶ Выполнение запроса обновления (UPDATE).
Параметры: - space_id (uint32_t) – идентификатор спейса
- index_id (uint32_t) – идентификатор индекса
- key (const char*) – закодированный ключ в формате MsgPack-массива ([ field1, field2, …])
- key_end (const char*) – конец ключа
key
- ops (const char*) – закодированные операции в формате MsgPack-массива, например
[[ '=', field_id, value ], ['!', 2, 'xxx']]
- ops_end (const char*) – конец раздела операций
ops
- index_base (int) – 0, если идентификаторы полей field_id с основанием 0, как в C, 1, если идентификаторы полей с основанием 1, как в Lua
- result (box_tuple_t**) – аргумент вывода. Старый кортеж. Можно задать значение NULL для сброса результата
Результат: -1 в случае ошибки (проверьте box_error_last())
Результат: 0 в остальных случаях
См. также space_object.update()
-
int
box_upsert
(uint32_t space_id, uint32_t index_id, const char *tuple, const char *tuple_end, const char *ops, const char *ops_end, int index_base, box_tuple_t **result)¶ Выполнение запроса обновления и вставки (UPSERT).
Параметры: - space_id (uint32_t) – идентификатор спейса
- index_id (uint32_t) – идентификатор индекса
- tuple (const char*) – закодированный кортеж в формате MsgPack-массива ([ field1, field2, …])
- tuple_end (const char*) – конец кортежа
tuple
- ops (const char*) – закодированные операции в формате MsgPack-массива, например
[[ '=', field_id, value ], ['!', 2, 'xxx']]
- ops_end (const char*) – конец операций
ops
- index_base (int) – 0, если идентификаторы полей field_id с основанием 0, как в C, 1, если идентификаторы полей с основанием 1, как в Lua
- result (box_tuple_t**) – аргумент вывода. Старый кортеж. Можно задать значение NULL для сброса результата
Результат: -1 в случае ошибки (проверьте box_error_last())
Результат: 0 в остальных случаях
См. также space_object.upsert()
-
int
box_truncate
(uint32_t space_id)¶ Очистка спейса.
Параметры: - space_id (uint32_t) – идентификатор спейса
-
int
box_session_push
(const char *data, const char *data_end)¶ С версии 2.4.1. Передача данных в формате MessagePack в канал данных сеанса — сокет, консоль или то, что используется в сеансе. Работает, как box.session.push() в Lua.
Параметры: - data (const char*) – начало данных для передачи
- data_end (const char*) – конец данных для передачи
Результат: -1 в случае ошибки (проверьте box_error_last())
Результат: 0 в остальных случаях
-
int
box_sequence_current
(uint32_t seq_id, int64_t *result);¶ С версии 2.4.1. Возврат последнего полученного значения из указанной последовательности.
Параметры: - seq_id (uint32_t) – идентификатор последовательности
- result (int64_t) – указатель на переменную, где будет храниться значение последовательности в случае успеха.
Результат: 0 при успехе и -1 в обратном случае. В случае ошибки, ее можно получить с помощью
box_error_last()
.