From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from localhost (localhost [127.0.0.1]) by turing.freelists.org (Avenir Technologies Mail Multiplex) with ESMTP id 0374427A2F for ; Thu, 21 Feb 2019 08:00:51 -0500 (EST) Received: from turing.freelists.org ([127.0.0.1]) by localhost (turing.freelists.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id KKF9WEEbcZ_9 for ; Thu, 21 Feb 2019 08:00:50 -0500 (EST) Received: from smtp44.i.mail.ru (smtp44.i.mail.ru [94.100.177.104]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by turing.freelists.org (Avenir Technologies Mail Multiplex) with ESMTPS id AF50E277A0 for ; Thu, 21 Feb 2019 08:00:50 -0500 (EST) From: imeevma@tarantool.org Subject: [tarantool-patches] [PATCH v6 3/7] sql: Show currently set sql_default_engine Date: Thu, 21 Feb 2019 16:00:48 +0300 Message-Id: <54c77b2bf6b53bde791bf0738dd37a905b86f6ec.1550753723.git.imeevma@gmail.com> In-Reply-To: References: Sender: tarantool-patches-bounce@freelists.org Errors-to: tarantool-patches-bounce@freelists.org Reply-To: tarantool-patches@freelists.org List-help: List-unsubscribe: List-software: Ecartis version 1.0.0 List-Id: tarantool-patches List-subscribe: List-owner: List-post: List-archive: To: v.shpilevoy@tarantool.org Cc: tarantool-patches@freelists.org After this patch, "PRAGMA sql_default_engine" called without arguments will return currently set sql_default_engine. --- src/box/sql/pragma.c | 18 +++++--- test/sql-tap/gh-2367-pragma.test.lua | 65 ---------------------------- test/sql-tap/gh-3733-pragma.test.lua | 13 +----- test/sql-tap/pragma.test.lua | 84 ++++++++++++++++++++++++++++++++++++ 4 files changed, 98 insertions(+), 82 deletions(-) delete mode 100755 test/sql-tap/gh-2367-pragma.test.lua create mode 100755 test/sql-tap/pragma.test.lua diff --git a/src/box/sql/pragma.c b/src/box/sql/pragma.c index 1d36655..097f22b 100644 --- a/src/box/sql/pragma.c +++ b/src/box/sql/pragma.c @@ -605,12 +605,20 @@ sqlPragma(Parse * pParse, Token * pId, /* First part of [schema.]id field */ pParse->nErr++; goto pragma_out; } - if (sql_default_engine_set(zRight) != 0) { - pParse->rc = SQL_TARANTOOL_ERROR; - pParse->nErr++; - goto pragma_out; + if (zRight == NULL) { + const char *engine_name = + sql_storage_engine_strs[current_session()-> + sql_default_engine]; + sqlVdbeLoadString(v, 1, engine_name); + sqlVdbeAddOp2(v, OP_ResultRow, 1, 1); + } else { + if (sql_default_engine_set(zRight) != 0) { + pParse->rc = SQL_TARANTOOL_ERROR; + pParse->nErr++; + goto pragma_out; + } + sqlVdbeAddOp0(v, OP_Expire); } - sqlVdbeAddOp0(v, OP_Expire); break; } diff --git a/test/sql-tap/gh-2367-pragma.test.lua b/test/sql-tap/gh-2367-pragma.test.lua deleted file mode 100755 index d874bce..0000000 --- a/test/sql-tap/gh-2367-pragma.test.lua +++ /dev/null @@ -1,65 +0,0 @@ -#!/usr/bin/env tarantool -test = require("sqltester") - -test:plan(7) - -test:do_catchsql_test( - "pragma-1.3", - [[ - PRAGMA kek = 'ON'; - ]], { - 1, "Pragma 'KEK' does not exist" - }) - ---- ---- gh-2199: SQL default engine pragma ---- -test:do_catchsql_test( - "pragma-2.1", - [[ - pragma sql_default_engine='creepy'; - ]], { - 1, "Space engine 'creepy' does not exist" -}) - -test:do_catchsql_test( - "pragma-2.2", - [[ - pragma sql_default_engine='vinyl'; - ]], { - 0 -}) - -test:do_catchsql_test( - "pragma-2.3", - [[ - pragma sql_default_engine='memtx'; - ]], { - 0 -}) - -test:do_catchsql_test( - "pragma-2.4", - [[ - pragma sql_default_engine; - ]], { - 1, 'Illegal parameters, \'sql_default_engine\' was not specified' -}) - -test:do_catchsql_test( - "pragma-2.5", - [[ - pragma sql_default_engine 'memtx'; - ]], { - 1, 'near \"\'memtx\'\": syntax error' -}) - -test:do_catchsql_test( - "pragma-2.5", - [[ - pragma sql_default_engine 1; - ]], { - 1, 'near \"1\": syntax error' -}) - -test:finish_test() diff --git a/test/sql-tap/gh-3733-pragma.test.lua b/test/sql-tap/gh-3733-pragma.test.lua index 991ef82..0f856aa 100755 --- a/test/sql-tap/gh-3733-pragma.test.lua +++ b/test/sql-tap/gh-3733-pragma.test.lua @@ -1,7 +1,7 @@ #!/usr/bin/env tarantool test = require("sqltester") -test:plan(17) +test:plan(16) --- --- Prerequisites @@ -105,17 +105,6 @@ test:do_execsql_test( }) --- ---- pragma sql_default_engine requires value ---- -test:do_catchsql_test( - "pragma-6.1", - [[ - pragma sql_default_engine; - ]], { - 1, "Illegal parameters, 'sql_default_engine' was not specified" -}) - ---- --- pragma sql_default_engine accepts string values and rejects IDs --- test:do_catchsql_test( diff --git a/test/sql-tap/pragma.test.lua b/test/sql-tap/pragma.test.lua new file mode 100755 index 0000000..5055ba7 --- /dev/null +++ b/test/sql-tap/pragma.test.lua @@ -0,0 +1,84 @@ +#!/usr/bin/env tarantool +test = require("sqltester") + +test:plan(8) + +test:do_catchsql_test( + "pragma-1.3", + [[ + PRAGMA kek = 'ON'; + ]], { + 1, "Pragma 'KEK' does not exist" + }) + +--- +--- gh-2199: SQL default engine pragma +--- +test:do_catchsql_test( + "pragma-2.1", + [[ + pragma sql_default_engine='creepy'; + ]], { + 1, "Space engine 'creepy' does not exist" +}) + +test:do_catchsql_test( + "pragma-2.2", + [[ + pragma sql_default_engine='vinyl'; + ]], { + 0 +}) + +test:do_catchsql_test( + "pragma-2.3", + [[ + pragma sql_default_engine='memtx'; + ]], { + 0 +}) + +test:do_catchsql_test( + "pragma-2.4", + [[ + pragma sql_default_engine 'memtx'; + ]], { + 1, 'near \"\'memtx\'\": syntax error' +}) + +test:do_catchsql_test( + "pragma-2.5", + [[ + pragma sql_default_engine 1; + ]], { + 1, 'near \"1\": syntax error' +}) + +-- +-- gh-3832: Some statements do not return column type +-- +-- Check that "PRAGMA sql_default_engine" called without arguments +-- returns currently set sql_default_engine. +test:do_execsql_test( + "pragma-3.1", + [[ + pragma sql_default_engine='vinyl'; + pragma sql_default_engine; + ]], { + -- + 'vinyl' + -- +}) + +test:do_execsql_test( + "pragma-3.2", + [[ + pragma sql_default_engine='memtx'; + pragma sql_default_engine; + ]], { + -- + 'memtx' + -- +}) + +test:finish_test() -- 2.7.4