diff options
author | dan <Dan Kennedy> | 2024-04-22 20:09:17 +0000 |
---|---|---|
committer | dan <Dan Kennedy> | 2024-04-22 20:09:17 +0000 |
commit | 46435a04fd295e325f7d25839abd85be49d1d6d2 (patch) | |
tree | f483a2e517c8ace37e380febb780ff7bf2c13755 /ext/session | |
parent | 5d8daf184d94e86695f45ea8b8b37e9517f7b000 (diff) | |
download | sqlite-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.test | 75 |
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 |