From 30844c2f40ed5ad193babf71eb462fff61186333 Mon Sep 17 00:00:00 2001 From: Kurdakov Alexander <kusancho12@gmail.com> Date: Thu, 17 Aug 2023 13:59:54 +0300 Subject: [PATCH] feat: support of overriding sql executor Add to console lua api function that overrides sql executor NO_DOC=picodata internal patch NO_CHANGELOG=picodata internal patch NO_TEST=picodata internal patch --- src/box/lua/console.lua | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/box/lua/console.lua b/src/box/lua/console.lua index c0b0197e3b..33d3639230 100644 --- a/src/box/lua/console.lua +++ b/src/box/lua/console.lua @@ -72,6 +72,15 @@ output_handlers["yaml"] = function(status, _opts, ...) end end +local sql_executor = nil + +-- +-- Override SQL executor invoked in `\set language sql` mode. +-- Defaults to `box.execute` if unset. +local function set_sql_executor(executor) + sql_executor = executor +end + -- -- Format a Lua value. local function format_lua_value(status, internal_opts, value) @@ -395,7 +404,7 @@ local function local_eval(storage, line) return preprocess(storage, command) end if storage.language == 'sql' then - return format(pcall(box.execute, line)) + return format(pcall(sql_executor or box.execute, line)) end -- -- Attempt to append 'return ' before the chunk: if the chunk is @@ -969,4 +978,5 @@ return { on_start = on_start; on_client_disconnect = on_client_disconnect; completion_handler = internal.completion_handler; + set_sql_executor = set_sql_executor; } -- GitLab