blob: eb77d54bde0ae57d2ca63a9e0b32dc04301bc4a0 [file] [log] [blame]
shane468327f2008-10-10 13:34:29 +00001# 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#
drha78c22c2008-11-11 18:28:58 +000015# $Id: mallocJ.test,v 1.5 2008/11/11 18:29:00 drh Exp $
shane468327f2008-10-10 13:34:29 +000016
17set testdir [file dirname $argv0]
18source $testdir/tester.tcl
19source $testdir/malloc_common.tcl
20
21ifcapable {update_delete_limit} {
22
drh1c0dc822008-10-30 22:13:23 +000023 do_malloc_test mallocJ-1 -sqlprep {
shane468327f2008-10-10 13:34:29 +000024 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
drh1c0dc822008-10-30 22:13:23 +000041# ticket #3467
drha78c22c2008-11-11 18:28:58 +000042do_malloc_test mallocJ-2 -sqlprep {
drh1c0dc822008-10-30 22:13:23 +000043 CREATE TABLE t1(a,b);
44 INSERT INTO t1 VALUES(1,2);
drh753cc102008-11-11 00:21:30 +000045 PRAGMA vdbe_trace=ON;
drh1c0dc822008-10-30 22:13:23 +000046} -sqlbody {
47 SELECT a, b, 'abc' FROM t1
48 UNION
49 SELECT b, a, 'xyz' FROM t1
50 ORDER BY 2, 3;
51}
52
drhc46f5202008-11-04 14:25:06 +000053# ticket #3478
54do_malloc_test mallocJ-3 -sqlbody {
55 EXPLAIN COMMIT
56}
57
drha78c22c2008-11-11 18:28:58 +000058# 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
shane468327f2008-10-10 13:34:29 +000066finish_test