Tarantool development patches archive
 help / color / mirror / Atom feed
From: Imeev Mergen <imeevma@tarantool.org>
To: Vladislav Shpilevoy <v.shpilevoy@tarantool.org>,
	tarantool-patches@freelists.org
Cc: korablev@tarantool.org
Subject: [tarantool-patches] Re: [PATCH v5 3/6] sql: Show currently set sql_default_engine
Date: Thu, 31 Jan 2019 17:56:47 +0300	[thread overview]
Message-ID: <0d1106e6-3f71-2650-2d06-2b8e5b881b5b@tarantool.org> (raw)
In-Reply-To: <3ec5bc03-c10c-243f-fa51-ec471676a347@tarantool.org>

Hi Thank you for review! Answer, fixes and patch below.


On 1/30/19 4:57 PM, Vladislav Shpilevoy wrote:
>
>
> On 29/01/2019 17:29, imeevma@tarantool.org wrote:
>> 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 | 35 
>> +++++++++++++++++++++++++++--------
>>   2 files changed, 40 insertions(+), 13 deletions(-)
>>
>> diff --git a/test/sql-tap/gh-2367-pragma.test.lua 
>> b/test/sql-tap/gh-2367-pragma.test.lua
>> index c0792c9..90ecd56 100755
>> --- a/test/sql-tap/gh-2367-pragma.test.lua
>> +++ b/test/sql-tap/gh-2367-pragma.test.lua
>> +--
>> +-- 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_catchsql_test(
>> -    "pragma-2.5",
>> +    "pragma-3.1",
>>       [[
>> -        pragma sql_default_engine 1;
>> +        pragma sql_default_engine='vinyl';
>> +        pragma sql_default_engine;
>>       ]], {
>> -    1, 'near \"1\": syntax error'
>> +    -- <pragma-3.1>
>> +    0, {'vinyl'}
>> +    -- <pragma-3.1>
>
> If a test does not fail, you should not use
> test:do_catchsql_test. We have do_test for this.
Fixed.
>
> Also, this file is named gh-2367-***, but you added
> here a test for gh-3832. This is why it made no
> sense to create a new file on each issue. Please,
> rename it to pragma.test.lua.
Fixed.


Diff:

commit bfae473ec8f64d21006525ffd02eeb05d7756448
Author: Mergen Imeev <imeevma@gmail.com>
Date:   Thu Jan 31 16:34:25 2019 +0300

     Temporary: Review fix

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 90ecd56..0000000
--- a/test/sql-tap/gh-2367-pragma.test.lua
+++ /dev/null
@@ -1,84 +0,0 @@
-#!/usr/bin/env tarantool
-test = require("sqltester")
-
-test:plan(8)
-
-test:do_catchsql_test(
-    "pragma-1.3",
-    [[
-        PRAGMA kek = 'ON';
-    ]], {
-        1, "no such pragma: KEK"
-    })
-
----
---- 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_catchsql_test(
-    "pragma-3.1",
-    [[
-        pragma sql_default_engine='vinyl';
-        pragma sql_default_engine;
-    ]], {
-    -- <pragma-3.1>
-    0, {'vinyl'}
-    -- <pragma-3.1>
-})
-
-test:do_catchsql_test(
-    "pragma-3.2",
-    [[
-        pragma sql_default_engine='memtx';
-        pragma sql_default_engine;
-    ]], {
-    -- <pragma-3.2>
-    0, {'memtx'}
-    -- <pragma-3.2>
-})
-
-test:finish_test()
diff --git a/test/sql-tap/pragma.test.lua b/test/sql-tap/pragma.test.lua
new file mode 100755
index 0000000..a847547
--- /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, "no such pragma: KEK"
+    })
+
+---
+--- 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;
+    ]], {
+    -- <pragma-3.1>
+    'vinyl'
+    -- <pragma-3.1>
+})
+
+test:do_execsql_test(
+    "pragma-3.2",
+    [[
+        pragma sql_default_engine='memtx';
+        pragma sql_default_engine;
+    ]], {
+    -- <pragma-3.2>
+    'memtx'
+    -- <pragma-3.2>
+})
+
+test:finish_test()


Patch:

commit 11e1d179228684a7ea776a2626b44ca3936d3d44
Author: Mergen Imeev <imeevma@gmail.com>
Date:   Wed Dec 12 22:47:48 2018 +0300

     sql: Show currently set sql_default_engine

     After this patch, "PRAGMA sql_default_engine" called without
     arguments will return currently set sql_default_engine.

