File: on-conflict.test.lua

package info (click to toggle)
tarantool 2.6.0-1
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 85,364 kB
  • sloc: ansic: 513,760; cpp: 69,489; sh: 25,650; python: 19,190; perl: 14,973; makefile: 4,173; yacc: 1,329; sql: 1,074; pascal: 620; ruby: 190; awk: 18; lisp: 7
file content (58 lines) | stat: -rw-r--r-- 2,617 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
test_run = require('test_run').new()
engine = test_run:get_cfg('engine')
_ = box.space._session_settings:update('sql_default_engine', {{'=', 2, engine}})
--
-- Check that original sql ON CONFLICT clause is really
-- disabled.
--
box.execute("CREATE TABLE t (id INTEGER PRIMARY KEY, v INTEGER UNIQUE ON CONFLICT ABORT)")
box.execute("CREATE TABLE q (id INTEGER PRIMARY KEY, v INTEGER UNIQUE ON CONFLICT FAIL)")
box.execute("CREATE TABLE p (id INTEGER PRIMARY KEY, v INTEGER UNIQUE ON CONFLICT IGNORE)")
box.execute("CREATE TABLE g (id INTEGER PRIMARY KEY, v INTEGER UNIQUE ON CONFLICT REPLACE)")
box.execute("CREATE TABLE e (id INTEGER PRIMARY KEY ON CONFLICT REPLACE, v INTEGER)")
box.execute("CREATE TABLE t1(a INT PRIMARY KEY ON CONFLICT REPLACE)")
box.execute("CREATE TABLE t2(a INT PRIMARY KEY ON CONFLICT IGNORE)")

-- CHECK constraint is illegal with REPLACE option.
--
box.execute("CREATE TABLE t (id INTEGER PRIMARY KEY, a INTEGER CHECK (a > 5) ON CONFLICT REPLACE);")

--
-- gh-3473: Primary key can't be declared with NULL.
--
box.execute("CREATE TABLE te17 (s1 INT NULL PRIMARY KEY NOT NULL);")
box.execute("CREATE TABLE te17 (s1 INT NULL PRIMARY KEY);")
box.execute("CREATE TABLE test (a int PRIMARY KEY, b int NULL ON CONFLICT IGNORE);")
box.execute("CREATE TABLE test (a int, b int NULL, c int, PRIMARY KEY(a, b, c))")

-- Several NOT NULL REPLACE constraints work
--
box.execute("CREATE TABLE a (id INT PRIMARY KEY, a INT NOT NULL ON CONFLICT REPLACE DEFAULT 1, b INT NOT NULL ON CONFLICT REPLACE DEFAULT 2);")
box.execute("INSERT INTO a VALUES(1, NULL, NULL);")
box.execute("INSERT INTO a VALUES(2, NULL, NULL);")
box.execute("SELECT * FROM a;")
box.execute("DROP TABLE a;")

-- gh-3566: UPDATE OR IGNORE causes deletion of old entry.
--
box.execute("CREATE TABLE tj (s0 INT PRIMARY KEY, s1 INT UNIQUE, s2 INT);")
box.execute("INSERT INTO tj VALUES (1, 1, 2), (2, 2, 3);")
box.execute("CREATE UNIQUE INDEX i ON tj (s2);")
box.execute("UPDATE OR IGNORE tj SET s1 = s1 + 1;")
box.execute("SELECT s1, s2 FROM tj;")
box.execute("UPDATE OR IGNORE tj SET s2 = s2 + 1;")
box.execute("SELECT s1, s2 FROM tj;")

-- gh-3565: INSERT OR REPLACE causes assertion fault.
--
box.execute("DROP TABLE tj;")
box.execute("CREATE TABLE tj (s1 INT PRIMARY KEY, s2 INT);")
box.execute("INSERT INTO tj VALUES (1, 2),(2, 3);")
box.execute("CREATE UNIQUE INDEX i ON tj (s2);")
box.execute("REPLACE INTO tj VALUES (1, 3);")
box.execute("SELECT * FROM tj;")
box.execute("INSERT INTO tj VALUES (2, 4), (3, 5);")
box.execute("UPDATE OR REPLACE tj SET s2 = s2 + 1;")
box.execute("SELECT * FROM tj;")

box.execute("DROP TABLE tj;")