# 2014 November 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. # #*********************************************************************** # # Test the rbu_delta() feature. # if {![info exists testdir]} { set testdir [file join [file dirname [info script]] .. .. test] } source $testdir/tester.tcl set ::testprefix rbu8 do_execsql_test 1.0 { CREATE TABLE t1(x, y PRIMARY KEY, z); INSERT INTO t1 VALUES(NULL, 1, 'one'); INSERT INTO t1 VALUES(NULL, 2, 'two'); INSERT INTO t1 VALUES(NULL, 3, 'three'); CREATE INDEX i1z ON t1(z, x); } do_test 1.1 { forcedelete rbu.db sqlite3 db2 rbu.db db2 eval { CREATE TABLE data_t1(x, y, z, rbu_control); INSERT INTO data_t1 VALUES('a', 1, '_i' , 'x.d'); INSERT INTO data_t1 VALUES('b', 2, 2 , '..x'); INSERT INTO data_t1 VALUES('_iii', 3, '-III' , 'd.d'); } db2 close } {} do_test 1.2.1 { sqlite3rbu rbu test.db rbu.db rbu step } {SQLITE_ERROR} do_test 1.2.2 { list [catch {rbu close} msg] $msg } {1 {SQLITE_ERROR - no such function: rbu_delta}} proc rbu_delta {orig new} { return "${orig}${new}" } do_test 1.3.1 { while 1 { sqlite3rbu rbu test.db rbu.db rbu create_rbu_delta set rc [rbu step] if {$rc != "SQLITE_OK"} break rbu close } rbu close } {SQLITE_DONE} do_execsql_test 1.3.2 { SELECT * FROM t1 } { a 1 one_i {} 2 2 _iii 3 three-III } integrity_check 1.3.3 finish_test