blob: 971bd561377182112945623332d134fe7122b441 [file] [log] [blame]
drh7c2fbde2009-01-07 20:58:57 +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 WHERE clause analysis.
13#
drh103bd882009-01-08 21:00:02 +000014# $Id: mallocK.test,v 1.3 2009/01/08 21:00:03 drh Exp $
drh7c2fbde2009-01-07 20:58:57 +000015
16set testdir [file dirname $argv0]
17source $testdir/tester.tcl
18source $testdir/malloc_common.tcl
19
drh7c2fbde2009-01-07 20:58:57 +000020set sql {SELECT * FROM t1, t2 WHERE (a=1 OR a=2)}
21for {set x 1} {$x<5} {incr x} {
22 append sql " AND b=y"
23 do_malloc_test mallocK-1.$x -sqlbody $sql -sqlprep {
24 CREATE TABLE t1(a,b);
25 CREATE TABLE t2(x,y);
26 }
27}
28
drh103bd882009-01-08 21:00:02 +000029set sql {SELECT * FROM t1 WHERE a GLOB 'xyz*' AND (a=1 OR a=2)}
drh7c2fbde2009-01-07 20:58:57 +000030for {set x 1} {$x<5} {incr x} {
31 append sql " AND b!=$x"
32 do_malloc_test mallocK-2.$x -sqlbody $sql -sqlprep {
33 CREATE TABLE t1(a,b);
34 }
35}
36
37set sql {SELECT * FROM t1 WHERE a BETWEEN 5 AND 10}
38for {set x 1} {$x<5} {incr x} {
drh103bd882009-01-08 21:00:02 +000039 append sql " AND b=$x"
drh7c2fbde2009-01-07 20:58:57 +000040 do_malloc_test mallocK-3.$x -sqlbody $sql -sqlprep {
41 CREATE TABLE t1(a,b);
42 }
43}
44
drh103bd882009-01-08 21:00:02 +000045set sql {SELECT * FROM t1 WHERE b=0}
46for {set x 1} {$x<5} {incr x} {
47 set term "(b=$x"
48 for {set y 0} {$y<$x} {incr y} {
49 append term " AND a!=$y"
50 }
51 append sql " OR $term)"
52 do_malloc_test mallocK-4.$x -sqlbody $sql -sqlprep {
53 CREATE TABLE t1(a,b);
54 }
55}
56
drh7c2fbde2009-01-07 20:58:57 +000057ifcapable vtab {
58 set sql {SELECT * FROM t2 WHERE a MATCH 'xyz'}
59 for {set x 1} {$x<5} {incr x} {
60 append sql " AND b!=$x"
drh103bd882009-01-08 21:00:02 +000061 do_malloc_test mallocK-5.$x -sqlbody $sql -tclprep {
drh7c2fbde2009-01-07 20:58:57 +000062 register_echo_module [sqlite3_connection_pointer db]
63 db eval {
64 CREATE TABLE t1(a,b);
65 CREATE VIRTUAL TABLE t2 USING echo(t1);
66 }
67 }
68 }
69}
70
71
72finish_test