aboutsummaryrefslogtreecommitdiff
path: root/ext/session
diff options
context:
space:
mode:
authordan <Dan Kennedy>2024-04-22 20:09:17 +0000
committerdan <Dan Kennedy>2024-04-22 20:09:17 +0000
commit46435a04fd295e325f7d25839abd85be49d1d6d2 (patch)
treef483a2e517c8ace37e380febb780ff7bf2c13755 /ext/session
parent5d8daf184d94e86695f45ea8b8b37e9517f7b000 (diff)
downloadsqlite-46435a04fd295e325f7d25839abd85be49d1d6d2.tar.gz
sqlite-46435a04fd295e325f7d25839abd85be49d1d6d2.zip
Add extra tests for aborting conflicts in the sessions module.
FossilOrigin-Name: b4a6d32662acacb7767cfb9b8e040e6eb1f99322cb7d0cd44e6265e9ac2fb2e8
Diffstat (limited to 'ext/session')
-rw-r--r--ext/session/sessionconflict.test75
1 files changed, 75 insertions, 0 deletions
diff --git a/ext/session/sessionconflict.test b/ext/session/sessionconflict.test
new file mode 100644
index 000000000..c842a8aac
--- /dev/null
+++ b/ext/session/sessionconflict.test
@@ -0,0 +1,75 @@
+# 2011 March 07
+#
+# 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.
+#
+#***********************************************************************
+# This file implements regression tests for SQLite library.
+#
+
+if {![info exists testdir]} {
+ set testdir [file join [file dirname [info script]] .. .. test]
+}
+source [file join [file dirname [info script]] session_common.tcl]
+source $testdir/tester.tcl
+ifcapable !session {finish_test; return}
+
+set testprefix sessionconflict
+
+sqlite3_shutdown
+test_sqlite3_log log
+proc log {code msg} { puts "LOG $code $msg" }
+sqlite3 db test.db
+
+forcedelete test.db2
+sqlite3 db2 test.db2
+
+do_test 1.0 {
+ do_common_sql {
+ CREATE TABLE t1(a PRIMARY KEY, b, c UNIQUE);
+ INSERT INTO t1 VALUES(1, 1, 1);
+ INSERT INTO t1 VALUES(2, 2, 2);
+ INSERT INTO t1 VALUES(3, 3, 3);
+ }
+} {}
+
+do_execsql_test -db db2 1.1 {
+ INSERT INTO t1 VALUES(6, 6, 6);
+}
+
+proc xConflict {args} {
+ return "ABORT"
+}
+
+
+do_test 1.2 {
+ set chng [changeset_from_sql {
+ UPDATE t1 SET b=10, c=10 WHERE a=1;
+ UPDATE t1 SET b=444 WHERE a=2;
+ INSERT INTO t1 VALUES(4, 4, 4);
+ INSERT INTO t1 VALUES(5, 5, 5);
+ INSERT INTO t1 VALUES(6, 6, 6);
+ }]
+
+ execsql BEGIN db2
+ set res [list [catch { sqlite3changeset_apply db2 $chng xConflict } msg] $msg]
+ execsql ROLLBACK db2
+ set res
+} {1 SQLITE_ABORT}
+
+do_execsql_test -db db2 1.3 {
+ SELECT * FROM t1;
+} {
+ 1 1 1
+ 2 2 2
+ 3 3 3
+ 6 6 6
+}
+
+
+
+finish_test