diff --git a/src/box/sql/pragma.c b/src/box/sql/pragma.c
index 476771d..5e276b4 100644
--- a/src/box/sql/pragma.c
+++ b/src/box/sql/pragma.c
@@ -582,12 +582,20 @@ sqlite3Pragma(Parse * pParse, Token * pId,    /* 
First part of [schema.]id field */
          }

      case PragTyp_DEFAULT_ENGINE: {
-        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];
+            sqlite3VdbeLoadString(v, 1, engine_name);
+            sqlite3VdbeAddOp2(v, OP_ResultRow, 1, 1);
+        } else {
+            if (sql_default_engine_set(zRight) != 0) {
+                pParse->rc = SQL_TARANTOOL_ERROR;
+                pParse->nErr++;
+                goto pragma_out;
+            }
+            sqlite3VdbeAddOp0(v, OP_Expire);
          }
-        sqlite3VdbeAddOp0(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 c0792c9..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, "no such pragma: KEK"
-    })
-
----
---- 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/pragma.test.lua b/test/sql-tap/pragma.test.lua
new file mode 100755
index 0000000..a847547
--- /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, "no such pragma: KEK"
+    })
+
+---
+--- 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;
+    ]], {
+    -- <pragma-3.1>
+    'vinyl'
+    -- <pragma-3.1>
+})
+
+test:do_execsql_test(
+    "pragma-3.2",
+    [[
+        pragma sql_default_engine='memtx';
+        pragma sql_default_engine;
+    ]], {
+    -- <pragma-3.2>
+    'memtx'
+    -- <pragma-3.2>
+})
+
+test:finish_test()

  reply	other threads:[~2019-01-31 14:56 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-01-29 14:29 [tarantool-patches] [PATCH v5 0/6] sql: set column types for EXPLAIN and PRAGMA imeevma
2019-01-29 14:29 ` [tarantool-patches] [PATCH v5 1/6] sql: remove unused macros from pragma.c and pragma.h imeevma
2019-01-30 13:57   ` [tarantool-patches] " Vladislav Shpilevoy
2019-01-31 14:56     ` Imeev Mergen
2019-01-29 14:29 ` [tarantool-patches] [PATCH v5 2/6] sql: fix "PRAGMA parser_trace" result imeevma
2019-01-30 13:57   ` [tarantool-patches] " Vladislav Shpilevoy
2019-01-31 14:56     ` Imeev Mergen
2019-02-04 13:06       ` Vladislav Shpilevoy
2019-02-09 10:08         ` Mergen Imeev
2019-01-29 14:29 ` [tarantool-patches] [PATCH v5 3/6] sql: Show currently set sql_default_engine imeevma
2019-01-30 13:57   ` [tarantool-patches] " Vladislav Shpilevoy
2019-01-31 14:56     ` Imeev Mergen [this message]
2019-01-29 14:29 ` [tarantool-patches] [PATCH v5 4/6] sql: fix "PRAGMA case_sensitive_like" result imeevma
2019-01-30 13:56   ` [tarantool-patches] " Vladislav Shpilevoy
2019-01-31 14:56     ` Imeev Mergen
2019-01-29 14:29 ` [tarantool-patches] [PATCH v5 5/6] sql: get results of PRAGMA statement in YAML format imeevma
2019-01-30 13:56   ` [tarantool-patches] " Vladislav Shpilevoy
2019-01-31 14:56     ` Imeev Mergen
2019-02-04 13:08       ` Vladislav Shpilevoy
2019-02-09 10:11         ` Mergen Imeev
2019-01-29 14:29 ` [tarantool-patches] [PATCH v5 6/6] sql: set column types for EXPLAIN and PRAGMA imeevma
2019-01-30 13:59 ` [tarantool-patches] Re: [PATCH v5 0/6] " Vladislav Shpilevoy
2019-01-31 14:56   ` Imeev Mergen
2019-02-15 20:44 ` Vladislav Shpilevoy

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=0d1106e6-3f71-2650-2d06-2b8e5b881b5b@tarantool.org \
    --to=imeevma@tarantool.org \
    --cc=korablev@tarantool.org \
    --cc=tarantool-patches@freelists.org \
    --cc=v.shpilevoy@tarantool.org \
    --subject='[tarantool-patches] Re: [PATCH v5 3/6] sql: Show currently set sql_default_engine' \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox