123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- # 2015 July 25
- #
- # 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 that an RBU data_xxx table may be a view instead of a regular
- # table.
- #
- source [file join [file dirname [info script]] rbu_common.tcl]
- if_no_rbu_support { finish_test ; return }
- source $testdir/lock_common.tcl
- set ::testprefix rbu14
- foreach {tn schema} {
- 1 {
- CREATE TABLE t1(a PRIMARY KEY, b, c);
- CREATE TABLE t2(a PRIMARY KEY, b, c);
- }
- 2 {
- CREATE TABLE t1(a PRIMARY KEY, b, c);
- CREATE TABLE t2(a PRIMARY KEY, b, c);
- CREATE INDEX i1 ON t1(b, c);
- CREATE INDEX i2 ON t2(b, c);
- }
- 3 {
- CREATE TABLE t1(a PRIMARY KEY, b, c) WITHOUT ROWID;
- CREATE TABLE t2(a PRIMARY KEY, b, c) WITHOUT ROWID;
- }
- 4 {
- CREATE TABLE t1(a PRIMARY KEY, b, c) WITHOUT ROWID;
- CREATE TABLE t2(a PRIMARY KEY, b, c) WITHOUT ROWID;
- CREATE INDEX i1 ON t1(b, c);
- CREATE INDEX i2 ON t2(b, c);
- }
- } {
- reset_db
- execsql $schema
- execsql {
- INSERT INTO t1 VALUES(50, 50, 50);
- INSERT INTO t1 VALUES(51, 51, 51);
- INSERT INTO t2 VALUES(50, 50, 50);
- INSERT INTO t2 VALUES(51, 51, 51);
- }
- forcedelete rbu.db
- do_execsql_test $tn.1 {
- ATTACH 'rbu.db' AS rbu;
- CREATE TABLE rbu.stuff(tbl, a, b, c, rbu_control);
- INSERT INTO stuff VALUES
- ('t1', 1, 2, 3, 0), -- insert into t1
- ('t2', 4, 5, 6, 0), -- insert into t2
- ('t1', 50, NULL, NULL, 1), -- delete from t1
- ('t2', 51, NULL, NULL, 1); -- delete from t2
- CREATE VIEW rbu.data_t1 AS
- SELECT a, b, c, rbu_control FROM stuff WHERE tbl='t1';
- CREATE VIEW rbu.data_t2 AS
- SELECT a, b, c, rbu_control FROM stuff WHERE tbl='t2';
- }
- do_test $tn.2 {
- while 1 {
- sqlite3rbu rbu test.db rbu.db
- set rc [rbu step]
- rbu close
- if {$rc != "SQLITE_OK"} break
- }
- set rc
- } {SQLITE_DONE}
- do_execsql_test $tn.3.1 {
- SELECT * FROM t1 ORDER BY a;
- } {1 2 3 51 51 51}
- do_execsql_test $tn.3.2 {
- SELECT * FROM t2 ORDER BY a;
- } {4 5 6 50 50 50}
- integrity_check $tn.4
- }
- finish_test
|