d5af54207d
cases. This change involves an enhancement to sqlite3ExprCompare() which needs to be reviewed on trunk prior to merging. FossilOrigin-Name: 5bf704256206f84b3db7a5d8523215604eeb218ef8db86316d1e43ecd7248d6a
85 lines
2.7 KiB
Plaintext
85 lines
2.7 KiB
Plaintext
# 2018-04-12
|
|
#
|
|
# 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.
|
|
#
|
|
#***********************************************************************
|
|
#
|
|
# Test cases for UPSERT
|
|
|
|
set testdir [file dirname $argv0]
|
|
source $testdir/tester.tcl
|
|
set testprefix zipfile
|
|
|
|
do_execsql_test upsert1-100 {
|
|
CREATE TABLE t1(a INTEGER PRIMARY KEY, b TEXT, c DEFAULT 0);
|
|
CREATE UNIQUE INDEX t1x1 ON t1(b);
|
|
INSERT INTO t1(a,b) VALUES(1,2) ON CONFLICT DO NOTHING;
|
|
SELECT * FROM t1;
|
|
} {1 2 0}
|
|
do_execsql_test upsert1-101 {
|
|
DELETE FROM t1;
|
|
INSERT INTO t1(a,b) VALUES(2,3) ON CONFLICT(a) DO NOTHING;
|
|
SELECT * FROM t1;
|
|
} {2 3 0}
|
|
do_execsql_test upsert1-102 {
|
|
DELETE FROM t1;
|
|
INSERT INTO t1(a,b) VALUES(3,4) ON CONFLICT(b) DO NOTHING;
|
|
SELECT * FROM t1;
|
|
} {3 4 0}
|
|
do_catchsql_test upsert1-110 {
|
|
INSERT INTO t1(a,b) VALUES(5,6) ON CONFLICT(x) DO NOTHING;
|
|
SELECT * FROM t1;
|
|
} {1 {no such column: x}}
|
|
do_catchsql_test upsert1-120 {
|
|
INSERT INTO t1(a,b) VALUES(5,6) ON CONFLICT(c) DO NOTHING;
|
|
SELECT * FROM t1;
|
|
} {1 {ON CONFLICT clause does not match any PRIMARY KEY or UNIQUE constraint}}
|
|
breakpoint
|
|
do_catchsql_test upsert1-130 {
|
|
INSERT INTO t1(a,b) VALUES(5,6) ON CONFLICT(b COLLATE nocase) DO NOTHING;
|
|
SELECT * FROM t1;
|
|
} {1 {ON CONFLICT clause does not match any PRIMARY KEY or UNIQUE constraint}}
|
|
do_execsql_test upsert1-140 {
|
|
DELETE FROM t1;
|
|
INSERT INTO t1(a,b) VALUES(5,6) ON CONFLICT(b COLLATE binary) DO NOTHING;
|
|
SELECT * FROM t1;
|
|
} {5 6 0}
|
|
|
|
do_catchsql_test upsert1-200 {
|
|
DROP INDEX t1x1;
|
|
DELETE FROM t1;
|
|
CREATE UNIQUE INDEX t1x1 ON t1(a||b);
|
|
INSERT INTO t1(a,b) VALUES(5,6) ON CONFLICT(a||b) DO NOTHING;
|
|
SELECT * FROM t1;
|
|
} {0 {5 6 0}}
|
|
do_catchsql_test upsert1-210 {
|
|
DELETE FROM t1;
|
|
INSERT INTO t1(a,b) VALUES(5,6) ON CONFLICT(a||+b) DO NOTHING;
|
|
SELECT * FROM t1;
|
|
} {1 {ON CONFLICT clause does not match any PRIMARY KEY or UNIQUE constraint}}
|
|
|
|
do_catchsql_test upsert1-300 {
|
|
DROP INDEX t1x1;
|
|
DELETE FROM t1;
|
|
CREATE UNIQUE INDEX t1x1 ON t1(b) WHERE b>10;
|
|
INSERT INTO t1(a,b) VALUES(5,6) ON CONFLICT(b) DO NOTHING;
|
|
SELECT * FROM t1;
|
|
} {1 {ON CONFLICT clause does not match any PRIMARY KEY or UNIQUE constraint}}
|
|
do_catchsql_test upsert1-310 {
|
|
DELETE FROM t1;
|
|
INSERT INTO t1(a,b) VALUES(5,6) ON CONFLICT(b) WHERE b!=10 DO NOTHING;
|
|
SELECT * FROM t1;
|
|
} {1 {ON CONFLICT clause does not match any PRIMARY KEY or UNIQUE constraint}}
|
|
do_execsql_test upsert1-320 {
|
|
DELETE FROM t1;
|
|
INSERT INTO t1(a,b) VALUES(5,6) ON CONFLICT(b) WHERE b>10 DO NOTHING;
|
|
SELECT * FROM t1;
|
|
} {5 6 0}
|
|
|
|
finish_test
|