• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 WHERE clause analysis.
13#
14# $Id: mallocK.test,v 1.3 2009/01/08 21:00:03 drh Exp $
15
16set testdir [file dirname $argv0]
17source $testdir/tester.tcl
18source $testdir/malloc_common.tcl
19
20set 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
29set sql {SELECT * FROM t1 WHERE a GLOB 'xyz*' AND (a=1 OR a=2)}
30for {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} {
39  append sql " AND b=$x"
40  do_malloc_test mallocK-3.$x -sqlbody $sql -sqlprep {
41    CREATE TABLE t1(a,b);
42  }
43}
44
45set 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
57ifcapable 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"
61    do_malloc_test mallocK-5.$x -sqlbody $sql -tclprep {
62      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
73