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 17set testdir [file dirname $argv0] 18source $testdir/tester.tcl 19source $testdir/malloc_common.tcl 20 21ifcapable {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 42do_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 54do_malloc_test mallocJ-3 -sqlbody { 55 EXPLAIN COMMIT 56} 57 58# ticket #3485 59do_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 67do_malloc_test mallocJ-5 -sqlprep { 68 CREATE TABLE t1(["a"]); 69} -sqlbody { 70 SELECT * FROM t1 71} 72 73finish_test 74