xref: /sqlite-3.40.0/test/tkt3442.test (revision 38d69855)
1# 2008 October 20
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# This file implements regression tests for SQLite library.
12#
13# This file implements tests to verify that ticket #3442 has been
14# fixed.
15#
16#
17# $Id: tkt3442.test,v 1.2 2009/06/05 17:09:12 drh Exp $
18
19
20set testdir [file dirname $argv0]
21source $testdir/tester.tcl
22
23
24# Create a schema with some indexes.
25#
26do_test tkt3442-1.1 {
27  execsql {
28     CREATE TABLE listhash(
29       key INTEGER PRIMARY KEY,
30       id TEXT,
31       node INTEGER
32     );
33     CREATE UNIQUE INDEX ididx ON listhash(id);
34  }
35} {}
36
37
38# Explain Query Plan
39#
40proc EQP {sql} {
41  uplevel "execsql {EXPLAIN QUERY PLAN $sql}"
42}
43
44
45# These tests perform an EXPLAIN QUERY PLAN on both versions of the
46# SELECT referenced in ticket #3442 (both '5000' and "5000")
47# and verify that the query plan is the same.
48#
49ifcapable explain {
50  do_test tkt3442-1.2 {
51    EQP { SELECT node FROM listhash WHERE id='5000' LIMIT 1; }
52  } {0 0 0 {SEARCH TABLE listhash USING INDEX ididx (id=?)}}
53  do_test tkt3442-1.3 {
54    EQP { SELECT node FROM listhash WHERE id="5000" LIMIT 1; }
55  } {0 0 0 {SEARCH TABLE listhash USING INDEX ididx (id=?)}}
56}
57
58
59# Some extra tests testing other permutations of 5000.
60#
61ifcapable explain {
62  do_test tkt3442-1.4 {
63    EQP { SELECT node FROM listhash WHERE id=5000 LIMIT 1; }
64  } {0 0 0 {SEARCH TABLE listhash USING INDEX ididx (id=?)}}
65}
66do_test tkt3442-1.5 {
67  catchsql {
68    SELECT node FROM listhash WHERE id=[5000] LIMIT 1;
69  }
70} {1 {no such column: 5000}}
71
72finish_test
73