Home | History | Annotate | Download | only in test
      1 # 2006 February 27
      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 to make sure abusively large triggers
     14 # (triggers with 100s or 1000s of statements) work.
     15 #
     16 # $Id: trigger8.test,v 1.2 2008/09/17 16:14:10 danielk1977 Exp $
     17 
     18 set testdir [file dirname $argv0]
     19 source $testdir/tester.tcl
     20 ifcapable {!trigger} {
     21   finish_test
     22   return
     23 }
     24 
     25 # Set variable $nStatement to the number of statements to include in the
     26 # body of the trigger. On a workstation with virtually unlimited memory, 
     27 # use 10000. But on symbian, which allows each application at most a 32MB
     28 # heap, use 1000.
     29 #
     30 set nStatement 10000
     31 if {$tcl_platform(platform) == "symbian"} {
     32   set nStatement 1000
     33 }
     34 
     35 set nStatement 5
     36 do_test trigger8-1.1 {
     37   execsql {
     38     CREATE TABLE t1(x);
     39     CREATE TABLE t2(y);
     40   }
     41   set sql "CREATE TRIGGER r${nStatement} AFTER INSERT ON t1 BEGIN\n"
     42   for {set i 0} {$i<$nStatement} {incr i} {
     43     append sql "  INSERT INTO t2 VALUES($i);\n"
     44   }
     45   append sql "END;"
     46   execsql $sql
     47   execsql {
     48     INSERT INTO t1 VALUES(5);
     49     SELECT count(*) FROM t2;
     50   }
     51 } $nStatement
     52 
     53 finish_test
     54