OLD | NEW |
(Empty) | |
| 1 # 2015 July 25 |
| 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 # Test that an RBU data_xxx table may be a view instead of a regular |
| 13 # table. |
| 14 # |
| 15 |
| 16 if {![info exists testdir]} { |
| 17 set testdir [file join [file dirname [info script]] .. .. test] |
| 18 } |
| 19 source $testdir/tester.tcl |
| 20 source $testdir/lock_common.tcl |
| 21 set ::testprefix rbu14 |
| 22 |
| 23 |
| 24 foreach {tn schema} { |
| 25 1 { |
| 26 CREATE TABLE t1(a PRIMARY KEY, b, c); |
| 27 CREATE TABLE t2(a PRIMARY KEY, b, c); |
| 28 } |
| 29 2 { |
| 30 CREATE TABLE t1(a PRIMARY KEY, b, c); |
| 31 CREATE TABLE t2(a PRIMARY KEY, b, c); |
| 32 CREATE INDEX i1 ON t1(b, c); |
| 33 CREATE INDEX i2 ON t2(b, c); |
| 34 } |
| 35 3 { |
| 36 CREATE TABLE t1(a PRIMARY KEY, b, c) WITHOUT ROWID; |
| 37 CREATE TABLE t2(a PRIMARY KEY, b, c) WITHOUT ROWID; |
| 38 } |
| 39 4 { |
| 40 CREATE TABLE t1(a PRIMARY KEY, b, c) WITHOUT ROWID; |
| 41 CREATE TABLE t2(a PRIMARY KEY, b, c) WITHOUT ROWID; |
| 42 CREATE INDEX i1 ON t1(b, c); |
| 43 CREATE INDEX i2 ON t2(b, c); |
| 44 } |
| 45 } { |
| 46 reset_db |
| 47 |
| 48 execsql $schema |
| 49 execsql { |
| 50 INSERT INTO t1 VALUES(50, 50, 50); |
| 51 INSERT INTO t1 VALUES(51, 51, 51); |
| 52 INSERT INTO t2 VALUES(50, 50, 50); |
| 53 INSERT INTO t2 VALUES(51, 51, 51); |
| 54 } |
| 55 |
| 56 forcedelete rbu.db |
| 57 do_execsql_test $tn.1 { |
| 58 ATTACH 'rbu.db' AS rbu; |
| 59 CREATE TABLE rbu.stuff(tbl, a, b, c, rbu_control); |
| 60 INSERT INTO stuff VALUES |
| 61 ('t1', 1, 2, 3, 0), -- insert into t1 |
| 62 ('t2', 4, 5, 6, 0), -- insert into t2 |
| 63 ('t1', 50, NULL, NULL, 1), -- delete from t1 |
| 64 ('t2', 51, NULL, NULL, 1); -- delete from t2 |
| 65 |
| 66 CREATE VIEW rbu.data_t1 AS |
| 67 SELECT a, b, c, rbu_control FROM stuff WHERE tbl='t1'; |
| 68 CREATE VIEW rbu.data_t2 AS |
| 69 SELECT a, b, c, rbu_control FROM stuff WHERE tbl='t2'; |
| 70 } |
| 71 |
| 72 do_test $tn.2 { |
| 73 while 1 { |
| 74 sqlite3rbu rbu test.db rbu.db |
| 75 set rc [rbu step] |
| 76 rbu close |
| 77 if {$rc != "SQLITE_OK"} break |
| 78 } |
| 79 set rc |
| 80 } {SQLITE_DONE} |
| 81 |
| 82 do_execsql_test $tn.3.1 { |
| 83 SELECT * FROM t1 ORDER BY a; |
| 84 } {1 2 3 51 51 51} |
| 85 |
| 86 do_execsql_test $tn.3.2 { |
| 87 SELECT * FROM t2 ORDER BY a; |
| 88 } {4 5 6 50 50 50} |
| 89 |
| 90 integrity_check $tn.4 |
| 91 } |
| 92 |
| 93 |
| 94 finish_test |
| 95 |
OLD | NEW |