From 8dd1cf11eb9fa5c5af7394e517a26bd56e6ab491 Mon Sep 17 00:00:00 2001 From: PThorpe92 Date: Tue, 16 Sep 2025 16:15:38 -0400 Subject: [PATCH] Add some more specific tests for upsert --- testing/upsert.test | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/testing/upsert.test b/testing/upsert.test index 11effbd0a..cab46cc1b 100644 --- a/testing/upsert.test +++ b/testing/upsert.test @@ -305,7 +305,30 @@ do_execsql_test_on_specific_db {:memory:} upsert-omitted-target-updates-unique { SELECT * FROM ou; } {3|y} -# Target qualified with database.table.column should match too (assuming single db). +do_execsql_test_on_specific_db {:memory:} upsert-current-qualified.1 { + CREATE TABLE dq (a INTEGER UNIQUE, b TEXT); + INSERT INTO dq VALUES (1,'old'); + INSERT INTO dq VALUES (1,'new') + ON CONFLICT(dq.a) DO UPDATE SET b = dq.b || '-' || excluded.b; + SELECT * FROM dq; +} {1|old-new} + +do_execsql_test_on_specific_db {:memory:} upsert-multicol-set.1 { + CREATE TABLE dq (a INTEGER UNIQUE, b TEXT); + INSERT INTO dq VALUES (1,'old'); + INSERT INTO dq VALUES (1,'new') + ON CONFLICT(a) DO UPDATE SET (`a`,`b`) = (`excluded`.`a`, `excluded`.`b`); + SELECT * FROM dq; +} {1|new} + +do_execsql_test_on_specific_db {:memory:} upsert-where-predicate.1 { + CREATE TABLE dq (a INTEGER UNIQUE, b TEXT); + INSERT INTO dq VALUES (1,'old'); + INSERT INTO dq VALUES (1,'old') + ON CONFLICT(a) DO UPDATE SET b = excluded.b WHERE dq.b != excluded.b; + SELECT * FROM dq; +} {1|old} + do_execsql_test_on_specific_db {:memory:} upsert-doubly-qualified-target { CREATE TABLE dq (a UNIQUE, b); INSERT INTO dq VALUES (1,'old');