File: tkt-b1d3a2e531.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 (137 lines) | stat: -rwxr-xr-x 3,137 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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
#!/usr/bin/env tarantool
test = require("sqltester")
test:plan(11)

--!./tcltestrunner.lua
-- 2011 August 22
--
-- 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.
--
-------------------------------------------------------------------------
-- This file implements regression tests for sql library.
--
-- This file implements tests for foreign keys. Specifically, it tests
-- that ticket b1d3a2e531 has been fixed.
--
-- ["set","testdir",[["file","dirname",["argv0"]]]]
-- ["source",[["testdir"],"\/tester.tcl"]]


testprefix = "tkt-b1d3a2e531"

test:do_execsql_test(
    1.1,
    [[
        CREATE TABLE pp(x TEXT PRIMARY KEY);
        CREATE TABLE cc(y TEXT primary key REFERENCES pp DEFERRABLE INITIALLY DEFERRED);
        INSERT INTO pp VALUES('abc');
        INSERT INTO cc VALUES('abc');
    ]])

test:do_execsql_test(
    1.2,
    [[
        DROP TABLE cc;
        DROP TABLE pp;
    ]])

test:do_execsql_test(
    1.3,
    [[
        CREATE TABLE pp(x TEXT PRIMARY KEY);
        CREATE TABLE cc(y TEXT primary key REFERENCES pp DEFERRABLE INITIALLY DEFERRED);
        INSERT INTO pp VALUES('abc');
        INSERT INTO cc VALUES('abc');
    ]])

test:do_execsql_test(
    1.4,
    [[
        DROP TABLE cc;
        DROP TABLE pp;
    ]])

test:do_execsql_test(
    2.1,
    [[
        CREATE TABLE pp(x INTEGER PRIMARY KEY);
        CREATE TABLE cc(
          y INTEGER PRIMARY KEY REFERENCES pp DEFERRABLE INITIALLY DEFERRED
        );
        INSERT INTO pp VALUES(5);
        INSERT INTO cc VALUES(5);
    ]])

test:do_execsql_test(
    2.2,
    [[
        DROP TABLE cc;
        DROP TABLE pp;
    ]])

test:do_execsql_test(
    2.3,
    [[
        CREATE TABLE pp(x INTEGER PRIMARY KEY);
        CREATE TABLE cc(
          y INTEGER PRIMARY KEY REFERENCES pp DEFERRABLE INITIALLY DEFERRED
        );
        INSERT INTO pp VALUES(5);
        INSERT INTO cc VALUES(5);
    ]])

test:do_execsql_test(
    2.4,
    [[
        DROP TABLE cc;
        DROP TABLE pp;
    ]])

test:do_execsql_test(
    3.1,
    [[
        CREATE TABLE pp1(x  INT PRIMARY KEY);
        CREATE TABLE cc1(y  INT REFERENCES pp1 DEFERRABLE INITIALLY DEFERRED, a  INT primary key);

        CREATE TABLE pp2(x  INT PRIMARY KEY);
        CREATE TABLE cc2(y  INT primary key REFERENCES pp1 DEFERRABLE INITIALLY DEFERRED);

        INSERT INTO pp1 VALUES(2200);
        INSERT INTO cc1 VALUES(NULL, 1);

        INSERT INTO pp2 VALUES(2200);
        INSERT INTO cc2 VALUES(2200);
    ]])

test:do_catchsql_test(
    3.2,
    [[
        -- START TRANSACTION;
          DELETE FROM pp2;
        -- COMMIT;
          DROP TABLE pp1;
          DROP TABLE cc1;
    ]], {
        -- <3.2>
        1, "Can't drop space 'PP1': other objects depend on it"
        -- </3.2>
    })

test:do_catchsql_test(
    3.3,
    [[
        DROP TABLE cc2;
        -- COMMIT;
    ]], {
        -- <3.3>
        0
        -- </3.3>
    })

test:finish_test()