Tarantool development patches archive
 help / color / mirror / Atom feed
From: Vladislav Shpilevoy via Tarantool-patches <tarantool-patches@dev.tarantool.org>
To: sergeyb@tarantool.org, tarantool-patches@dev.tarantool.org
Subject: Re: [Tarantool-patches] [PATCH v8 03/14] test: fix luacheck warnings W113 in test/sql-tap
Date: Sat, 27 Feb 2021 00:42:49 +0100	[thread overview]
Message-ID: <9c57efe9-3b45-40ee-ab94-a55b08bb27d1@tarantool.org> (raw)
In-Reply-To: <3a5360daf42cd920e3ce536020a6ff2fbccc095e.1611232655.git.sergeyb@tarantool.org>

Hi again! Thanks for the fixes!

>>> -if 0>0 then
>>> -db("nullvalue", "null")
>>>  test:do_select_tests(
>>>      "e_select-7.9",
>>>      {
>>> -        {"1", "SELECT NULL UNION ALL SELECT NULL", {null, null}},
>>> -        {"2", "SELECT NULL UNION     SELECT NULL", {null}},
>>> -        {"3", "SELECT NULL INTERSECT SELECT NULL", {null}},
>>> +        {"1", "SELECT NULL UNION ALL SELECT NULL", {"", ""}},
>>> +        {"2", "SELECT NULL UNION     SELECT NULL", {""}},
>>> +        {"3", "SELECT NULL INTERSECT SELECT NULL", {""}},
>>>          {"4", "SELECT NULL EXCEPT    SELECT NULL", {}},
>> 2. But why? What was the effect of `db("nullvalue", "null")` in the
>> original tests? If you don't know then maybe it is worth leaving it
>> as is + adding `local null = box.NULL` or `local null = nil` so at
>> least we could preserve the test body unchanged for future
>> investigations.
> 
> Well, reverted hunks back and disabled testcase in the test.
> 
> I found a source code of original test [1] and it is not clear
> 
> why "nullvalue" redefined there.
> 
> 1. https://www.sqlite.org/src/file?ci=trunk&name=test%2Fe_select.test&ln=1504

It is not 'redefinition' it seems.
https://www.oreilly.com/library/view/using-sqlite/9781449394592/re64.html

It is a marker for output. From what I understood, sqlite prints NULLs as
empty string, and here in the test they wanted to look for NULLs in the
result. But you can't look for N empty strings. So NULL's string representation
was replaced with "null" temporary. In our case it won't happen because we
know number of returned columns and their exact values. Somebody will find
the same in the future and will either fix or delete the test.

See 4 more comments below and diff in the end of the email.

> diff --git a/test/sql-tap/lua_sql.test.lua b/test/sql-tap/lua_sql.test.lua
> index b22f195ca..4704970c8 100755
> --- a/test/sql-tap/lua_sql.test.lua
> +++ b/test/sql-tap/lua_sql.test.lua
> @@ -75,9 +75,10 @@ box.schema.func.create('CHECK_FROM_SQL_TO_LUA', {language = 'Lua',
>                         exports = {'LUA', 'SQL'}})
>  
>  -- check for different types
> -for i = 1, #from_sql_to_lua, 1 do
> +for i = 1, #from_sql_to_lua, 1 do -- luacheck: ignore from_sql_to_lua
>      test:do_execsql_test(
>          "lua_sql-2.2."..i,
> +        -- luacheck: ignore from_sql_to_lua

1. You can just declare local from_sql_to_lua and also save it to _G. No
need to ignore it.

>          "select check_from_sql_to_lua("..i..","..from_sql_to_lua[i][1]..")",
>          {1})
>  end
> @@ -102,9 +103,10 @@ box.schema.func.create('CHECK_FROM_LUA_TO_SQL', {language = 'Lua',
>                         exports = {'LUA', 'SQL'}})
>  
>  -- check for different types
> -for i = 1, #from_lua_to_sql, 1 do
> +for i = 1, #from_lua_to_sql, 1 do -- luacheck: ignore from_lua_to_sql
>      test:do_execsql_test(
>          "lua_sql-2.3."..i,
> +        -- luacheck: ignore from_lua_to_sql
>          "select "..tostring(from_lua_to_sql[i][1]).." = check_from_lua_to_sql("..i..")",
>          {true})
>  end
> diff --git a/test/sql-tap/minmax2.test.lua b/test/sql-tap/minmax2.test.lua
> index f3d608aab..b6c02a4cc 100755
> --- a/test/sql-tap/minmax2.test.lua
> +++ b/test/sql-tap/minmax2.test.lua
> @@ -72,6 +72,7 @@ test:do_test(
>  test:do_test(
>      "minmax2-1.2",
>      function()
> +        -- luacheck: ignore sql_search_count
>          return box.stat.sql().sql_search_count - sql_search_count

2. There is no reason for sql_search_count to be global.

>      end, 19)
>  
> @@ -89,6 +90,7 @@ test:do_test(
>  test:do_test(
>      "minmax2-1.4",
>      function()
> +        -- luacheck: ignore sql_search_count
>          return box.stat.sql().sql_search_count - sql_search_count
>      end, 19)
>  
> diff --git a/test/sql-tap/subquery.test.lua b/test/sql-tap/subquery.test.lua
> index f57a22624..bb03f25ab 100755
> --- a/test/sql-tap/subquery.test.lua
> +++ b/test/sql-tap/subquery.test.lua
> @@ -684,6 +684,8 @@ test:do_test(
>          -- This is the key test.  The subquery should have only run once.  If
>          -- The double-quoted identifier "two" were causing the subquery to be
>          -- processed as a correlated subquery, then it would have run 4 times.
> +
> +        -- luacheck: ignore callcnt
>          return callcnt

3. This can be fixed, lets not ignore it. One way would be
to store callcnt in a table which is saved in a local variable
and into _G.

	local callcnt = {value = 0}
	_G.callcnt = callcnt

Then you can use callcnt.value from anywhere to reference the
same counter.

Another way is to have it local and update it via a function
stored in _G.

Also can simply write _G.callcnt in 3 more places instead of
ignoring it.

>      end, 1)
>  
> @@ -706,7 +708,9 @@ test:do_test(
>  test:do_test(
>      "subquery-6.2",
>      function()
> +        -- luacheck: ignore callcnt
>          return callcnt
> +
>      end, 4)
>  
>  test:do_test(
> @@ -725,6 +729,7 @@ test:do_test(
>  test:do_test(
>      "subquery-6.4",
>      function()
> +        -- luacheck: ignore callcnt
>          return callcnt
>      end, 1)
>  
> diff --git a/test/sql-tap/triggerC.test.lua b/test/sql-tap/triggerC.test.lua
> index e95641938..7d496bc4d 100755
> --- a/test/sql-tap/triggerC.test.lua
> +++ b/test/sql-tap/triggerC.test.lua
> @@ -791,7 +791,6 @@ for testno, v in ipairs(tests11) do
>                  SELECT a,b FROM log;
>              ]]
>          end, {
> -            defaults

4. The variable is supposed to be filled with something, from
what I see in the commented code.

You can declare it with nil somewhere above to keep the not
working tests intact.

>          })
>  
>      --
> diff --git a/test/sql-tap/view.test.lua b/test/sql-tap/view.test.lua
> index 2f1af29b0..40fc71998 100755
> --- a/test/sql-tap/view.test.lua
> +++ b/test/sql-tap/view.test.lua
> @@ -1119,6 +1093,9 @@ if (0 > 0)
>              -- </view-22.1>
>          })
>  
> +    -- Legacy from the original code. Must be replaced with analogue
> +    -- functions from box.
> +    local X = nil
>      test:do_test(
>          "view-22.2",
>          function()

I tried to fix some of my comments:

====================
diff --git a/test/sql-tap/lua_sql.test.lua b/test/sql-tap/lua_sql.test.lua
index 4704970c8..d073ffe4f 100755
--- a/test/sql-tap/lua_sql.test.lua
+++ b/test/sql-tap/lua_sql.test.lua
@@ -51,7 +51,7 @@ for _, val in ipairs({
         {result})
 end
 
-_G.from_sql_to_lua = {
+local from_sql_to_lua = {
     [1] = {1, 1},
     [2] = {"1", 1},
     [3] = {"1.5", 1.5},
@@ -60,6 +60,7 @@ _G.from_sql_to_lua = {
     [6] = {"x'0500'", "\u{0005}\u{0000}"},
     [7] = {"123123123123123", 123123123123123LL},
 }
+_G.from_sql_to_lua = from_sql_to_lua
 
 box.schema.func.create('CHECK_FROM_SQL_TO_LUA', {language = 'Lua',
                        is_deterministic = true,
@@ -75,10 +76,9 @@ box.schema.func.create('CHECK_FROM_SQL_TO_LUA', {language = 'Lua',
                        exports = {'LUA', 'SQL'}})
 
 -- check for different types
-for i = 1, #from_sql_to_lua, 1 do -- luacheck: ignore from_sql_to_lua
+for i = 1, #from_sql_to_lua, 1 do
     test:do_execsql_test(
         "lua_sql-2.2."..i,
-        -- luacheck: ignore from_sql_to_lua
         "select check_from_sql_to_lua("..i..","..from_sql_to_lua[i][1]..")",
         {1})
 end
diff --git a/test/sql-tap/minmax2.test.lua b/test/sql-tap/minmax2.test.lua
index b6c02a4cc..6a7859d42 100755
--- a/test/sql-tap/minmax2.test.lua
+++ b/test/sql-tap/minmax2.test.lua
@@ -56,12 +56,12 @@ test:do_execsql_test(
         -- </minmax2-1.0>
     })
 
-_G.sql_search_count = 0
+local sql_search_count = 0
 
 test:do_test(
     "minmax2-1.1",
     function()
-        _G.sql_search_count = box.stat.sql().sql_search_count
+        sql_search_count = box.stat.sql().sql_search_count
         return test:execsql "SELECT min(x) FROM t1"
     end, {
         -- <minmax2-1.1>
@@ -72,14 +72,13 @@ test:do_test(
 test:do_test(
     "minmax2-1.2",
     function()
-        -- luacheck: ignore sql_search_count
         return box.stat.sql().sql_search_count - sql_search_count
     end, 19)
 
 test:do_test(
     "minmax2-1.3",
     function()
-        _G.sql_search_count = box.stat.sql().sql_search_count
+        sql_search_count = box.stat.sql().sql_search_count
         return test:execsql "SELECT max(x) FROM t1"
     end, {
         -- <minmax2-1.3>
@@ -90,7 +89,6 @@ test:do_test(
 test:do_test(
     "minmax2-1.4",
     function()
-        -- luacheck: ignore sql_search_count
         return box.stat.sql().sql_search_count - sql_search_count
     end, 19)
 
@@ -98,7 +96,7 @@ test:do_test(
     "minmax2-1.5",
     function()
         test:execsql "CREATE INDEX t1i1 ON t1(x DESC)"
-        _G.sql_search_count = box.stat.sql().sql_search_count
+        sql_search_count = box.stat.sql().sql_search_count
         return test:execsql "SELECT min(x) FROM t1"
     end, {
         -- <minmax2-1.5>
@@ -109,13 +107,13 @@ test:do_test(
 test:do_test(
     "minmax2-1.6",
     function()
-        return box.stat.sql().sql_search_count - _G.sql_search_count
+        return box.stat.sql().sql_search_count - sql_search_count
     end, 1)
 
 test:do_test(
     "minmax2-1.7",
     function()
-        _G.sql_search_count = box.stat.sql().sql_search_count
+        sql_search_count = box.stat.sql().sql_search_count
         return test:execsql "SELECT max(x) FROM t1"
     end, {
         -- <minmax2-1.7>
@@ -126,13 +124,13 @@ test:do_test(
 test:do_test(
     "minmax2-1.8",
     function()
-        return box.stat.sql().sql_search_count - _G.sql_search_count
+        return box.stat.sql().sql_search_count - sql_search_count
     end, 0)
 
 test:do_test(
     "minmax2-1.9",
     function()
-        _G.sql_search_count = box.stat.sql().sql_search_count
+        sql_search_count = box.stat.sql().sql_search_count
         return test:execsql "SELECT max(y) FROM t1"
     end, {
         -- <minmax2-1.9>
@@ -143,7 +141,7 @@ test:do_test(
 test:do_test(
     "minmax2-1.10",
     function()
-        return box.stat.sql().sql_search_count - _G.sql_search_count
+        return box.stat.sql().sql_search_count - sql_search_count
     end, 19)
 
 test:do_test(
@@ -153,7 +151,7 @@ test:do_test(
             CREATE TABLE t2(a INTEGER PRIMARY KEY, b INT );
             INSERT INTO t2 SELECT x, y FROM t1;
         ]]
-        _G.sql_search_count = box.stat.sql().sql_search_count
+        sql_search_count = box.stat.sql().sql_search_count
         return test:execsql "SELECT min(a) FROM t2"
     end, {
         -- <minmax2-2.0>
@@ -164,13 +162,13 @@ test:do_test(
 test:do_test(
     "minmax2-2.1",
     function()
-        return box.stat.sql().sql_search_count - _G.sql_search_count
+        return box.stat.sql().sql_search_count - sql_search_count
     end, 0)
 
 test:do_test(
     "minmax2-2.2",
     function()
-        _G.sql_search_count = box.stat.sql().sql_search_count
+        sql_search_count = box.stat.sql().sql_search_count
         return test:execsql "SELECT max(a) FROM t2"
     end, {
         -- <minmax2-2.2>
@@ -181,7 +179,7 @@ test:do_test(
 test:do_test(
     "minmax2-2.3",
     function()
-        return box.stat.sql().sql_search_count - _G.sql_search_count
+        return box.stat.sql().sql_search_count - sql_search_count
     end, 0)
 
 test:do_test(
@@ -190,7 +188,7 @@ test:do_test(
         test:execsql "INSERT INTO t2 VALUES((SELECT max(a) FROM t2)+1,999)"
 
 
-        _G.sql_search_count = box.stat.sql().sql_search_count
+        sql_search_count = box.stat.sql().sql_search_count
         return test:execsql "SELECT max(a) FROM t2"
     end, {
         -- <minmax2-3.0>
@@ -201,7 +199,7 @@ test:do_test(
 test:do_test(
     "minmax2-3.1",
     function()
-        return box.stat.sql().sql_search_count - _G.sql_search_count
+        return box.stat.sql().sql_search_count - sql_search_count
     end, 0)
 
 test:do_test(
@@ -210,7 +208,7 @@ test:do_test(
         test:execsql "INSERT INTO t2 VALUES((SELECT max(a) FROM t2)+1,999)"
 
 
-        _G.sql_search_count = box.stat.sql().sql_search_count
+        sql_search_count = box.stat.sql().sql_search_count
         return test:execsql " SELECT b FROM t2 WHERE a=(SELECT max(a) FROM t2) "
 
 
@@ -224,7 +222,7 @@ test:do_test(
 test:do_test(
     "minmax2-3.3",
     function()
-        return box.stat.sql().sql_search_count - _G.sql_search_count
+        return box.stat.sql().sql_search_count - sql_search_count
     end, 1)
 
 test:do_execsql_test(
diff --git a/test/sql-tap/subquery.test.lua b/test/sql-tap/subquery.test.lua
index bb03f25ab..df3075ee3 100755
--- a/test/sql-tap/subquery.test.lua
+++ b/test/sql-tap/subquery.test.lua
@@ -685,8 +685,7 @@ test:do_test(
         -- The double-quoted identifier "two" were causing the subquery to be
         -- processed as a correlated subquery, then it would have run 4 times.
 
-        -- luacheck: ignore callcnt
-        return callcnt
+        return _G.callcnt
     end, 1)
 
 -- Ticket #1380.  Make sure correlated subqueries on an IN clause work
@@ -708,8 +707,7 @@ test:do_test(
 test:do_test(
     "subquery-6.2",
     function()
-        -- luacheck: ignore callcnt
-        return callcnt
+        return _G.callcnt
 
     end, 4)
 
@@ -729,8 +727,7 @@ test:do_test(
 test:do_test(
     "subquery-6.4",
     function()
-        -- luacheck: ignore callcnt
-        return callcnt
+        return _G.callcnt
     end, 1)
 
 box.func.CALLCNT:drop()


  parent reply	other threads:[~2021-02-26 23:42 UTC|newest]

Thread overview: 47+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-01-21 12:49 [Tarantool-patches] [PATCH v8 00/14] Fix luacheck warnings in test/sql and test/sql-tap Sergey Bronnikov via Tarantool-patches
2021-01-21 12:49 ` [Tarantool-patches] [PATCH v8 01/14] test: fix luacheck warnings in test/sql Sergey Bronnikov via Tarantool-patches
2021-01-21 12:49 ` [Tarantool-patches] [PATCH v8 02/14] test: remove functions to open and close SQL connection Sergey Bronnikov via Tarantool-patches
2021-01-21 12:49 ` [Tarantool-patches] [PATCH v8 03/14] test: fix luacheck warnings W113 in test/sql-tap Sergey Bronnikov via Tarantool-patches
2021-01-24 17:33   ` Vladislav Shpilevoy via Tarantool-patches
2021-02-06 17:52     ` Vladislav Shpilevoy via Tarantool-patches
2021-02-16 12:02     ` Sergey Bronnikov via Tarantool-patches
2021-02-23 21:25       ` Vladislav Shpilevoy via Tarantool-patches
2021-02-25 10:39         ` Sergey Bronnikov via Tarantool-patches
2021-02-26 23:42   ` Vladislav Shpilevoy via Tarantool-patches [this message]
2021-02-27 17:53     ` Sergey Bronnikov via Tarantool-patches
2021-02-28 15:30       ` Vladislav Shpilevoy via Tarantool-patches
2021-03-01 13:26         ` Sergey Bronnikov via Tarantool-patches
2021-01-21 12:49 ` [Tarantool-patches] [PATCH v8 04/14] test: fix luacheck warnings W211 " Sergey Bronnikov via Tarantool-patches
2021-01-24 17:34   ` Vladislav Shpilevoy via Tarantool-patches
2021-02-16 14:09     ` Sergey Bronnikov via Tarantool-patches
2021-02-23 21:26   ` Vladislav Shpilevoy via Tarantool-patches
2021-02-25 11:02     ` Sergey Bronnikov via Tarantool-patches
2021-02-26 23:42       ` Vladislav Shpilevoy via Tarantool-patches
2021-02-27 17:09         ` Sergey Bronnikov via Tarantool-patches
2021-02-28 15:30           ` Vladislav Shpilevoy via Tarantool-patches
2021-03-01 13:46             ` Sergey Bronnikov via Tarantool-patches
2021-03-01 21:27               ` Vladislav Shpilevoy via Tarantool-patches
2021-03-02  8:05                 ` Sergey Bronnikov via Tarantool-patches
2021-01-21 12:50 ` [Tarantool-patches] [PATCH v8 05/14] test: fix luacheck warnings W212 " Sergey Bronnikov via Tarantool-patches
2021-01-21 12:50 ` [Tarantool-patches] [PATCH v8 06/14] test: fix laucheck warnings W213 " Sergey Bronnikov via Tarantool-patches
2021-01-24 17:35   ` Vladislav Shpilevoy via Tarantool-patches
2021-01-29 16:32     ` Sergey Bronnikov via Tarantool-patches
2021-01-21 12:50 ` [Tarantool-patches] [PATCH v8 07/14] test: fix luacheck warnings W231 " Sergey Bronnikov via Tarantool-patches
2021-01-24 17:35   ` Vladislav Shpilevoy via Tarantool-patches
2021-01-29 22:39     ` Sergey Bronnikov via Tarantool-patches
2021-01-21 12:50 ` [Tarantool-patches] [PATCH v8 08/14] test: fix luacheck warnings W311 " Sergey Bronnikov via Tarantool-patches
2021-01-21 12:50 ` [Tarantool-patches] [PATCH v8 09/14] test: fix luacheck warnings W511 " Sergey Bronnikov via Tarantool-patches
2021-01-21 12:50 ` [Tarantool-patches] [PATCH v8 10/14] test: fix luacheck warnings W512 " Sergey Bronnikov via Tarantool-patches
2021-01-21 12:50 ` [Tarantool-patches] [PATCH v8 11/14] test: fix luacheck warnings W542 " Sergey Bronnikov via Tarantool-patches
2021-01-21 12:50 ` [Tarantool-patches] [PATCH v8 12/14] test: fix luacheck warnings W612, W613, W614 " Sergey Bronnikov via Tarantool-patches
2021-01-24 17:36   ` Vladislav Shpilevoy via Tarantool-patches
2021-01-29 16:23     ` Sergey Bronnikov via Tarantool-patches
2021-01-29 21:50       ` Sergey Bronnikov via Tarantool-patches
2021-01-21 12:50 ` [Tarantool-patches] [PATCH v8 13/14] test: fix luacheck warnings W621 " Sergey Bronnikov via Tarantool-patches
2021-01-24 17:37   ` Vladislav Shpilevoy via Tarantool-patches
2021-01-29 16:11     ` Sergey Bronnikov via Tarantool-patches
2021-01-21 12:50 ` [Tarantool-patches] [PATCH v8 14/14] luacheck: add issues for suppressed warnings Sergey Bronnikov via Tarantool-patches
2021-01-24 17:37   ` Vladislav Shpilevoy via Tarantool-patches
2021-01-29 16:13     ` Sergey Bronnikov via Tarantool-patches
2021-03-01 21:37 ` [Tarantool-patches] [PATCH v8 00/14] Fix luacheck warnings in test/sql and test/sql-tap Vladislav Shpilevoy via Tarantool-patches
2021-03-02  9:47 ` Kirill Yukhin via Tarantool-patches

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=9c57efe9-3b45-40ee-ab94-a55b08bb27d1@tarantool.org \
    --to=tarantool-patches@dev.tarantool.org \
    --cc=sergeyb@tarantool.org \
    --cc=v.shpilevoy@tarantool.org \
    --subject='Re: [Tarantool-patches] [PATCH v8 03/14] test: fix luacheck warnings W113 in test/sql-tap' \
    /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