Annotation of embedaddon/sqlite3/test/fkey1.test, revision 1.1.1.1

1.1       misho       1: # 2001 September 15
                      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.
                     12: #
                     13: # This file implements tests for foreign keys.
                     14: #
                     15: 
                     16: set testdir [file dirname $argv0]
                     17: source $testdir/tester.tcl
                     18: 
                     19: ifcapable {!foreignkey} {
                     20:   finish_test
                     21:   return
                     22: }
                     23: 
                     24: # Create a table and some data to work with.
                     25: #
                     26: do_test fkey1-1.0 {
                     27:   execsql {
                     28:     CREATE TABLE t1(
                     29:       a INTEGER PRIMARY KEY,
                     30:       b INTEGER
                     31:            REFERENCES t1 ON DELETE CASCADE
                     32:            REFERENCES t2,
                     33:       c TEXT,
                     34:       FOREIGN KEY (b,c) REFERENCES t2(x,y) ON UPDATE CASCADE
                     35:     );
                     36:   }
                     37: } {}
                     38: do_test fkey1-1.1 {
                     39:   execsql {
                     40:     CREATE TABLE t2(
                     41:       x INTEGER PRIMARY KEY,
                     42:       y TEXT
                     43:     );
                     44:   }
                     45: } {}
                     46: do_test fkey1-1.2 {
                     47:   execsql {
                     48:     CREATE TABLE t3(
                     49:       a INTEGER REFERENCES t2,
                     50:       b INTEGER REFERENCES t1,
                     51:       FOREIGN KEY (a,b) REFERENCES t2(x,y)
                     52:     );
                     53:   }
                     54: } {}
                     55: 
                     56: do_test fkey1-2.1 {
                     57:   execsql {
                     58:     CREATE TABLE t4(a integer primary key);
                     59:     CREATE TABLE t5(x references t4);
                     60:     CREATE TABLE t6(x references t4);
                     61:     CREATE TABLE t7(x references t4);
                     62:     CREATE TABLE t8(x references t4);
                     63:     CREATE TABLE t9(x references t4);
                     64:     CREATE TABLE t10(x references t4);
                     65:     DROP TABLE t7;
                     66:     DROP TABLE t9;
                     67:     DROP TABLE t5;
                     68:     DROP TABLE t8;
                     69:     DROP TABLE t6;
                     70:     DROP TABLE t10;
                     71:   }
                     72: } {}
                     73: 
                     74: do_test fkey1-3.1 {
                     75:   execsql {
                     76:     CREATE TABLE t5(a PRIMARY KEY, b, c);
                     77:     CREATE TABLE t6(
                     78:       d REFERENCES t5,
                     79:       e REFERENCES t5(c)
                     80:     );
                     81:     PRAGMA foreign_key_list(t6);
                     82:   }
                     83: } [concat                                         \
                     84:   {0 0 t5 e c {NO ACTION} {NO ACTION} NONE}       \
                     85:   {1 0 t5 d {} {NO ACTION} {NO ACTION} NONE}      \
                     86: ]
                     87: do_test fkey1-3.2 {
                     88:   execsql {
                     89:     CREATE TABLE t7(d, e, f,
                     90:       FOREIGN KEY (d, e) REFERENCES t5(a, b)
                     91:     );
                     92:     PRAGMA foreign_key_list(t7);
                     93:   }
                     94: } [concat                                   \
                     95:   {0 0 t5 d a {NO ACTION} {NO ACTION} NONE} \
                     96:   {0 1 t5 e b {NO ACTION} {NO ACTION} NONE} \
                     97: ]
                     98: do_test fkey1-3.3 {
                     99:   execsql {
                    100:     CREATE TABLE t8(d, e, f,
                    101:       FOREIGN KEY (d, e) REFERENCES t5 ON DELETE CASCADE ON UPDATE SET NULL
                    102:     );
                    103:     PRAGMA foreign_key_list(t8);
                    104:   }
                    105: } [concat                        \
                    106:   {0 0 t5 d {} {SET NULL} CASCADE NONE} \
                    107:   {0 1 t5 e {} {SET NULL} CASCADE NONE} \
                    108: ]
                    109: do_test fkey1-3.4 {
                    110:   execsql {
                    111:     CREATE TABLE t9(d, e, f,
                    112:       FOREIGN KEY (d, e) REFERENCES t5 ON DELETE CASCADE ON UPDATE SET DEFAULT
                    113:     );
                    114:     PRAGMA foreign_key_list(t9);
                    115:   }
                    116: } [concat                        \
                    117:   {0 0 t5 d {} {SET DEFAULT} CASCADE NONE} \
                    118:   {0 1 t5 e {} {SET DEFAULT} CASCADE NONE} \
                    119: ]
                    120: 
                    121: finish_test

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