Home | History | Annotate | Download | only in test
      1 # 2008 August 01
      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 #
     12 # This test script checks malloc failures in LIMIT operations for 
     13 # UPDATE/DELETE statements.
     14 # 
     15 # $Id: mallocJ.test,v 1.6 2009/01/09 02:49:32 drh Exp $
     16 
     17 set testdir [file dirname $argv0]
     18 source $testdir/tester.tcl
     19 source $testdir/malloc_common.tcl
     20 
     21 ifcapable {update_delete_limit} {
     22 
     23   do_malloc_test mallocJ-1 -sqlprep {
     24     DROP TABLE IF EXISTS t1;
     25     CREATE TABLE t1(x int, y int);
     26     INSERT INTO t1 VALUES(1,1);
     27     INSERT INTO t1 VALUES(1,2);
     28     INSERT INTO t1 VALUES(1,2);
     29     INSERT INTO t1 VALUES(2,1);
     30     INSERT INTO t1 VALUES(2,2);
     31     INSERT INTO t1 VALUES(2,3);
     32   } -sqlbody {
     33     UPDATE t1 SET x=1 ORDER BY y LIMIT 2 OFFSET 2;
     34     UPDATE t1 SET x=2 WHERE y=1 ORDER BY y LIMIT 2 OFFSET 2;
     35     DELETE FROM t1 WHERE x=1 ORDER BY y LIMIT 2 OFFSET 2;
     36     DELETE FROM t1 ORDER BY y LIMIT 2 OFFSET 2;
     37   }
     38 
     39 }
     40 
     41 # ticket #3467
     42 do_malloc_test mallocJ-2 -sqlprep {
     43   CREATE TABLE t1(a,b);
     44   INSERT INTO t1 VALUES(1,2);
     45   PRAGMA vdbe_trace=ON;
     46 } -sqlbody {
     47   SELECT a, b, 'abc' FROM t1
     48     UNION
     49     SELECT b, a, 'xyz' FROM t1
     50     ORDER BY 2, 3;
     51 }
     52 
     53 # ticket #3478
     54 do_malloc_test mallocJ-3 -sqlbody {
     55   EXPLAIN COMMIT
     56 }
     57 
     58 # ticket #3485
     59 do_malloc_test mallocJ-4 -sqlprep {
     60   CREATE TABLE t1(a,b,c);
     61   CREATE TABLE t2(x,y,z);
     62 } -sqlbody {
     63   SELECT * FROM (SELECT a,b FROM t1 UNION ALL SELECT x, y FROM t2) ORDER BY 1
     64 }
     65 
     66 # coverage testing
     67 do_malloc_test mallocJ-5 -sqlprep {
     68   CREATE TABLE t1(["a"]);
     69 } -sqlbody {
     70   SELECT * FROM t1
     71 }
     72 
     73 finish_test
     74