Home | History | Annotate | Download | only in test
      1 # 2008 July 4
      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 # Specifically, it tests that bug #3201 has been fixed.
     13 #
     14 # $Id: tkt3201.test,v 1.3 2008/07/12 14:52:21 drh Exp $
     15 
     16 set testdir [file dirname $argv0]
     17 source $testdir/tester.tcl
     18 
     19 do_test tkt3201-1 {
     20   execsql {
     21     CREATE TABLE t1(a INTEGER PRIMARY KEY, b TEXT);
     22     INSERT INTO t1 VALUES(1, 'one');
     23     INSERT INTO t1 VALUES(2, 'two');
     24   }
     25 } {}
     26 
     27 do_test tkt3201-2 {
     28   execsql {
     29     SELECT l.a, r.a FROM t1 AS l, t1 AS r WHERE l.a < r.a;
     30   }
     31 } {1 2}
     32 
     33 do_test tkt3201-3 {
     34   execsql {
     35     CREATE TABLE t2(a INTEGER PRIMARY KEY, b TEXT);
     36     INSERT INTO t2 VALUES(2, 'two');
     37   }
     38   execsql {
     39     SELECT l.a, r.a FROM t1 AS l, t2 AS r WHERE l.a < r.a;
     40   }
     41 } {1 2}
     42 
     43 do_test tkt3201-4 {
     44   execsql {
     45     DELETE FROM t1 WHERE a = 2;
     46   }
     47   execsql {
     48     SELECT l.a, r.a FROM t1 AS l, t2 AS r WHERE l.a < r.a;
     49   }
     50 } {1 2}
     51 
     52 do_test tkt3201-5 {
     53   execsql {
     54     DELETE FROM t1 WHERE a = 2;
     55   }
     56   execsql {
     57     SELECT t1.a, t1.b, t2.a, t2.b FROM t1, t2;
     58   }
     59 } {1 one 2 two}
     60 
     61 do_test tkt3201-6 {
     62   execsql {
     63     CREATE TABLE t3(c INTEGER PRIMARY KEY, d TEXT);
     64     INSERT INTO t3 VALUES(2, 'two');
     65   }
     66   execsql { SELECT a, b, c, d FROM t1, t3 }
     67 } {1 one 2 two}
     68 
     69 do_test tkt3201-7 {
     70   execsql { SELECT a, b, c, d FROM t1, t3 WHERE a < c }
     71 } {1 one 2 two}
     72 
     73 # Ticket [efc02f977919]
     74 #
     75 ifcapable trigger {
     76   do_test tkt3201-4.0 {
     77     db eval {
     78      CREATE TABLE t4(x);
     79      CREATE TABLE t4_log(x);
     80      CREATE TRIGGER r4_1 AFTER INSERT ON t4 WHEN new.x=1 BEGIN
     81        INSERT INTO t4_log(x) VALUES(new.x);
     82      END;
     83      CREATE TRIGGER r4_2 AFTER INSERT ON t4 WHEN new.x=2 BEGIN
     84        INSERT INTO t4_log(x) VALUES(new.x);
     85      END;
     86      CREATE TRIGGER r4_3 AFTER INSERT ON t4 WHEN new.x=3 BEGIN
     87        INSERT INTO t4_log(x) VALUES(new.x);
     88      END;
     89      CREATE TRIGGER r4_4 AFTER INSERT ON t4 WHEN new.x=4 BEGIN
     90        INSERT INTO t4_log(x) VALUES(new.x);
     91      END;
     92      INSERT INTO t4 VALUES(1);
     93      INSERT INTO t4 VALUES(2);
     94      INSERT INTO t4 VALUES(3);
     95      INSERT INTO t4 VALUES(4);
     96      SELECT * FROM t4_log;
     97     }
     98   } {1 2 3 4}
     99 }
    100 
    101 
    102 
    103 
    104 
    105 finish_test
    106