diff options
author | dan <Dan Kennedy> | 2025-03-24 11:13:18 +0000 |
---|---|---|
committer | dan <Dan Kennedy> | 2025-03-24 11:13:18 +0000 |
commit | 1b906dd920ba2fb12fe686782313fa1c40231c36 (patch) | |
tree | 8cc1780361c282d3754b795e04e44be8afa1c12f /ext/session | |
parent | 49a015092e0cef820ec0d94d571726c8d939449d (diff) | |
download | sqlite-1b906dd920ba2fb12fe686782313fa1c40231c36.tar.gz sqlite-1b906dd920ba2fb12fe686782313fa1c40231c36.zip |
Add test cases to session1.test.
FossilOrigin-Name: dda9d7cf319e74de7703bda1eb77e3e7aa7459d6fa1508cc1d62cdfc7985c368
Diffstat (limited to 'ext/session')
-rw-r--r-- | ext/session/session1.test | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/ext/session/session1.test b/ext/session/session1.test index 6da905179..3262c9bc4 100644 --- a/ext/session/session1.test +++ b/ext/session/session1.test @@ -684,6 +684,74 @@ do_test $tn.14.4 { list [catch {sqlite3session_config invalid 123} msg] $msg } {1 SQLITE_MISUSE} +#------------------------------------------------------------------------- +reset_db + +do_execsql_test $tn.15.0 { + CREATE TABLE records( + idx INTEGER PRIMARY KEY AUTOINCREMENT, + tbl TEXT NOT NULL, + pk TEXT NOT NULL, + value TEXT, + UNIQUE(tbl, pk) + ); + + CREATE TABLE changes( + idx INTEGER PRIMARY KEY AUTOINCREMENT, + tbl TEXT NOT NULL, + pk TEXT NOT NULL, + op TEXT DEFAULT ('='), + path TEXT DEFAULT ('$'), + value TEXT, + UNIQUE(tbl, pk) + ); + + CREATE TRIGGER changes_after_insert + AFTER INSERT ON changes + FOR EACH ROW + BEGIN + INSERT INTO records(tbl, pk, value) + VALUES (NEW.tbl, NEW.pk, NEW.value) + ON CONFLICT(tbl, pk) DO UPDATE SET value = NEW.value; + END; + + CREATE VIEW data_view AS + SELECT *, '=' AS op, '$' AS path FROM records + WHERE tbl = 'data'; + + CREATE TRIGGER data_insert + INSTEAD OF INSERT ON data_view + BEGIN + INSERT INTO changes(tbl, pk, op, path, value) + VALUES (NEW.tbl, NEW.pk, NEW.op, NEW.path, NEW.value); + END; + + CREATE TRIGGER data_update + INSTEAD OF UPDATE ON data_view + BEGIN + INSERT INTO changes(tbl, pk, op, path, value) + VALUES (NEW.tbl, NEW.pk, NEW.op, NEW.path, NEW.value); + END; + + CREATE TRIGGER data_delete + INSTEAD OF DELETE ON data_view + BEGIN + INSERT INTO changes(tbl, pk, op, path, value) + VALUES (NEW.tbl, NEW.pk, NEW.op, NEW.path, NEW.value); + END; +} + +do_iterator_test $tn.15.1 * { + INSERT INTO data_view (tbl, pk, value) VALUES + ('data', '1', 'First'), + ('data', '2', 'Second'); +} { + {INSERT changes 1 X..... {} {i 1 t data t 1 n {} n {} t First}} + {INSERT changes 1 X..... {} {i 2 t data t 2 n {} n {} t Second}} + {INSERT records 1 X... {} {i 1 t data t 1 t First}} + {INSERT records 1 X... {} {i 2 t data t 2 t Second}} +} + }] } |