Annotation of embedaddon/sqlite3/test/schema4.test, revision 1.1.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>