Module box | Tarantool
Документация на русском языке
поддерживается сообществом

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().

Нашли ответ на свой вопрос?
Обратная связь