158b18a47Sdrh# 2020-12-11 258b18a47Sdrh# 358b18a47Sdrh# The author disclaims copyright to this source code. In place of 458b18a47Sdrh# a legal notice, here is a blessing: 558b18a47Sdrh# 658b18a47Sdrh# May you do good and not evil. 758b18a47Sdrh# May you find forgiveness for yourself and forgive others. 858b18a47Sdrh# May you share freely, never taking more than you give. 958b18a47Sdrh# 1058b18a47Sdrh#*********************************************************************** 1158b18a47Sdrh# 1258b18a47Sdrh# Test cases for generalized UPSERT 1358b18a47Sdrh 1458b18a47Sdrhset testdir [file dirname $argv0] 1558b18a47Sdrhsource $testdir/tester.tcl 1658b18a47Sdrhset testprefix upsert5 1758b18a47Sdrh 1858b18a47Sdrhforeach {tn sql} { 1958b18a47Sdrh 1 { CREATE TABLE t1(a INTEGER PRIMARY KEY, b, c UNIQUE, d UNIQUE, e UNIQUE) } 2058b18a47Sdrh 2 { CREATE TABLE t1(a INT PRIMARY KEY, b, c UNIQUE, d UNIQUE, e UNIQUE) } 2158b18a47Sdrh 3 { CREATE TABLE t1(a INT PRIMARY KEY, b, c UNIQUE, d UNIQUE, e UNIQUE) WITHOUT ROWID} 2258b18a47Sdrh 4 { CREATE TABLE t1(e UNIQUE, d UNIQUE, c UNIQUE, a INTEGER PRIMARY KEY, b) } 2358b18a47Sdrh 5 { CREATE TABLE t1(e UNIQUE, d UNIQUE, c UNIQUE, a INT PRIMARY KEY, b) } 2458b18a47Sdrh 6 { CREATE TABLE t1(e UNIQUE, d UNIQUE, c UNIQUE, a INT PRIMARY KEY, b) WITHOUT ROWID} 2558b18a47Sdrh} { 2658b18a47Sdrh reset_db 2758b18a47Sdrh execsql $sql 2858b18a47Sdrh 2958b18a47Sdrh do_execsql_test 1.$tn.100 { 3058b18a47Sdrh DELETE FROM t1; 3158b18a47Sdrh INSERT INTO t1(a,b,c,d,e) VALUES(1,2,3,4,5); 3258b18a47Sdrh INSERT INTO t1(a,b,c,d,e) VALUES(1,NULL,3,4,5) 3358b18a47Sdrh ON CONFLICT(a) DO UPDATE SET b='a' 3458b18a47Sdrh ON CONFLICT(c) DO UPDATE SET b='c' 3558b18a47Sdrh ON CONFLICT(d) DO UPDATE SET b='d' 3658b18a47Sdrh ON CONFLICT(e) DO UPDATE SET b='e'; 3758b18a47Sdrh SELECT a,b,c,d,e FROM t1; 3858b18a47Sdrh } {1 a 3 4 5} 3958b18a47Sdrh do_execsql_test 1.$tn.101 { 4058b18a47Sdrh DELETE FROM t1; 4158b18a47Sdrh INSERT INTO t1(a,b,c,d,e) VALUES(1,2,3,4,5); 4258b18a47Sdrh INSERT INTO t1(a,b,c,d,e) VALUES(91,NULL,3,4,5) 4358b18a47Sdrh ON CONFLICT(a) DO UPDATE SET b='a' 4458b18a47Sdrh ON CONFLICT(c) DO UPDATE SET b='c' 4558b18a47Sdrh ON CONFLICT(d) DO UPDATE SET b='d' 4658b18a47Sdrh ON CONFLICT(e) DO UPDATE SET b='e'; 4758b18a47Sdrh SELECT a,b,c,d,e FROM t1; 4858b18a47Sdrh } {1 c 3 4 5} 4958b18a47Sdrh do_execsql_test 1.$tn.102 { 5058b18a47Sdrh DELETE FROM t1; 5158b18a47Sdrh INSERT INTO t1(a,b,c,d,e) VALUES(1,2,3,4,5); 5258b18a47Sdrh INSERT INTO t1(a,b,c,d,e) VALUES(91,NULL,93,4,5) 5358b18a47Sdrh ON CONFLICT(a) DO UPDATE SET b='a' 5458b18a47Sdrh ON CONFLICT(c) DO UPDATE SET b='c' 5558b18a47Sdrh ON CONFLICT(d) DO UPDATE SET b='d' 5658b18a47Sdrh ON CONFLICT(e) DO UPDATE SET b='e'; 5758b18a47Sdrh SELECT a,b,c,d,e FROM t1; 5858b18a47Sdrh } {1 d 3 4 5} 5958b18a47Sdrh do_execsql_test 1.$tn.103 { 6058b18a47Sdrh DELETE FROM t1; 6158b18a47Sdrh INSERT INTO t1(a,b,c,d,e) VALUES(1,2,3,4,5); 6258b18a47Sdrh INSERT INTO t1(a,b,c,d,e) VALUES(91,NULL,93,94,5) 6358b18a47Sdrh ON CONFLICT(a) DO UPDATE SET b='a' 6458b18a47Sdrh ON CONFLICT(c) DO UPDATE SET b='c' 6558b18a47Sdrh ON CONFLICT(d) DO UPDATE SET b='d' 6658b18a47Sdrh ON CONFLICT(e) DO UPDATE SET b='e'; 6758b18a47Sdrh SELECT a,b,c,d,e FROM t1; 6858b18a47Sdrh } {1 e 3 4 5} 6958b18a47Sdrh do_execsql_test 1.$tn.200 { 7058b18a47Sdrh DELETE FROM t1; 7158b18a47Sdrh INSERT INTO t1(a,b,c,d,e) VALUES(1,2,3,4,5); 7258b18a47Sdrh INSERT INTO t1(a,b,c,d,e) VALUES(1,NULL,93,94,95) 7358b18a47Sdrh ON CONFLICT(c) DO UPDATE SET b='c' 7458b18a47Sdrh ON CONFLICT(a) DO UPDATE SET b='a' 7558b18a47Sdrh ON CONFLICT(d) DO UPDATE SET b='d' 7658b18a47Sdrh ON CONFLICT(e) DO UPDATE SET b='e'; 7758b18a47Sdrh SELECT a,b,c,d,e FROM t1; 7858b18a47Sdrh } {1 a 3 4 5} 7958b18a47Sdrh do_execsql_test 1.$tn.201 { 8058b18a47Sdrh DELETE FROM t1; 8158b18a47Sdrh INSERT INTO t1(a,b,c,d,e) VALUES(1,2,3,4,5); 8258b18a47Sdrh INSERT INTO t1(a,b,c,d,e) VALUES(1,NULL,3,94,95) 8358b18a47Sdrh ON CONFLICT(c) DO UPDATE SET b='c' 8458b18a47Sdrh ON CONFLICT(a) DO UPDATE SET b='a' 8558b18a47Sdrh ON CONFLICT(d) DO UPDATE SET b='d' 8658b18a47Sdrh ON CONFLICT(e) DO UPDATE SET b='e'; 8758b18a47Sdrh SELECT a,b,c,d,e FROM t1; 8858b18a47Sdrh } {1 c 3 4 5} 8958b18a47Sdrh do_execsql_test 1.$tn.202 { 9058b18a47Sdrh DELETE FROM t1; 9158b18a47Sdrh INSERT INTO t1(a,b,c,d,e) VALUES(1,2,3,4,5); 9258b18a47Sdrh INSERT INTO t1(a,b,c,d,e) VALUES(1,NULL,3,4,5) 9358b18a47Sdrh ON CONFLICT(c) DO UPDATE SET b='c' 9458b18a47Sdrh ON CONFLICT(a) DO UPDATE SET b='a' 9558b18a47Sdrh ON CONFLICT(d) DO UPDATE SET b='d' 9658b18a47Sdrh ON CONFLICT(e) DO UPDATE SET b='e'; 9758b18a47Sdrh SELECT a,b,c,d,e FROM t1; 9858b18a47Sdrh } {1 c 3 4 5} 9958b18a47Sdrh do_execsql_test 1.$tn.203 { 10058b18a47Sdrh DELETE FROM t1; 10158b18a47Sdrh INSERT INTO t1(a,b,c,d,e) VALUES(1,2,3,4,5); 10258b18a47Sdrh INSERT INTO t1(a,b,c,d,e) VALUES(1,NULL,93,94,5) 10358b18a47Sdrh ON CONFLICT(c) DO UPDATE SET b='c' 10458b18a47Sdrh ON CONFLICT(a) DO UPDATE SET b='a' 10558b18a47Sdrh ON CONFLICT(d) DO UPDATE SET b='d' 10658b18a47Sdrh ON CONFLICT(e) DO UPDATE SET b='e'; 10758b18a47Sdrh SELECT a,b,c,d,e FROM t1; 10858b18a47Sdrh } {1 a 3 4 5} 10958b18a47Sdrh do_execsql_test 1.$tn.204 { 11058b18a47Sdrh DELETE FROM t1; 11158b18a47Sdrh INSERT INTO t1(a,b,c,d,e) VALUES(1,2,3,4,5); 11258b18a47Sdrh INSERT INTO t1(a,b,c,d,e) VALUES(1,NULL,93,4,95) 11358b18a47Sdrh ON CONFLICT(c) DO UPDATE SET b='c' 11458b18a47Sdrh ON CONFLICT(a) DO UPDATE SET b='a' 11558b18a47Sdrh ON CONFLICT(d) DO UPDATE SET b='d' 11658b18a47Sdrh ON CONFLICT(e) DO UPDATE SET b='e'; 11758b18a47Sdrh SELECT a,b,c,d,e FROM t1; 11858b18a47Sdrh } {1 a 3 4 5} 11958b18a47Sdrh do_execsql_test 1.$tn.210 { 12058b18a47Sdrh DELETE FROM t1; 12158b18a47Sdrh INSERT INTO t1(a,b,c,d,e) VALUES(1,2,3,4,5); 12258b18a47Sdrh INSERT INTO t1(a,b,c,d,e) VALUES(1,NULL,93,94,95) 12358b18a47Sdrh ON CONFLICT(c) DO UPDATE SET b='c' 12458b18a47Sdrh ON CONFLICT(d) DO UPDATE SET b='d' 12558b18a47Sdrh ON CONFLICT(a) DO UPDATE SET b='a' 12658b18a47Sdrh ON CONFLICT(e) DO UPDATE SET b='e'; 12758b18a47Sdrh SELECT a,b,c,d,e FROM t1; 12858b18a47Sdrh } {1 a 3 4 5} 12958b18a47Sdrh do_execsql_test 1.$tn.211 { 13058b18a47Sdrh DELETE FROM t1; 13158b18a47Sdrh INSERT INTO t1(a,b,c,d,e) VALUES(1,2,3,4,5); 13258b18a47Sdrh INSERT INTO t1(a,b,c,d,e) VALUES(1,NULL,93,4,95) 13358b18a47Sdrh ON CONFLICT(c) DO UPDATE SET b='c' 13458b18a47Sdrh ON CONFLICT(d) DO UPDATE SET b='d' 13558b18a47Sdrh ON CONFLICT(a) DO UPDATE SET b='a' 13658b18a47Sdrh ON CONFLICT(e) DO UPDATE SET b='e'; 13758b18a47Sdrh SELECT a,b,c,d,e FROM t1; 13858b18a47Sdrh } {1 d 3 4 5} 13958b18a47Sdrh do_execsql_test 1.$tn.212 { 14058b18a47Sdrh DELETE FROM t1; 14158b18a47Sdrh INSERT INTO t1(a,b,c,d,e) VALUES(1,2,3,4,5); 14258b18a47Sdrh INSERT INTO t1(a,b,c,d,e) VALUES(1,NULL,93,94,5) 14358b18a47Sdrh ON CONFLICT(c) DO UPDATE SET b='c' 14458b18a47Sdrh ON CONFLICT(d) DO UPDATE SET b='d' 14558b18a47Sdrh ON CONFLICT(a) DO UPDATE SET b='a' 14658b18a47Sdrh ON CONFLICT(e) DO UPDATE SET b='e'; 14758b18a47Sdrh SELECT a,b,c,d,e FROM t1; 14858b18a47Sdrh } {1 a 3 4 5} 14958b18a47Sdrh do_execsql_test 1.$tn.213 { 15058b18a47Sdrh DELETE FROM t1; 15158b18a47Sdrh INSERT INTO t1(a,b,c,d,e) VALUES(1,2,3,4,5); 15258b18a47Sdrh INSERT INTO t1(a,b,c,d,e) VALUES(91,NULL,93,94,5) 15358b18a47Sdrh ON CONFLICT(c) DO UPDATE SET b='c' 15458b18a47Sdrh ON CONFLICT(d) DO UPDATE SET b='d' 15558b18a47Sdrh ON CONFLICT(a) DO UPDATE SET b='a' 15658b18a47Sdrh ON CONFLICT(e) DO UPDATE SET b='e'; 15758b18a47Sdrh SELECT a,b,c,d,e FROM t1; 15858b18a47Sdrh } {1 e 3 4 5} 15958b18a47Sdrh do_execsql_test 1.$tn.214 { 16058b18a47Sdrh DELETE FROM t1; 16158b18a47Sdrh INSERT INTO t1(a,b,c,d,e) VALUES(1,2,3,4,5); 16258b18a47Sdrh INSERT INTO t1(a,b,c,d,e) VALUES(91,NULL,93,94,5) 16358b18a47Sdrh ON CONFLICT(c) DO UPDATE SET b='c' 16458b18a47Sdrh ON CONFLICT(d) DO UPDATE SET b='d' 16558b18a47Sdrh ON CONFLICT(e) DO UPDATE SET b='e' 16658b18a47Sdrh ON CONFLICT(a) DO UPDATE SET b='a'; 16758b18a47Sdrh SELECT a,b,c,d,e FROM t1; 16858b18a47Sdrh } {1 e 3 4 5} 16958b18a47Sdrh do_execsql_test 1.$tn.215 { 17058b18a47Sdrh DELETE FROM t1; 17158b18a47Sdrh INSERT INTO t1(a,b,c,d,e) VALUES(1,2,3,4,5); 17258b18a47Sdrh INSERT INTO t1(a,b,c,d,e) VALUES(1,NULL,93,94,5) 17358b18a47Sdrh ON CONFLICT(c) DO UPDATE SET b='c' 17458b18a47Sdrh ON CONFLICT(d) DO UPDATE SET b='d' 17558b18a47Sdrh ON CONFLICT(e) DO UPDATE SET b='e' 17658b18a47Sdrh ON CONFLICT(a) DO UPDATE SET b='a'; 17758b18a47Sdrh SELECT a,b,c,d,e FROM t1; 17858b18a47Sdrh } {1 e 3 4 5} 17958b18a47Sdrh do_execsql_test 1.$tn.216 { 18058b18a47Sdrh DELETE FROM t1; 18158b18a47Sdrh INSERT INTO t1(a,b,c,d,e) VALUES(1,2,3,4,5); 18258b18a47Sdrh INSERT INTO t1(a,b,c,d,e) VALUES(1,NULL,93,94,95) 18358b18a47Sdrh ON CONFLICT(c) DO UPDATE SET b='c' 18458b18a47Sdrh ON CONFLICT(d) DO UPDATE SET b='d' 18558b18a47Sdrh ON CONFLICT(e) DO UPDATE SET b='e' 18658b18a47Sdrh ON CONFLICT(a) DO UPDATE SET b='a'; 18758b18a47Sdrh SELECT a,b,c,d,e FROM t1; 18858b18a47Sdrh } {1 a 3 4 5} 18958b18a47Sdrh 19058b18a47Sdrh do_execsql_test 1.$tn.300 { 19158b18a47Sdrh DELETE FROM t1; 19258b18a47Sdrh INSERT INTO t1(a,b,c,d,e) VALUES(1,2,3,4,5); 19358b18a47Sdrh INSERT INTO t1(a,b,c,d,e) VALUES(1,NULL,93,94,95) 19458b18a47Sdrh ON CONFLICT(c) DO UPDATE SET b='c' 19558b18a47Sdrh ON CONFLICT(d) DO UPDATE SET b='d' 19658b18a47Sdrh ON CONFLICT(a) DO UPDATE SET b='a1' 19758b18a47Sdrh ON CONFLICT(a) DO UPDATE SET b='a2' 19858b18a47Sdrh ON CONFLICT(a) DO UPDATE SET b='a3' 19958b18a47Sdrh ON CONFLICT(a) DO UPDATE SET b='a4' 20058b18a47Sdrh ON CONFLICT(a) DO UPDATE SET b='a5' 20158b18a47Sdrh ON CONFLICT(e) DO UPDATE SET b='e'; 20258b18a47Sdrh SELECT a,b,c,d,e FROM t1; 20358b18a47Sdrh } {1 a1 3 4 5} 20458b18a47Sdrh do_execsql_test 1.$tn.301 { 20558b18a47Sdrh DELETE FROM t1; 20658b18a47Sdrh INSERT INTO t1(a,b,c,d,e) VALUES(1,2,3,4,5); 20758b18a47Sdrh INSERT INTO t1(a,b,c,d,e) VALUES(91,NULL,93,94,5) 20858b18a47Sdrh ON CONFLICT(c) DO UPDATE SET b='c' 20958b18a47Sdrh ON CONFLICT(d) DO UPDATE SET b='d' 21058b18a47Sdrh ON CONFLICT(a) DO UPDATE SET b='a1' 21158b18a47Sdrh ON CONFLICT(a) DO UPDATE SET b='a2' 21258b18a47Sdrh ON CONFLICT(a) DO UPDATE SET b='a3' 21358b18a47Sdrh ON CONFLICT(a) DO UPDATE SET b='a4' 21458b18a47Sdrh ON CONFLICT(a) DO UPDATE SET b='a5' 21558b18a47Sdrh ON CONFLICT(e) DO UPDATE SET b='e'; 21658b18a47Sdrh SELECT a,b,c,d,e FROM t1; 21758b18a47Sdrh } {1 e 3 4 5} 21858b18a47Sdrh 21958b18a47Sdrh do_execsql_test 1.$tn.400 { 22058b18a47Sdrh DELETE FROM t1; 22158b18a47Sdrh INSERT INTO t1(a,b,c,d,e) VALUES(1,2,3,4,5); 22258b18a47Sdrh INSERT INTO t1(a,b,c,d,e) VALUES(1,NULL,93,94,95) 22358b18a47Sdrh ON CONFLICT(c) DO UPDATE SET b='c' 22458b18a47Sdrh ON CONFLICT(d) DO UPDATE SET b='d' 22558b18a47Sdrh ON CONFLICT DO UPDATE set b='x'; 22658b18a47Sdrh SELECT a,b,c,d,e FROM t1; 22758b18a47Sdrh } {1 x 3 4 5} 22858b18a47Sdrh do_execsql_test 1.$tn.401 { 22958b18a47Sdrh DELETE FROM t1; 23058b18a47Sdrh INSERT INTO t1(a,b,c,d,e) VALUES(1,2,3,4,5); 23158b18a47Sdrh INSERT INTO t1(a,b,c,d,e) VALUES(91,NULL,93,94,5) 23258b18a47Sdrh ON CONFLICT(c) DO UPDATE SET b='c' 23358b18a47Sdrh ON CONFLICT(d) DO UPDATE SET b='d' 23458b18a47Sdrh ON CONFLICT DO UPDATE set b='x'; 23558b18a47Sdrh SELECT a,b,c,d,e FROM t1; 23658b18a47Sdrh } {1 x 3 4 5} 237255c1c15Sdrh do_execsql_test 1.$tn.402 { 238255c1c15Sdrh DELETE FROM t1; 239255c1c15Sdrh INSERT INTO t1(a,b,c,d,e) VALUES(1,2,3,4,5); 240255c1c15Sdrh INSERT INTO t1(a,b,c,d,e) VALUES(1,NULL,93,94,95) 241255c1c15Sdrh ON CONFLICT(c) DO UPDATE SET b='c' 242255c1c15Sdrh ON CONFLICT(d) DO UPDATE SET b='d' 243255c1c15Sdrh ON CONFLICT DO UPDATE set b='x'; 244255c1c15Sdrh SELECT a,b,c,d,e FROM t1; 245255c1c15Sdrh } {1 x 3 4 5} 246255c1c15Sdrh do_execsql_test 1.$tn.403 { 247255c1c15Sdrh DELETE FROM t1; 248255c1c15Sdrh INSERT INTO t1(a,b,c,d,e) VALUES(1,2,3,4,5); 249255c1c15Sdrh INSERT INTO t1(a,b,c,d,e) VALUES(91,NULL,3,94,95) 250255c1c15Sdrh ON CONFLICT(c) DO UPDATE SET b='c' 251255c1c15Sdrh ON CONFLICT(d) DO UPDATE SET b='d' 252255c1c15Sdrh ON CONFLICT DO UPDATE set b='x'; 253255c1c15Sdrh SELECT a,b,c,d,e FROM t1; 254255c1c15Sdrh } {1 c 3 4 5} 255255c1c15Sdrh do_execsql_test 1.$tn.404 { 256255c1c15Sdrh DELETE FROM t1; 257255c1c15Sdrh INSERT INTO t1(a,b,c,d,e) VALUES(1,2,3,4,5); 258255c1c15Sdrh INSERT INTO t1(a,b,c,d,e) VALUES(91,NULL,3,4,95) 259255c1c15Sdrh ON CONFLICT(c) DO UPDATE SET b='c' 260255c1c15Sdrh ON CONFLICT(d) DO UPDATE SET b='d' 261255c1c15Sdrh ON CONFLICT DO UPDATE set b='x'; 262255c1c15Sdrh SELECT a,b,c,d,e FROM t1; 263255c1c15Sdrh } {1 c 3 4 5} 264255c1c15Sdrh do_execsql_test 1.$tn.405 { 265255c1c15Sdrh DELETE FROM t1; 266255c1c15Sdrh INSERT INTO t1(a,b,c,d,e) VALUES(1,2,3,4,5); 267255c1c15Sdrh INSERT INTO t1(a,b,c,d,e) VALUES(1,NULL,93,4,5) 268255c1c15Sdrh ON CONFLICT(c) DO UPDATE SET b='c' 269255c1c15Sdrh ON CONFLICT(d) DO UPDATE SET b='d' 270255c1c15Sdrh ON CONFLICT DO UPDATE set b='x'; 271255c1c15Sdrh SELECT a,b,c,d,e FROM t1; 272255c1c15Sdrh } {1 d 3 4 5} 27358b18a47Sdrh 274250af6e0Sdrh do_execsql_test 1.$tn.410 { 275250af6e0Sdrh DELETE FROM t1; 276250af6e0Sdrh INSERT INTO t1(a,b,c,d,e) VALUES(1,2,3,4,5); 277250af6e0Sdrh INSERT INTO t1(a,b,c,d,e) VALUES(1,NULL,93,94,95) 278250af6e0Sdrh ON CONFLICT DO UPDATE set b='x'; 279250af6e0Sdrh SELECT a,b,c,d,e FROM t1; 280250af6e0Sdrh } {1 x 3 4 5} 281250af6e0Sdrh do_execsql_test 1.$tn.411 { 282250af6e0Sdrh DELETE FROM t1; 283250af6e0Sdrh INSERT INTO t1(a,b,c,d,e) VALUES(1,2,3,4,5); 284250af6e0Sdrh INSERT INTO t1(a,b,c,d,e) VALUES(91,NULL,93,94,5) 285250af6e0Sdrh ON CONFLICT DO UPDATE set b='x'; 286250af6e0Sdrh SELECT a,b,c,d,e FROM t1; 287250af6e0Sdrh } {1 x 3 4 5} 288250af6e0Sdrh do_execsql_test 1.$tn.412 { 289250af6e0Sdrh DELETE FROM t1; 290250af6e0Sdrh INSERT INTO t1(a,b,c,d,e) VALUES(1,2,3,4,5); 291250af6e0Sdrh INSERT INTO t1(a,b,c,d,e) VALUES(91,NULL,93,4,95) 292250af6e0Sdrh ON CONFLICT DO UPDATE set b='x'; 293250af6e0Sdrh SELECT a,b,c,d,e FROM t1; 294250af6e0Sdrh } {1 x 3 4 5} 295250af6e0Sdrh do_execsql_test 1.$tn.413 { 296250af6e0Sdrh DELETE FROM t1; 297250af6e0Sdrh INSERT INTO t1(a,b,c,d,e) VALUES(1,2,3,4,5); 298250af6e0Sdrh INSERT INTO t1(a,b,c,d,e) VALUES(91,NULL,3,94,95) 299250af6e0Sdrh ON CONFLICT DO UPDATE set b='x'; 300250af6e0Sdrh SELECT a,b,c,d,e FROM t1; 301250af6e0Sdrh } {1 x 3 4 5} 302250af6e0Sdrh 303250af6e0Sdrh do_execsql_test 1.$tn.420 { 304250af6e0Sdrh DELETE FROM t1; 305250af6e0Sdrh INSERT INTO t1(a,b,c,d,e) VALUES(1,2,3,4,5); 306250af6e0Sdrh INSERT INTO t1(a,b,c,d,e) VALUES(1,NULL,93,94,95) 307250af6e0Sdrh ON CONFLICT(c) DO NOTHING 308250af6e0Sdrh ON CONFLICT(d) DO NOTHING 309250af6e0Sdrh ON CONFLICT DO UPDATE set b='x'; 310250af6e0Sdrh SELECT a,b,c,d,e FROM t1; 311250af6e0Sdrh } {1 x 3 4 5} 312250af6e0Sdrh do_execsql_test 1.$tn.421 { 313250af6e0Sdrh DELETE FROM t1; 314250af6e0Sdrh INSERT INTO t1(a,b,c,d,e) VALUES(1,2,3,4,5); 315250af6e0Sdrh INSERT INTO t1(a,b,c,d,e) VALUES(91,NULL,93,94,5) 316250af6e0Sdrh ON CONFLICT(c) DO NOTHING 317250af6e0Sdrh ON CONFLICT(d) DO NOTHING 318250af6e0Sdrh ON CONFLICT DO UPDATE set b='x'; 319250af6e0Sdrh SELECT a,b,c,d,e FROM t1; 320250af6e0Sdrh } {1 x 3 4 5} 321250af6e0Sdrh do_execsql_test 1.$tn.422 { 322250af6e0Sdrh DELETE FROM t1; 323250af6e0Sdrh INSERT INTO t1(a,b,c,d,e) VALUES(1,2,3,4,5); 324250af6e0Sdrh INSERT INTO t1(a,b,c,d,e) VALUES(91,NULL,93,4,95) 325250af6e0Sdrh ON CONFLICT(c) DO NOTHING 326250af6e0Sdrh ON CONFLICT(d) DO NOTHING 327250af6e0Sdrh ON CONFLICT DO UPDATE set b='x'; 328250af6e0Sdrh SELECT a,b,c,d,e FROM t1; 329250af6e0Sdrh } {1 2 3 4 5} 330250af6e0Sdrh do_execsql_test 1.$tn.423 { 331250af6e0Sdrh DELETE FROM t1; 332250af6e0Sdrh INSERT INTO t1(a,b,c,d,e) VALUES(1,2,3,4,5); 333250af6e0Sdrh INSERT INTO t1(a,b,c,d,e) VALUES(91,NULL,3,94,95) 334250af6e0Sdrh ON CONFLICT(c) DO NOTHING 335250af6e0Sdrh ON CONFLICT(d) DO NOTHING 336250af6e0Sdrh ON CONFLICT DO UPDATE set b='x'; 337250af6e0Sdrh SELECT a,b,c,d,e FROM t1; 338250af6e0Sdrh } {1 2 3 4 5} 339250af6e0Sdrh 340250af6e0Sdrh do_execsql_test 1.$tn.500 { 341250af6e0Sdrh DELETE FROM t1; 342250af6e0Sdrh INSERT INTO t1(a,b,c,d,e) VALUES(1,2,3,4,5); 343250af6e0Sdrh INSERT INTO t1(a,b,c,d,e) VALUES(1,NULL,93,94,95) 344250af6e0Sdrh ON CONFLICT(c) DO UPDATE SET b='c' 345250af6e0Sdrh ON CONFLICT(d) DO UPDATE SET b='d' 346250af6e0Sdrh ON CONFLICT DO NOTHING; 347250af6e0Sdrh SELECT a,b,c,d,e FROM t1; 348250af6e0Sdrh } {1 2 3 4 5} 349250af6e0Sdrh do_execsql_test 1.$tn.501 { 350250af6e0Sdrh DELETE FROM t1; 351250af6e0Sdrh INSERT INTO t1(a,b,c,d,e) VALUES(1,2,3,4,5); 352250af6e0Sdrh INSERT INTO t1(a,b,c,d,e) VALUES(91,NULL,93,94,5) 353250af6e0Sdrh ON CONFLICT(c) DO UPDATE SET b='c' 354250af6e0Sdrh ON CONFLICT(d) DO UPDATE SET b='d' 355250af6e0Sdrh ON CONFLICT DO NOTHING; 356250af6e0Sdrh SELECT a,b,c,d,e FROM t1; 357250af6e0Sdrh } {1 2 3 4 5} 358250af6e0Sdrh do_execsql_test 1.$tn.502 { 359250af6e0Sdrh DELETE FROM t1; 360250af6e0Sdrh INSERT INTO t1(a,b,c,d,e) VALUES(1,2,3,4,5); 361250af6e0Sdrh INSERT INTO t1(a,b,c,d,e) VALUES(1,NULL,93,94,95) 362250af6e0Sdrh ON CONFLICT(c) DO UPDATE SET b='c' 363250af6e0Sdrh ON CONFLICT(d) DO UPDATE SET b='d' 364250af6e0Sdrh ON CONFLICT DO NOTHING; 365250af6e0Sdrh SELECT a,b,c,d,e FROM t1; 366250af6e0Sdrh } {1 2 3 4 5} 367250af6e0Sdrh do_execsql_test 1.$tn.503 { 368250af6e0Sdrh DELETE FROM t1; 369250af6e0Sdrh INSERT INTO t1(a,b,c,d,e) VALUES(1,2,3,4,5); 370250af6e0Sdrh INSERT INTO t1(a,b,c,d,e) VALUES(91,NULL,3,94,95) 371250af6e0Sdrh ON CONFLICT(c) DO UPDATE SET b='c' 372250af6e0Sdrh ON CONFLICT(d) DO UPDATE SET b='d' 373250af6e0Sdrh ON CONFLICT DO NOTHING; 374250af6e0Sdrh SELECT a,b,c,d,e FROM t1; 375250af6e0Sdrh } {1 c 3 4 5} 376250af6e0Sdrh do_execsql_test 1.$tn.504 { 377250af6e0Sdrh DELETE FROM t1; 378250af6e0Sdrh INSERT INTO t1(a,b,c,d,e) VALUES(1,2,3,4,5); 379250af6e0Sdrh INSERT INTO t1(a,b,c,d,e) VALUES(91,NULL,3,4,95) 380250af6e0Sdrh ON CONFLICT(c) DO UPDATE SET b='c' 381250af6e0Sdrh ON CONFLICT(d) DO UPDATE SET b='d' 382250af6e0Sdrh ON CONFLICT DO NOTHING; 383250af6e0Sdrh SELECT a,b,c,d,e FROM t1; 384250af6e0Sdrh } {1 c 3 4 5} 385250af6e0Sdrh do_execsql_test 1.$tn.505 { 386250af6e0Sdrh DELETE FROM t1; 387250af6e0Sdrh INSERT INTO t1(a,b,c,d,e) VALUES(1,2,3,4,5); 388250af6e0Sdrh INSERT INTO t1(a,b,c,d,e) VALUES(1,NULL,93,4,5) 389250af6e0Sdrh ON CONFLICT(c) DO UPDATE SET b='c' 390250af6e0Sdrh ON CONFLICT(d) DO UPDATE SET b='d' 391250af6e0Sdrh ON CONFLICT DO NOTHING; 392250af6e0Sdrh SELECT a,b,c,d,e FROM t1; 393250af6e0Sdrh } {1 d 3 4 5} 394250af6e0Sdrh 39558b18a47Sdrh} 39658b18a47Sdrh 397*93eb9064Sdan#-------------------------------------------------------------------------- 398*93eb9064Sdanreset_db 399*93eb9064Sdando_execsql_test 2.0 { 400*93eb9064Sdan CREATE TABLE t2(a, b, c REAL, d, e, PRIMARY KEY(a,b)) WITHOUT ROWID; 401*93eb9064Sdan CREATE UNIQUE INDEX t2c ON t2(c); 402*93eb9064Sdan} 403*93eb9064Sdan 404*93eb9064Sdando_catchsql_test 2.1 { 405*93eb9064Sdan INSERT INTO t2(a,b,c,e,d) VALUES(1,2,3,4,5) 406*93eb9064Sdan ON CONFLICT(c) DO UPDATE SET b='' 407*93eb9064Sdan ON CONFLICT((SELECT t2 FROM nosuchtable)) DO NOTHING; 408*93eb9064Sdan 409*93eb9064Sdan} {1 {no such table: nosuchtable}} 410*93eb9064Sdan 41158b18a47Sdrhfinish_test 412