blob: e003c88c09c38dddb8ed0da6e3613a34b9e975de [file] [log] [blame]
drh2d458342003-04-05 03:42:26 +00001# 2003 April 4
drh1962bda2003-01-12 19:33:52 +00002#
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
drh2d458342003-04-05 03:42:26 +000012# focus of this script is testing the ATTACH and DETACH commands
13# and related functionality.
drh1962bda2003-01-12 19:33:52 +000014#
drhe22a3342003-04-22 20:30:37 +000015# $Id: auth.test,v 1.8 2003/04/22 20:30:40 drh Exp $
drh1962bda2003-01-12 19:33:52 +000016#
17
18set testdir [file dirname $argv0]
19source $testdir/tester.tcl
20
drhe22a3342003-04-22 20:30:37 +000021# disable this test if the SQLITE_OMIT_AUTHORIZATION macro is
22# defined during compilation.
drh1962bda2003-01-12 19:33:52 +000023
drhdcd997e2003-01-31 17:21:49 +000024do_test auth-1.1.1 {
drh1962bda2003-01-12 19:33:52 +000025 db close
26 set ::DB [sqlite db test.db]
drhe22a3342003-04-22 20:30:37 +000027 proc auth {code arg1 arg2 arg3 arg4} {
drh77ad4e42003-01-14 02:49:27 +000028 if {$code=="SQLITE_INSERT" && $arg1=="sqlite_master"} {
drh1962bda2003-01-12 19:33:52 +000029 return SQLITE_DENY
30 }
31 return SQLITE_OK
32 }
drhe22a3342003-04-22 20:30:37 +000033 db authorizer ::auth
drh1962bda2003-01-12 19:33:52 +000034 catchsql {CREATE TABLE t1(a,b,c)}
drhe5f9c642003-01-13 23:27:31 +000035} {1 {not authorized}}
drhdcd997e2003-01-31 17:21:49 +000036do_test auth-1.1.2 {
37 db errorcode
38} {23}
drh1962bda2003-01-12 19:33:52 +000039do_test auth-1.2 {
drhe5f9c642003-01-13 23:27:31 +000040 execsql {SELECT name FROM sqlite_master}
41} {}
drh77ad4e42003-01-14 02:49:27 +000042do_test auth-1.3.1 {
drhe22a3342003-04-22 20:30:37 +000043 proc auth {code arg1 arg2 arg3 arg4} {
drhe5f9c642003-01-13 23:27:31 +000044 if {$code=="SQLITE_CREATE_TABLE"} {
drhe22a3342003-04-22 20:30:37 +000045 set ::authargs [list $arg1 $arg2 $arg3 $arg4]
drhe5f9c642003-01-13 23:27:31 +000046 return SQLITE_DENY
47 }
48 return SQLITE_OK
49 }
50 catchsql {CREATE TABLE t1(a,b,c)}
51} {1 {not authorized}}
drh77ad4e42003-01-14 02:49:27 +000052do_test auth-1.3.2 {
drhdcd997e2003-01-31 17:21:49 +000053 db errorcode
54} {23}
55do_test auth-1.3.3 {
drh77ad4e42003-01-14 02:49:27 +000056 set ::authargs
drhe22a3342003-04-22 20:30:37 +000057} {t1 {} main {}}
drhe5f9c642003-01-13 23:27:31 +000058do_test auth-1.4 {
59 execsql {SELECT name FROM sqlite_master}
60} {}
61
62do_test auth-1.5 {
drhe22a3342003-04-22 20:30:37 +000063 proc auth {code arg1 arg2 arg3 arg4} {
drh77ad4e42003-01-14 02:49:27 +000064 if {$code=="SQLITE_INSERT" && $arg1=="sqlite_temp_master"} {
drhe5f9c642003-01-13 23:27:31 +000065 return SQLITE_DENY
66 }
67 return SQLITE_OK
68 }
69 catchsql {CREATE TEMP TABLE t1(a,b,c)}
70} {1 {not authorized}}
71do_test auth-1.6 {
72 execsql {SELECT name FROM sqlite_temp_master}
73} {}
drh77ad4e42003-01-14 02:49:27 +000074do_test auth-1.7.1 {
drhe22a3342003-04-22 20:30:37 +000075 proc auth {code arg1 arg2 arg3 arg4} {
drhe5f9c642003-01-13 23:27:31 +000076 if {$code=="SQLITE_CREATE_TEMP_TABLE"} {
drhe22a3342003-04-22 20:30:37 +000077 set ::authargs [list $arg1 $arg2 $arg3 $arg4]
drhe5f9c642003-01-13 23:27:31 +000078 return SQLITE_DENY
79 }
80 return SQLITE_OK
81 }
82 catchsql {CREATE TEMP TABLE t1(a,b,c)}
83} {1 {not authorized}}
drh77ad4e42003-01-14 02:49:27 +000084do_test auth-1.7.2 {
85 set ::authargs
drhe22a3342003-04-22 20:30:37 +000086} {t1 {} temp {}}
drhe5f9c642003-01-13 23:27:31 +000087do_test auth-1.8 {
88 execsql {SELECT name FROM sqlite_temp_master}
89} {}
90
91do_test auth-1.9 {
drhe22a3342003-04-22 20:30:37 +000092 proc auth {code arg1 arg2 arg3 arg4} {
drh77ad4e42003-01-14 02:49:27 +000093 if {$code=="SQLITE_INSERT" && $arg1=="sqlite_master"} {
drh1962bda2003-01-12 19:33:52 +000094 return SQLITE_IGNORE
95 }
96 return SQLITE_OK
97 }
98 catchsql {CREATE TABLE t1(a,b,c)}
drhe5f9c642003-01-13 23:27:31 +000099} {0 {}}
100do_test auth-1.10 {
101 execsql {SELECT name FROM sqlite_master}
102} {}
103do_test auth-1.11 {
drhe22a3342003-04-22 20:30:37 +0000104 proc auth {code arg1 arg2 arg3 arg4} {
drhe5f9c642003-01-13 23:27:31 +0000105 if {$code=="SQLITE_CREATE_TABLE"} {
drhe22a3342003-04-22 20:30:37 +0000106 set ::authargs [list $arg1 $arg2 $arg3 $arg4]
drhe5f9c642003-01-13 23:27:31 +0000107 return SQLITE_IGNORE
drh1962bda2003-01-12 19:33:52 +0000108 }
109 return SQLITE_OK
110 }
111 catchsql {CREATE TABLE t1(a,b,c)}
112} {0 {}}
drhe5f9c642003-01-13 23:27:31 +0000113do_test auth-1.12 {
drh1962bda2003-01-12 19:33:52 +0000114 execsql {SELECT name FROM sqlite_master}
drhe5f9c642003-01-13 23:27:31 +0000115} {}
116do_test auth-1.13 {
drhe22a3342003-04-22 20:30:37 +0000117 proc auth {code arg1 arg2 arg3 arg4} {
drh77ad4e42003-01-14 02:49:27 +0000118 if {$code=="SQLITE_INSERT" && $arg1=="sqlite_temp_master"} {
drhe5f9c642003-01-13 23:27:31 +0000119 return SQLITE_IGNORE
120 }
121 return SQLITE_OK
122 }
123 catchsql {CREATE TEMP TABLE t1(a,b,c)}
124} {0 {}}
125do_test auth-1.14 {
126 execsql {SELECT name FROM sqlite_temp_master}
127} {}
128do_test auth-1.15 {
drhe22a3342003-04-22 20:30:37 +0000129 proc auth {code arg1 arg2 arg3 arg4} {
drhe5f9c642003-01-13 23:27:31 +0000130 if {$code=="SQLITE_CREATE_TEMP_TABLE"} {
drhe22a3342003-04-22 20:30:37 +0000131 set ::authargs [list $arg1 $arg2 $arg3 $arg4]
drhe5f9c642003-01-13 23:27:31 +0000132 return SQLITE_IGNORE
133 }
134 return SQLITE_OK
135 }
136 catchsql {CREATE TEMP TABLE t1(a,b,c)}
137} {0 {}}
138do_test auth-1.16 {
139 execsql {SELECT name FROM sqlite_temp_master}
140} {}
141
142do_test auth-1.17 {
drhe22a3342003-04-22 20:30:37 +0000143 proc auth {code arg1 arg2 arg3 arg4} {
drhe5f9c642003-01-13 23:27:31 +0000144 if {$code=="SQLITE_CREATE_TABLE"} {
drhe22a3342003-04-22 20:30:37 +0000145 set ::authargs [list $arg1 $arg2 $arg3 $arg4]
drh77ad4e42003-01-14 02:49:27 +0000146 return SQLITE_DENY
drhe5f9c642003-01-13 23:27:31 +0000147 }
148 return SQLITE_OK
149 }
150 catchsql {CREATE TEMP TABLE t1(a,b,c)}
151} {0 {}}
152do_test auth-1.18 {
153 execsql {SELECT name FROM sqlite_temp_master}
154} {t1}
drh77ad4e42003-01-14 02:49:27 +0000155do_test auth-1.19.1 {
156 set ::authargs {}
drhe22a3342003-04-22 20:30:37 +0000157 proc auth {code arg1 arg2 arg3 arg4} {
drhe5f9c642003-01-13 23:27:31 +0000158 if {$code=="SQLITE_CREATE_TEMP_TABLE"} {
drhe22a3342003-04-22 20:30:37 +0000159 set ::authargs [list $arg1 $arg2 $arg3 $arg4]
drh77ad4e42003-01-14 02:49:27 +0000160 return SQLITE_DENY
drh1962bda2003-01-12 19:33:52 +0000161 }
162 return SQLITE_OK
163 }
164 catchsql {CREATE TABLE t2(a,b,c)}
drh1962bda2003-01-12 19:33:52 +0000165} {0 {}}
drh77ad4e42003-01-14 02:49:27 +0000166do_test auth-1.19.2 {
167 set ::authargs
168} {}
drh1962bda2003-01-12 19:33:52 +0000169do_test auth-1.20 {
drhe5f9c642003-01-13 23:27:31 +0000170 execsql {SELECT name FROM sqlite_master}
171} {t2}
drh1962bda2003-01-12 19:33:52 +0000172
drh77ad4e42003-01-14 02:49:27 +0000173do_test auth-1.21.1 {
drhe22a3342003-04-22 20:30:37 +0000174 proc auth {code arg1 arg2 arg3 arg4} {
drh77ad4e42003-01-14 02:49:27 +0000175 if {$code=="SQLITE_DROP_TABLE"} {
drhe22a3342003-04-22 20:30:37 +0000176 set ::authargs [list $arg1 $arg2 $arg3 $arg4]
drh77ad4e42003-01-14 02:49:27 +0000177 return SQLITE_DENY
178 }
179 return SQLITE_OK
180 }
181 catchsql {DROP TABLE t2}
182} {1 {not authorized}}
183do_test auth-1.21.2 {
184 set ::authargs
drhe22a3342003-04-22 20:30:37 +0000185} {t2 {} main {}}
drh77ad4e42003-01-14 02:49:27 +0000186do_test auth-1.22 {
187 execsql {SELECT name FROM sqlite_master}
188} {t2}
189do_test auth-1.23.1 {
drhe22a3342003-04-22 20:30:37 +0000190 proc auth {code arg1 arg2 arg3 arg4} {
drh77ad4e42003-01-14 02:49:27 +0000191 if {$code=="SQLITE_DROP_TABLE"} {
drhe22a3342003-04-22 20:30:37 +0000192 set ::authargs [list $arg1 $arg2 $arg3 $arg4]
drh77ad4e42003-01-14 02:49:27 +0000193 return SQLITE_IGNORE
194 }
195 return SQLITE_OK
196 }
197 catchsql {DROP TABLE t2}
198} {0 {}}
199do_test auth-1.23.2 {
200 set ::authargs
drhe22a3342003-04-22 20:30:37 +0000201} {t2 {} main {}}
drh77ad4e42003-01-14 02:49:27 +0000202do_test auth-1.24 {
203 execsql {SELECT name FROM sqlite_master}
204} {t2}
drhe5f9c642003-01-13 23:27:31 +0000205
drh77ad4e42003-01-14 02:49:27 +0000206do_test auth-1.25 {
drhe22a3342003-04-22 20:30:37 +0000207 proc auth {code arg1 arg2 arg3 arg4} {
drh77ad4e42003-01-14 02:49:27 +0000208 if {$code=="SQLITE_DROP_TEMP_TABLE"} {
drhe22a3342003-04-22 20:30:37 +0000209 set ::authargs [list $arg1 $arg2 $arg3 $arg4]
drh77ad4e42003-01-14 02:49:27 +0000210 return SQLITE_DENY
211 }
212 return SQLITE_OK
213 }
214 catchsql {DROP TABLE t1}
215} {1 {not authorized}}
216do_test auth-1.26 {
217 execsql {SELECT name FROM sqlite_temp_master}
218} {t1}
219do_test auth-1.27 {
drhe22a3342003-04-22 20:30:37 +0000220 proc auth {code arg1 arg2 arg3 arg4} {
drh77ad4e42003-01-14 02:49:27 +0000221 if {$code=="SQLITE_DROP_TEMP_TABLE"} {
drhe22a3342003-04-22 20:30:37 +0000222 set ::authargs [list $arg1 $arg2 $arg3 $arg4]
drh77ad4e42003-01-14 02:49:27 +0000223 return SQLITE_IGNORE
224 }
225 return SQLITE_OK
226 }
227 catchsql {DROP TABLE t1}
228} {0 {}}
229do_test auth-1.28 {
230 execsql {SELECT name FROM sqlite_temp_master}
231} {t1}
232
233do_test auth-1.29 {
drhe22a3342003-04-22 20:30:37 +0000234 proc auth {code arg1 arg2 arg3 arg4} {
drh77ad4e42003-01-14 02:49:27 +0000235 if {$code=="SQLITE_INSERT" && $arg1=="t2"} {
236 return SQLITE_DENY
237 }
238 return SQLITE_OK
239 }
240 catchsql {INSERT INTO t2 VALUES(1,2,3)}
241} {1 {not authorized}}
242do_test auth-1.30 {
243 execsql {SELECT * FROM t2}
244} {}
245do_test auth-1.31 {
drhe22a3342003-04-22 20:30:37 +0000246 proc auth {code arg1 arg2 arg3 arg4} {
drh77ad4e42003-01-14 02:49:27 +0000247 if {$code=="SQLITE_INSERT" && $arg1=="t2"} {
248 return SQLITE_IGNORE
249 }
250 return SQLITE_OK
251 }
252 catchsql {INSERT INTO t2 VALUES(1,2,3)}
253} {0 {}}
254do_test auth-1.32 {
255 execsql {SELECT * FROM t2}
256} {}
257do_test auth-1.33 {
drhe22a3342003-04-22 20:30:37 +0000258 proc auth {code arg1 arg2 arg3 arg4} {
drh77ad4e42003-01-14 02:49:27 +0000259 if {$code=="SQLITE_INSERT" && $arg1=="t1"} {
260 return SQLITE_IGNORE
261 }
262 return SQLITE_OK
263 }
264 catchsql {INSERT INTO t2 VALUES(1,2,3)}
265} {0 {}}
266do_test auth-1.34 {
267 execsql {SELECT * FROM t2}
268} {1 2 3}
269
270do_test auth-1.35 {
drhe22a3342003-04-22 20:30:37 +0000271 proc auth {code arg1 arg2 arg3 arg4} {
drh77ad4e42003-01-14 02:49:27 +0000272 if {$code=="SQLITE_READ" && $arg1=="t2" && $arg2=="b"} {
273 return SQLITE_DENY
274 }
275 return SQLITE_OK
276 }
277 catchsql {SELECT * FROM t2}
278} {1 {access to t2.b is prohibited}}
279do_test auth-1.36 {
drhe22a3342003-04-22 20:30:37 +0000280 proc auth {code arg1 arg2 arg3 arg4} {
drh77ad4e42003-01-14 02:49:27 +0000281 if {$code=="SQLITE_READ" && $arg1=="t2" && $arg2=="b"} {
282 return SQLITE_IGNORE
283 }
284 return SQLITE_OK
285 }
286 catchsql {SELECT * FROM t2}
287} {0 {1 {} 3}}
288do_test auth-1.37 {
drhe22a3342003-04-22 20:30:37 +0000289 proc auth {code arg1 arg2 arg3 arg4} {
drh77ad4e42003-01-14 02:49:27 +0000290 if {$code=="SQLITE_READ" && $arg1=="t2" && $arg2=="b"} {
291 return SQLITE_IGNORE
292 }
293 return SQLITE_OK
294 }
295 catchsql {SELECT * FROM t2 WHERE b=2}
296} {0 {}}
297do_test auth-1.38 {
drhe22a3342003-04-22 20:30:37 +0000298 proc auth {code arg1 arg2 arg3 arg4} {
drh77ad4e42003-01-14 02:49:27 +0000299 if {$code=="SQLITE_READ" && $arg1=="t2" && $arg2=="a"} {
300 return SQLITE_IGNORE
301 }
302 return SQLITE_OK
303 }
304 catchsql {SELECT * FROM t2 WHERE b=2}
305} {0 {{} 2 3}}
306do_test auth-1.39 {
drhe22a3342003-04-22 20:30:37 +0000307 proc auth {code arg1 arg2 arg3 arg4} {
drh77ad4e42003-01-14 02:49:27 +0000308 if {$code=="SQLITE_READ" && $arg1=="t2" && $arg2=="b"} {
309 return SQLITE_IGNORE
310 }
311 return SQLITE_OK
312 }
313 catchsql {SELECT * FROM t2 WHERE b IS NULL}
314} {0 {1 {} 3}}
315do_test auth-1.40 {
drhe22a3342003-04-22 20:30:37 +0000316 proc auth {code arg1 arg2 arg3 arg4} {
drh77ad4e42003-01-14 02:49:27 +0000317 if {$code=="SQLITE_READ" && $arg1=="t2" && $arg2=="b"} {
318 return SQLITE_DENY
319 }
320 return SQLITE_OK
321 }
322 catchsql {SELECT a,c FROM t2 WHERE b IS NULL}
323} {1 {access to t2.b is prohibited}}
324
325do_test auth-1.41 {
drhe22a3342003-04-22 20:30:37 +0000326 proc auth {code arg1 arg2 arg3 arg4} {
drh77ad4e42003-01-14 02:49:27 +0000327 if {$code=="SQLITE_UPDATE" && $arg1=="t2" && $arg2=="b"} {
328 return SQLITE_DENY
329 }
330 return SQLITE_OK
331 }
332 catchsql {UPDATE t2 SET a=11}
333} {0 {}}
334do_test auth-1.42 {
335 execsql {SELECT * FROM t2}
336} {11 2 3}
337do_test auth-1.43 {
drhe22a3342003-04-22 20:30:37 +0000338 proc auth {code arg1 arg2 arg3 arg4} {
drh77ad4e42003-01-14 02:49:27 +0000339 if {$code=="SQLITE_UPDATE" && $arg1=="t2" && $arg2=="b"} {
340 return SQLITE_DENY
341 }
342 return SQLITE_OK
343 }
344 catchsql {UPDATE t2 SET b=22, c=33}
345} {1 {not authorized}}
346do_test auth-1.44 {
347 execsql {SELECT * FROM t2}
348} {11 2 3}
349do_test auth-1.45 {
drhe22a3342003-04-22 20:30:37 +0000350 proc auth {code arg1 arg2 arg3 arg4} {
drh77ad4e42003-01-14 02:49:27 +0000351 if {$code=="SQLITE_UPDATE" && $arg1=="t2" && $arg2=="b"} {
352 return SQLITE_IGNORE
353 }
354 return SQLITE_OK
355 }
356 catchsql {UPDATE t2 SET b=22, c=33}
357} {0 {}}
358do_test auth-1.46 {
359 execsql {SELECT * FROM t2}
360} {11 2 33}
361
362do_test auth-1.47 {
drhe22a3342003-04-22 20:30:37 +0000363 proc auth {code arg1 arg2 arg3 arg4} {
drh77ad4e42003-01-14 02:49:27 +0000364 if {$code=="SQLITE_DELETE" && $arg1=="t2"} {
365 return SQLITE_DENY
366 }
367 return SQLITE_OK
368 }
369 catchsql {DELETE FROM t2 WHERE a=11}
370} {1 {not authorized}}
371do_test auth-1.48 {
372 execsql {SELECT * FROM t2}
373} {11 2 33}
374do_test auth-1.49 {
drhe22a3342003-04-22 20:30:37 +0000375 proc auth {code arg1 arg2 arg3 arg4} {
drh77ad4e42003-01-14 02:49:27 +0000376 if {$code=="SQLITE_DELETE" && $arg1=="t2"} {
377 return SQLITE_IGNORE
378 }
379 return SQLITE_OK
380 }
381 catchsql {DELETE FROM t2 WHERE a=11}
382} {0 {}}
383do_test auth-1.50 {
384 execsql {SELECT * FROM t2}
385} {11 2 33}
386
387do_test auth-1.51 {
drhe22a3342003-04-22 20:30:37 +0000388 proc auth {code arg1 arg2 arg3 arg4} {
drh77ad4e42003-01-14 02:49:27 +0000389 if {$code=="SQLITE_SELECT"} {
390 return SQLITE_DENY
391 }
392 return SQLITE_OK
393 }
394 catchsql {SELECT * FROM t2}
395} {1 {not authorized}}
396do_test auth-1.52 {
drhe22a3342003-04-22 20:30:37 +0000397 proc auth {code arg1 arg2 arg3 arg4} {
drh77ad4e42003-01-14 02:49:27 +0000398 if {$code=="SQLITE_SELECT"} {
399 return SQLITE_IGNORE
400 }
401 return SQLITE_OK
402 }
403 catchsql {SELECT * FROM t2}
404} {0 {}}
405do_test auth-1.53 {
drhe22a3342003-04-22 20:30:37 +0000406 proc auth {code arg1 arg2 arg3 arg4} {
drh77ad4e42003-01-14 02:49:27 +0000407 if {$code=="SQLITE_SELECT"} {
408 return SQLITE_OK
409 }
410 return SQLITE_OK
411 }
412 catchsql {SELECT * FROM t2}
413} {0 {11 2 33}}
414
415set f [open data1.txt w]
416puts $f "7:8:9"
417close $f
418do_test auth-1.54 {
drhe22a3342003-04-22 20:30:37 +0000419 proc auth {code arg1 arg2 arg3 arg4} {
drh77ad4e42003-01-14 02:49:27 +0000420 if {$code=="SQLITE_COPY"} {
drhe22a3342003-04-22 20:30:37 +0000421 set ::authargs [list $arg1 $arg2 $arg3 $arg4]
drh77ad4e42003-01-14 02:49:27 +0000422 return SQLITE_DENY
423 }
424 return SQLITE_OK
425 }
426 catchsql {COPY t2 FROM 'data1.txt' USING DELIMITERS ':'}
427} {1 {not authorized}}
428do_test auth-1.55 {
429 set ::authargs
drhe22a3342003-04-22 20:30:37 +0000430} {t2 data1.txt main {}}
drh77ad4e42003-01-14 02:49:27 +0000431do_test auth-1.56 {
432 execsql {SELECT * FROM t2}
433} {11 2 33}
434do_test auth-1.57 {
drhe22a3342003-04-22 20:30:37 +0000435 proc auth {code arg1 arg2 arg3 arg4} {
drh77ad4e42003-01-14 02:49:27 +0000436 if {$code=="SQLITE_COPY"} {
drhe22a3342003-04-22 20:30:37 +0000437 set ::authargs [list $arg1 $arg2 $arg3 $arg4]
drh77ad4e42003-01-14 02:49:27 +0000438 return SQLITE_IGNORE
439 }
440 return SQLITE_OK
441 }
442 catchsql {COPY t2 FROM 'data1.txt' USING DELIMITERS ':'}
443} {0 {}}
444do_test auth-1.58 {
445 set ::authargs
drhe22a3342003-04-22 20:30:37 +0000446} {t2 data1.txt main {}}
drh77ad4e42003-01-14 02:49:27 +0000447do_test auth-1.59 {
448 execsql {SELECT * FROM t2}
449} {11 2 33}
450do_test auth-1.60 {
drhe22a3342003-04-22 20:30:37 +0000451 proc auth {code arg1 arg2 arg3 arg4} {
drh77ad4e42003-01-14 02:49:27 +0000452 if {$code=="SQLITE_COPY"} {
drhe22a3342003-04-22 20:30:37 +0000453 set ::authargs [list $arg1 $arg2 $arg3 $arg4]
drh77ad4e42003-01-14 02:49:27 +0000454 return SQLITE_OK
455 }
456 return SQLITE_OK
457 }
458 catchsql {COPY t2 FROM 'data1.txt' USING DELIMITERS ':'}
459} {0 {}}
460do_test auth-1.61 {
461 set ::authargs
drhe22a3342003-04-22 20:30:37 +0000462} {t2 data1.txt main {}}
drh77ad4e42003-01-14 02:49:27 +0000463do_test auth-1.62 {
464 execsql {SELECT * FROM t2}
465} {11 2 33 7 8 9}
466
467do_test auth-1.63 {
drhe22a3342003-04-22 20:30:37 +0000468 proc auth {code arg1 arg2 arg3 arg4} {
drh77ad4e42003-01-14 02:49:27 +0000469 if {$code=="SQLITE_DELETE" && $arg1=="sqlite_master"} {
470 return SQLITE_DENY
471 }
472 return SQLITE_OK
473 }
474 catchsql {DROP TABLE t2}
475} {1 {not authorized}}
476do_test auth-1.64 {
477 execsql {SELECT name FROM sqlite_master}
478} {t2}
479do_test auth-1.65 {
drhe22a3342003-04-22 20:30:37 +0000480 proc auth {code arg1 arg2 arg3 arg4} {
drh77ad4e42003-01-14 02:49:27 +0000481 if {$code=="SQLITE_DELETE" && $arg1=="t2"} {
482 return SQLITE_DENY
483 }
484 return SQLITE_OK
485 }
486 catchsql {DROP TABLE t2}
487} {1 {not authorized}}
488do_test auth-1.66 {
489 execsql {SELECT name FROM sqlite_master}
490} {t2}
491do_test auth-1.67 {
drhe22a3342003-04-22 20:30:37 +0000492 proc auth {code arg1 arg2 arg3 arg4} {
drh77ad4e42003-01-14 02:49:27 +0000493 if {$code=="SQLITE_DELETE" && $arg1=="sqlite_temp_master"} {
494 return SQLITE_DENY
495 }
496 return SQLITE_OK
497 }
498 catchsql {DROP TABLE t1}
499} {1 {not authorized}}
500do_test auth-1.68 {
501 execsql {SELECT name FROM sqlite_temp_master}
502} {t1}
503do_test auth-1.69 {
drhe22a3342003-04-22 20:30:37 +0000504 proc auth {code arg1 arg2 arg3 arg4} {
drh77ad4e42003-01-14 02:49:27 +0000505 if {$code=="SQLITE_DELETE" && $arg1=="t1"} {
506 return SQLITE_DENY
507 }
508 return SQLITE_OK
509 }
510 catchsql {DROP TABLE t1}
511} {1 {not authorized}}
512do_test auth-1.70 {
513 execsql {SELECT name FROM sqlite_temp_master}
514} {t1}
515
516do_test auth-1.71 {
drhe22a3342003-04-22 20:30:37 +0000517 proc auth {code arg1 arg2 arg3 arg4} {
drh77ad4e42003-01-14 02:49:27 +0000518 if {$code=="SQLITE_DELETE" && $arg1=="sqlite_master"} {
519 return SQLITE_IGNORE
520 }
521 return SQLITE_OK
522 }
523 catchsql {DROP TABLE t2}
524} {0 {}}
525do_test auth-1.72 {
526 execsql {SELECT name FROM sqlite_master}
527} {t2}
528do_test auth-1.73 {
drhe22a3342003-04-22 20:30:37 +0000529 proc auth {code arg1 arg2 arg3 arg4} {
drh77ad4e42003-01-14 02:49:27 +0000530 if {$code=="SQLITE_DELETE" && $arg1=="t2"} {
531 return SQLITE_IGNORE
532 }
533 return SQLITE_OK
534 }
535 catchsql {DROP TABLE t2}
536} {0 {}}
537do_test auth-1.74 {
538 execsql {SELECT name FROM sqlite_master}
539} {t2}
540do_test auth-1.75 {
drhe22a3342003-04-22 20:30:37 +0000541 proc auth {code arg1 arg2 arg3 arg4} {
drh77ad4e42003-01-14 02:49:27 +0000542 if {$code=="SQLITE_DELETE" && $arg1=="sqlite_temp_master"} {
543 return SQLITE_IGNORE
544 }
545 return SQLITE_OK
546 }
547 catchsql {DROP TABLE t1}
548} {0 {}}
549do_test auth-1.76 {
550 execsql {SELECT name FROM sqlite_temp_master}
551} {t1}
552do_test auth-1.77 {
drhe22a3342003-04-22 20:30:37 +0000553 proc auth {code arg1 arg2 arg3 arg4} {
drh77ad4e42003-01-14 02:49:27 +0000554 if {$code=="SQLITE_DELETE" && $arg1=="t1"} {
555 return SQLITE_IGNORE
556 }
557 return SQLITE_OK
558 }
559 catchsql {DROP TABLE t1}
560} {0 {}}
561do_test auth-1.78 {
562 execsql {SELECT name FROM sqlite_temp_master}
563} {t1}
564
565do_test auth-1.79 {
drhe22a3342003-04-22 20:30:37 +0000566 proc auth {code arg1 arg2 arg3 arg4} {
drh77ad4e42003-01-14 02:49:27 +0000567 if {$code=="SQLITE_CREATE_VIEW"} {
drhe22a3342003-04-22 20:30:37 +0000568 set ::authargs [list $arg1 $arg2 $arg3 $arg4]
drh77ad4e42003-01-14 02:49:27 +0000569 return SQLITE_DENY
570 }
571 return SQLITE_OK
572 }
573 catchsql {CREATE VIEW v1 AS SELECT a+1,b+1 FROM t2}
574} {1 {not authorized}}
575do_test auth-1.80 {
576 set ::authargs
drhe22a3342003-04-22 20:30:37 +0000577} {v1 {} main {}}
drh77ad4e42003-01-14 02:49:27 +0000578do_test auth-1.81 {
579 execsql {SELECT name FROM sqlite_master}
580} {t2}
581do_test auth-1.82 {
drhe22a3342003-04-22 20:30:37 +0000582 proc auth {code arg1 arg2 arg3 arg4} {
drh77ad4e42003-01-14 02:49:27 +0000583 if {$code=="SQLITE_CREATE_VIEW"} {
drhe22a3342003-04-22 20:30:37 +0000584 set ::authargs [list $arg1 $arg2 $arg3 $arg4]
drh77ad4e42003-01-14 02:49:27 +0000585 return SQLITE_IGNORE
586 }
587 return SQLITE_OK
588 }
589 catchsql {CREATE VIEW v1 AS SELECT a+1,b+1 FROM t2}
590} {0 {}}
591do_test auth-1.83 {
592 set ::authargs
drhe22a3342003-04-22 20:30:37 +0000593} {v1 {} main {}}
drh77ad4e42003-01-14 02:49:27 +0000594do_test auth-1.84 {
595 execsql {SELECT name FROM sqlite_master}
596} {t2}
597
598do_test auth-1.85 {
drhe22a3342003-04-22 20:30:37 +0000599 proc auth {code arg1 arg2 arg3 arg4} {
drh77ad4e42003-01-14 02:49:27 +0000600 if {$code=="SQLITE_CREATE_TEMP_VIEW"} {
drhe22a3342003-04-22 20:30:37 +0000601 set ::authargs [list $arg1 $arg2 $arg3 $arg4]
drh77ad4e42003-01-14 02:49:27 +0000602 return SQLITE_DENY
603 }
604 return SQLITE_OK
605 }
606 catchsql {CREATE TEMPORARY VIEW v1 AS SELECT a+1,b+1 FROM t2}
607} {1 {not authorized}}
608do_test auth-1.86 {
609 set ::authargs
drhe22a3342003-04-22 20:30:37 +0000610} {v1 {} temp {}}
drh77ad4e42003-01-14 02:49:27 +0000611do_test auth-1.87 {
612 execsql {SELECT name FROM sqlite_temp_master}
613} {t1}
614do_test auth-1.88 {
drhe22a3342003-04-22 20:30:37 +0000615 proc auth {code arg1 arg2 arg3 arg4} {
drh77ad4e42003-01-14 02:49:27 +0000616 if {$code=="SQLITE_CREATE_TEMP_VIEW"} {
drhe22a3342003-04-22 20:30:37 +0000617 set ::authargs [list $arg1 $arg2 $arg3 $arg4]
drh77ad4e42003-01-14 02:49:27 +0000618 return SQLITE_IGNORE
619 }
620 return SQLITE_OK
621 }
622 catchsql {CREATE TEMPORARY VIEW v1 AS SELECT a+1,b+1 FROM t2}
623} {0 {}}
624do_test auth-1.89 {
625 set ::authargs
drhe22a3342003-04-22 20:30:37 +0000626} {v1 {} temp {}}
drh77ad4e42003-01-14 02:49:27 +0000627do_test auth-1.90 {
628 execsql {SELECT name FROM sqlite_temp_master}
629} {t1}
630
631do_test auth-1.91 {
drhe22a3342003-04-22 20:30:37 +0000632 proc auth {code arg1 arg2 arg3 arg4} {
drh77ad4e42003-01-14 02:49:27 +0000633 if {$code=="SQLITE_INSERT" && $arg1=="sqlite_master"} {
634 return SQLITE_DENY
635 }
636 return SQLITE_OK
637 }
638 catchsql {CREATE VIEW v1 AS SELECT a+1,b+1 FROM t2}
639} {1 {not authorized}}
640do_test auth-1.92 {
641 execsql {SELECT name FROM sqlite_master}
642} {t2}
643do_test auth-1.93 {
drhe22a3342003-04-22 20:30:37 +0000644 proc auth {code arg1 arg2 arg3 arg4} {
drh77ad4e42003-01-14 02:49:27 +0000645 if {$code=="SQLITE_INSERT" && $arg1=="sqlite_master"} {
646 return SQLITE_IGNORE
647 }
648 return SQLITE_OK
649 }
650 catchsql {CREATE VIEW v1 AS SELECT a+1,b+1 FROM t2}
651} {0 {}}
652do_test auth-1.94 {
653 execsql {SELECT name FROM sqlite_master}
654} {t2}
655
656do_test auth-1.95 {
drhe22a3342003-04-22 20:30:37 +0000657 proc auth {code arg1 arg2 arg3 arg4} {
drh77ad4e42003-01-14 02:49:27 +0000658 if {$code=="SQLITE_INSERT" && $arg1=="sqlite_temp_master"} {
659 return SQLITE_DENY
660 }
661 return SQLITE_OK
662 }
663 catchsql {CREATE TEMPORARY VIEW v1 AS SELECT a+1,b+1 FROM t2}
664} {1 {not authorized}}
665do_test auth-1.96 {
666 execsql {SELECT name FROM sqlite_temp_master}
667} {t1}
668do_test auth-1.97 {
drhe22a3342003-04-22 20:30:37 +0000669 proc auth {code arg1 arg2 arg3 arg4} {
drh77ad4e42003-01-14 02:49:27 +0000670 if {$code=="SQLITE_INSERT" && $arg1=="sqlite_temp_master"} {
671 return SQLITE_IGNORE
672 }
673 return SQLITE_OK
674 }
675 catchsql {CREATE TEMPORARY VIEW v1 AS SELECT a+1,b+1 FROM t2}
676} {0 {}}
677do_test auth-1.98 {
678 execsql {SELECT name FROM sqlite_temp_master}
679} {t1}
680
681do_test auth-1.99 {
drhe22a3342003-04-22 20:30:37 +0000682 proc auth {code arg1 arg2 arg3 arg4} {
drh77ad4e42003-01-14 02:49:27 +0000683 if {$code=="SQLITE_DELETE" && $arg1=="sqlite_master"} {
684 return SQLITE_DENY
685 }
686 return SQLITE_OK
687 }
688 catchsql {
689 CREATE VIEW v2 AS SELECT a+1,b+1 FROM t2;
690 DROP VIEW v2
691 }
692} {1 {not authorized}}
693do_test auth-1.100 {
694 execsql {SELECT name FROM sqlite_master}
695} {t2 v2}
696do_test auth-1.101 {
drhe22a3342003-04-22 20:30:37 +0000697 proc auth {code arg1 arg2 arg3 arg4} {
drh77ad4e42003-01-14 02:49:27 +0000698 if {$code=="SQLITE_DROP_VIEW"} {
drhe22a3342003-04-22 20:30:37 +0000699 set ::authargs [list $arg1 $arg2 $arg3 $arg4]
drh77ad4e42003-01-14 02:49:27 +0000700 return SQLITE_DENY
701 }
702 return SQLITE_OK
703 }
704 catchsql {DROP VIEW v2}
705} {1 {not authorized}}
706do_test auth-1.102 {
707 set ::authargs
drhe22a3342003-04-22 20:30:37 +0000708} {v2 {} main {}}
drh77ad4e42003-01-14 02:49:27 +0000709do_test auth-1.103 {
710 execsql {SELECT name FROM sqlite_master}
711} {t2 v2}
712do_test auth-1.104 {
drhe22a3342003-04-22 20:30:37 +0000713 proc auth {code arg1 arg2 arg3 arg4} {
drh77ad4e42003-01-14 02:49:27 +0000714 if {$code=="SQLITE_DELETE" && $arg1=="sqlite_master"} {
715 return SQLITE_IGNORE
716 }
717 return SQLITE_OK
718 }
719 catchsql {DROP VIEW v2}
720} {0 {}}
721do_test auth-1.105 {
722 execsql {SELECT name FROM sqlite_master}
723} {t2 v2}
724do_test auth-1.106 {
drhe22a3342003-04-22 20:30:37 +0000725 proc auth {code arg1 arg2 arg3 arg4} {
drh77ad4e42003-01-14 02:49:27 +0000726 if {$code=="SQLITE_DROP_VIEW"} {
drhe22a3342003-04-22 20:30:37 +0000727 set ::authargs [list $arg1 $arg2 $arg3 $arg4]
drh77ad4e42003-01-14 02:49:27 +0000728 return SQLITE_IGNORE
729 }
730 return SQLITE_OK
731 }
732 catchsql {DROP VIEW v2}
733} {0 {}}
734do_test auth-1.107 {
735 set ::authargs
drhe22a3342003-04-22 20:30:37 +0000736} {v2 {} main {}}
drh77ad4e42003-01-14 02:49:27 +0000737do_test auth-1.108 {
738 execsql {SELECT name FROM sqlite_master}
739} {t2 v2}
740do_test auth-1.109 {
drhe22a3342003-04-22 20:30:37 +0000741 proc auth {code arg1 arg2 arg3 arg4} {
drh77ad4e42003-01-14 02:49:27 +0000742 if {$code=="SQLITE_DROP_VIEW"} {
drhe22a3342003-04-22 20:30:37 +0000743 set ::authargs [list $arg1 $arg2 $arg3 $arg4]
drh77ad4e42003-01-14 02:49:27 +0000744 return SQLITE_OK
745 }
746 return SQLITE_OK
747 }
748 catchsql {DROP VIEW v2}
749} {0 {}}
750do_test auth-1.110 {
751 set ::authargs
drhe22a3342003-04-22 20:30:37 +0000752} {v2 {} main {}}
drh77ad4e42003-01-14 02:49:27 +0000753do_test auth-1.111 {
754 execsql {SELECT name FROM sqlite_master}
755} {t2}
756
757
758do_test auth-1.112 {
drhe22a3342003-04-22 20:30:37 +0000759 proc auth {code arg1 arg2 arg3 arg4} {
drh77ad4e42003-01-14 02:49:27 +0000760 if {$code=="SQLITE_DELETE" && $arg1=="sqlite_temp_master"} {
761 return SQLITE_DENY
762 }
763 return SQLITE_OK
764 }
765 catchsql {
766 CREATE TEMP VIEW v1 AS SELECT a+1,b+1 FROM t1;
767 DROP VIEW v1
768 }
769} {1 {not authorized}}
770do_test auth-1.113 {
771 execsql {SELECT name FROM sqlite_temp_master}
772} {t1 v1}
773do_test auth-1.114 {
drhe22a3342003-04-22 20:30:37 +0000774 proc auth {code arg1 arg2 arg3 arg4} {
drh77ad4e42003-01-14 02:49:27 +0000775 if {$code=="SQLITE_DROP_TEMP_VIEW"} {
drhe22a3342003-04-22 20:30:37 +0000776 set ::authargs [list $arg1 $arg2 $arg3 $arg4]
drh77ad4e42003-01-14 02:49:27 +0000777 return SQLITE_DENY
778 }
779 return SQLITE_OK
780 }
781 catchsql {DROP VIEW v1}
782} {1 {not authorized}}
783do_test auth-1.115 {
784 set ::authargs
drhe22a3342003-04-22 20:30:37 +0000785} {v1 {} temp {}}
drh77ad4e42003-01-14 02:49:27 +0000786do_test auth-1.116 {
787 execsql {SELECT name FROM sqlite_temp_master}
788} {t1 v1}
789do_test auth-1.117 {
drhe22a3342003-04-22 20:30:37 +0000790 proc auth {code arg1 arg2 arg3 arg4} {
drh77ad4e42003-01-14 02:49:27 +0000791 if {$code=="SQLITE_DELETE" && $arg1=="sqlite_temp_master"} {
792 return SQLITE_IGNORE
793 }
794 return SQLITE_OK
795 }
796 catchsql {DROP VIEW v1}
797} {0 {}}
798do_test auth-1.118 {
799 execsql {SELECT name FROM sqlite_temp_master}
800} {t1 v1}
801do_test auth-1.119 {
drhe22a3342003-04-22 20:30:37 +0000802 proc auth {code arg1 arg2 arg3 arg4} {
drh77ad4e42003-01-14 02:49:27 +0000803 if {$code=="SQLITE_DROP_TEMP_VIEW"} {
drhe22a3342003-04-22 20:30:37 +0000804 set ::authargs [list $arg1 $arg2 $arg3 $arg4]
drh77ad4e42003-01-14 02:49:27 +0000805 return SQLITE_IGNORE
806 }
807 return SQLITE_OK
808 }
809 catchsql {DROP VIEW v1}
810} {0 {}}
811do_test auth-1.120 {
812 set ::authargs
drhe22a3342003-04-22 20:30:37 +0000813} {v1 {} temp {}}
drh77ad4e42003-01-14 02:49:27 +0000814do_test auth-1.121 {
815 execsql {SELECT name FROM sqlite_temp_master}
816} {t1 v1}
817do_test auth-1.122 {
drhe22a3342003-04-22 20:30:37 +0000818 proc auth {code arg1 arg2 arg3 arg4} {
drh77ad4e42003-01-14 02:49:27 +0000819 if {$code=="SQLITE_DROP_TEMP_VIEW"} {
drhe22a3342003-04-22 20:30:37 +0000820 set ::authargs [list $arg1 $arg2 $arg3 $arg4]
drh77ad4e42003-01-14 02:49:27 +0000821 return SQLITE_OK
822 }
823 return SQLITE_OK
824 }
825 catchsql {DROP VIEW v1}
826} {0 {}}
827do_test auth-1.123 {
828 set ::authargs
drhe22a3342003-04-22 20:30:37 +0000829} {v1 {} temp {}}
drh77ad4e42003-01-14 02:49:27 +0000830do_test auth-1.124 {
831 execsql {SELECT name FROM sqlite_temp_master}
832} {t1}
833
834do_test auth-1.125 {
drhe22a3342003-04-22 20:30:37 +0000835 proc auth {code arg1 arg2 arg3 arg4} {
drh77ad4e42003-01-14 02:49:27 +0000836 if {$code=="SQLITE_CREATE_TRIGGER"} {
drhe22a3342003-04-22 20:30:37 +0000837 set ::authargs [list $arg1 $arg2 $arg3 $arg4]
drh77ad4e42003-01-14 02:49:27 +0000838 return SQLITE_DENY
839 }
840 return SQLITE_OK
841 }
842 catchsql {
843 CREATE TRIGGER r2 DELETE on t2 BEGIN
844 SELECT NULL;
845 END;
846 }
847} {1 {not authorized}}
848do_test auth-1.126 {
849 set ::authargs
drhe22a3342003-04-22 20:30:37 +0000850} {r2 t2 main {}}
drh77ad4e42003-01-14 02:49:27 +0000851do_test auth-1.127 {
852 execsql {SELECT name FROM sqlite_master}
853} {t2}
854do_test auth-1.128 {
drhe22a3342003-04-22 20:30:37 +0000855 proc auth {code arg1 arg2 arg3 arg4} {
drh77ad4e42003-01-14 02:49:27 +0000856 if {$code=="SQLITE_INSERT" && $arg1=="sqlite_master"} {
857 return SQLITE_DENY
858 }
859 return SQLITE_OK
860 }
861 catchsql {
862 CREATE TRIGGER r2 DELETE on t2 BEGIN
863 SELECT NULL;
864 END;
865 }
866} {1 {not authorized}}
867do_test auth-1.129 {
868 execsql {SELECT name FROM sqlite_master}
869} {t2}
870do_test auth-1.130 {
drhe22a3342003-04-22 20:30:37 +0000871 proc auth {code arg1 arg2 arg3 arg4} {
drh77ad4e42003-01-14 02:49:27 +0000872 if {$code=="SQLITE_CREATE_TRIGGER"} {
drhe22a3342003-04-22 20:30:37 +0000873 set ::authargs [list $arg1 $arg2 $arg3 $arg4]
drh77ad4e42003-01-14 02:49:27 +0000874 return SQLITE_IGNORE
875 }
876 return SQLITE_OK
877 }
878 catchsql {
879 CREATE TRIGGER r2 DELETE on t2 BEGIN
880 SELECT NULL;
881 END;
882 }
883} {0 {}}
884do_test auth-1.131 {
885 set ::authargs
drhe22a3342003-04-22 20:30:37 +0000886} {r2 t2 main {}}
drh77ad4e42003-01-14 02:49:27 +0000887do_test auth-1.132 {
888 execsql {SELECT name FROM sqlite_master}
889} {t2}
890do_test auth-1.133 {
drhe22a3342003-04-22 20:30:37 +0000891 proc auth {code arg1 arg2 arg3 arg4} {
drh77ad4e42003-01-14 02:49:27 +0000892 if {$code=="SQLITE_INSERT" && $arg1=="sqlite_master"} {
893 return SQLITE_IGNORE
894 }
895 return SQLITE_OK
896 }
897 catchsql {
898 CREATE TRIGGER r2 DELETE on t2 BEGIN
899 SELECT NULL;
900 END;
901 }
902} {0 {}}
903do_test auth-1.134 {
904 execsql {SELECT name FROM sqlite_master}
905} {t2}
906do_test auth-1.135 {
drhe22a3342003-04-22 20:30:37 +0000907 proc auth {code arg1 arg2 arg3 arg4} {
drh77ad4e42003-01-14 02:49:27 +0000908 if {$code=="SQLITE_CREATE_TRIGGER"} {
drhe22a3342003-04-22 20:30:37 +0000909 set ::authargs [list $arg1 $arg2 $arg3 $arg4]
drh77ad4e42003-01-14 02:49:27 +0000910 return SQLITE_OK
911 }
912 return SQLITE_OK
913 }
914 catchsql {
drhe22a3342003-04-22 20:30:37 +0000915 CREATE TABLE tx(id);
916 CREATE TRIGGER r2 AFTER INSERT ON t2 BEGIN
917 INSERT INTO tx VALUES(NEW.rowid);
drh77ad4e42003-01-14 02:49:27 +0000918 END;
919 }
920} {0 {}}
drhe22a3342003-04-22 20:30:37 +0000921do_test auth-1.136.1 {
drh77ad4e42003-01-14 02:49:27 +0000922 set ::authargs
drhe22a3342003-04-22 20:30:37 +0000923} {r2 t2 main {}}
924do_test auth-1.136.2 {
925 execsql {
926 SELECT name FROM sqlite_master WHERE type='trigger'
927 }
928} {r2}
929do_test auth-1.136.3 {
930 proc auth {code arg1 arg2 arg3 arg4} {
931 lappend ::authargs $code $arg1 $arg2 $arg3 $arg4
932 return SQLITE_OK
933 }
934 set ::authargs {}
935 execsql {
936 INSERT INTO t2 VALUES(1,2,3);
937 }
938 set ::authargs
939} {SQLITE_INSERT t2 {} main {} SQLITE_INSERT tx {} main r2 SQLITE_READ t2 ROWID main r2}
940do_test auth-1.136.4 {
941 execsql {
942 SELECT * FROM tx;
943 }
944} {3}
drh77ad4e42003-01-14 02:49:27 +0000945do_test auth-1.137 {
946 execsql {SELECT name FROM sqlite_master}
drhe22a3342003-04-22 20:30:37 +0000947} {t2 tx r2}
drh77ad4e42003-01-14 02:49:27 +0000948do_test auth-1.138 {
drhe22a3342003-04-22 20:30:37 +0000949 proc auth {code arg1 arg2 arg3 arg4} {
drh77ad4e42003-01-14 02:49:27 +0000950 if {$code=="SQLITE_CREATE_TEMP_TRIGGER"} {
drhe22a3342003-04-22 20:30:37 +0000951 set ::authargs [list $arg1 $arg2 $arg3 $arg4]
drh77ad4e42003-01-14 02:49:27 +0000952 return SQLITE_DENY
953 }
954 return SQLITE_OK
955 }
956 catchsql {
957 CREATE TRIGGER r1 DELETE on t1 BEGIN
958 SELECT NULL;
959 END;
960 }
961} {1 {not authorized}}
962do_test auth-1.139 {
963 set ::authargs
drhe22a3342003-04-22 20:30:37 +0000964} {r1 t1 temp {}}
drh77ad4e42003-01-14 02:49:27 +0000965do_test auth-1.140 {
966 execsql {SELECT name FROM sqlite_temp_master}
967} {t1}
968do_test auth-1.141 {
drhe22a3342003-04-22 20:30:37 +0000969 proc auth {code arg1 arg2 arg3 arg4} {
drh77ad4e42003-01-14 02:49:27 +0000970 if {$code=="SQLITE_INSERT" && $arg1=="sqlite_temp_master"} {
971 return SQLITE_DENY
972 }
973 return SQLITE_OK
974 }
975 catchsql {
976 CREATE TRIGGER r1 DELETE on t1 BEGIN
977 SELECT NULL;
978 END;
979 }
980} {1 {not authorized}}
981do_test auth-1.142 {
982 execsql {SELECT name FROM sqlite_temp_master}
983} {t1}
984do_test auth-1.143 {
drhe22a3342003-04-22 20:30:37 +0000985 proc auth {code arg1 arg2 arg3 arg4} {
drh77ad4e42003-01-14 02:49:27 +0000986 if {$code=="SQLITE_CREATE_TEMP_TRIGGER"} {
drhe22a3342003-04-22 20:30:37 +0000987 set ::authargs [list $arg1 $arg2 $arg3 $arg4]
drh77ad4e42003-01-14 02:49:27 +0000988 return SQLITE_IGNORE
989 }
990 return SQLITE_OK
991 }
992 catchsql {
993 CREATE TRIGGER r1 DELETE on t1 BEGIN
994 SELECT NULL;
995 END;
996 }
997} {0 {}}
998do_test auth-1.144 {
999 set ::authargs
drhe22a3342003-04-22 20:30:37 +00001000} {r1 t1 temp {}}
drh77ad4e42003-01-14 02:49:27 +00001001do_test auth-1.145 {
1002 execsql {SELECT name FROM sqlite_temp_master}
1003} {t1}
1004do_test auth-1.146 {
drhe22a3342003-04-22 20:30:37 +00001005 proc auth {code arg1 arg2 arg3 arg4} {
drh77ad4e42003-01-14 02:49:27 +00001006 if {$code=="SQLITE_INSERT" && $arg1=="sqlite_temp_master"} {
1007 return SQLITE_IGNORE
1008 }
1009 return SQLITE_OK
1010 }
1011 catchsql {
1012 CREATE TRIGGER r1 DELETE on t1 BEGIN
1013 SELECT NULL;
1014 END;
1015 }
1016} {0 {}}
1017do_test auth-1.147 {
1018 execsql {SELECT name FROM sqlite_temp_master}
1019} {t1}
1020do_test auth-1.148 {
drhe22a3342003-04-22 20:30:37 +00001021 proc auth {code arg1 arg2 arg3 arg4} {
drh77ad4e42003-01-14 02:49:27 +00001022 if {$code=="SQLITE_CREATE_TEMP_TRIGGER"} {
drhe22a3342003-04-22 20:30:37 +00001023 set ::authargs [list $arg1 $arg2 $arg3 $arg4]
drh77ad4e42003-01-14 02:49:27 +00001024 return SQLITE_OK
1025 }
1026 return SQLITE_OK
1027 }
1028 catchsql {
1029 CREATE TRIGGER r1 DELETE on t1 BEGIN
1030 SELECT NULL;
1031 END;
1032 }
1033} {0 {}}
1034do_test auth-1.149 {
1035 set ::authargs
drhe22a3342003-04-22 20:30:37 +00001036} {r1 t1 temp {}}
drh77ad4e42003-01-14 02:49:27 +00001037do_test auth-1.150 {
1038 execsql {SELECT name FROM sqlite_temp_master}
1039} {t1 r1}
1040
1041do_test auth-1.151 {
drhe22a3342003-04-22 20:30:37 +00001042 proc auth {code arg1 arg2 arg3 arg4} {
drh77ad4e42003-01-14 02:49:27 +00001043 if {$code=="SQLITE_DELETE" && $arg1=="sqlite_master"} {
1044 return SQLITE_DENY
1045 }
1046 return SQLITE_OK
1047 }
1048 catchsql {DROP TRIGGER r2}
1049} {1 {not authorized}}
1050do_test auth-1.152 {
1051 execsql {SELECT name FROM sqlite_master}
drhe22a3342003-04-22 20:30:37 +00001052} {t2 tx r2}
drh77ad4e42003-01-14 02:49:27 +00001053do_test auth-1.153 {
drhe22a3342003-04-22 20:30:37 +00001054 proc auth {code arg1 arg2 arg3 arg4} {
drh77ad4e42003-01-14 02:49:27 +00001055 if {$code=="SQLITE_DROP_TRIGGER"} {
drhe22a3342003-04-22 20:30:37 +00001056 set ::authargs [list $arg1 $arg2 $arg3 $arg4]
drh77ad4e42003-01-14 02:49:27 +00001057 return SQLITE_DENY
1058 }
1059 return SQLITE_OK
1060 }
1061 catchsql {DROP TRIGGER r2}
1062} {1 {not authorized}}
1063do_test auth-1.154 {
1064 set ::authargs
drhe22a3342003-04-22 20:30:37 +00001065} {r2 t2 main {}}
drh77ad4e42003-01-14 02:49:27 +00001066do_test auth-1.155 {
1067 execsql {SELECT name FROM sqlite_master}
drhe22a3342003-04-22 20:30:37 +00001068} {t2 tx r2}
drh77ad4e42003-01-14 02:49:27 +00001069do_test auth-1.156 {
drhe22a3342003-04-22 20:30:37 +00001070 proc auth {code arg1 arg2 arg3 arg4} {
drh77ad4e42003-01-14 02:49:27 +00001071 if {$code=="SQLITE_DELETE" && $arg1=="sqlite_master"} {
1072 return SQLITE_IGNORE
1073 }
1074 return SQLITE_OK
1075 }
1076 catchsql {DROP TRIGGER r2}
1077} {0 {}}
1078do_test auth-1.157 {
1079 execsql {SELECT name FROM sqlite_master}
drhe22a3342003-04-22 20:30:37 +00001080} {t2 tx r2}
drh77ad4e42003-01-14 02:49:27 +00001081do_test auth-1.158 {
drhe22a3342003-04-22 20:30:37 +00001082 proc auth {code arg1 arg2 arg3 arg4} {
drh77ad4e42003-01-14 02:49:27 +00001083 if {$code=="SQLITE_DROP_TRIGGER"} {
drhe22a3342003-04-22 20:30:37 +00001084 set ::authargs [list $arg1 $arg2 $arg3 $arg4]
drh77ad4e42003-01-14 02:49:27 +00001085 return SQLITE_IGNORE
1086 }
1087 return SQLITE_OK
1088 }
1089 catchsql {DROP TRIGGER r2}
1090} {0 {}}
1091do_test auth-1.159 {
1092 set ::authargs
drhe22a3342003-04-22 20:30:37 +00001093} {r2 t2 main {}}
drh77ad4e42003-01-14 02:49:27 +00001094do_test auth-1.160 {
1095 execsql {SELECT name FROM sqlite_master}
drhe22a3342003-04-22 20:30:37 +00001096} {t2 tx r2}
drh77ad4e42003-01-14 02:49:27 +00001097do_test auth-1.161 {
drhe22a3342003-04-22 20:30:37 +00001098 proc auth {code arg1 arg2 arg3 arg4} {
drh77ad4e42003-01-14 02:49:27 +00001099 if {$code=="SQLITE_DROP_TRIGGER"} {
drhe22a3342003-04-22 20:30:37 +00001100 set ::authargs [list $arg1 $arg2 $arg3 $arg4]
drh77ad4e42003-01-14 02:49:27 +00001101 return SQLITE_OK
1102 }
1103 return SQLITE_OK
1104 }
1105 catchsql {DROP TRIGGER r2}
1106} {0 {}}
1107do_test auth-1.162 {
1108 set ::authargs
drhe22a3342003-04-22 20:30:37 +00001109} {r2 t2 main {}}
drh77ad4e42003-01-14 02:49:27 +00001110do_test auth-1.163 {
drhe22a3342003-04-22 20:30:37 +00001111 execsql {
1112 DROP TABLE tx;
1113 DELETE FROM t2 WHERE a=1 AND b=2 AND c=3;
1114 SELECT name FROM sqlite_master;
1115 }
drh77ad4e42003-01-14 02:49:27 +00001116} {t2}
1117
1118do_test auth-1.164 {
drhe22a3342003-04-22 20:30:37 +00001119 proc auth {code arg1 arg2 arg3 arg4} {
drh77ad4e42003-01-14 02:49:27 +00001120 if {$code=="SQLITE_DELETE" && $arg1=="sqlite_temp_master"} {
1121 return SQLITE_DENY
1122 }
1123 return SQLITE_OK
1124 }
1125 catchsql {DROP TRIGGER r1}
1126} {1 {not authorized}}
1127do_test auth-1.165 {
1128 execsql {SELECT name FROM sqlite_temp_master}
1129} {t1 r1}
1130do_test auth-1.166 {
drhe22a3342003-04-22 20:30:37 +00001131 proc auth {code arg1 arg2 arg3 arg4} {
drh77ad4e42003-01-14 02:49:27 +00001132 if {$code=="SQLITE_DROP_TEMP_TRIGGER"} {
drhe22a3342003-04-22 20:30:37 +00001133 set ::authargs [list $arg1 $arg2 $arg3 $arg4]
drh77ad4e42003-01-14 02:49:27 +00001134 return SQLITE_DENY
1135 }
1136 return SQLITE_OK
1137 }
1138 catchsql {DROP TRIGGER r1}
1139} {1 {not authorized}}
1140do_test auth-1.167 {
1141 set ::authargs
drhe22a3342003-04-22 20:30:37 +00001142} {r1 t1 temp {}}
drh77ad4e42003-01-14 02:49:27 +00001143do_test auth-1.168 {
1144 execsql {SELECT name FROM sqlite_temp_master}
1145} {t1 r1}
1146do_test auth-1.169 {
drhe22a3342003-04-22 20:30:37 +00001147 proc auth {code arg1 arg2 arg3 arg4} {
drh77ad4e42003-01-14 02:49:27 +00001148 if {$code=="SQLITE_DELETE" && $arg1=="sqlite_temp_master"} {
1149 return SQLITE_IGNORE
1150 }
1151 return SQLITE_OK
1152 }
1153 catchsql {DROP TRIGGER r1}
1154} {0 {}}
1155do_test auth-1.170 {
1156 execsql {SELECT name FROM sqlite_temp_master}
1157} {t1 r1}
1158do_test auth-1.171 {
drhe22a3342003-04-22 20:30:37 +00001159 proc auth {code arg1 arg2 arg3 arg4} {
drh77ad4e42003-01-14 02:49:27 +00001160 if {$code=="SQLITE_DROP_TEMP_TRIGGER"} {
drhe22a3342003-04-22 20:30:37 +00001161 set ::authargs [list $arg1 $arg2 $arg3 $arg4]
drh77ad4e42003-01-14 02:49:27 +00001162 return SQLITE_IGNORE
1163 }
1164 return SQLITE_OK
1165 }
1166 catchsql {DROP TRIGGER r1}
1167} {0 {}}
1168do_test auth-1.172 {
1169 set ::authargs
drhe22a3342003-04-22 20:30:37 +00001170} {r1 t1 temp {}}
drh77ad4e42003-01-14 02:49:27 +00001171do_test auth-1.173 {
1172 execsql {SELECT name FROM sqlite_temp_master}
1173} {t1 r1}
1174do_test auth-1.174 {
drhe22a3342003-04-22 20:30:37 +00001175 proc auth {code arg1 arg2 arg3 arg4} {
drh77ad4e42003-01-14 02:49:27 +00001176 if {$code=="SQLITE_DROP_TEMP_TRIGGER"} {
drhe22a3342003-04-22 20:30:37 +00001177 set ::authargs [list $arg1 $arg2 $arg3 $arg4]
drh77ad4e42003-01-14 02:49:27 +00001178 return SQLITE_OK
1179 }
1180 return SQLITE_OK
1181 }
1182 catchsql {DROP TRIGGER r1}
1183} {0 {}}
1184do_test auth-1.175 {
1185 set ::authargs
drhe22a3342003-04-22 20:30:37 +00001186} {r1 t1 temp {}}
drh77ad4e42003-01-14 02:49:27 +00001187do_test auth-1.176 {
1188 execsql {SELECT name FROM sqlite_temp_master}
1189} {t1}
1190
1191do_test auth-1.177 {
drhe22a3342003-04-22 20:30:37 +00001192 proc auth {code arg1 arg2 arg3 arg4} {
drh77ad4e42003-01-14 02:49:27 +00001193 if {$code=="SQLITE_CREATE_INDEX"} {
drhe22a3342003-04-22 20:30:37 +00001194 set ::authargs [list $arg1 $arg2 $arg3 $arg4]
drh77ad4e42003-01-14 02:49:27 +00001195 return SQLITE_DENY
1196 }
1197 return SQLITE_OK
1198 }
1199 catchsql {CREATE INDEX i2 ON t2(a)}
1200} {1 {not authorized}}
1201do_test auth-1.178 {
1202 set ::authargs
drhe22a3342003-04-22 20:30:37 +00001203} {i2 t2 main {}}
drh77ad4e42003-01-14 02:49:27 +00001204do_test auth-1.179 {
1205 execsql {SELECT name FROM sqlite_master}
1206} {t2}
1207do_test auth-1.180 {
drhe22a3342003-04-22 20:30:37 +00001208 proc auth {code arg1 arg2 arg3 arg4} {
drh77ad4e42003-01-14 02:49:27 +00001209 if {$code=="SQLITE_INSERT" && $arg1=="sqlite_master"} {
1210 return SQLITE_DENY
1211 }
1212 return SQLITE_OK
1213 }
1214 catchsql {CREATE INDEX i2 ON t2(a)}
1215} {1 {not authorized}}
1216do_test auth-1.181 {
1217 execsql {SELECT name FROM sqlite_master}
1218} {t2}
1219do_test auth-1.182 {
drhe22a3342003-04-22 20:30:37 +00001220 proc auth {code arg1 arg2 arg3 arg4} {
drh77ad4e42003-01-14 02:49:27 +00001221 if {$code=="SQLITE_CREATE_INDEX"} {
drhe22a3342003-04-22 20:30:37 +00001222 set ::authargs [list $arg1 $arg2 $arg3 $arg4]
drh77ad4e42003-01-14 02:49:27 +00001223 return SQLITE_IGNORE
1224 }
1225 return SQLITE_OK
1226 }
1227 catchsql {CREATE INDEX i2 ON t2(b)}
1228} {0 {}}
1229do_test auth-1.183 {
1230 set ::authargs
drhe22a3342003-04-22 20:30:37 +00001231} {i2 t2 main {}}
drh77ad4e42003-01-14 02:49:27 +00001232do_test auth-1.184 {
1233 execsql {SELECT name FROM sqlite_master}
1234} {t2}
1235do_test auth-1.185 {
drhe22a3342003-04-22 20:30:37 +00001236 proc auth {code arg1 arg2 arg3 arg4} {
drh77ad4e42003-01-14 02:49:27 +00001237 if {$code=="SQLITE_INSERT" && $arg1=="sqlite_master"} {
1238 return SQLITE_IGNORE
1239 }
1240 return SQLITE_OK
1241 }
1242 catchsql {CREATE INDEX i2 ON t2(b)}
1243} {0 {}}
1244do_test auth-1.186 {
1245 execsql {SELECT name FROM sqlite_master}
1246} {t2}
1247do_test auth-1.187 {
drhe22a3342003-04-22 20:30:37 +00001248 proc auth {code arg1 arg2 arg3 arg4} {
drh77ad4e42003-01-14 02:49:27 +00001249 if {$code=="SQLITE_CREATE_INDEX"} {
drhe22a3342003-04-22 20:30:37 +00001250 set ::authargs [list $arg1 $arg2 $arg3 $arg4]
drh77ad4e42003-01-14 02:49:27 +00001251 return SQLITE_OK
1252 }
1253 return SQLITE_OK
1254 }
1255 catchsql {CREATE INDEX i2 ON t2(a)}
1256} {0 {}}
1257do_test auth-1.188 {
1258 set ::authargs
drhe22a3342003-04-22 20:30:37 +00001259} {i2 t2 main {}}
drh77ad4e42003-01-14 02:49:27 +00001260do_test auth-1.189 {
1261 execsql {SELECT name FROM sqlite_master}
1262} {t2 i2}
1263
1264do_test auth-1.190 {
drhe22a3342003-04-22 20:30:37 +00001265 proc auth {code arg1 arg2 arg3 arg4} {
drh77ad4e42003-01-14 02:49:27 +00001266 if {$code=="SQLITE_CREATE_TEMP_INDEX"} {
drhe22a3342003-04-22 20:30:37 +00001267 set ::authargs [list $arg1 $arg2 $arg3 $arg4]
drh77ad4e42003-01-14 02:49:27 +00001268 return SQLITE_DENY
1269 }
1270 return SQLITE_OK
1271 }
1272 catchsql {CREATE INDEX i1 ON t1(a)}
1273} {1 {not authorized}}
1274do_test auth-1.191 {
1275 set ::authargs
drhe22a3342003-04-22 20:30:37 +00001276} {i1 t1 temp {}}
drh77ad4e42003-01-14 02:49:27 +00001277do_test auth-1.192 {
1278 execsql {SELECT name FROM sqlite_temp_master}
1279} {t1}
1280do_test auth-1.193 {
drhe22a3342003-04-22 20:30:37 +00001281 proc auth {code arg1 arg2 arg3 arg4} {
drh77ad4e42003-01-14 02:49:27 +00001282 if {$code=="SQLITE_INSERT" && $arg1=="sqlite_temp_master"} {
1283 return SQLITE_DENY
1284 }
1285 return SQLITE_OK
1286 }
1287 catchsql {CREATE INDEX i1 ON t1(b)}
1288} {1 {not authorized}}
1289do_test auth-1.194 {
1290 execsql {SELECT name FROM sqlite_temp_master}
1291} {t1}
1292do_test auth-1.195 {
drhe22a3342003-04-22 20:30:37 +00001293 proc auth {code arg1 arg2 arg3 arg4} {
drh77ad4e42003-01-14 02:49:27 +00001294 if {$code=="SQLITE_CREATE_TEMP_INDEX"} {
drhe22a3342003-04-22 20:30:37 +00001295 set ::authargs [list $arg1 $arg2 $arg3 $arg4]
drh77ad4e42003-01-14 02:49:27 +00001296 return SQLITE_IGNORE
1297 }
1298 return SQLITE_OK
1299 }
1300 catchsql {CREATE INDEX i1 ON t1(b)}
1301} {0 {}}
1302do_test auth-1.196 {
1303 set ::authargs
drhe22a3342003-04-22 20:30:37 +00001304} {i1 t1 temp {}}
drh77ad4e42003-01-14 02:49:27 +00001305do_test auth-1.197 {
1306 execsql {SELECT name FROM sqlite_temp_master}
1307} {t1}
1308do_test auth-1.198 {
drhe22a3342003-04-22 20:30:37 +00001309 proc auth {code arg1 arg2 arg3 arg4} {
drh77ad4e42003-01-14 02:49:27 +00001310 if {$code=="SQLITE_INSERT" && $arg1=="sqlite_temp_master"} {
1311 return SQLITE_IGNORE
1312 }
1313 return SQLITE_OK
1314 }
1315 catchsql {CREATE INDEX i1 ON t1(c)}
1316} {0 {}}
1317do_test auth-1.199 {
1318 execsql {SELECT name FROM sqlite_temp_master}
1319} {t1}
1320do_test auth-1.200 {
drhe22a3342003-04-22 20:30:37 +00001321 proc auth {code arg1 arg2 arg3 arg4} {
drh77ad4e42003-01-14 02:49:27 +00001322 if {$code=="SQLITE_CREATE_TEMP_INDEX"} {
drhe22a3342003-04-22 20:30:37 +00001323 set ::authargs [list $arg1 $arg2 $arg3 $arg4]
drh77ad4e42003-01-14 02:49:27 +00001324 return SQLITE_OK
1325 }
1326 return SQLITE_OK
1327 }
1328 catchsql {CREATE INDEX i1 ON t1(a)}
1329} {0 {}}
1330do_test auth-1.201 {
1331 set ::authargs
drhe22a3342003-04-22 20:30:37 +00001332} {i1 t1 temp {}}
drh77ad4e42003-01-14 02:49:27 +00001333do_test auth-1.202 {
1334 execsql {SELECT name FROM sqlite_temp_master}
1335} {t1 i1}
1336
1337do_test auth-1.203 {
drhe22a3342003-04-22 20:30:37 +00001338 proc auth {code arg1 arg2 arg3 arg4} {
drh77ad4e42003-01-14 02:49:27 +00001339 if {$code=="SQLITE_DELETE" && $arg1=="sqlite_master"} {
1340 return SQLITE_DENY
1341 }
1342 return SQLITE_OK
1343 }
1344 catchsql {DROP INDEX i2}
1345} {1 {not authorized}}
1346do_test auth-1.204 {
1347 execsql {SELECT name FROM sqlite_master}
1348} {t2 i2}
1349do_test auth-1.205 {
drhe22a3342003-04-22 20:30:37 +00001350 proc auth {code arg1 arg2 arg3 arg4} {
drh77ad4e42003-01-14 02:49:27 +00001351 if {$code=="SQLITE_DROP_INDEX"} {
drhe22a3342003-04-22 20:30:37 +00001352 set ::authargs [list $arg1 $arg2 $arg3 $arg4]
drh77ad4e42003-01-14 02:49:27 +00001353 return SQLITE_DENY
1354 }
1355 return SQLITE_OK
1356 }
1357 catchsql {DROP INDEX i2}
1358} {1 {not authorized}}
1359do_test auth-1.206 {
1360 set ::authargs
drhe22a3342003-04-22 20:30:37 +00001361} {i2 t2 main {}}
drh77ad4e42003-01-14 02:49:27 +00001362do_test auth-1.207 {
1363 execsql {SELECT name FROM sqlite_master}
1364} {t2 i2}
1365do_test auth-1.208 {
drhe22a3342003-04-22 20:30:37 +00001366 proc auth {code arg1 arg2 arg3 arg4} {
drh77ad4e42003-01-14 02:49:27 +00001367 if {$code=="SQLITE_DELETE" && $arg1=="sqlite_master"} {
1368 return SQLITE_IGNORE
1369 }
1370 return SQLITE_OK
1371 }
1372 catchsql {DROP INDEX i2}
1373} {0 {}}
1374do_test auth-1.209 {
1375 execsql {SELECT name FROM sqlite_master}
1376} {t2 i2}
1377do_test auth-1.210 {
drhe22a3342003-04-22 20:30:37 +00001378 proc auth {code arg1 arg2 arg3 arg4} {
drh77ad4e42003-01-14 02:49:27 +00001379 if {$code=="SQLITE_DROP_INDEX"} {
drhe22a3342003-04-22 20:30:37 +00001380 set ::authargs [list $arg1 $arg2 $arg3 $arg4]
drh77ad4e42003-01-14 02:49:27 +00001381 return SQLITE_IGNORE
1382 }
1383 return SQLITE_OK
1384 }
1385 catchsql {DROP INDEX i2}
1386} {0 {}}
1387do_test auth-1.211 {
1388 set ::authargs
drhe22a3342003-04-22 20:30:37 +00001389} {i2 t2 main {}}
drh77ad4e42003-01-14 02:49:27 +00001390do_test auth-1.212 {
1391 execsql {SELECT name FROM sqlite_master}
1392} {t2 i2}
1393do_test auth-1.213 {
drhe22a3342003-04-22 20:30:37 +00001394 proc auth {code arg1 arg2 arg3 arg4} {
drh77ad4e42003-01-14 02:49:27 +00001395 if {$code=="SQLITE_DROP_INDEX"} {
drhe22a3342003-04-22 20:30:37 +00001396 set ::authargs [list $arg1 $arg2 $arg3 $arg4]
drh77ad4e42003-01-14 02:49:27 +00001397 return SQLITE_OK
1398 }
1399 return SQLITE_OK
1400 }
1401 catchsql {DROP INDEX i2}
1402} {0 {}}
1403do_test auth-1.214 {
1404 set ::authargs
drhe22a3342003-04-22 20:30:37 +00001405} {i2 t2 main {}}
drh77ad4e42003-01-14 02:49:27 +00001406do_test auth-1.215 {
1407 execsql {SELECT name FROM sqlite_master}
1408} {t2}
1409
1410do_test auth-1.216 {
drhe22a3342003-04-22 20:30:37 +00001411 proc auth {code arg1 arg2 arg3 arg4} {
drh77ad4e42003-01-14 02:49:27 +00001412 if {$code=="SQLITE_DELETE" && $arg1=="sqlite_temp_master"} {
1413 return SQLITE_DENY
1414 }
1415 return SQLITE_OK
1416 }
1417 catchsql {DROP INDEX i1}
1418} {1 {not authorized}}
1419do_test auth-1.217 {
1420 execsql {SELECT name FROM sqlite_temp_master}
1421} {t1 i1}
1422do_test auth-1.218 {
drhe22a3342003-04-22 20:30:37 +00001423 proc auth {code arg1 arg2 arg3 arg4} {
drh77ad4e42003-01-14 02:49:27 +00001424 if {$code=="SQLITE_DROP_TEMP_INDEX"} {
drhe22a3342003-04-22 20:30:37 +00001425 set ::authargs [list $arg1 $arg2 $arg3 $arg4]
drh77ad4e42003-01-14 02:49:27 +00001426 return SQLITE_DENY
1427 }
1428 return SQLITE_OK
1429 }
1430 catchsql {DROP INDEX i1}
1431} {1 {not authorized}}
1432do_test auth-1.219 {
1433 set ::authargs
drhe22a3342003-04-22 20:30:37 +00001434} {i1 t1 temp {}}
drh77ad4e42003-01-14 02:49:27 +00001435do_test auth-1.220 {
1436 execsql {SELECT name FROM sqlite_temp_master}
1437} {t1 i1}
1438do_test auth-1.221 {
drhe22a3342003-04-22 20:30:37 +00001439 proc auth {code arg1 arg2 arg3 arg4} {
drh77ad4e42003-01-14 02:49:27 +00001440 if {$code=="SQLITE_DELETE" && $arg1=="sqlite_temp_master"} {
1441 return SQLITE_IGNORE
1442 }
1443 return SQLITE_OK
1444 }
1445 catchsql {DROP INDEX i1}
1446} {0 {}}
1447do_test auth-1.222 {
1448 execsql {SELECT name FROM sqlite_temp_master}
1449} {t1 i1}
1450do_test auth-1.223 {
drhe22a3342003-04-22 20:30:37 +00001451 proc auth {code arg1 arg2 arg3 arg4} {
drh77ad4e42003-01-14 02:49:27 +00001452 if {$code=="SQLITE_DROP_TEMP_INDEX"} {
drhe22a3342003-04-22 20:30:37 +00001453 set ::authargs [list $arg1 $arg2 $arg3 $arg4]
drh77ad4e42003-01-14 02:49:27 +00001454 return SQLITE_IGNORE
1455 }
1456 return SQLITE_OK
1457 }
1458 catchsql {DROP INDEX i1}
1459} {0 {}}
1460do_test auth-1.224 {
1461 set ::authargs
drhe22a3342003-04-22 20:30:37 +00001462} {i1 t1 temp {}}
drh77ad4e42003-01-14 02:49:27 +00001463do_test auth-1.225 {
1464 execsql {SELECT name FROM sqlite_temp_master}
1465} {t1 i1}
1466do_test auth-1.226 {
drhe22a3342003-04-22 20:30:37 +00001467 proc auth {code arg1 arg2 arg3 arg4} {
drh77ad4e42003-01-14 02:49:27 +00001468 if {$code=="SQLITE_DROP_TEMP_INDEX"} {
drhe22a3342003-04-22 20:30:37 +00001469 set ::authargs [list $arg1 $arg2 $arg3 $arg4]
drh77ad4e42003-01-14 02:49:27 +00001470 return SQLITE_OK
1471 }
1472 return SQLITE_OK
1473 }
1474 catchsql {DROP INDEX i1}
1475} {0 {}}
1476do_test auth-1.227 {
1477 set ::authargs
drhe22a3342003-04-22 20:30:37 +00001478} {i1 t1 temp {}}
drh77ad4e42003-01-14 02:49:27 +00001479do_test auth-1.228 {
1480 execsql {SELECT name FROM sqlite_temp_master}
1481} {t1}
1482
1483do_test auth-1.229 {
drhe22a3342003-04-22 20:30:37 +00001484 proc auth {code arg1 arg2 arg3 arg4} {
drh77ad4e42003-01-14 02:49:27 +00001485 if {$code=="SQLITE_PRAGMA"} {
drhe22a3342003-04-22 20:30:37 +00001486 set ::authargs [list $arg1 $arg2 $arg3 $arg4]
drh77ad4e42003-01-14 02:49:27 +00001487 return SQLITE_DENY
1488 }
1489 return SQLITE_OK
1490 }
1491 catchsql {PRAGMA full_column_names=on}
1492} {1 {not authorized}}
1493do_test auth-1.230 {
1494 set ::authargs
drhe22a3342003-04-22 20:30:37 +00001495} {full_column_names on {} {}}
drh77ad4e42003-01-14 02:49:27 +00001496do_test auth-1.231 {
1497 execsql2 {SELECT a FROM t2}
1498} {a 11 a 7}
1499do_test auth-1.232 {
drhe22a3342003-04-22 20:30:37 +00001500 proc auth {code arg1 arg2 arg3 arg4} {
drh77ad4e42003-01-14 02:49:27 +00001501 if {$code=="SQLITE_PRAGMA"} {
drhe22a3342003-04-22 20:30:37 +00001502 set ::authargs [list $arg1 $arg2 $arg3 $arg4]
drh77ad4e42003-01-14 02:49:27 +00001503 return SQLITE_IGNORE
1504 }
1505 return SQLITE_OK
1506 }
1507 catchsql {PRAGMA full_column_names=on}
1508} {0 {}}
1509do_test auth-1.233 {
1510 set ::authargs
drhe22a3342003-04-22 20:30:37 +00001511} {full_column_names on {} {}}
drh77ad4e42003-01-14 02:49:27 +00001512do_test auth-1.234 {
1513 execsql2 {SELECT a FROM t2}
1514} {a 11 a 7}
1515do_test auth-1.235 {
drhe22a3342003-04-22 20:30:37 +00001516 proc auth {code arg1 arg2 arg3 arg4} {
drh77ad4e42003-01-14 02:49:27 +00001517 if {$code=="SQLITE_PRAGMA"} {
drhe22a3342003-04-22 20:30:37 +00001518 set ::authargs [list $arg1 $arg2 $arg3 $arg4]
drh77ad4e42003-01-14 02:49:27 +00001519 return SQLITE_OK
1520 }
1521 return SQLITE_OK
1522 }
1523 catchsql {PRAGMA full_column_names=on}
1524} {0 {}}
1525do_test auth-1.236 {
1526 execsql2 {SELECT a FROM t2}
1527} {t2.a 11 t2.a 7}
1528do_test auth-1.237 {
drhe22a3342003-04-22 20:30:37 +00001529 proc auth {code arg1 arg2 arg3 arg4} {
drh77ad4e42003-01-14 02:49:27 +00001530 if {$code=="SQLITE_PRAGMA"} {
drhe22a3342003-04-22 20:30:37 +00001531 set ::authargs [list $arg1 $arg2 $arg3 $arg4]
drh77ad4e42003-01-14 02:49:27 +00001532 return SQLITE_OK
1533 }
1534 return SQLITE_OK
1535 }
1536 catchsql {PRAGMA full_column_names=OFF}
1537} {0 {}}
1538do_test auth-1.238 {
1539 set ::authargs
drhe22a3342003-04-22 20:30:37 +00001540} {full_column_names OFF {} {}}
drh77ad4e42003-01-14 02:49:27 +00001541do_test auth-1.239 {
1542 execsql2 {SELECT a FROM t2}
1543} {a 11 a 7}
drhe5f9c642003-01-13 23:27:31 +00001544
drh2c3831c2003-01-14 13:48:20 +00001545do_test auth-1.240 {
drhe22a3342003-04-22 20:30:37 +00001546 proc auth {code arg1 arg2 arg3 arg4} {
drh2c3831c2003-01-14 13:48:20 +00001547 if {$code=="SQLITE_TRANSACTION"} {
drhe22a3342003-04-22 20:30:37 +00001548 set ::authargs [list $arg1 $arg2 $arg3 $arg4]
drh2c3831c2003-01-14 13:48:20 +00001549 return SQLITE_DENY
1550 }
1551 return SQLITE_OK
1552 }
1553 catchsql {BEGIN}
1554} {1 {not authorized}}
1555do_test auth-1.241 {
1556 set ::authargs
drhe22a3342003-04-22 20:30:37 +00001557} {BEGIN {} {} {}}
drh2c3831c2003-01-14 13:48:20 +00001558do_test auth-1.242 {
drhe22a3342003-04-22 20:30:37 +00001559 proc auth {code arg1 arg2 arg3 arg4} {
drh2c3831c2003-01-14 13:48:20 +00001560 if {$code=="SQLITE_TRANSACTION" && $arg1!="BEGIN"} {
drhe22a3342003-04-22 20:30:37 +00001561 set ::authargs [list $arg1 $arg2 $arg3 $arg4]
drh2c3831c2003-01-14 13:48:20 +00001562 return SQLITE_DENY
1563 }
1564 return SQLITE_OK
1565 }
1566 catchsql {BEGIN; INSERT INTO t2 VALUES(44,55,66); COMMIT}
1567} {1 {not authorized}}
1568do_test auth-1.243 {
1569 set ::authargs
drhe22a3342003-04-22 20:30:37 +00001570} {COMMIT {} {} {}}
drh2c3831c2003-01-14 13:48:20 +00001571do_test auth-1.244 {
1572 execsql {SELECT * FROM t2}
1573} {11 2 33 7 8 9 44 55 66}
1574do_test auth-1.245 {
1575 catchsql {ROLLBACK}
1576} {1 {not authorized}}
1577do_test auth-1.246 {
1578 set ::authargs
drhe22a3342003-04-22 20:30:37 +00001579} {ROLLBACK {} {} {}}
drh2c3831c2003-01-14 13:48:20 +00001580do_test auth-1.247 {
1581 catchsql {END TRANSACTION}
1582} {1 {not authorized}}
1583do_test auth-1.248 {
1584 set ::authargs
drhe22a3342003-04-22 20:30:37 +00001585} {COMMIT {} {} {}}
drh2c3831c2003-01-14 13:48:20 +00001586do_test auth-1.249 {
drhe22a3342003-04-22 20:30:37 +00001587 db authorizer {}
drh2c3831c2003-01-14 13:48:20 +00001588 catchsql {ROLLBACK}
1589} {0 {}}
1590do_test auth-1.250 {
1591 execsql {SELECT * FROM t2}
1592} {11 2 33 7 8 9}
1593
1594do_test auth-2.1 {
drhe22a3342003-04-22 20:30:37 +00001595 proc auth {code arg1 arg2 arg3 arg4} {
drh2c3831c2003-01-14 13:48:20 +00001596 if {$code=="SQLITE_READ" && $arg1=="t3" && $arg2=="x"} {
1597 return SQLITE_DENY
1598 }
1599 return SQLITE_OK
1600 }
drhe22a3342003-04-22 20:30:37 +00001601 db authorizer ::auth
drh2c3831c2003-01-14 13:48:20 +00001602 execsql {CREATE TABLE t3(x INTEGER PRIMARY KEY, y, z)}
1603 catchsql {SELECT * FROM t3}
1604} {1 {access to t3.x is prohibited}}
1605do_test auth-2.1 {
1606 catchsql {SELECT y,z FROM t3}
1607} {0 {}}
1608do_test auth-2.2 {
1609 catchsql {SELECT ROWID,y,z FROM t3}
1610} {1 {access to t3.x is prohibited}}
1611do_test auth-2.3 {
1612 catchsql {SELECT OID,y,z FROM t3}
1613} {1 {access to t3.x is prohibited}}
1614do_test auth-2.4 {
drhe22a3342003-04-22 20:30:37 +00001615 proc auth {code arg1 arg2 arg3 arg4} {
drh2c3831c2003-01-14 13:48:20 +00001616 if {$code=="SQLITE_READ" && $arg1=="t3" && $arg2=="x"} {
1617 return SQLITE_IGNORE
1618 }
1619 return SQLITE_OK
1620 }
1621 execsql {INSERT INTO t3 VALUES(44,55,66)}
1622 catchsql {SELECT * FROM t3}
1623} {0 {{} 55 66}}
1624do_test auth-2.5 {
1625 catchsql {SELECT rowid,y,z FROM t3}
1626} {0 {{} 55 66}}
1627do_test auth-2.6 {
drhe22a3342003-04-22 20:30:37 +00001628 proc auth {code arg1 arg2 arg3 arg4} {
drh2c3831c2003-01-14 13:48:20 +00001629 if {$code=="SQLITE_READ" && $arg1=="t3" && $arg2=="ROWID"} {
1630 return SQLITE_IGNORE
1631 }
1632 return SQLITE_OK
1633 }
1634 catchsql {SELECT * FROM t3}
1635} {0 {44 55 66}}
1636do_test auth-2.7 {
1637 catchsql {SELECT ROWID,y,z FROM t3}
1638} {0 {44 55 66}}
1639do_test auth-2.8 {
drhe22a3342003-04-22 20:30:37 +00001640 proc auth {code arg1 arg2 arg3 arg4} {
drh2c3831c2003-01-14 13:48:20 +00001641 if {$code=="SQLITE_READ" && $arg1=="t2" && $arg2=="ROWID"} {
1642 return SQLITE_IGNORE
1643 }
1644 return SQLITE_OK
1645 }
1646 catchsql {SELECT ROWID,b,c FROM t2}
1647} {0 {{} 2 33 {} 8 9}}
drhdcd997e2003-01-31 17:21:49 +00001648do_test auth-2.9.1 {
drhe22a3342003-04-22 20:30:37 +00001649 proc auth {code arg1 arg2 arg3 arg4} {
drh2c3831c2003-01-14 13:48:20 +00001650 if {$code=="SQLITE_READ" && $arg1=="t2" && $arg2=="ROWID"} {
1651 return bogus
1652 }
1653 return SQLITE_OK
1654 }
1655 catchsql {SELECT ROWID,b,c FROM t2}
1656} {1 {illegal return value (999) from the authorization function - should be SQLITE_OK, SQLITE_IGNORE, or SQLITE_DENY}}
drhdcd997e2003-01-31 17:21:49 +00001657do_test auth-2.9.2 {
1658 db errorcode
1659} {21}
drh2c3831c2003-01-14 13:48:20 +00001660do_test auth-2.10 {
drhe22a3342003-04-22 20:30:37 +00001661 proc auth {code arg1 arg2 arg3 arg4} {
drh2c3831c2003-01-14 13:48:20 +00001662 if {$code=="SQLITE_SELECT"} {
1663 return bogus
1664 }
1665 return SQLITE_OK
1666 }
1667 catchsql {SELECT ROWID,b,c FROM t2}
1668} {1 {illegal return value (1) from the authorization function - should be SQLITE_OK, SQLITE_IGNORE, or SQLITE_DENY}}
1669do_test auth-2.11 {
drhe22a3342003-04-22 20:30:37 +00001670 proc auth {code arg1 arg2 arg3 arg4} {
drh2c3831c2003-01-14 13:48:20 +00001671 if {$code=="SQLITE_READ" && $arg2=="a"} {
1672 return SQLITE_IGNORE
1673 }
1674 return SQLITE_OK
1675 }
1676 catchsql {SELECT * FROM t2, t3}
1677} {0 {{} 2 33 44 55 66 {} 8 9 44 55 66}}
1678do_test auth-2.11 {
drhe22a3342003-04-22 20:30:37 +00001679 proc auth {code arg1 arg2 arg3 arg4} {
drh2c3831c2003-01-14 13:48:20 +00001680 if {$code=="SQLITE_READ" && $arg2=="x"} {
1681 return SQLITE_IGNORE
1682 }
1683 return SQLITE_OK
1684 }
1685 catchsql {SELECT * FROM t2, t3}
1686} {0 {11 2 33 {} 55 66 7 8 9 {} 55 66}}
drhe5f9c642003-01-13 23:27:31 +00001687
drh027850b2003-04-16 20:24:52 +00001688# Make sure the OLD and NEW pseudo-tables of a trigger get authorized.
1689#
1690do_test auth-3.1 {
drhe22a3342003-04-22 20:30:37 +00001691 proc auth {code arg1 arg2 arg3 arg4} {
drh027850b2003-04-16 20:24:52 +00001692 return SQLITE_OK
1693 }
1694 execsql {
1695 CREATE TABLE tx(a1,a2,b1,b2,c1,c2);
1696 CREATE TRIGGER r1 AFTER UPDATE ON t2 FOR EACH ROW BEGIN
1697 INSERT INTO tx VALUES(OLD.a,NEW.a,OLD.b,NEW.b,OLD.c,NEW.c);
1698 END;
1699 UPDATE t2 SET a=a+1;
1700 SELECT * FROM tx;
1701 }
1702} {11 12 2 2 33 33 7 8 8 8 9 9}
1703do_test auth-3.2 {
drhe22a3342003-04-22 20:30:37 +00001704 proc auth {code arg1 arg2 arg3 arg4} {
drh027850b2003-04-16 20:24:52 +00001705 if {$code=="SQLITE_READ" && $arg1=="t2" && $arg2=="c"} {
1706 return SQLITE_IGNORE
1707 }
1708 return SQLITE_OK
1709 }
1710 execsql {
1711 DELETE FROM tx;
1712 UPDATE t2 SET a=a+100;
1713 SELECT * FROM tx;
1714 }
1715} {12 112 2 2 {} {} 8 108 8 8 {} {}}
1716
drh1962bda2003-01-12 19:33:52 +00001717
1718finish_test