| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|
|
| 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} |
| ifcapable !incrblob {finish_test; return} |
|
|
| set testprefix session6 |
|
|
| proc do_then_apply_tcl {tcl {dbname main}} { |
| proc xConflict args { return "OMIT" } |
| set rc [catch { |
| sqlite3session S db $dbname |
| db eval "SELECT name FROM $dbname.sqlite_master WHERE type = 'table'" { |
| S attach $name |
| } |
| eval $tcl |
| sqlite3changeset_apply db2 [S changeset] xConflict |
| } msg] |
|
|
| catch { S delete } |
| if {$rc} {error $msg} |
| } |
|
|
| test_sqlite3_log x |
| proc x {args} {puts $args} |
|
|
| forcedelete test.db2 |
| sqlite3 db2 test.db2 |
|
|
| do_common_sql { |
| CREATE TABLE t1(a PRIMARY KEY, b); |
| CREATE TABLE t2(c PRIMARY KEY, d); |
| } |
|
|
| |
| |
| do_test 1.1 { |
| do_then_apply_tcl { |
| db eval { INSERT INTO t1 VALUES(1, 'helloworld') } |
| db eval { INSERT INTO t2 VALUES(2, 'onetwothree') } |
| } |
| compare_db db db2 |
| } {} |
| do_test 1.2 { |
| do_then_apply_tcl { |
| set fd [db incrblob t1 b 1] |
| puts -nonewline $fd 1234567890 |
| close $fd |
| } |
| compare_db db db2 |
| } {} |
|
|
| |
| |
| do_test 2.1 { |
| forcedelete test.db3 |
| file copy test.db2 test.db3 |
| execsql { ATTACH 'test.db3' AS aux; } |
|
|
| do_then_apply_tcl { |
| set fd [db incrblob aux t2 d 1] |
| puts -nonewline $fd fourfivesix |
| close $fd |
| } aux |
|
|
| sqlite3 db3 test.db3 |
| compare_db db2 db3 |
| } {} |
|
|
|
|
| db3 close |
| db2 close |
|
|
| finish_test |
|
|