Показаны различия между двумя версиями страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
databases:tarantool [2021/12/27 12:33] admin |
databases:tarantool [2021/12/29 10:52] (текущий) admin [Примеры] |
||
---|---|---|---|
Строка 440: | Строка 440: | ||
sum_json_field(" | sum_json_field(" | ||
</ | </ | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | < | ||
+ | < | ||
+ | Проверьте наличие пакета " | ||
+ | |||
+ | Создайте и скомпилируйте следующий модуль (easy.c): | ||
+ | <code c> | ||
+ | #include " | ||
+ | int easy(box_function_ctx_t *ctx, const char *args, const char *args_end) | ||
+ | { | ||
+ | printf(" | ||
+ | return 0; | ||
+ | } | ||
+ | |||
+ | int easy2(box_function_ctx_t *ctx, const char *args, const char * args_end) | ||
+ | { | ||
+ | printf(" | ||
+ | return 0; | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | Скомпилировать можно командой: | ||
+ | <code bash>$ gcc -shared -o easy.so -fPIC easy.c</ | ||
+ | |||
+ | Далее откройте клиент tarantool в интерактивном режиме: | ||
+ | <code bash> | ||
+ | box.cfg{listen=3306} | ||
+ | box.schema.space.create(' | ||
+ | box.space.capi_test: | ||
+ | net_box = require(' | ||
+ | capi_connection = net_box: | ||
+ | |||
+ | box.schema.func.create(' | ||
+ | box.schema.user.grant(' | ||
+ | capi_connection: | ||
+ | </ | ||
+ | |||
+ | Находясь в той же директории где скомпилирован модуль С, тарантул находит указанные файлы.\\ | ||
+ | Если название функции отличается он файла, то нужно указывать его: | ||
+ | <code bash> | ||
+ | box.schema.func.create(' | ||
+ | box.schema.user.grant(' | ||
+ | capi_connection: | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | < | ||
+ | < | ||
+ | |||
+ | В основном используются API функции [[https:// | ||
+ | |||
+ | |||
+ | " | ||
+ | <code c> | ||
+ | #include "/ | ||
+ | #include "/ | ||
+ | |||
+ | int hardest(box_function_ctx_t *ctx, const char *args, const char *args_end) | ||
+ | { | ||
+ | uint32_t space_id= box_space_id_by_name(" | ||
+ | char tuple[1024]; | ||
+ | char *tuple_pointer= tuple; | ||
+ | tuple_pointer= mp_encode_array(tuple_pointer, | ||
+ | tuple_pointer= mp_encode_uint(tuple_pointer, | ||
+ | tuple_pointer= mp_encode_str(tuple_pointer, | ||
+ | int n= box_insert(space_id, | ||
+ | return n; | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | После компиляции модуля выполните в терминале тарантула: | ||
+ | <code lua> | ||
+ | box.schema.func.create(' | ||
+ | box.schema.user.grant(' | ||
+ | box.schema.user.grant(' | ||
+ | capi_connection: | ||
+ | |||
+ | -- Выполнение | ||
+ | box.space.capi_test: | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | |||
+ | < | ||
+ | < | ||
+ | |||
+ | Подключаемся к консоли, | ||
+ | <code bash> | ||
+ | tarantool> | ||
+ | tarantool> | ||
+ | </ | ||
+ | |||
+ | Далее выполняем команды в формате SQL | ||
+ | <code sql> | ||
+ | tarantool> | ||
+ | tarantool> | ||
+ | tarantool> | ||
+ | tarantool> | ||
+ | </ | ||
+ | Результат аналогичен использованию команд типа " | ||
+ | Здесь создается пространство " | ||
</ | </ | ||