From db837fb6743bc97ab3946bd3c1b13174abdf183d Mon Sep 17 00:00:00 2001 From: Egor Ivkov <e.ivkov@picodata.io> Date: Fri, 28 Jun 2024 18:27:39 +0300 Subject: [PATCH] architecture/rpc_api.md: encoding peculiarities --- docs/architecture/rpc_api.md | 45 ++++++++++++++++++------------------ 1 file changed, 23 insertions(+), 22 deletions(-) diff --git a/docs/architecture/rpc_api.md b/docs/architecture/rpc_api.md index d4a2644b..b2135a0b 100644 --- a/docs/architecture/rpc_api.md +++ b/docs/architecture/rpc_api.md @@ -26,9 +26,26 @@ RPC API иÑпользуетÑÑ Ð² Ñледующих ÑценариÑÑ…: ## Детали реализации {: #implementation_details } Функции RPC API предÑтавлÑÑŽÑ‚ Ñобой хранимые процедуры Tarantool -`box.func`. Ðргументы функций опиÑаны в ÑиÑтеме типов +`box.func`. Ðргументы и возвращаемые Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¹ опиÑаны в ÑиÑтеме типов [msgpack](https://msgpack.org/). +### ОÑобенноÑти Ñнкодинга {: #proc_encoding } + + - `optional` поле (например `optional MP_INT`) отличаетÑÑ Ð¾Ñ‚ обычного тем, + что на его меÑте может приÑутÑтвовать как ожидаемый msgpack тип (`MP_INT`), + так и `MP_NIL`. Тем не менее, при формировании запроÑа, Ð½ÐµÐ»ÑŒÐ·Ñ Ð¿Ñ€Ð¾Ð¿ÑƒÑкать + Ñто поле. При отÑутÑвии значениÑ, вÑегда должен быть указан `MP_NIL` + + - в Ñлучае уÑпешного Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ RPC фунцкии (`IPROTO_OK`) возвращаемое msgpack + значение вÑегда дополнительно обёрнуто в `MP_ARRAY` + + - в Ñлучае ошибки Ð²Ñ‹Ð¿Ð¾Ð»ÐµÐ½Ð¸Ñ RPC функции (`Result::Err` в терминах Rust) в ответе + будет iproto Ñообщение Ñ Ñ‚Ð¸Ð¿Ð¾Ð¼ `IPROTO_TYPE_ERROR` Ñодержащее в Ñебе + [опиÑание](https://www.tarantool.io/en/doc/latest/dev_guide/internals/iproto/format/#error-responses) + ошибки + +### Привилегии {: #proc_privileges } + Хранимые процедуры Tarantool не входÑÑ‚ в модель ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð´Ð¾Ñтупом Picodata. Ðа них невозможно выдать или отозвать привилегии. ÐÐ²Ñ‚Ð¾Ñ€Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð·Ð°Ð¿Ñ€Ð¾Ñов проиÑходит по Ñледующему принципу: @@ -96,8 +113,6 @@ fn proc_sql_dispatch(pattern, params, id, traceable) -> Result - `row_count` (MP_INT), количеÑтво измененных Ñтрок -- (MP_NIL, MP_STR) в Ñлучае ошибки - См. также: - [ИнÑтрукции и руководÑтва — Работа Ñ Ð´Ð°Ð½Ð½Ñ‹Ð¼Ð¸ SQL](../tutorial/sql_examples.md) @@ -233,9 +248,7 @@ fn proc_get_index() -> RaftIndex Возвращает текущий примененный (applied) Ð¸Ð½Ð´ÐµÐºÑ raft-журнала -Возвращаемое значение: - -- (MP_INT) +Возвращаемое значение: MP_INT -------------------------------------------------------------------------------- ### .proc_read_index {: #proc_read_index } @@ -262,10 +275,7 @@ fn proc_read_index(timeout) -> RaftIndex - `timeout`: (MP_INT | MP_FLOAT) в Ñекундах -Возвращаемое значение: - -- (MP_INT) -- (MP_NIL, MP_STR) в Ñлучае ошибки +Возвращаемое значение: MP_INT -------------------------------------------------------------------------------- ### .proc_wait_index {: #proc_wait_index } @@ -283,10 +293,7 @@ fn proc_wait_index(target, timeout) -> RaftIndex - `target`: (MP_INT) - `timeout`: (MP_INT | MP_FLOAT) в Ñекундах -Возвращаемое значение: - -- (MP_INT) -- (MP_NIL, MP_STR) в Ñлучае ошибки +Возвращаемое значение: MP_INT -------------------------------------------------------------------------------- ### .proc_get_vclock {: #proc_get_vclock } @@ -297,9 +304,7 @@ fn proc_get_vclock() -> Vclock Возвращает текущее значение [Vclock](../overview/glossary.md#vclock) -Возвращаемое значение: - -- (MP_MAP `Vclock`) +Возвращаемое значение: MP_MAP `Vclock` -------------------------------------------------------------------------------- ### .proc_wait_vclock {: #proc_wait_vclock } @@ -318,11 +323,7 @@ fn proc_wait_vclock(target, timeout) -> Vclock - `target`: (MP_MAP `Vclock`) - `timeout`: (MP_FLOAT) в Ñекундах -Возвращаемое значение: - -- (MP_MAP `Vclock`) -- (MP_NIL, MP_STR) в Ñлучае ошибки - +Возвращаемое значение: MP_MAP `Vclock` -------------------------------------------------------------------------------- ### .proc_apply_schema_change {: #proc_apply_schema_change } -- GitLab