123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- # 2023 October 20
- #
- # 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 sessionnoact
- do_execsql_test 1.0 {
- CREATE TABLE p1(a INTEGER PRIMARY KEY, b, c UNIQUE);
- INSERT INTO p1 VALUES(1, 1, 'one');
- INSERT INTO p1 VALUES(2, 2, 'two');
- INSERT INTO p1 VALUES(3, 3, 'three');
- INSERT INTO p1 VALUES(4, 4, 'four');
- }
- db_save
- set C [changeset_from_sql {
- DELETE FROM p1 WHERE a=2;
- UPDATE p1 SET c='six' WHERE a=3;
- INSERT INTO p1 VALUES(5, 5, 'two');
- INSERT INTO p1 VALUES(6, 6, 'three');
- }]
- db_restore_and_reopen
- do_execsql_test 1.1 {
- CREATE TABLE c1(x INTEGER PRIMARY KEY, y,
- FOREIGN KEY(y) REFERENCES p1(c) ON DELETE CASCADE ON UPDATE SET NULL
- );
- INSERT INTO c1 VALUES(10, 'one');
- INSERT INTO c1 VALUES(20, 'two');
- INSERT INTO c1 VALUES(30, 'three');
- INSERT INTO c1 VALUES(40, 'four');
- }
- db_save
- do_execsql_test 1.2 {
- PRAGMA foreign_keys = 1;
- }
- set ::nConflict 0
- proc conflict {args} {
- incr ::nConflict
- return "OMIT"
- }
- sqlite3changeset_apply_v2 db $C conflict
- do_execsql_test 1.3 {
- SELECT * FROM c1
- } {
- 10 one
- 30 {}
- 40 four
- }
- db_restore_and_reopen
- do_execsql_test 1.4 {
- PRAGMA foreign_keys = 1;
- }
- do_execsql_test 1.5 {
- UPDATE p1 SET c=12345 WHERE a = 45;
- }
- breakpoint
- sqlite3changeset_apply_v2 -noaction db $C conflict
- do_execsql_test 1.6 {
- SELECT * FROM c1
- } {
- 10 one
- 20 two
- 30 three
- 40 four
- }
- do_execsql_test 1.7 {
- PRAGMA foreign_keys = 1;
- UPDATE p1 SET c = 'ten' WHERE c='two';
- SELECT * FROM c1;
- } {
- 10 one
- 20 {}
- 30 three
- 40 four
- }
- do_execsql_test 1.8 {
- PRAGMA foreign_key_check
- }
- finish_test
|