[tarantool-patches] Re: [PATCH v5 3/6] sql: Show currently set sql_default_engine
Imeev Mergen
imeevma at tarantool.org
Thu Jan 31 17:56:47 MSK 2019
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 at 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 at 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 at 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()
More information about the Tarantool-patches
mailing list