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