File: whereC.test.lua

package info (click to toggle)
tarantool 2.6.0-1.4
  • links: PTS, VCS
  • area: main
  • in suites: sid, trixie
  • size: 85,412 kB
  • sloc: ansic: 513,775; cpp: 69,493; sh: 25,650; python: 19,190; perl: 14,973; makefile: 4,178; yacc: 1,329; sql: 1,074; pascal: 620; ruby: 190; awk: 18; lisp: 7
file content (94 lines) | stat: -rwxr-xr-x 3,450 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
#!/usr/bin/env tarantool
test = require("sqltester")
local yaml = require('yaml')
test:plan(41)

--!./tcltestrunner.lua
-- 2011 November 16
--
-- The author disclaims copyright to this source code.  In place of
-- a legal notice, here is a blessing:
--
--    May you do good and not evil.
--    May you find forgiveness for yourself and forgive others.
--    May you share freely, never taking more than you give.
--
-------------------------------------------------------------------------
--
-- ["set","testdir",[["file","dirname",["argv0"]]]]
-- ["source",[["testdir"],"\/tester.tcl"]]
testprefix = "whereC"
test:do_execsql_test(
    1.0,
    [[
        CREATE TABLE t1(i INTEGER PRIMARY KEY, a INT, b INTEGER);

        INSERT INTO t1 VALUES(1, 1, 1);
        INSERT INTO t1 VALUES(2, 1, 1);
        INSERT INTO t1 VALUES(3, 1, 2);
        INSERT INTO t1 VALUES(4, 1, 2);
        INSERT INTO t1 VALUES(5, 1, 2);
        INSERT INTO t1 VALUES(6, 1, 3);
        INSERT INTO t1 VALUES(7, 1, 3);

        INSERT INTO t1 VALUES(8, 2, 1);
        INSERT INTO t1 VALUES(9, 2, 1);
        INSERT INTO t1 VALUES(10, 2, 2);
        INSERT INTO t1 VALUES(11, 2, 2);
        INSERT INTO t1 VALUES(12, 2, 2);
        INSERT INTO t1 VALUES(13, 2, 3);
        INSERT INTO t1 VALUES(14, 2, 3);

        INSERT INTO t1 VALUES(15, 2, 1);
        INSERT INTO t1 VALUES(16, 2, 1);
        INSERT INTO t1 VALUES(17, 2, 2);
        INSERT INTO t1 VALUES(18, 2, 2);
        INSERT INTO t1 VALUES(19, 2, 2);
        INSERT INTO t1 VALUES(20, 2, 3);
        INSERT INTO t1 VALUES(21, 2, 3);

        CREATE INDEX i1 ON t1(a, b);
    ]])


--local function main()
test:test("main", function()
    local data = {{"SELECT i FROM t1 WHERE a=1 AND b=2 AND i>3",         {4, 5}},
                  -- {"SELECT i FROM t1 WHERE rowid='12'",                  {12}},
                  {"SELECT i FROM t1 WHERE a=1 AND b=2",               {3, 4, 5}},
                  {"SELECT i FROM t1 WHERE a=1 AND b=2 AND i>3",     {4, 5}},
                  {"SELECT i FROM t1 WHERE a=1 AND b=2 AND i<5",       {3, 4}},
                  {"SELECT i FROM t1 WHERE a=2 AND b=2 AND i<12",        {10, 11}},
                  {"SELECT i FROM t1 WHERE a IN(1, 2) AND b=2 AND i<11", {3, 4, 5, 10}},
                  {"SELECT i FROM t1 WHERE a=2 AND b=2 AND i BETWEEN 10 AND 12", {10, 11, 12}},
                  {"SELECT i FROM t1 WHERE a=2 AND b=2 AND i BETWEEN 11 AND 12", {11, 12}},
                  {"SELECT i FROM t1 WHERE a=2 AND b=2 AND i BETWEEN 10 AND 11", {10, 11}},
                  {"SELECT i FROM t1 WHERE a=2 AND b=2 AND i BETWEEN 12 AND 10", {}},
                  {"SELECT i FROM t1 WHERE a=2 AND b=2 AND i<NULL",      {}},
                  {"SELECT i FROM t1 WHERE a=2 AND b=2 AND i>=NULL",     {}},
                  {"SELECT i FROM t1 WHERE a=1 AND b=2 AND i<4.5",     {3, 4}}}
                  -- {"SELECT i FROM t1 WHERE rowid IS '12'",               {12}}}

    for tn, t in ipairs(data) do
        test:do_execsql_test(
            "1."..tn..".1",
            t[1], t[2])

        -- Sort ascending
        table.sort(t[2])
        test:do_execsql_test(
            "1."..tn..".2",
            t[1].." ORDER BY i ASC",
            t[2])

        -- Sort descending
        table.sort(t[2], function(a, b) return a > b end)
        test:do_execsql_test(
            "1."..tn..".3",
            t[1].." ORDER BY i DESC",
            t[2])
    end
end)

test:finish_test()