diff options
Diffstat (limited to 'libraries/sqlite/unix/sqlite-3.5.1/test/tkt1644.test')
-rw-r--r-- | libraries/sqlite/unix/sqlite-3.5.1/test/tkt1644.test | 111 |
1 files changed, 111 insertions, 0 deletions
diff --git a/libraries/sqlite/unix/sqlite-3.5.1/test/tkt1644.test b/libraries/sqlite/unix/sqlite-3.5.1/test/tkt1644.test new file mode 100644 index 0000000..aa26a88 --- /dev/null +++ b/libraries/sqlite/unix/sqlite-3.5.1/test/tkt1644.test | |||
@@ -0,0 +1,111 @@ | |||
1 | # 2006 January 30 | ||
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 #1644 is | ||
14 | # fixed. Ticket #1644 complains that precompiled statements | ||
15 | # are not expired correctly as a result of changes to TEMP | ||
16 | # views and triggers. | ||
17 | # | ||
18 | |||
19 | set testdir [file dirname $argv0] | ||
20 | source $testdir/tester.tcl | ||
21 | |||
22 | ifcapable !tempdb||!view { | ||
23 | finish_test | ||
24 | return | ||
25 | } | ||
26 | |||
27 | # Create two tables T1 and T2 and make V1 point to T1. | ||
28 | do_test tkt1644-1.1 { | ||
29 | execsql { | ||
30 | CREATE TABLE t1(a); | ||
31 | INSERT INTO t1 VALUES(1); | ||
32 | CREATE TABLE t2(b); | ||
33 | INSERT INTO t2 VALUES(99); | ||
34 | CREATE TEMP VIEW v1 AS SELECT * FROM t1; | ||
35 | SELECT * FROM v1; | ||
36 | } | ||
37 | } {1} | ||
38 | |||
39 | # The "SELECT * FROM v1" should be in the TCL interface cache below. | ||
40 | # It will continue to point to T1 unless the cache is invalidated when | ||
41 | # the view changes. | ||
42 | # | ||
43 | do_test tkt1644-1.2 { | ||
44 | execsql { | ||
45 | DROP VIEW v1; | ||
46 | CREATE TEMP VIEW v1 AS SELECT * FROM t2; | ||
47 | SELECT * FROM v1; | ||
48 | } | ||
49 | } {99} | ||
50 | |||
51 | # Cache an access to the T1 table. | ||
52 | # | ||
53 | do_test tkt1644-1.3 { | ||
54 | execsql { | ||
55 | SELECT * FROM t1; | ||
56 | } | ||
57 | } {1} | ||
58 | |||
59 | # Create a temp table T1. Make sure the cache is invalidated so that | ||
60 | # the statement is recompiled and refers to the empty temp table. | ||
61 | # | ||
62 | do_test tkt1644-1.4 { | ||
63 | execsql { | ||
64 | CREATE TEMP TABLE t1(x); | ||
65 | } | ||
66 | execsql { | ||
67 | SELECT * FROM t1; | ||
68 | } | ||
69 | } {} | ||
70 | |||
71 | ifcapable view { | ||
72 | do_test tkt1644-2.1 { | ||
73 | execsql { | ||
74 | CREATE TEMP TABLE temp_t1(a, b); | ||
75 | } | ||
76 | set ::DB [sqlite3_connection_pointer db] | ||
77 | set ::STMT [sqlite3_prepare $::DB "SELECT * FROM temp_t1" -1 DUMMY] | ||
78 | execsql { | ||
79 | DROP TABLE temp_t1; | ||
80 | } | ||
81 | list [sqlite3_step $::STMT] [sqlite3_finalize $::STMT] | ||
82 | } {SQLITE_ERROR SQLITE_SCHEMA} | ||
83 | |||
84 | do_test tkt1644-2.2 { | ||
85 | execsql { | ||
86 | CREATE TABLE real_t1(a, b); | ||
87 | CREATE TEMP VIEW temp_v1 AS SELECT * FROM real_t1; | ||
88 | } | ||
89 | set ::DB [sqlite3_connection_pointer db] | ||
90 | set ::STMT [sqlite3_prepare $::DB "SELECT * FROM temp_v1" -1 DUMMY] | ||
91 | execsql { | ||
92 | DROP VIEW temp_v1; | ||
93 | } | ||
94 | list [sqlite3_step $::STMT] [sqlite3_finalize $::STMT] | ||
95 | } {SQLITE_ERROR SQLITE_SCHEMA} | ||
96 | |||
97 | do_test tkt1644-2.3 { | ||
98 | execsql { | ||
99 | CREATE TEMP VIEW temp_v1 AS SELECT * FROM real_t1 LIMIT 10 OFFSET 10; | ||
100 | } | ||
101 | set ::DB [sqlite3_connection_pointer db] | ||
102 | set ::STMT [sqlite3_prepare $::DB "SELECT * FROM temp_v1" -1 DUMMY] | ||
103 | execsql { | ||
104 | DROP VIEW temp_v1; | ||
105 | } | ||
106 | list [sqlite3_step $::STMT] [sqlite3_finalize $::STMT] | ||
107 | } {SQLITE_ERROR SQLITE_SCHEMA} | ||
108 | } | ||
109 | |||
110 | |||
111 | finish_test | ||