blob: 8f4e3f50522ec9dab89599cc79a16ee31f6e7666 [file] [log] [blame]
drh1962bda2003-01-12 19:33:52 +00001# 2003 January 12
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 script testing the sqlite_set_authorizer() API.
13#
drh77ad4e42003-01-14 02:49:27 +000014# $Id: auth.test,v 1.3 2003/01/14 02:49:28 drh Exp $
drh1962bda2003-01-12 19:33:52 +000015#
16
17set testdir [file dirname $argv0]
18source $testdir/tester.tcl
19
20if {[info command sqlite_set_authorizer]!=""} {
21
22do_test auth-1.1 {
23 db close
24 set ::DB [sqlite db test.db]
25 proc auth {code arg1 arg2} {
drh77ad4e42003-01-14 02:49:27 +000026 if {$code=="SQLITE_INSERT" && $arg1=="sqlite_master"} {
drh1962bda2003-01-12 19:33:52 +000027 return SQLITE_DENY
28 }
29 return SQLITE_OK
30 }
31 sqlite_set_authorizer $::DB ::auth
32 catchsql {CREATE TABLE t1(a,b,c)}
drhe5f9c642003-01-13 23:27:31 +000033} {1 {not authorized}}
drh1962bda2003-01-12 19:33:52 +000034do_test auth-1.2 {
drhe5f9c642003-01-13 23:27:31 +000035 execsql {SELECT name FROM sqlite_master}
36} {}
drh77ad4e42003-01-14 02:49:27 +000037do_test auth-1.3.1 {
drh1962bda2003-01-12 19:33:52 +000038 proc auth {code arg1 arg2} {
drhe5f9c642003-01-13 23:27:31 +000039 if {$code=="SQLITE_CREATE_TABLE"} {
drh77ad4e42003-01-14 02:49:27 +000040 set ::authargs [list $arg1 $arg2]
drhe5f9c642003-01-13 23:27:31 +000041 return SQLITE_DENY
42 }
43 return SQLITE_OK
44 }
45 catchsql {CREATE TABLE t1(a,b,c)}
46} {1 {not authorized}}
drh77ad4e42003-01-14 02:49:27 +000047do_test auth-1.3.2 {
48 set ::authargs
49} {t1 {}}
drhe5f9c642003-01-13 23:27:31 +000050do_test auth-1.4 {
51 execsql {SELECT name FROM sqlite_master}
52} {}
53
54do_test auth-1.5 {
55 proc auth {code arg1 arg2} {
drh77ad4e42003-01-14 02:49:27 +000056 if {$code=="SQLITE_INSERT" && $arg1=="sqlite_temp_master"} {
drhe5f9c642003-01-13 23:27:31 +000057 return SQLITE_DENY
58 }
59 return SQLITE_OK
60 }
61 catchsql {CREATE TEMP TABLE t1(a,b,c)}
62} {1 {not authorized}}
63do_test auth-1.6 {
64 execsql {SELECT name FROM sqlite_temp_master}
65} {}
drh77ad4e42003-01-14 02:49:27 +000066do_test auth-1.7.1 {
drhe5f9c642003-01-13 23:27:31 +000067 proc auth {code arg1 arg2} {
68 if {$code=="SQLITE_CREATE_TEMP_TABLE"} {
drh77ad4e42003-01-14 02:49:27 +000069 set ::authargs [list $arg1 $arg2]
drhe5f9c642003-01-13 23:27:31 +000070 return SQLITE_DENY
71 }
72 return SQLITE_OK
73 }
74 catchsql {CREATE TEMP TABLE t1(a,b,c)}
75} {1 {not authorized}}
drh77ad4e42003-01-14 02:49:27 +000076do_test auth-1.7.2 {
77 set ::authargs
78} {t1 {}}
drhe5f9c642003-01-13 23:27:31 +000079do_test auth-1.8 {
80 execsql {SELECT name FROM sqlite_temp_master}
81} {}
82
83do_test auth-1.9 {
84 proc auth {code arg1 arg2} {
drh77ad4e42003-01-14 02:49:27 +000085 if {$code=="SQLITE_INSERT" && $arg1=="sqlite_master"} {
drh1962bda2003-01-12 19:33:52 +000086 return SQLITE_IGNORE
87 }
88 return SQLITE_OK
89 }
90 catchsql {CREATE TABLE t1(a,b,c)}
drhe5f9c642003-01-13 23:27:31 +000091} {0 {}}
92do_test auth-1.10 {
93 execsql {SELECT name FROM sqlite_master}
94} {}
95do_test auth-1.11 {
drh1962bda2003-01-12 19:33:52 +000096 proc auth {code arg1 arg2} {
drhe5f9c642003-01-13 23:27:31 +000097 if {$code=="SQLITE_CREATE_TABLE"} {
drh77ad4e42003-01-14 02:49:27 +000098 set ::authargs [list $arg1 $arg2]
drhe5f9c642003-01-13 23:27:31 +000099 return SQLITE_IGNORE
drh1962bda2003-01-12 19:33:52 +0000100 }
101 return SQLITE_OK
102 }
103 catchsql {CREATE TABLE t1(a,b,c)}
104} {0 {}}
drhe5f9c642003-01-13 23:27:31 +0000105do_test auth-1.12 {
drh1962bda2003-01-12 19:33:52 +0000106 execsql {SELECT name FROM sqlite_master}
drhe5f9c642003-01-13 23:27:31 +0000107} {}
108do_test auth-1.13 {
drh1962bda2003-01-12 19:33:52 +0000109 proc auth {code arg1 arg2} {
drh77ad4e42003-01-14 02:49:27 +0000110 if {$code=="SQLITE_INSERT" && $arg1=="sqlite_temp_master"} {
drhe5f9c642003-01-13 23:27:31 +0000111 return SQLITE_IGNORE
112 }
113 return SQLITE_OK
114 }
115 catchsql {CREATE TEMP TABLE t1(a,b,c)}
116} {0 {}}
117do_test auth-1.14 {
118 execsql {SELECT name FROM sqlite_temp_master}
119} {}
120do_test auth-1.15 {
121 proc auth {code arg1 arg2} {
122 if {$code=="SQLITE_CREATE_TEMP_TABLE"} {
drh77ad4e42003-01-14 02:49:27 +0000123 set ::authargs [list $arg1 $arg2]
drhe5f9c642003-01-13 23:27:31 +0000124 return SQLITE_IGNORE
125 }
126 return SQLITE_OK
127 }
128 catchsql {CREATE TEMP TABLE t1(a,b,c)}
129} {0 {}}
130do_test auth-1.16 {
131 execsql {SELECT name FROM sqlite_temp_master}
132} {}
133
134do_test auth-1.17 {
135 proc auth {code arg1 arg2} {
136 if {$code=="SQLITE_CREATE_TABLE"} {
drh77ad4e42003-01-14 02:49:27 +0000137 set ::authargs [list $arg1 $arg2]
138 return SQLITE_DENY
drhe5f9c642003-01-13 23:27:31 +0000139 }
140 return SQLITE_OK
141 }
142 catchsql {CREATE TEMP TABLE t1(a,b,c)}
143} {0 {}}
144do_test auth-1.18 {
145 execsql {SELECT name FROM sqlite_temp_master}
146} {t1}
drh77ad4e42003-01-14 02:49:27 +0000147do_test auth-1.19.1 {
148 set ::authargs {}
drhe5f9c642003-01-13 23:27:31 +0000149 proc auth {code arg1 arg2} {
150 if {$code=="SQLITE_CREATE_TEMP_TABLE"} {
drh77ad4e42003-01-14 02:49:27 +0000151 set ::authargs [list $arg1 $arg2]
152 return SQLITE_DENY
drh1962bda2003-01-12 19:33:52 +0000153 }
154 return SQLITE_OK
155 }
156 catchsql {CREATE TABLE t2(a,b,c)}
drh1962bda2003-01-12 19:33:52 +0000157} {0 {}}
drh77ad4e42003-01-14 02:49:27 +0000158do_test auth-1.19.2 {
159 set ::authargs
160} {}
drh1962bda2003-01-12 19:33:52 +0000161do_test auth-1.20 {
drhe5f9c642003-01-13 23:27:31 +0000162 execsql {SELECT name FROM sqlite_master}
163} {t2}
drh1962bda2003-01-12 19:33:52 +0000164
drh77ad4e42003-01-14 02:49:27 +0000165do_test auth-1.21.1 {
166 proc auth {code arg1 arg2} {
167 if {$code=="SQLITE_DROP_TABLE"} {
168 set ::authargs [list $arg1 $arg2]
169 return SQLITE_DENY
170 }
171 return SQLITE_OK
172 }
173 catchsql {DROP TABLE t2}
174} {1 {not authorized}}
175do_test auth-1.21.2 {
176 set ::authargs
177} {t2 {}}
178do_test auth-1.22 {
179 execsql {SELECT name FROM sqlite_master}
180} {t2}
181do_test auth-1.23.1 {
182 proc auth {code arg1 arg2} {
183 if {$code=="SQLITE_DROP_TABLE"} {
184 set ::authargs [list $arg1 $arg2]
185 return SQLITE_IGNORE
186 }
187 return SQLITE_OK
188 }
189 catchsql {DROP TABLE t2}
190} {0 {}}
191do_test auth-1.23.2 {
192 set ::authargs
193} {t2 {}}
194do_test auth-1.24 {
195 execsql {SELECT name FROM sqlite_master}
196} {t2}
drhe5f9c642003-01-13 23:27:31 +0000197
drh77ad4e42003-01-14 02:49:27 +0000198do_test auth-1.25 {
199 proc auth {code arg1 arg2} {
200 if {$code=="SQLITE_DROP_TEMP_TABLE"} {
201 set ::authargs [list $arg1 $arg2]
202 return SQLITE_DENY
203 }
204 return SQLITE_OK
205 }
206 catchsql {DROP TABLE t1}
207} {1 {not authorized}}
208do_test auth-1.26 {
209 execsql {SELECT name FROM sqlite_temp_master}
210} {t1}
211do_test auth-1.27 {
212 proc auth {code arg1 arg2} {
213 if {$code=="SQLITE_DROP_TEMP_TABLE"} {
214 set ::authargs [list $arg1 $arg2]
215 return SQLITE_IGNORE
216 }
217 return SQLITE_OK
218 }
219 catchsql {DROP TABLE t1}
220} {0 {}}
221do_test auth-1.28 {
222 execsql {SELECT name FROM sqlite_temp_master}
223} {t1}
224
225do_test auth-1.29 {
226 proc auth {code arg1 arg2} {
227 if {$code=="SQLITE_INSERT" && $arg1=="t2"} {
228 return SQLITE_DENY
229 }
230 return SQLITE_OK
231 }
232 catchsql {INSERT INTO t2 VALUES(1,2,3)}
233} {1 {not authorized}}
234do_test auth-1.30 {
235 execsql {SELECT * FROM t2}
236} {}
237do_test auth-1.31 {
238 proc auth {code arg1 arg2} {
239 if {$code=="SQLITE_INSERT" && $arg1=="t2"} {
240 return SQLITE_IGNORE
241 }
242 return SQLITE_OK
243 }
244 catchsql {INSERT INTO t2 VALUES(1,2,3)}
245} {0 {}}
246do_test auth-1.32 {
247 execsql {SELECT * FROM t2}
248} {}
249do_test auth-1.33 {
250 proc auth {code arg1 arg2} {
251 if {$code=="SQLITE_INSERT" && $arg1=="t1"} {
252 return SQLITE_IGNORE
253 }
254 return SQLITE_OK
255 }
256 catchsql {INSERT INTO t2 VALUES(1,2,3)}
257} {0 {}}
258do_test auth-1.34 {
259 execsql {SELECT * FROM t2}
260} {1 2 3}
261
262do_test auth-1.35 {
263 proc auth {code arg1 arg2} {
264 if {$code=="SQLITE_READ" && $arg1=="t2" && $arg2=="b"} {
265 return SQLITE_DENY
266 }
267 return SQLITE_OK
268 }
269 catchsql {SELECT * FROM t2}
270} {1 {access to t2.b is prohibited}}
271do_test auth-1.36 {
272 proc auth {code arg1 arg2} {
273 if {$code=="SQLITE_READ" && $arg1=="t2" && $arg2=="b"} {
274 return SQLITE_IGNORE
275 }
276 return SQLITE_OK
277 }
278 catchsql {SELECT * FROM t2}
279} {0 {1 {} 3}}
280do_test auth-1.37 {
281 proc auth {code arg1 arg2} {
282 if {$code=="SQLITE_READ" && $arg1=="t2" && $arg2=="b"} {
283 return SQLITE_IGNORE
284 }
285 return SQLITE_OK
286 }
287 catchsql {SELECT * FROM t2 WHERE b=2}
288} {0 {}}
289do_test auth-1.38 {
290 proc auth {code arg1 arg2} {
291 if {$code=="SQLITE_READ" && $arg1=="t2" && $arg2=="a"} {
292 return SQLITE_IGNORE
293 }
294 return SQLITE_OK
295 }
296 catchsql {SELECT * FROM t2 WHERE b=2}
297} {0 {{} 2 3}}
298do_test auth-1.39 {
299 proc auth {code arg1 arg2} {
300 if {$code=="SQLITE_READ" && $arg1=="t2" && $arg2=="b"} {
301 return SQLITE_IGNORE
302 }
303 return SQLITE_OK
304 }
305 catchsql {SELECT * FROM t2 WHERE b IS NULL}
306} {0 {1 {} 3}}
307do_test auth-1.40 {
308 proc auth {code arg1 arg2} {
309 if {$code=="SQLITE_READ" && $arg1=="t2" && $arg2=="b"} {
310 return SQLITE_DENY
311 }
312 return SQLITE_OK
313 }
314 catchsql {SELECT a,c FROM t2 WHERE b IS NULL}
315} {1 {access to t2.b is prohibited}}
316
317do_test auth-1.41 {
318 proc auth {code arg1 arg2} {
319 if {$code=="SQLITE_UPDATE" && $arg1=="t2" && $arg2=="b"} {
320 return SQLITE_DENY
321 }
322 return SQLITE_OK
323 }
324 catchsql {UPDATE t2 SET a=11}
325} {0 {}}
326do_test auth-1.42 {
327 execsql {SELECT * FROM t2}
328} {11 2 3}
329do_test auth-1.43 {
330 proc auth {code arg1 arg2} {
331 if {$code=="SQLITE_UPDATE" && $arg1=="t2" && $arg2=="b"} {
332 return SQLITE_DENY
333 }
334 return SQLITE_OK
335 }
336 catchsql {UPDATE t2 SET b=22, c=33}
337} {1 {not authorized}}
338do_test auth-1.44 {
339 execsql {SELECT * FROM t2}
340} {11 2 3}
341do_test auth-1.45 {
342 proc auth {code arg1 arg2} {
343 if {$code=="SQLITE_UPDATE" && $arg1=="t2" && $arg2=="b"} {
344 return SQLITE_IGNORE
345 }
346 return SQLITE_OK
347 }
348 catchsql {UPDATE t2 SET b=22, c=33}
349} {0 {}}
350do_test auth-1.46 {
351 execsql {SELECT * FROM t2}
352} {11 2 33}
353
354do_test auth-1.47 {
355 proc auth {code arg1 arg2} {
356 if {$code=="SQLITE_DELETE" && $arg1=="t2"} {
357 return SQLITE_DENY
358 }
359 return SQLITE_OK
360 }
361 catchsql {DELETE FROM t2 WHERE a=11}
362} {1 {not authorized}}
363do_test auth-1.48 {
364 execsql {SELECT * FROM t2}
365} {11 2 33}
366do_test auth-1.49 {
367 proc auth {code arg1 arg2} {
368 if {$code=="SQLITE_DELETE" && $arg1=="t2"} {
369 return SQLITE_IGNORE
370 }
371 return SQLITE_OK
372 }
373 catchsql {DELETE FROM t2 WHERE a=11}
374} {0 {}}
375do_test auth-1.50 {
376 execsql {SELECT * FROM t2}
377} {11 2 33}
378
379do_test auth-1.51 {
380 proc auth {code arg1 arg2} {
381 if {$code=="SQLITE_SELECT"} {
382 return SQLITE_DENY
383 }
384 return SQLITE_OK
385 }
386 catchsql {SELECT * FROM t2}
387} {1 {not authorized}}
388do_test auth-1.52 {
389 proc auth {code arg1 arg2} {
390 if {$code=="SQLITE_SELECT"} {
391 return SQLITE_IGNORE
392 }
393 return SQLITE_OK
394 }
395 catchsql {SELECT * FROM t2}
396} {0 {}}
397do_test auth-1.53 {
398 proc auth {code arg1 arg2} {
399 if {$code=="SQLITE_SELECT"} {
400 return SQLITE_OK
401 }
402 return SQLITE_OK
403 }
404 catchsql {SELECT * FROM t2}
405} {0 {11 2 33}}
406
407set f [open data1.txt w]
408puts $f "7:8:9"
409close $f
410do_test auth-1.54 {
411 proc auth {code arg1 arg2} {
412 if {$code=="SQLITE_COPY"} {
413 set ::authargs [list $arg1 $arg2]
414 return SQLITE_DENY
415 }
416 return SQLITE_OK
417 }
418 catchsql {COPY t2 FROM 'data1.txt' USING DELIMITERS ':'}
419} {1 {not authorized}}
420do_test auth-1.55 {
421 set ::authargs
422} {t2 data1.txt}
423do_test auth-1.56 {
424 execsql {SELECT * FROM t2}
425} {11 2 33}
426do_test auth-1.57 {
427 proc auth {code arg1 arg2} {
428 if {$code=="SQLITE_COPY"} {
429 set ::authargs [list $arg1 $arg2]
430 return SQLITE_IGNORE
431 }
432 return SQLITE_OK
433 }
434 catchsql {COPY t2 FROM 'data1.txt' USING DELIMITERS ':'}
435} {0 {}}
436do_test auth-1.58 {
437 set ::authargs
438} {t2 data1.txt}
439do_test auth-1.59 {
440 execsql {SELECT * FROM t2}
441} {11 2 33}
442do_test auth-1.60 {
443 proc auth {code arg1 arg2} {
444 if {$code=="SQLITE_COPY"} {
445 set ::authargs [list $arg1 $arg2]
446 return SQLITE_OK
447 }
448 return SQLITE_OK
449 }
450 catchsql {COPY t2 FROM 'data1.txt' USING DELIMITERS ':'}
451} {0 {}}
452do_test auth-1.61 {
453 set ::authargs
454} {t2 data1.txt}
455do_test auth-1.62 {
456 execsql {SELECT * FROM t2}
457} {11 2 33 7 8 9}
458
459do_test auth-1.63 {
460 proc auth {code arg1 arg2} {
461 if {$code=="SQLITE_DELETE" && $arg1=="sqlite_master"} {
462 return SQLITE_DENY
463 }
464 return SQLITE_OK
465 }
466 catchsql {DROP TABLE t2}
467} {1 {not authorized}}
468do_test auth-1.64 {
469 execsql {SELECT name FROM sqlite_master}
470} {t2}
471do_test auth-1.65 {
472 proc auth {code arg1 arg2} {
473 if {$code=="SQLITE_DELETE" && $arg1=="t2"} {
474 return SQLITE_DENY
475 }
476 return SQLITE_OK
477 }
478 catchsql {DROP TABLE t2}
479} {1 {not authorized}}
480do_test auth-1.66 {
481 execsql {SELECT name FROM sqlite_master}
482} {t2}
483do_test auth-1.67 {
484 proc auth {code arg1 arg2} {
485 if {$code=="SQLITE_DELETE" && $arg1=="sqlite_temp_master"} {
486 return SQLITE_DENY
487 }
488 return SQLITE_OK
489 }
490 catchsql {DROP TABLE t1}
491} {1 {not authorized}}
492do_test auth-1.68 {
493 execsql {SELECT name FROM sqlite_temp_master}
494} {t1}
495do_test auth-1.69 {
496 proc auth {code arg1 arg2} {
497 if {$code=="SQLITE_DELETE" && $arg1=="t1"} {
498 return SQLITE_DENY
499 }
500 return SQLITE_OK
501 }
502 catchsql {DROP TABLE t1}
503} {1 {not authorized}}
504do_test auth-1.70 {
505 execsql {SELECT name FROM sqlite_temp_master}
506} {t1}
507
508do_test auth-1.71 {
509 proc auth {code arg1 arg2} {
510 if {$code=="SQLITE_DELETE" && $arg1=="sqlite_master"} {
511 return SQLITE_IGNORE
512 }
513 return SQLITE_OK
514 }
515 catchsql {DROP TABLE t2}
516} {0 {}}
517do_test auth-1.72 {
518 execsql {SELECT name FROM sqlite_master}
519} {t2}
520do_test auth-1.73 {
521 proc auth {code arg1 arg2} {
522 if {$code=="SQLITE_DELETE" && $arg1=="t2"} {
523 return SQLITE_IGNORE
524 }
525 return SQLITE_OK
526 }
527 catchsql {DROP TABLE t2}
528} {0 {}}
529do_test auth-1.74 {
530 execsql {SELECT name FROM sqlite_master}
531} {t2}
532do_test auth-1.75 {
533 proc auth {code arg1 arg2} {
534 if {$code=="SQLITE_DELETE" && $arg1=="sqlite_temp_master"} {
535 return SQLITE_IGNORE
536 }
537 return SQLITE_OK
538 }
539 catchsql {DROP TABLE t1}
540} {0 {}}
541do_test auth-1.76 {
542 execsql {SELECT name FROM sqlite_temp_master}
543} {t1}
544do_test auth-1.77 {
545 proc auth {code arg1 arg2} {
546 if {$code=="SQLITE_DELETE" && $arg1=="t1"} {
547 return SQLITE_IGNORE
548 }
549 return SQLITE_OK
550 }
551 catchsql {DROP TABLE t1}
552} {0 {}}
553do_test auth-1.78 {
554 execsql {SELECT name FROM sqlite_temp_master}
555} {t1}
556
557do_test auth-1.79 {
558 proc auth {code arg1 arg2} {
559 if {$code=="SQLITE_CREATE_VIEW"} {
560 set ::authargs [list $arg1 $arg2]
561 return SQLITE_DENY
562 }
563 return SQLITE_OK
564 }
565 catchsql {CREATE VIEW v1 AS SELECT a+1,b+1 FROM t2}
566} {1 {not authorized}}
567do_test auth-1.80 {
568 set ::authargs
569} {v1 {}}
570do_test auth-1.81 {
571 execsql {SELECT name FROM sqlite_master}
572} {t2}
573do_test auth-1.82 {
574 proc auth {code arg1 arg2} {
575 if {$code=="SQLITE_CREATE_VIEW"} {
576 set ::authargs [list $arg1 $arg2]
577 return SQLITE_IGNORE
578 }
579 return SQLITE_OK
580 }
581 catchsql {CREATE VIEW v1 AS SELECT a+1,b+1 FROM t2}
582} {0 {}}
583do_test auth-1.83 {
584 set ::authargs
585} {v1 {}}
586do_test auth-1.84 {
587 execsql {SELECT name FROM sqlite_master}
588} {t2}
589
590do_test auth-1.85 {
591 proc auth {code arg1 arg2} {
592 if {$code=="SQLITE_CREATE_TEMP_VIEW"} {
593 set ::authargs [list $arg1 $arg2]
594 return SQLITE_DENY
595 }
596 return SQLITE_OK
597 }
598 catchsql {CREATE TEMPORARY VIEW v1 AS SELECT a+1,b+1 FROM t2}
599} {1 {not authorized}}
600do_test auth-1.86 {
601 set ::authargs
602} {v1 {}}
603do_test auth-1.87 {
604 execsql {SELECT name FROM sqlite_temp_master}
605} {t1}
606do_test auth-1.88 {
607 proc auth {code arg1 arg2} {
608 if {$code=="SQLITE_CREATE_TEMP_VIEW"} {
609 set ::authargs [list $arg1 $arg2]
610 return SQLITE_IGNORE
611 }
612 return SQLITE_OK
613 }
614 catchsql {CREATE TEMPORARY VIEW v1 AS SELECT a+1,b+1 FROM t2}
615} {0 {}}
616do_test auth-1.89 {
617 set ::authargs
618} {v1 {}}
619do_test auth-1.90 {
620 execsql {SELECT name FROM sqlite_temp_master}
621} {t1}
622
623do_test auth-1.91 {
624 proc auth {code arg1 arg2} {
625 if {$code=="SQLITE_INSERT" && $arg1=="sqlite_master"} {
626 return SQLITE_DENY
627 }
628 return SQLITE_OK
629 }
630 catchsql {CREATE VIEW v1 AS SELECT a+1,b+1 FROM t2}
631} {1 {not authorized}}
632do_test auth-1.92 {
633 execsql {SELECT name FROM sqlite_master}
634} {t2}
635do_test auth-1.93 {
636 proc auth {code arg1 arg2} {
637 if {$code=="SQLITE_INSERT" && $arg1=="sqlite_master"} {
638 return SQLITE_IGNORE
639 }
640 return SQLITE_OK
641 }
642 catchsql {CREATE VIEW v1 AS SELECT a+1,b+1 FROM t2}
643} {0 {}}
644do_test auth-1.94 {
645 execsql {SELECT name FROM sqlite_master}
646} {t2}
647
648do_test auth-1.95 {
649 proc auth {code arg1 arg2} {
650 if {$code=="SQLITE_INSERT" && $arg1=="sqlite_temp_master"} {
651 return SQLITE_DENY
652 }
653 return SQLITE_OK
654 }
655 catchsql {CREATE TEMPORARY VIEW v1 AS SELECT a+1,b+1 FROM t2}
656} {1 {not authorized}}
657do_test auth-1.96 {
658 execsql {SELECT name FROM sqlite_temp_master}
659} {t1}
660do_test auth-1.97 {
661 proc auth {code arg1 arg2} {
662 if {$code=="SQLITE_INSERT" && $arg1=="sqlite_temp_master"} {
663 return SQLITE_IGNORE
664 }
665 return SQLITE_OK
666 }
667 catchsql {CREATE TEMPORARY VIEW v1 AS SELECT a+1,b+1 FROM t2}
668} {0 {}}
669do_test auth-1.98 {
670 execsql {SELECT name FROM sqlite_temp_master}
671} {t1}
672
673do_test auth-1.99 {
674 proc auth {code arg1 arg2} {
675 if {$code=="SQLITE_DELETE" && $arg1=="sqlite_master"} {
676 return SQLITE_DENY
677 }
678 return SQLITE_OK
679 }
680 catchsql {
681 CREATE VIEW v2 AS SELECT a+1,b+1 FROM t2;
682 DROP VIEW v2
683 }
684} {1 {not authorized}}
685do_test auth-1.100 {
686 execsql {SELECT name FROM sqlite_master}
687} {t2 v2}
688do_test auth-1.101 {
689 proc auth {code arg1 arg2} {
690 if {$code=="SQLITE_DROP_VIEW"} {
691 set ::authargs [list $arg1 $arg2]
692 return SQLITE_DENY
693 }
694 return SQLITE_OK
695 }
696 catchsql {DROP VIEW v2}
697} {1 {not authorized}}
698do_test auth-1.102 {
699 set ::authargs
700} {v2 {}}
701do_test auth-1.103 {
702 execsql {SELECT name FROM sqlite_master}
703} {t2 v2}
704do_test auth-1.104 {
705 proc auth {code arg1 arg2} {
706 if {$code=="SQLITE_DELETE" && $arg1=="sqlite_master"} {
707 return SQLITE_IGNORE
708 }
709 return SQLITE_OK
710 }
711 catchsql {DROP VIEW v2}
712} {0 {}}
713do_test auth-1.105 {
714 execsql {SELECT name FROM sqlite_master}
715} {t2 v2}
716do_test auth-1.106 {
717 proc auth {code arg1 arg2} {
718 if {$code=="SQLITE_DROP_VIEW"} {
719 set ::authargs [list $arg1 $arg2]
720 return SQLITE_IGNORE
721 }
722 return SQLITE_OK
723 }
724 catchsql {DROP VIEW v2}
725} {0 {}}
726do_test auth-1.107 {
727 set ::authargs
728} {v2 {}}
729do_test auth-1.108 {
730 execsql {SELECT name FROM sqlite_master}
731} {t2 v2}
732do_test auth-1.109 {
733 proc auth {code arg1 arg2} {
734 if {$code=="SQLITE_DROP_VIEW"} {
735 set ::authargs [list $arg1 $arg2]
736 return SQLITE_OK
737 }
738 return SQLITE_OK
739 }
740 catchsql {DROP VIEW v2}
741} {0 {}}
742do_test auth-1.110 {
743 set ::authargs
744} {v2 {}}
745do_test auth-1.111 {
746 execsql {SELECT name FROM sqlite_master}
747} {t2}
748
749
750do_test auth-1.112 {
751 proc auth {code arg1 arg2} {
752 if {$code=="SQLITE_DELETE" && $arg1=="sqlite_temp_master"} {
753 return SQLITE_DENY
754 }
755 return SQLITE_OK
756 }
757 catchsql {
758 CREATE TEMP VIEW v1 AS SELECT a+1,b+1 FROM t1;
759 DROP VIEW v1
760 }
761} {1 {not authorized}}
762do_test auth-1.113 {
763 execsql {SELECT name FROM sqlite_temp_master}
764} {t1 v1}
765do_test auth-1.114 {
766 proc auth {code arg1 arg2} {
767 if {$code=="SQLITE_DROP_TEMP_VIEW"} {
768 set ::authargs [list $arg1 $arg2]
769 return SQLITE_DENY
770 }
771 return SQLITE_OK
772 }
773 catchsql {DROP VIEW v1}
774} {1 {not authorized}}
775do_test auth-1.115 {
776 set ::authargs
777} {v1 {}}
778do_test auth-1.116 {
779 execsql {SELECT name FROM sqlite_temp_master}
780} {t1 v1}
781do_test auth-1.117 {
782 proc auth {code arg1 arg2} {
783 if {$code=="SQLITE_DELETE" && $arg1=="sqlite_temp_master"} {
784 return SQLITE_IGNORE
785 }
786 return SQLITE_OK
787 }
788 catchsql {DROP VIEW v1}
789} {0 {}}
790do_test auth-1.118 {
791 execsql {SELECT name FROM sqlite_temp_master}
792} {t1 v1}
793do_test auth-1.119 {
794 proc auth {code arg1 arg2} {
795 if {$code=="SQLITE_DROP_TEMP_VIEW"} {
796 set ::authargs [list $arg1 $arg2]
797 return SQLITE_IGNORE
798 }
799 return SQLITE_OK
800 }
801 catchsql {DROP VIEW v1}
802} {0 {}}
803do_test auth-1.120 {
804 set ::authargs
805} {v1 {}}
806do_test auth-1.121 {
807 execsql {SELECT name FROM sqlite_temp_master}
808} {t1 v1}
809do_test auth-1.122 {
810 proc auth {code arg1 arg2} {
811 if {$code=="SQLITE_DROP_TEMP_VIEW"} {
812 set ::authargs [list $arg1 $arg2]
813 return SQLITE_OK
814 }
815 return SQLITE_OK
816 }
817 catchsql {DROP VIEW v1}
818} {0 {}}
819do_test auth-1.123 {
820 set ::authargs
821} {v1 {}}
822do_test auth-1.124 {
823 execsql {SELECT name FROM sqlite_temp_master}
824} {t1}
825
826do_test auth-1.125 {
827 proc auth {code arg1 arg2} {
828 if {$code=="SQLITE_CREATE_TRIGGER"} {
829 set ::authargs [list $arg1 $arg2]
830 return SQLITE_DENY
831 }
832 return SQLITE_OK
833 }
834 catchsql {
835 CREATE TRIGGER r2 DELETE on t2 BEGIN
836 SELECT NULL;
837 END;
838 }
839} {1 {not authorized}}
840do_test auth-1.126 {
841 set ::authargs
842} {r2 t2}
843do_test auth-1.127 {
844 execsql {SELECT name FROM sqlite_master}
845} {t2}
846do_test auth-1.128 {
847 proc auth {code arg1 arg2} {
848 if {$code=="SQLITE_INSERT" && $arg1=="sqlite_master"} {
849 return SQLITE_DENY
850 }
851 return SQLITE_OK
852 }
853 catchsql {
854 CREATE TRIGGER r2 DELETE on t2 BEGIN
855 SELECT NULL;
856 END;
857 }
858} {1 {not authorized}}
859do_test auth-1.129 {
860 execsql {SELECT name FROM sqlite_master}
861} {t2}
862do_test auth-1.130 {
863 proc auth {code arg1 arg2} {
864 if {$code=="SQLITE_CREATE_TRIGGER"} {
865 set ::authargs [list $arg1 $arg2]
866 return SQLITE_IGNORE
867 }
868 return SQLITE_OK
869 }
870 catchsql {
871 CREATE TRIGGER r2 DELETE on t2 BEGIN
872 SELECT NULL;
873 END;
874 }
875} {0 {}}
876do_test auth-1.131 {
877 set ::authargs
878} {r2 t2}
879do_test auth-1.132 {
880 execsql {SELECT name FROM sqlite_master}
881} {t2}
882do_test auth-1.133 {
883 proc auth {code arg1 arg2} {
884 if {$code=="SQLITE_INSERT" && $arg1=="sqlite_master"} {
885 return SQLITE_IGNORE
886 }
887 return SQLITE_OK
888 }
889 catchsql {
890 CREATE TRIGGER r2 DELETE on t2 BEGIN
891 SELECT NULL;
892 END;
893 }
894} {0 {}}
895do_test auth-1.134 {
896 execsql {SELECT name FROM sqlite_master}
897} {t2}
898do_test auth-1.135 {
899 proc auth {code arg1 arg2} {
900 if {$code=="SQLITE_CREATE_TRIGGER"} {
901 set ::authargs [list $arg1 $arg2]
902 return SQLITE_OK
903 }
904 return SQLITE_OK
905 }
906 catchsql {
907 CREATE TRIGGER r2 DELETE on t2 BEGIN
908 SELECT NULL;
909 END;
910 }
911} {0 {}}
912do_test auth-1.136 {
913 set ::authargs
914} {r2 t2}
915do_test auth-1.137 {
916 execsql {SELECT name FROM sqlite_master}
917} {t2 r2}
918
919do_test auth-1.138 {
920 proc auth {code arg1 arg2} {
921 if {$code=="SQLITE_CREATE_TEMP_TRIGGER"} {
922 set ::authargs [list $arg1 $arg2]
923 return SQLITE_DENY
924 }
925 return SQLITE_OK
926 }
927 catchsql {
928 CREATE TRIGGER r1 DELETE on t1 BEGIN
929 SELECT NULL;
930 END;
931 }
932} {1 {not authorized}}
933do_test auth-1.139 {
934 set ::authargs
935} {r1 t1}
936do_test auth-1.140 {
937 execsql {SELECT name FROM sqlite_temp_master}
938} {t1}
939do_test auth-1.141 {
940 proc auth {code arg1 arg2} {
941 if {$code=="SQLITE_INSERT" && $arg1=="sqlite_temp_master"} {
942 return SQLITE_DENY
943 }
944 return SQLITE_OK
945 }
946 catchsql {
947 CREATE TRIGGER r1 DELETE on t1 BEGIN
948 SELECT NULL;
949 END;
950 }
951} {1 {not authorized}}
952do_test auth-1.142 {
953 execsql {SELECT name FROM sqlite_temp_master}
954} {t1}
955do_test auth-1.143 {
956 proc auth {code arg1 arg2} {
957 if {$code=="SQLITE_CREATE_TEMP_TRIGGER"} {
958 set ::authargs [list $arg1 $arg2]
959 return SQLITE_IGNORE
960 }
961 return SQLITE_OK
962 }
963 catchsql {
964 CREATE TRIGGER r1 DELETE on t1 BEGIN
965 SELECT NULL;
966 END;
967 }
968} {0 {}}
969do_test auth-1.144 {
970 set ::authargs
971} {r1 t1}
972do_test auth-1.145 {
973 execsql {SELECT name FROM sqlite_temp_master}
974} {t1}
975do_test auth-1.146 {
976 proc auth {code arg1 arg2} {
977 if {$code=="SQLITE_INSERT" && $arg1=="sqlite_temp_master"} {
978 return SQLITE_IGNORE
979 }
980 return SQLITE_OK
981 }
982 catchsql {
983 CREATE TRIGGER r1 DELETE on t1 BEGIN
984 SELECT NULL;
985 END;
986 }
987} {0 {}}
988do_test auth-1.147 {
989 execsql {SELECT name FROM sqlite_temp_master}
990} {t1}
991do_test auth-1.148 {
992 proc auth {code arg1 arg2} {
993 if {$code=="SQLITE_CREATE_TEMP_TRIGGER"} {
994 set ::authargs [list $arg1 $arg2]
995 return SQLITE_OK
996 }
997 return SQLITE_OK
998 }
999 catchsql {
1000 CREATE TRIGGER r1 DELETE on t1 BEGIN
1001 SELECT NULL;
1002 END;
1003 }
1004} {0 {}}
1005do_test auth-1.149 {
1006 set ::authargs
1007} {r1 t1}
1008do_test auth-1.150 {
1009 execsql {SELECT name FROM sqlite_temp_master}
1010} {t1 r1}
1011
1012do_test auth-1.151 {
1013 proc auth {code arg1 arg2} {
1014 if {$code=="SQLITE_DELETE" && $arg1=="sqlite_master"} {
1015 return SQLITE_DENY
1016 }
1017 return SQLITE_OK
1018 }
1019 catchsql {DROP TRIGGER r2}
1020} {1 {not authorized}}
1021do_test auth-1.152 {
1022 execsql {SELECT name FROM sqlite_master}
1023} {t2 r2}
1024do_test auth-1.153 {
1025 proc auth {code arg1 arg2} {
1026 if {$code=="SQLITE_DROP_TRIGGER"} {
1027 set ::authargs [list $arg1 $arg2]
1028 return SQLITE_DENY
1029 }
1030 return SQLITE_OK
1031 }
1032 catchsql {DROP TRIGGER r2}
1033} {1 {not authorized}}
1034do_test auth-1.154 {
1035 set ::authargs
1036} {r2 t2}
1037do_test auth-1.155 {
1038 execsql {SELECT name FROM sqlite_master}
1039} {t2 r2}
1040do_test auth-1.156 {
1041 proc auth {code arg1 arg2} {
1042 if {$code=="SQLITE_DELETE" && $arg1=="sqlite_master"} {
1043 return SQLITE_IGNORE
1044 }
1045 return SQLITE_OK
1046 }
1047 catchsql {DROP TRIGGER r2}
1048} {0 {}}
1049do_test auth-1.157 {
1050 execsql {SELECT name FROM sqlite_master}
1051} {t2 r2}
1052do_test auth-1.158 {
1053 proc auth {code arg1 arg2} {
1054 if {$code=="SQLITE_DROP_TRIGGER"} {
1055 set ::authargs [list $arg1 $arg2]
1056 return SQLITE_IGNORE
1057 }
1058 return SQLITE_OK
1059 }
1060 catchsql {DROP TRIGGER r2}
1061} {0 {}}
1062do_test auth-1.159 {
1063 set ::authargs
1064} {r2 t2}
1065do_test auth-1.160 {
1066 execsql {SELECT name FROM sqlite_master}
1067} {t2 r2}
1068do_test auth-1.161 {
1069 proc auth {code arg1 arg2} {
1070 if {$code=="SQLITE_DROP_TRIGGER"} {
1071 set ::authargs [list $arg1 $arg2]
1072 return SQLITE_OK
1073 }
1074 return SQLITE_OK
1075 }
1076 catchsql {DROP TRIGGER r2}
1077} {0 {}}
1078do_test auth-1.162 {
1079 set ::authargs
1080} {r2 t2}
1081do_test auth-1.163 {
1082 execsql {SELECT name FROM sqlite_master}
1083} {t2}
1084
1085do_test auth-1.164 {
1086 proc auth {code arg1 arg2} {
1087 if {$code=="SQLITE_DELETE" && $arg1=="sqlite_temp_master"} {
1088 return SQLITE_DENY
1089 }
1090 return SQLITE_OK
1091 }
1092 catchsql {DROP TRIGGER r1}
1093} {1 {not authorized}}
1094do_test auth-1.165 {
1095 execsql {SELECT name FROM sqlite_temp_master}
1096} {t1 r1}
1097do_test auth-1.166 {
1098 proc auth {code arg1 arg2} {
1099 if {$code=="SQLITE_DROP_TEMP_TRIGGER"} {
1100 set ::authargs [list $arg1 $arg2]
1101 return SQLITE_DENY
1102 }
1103 return SQLITE_OK
1104 }
1105 catchsql {DROP TRIGGER r1}
1106} {1 {not authorized}}
1107do_test auth-1.167 {
1108 set ::authargs
1109} {r1 t1}
1110do_test auth-1.168 {
1111 execsql {SELECT name FROM sqlite_temp_master}
1112} {t1 r1}
1113do_test auth-1.169 {
1114 proc auth {code arg1 arg2} {
1115 if {$code=="SQLITE_DELETE" && $arg1=="sqlite_temp_master"} {
1116 return SQLITE_IGNORE
1117 }
1118 return SQLITE_OK
1119 }
1120 catchsql {DROP TRIGGER r1}
1121} {0 {}}
1122do_test auth-1.170 {
1123 execsql {SELECT name FROM sqlite_temp_master}
1124} {t1 r1}
1125do_test auth-1.171 {
1126 proc auth {code arg1 arg2} {
1127 if {$code=="SQLITE_DROP_TEMP_TRIGGER"} {
1128 set ::authargs [list $arg1 $arg2]
1129 return SQLITE_IGNORE
1130 }
1131 return SQLITE_OK
1132 }
1133 catchsql {DROP TRIGGER r1}
1134} {0 {}}
1135do_test auth-1.172 {
1136 set ::authargs
1137} {r1 t1}
1138do_test auth-1.173 {
1139 execsql {SELECT name FROM sqlite_temp_master}
1140} {t1 r1}
1141do_test auth-1.174 {
1142 proc auth {code arg1 arg2} {
1143 if {$code=="SQLITE_DROP_TEMP_TRIGGER"} {
1144 set ::authargs [list $arg1 $arg2]
1145 return SQLITE_OK
1146 }
1147 return SQLITE_OK
1148 }
1149 catchsql {DROP TRIGGER r1}
1150} {0 {}}
1151do_test auth-1.175 {
1152 set ::authargs
1153} {r1 t1}
1154do_test auth-1.176 {
1155 execsql {SELECT name FROM sqlite_temp_master}
1156} {t1}
1157
1158do_test auth-1.177 {
1159 proc auth {code arg1 arg2} {
1160 if {$code=="SQLITE_CREATE_INDEX"} {
1161 set ::authargs [list $arg1 $arg2]
1162 return SQLITE_DENY
1163 }
1164 return SQLITE_OK
1165 }
1166 catchsql {CREATE INDEX i2 ON t2(a)}
1167} {1 {not authorized}}
1168do_test auth-1.178 {
1169 set ::authargs
1170} {i2 t2}
1171do_test auth-1.179 {
1172 execsql {SELECT name FROM sqlite_master}
1173} {t2}
1174do_test auth-1.180 {
1175 proc auth {code arg1 arg2} {
1176 if {$code=="SQLITE_INSERT" && $arg1=="sqlite_master"} {
1177 return SQLITE_DENY
1178 }
1179 return SQLITE_OK
1180 }
1181 catchsql {CREATE INDEX i2 ON t2(a)}
1182} {1 {not authorized}}
1183do_test auth-1.181 {
1184 execsql {SELECT name FROM sqlite_master}
1185} {t2}
1186do_test auth-1.182 {
1187 proc auth {code arg1 arg2} {
1188 if {$code=="SQLITE_CREATE_INDEX"} {
1189 set ::authargs [list $arg1 $arg2]
1190 return SQLITE_IGNORE
1191 }
1192 return SQLITE_OK
1193 }
1194 catchsql {CREATE INDEX i2 ON t2(b)}
1195} {0 {}}
1196do_test auth-1.183 {
1197 set ::authargs
1198} {i2 t2}
1199do_test auth-1.184 {
1200 execsql {SELECT name FROM sqlite_master}
1201} {t2}
1202do_test auth-1.185 {
1203 proc auth {code arg1 arg2} {
1204 if {$code=="SQLITE_INSERT" && $arg1=="sqlite_master"} {
1205 return SQLITE_IGNORE
1206 }
1207 return SQLITE_OK
1208 }
1209 catchsql {CREATE INDEX i2 ON t2(b)}
1210} {0 {}}
1211do_test auth-1.186 {
1212 execsql {SELECT name FROM sqlite_master}
1213} {t2}
1214do_test auth-1.187 {
1215 proc auth {code arg1 arg2} {
1216 if {$code=="SQLITE_CREATE_INDEX"} {
1217 set ::authargs [list $arg1 $arg2]
1218 return SQLITE_OK
1219 }
1220 return SQLITE_OK
1221 }
1222 catchsql {CREATE INDEX i2 ON t2(a)}
1223} {0 {}}
1224do_test auth-1.188 {
1225 set ::authargs
1226} {i2 t2}
1227do_test auth-1.189 {
1228 execsql {SELECT name FROM sqlite_master}
1229} {t2 i2}
1230
1231do_test auth-1.190 {
1232 proc auth {code arg1 arg2} {
1233 if {$code=="SQLITE_CREATE_TEMP_INDEX"} {
1234 set ::authargs [list $arg1 $arg2]
1235 return SQLITE_DENY
1236 }
1237 return SQLITE_OK
1238 }
1239 catchsql {CREATE INDEX i1 ON t1(a)}
1240} {1 {not authorized}}
1241do_test auth-1.191 {
1242 set ::authargs
1243} {i1 t1}
1244do_test auth-1.192 {
1245 execsql {SELECT name FROM sqlite_temp_master}
1246} {t1}
1247do_test auth-1.193 {
1248 proc auth {code arg1 arg2} {
1249 if {$code=="SQLITE_INSERT" && $arg1=="sqlite_temp_master"} {
1250 return SQLITE_DENY
1251 }
1252 return SQLITE_OK
1253 }
1254 catchsql {CREATE INDEX i1 ON t1(b)}
1255} {1 {not authorized}}
1256do_test auth-1.194 {
1257 execsql {SELECT name FROM sqlite_temp_master}
1258} {t1}
1259do_test auth-1.195 {
1260 proc auth {code arg1 arg2} {
1261 if {$code=="SQLITE_CREATE_TEMP_INDEX"} {
1262 set ::authargs [list $arg1 $arg2]
1263 return SQLITE_IGNORE
1264 }
1265 return SQLITE_OK
1266 }
1267 catchsql {CREATE INDEX i1 ON t1(b)}
1268} {0 {}}
1269do_test auth-1.196 {
1270 set ::authargs
1271} {i1 t1}
1272do_test auth-1.197 {
1273 execsql {SELECT name FROM sqlite_temp_master}
1274} {t1}
1275do_test auth-1.198 {
1276 proc auth {code arg1 arg2} {
1277 if {$code=="SQLITE_INSERT" && $arg1=="sqlite_temp_master"} {
1278 return SQLITE_IGNORE
1279 }
1280 return SQLITE_OK
1281 }
1282 catchsql {CREATE INDEX i1 ON t1(c)}
1283} {0 {}}
1284do_test auth-1.199 {
1285 execsql {SELECT name FROM sqlite_temp_master}
1286} {t1}
1287do_test auth-1.200 {
1288 proc auth {code arg1 arg2} {
1289 if {$code=="SQLITE_CREATE_TEMP_INDEX"} {
1290 set ::authargs [list $arg1 $arg2]
1291 return SQLITE_OK
1292 }
1293 return SQLITE_OK
1294 }
1295 catchsql {CREATE INDEX i1 ON t1(a)}
1296} {0 {}}
1297do_test auth-1.201 {
1298 set ::authargs
1299} {i1 t1}
1300do_test auth-1.202 {
1301 execsql {SELECT name FROM sqlite_temp_master}
1302} {t1 i1}
1303
1304do_test auth-1.203 {
1305 proc auth {code arg1 arg2} {
1306 if {$code=="SQLITE_DELETE" && $arg1=="sqlite_master"} {
1307 return SQLITE_DENY
1308 }
1309 return SQLITE_OK
1310 }
1311 catchsql {DROP INDEX i2}
1312} {1 {not authorized}}
1313do_test auth-1.204 {
1314 execsql {SELECT name FROM sqlite_master}
1315} {t2 i2}
1316do_test auth-1.205 {
1317 proc auth {code arg1 arg2} {
1318 if {$code=="SQLITE_DROP_INDEX"} {
1319 set ::authargs [list $arg1 $arg2]
1320 return SQLITE_DENY
1321 }
1322 return SQLITE_OK
1323 }
1324 catchsql {DROP INDEX i2}
1325} {1 {not authorized}}
1326do_test auth-1.206 {
1327 set ::authargs
1328} {i2 t2}
1329do_test auth-1.207 {
1330 execsql {SELECT name FROM sqlite_master}
1331} {t2 i2}
1332do_test auth-1.208 {
1333 proc auth {code arg1 arg2} {
1334 if {$code=="SQLITE_DELETE" && $arg1=="sqlite_master"} {
1335 return SQLITE_IGNORE
1336 }
1337 return SQLITE_OK
1338 }
1339 catchsql {DROP INDEX i2}
1340} {0 {}}
1341do_test auth-1.209 {
1342 execsql {SELECT name FROM sqlite_master}
1343} {t2 i2}
1344do_test auth-1.210 {
1345 proc auth {code arg1 arg2} {
1346 if {$code=="SQLITE_DROP_INDEX"} {
1347 set ::authargs [list $arg1 $arg2]
1348 return SQLITE_IGNORE
1349 }
1350 return SQLITE_OK
1351 }
1352 catchsql {DROP INDEX i2}
1353} {0 {}}
1354do_test auth-1.211 {
1355 set ::authargs
1356} {i2 t2}
1357do_test auth-1.212 {
1358 execsql {SELECT name FROM sqlite_master}
1359} {t2 i2}
1360do_test auth-1.213 {
1361 proc auth {code arg1 arg2} {
1362 if {$code=="SQLITE_DROP_INDEX"} {
1363 set ::authargs [list $arg1 $arg2]
1364 return SQLITE_OK
1365 }
1366 return SQLITE_OK
1367 }
1368 catchsql {DROP INDEX i2}
1369} {0 {}}
1370do_test auth-1.214 {
1371 set ::authargs
1372} {i2 t2}
1373do_test auth-1.215 {
1374 execsql {SELECT name FROM sqlite_master}
1375} {t2}
1376
1377do_test auth-1.216 {
1378 proc auth {code arg1 arg2} {
1379 if {$code=="SQLITE_DELETE" && $arg1=="sqlite_temp_master"} {
1380 return SQLITE_DENY
1381 }
1382 return SQLITE_OK
1383 }
1384 catchsql {DROP INDEX i1}
1385} {1 {not authorized}}
1386do_test auth-1.217 {
1387 execsql {SELECT name FROM sqlite_temp_master}
1388} {t1 i1}
1389do_test auth-1.218 {
1390 proc auth {code arg1 arg2} {
1391 if {$code=="SQLITE_DROP_TEMP_INDEX"} {
1392 set ::authargs [list $arg1 $arg2]
1393 return SQLITE_DENY
1394 }
1395 return SQLITE_OK
1396 }
1397 catchsql {DROP INDEX i1}
1398} {1 {not authorized}}
1399do_test auth-1.219 {
1400 set ::authargs
1401} {i1 t1}
1402do_test auth-1.220 {
1403 execsql {SELECT name FROM sqlite_temp_master}
1404} {t1 i1}
1405do_test auth-1.221 {
1406 proc auth {code arg1 arg2} {
1407 if {$code=="SQLITE_DELETE" && $arg1=="sqlite_temp_master"} {
1408 return SQLITE_IGNORE
1409 }
1410 return SQLITE_OK
1411 }
1412 catchsql {DROP INDEX i1}
1413} {0 {}}
1414do_test auth-1.222 {
1415 execsql {SELECT name FROM sqlite_temp_master}
1416} {t1 i1}
1417do_test auth-1.223 {
1418 proc auth {code arg1 arg2} {
1419 if {$code=="SQLITE_DROP_TEMP_INDEX"} {
1420 set ::authargs [list $arg1 $arg2]
1421 return SQLITE_IGNORE
1422 }
1423 return SQLITE_OK
1424 }
1425 catchsql {DROP INDEX i1}
1426} {0 {}}
1427do_test auth-1.224 {
1428 set ::authargs
1429} {i1 t1}
1430do_test auth-1.225 {
1431 execsql {SELECT name FROM sqlite_temp_master}
1432} {t1 i1}
1433do_test auth-1.226 {
1434 proc auth {code arg1 arg2} {
1435 if {$code=="SQLITE_DROP_TEMP_INDEX"} {
1436 set ::authargs [list $arg1 $arg2]
1437 return SQLITE_OK
1438 }
1439 return SQLITE_OK
1440 }
1441 catchsql {DROP INDEX i1}
1442} {0 {}}
1443do_test auth-1.227 {
1444 set ::authargs
1445} {i1 t1}
1446do_test auth-1.228 {
1447 execsql {SELECT name FROM sqlite_temp_master}
1448} {t1}
1449
1450do_test auth-1.229 {
1451 proc auth {code arg1 arg2} {
1452 if {$code=="SQLITE_PRAGMA"} {
1453 set ::authargs [list $arg1 $arg2]
1454 return SQLITE_DENY
1455 }
1456 return SQLITE_OK
1457 }
1458 catchsql {PRAGMA full_column_names=on}
1459} {1 {not authorized}}
1460do_test auth-1.230 {
1461 set ::authargs
1462} {full_column_names on}
1463do_test auth-1.231 {
1464 execsql2 {SELECT a FROM t2}
1465} {a 11 a 7}
1466do_test auth-1.232 {
1467 proc auth {code arg1 arg2} {
1468 if {$code=="SQLITE_PRAGMA"} {
1469 set ::authargs [list $arg1 $arg2]
1470 return SQLITE_IGNORE
1471 }
1472 return SQLITE_OK
1473 }
1474 catchsql {PRAGMA full_column_names=on}
1475} {0 {}}
1476do_test auth-1.233 {
1477 set ::authargs
1478} {full_column_names on}
1479do_test auth-1.234 {
1480 execsql2 {SELECT a FROM t2}
1481} {a 11 a 7}
1482do_test auth-1.235 {
1483 proc auth {code arg1 arg2} {
1484 if {$code=="SQLITE_PRAGMA"} {
1485 set ::authargs [list $arg1 $arg2]
1486 return SQLITE_OK
1487 }
1488 return SQLITE_OK
1489 }
1490 catchsql {PRAGMA full_column_names=on}
1491} {0 {}}
1492do_test auth-1.236 {
1493 execsql2 {SELECT a FROM t2}
1494} {t2.a 11 t2.a 7}
1495do_test auth-1.237 {
1496 proc auth {code arg1 arg2} {
1497 if {$code=="SQLITE_PRAGMA"} {
1498 set ::authargs [list $arg1 $arg2]
1499 return SQLITE_OK
1500 }
1501 return SQLITE_OK
1502 }
1503 catchsql {PRAGMA full_column_names=OFF}
1504} {0 {}}
1505do_test auth-1.238 {
1506 set ::authargs
1507} {full_column_names OFF}
1508do_test auth-1.239 {
1509 execsql2 {SELECT a FROM t2}
1510} {a 11 a 7}
drhe5f9c642003-01-13 23:27:31 +00001511
1512
drh1962bda2003-01-12 19:33:52 +00001513} ;# End of the "if( db command exists )"
1514
1515finish_test