Annotation of embedaddon/sqlite3/test/schema4.test, revision 1.1

1.1     ! misho       1: # 2010 September 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: # This file implements regression tests for SQLite library. The
        !            12: # focus of this file is testing that a trigger may have the same
        !            13: # name as an index, view or table in the same database.
        !            14: #
        !            15: 
        !            16: set testdir [file dirname $argv0]
        !            17: source $testdir/tester.tcl
        !            18: 
        !            19: #--------------------------------------------------------------------------
        !            20: # Test organization:
        !            21: #
        !            22: #   schema4-1.*: Dropping and creating triggers and other objects where
        !            23: #     triggers and at least on other object share a name.
        !            24: #
        !            25: #   schema4-2.*: Renaming tables where there is a trigger that shares the
        !            26: #     name of the table or one of its indices.
        !            27: #
        !            28: 
        !            29: do_execsql_test schema4-1.1 {
        !            30:   CREATE TABLE log(x, a, b);
        !            31:   CREATE TABLE tbl(a, b);
        !            32: 
        !            33:   CREATE TABLE t1(a, b);
        !            34:   CREATE VIEW v1 AS SELECT * FROM tbl;
        !            35:   CREATE INDEX i1 ON tbl(a);
        !            36: } {}
        !            37: 
        !            38: do_execsql_test schema4-1.2 {
        !            39:   CREATE TRIGGER t1 AFTER INSERT ON tbl BEGIN
        !            40:     INSERT INTO log VALUES('after insert', new.a, new.b);
        !            41:   END;
        !            42:   CREATE TRIGGER v1 AFTER UPDATE ON tbl BEGIN
        !            43:     INSERT INTO log VALUES('after update', new.a, new.b);
        !            44:   END;
        !            45:   CREATE TRIGGER i1 AFTER DELETE ON tbl BEGIN
        !            46:     INSERT INTO log VALUES('after delete', old.a, old.b);
        !            47:   END;
        !            48: } {}
        !            49: 
        !            50: do_execsql_test schema4-1.3 {
        !            51:   INSERT INTO tbl VALUES(1, 2);
        !            52:   UPDATE tbl SET b=a+b, a=a+1;
        !            53:   DELETE FROM tbl;
        !            54: 
        !            55:   SELECT x, a, b FROM log;
        !            56: } {{after insert} 1 2 {after update} 2 3 {after delete} 2 3}
        !            57: 
        !            58: do_execsql_test schema4-1.4 {
        !            59:   DELETE FROM log;
        !            60: 
        !            61:   DROP INDEX i1;
        !            62:   DROP TABLE t1;
        !            63:   DROP VIEW v1;
        !            64: 
        !            65:   INSERT INTO tbl VALUES(1, 2);
        !            66:   UPDATE tbl SET b=a+b, a=a+1;
        !            67:   DELETE FROM tbl;
        !            68: 
        !            69:   SELECT x, a, b FROM log;
        !            70: } {{after insert} 1 2 {after update} 2 3 {after delete} 2 3}
        !            71: 
        !            72: db close
        !            73: sqlite3 db test.db
        !            74: 
        !            75: do_execsql_test schema4-1.5 {
        !            76:   DELETE FROM log;
        !            77:   INSERT INTO tbl VALUES(1, 2);
        !            78:   UPDATE tbl SET b=a+b, a=a+1;
        !            79:   DELETE FROM tbl;
        !            80:   SELECT x, a, b FROM log;
        !            81: } {{after insert} 1 2 {after update} 2 3 {after delete} 2 3}
        !            82: 
        !            83: do_execsql_test schema4-1.6 {
        !            84:   CREATE TABLE t1(a, b);
        !            85:   CREATE VIEW v1 AS SELECT * FROM tbl;
        !            86:   CREATE INDEX i1 ON tbl(a);
        !            87: } {}
        !            88: 
        !            89: ifcapable fts3 {
        !            90:   do_execsql_test schema4-1.7 {
        !            91:     DROP TABLE t1;
        !            92:     CREATE VIRTUAL TABLE t1 USING fts3;
        !            93:   } {}
        !            94: 
        !            95:   do_execsql_test schema4-1.8 {
        !            96:     DELETE FROM log;
        !            97:     DROP TABLE t1;
        !            98:     INSERT INTO tbl VALUES(1, 2);
        !            99:     UPDATE tbl SET b=a+b, a=a+1;
        !           100:     DELETE FROM tbl;
        !           101:     SELECT x, a, b FROM log;
        !           102:   } {{after insert} 1 2 {after update} 2 3 {after delete} 2 3}
        !           103: }
        !           104: 
        !           105: ifcapable altertable {
        !           106:   drop_all_tables
        !           107:   do_execsql_test schema4-2.1 {
        !           108:     CREATE TABLE log(x, a, b);
        !           109:     CREATE TABLE tbl(a, b);
        !           110:   
        !           111:     CREATE TABLE t1(a, b);
        !           112:     CREATE INDEX i1 ON t1(a, b);
        !           113:   } {}
        !           114:   
        !           115:   do_execsql_test schema4-2.2 {
        !           116:     CREATE TRIGGER t1 AFTER INSERT ON tbl BEGIN
        !           117:       INSERT INTO log VALUES('after insert', new.a, new.b);
        !           118:     END;
        !           119:     CREATE TRIGGER i1 AFTER DELETE ON tbl BEGIN
        !           120:       INSERT INTO log VALUES('after delete', old.a, old.b);
        !           121:     END;
        !           122:   } {}
        !           123: 
        !           124:   do_execsql_test schema4-2.3 { ALTER TABLE t1 RENAME TO t2 } {}
        !           125: 
        !           126:   do_execsql_test schema4-2.4        !           127:     INSERT INTO tbl VALUES('a', 'b');
        !           128:     DELETE FROM tbl;
        !           129:     SELECT * FROM log;
        !           130:   } {{after insert} a b {after delete} a b}
        !           131: 
        !           132:   db close
        !           133:   sqlite3 db test.db
        !           134: 
        !           135:   do_execsql_test schema4-2.5        !           136:     DELETE FROM log;
        !           137:     INSERT INTO tbl VALUES('c', 'd');
        !           138:     DELETE FROM tbl;
        !           139:     SELECT * FROM log;
        !           140:   } {{after insert} c d {after delete} c d}
        !           141: 
        !           142:   do_execsql_test schema4-2.6 {
        !           143:     CREATE TEMP TRIGGER x1 AFTER UPDATE ON tbl BEGIN
        !           144:       INSERT INTO log VALUES('after update', new.a, new.b);
        !           145:     END;
        !           146: 
        !           147:     CREATE TEMP TABLE x1(x);
        !           148:     INSERT INTO x1 VALUES(123);
        !           149:   } {}
        !           150: 
        !           151:   do_execsql_test schema4-2.8 {
        !           152:     select sql from sqlite_temp_master WHERE type='table';
        !           153:   } {{CREATE TABLE x1(x)}}
        !           154: 
        !           155:   do_execsql_test schema4-2.7 { ALTER TABLE tbl RENAME TO tbl2 } {}
        !           156: 
        !           157:   do_execsql_test schema4-2.9 {
        !           158:     select sql from sqlite_temp_master WHERE type='table';
        !           159:   } {{CREATE TABLE x1(x)}}
        !           160: 
        !           161:   do_execsql_test schema4-2.10 { 
        !           162:     DELETE FROM log;
        !           163:     INSERT INTO tbl2 VALUES('e', 'f');
        !           164:     UPDATE tbl2 SET a='g', b='h';
        !           165:     DELETE FROM tbl2;
        !           166:     SELECT * FROM log;
        !           167:   } {{after insert} e f {after update} g h {after delete} g h}
        !           168: 
        !           169:   do_execsql_test schema4-2.11 {
        !           170:     INSERT INTO x1 VALUES(456);
        !           171:     SELECT * FROM x1
        !           172:   } {123 456}
        !           173: }
        !           174: 
        !           175: finish_test

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>