mirror of
https://github.com/aljazceru/turso.git
synced 2026-01-31 13:54:27 +01:00
Add TCL tests for INSERT OR IGNORE handling
This commit is contained in:
@@ -701,4 +701,77 @@ do_execsql_test_on_specific_db {:memory:} insert-rowid-backwards-compability-2 {
|
||||
CREATE TABLE t(a INTEGER, PRIMARY KEY (a DESC));
|
||||
INSERT INTO t(a) VALUES (123);
|
||||
SELECT rowid, * FROM t;
|
||||
} {123|123}
|
||||
} {123|123}
|
||||
|
||||
|
||||
do_execsql_test_on_specific_db {:memory:} ignore-pk-conflict {
|
||||
CREATE TABLE t(a INTEGER PRIMARY KEY);
|
||||
INSERT INTO t VALUES (1),(2),(3);
|
||||
INSERT OR IGNORE INTO t VALUES (2);
|
||||
SELECT a FROM t ORDER BY a;
|
||||
} {1
|
||||
2
|
||||
3}
|
||||
|
||||
do_execsql_test_on_specific_db {:memory:} ignore-unique-conflict {
|
||||
CREATE TABLE t(a INTEGER, b TEXT UNIQUE);
|
||||
INSERT INTO t VALUES (1,'x'),(2,'y');
|
||||
INSERT OR IGNORE INTO t VALUES (3,'y');
|
||||
SELECT a,b FROM t ORDER BY a;
|
||||
} {1|x
|
||||
2|y}
|
||||
|
||||
do_execsql_test_on_specific_db {:memory:} ignore-multi-unique-conflict {
|
||||
CREATE TABLE t(a UNIQUE, b UNIQUE, c);
|
||||
INSERT INTO t VALUES (1,10,100),(2,20,200);
|
||||
INSERT OR IGNORE INTO t VALUES (1,30,300); -- conflicts on a
|
||||
INSERT OR IGNORE INTO t VALUES (3,20,300); -- conflicts on b
|
||||
INSERT OR IGNORE INTO t VALUES (1,20,300); -- conflicts on both
|
||||
SELECT a,b,c FROM t ORDER BY a;
|
||||
} {1|10|100
|
||||
2|20|200}
|
||||
|
||||
do_execsql_test_on_specific_db {:memory:} ignore-some-conflicts-multirow {
|
||||
CREATE TABLE t(a INTEGER UNIQUE);
|
||||
INSERT INTO t VALUES (2),(4);
|
||||
INSERT OR IGNORE INTO t VALUES (1),(2),(3),(4),(5);
|
||||
SELECT a FROM t ORDER BY a;
|
||||
} {1
|
||||
2
|
||||
3
|
||||
4
|
||||
5}
|
||||
|
||||
do_execsql_test_on_specific_db {:memory:} ignore-from-select {
|
||||
CREATE TABLE src(x);
|
||||
INSERT INTO src VALUES (1),(2),(2),(3);
|
||||
CREATE TABLE dst(a INTEGER UNIQUE);
|
||||
INSERT INTO dst VALUES (2);
|
||||
INSERT OR IGNORE INTO dst SELECT x FROM src;
|
||||
SELECT a FROM dst ORDER BY a;
|
||||
} {1
|
||||
2
|
||||
3}
|
||||
|
||||
do_execsql_test_on_specific_db {:memory:} ignore-null-in-unique {
|
||||
CREATE TABLE t(a INTEGER UNIQUE);
|
||||
INSERT INTO t VALUES (1),(NULL),(NULL);
|
||||
INSERT OR IGNORE INTO t VALUES (1),(NULL);
|
||||
SELECT COUNT(*) FROM t WHERE a IS NULL;
|
||||
} {3}
|
||||
|
||||
do_execsql_test_on_specific_db {:memory:} ignore-preserves-rowid {
|
||||
CREATE TABLE t(data TEXT UNIQUE);
|
||||
INSERT INTO t VALUES ('x'),('y'),('z');
|
||||
SELECT rowid, data FROM t WHERE data='y';
|
||||
INSERT OR IGNORE INTO t VALUES ('y');
|
||||
SELECT rowid, data FROM t WHERE data='y';
|
||||
} {2|y
|
||||
2|y}
|
||||
|
||||
do_execsql_test_on_specific_db {:memory:} ignore-intra-statement-dups {
|
||||
CREATE TABLE t(a INTEGER PRIMARY KEY, b TEXT);
|
||||
INSERT OR IGNORE INTO t VALUES (5,'first'),(6,'x'),(5,'second'),(5,'third');
|
||||
SELECT a,b FROM t ORDER BY a;
|
||||
} {5|first
|
||||
6|x}
|
||||
|
||||
Reference in New Issue
Block a user