[Tarantool-patches] [PATCH 3/4] sql: fix CAST AS NUMBER operator

Nikita Pettik korablev at tarantool.org
Tue Feb 11 17:14:32 MSK 2020


On 11 Feb 00:24, Vladislav Shpilevoy wrote:
> Thanks for the patch!
> 
> See 5 comments below.
> 
> > diff --git a/test/sql-tap/cast.test.lua b/test/sql-tap/cast.test.lua
> > index 9c937a065..a3f0bc787 100755
> > --- a/test/sql-tap/cast.test.lua
> > +++ b/test/sql-tap/cast.test.lua
> > @@ -663,14 +663,14 @@ test:do_execsql_test(
> >          SELECT CAST(-9223372036854774800 AS NUMBER)
> >      ]], {
> >          -- <cast-3.6>
> > -        -9223372036854774784
> > +        -9223372036854774800LL
> >          -- </cast-3.6>
> >      })
> >  
> >  test:do_execsql_test(
> >      "cast-3.7",
> >      "SELECT CAST(-9223372036854774800 AS NUMBER)",
> > -    {-9.22337203685477e+18})
> > +    {-9223372036854774800LL})
> 
> 1. 3.6 and 3.7 are the same. I propose to drop one.
> 
> >  test:do_execsql_test(
> >      "cast-3.8",
> > @@ -705,12 +705,12 @@ test:do_execsql_test(
> >  test:do_execsql_test(
> >      "cast-3.13",
> >      "SELECT CAST(9223372036854774800 AS NUMBER)",
> > -    {9.22337203685477e+18})
> > +    {9223372036854774800LL})
> 
> 2. 3.2, 3.3 and 3.13 are exactly the same. I propose to keep
> only one.
> 
> > @@ -732,7 +732,7 @@ test:do_execsql_test(
> >  test:do_execsql_test(
> >      "cast-3.16",
> >      [[
> > -        SELECT CAST('-9223372036854774800' AS NUMBER)
> > +        SELECT CAST('-9223372036854774800.' AS NUMBER)
> >      ]], {
> >          -- <cast-3.16>
> >          -9223372036854774784
> 
> 3. 3.16 and 3.17 are the same. Lets drop one.

Oh, thanks. Removed all duplicates from tests.
 
> > @@ -778,7 +778,7 @@ if true then --test:execsql("PRAGMA encoding")[1][1]=="UTF-8" then
> >          })
> >      test:do_execsql_test(
> >          "cast-3.23",
> > -        "SELECT CAST(x'39323233333732303336383534373734383030' AS NUMBER)",
> > +        "SELECT CAST(x'393232333337323033363835343737343830302E' AS NUMBER)",
> >          {9.22337203685477e+18})
> 
> 4. 3.22 and 3.23 are the same. Drop one, please.
> 
> >      test:do_execsql_test(
> > @@ -788,7 +788,7 @@ if true then --test:execsql("PRAGMA encoding")[1][1]=="UTF-8" then
> >                          AS integer)
> >          ]], {
> >              -- <cast-3.24>
> > -            9223372036854774784LL
> > +        9223372036854774800LL
> 
> 5. Indentation is a bit off.
> 
> >              -- </cast-3.24>
> >          })
> >  end

Diff:

diff --git a/test/sql-tap/cast.test.lua b/test/sql-tap/cast.test.lua
index a3f0bc787..d4af339fd 100755
--- a/test/sql-tap/cast.test.lua
+++ b/test/sql-tap/cast.test.lua
@@ -1,6 +1,6 @@
 #!/usr/bin/env tarantool
 test = require("sqltester")
-test:plan(85)
+test:plan(80)
 
 --!./tcltestrunner.lua
 -- 2005 June 25
@@ -632,11 +632,6 @@ test:do_execsql_test(
         -- </cast-3.2>
     })
 
-test:do_execsql_test(
-    "cast-3.3",
-    "SELECT CAST(9223372036854774800 AS NUMBER)",
-    {9223372036854774800LL})
-
 test:do_execsql_test(
     "cast-3.4",
     [[
@@ -647,16 +642,6 @@ test:do_execsql_test(
         -- </cast-3.4>
     })
 
-test:do_execsql_test(
-    "cast-3.5",
-    [[
-        SELECT CAST(-9223372036854774800 AS integer)
-    ]], {
-        -- <cast-3.5>
-        -9223372036854774800LL
-        -- </cast-3.5>
-    })
-
 test:do_execsql_test(
     "cast-3.6",
     [[
@@ -667,11 +652,6 @@ test:do_execsql_test(
         -- </cast-3.6>
     })
 
-test:do_execsql_test(
-    "cast-3.7",
-    "SELECT CAST(-9223372036854774800 AS NUMBER)",
-    {-9223372036854774800LL})
-
 test:do_execsql_test(
     "cast-3.8",
     [[
@@ -739,11 +719,6 @@ test:do_execsql_test(
         -- </cast-3.16>
     })
 
-test:do_execsql_test(
-    "cast-3.17",
-    "SELECT CAST('-9223372036854774800.' AS NUMBER)",
-    {-9.22337203685477e+18})
-
 test:do_execsql_test(
     "cast-3.18",
     [[
@@ -776,10 +751,6 @@ if true then --test:execsql("PRAGMA encoding")[1][1]=="UTF-8" then
             9223372036854774784
             -- </cast-3.22>
         })
-    test:do_execsql_test(
-        "cast-3.23",
-        "SELECT CAST(x'393232333337323033363835343737343830302E' AS NUMBER)",
-        {9.22337203685477e+18})
 
     test:do_execsql_test(
         "cast-3.24",
@@ -788,7 +759,7 @@ if true then --test:execsql("PRAGMA encoding")[1][1]=="UTF-8" then
                         AS integer)
         ]], {
             -- <cast-3.24>
-        9223372036854774800LL
+            9223372036854774800LL
             -- </cast-3.24>
         })
 end





More information about the Tarantool-patches mailing list