1# 2018 April 28 2# 3# The author disclaims copyright to this source code. In place of 4# a legal notice, here is a blessing: 5# 6# May you do good and not evil. 7# May you find forgiveness for yourself and forgive others. 8# May you share freely, never taking more than you give. 9# 10#*********************************************************************** 11# 12# 13 14source [file join [file dirname [info script]] rbu_common.tcl] 15set ::testprefix rbusplit 16 17db close 18sqlite3_shutdown 19sqlite3_config_uri 1 20 21autoinstall_test_functions 22 23proc build_db {db} { 24 $db eval { 25 CREATE TABLE t1(a PRIMARY KEY, b, c); 26 CREATE TABLE t2(a PRIMARY KEY, b, c); 27 28 CREATE INDEX t1c ON t1(c); 29 } 30} 31 32proc build_rbu {filename} { 33 forcedelete $filename 34 sqlite3 dbRbu $filename 35 dbRbu eval { 36 CREATE TABLE data0_t1(a, b, c, rbu_control); 37 CREATE TABLE data1_t1(a, b, c, rbu_control); 38 CREATE TABLE data2_t1(a, b, c, rbu_control); 39 CREATE TABLE data3_t1(a, b, c, rbu_control); 40 41 CREATE TABLE data_t2(a, b, c, rbu_control); 42 43 INSERT INTO data0_t1 VALUES(1, 1, 1, 0); 44 INSERT INTO data0_t1 VALUES(2, 2, 2, 0); 45 INSERT INTO data0_t1 VALUES(3, 3, 3, 0); 46 INSERT INTO data0_t1 VALUES(4, 4, 4, 0); 47 INSERT INTO data1_t1 VALUES(5, 5, 5, 0); 48 INSERT INTO data1_t1 VALUES(6, 6, 6, 0); 49 INSERT INTO data1_t1 VALUES(7, 7, 7, 0); 50 INSERT INTO data1_t1 VALUES(8, 8, 8, 0); 51 INSERT INTO data3_t1 VALUES(9, 9, 9, 0); 52 53 INSERT INTO data_t2 VALUES(1, 1, 1, 0); 54 INSERT INTO data_t2 VALUES(2, 2, 2, 0); 55 INSERT INTO data_t2 VALUES(3, 3, 3, 0); 56 INSERT INTO data_t2 VALUES(4, 4, 4, 0); 57 INSERT INTO data_t2 VALUES(5, 5, 5, 0); 58 INSERT INTO data_t2 VALUES(6, 6, 6, 0); 59 INSERT INTO data_t2 VALUES(7, 7, 7, 0); 60 INSERT INTO data_t2 VALUES(8, 8, 8, 0); 61 INSERT INTO data_t2 VALUES(9, 9, 9, 0); 62 } 63 64 dbRbu close 65} 66 67foreach {tn cmd} { 68 1 run_rbu 69 2 step_rbu 70} { 71 reset_db 72 build_db db 73 build_rbu testrbu.db 74 75 do_test 1.$tn.1 { 76 $cmd test.db testrbu.db 77 } {SQLITE_DONE} 78 do_execsql_test 1.$tn.1 { 79 SELECT * FROM t1; 80 } { 81 1 1 1 2 2 2 3 3 3 4 4 4 82 5 5 5 6 6 6 7 7 7 8 8 8 83 9 9 9 84 } 85 do_execsql_test 1.$tn.2 { 86 SELECT * FROM t2; 87 } { 88 1 1 1 2 2 2 3 3 3 4 4 4 89 5 5 5 6 6 6 7 7 7 8 8 8 90 9 9 9 91 } 92} 93 94finish_test 95