modernc.org/cc@v1.0.1/v2/testdata/_sqlite/ext/rbu/rbu7.test (about) 1 # 2014 October 21 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 # This file contains tests for the RBU module. 13 # 14 15 16 if {![info exists testdir]} { 17 set testdir [file join [file dirname [info script]] .. .. test] 18 } 19 source $testdir/tester.tcl 20 set ::testprefix rbu7 21 22 # Test index: 23 # 24 # 1.*: That affinities are correctly applied to values within the 25 # RBU database. 26 # 27 # 2.*: Tests for multi-column primary keys. 28 # 29 30 do_test 1.0 { 31 execsql { 32 CREATE TABLE t1(a INT PRIMARY KEY, b) WITHOUT ROWID; 33 INSERT INTO t1 VALUES(1, 'abc'); 34 INSERT INTO t1 VALUES(2, 'def'); 35 } 36 37 forcedelete rbu.db 38 sqlite3 rbu rbu.db 39 rbu eval { 40 CREATE TABLE data_t1(a, b, rbu_control); 41 INSERT INTO data_t1 VALUES('1', NULL, 1); 42 } 43 rbu close 44 } {} 45 46 do_test 1.1 { 47 sqlite3rbu rbu test.db rbu.db 48 while { [rbu step]=="SQLITE_OK" } {} 49 rbu close 50 } {SQLITE_DONE} 51 52 sqlite3 db test.db 53 do_execsql_test 1.2 { 54 SELECT * FROM t1 55 } {2 def} 56 57 #------------------------------------------------------------------------- 58 # 59 foreach {tn tbl} { 60 1 { CREATE TABLE t1(a, b, c, PRIMARY KEY(a, b)) WITHOUT ROWID } 61 2 { CREATE TABLE t1(a, b, c, PRIMARY KEY(a, b)) } 62 } { 63 reset_db 64 65 execsql $tbl 66 do_execsql_test 2.$tn.1 { 67 CREATE INDEX t1c ON t1(c); 68 INSERT INTO t1 VALUES(1, 1, 'a'); 69 INSERT INTO t1 VALUES(1, 2, 'b'); 70 INSERT INTO t1 VALUES(2, 1, 'c'); 71 INSERT INTO t1 VALUES(2, 2, 'd'); 72 } 73 74 do_test 2.$tn.2 { 75 forcedelete rbu.db 76 sqlite3 rbu rbu.db 77 execsql { 78 CREATE TABLE data_t1(a, b, c, rbu_control); 79 INSERT INTO data_t1 VALUES(3, 1, 'e', 0); 80 INSERT INTO data_t1 VALUES(3, 2, 'f', 0); 81 INSERT INTO data_t1 VALUES(1, 2, NULL, 1); 82 INSERT INTO data_t1 VALUES(2, 1, 'X', '..x'); 83 } rbu 84 rbu close 85 } {} 86 87 do_test 2.$tn.3 { 88 set rc "SQLITE_OK" 89 while {$rc == "SQLITE_OK"} { 90 sqlite3rbu rbu test.db rbu.db 91 rbu step 92 set rc [rbu close] 93 } 94 set rc 95 } {SQLITE_DONE} 96 97 do_execsql_test 2.$tn.1 { 98 SELECT * FROM t1 ORDER BY a, b 99 } { 100 1 1 a 101 2 1 X 102 2 2 d 103 3 1 e 104 3 2 f 105 } 106 } 107 108 finish_test 109 110