Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1188)

Side by Side Diff: third_party/sqlite/sqlite-src-3170000/test/exists.test

Issue 2747283002: [sql] Import reference version of SQLite 3.17.. (Closed)
Patch Set: Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 # 2011 April 9
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. The
12 # focus of this file is testing the various schema modification statements
13 # that feature "IF EXISTS" or "IF NOT EXISTS" clauses.
14 #
15
16 set testdir [file dirname $argv0]
17 source $testdir/tester.tcl
18 source $testdir/lock_common.tcl
19
20
21 foreach jm {rollback wal} {
22 if {![wal_is_capable] && $jm=="wal"} continue
23
24 set testprefix exists-$jm
25
26 # This block of tests is targeted at CREATE XXX IF NOT EXISTS statements.
27 #
28 do_multiclient_test tn {
29
30 # TABLE objects.
31 #
32 do_test 1.$tn.1.1 {
33 if {$jm == "wal"} { sql2 { PRAGMA journal_mode = WAL } }
34 sql2 { CREATE TABLE t1(x) }
35 sql1 { CREATE TABLE IF NOT EXISTS t1(a, b) }
36 sql2 { DROP TABLE t1 }
37 sql1 { CREATE TABLE IF NOT EXISTS t1(a, b) }
38 sql2 { SELECT name FROM sqlite_master WHERE type = 'table' }
39 } {t1}
40
41 do_test 1.$tn.1.2 {
42 sql2 { CREATE TABLE t2(x) }
43 sql1 { CREATE TABLE IF NOT EXISTS t2 AS SELECT * FROM t1 }
44 sql2 { DROP TABLE t2 }
45 sql1 { CREATE TABLE IF NOT EXISTS t2 AS SELECT * FROM t1 }
46 sql2 { SELECT name FROM sqlite_master WHERE type = 'table' }
47 } {t1 t2}
48
49
50 # INDEX objects.
51 #
52 do_test 1.$tn.2 {
53 sql2 { CREATE INDEX i1 ON t1(a) }
54 sql1 { CREATE INDEX IF NOT EXISTS i1 ON t1(a, b) }
55 sql2 { DROP INDEX i1 }
56 sql1 { CREATE INDEX IF NOT EXISTS i1 ON t1(a, b) }
57 sql2 { SELECT name FROM sqlite_master WHERE type = 'index' }
58 } {i1}
59
60 # VIEW objects.
61 #
62 do_test 1.$tn.3 {
63 sql2 { CREATE VIEW v1 AS SELECT * FROM t1 }
64 sql1 { CREATE VIEW IF NOT EXISTS v1 AS SELECT * FROM t1 }
65 sql2 { DROP VIEW v1 }
66 sql1 { CREATE VIEW IF NOT EXISTS v1 AS SELECT * FROM t1 }
67 sql2 { SELECT name FROM sqlite_master WHERE type = 'view' }
68 } {v1}
69
70 # TRIGGER objects.
71 #
72 do_test $tn.4 {
73 sql2 { CREATE TRIGGER tr1 AFTER INSERT ON t1 BEGIN SELECT 1; END }
74 sql1 { CREATE TRIGGER IF NOT EXISTS tr1 AFTER INSERT ON t1 BEGIN SELECT 1; END }
75 sql2 { DROP TRIGGER tr1 }
76 sql1 { CREATE TRIGGER IF NOT EXISTS tr1 AFTER INSERT ON t1 BEGIN SELECT 1; END }
77 sql2 { SELECT name FROM sqlite_master WHERE type = 'trigger' }
78 } {tr1}
79 }
80
81 # This block of tests is targeted at DROP XXX IF EXISTS statements.
82 #
83 do_multiclient_test tn {
84
85 # TABLE objects.
86 #
87 do_test 2.$tn.1 {
88 if {$jm == "wal"} { sql1 { PRAGMA journal_mode = WAL } }
89 sql1 { DROP TABLE IF EXISTS t1 }
90 sql2 { CREATE TABLE t1(x) }
91 sql1 { DROP TABLE IF EXISTS t1 }
92 sql2 { SELECT name FROM sqlite_master WHERE type = 'table' }
93 } {}
94
95 # INDEX objects.
96 #
97 do_test 2.$tn.2 {
98 sql1 { CREATE TABLE t2(x) }
99 sql1 { DROP INDEX IF EXISTS i2 }
100 sql2 { CREATE INDEX i2 ON t2(x) }
101 sql1 { DROP INDEX IF EXISTS i2 }
102 sql2 { SELECT name FROM sqlite_master WHERE type = 'index' }
103 } {}
104
105 # VIEW objects.
106 #
107 do_test 2.$tn.3 {
108 sql1 { DROP VIEW IF EXISTS v1 }
109 sql2 { CREATE VIEW v1 AS SELECT * FROM t2 }
110 sql1 { DROP VIEW IF EXISTS v1 }
111 sql2 { SELECT name FROM sqlite_master WHERE type = 'view' }
112 } {}
113
114 # TRIGGER objects.
115 #
116 do_test 2.$tn.4 {
117 sql1 { DROP TRIGGER IF EXISTS tr1 }
118 sql2 { CREATE TRIGGER tr1 AFTER INSERT ON t2 BEGIN SELECT 1; END }
119 sql1 { DROP TRIGGER IF EXISTS tr1 }
120 sql2 { SELECT name FROM sqlite_master WHERE type = 'trigger' }
121 } {}
122 }
123
124 # This block of tests is targeted at DROP XXX IF EXISTS statements with
125 # attached databases.
126 #
127 do_multiclient_test tn {
128
129 forcedelete test.db2
130 do_test 3.$tn.0 {
131 sql1 { ATTACH 'test.db2' AS aux }
132 sql2 { ATTACH 'test.db2' AS aux }
133 } {}
134
135 # TABLE objects.
136 #
137 do_test 3.$tn.1.1 {
138 sql1 { DROP TABLE IF EXISTS aux.t1 }
139 sql2 { CREATE TABLE aux.t1(x) }
140 sql1 { DROP TABLE IF EXISTS aux.t1 }
141 sql2 { SELECT name FROM aux.sqlite_master WHERE type = 'table' }
142 } {}
143 do_test 3.$tn.1.2 {
144 sql1 { DROP TABLE IF EXISTS t1 }
145 sql2 { CREATE TABLE aux.t1(x) }
146 sql1 { DROP TABLE IF EXISTS t1 }
147 sql2 { SELECT name FROM aux.sqlite_master WHERE type = 'table' }
148 } {}
149
150 # INDEX objects.
151 #
152 do_test 3.$tn.2.1 {
153 sql1 { CREATE TABLE aux.t2(x) }
154 sql1 { DROP INDEX IF EXISTS aux.i2 }
155 sql2 { CREATE INDEX aux.i2 ON t2(x) }
156 sql1 { DROP INDEX IF EXISTS aux.i2 }
157 sql2 { SELECT name FROM aux.sqlite_master WHERE type = 'index' }
158 } {}
159 do_test 3.$tn.2.2 {
160 sql1 { DROP INDEX IF EXISTS i2 }
161 sql2 { CREATE INDEX aux.i2 ON t2(x) }
162 sql1 { DROP INDEX IF EXISTS i2 }
163 sql2 { SELECT * FROM aux.sqlite_master WHERE type = 'index' }
164 } {}
165
166 # VIEW objects.
167 #
168 do_test 3.$tn.3.1 {
169 sql1 { DROP VIEW IF EXISTS aux.v1 }
170 sql2 { CREATE VIEW aux.v1 AS SELECT * FROM t2 }
171 sql1 { DROP VIEW IF EXISTS aux.v1 }
172 sql2 { SELECT name FROM aux.sqlite_master WHERE type = 'view' }
173 } {}
174 do_test 3.$tn.3.2 {
175 sql1 { DROP VIEW IF EXISTS v1 }
176 sql2 { CREATE VIEW aux.v1 AS SELECT * FROM t2 }
177 sql1 { DROP VIEW IF EXISTS v1 }
178 sql2 { SELECT name FROM aux.sqlite_master WHERE type = 'view' }
179 } {}
180
181 # TRIGGER objects.
182 #
183 do_test 3.$tn.4.1 {
184 sql1 { DROP TRIGGER IF EXISTS aux.tr1 }
185 sql2 { CREATE TRIGGER aux.tr1 AFTER INSERT ON t2 BEGIN SELECT 1; END }
186 sql1 { DROP TRIGGER IF EXISTS aux.tr1 }
187 sql2 { SELECT name FROM aux.sqlite_master WHERE type = 'trigger' }
188 } {}
189 do_test 3.$tn.4.2 {
190 sql1 { DROP TRIGGER IF EXISTS tr1 }
191 sql2 { CREATE TRIGGER aux.tr1 AFTER INSERT ON t2 BEGIN SELECT 1; END }
192 sql1 { DROP TRIGGER IF EXISTS tr1 }
193 sql2 { SELECT name FROM aux.sqlite_master WHERE type = 'trigger' }
194 } {}
195 }
196 }
197
198
199 finish_test
OLDNEW
« no previous file with comments | « third_party/sqlite/sqlite-src-3170000/test/exec.test ('k') | third_party/sqlite/sqlite-src-3170000/test/expr.test » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698