1*1da57d55SToomas Soome# 2c5c4113dSnw141292# 2003 April 4 3c5c4113dSnw141292# 4c5c4113dSnw141292# The author disclaims copyright to this source code. In place of 5c5c4113dSnw141292# a legal notice, here is a blessing: 6c5c4113dSnw141292# 7c5c4113dSnw141292# May you do good and not evil. 8c5c4113dSnw141292# May you find forgiveness for yourself and forgive others. 9c5c4113dSnw141292# May you share freely, never taking more than you give. 10c5c4113dSnw141292# 11c5c4113dSnw141292#*********************************************************************** 12c5c4113dSnw141292# This file implements regression tests for SQLite library. The 13c5c4113dSnw141292# focus of this script is testing the ATTACH and DETACH commands 14c5c4113dSnw141292# and related functionality. 15c5c4113dSnw141292# 16c5c4113dSnw141292# $Id: auth.test,v 1.12 2003/12/07 00:24:35 drh Exp $ 17c5c4113dSnw141292# 18c5c4113dSnw141292 19c5c4113dSnw141292set testdir [file dirname $argv0] 20c5c4113dSnw141292source $testdir/tester.tcl 21c5c4113dSnw141292 22c5c4113dSnw141292# disable this test if the SQLITE_OMIT_AUTHORIZATION macro is 23c5c4113dSnw141292# defined during compilation. 24c5c4113dSnw141292 25c5c4113dSnw141292do_test auth-1.1.1 { 26c5c4113dSnw141292 db close 27c5c4113dSnw141292 set ::DB [sqlite db test.db] 28c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 29c5c4113dSnw141292 if {$code=="SQLITE_INSERT" && $arg1=="sqlite_master"} { 30c5c4113dSnw141292 return SQLITE_DENY 31c5c4113dSnw141292 } 32c5c4113dSnw141292 return SQLITE_OK 33c5c4113dSnw141292 } 34c5c4113dSnw141292 db authorizer ::auth 35c5c4113dSnw141292 catchsql {CREATE TABLE t1(a,b,c)} 36c5c4113dSnw141292} {1 {not authorized}} 37c5c4113dSnw141292do_test auth-1.1.2 { 38c5c4113dSnw141292 db errorcode 39c5c4113dSnw141292} {23} 40c5c4113dSnw141292do_test auth-1.2 { 41c5c4113dSnw141292 execsql {SELECT name FROM sqlite_master} 42c5c4113dSnw141292} {} 43c5c4113dSnw141292do_test auth-1.3.1 { 44c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 45c5c4113dSnw141292 if {$code=="SQLITE_CREATE_TABLE"} { 46c5c4113dSnw141292 set ::authargs [list $arg1 $arg2 $arg3 $arg4] 47c5c4113dSnw141292 return SQLITE_DENY 48c5c4113dSnw141292 } 49c5c4113dSnw141292 return SQLITE_OK 50c5c4113dSnw141292 } 51c5c4113dSnw141292 catchsql {CREATE TABLE t1(a,b,c)} 52c5c4113dSnw141292} {1 {not authorized}} 53c5c4113dSnw141292do_test auth-1.3.2 { 54c5c4113dSnw141292 db errorcode 55c5c4113dSnw141292} {23} 56c5c4113dSnw141292do_test auth-1.3.3 { 57c5c4113dSnw141292 set ::authargs 58c5c4113dSnw141292} {t1 {} main {}} 59c5c4113dSnw141292do_test auth-1.4 { 60c5c4113dSnw141292 execsql {SELECT name FROM sqlite_master} 61c5c4113dSnw141292} {} 62c5c4113dSnw141292 63c5c4113dSnw141292do_test auth-1.5 { 64c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 65c5c4113dSnw141292 if {$code=="SQLITE_INSERT" && $arg1=="sqlite_temp_master"} { 66c5c4113dSnw141292 return SQLITE_DENY 67c5c4113dSnw141292 } 68c5c4113dSnw141292 return SQLITE_OK 69c5c4113dSnw141292 } 70c5c4113dSnw141292 catchsql {CREATE TEMP TABLE t1(a,b,c)} 71c5c4113dSnw141292} {1 {not authorized}} 72c5c4113dSnw141292do_test auth-1.6 { 73c5c4113dSnw141292 execsql {SELECT name FROM sqlite_temp_master} 74c5c4113dSnw141292} {} 75c5c4113dSnw141292do_test auth-1.7.1 { 76c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 77c5c4113dSnw141292 if {$code=="SQLITE_CREATE_TEMP_TABLE"} { 78c5c4113dSnw141292 set ::authargs [list $arg1 $arg2 $arg3 $arg4] 79c5c4113dSnw141292 return SQLITE_DENY 80c5c4113dSnw141292 } 81c5c4113dSnw141292 return SQLITE_OK 82c5c4113dSnw141292 } 83c5c4113dSnw141292 catchsql {CREATE TEMP TABLE t1(a,b,c)} 84c5c4113dSnw141292} {1 {not authorized}} 85c5c4113dSnw141292do_test auth-1.7.2 { 86c5c4113dSnw141292 set ::authargs 87c5c4113dSnw141292} {t1 {} temp {}} 88c5c4113dSnw141292do_test auth-1.8 { 89c5c4113dSnw141292 execsql {SELECT name FROM sqlite_temp_master} 90c5c4113dSnw141292} {} 91c5c4113dSnw141292 92c5c4113dSnw141292do_test auth-1.9 { 93c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 94c5c4113dSnw141292 if {$code=="SQLITE_INSERT" && $arg1=="sqlite_master"} { 95c5c4113dSnw141292 return SQLITE_IGNORE 96c5c4113dSnw141292 } 97c5c4113dSnw141292 return SQLITE_OK 98c5c4113dSnw141292 } 99c5c4113dSnw141292 catchsql {CREATE TABLE t1(a,b,c)} 100c5c4113dSnw141292} {0 {}} 101c5c4113dSnw141292do_test auth-1.10 { 102c5c4113dSnw141292 execsql {SELECT name FROM sqlite_master} 103c5c4113dSnw141292} {} 104c5c4113dSnw141292do_test auth-1.11 { 105c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 106c5c4113dSnw141292 if {$code=="SQLITE_CREATE_TABLE"} { 107c5c4113dSnw141292 set ::authargs [list $arg1 $arg2 $arg3 $arg4] 108c5c4113dSnw141292 return SQLITE_IGNORE 109c5c4113dSnw141292 } 110c5c4113dSnw141292 return SQLITE_OK 111c5c4113dSnw141292 } 112c5c4113dSnw141292 catchsql {CREATE TABLE t1(a,b,c)} 113c5c4113dSnw141292} {0 {}} 114c5c4113dSnw141292do_test auth-1.12 { 115c5c4113dSnw141292 execsql {SELECT name FROM sqlite_master} 116c5c4113dSnw141292} {} 117c5c4113dSnw141292do_test auth-1.13 { 118c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 119c5c4113dSnw141292 if {$code=="SQLITE_INSERT" && $arg1=="sqlite_temp_master"} { 120c5c4113dSnw141292 return SQLITE_IGNORE 121c5c4113dSnw141292 } 122c5c4113dSnw141292 return SQLITE_OK 123c5c4113dSnw141292 } 124c5c4113dSnw141292 catchsql {CREATE TEMP TABLE t1(a,b,c)} 125c5c4113dSnw141292} {0 {}} 126c5c4113dSnw141292do_test auth-1.14 { 127c5c4113dSnw141292 execsql {SELECT name FROM sqlite_temp_master} 128c5c4113dSnw141292} {} 129c5c4113dSnw141292do_test auth-1.15 { 130c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 131c5c4113dSnw141292 if {$code=="SQLITE_CREATE_TEMP_TABLE"} { 132c5c4113dSnw141292 set ::authargs [list $arg1 $arg2 $arg3 $arg4] 133c5c4113dSnw141292 return SQLITE_IGNORE 134c5c4113dSnw141292 } 135c5c4113dSnw141292 return SQLITE_OK 136c5c4113dSnw141292 } 137c5c4113dSnw141292 catchsql {CREATE TEMP TABLE t1(a,b,c)} 138c5c4113dSnw141292} {0 {}} 139c5c4113dSnw141292do_test auth-1.16 { 140c5c4113dSnw141292 execsql {SELECT name FROM sqlite_temp_master} 141c5c4113dSnw141292} {} 142c5c4113dSnw141292 143c5c4113dSnw141292do_test auth-1.17 { 144c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 145c5c4113dSnw141292 if {$code=="SQLITE_CREATE_TABLE"} { 146c5c4113dSnw141292 set ::authargs [list $arg1 $arg2 $arg3 $arg4] 147c5c4113dSnw141292 return SQLITE_DENY 148c5c4113dSnw141292 } 149c5c4113dSnw141292 return SQLITE_OK 150c5c4113dSnw141292 } 151c5c4113dSnw141292 catchsql {CREATE TEMP TABLE t1(a,b,c)} 152c5c4113dSnw141292} {0 {}} 153c5c4113dSnw141292do_test auth-1.18 { 154c5c4113dSnw141292 execsql {SELECT name FROM sqlite_temp_master} 155c5c4113dSnw141292} {t1} 156c5c4113dSnw141292do_test auth-1.19.1 { 157c5c4113dSnw141292 set ::authargs {} 158c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 159c5c4113dSnw141292 if {$code=="SQLITE_CREATE_TEMP_TABLE"} { 160c5c4113dSnw141292 set ::authargs [list $arg1 $arg2 $arg3 $arg4] 161c5c4113dSnw141292 return SQLITE_DENY 162c5c4113dSnw141292 } 163c5c4113dSnw141292 return SQLITE_OK 164c5c4113dSnw141292 } 165c5c4113dSnw141292 catchsql {CREATE TABLE t2(a,b,c)} 166c5c4113dSnw141292} {0 {}} 167c5c4113dSnw141292do_test auth-1.19.2 { 168c5c4113dSnw141292 set ::authargs 169c5c4113dSnw141292} {} 170c5c4113dSnw141292do_test auth-1.20 { 171c5c4113dSnw141292 execsql {SELECT name FROM sqlite_master} 172c5c4113dSnw141292} {t2} 173c5c4113dSnw141292 174c5c4113dSnw141292do_test auth-1.21.1 { 175c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 176c5c4113dSnw141292 if {$code=="SQLITE_DROP_TABLE"} { 177c5c4113dSnw141292 set ::authargs [list $arg1 $arg2 $arg3 $arg4] 178c5c4113dSnw141292 return SQLITE_DENY 179c5c4113dSnw141292 } 180c5c4113dSnw141292 return SQLITE_OK 181c5c4113dSnw141292 } 182c5c4113dSnw141292 catchsql {DROP TABLE t2} 183c5c4113dSnw141292} {1 {not authorized}} 184c5c4113dSnw141292do_test auth-1.21.2 { 185c5c4113dSnw141292 set ::authargs 186c5c4113dSnw141292} {t2 {} main {}} 187c5c4113dSnw141292do_test auth-1.22 { 188c5c4113dSnw141292 execsql {SELECT name FROM sqlite_master} 189c5c4113dSnw141292} {t2} 190c5c4113dSnw141292do_test auth-1.23.1 { 191c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 192c5c4113dSnw141292 if {$code=="SQLITE_DROP_TABLE"} { 193c5c4113dSnw141292 set ::authargs [list $arg1 $arg2 $arg3 $arg4] 194c5c4113dSnw141292 return SQLITE_IGNORE 195c5c4113dSnw141292 } 196c5c4113dSnw141292 return SQLITE_OK 197c5c4113dSnw141292 } 198c5c4113dSnw141292 catchsql {DROP TABLE t2} 199c5c4113dSnw141292} {0 {}} 200c5c4113dSnw141292do_test auth-1.23.2 { 201c5c4113dSnw141292 set ::authargs 202c5c4113dSnw141292} {t2 {} main {}} 203c5c4113dSnw141292do_test auth-1.24 { 204c5c4113dSnw141292 execsql {SELECT name FROM sqlite_master} 205c5c4113dSnw141292} {t2} 206c5c4113dSnw141292 207c5c4113dSnw141292do_test auth-1.25 { 208c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 209c5c4113dSnw141292 if {$code=="SQLITE_DROP_TEMP_TABLE"} { 210c5c4113dSnw141292 set ::authargs [list $arg1 $arg2 $arg3 $arg4] 211c5c4113dSnw141292 return SQLITE_DENY 212c5c4113dSnw141292 } 213c5c4113dSnw141292 return SQLITE_OK 214c5c4113dSnw141292 } 215c5c4113dSnw141292 catchsql {DROP TABLE t1} 216c5c4113dSnw141292} {1 {not authorized}} 217c5c4113dSnw141292do_test auth-1.26 { 218c5c4113dSnw141292 execsql {SELECT name FROM sqlite_temp_master} 219c5c4113dSnw141292} {t1} 220c5c4113dSnw141292do_test auth-1.27 { 221c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 222c5c4113dSnw141292 if {$code=="SQLITE_DROP_TEMP_TABLE"} { 223c5c4113dSnw141292 set ::authargs [list $arg1 $arg2 $arg3 $arg4] 224c5c4113dSnw141292 return SQLITE_IGNORE 225c5c4113dSnw141292 } 226c5c4113dSnw141292 return SQLITE_OK 227c5c4113dSnw141292 } 228c5c4113dSnw141292 catchsql {DROP TABLE t1} 229c5c4113dSnw141292} {0 {}} 230c5c4113dSnw141292do_test auth-1.28 { 231c5c4113dSnw141292 execsql {SELECT name FROM sqlite_temp_master} 232c5c4113dSnw141292} {t1} 233c5c4113dSnw141292 234c5c4113dSnw141292do_test auth-1.29 { 235c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 236c5c4113dSnw141292 if {$code=="SQLITE_INSERT" && $arg1=="t2"} { 237c5c4113dSnw141292 return SQLITE_DENY 238c5c4113dSnw141292 } 239c5c4113dSnw141292 return SQLITE_OK 240c5c4113dSnw141292 } 241c5c4113dSnw141292 catchsql {INSERT INTO t2 VALUES(1,2,3)} 242c5c4113dSnw141292} {1 {not authorized}} 243c5c4113dSnw141292do_test auth-1.30 { 244c5c4113dSnw141292 execsql {SELECT * FROM t2} 245c5c4113dSnw141292} {} 246c5c4113dSnw141292do_test auth-1.31 { 247c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 248c5c4113dSnw141292 if {$code=="SQLITE_INSERT" && $arg1=="t2"} { 249c5c4113dSnw141292 return SQLITE_IGNORE 250c5c4113dSnw141292 } 251c5c4113dSnw141292 return SQLITE_OK 252c5c4113dSnw141292 } 253c5c4113dSnw141292 catchsql {INSERT INTO t2 VALUES(1,2,3)} 254c5c4113dSnw141292} {0 {}} 255c5c4113dSnw141292do_test auth-1.32 { 256c5c4113dSnw141292 execsql {SELECT * FROM t2} 257c5c4113dSnw141292} {} 258c5c4113dSnw141292do_test auth-1.33 { 259c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 260c5c4113dSnw141292 if {$code=="SQLITE_INSERT" && $arg1=="t1"} { 261c5c4113dSnw141292 return SQLITE_IGNORE 262c5c4113dSnw141292 } 263c5c4113dSnw141292 return SQLITE_OK 264c5c4113dSnw141292 } 265c5c4113dSnw141292 catchsql {INSERT INTO t2 VALUES(1,2,3)} 266c5c4113dSnw141292} {0 {}} 267c5c4113dSnw141292do_test auth-1.34 { 268c5c4113dSnw141292 execsql {SELECT * FROM t2} 269c5c4113dSnw141292} {1 2 3} 270c5c4113dSnw141292 271c5c4113dSnw141292do_test auth-1.35.1 { 272c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 273c5c4113dSnw141292 if {$code=="SQLITE_READ" && $arg1=="t2" && $arg2=="b"} { 274c5c4113dSnw141292 return SQLITE_DENY 275c5c4113dSnw141292 } 276c5c4113dSnw141292 return SQLITE_OK 277c5c4113dSnw141292 } 278c5c4113dSnw141292 catchsql {SELECT * FROM t2} 279c5c4113dSnw141292} {1 {access to t2.b is prohibited}} 280c5c4113dSnw141292do_test auth-1.35.2 { 281c5c4113dSnw141292 execsql {ATTACH DATABASE 'test.db' AS two} 282c5c4113dSnw141292 catchsql {SELECT * FROM two.t2} 283c5c4113dSnw141292} {1 {access to two.t2.b is prohibited}} 284c5c4113dSnw141292execsql {DETACH DATABASE two} 285c5c4113dSnw141292do_test auth-1.36 { 286c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 287c5c4113dSnw141292 if {$code=="SQLITE_READ" && $arg1=="t2" && $arg2=="b"} { 288c5c4113dSnw141292 return SQLITE_IGNORE 289c5c4113dSnw141292 } 290c5c4113dSnw141292 return SQLITE_OK 291c5c4113dSnw141292 } 292c5c4113dSnw141292 catchsql {SELECT * FROM t2} 293c5c4113dSnw141292} {0 {1 {} 3}} 294c5c4113dSnw141292do_test auth-1.37 { 295c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 296c5c4113dSnw141292 if {$code=="SQLITE_READ" && $arg1=="t2" && $arg2=="b"} { 297c5c4113dSnw141292 return SQLITE_IGNORE 298c5c4113dSnw141292 } 299c5c4113dSnw141292 return SQLITE_OK 300c5c4113dSnw141292 } 301c5c4113dSnw141292 catchsql {SELECT * FROM t2 WHERE b=2} 302c5c4113dSnw141292} {0 {}} 303c5c4113dSnw141292do_test auth-1.38 { 304c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 305c5c4113dSnw141292 if {$code=="SQLITE_READ" && $arg1=="t2" && $arg2=="a"} { 306c5c4113dSnw141292 return SQLITE_IGNORE 307c5c4113dSnw141292 } 308c5c4113dSnw141292 return SQLITE_OK 309c5c4113dSnw141292 } 310c5c4113dSnw141292 catchsql {SELECT * FROM t2 WHERE b=2} 311c5c4113dSnw141292} {0 {{} 2 3}} 312c5c4113dSnw141292do_test auth-1.39 { 313c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 314c5c4113dSnw141292 if {$code=="SQLITE_READ" && $arg1=="t2" && $arg2=="b"} { 315c5c4113dSnw141292 return SQLITE_IGNORE 316c5c4113dSnw141292 } 317c5c4113dSnw141292 return SQLITE_OK 318c5c4113dSnw141292 } 319c5c4113dSnw141292 catchsql {SELECT * FROM t2 WHERE b IS NULL} 320c5c4113dSnw141292} {0 {1 {} 3}} 321c5c4113dSnw141292do_test auth-1.40 { 322c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 323c5c4113dSnw141292 if {$code=="SQLITE_READ" && $arg1=="t2" && $arg2=="b"} { 324c5c4113dSnw141292 return SQLITE_DENY 325c5c4113dSnw141292 } 326c5c4113dSnw141292 return SQLITE_OK 327c5c4113dSnw141292 } 328c5c4113dSnw141292 catchsql {SELECT a,c FROM t2 WHERE b IS NULL} 329c5c4113dSnw141292} {1 {access to t2.b is prohibited}} 330c5c4113dSnw141292 331c5c4113dSnw141292do_test auth-1.41 { 332c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 333c5c4113dSnw141292 if {$code=="SQLITE_UPDATE" && $arg1=="t2" && $arg2=="b"} { 334c5c4113dSnw141292 return SQLITE_DENY 335c5c4113dSnw141292 } 336c5c4113dSnw141292 return SQLITE_OK 337c5c4113dSnw141292 } 338c5c4113dSnw141292 catchsql {UPDATE t2 SET a=11} 339c5c4113dSnw141292} {0 {}} 340c5c4113dSnw141292do_test auth-1.42 { 341c5c4113dSnw141292 execsql {SELECT * FROM t2} 342c5c4113dSnw141292} {11 2 3} 343c5c4113dSnw141292do_test auth-1.43 { 344c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 345c5c4113dSnw141292 if {$code=="SQLITE_UPDATE" && $arg1=="t2" && $arg2=="b"} { 346c5c4113dSnw141292 return SQLITE_DENY 347c5c4113dSnw141292 } 348c5c4113dSnw141292 return SQLITE_OK 349c5c4113dSnw141292 } 350c5c4113dSnw141292 catchsql {UPDATE t2 SET b=22, c=33} 351c5c4113dSnw141292} {1 {not authorized}} 352c5c4113dSnw141292do_test auth-1.44 { 353c5c4113dSnw141292 execsql {SELECT * FROM t2} 354c5c4113dSnw141292} {11 2 3} 355c5c4113dSnw141292do_test auth-1.45 { 356c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 357c5c4113dSnw141292 if {$code=="SQLITE_UPDATE" && $arg1=="t2" && $arg2=="b"} { 358c5c4113dSnw141292 return SQLITE_IGNORE 359c5c4113dSnw141292 } 360c5c4113dSnw141292 return SQLITE_OK 361c5c4113dSnw141292 } 362c5c4113dSnw141292 catchsql {UPDATE t2 SET b=22, c=33} 363c5c4113dSnw141292} {0 {}} 364c5c4113dSnw141292do_test auth-1.46 { 365c5c4113dSnw141292 execsql {SELECT * FROM t2} 366c5c4113dSnw141292} {11 2 33} 367c5c4113dSnw141292 368c5c4113dSnw141292do_test auth-1.47 { 369c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 370c5c4113dSnw141292 if {$code=="SQLITE_DELETE" && $arg1=="t2"} { 371c5c4113dSnw141292 return SQLITE_DENY 372c5c4113dSnw141292 } 373c5c4113dSnw141292 return SQLITE_OK 374c5c4113dSnw141292 } 375c5c4113dSnw141292 catchsql {DELETE FROM t2 WHERE a=11} 376c5c4113dSnw141292} {1 {not authorized}} 377c5c4113dSnw141292do_test auth-1.48 { 378c5c4113dSnw141292 execsql {SELECT * FROM t2} 379c5c4113dSnw141292} {11 2 33} 380c5c4113dSnw141292do_test auth-1.49 { 381c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 382c5c4113dSnw141292 if {$code=="SQLITE_DELETE" && $arg1=="t2"} { 383c5c4113dSnw141292 return SQLITE_IGNORE 384c5c4113dSnw141292 } 385c5c4113dSnw141292 return SQLITE_OK 386c5c4113dSnw141292 } 387c5c4113dSnw141292 catchsql {DELETE FROM t2 WHERE a=11} 388c5c4113dSnw141292} {0 {}} 389c5c4113dSnw141292do_test auth-1.50 { 390c5c4113dSnw141292 execsql {SELECT * FROM t2} 391c5c4113dSnw141292} {11 2 33} 392c5c4113dSnw141292 393c5c4113dSnw141292do_test auth-1.51 { 394c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 395c5c4113dSnw141292 if {$code=="SQLITE_SELECT"} { 396c5c4113dSnw141292 return SQLITE_DENY 397c5c4113dSnw141292 } 398c5c4113dSnw141292 return SQLITE_OK 399c5c4113dSnw141292 } 400c5c4113dSnw141292 catchsql {SELECT * FROM t2} 401c5c4113dSnw141292} {1 {not authorized}} 402c5c4113dSnw141292do_test auth-1.52 { 403c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 404c5c4113dSnw141292 if {$code=="SQLITE_SELECT"} { 405c5c4113dSnw141292 return SQLITE_IGNORE 406c5c4113dSnw141292 } 407c5c4113dSnw141292 return SQLITE_OK 408c5c4113dSnw141292 } 409c5c4113dSnw141292 catchsql {SELECT * FROM t2} 410c5c4113dSnw141292} {0 {}} 411c5c4113dSnw141292do_test auth-1.53 { 412c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 413c5c4113dSnw141292 if {$code=="SQLITE_SELECT"} { 414c5c4113dSnw141292 return SQLITE_OK 415c5c4113dSnw141292 } 416c5c4113dSnw141292 return SQLITE_OK 417c5c4113dSnw141292 } 418c5c4113dSnw141292 catchsql {SELECT * FROM t2} 419c5c4113dSnw141292} {0 {11 2 33}} 420c5c4113dSnw141292 421c5c4113dSnw141292set f [open data1.txt w] 422c5c4113dSnw141292puts $f "7:8:9" 423c5c4113dSnw141292close $f 424c5c4113dSnw141292do_test auth-1.54 { 425c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 426c5c4113dSnw141292 if {$code=="SQLITE_COPY"} { 427c5c4113dSnw141292 set ::authargs [list $arg1 $arg2 $arg3 $arg4] 428c5c4113dSnw141292 return SQLITE_DENY 429c5c4113dSnw141292 } 430c5c4113dSnw141292 return SQLITE_OK 431c5c4113dSnw141292 } 432c5c4113dSnw141292 catchsql {COPY t2 FROM 'data1.txt' USING DELIMITERS ':'} 433c5c4113dSnw141292} {1 {not authorized}} 434c5c4113dSnw141292do_test auth-1.55 { 435c5c4113dSnw141292 set ::authargs 436c5c4113dSnw141292} {t2 data1.txt main {}} 437c5c4113dSnw141292do_test auth-1.56 { 438c5c4113dSnw141292 execsql {SELECT * FROM t2} 439c5c4113dSnw141292} {11 2 33} 440c5c4113dSnw141292do_test auth-1.57 { 441c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 442c5c4113dSnw141292 if {$code=="SQLITE_COPY"} { 443c5c4113dSnw141292 set ::authargs [list $arg1 $arg2 $arg3 $arg4] 444c5c4113dSnw141292 return SQLITE_IGNORE 445c5c4113dSnw141292 } 446c5c4113dSnw141292 return SQLITE_OK 447c5c4113dSnw141292 } 448c5c4113dSnw141292 catchsql {COPY t2 FROM 'data1.txt' USING DELIMITERS ':'} 449c5c4113dSnw141292} {0 {}} 450c5c4113dSnw141292do_test auth-1.58 { 451c5c4113dSnw141292 set ::authargs 452c5c4113dSnw141292} {t2 data1.txt main {}} 453c5c4113dSnw141292do_test auth-1.59 { 454c5c4113dSnw141292 execsql {SELECT * FROM t2} 455c5c4113dSnw141292} {11 2 33} 456c5c4113dSnw141292do_test auth-1.60 { 457c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 458c5c4113dSnw141292 if {$code=="SQLITE_COPY"} { 459c5c4113dSnw141292 set ::authargs [list $arg1 $arg2 $arg3 $arg4] 460c5c4113dSnw141292 return SQLITE_OK 461c5c4113dSnw141292 } 462c5c4113dSnw141292 return SQLITE_OK 463c5c4113dSnw141292 } 464c5c4113dSnw141292 catchsql {COPY t2 FROM 'data1.txt' USING DELIMITERS ':'} 465c5c4113dSnw141292} {0 {}} 466c5c4113dSnw141292do_test auth-1.61 { 467c5c4113dSnw141292 set ::authargs 468c5c4113dSnw141292} {t2 data1.txt main {}} 469c5c4113dSnw141292do_test auth-1.62 { 470c5c4113dSnw141292 execsql {SELECT * FROM t2} 471c5c4113dSnw141292} {11 2 33 7 8 9} 472c5c4113dSnw141292 473c5c4113dSnw141292do_test auth-1.63 { 474c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 475c5c4113dSnw141292 if {$code=="SQLITE_DELETE" && $arg1=="sqlite_master"} { 476c5c4113dSnw141292 return SQLITE_DENY 477c5c4113dSnw141292 } 478c5c4113dSnw141292 return SQLITE_OK 479c5c4113dSnw141292 } 480c5c4113dSnw141292 catchsql {DROP TABLE t2} 481c5c4113dSnw141292} {1 {not authorized}} 482c5c4113dSnw141292do_test auth-1.64 { 483c5c4113dSnw141292 execsql {SELECT name FROM sqlite_master} 484c5c4113dSnw141292} {t2} 485c5c4113dSnw141292do_test auth-1.65 { 486c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 487c5c4113dSnw141292 if {$code=="SQLITE_DELETE" && $arg1=="t2"} { 488c5c4113dSnw141292 return SQLITE_DENY 489c5c4113dSnw141292 } 490c5c4113dSnw141292 return SQLITE_OK 491c5c4113dSnw141292 } 492c5c4113dSnw141292 catchsql {DROP TABLE t2} 493c5c4113dSnw141292} {1 {not authorized}} 494c5c4113dSnw141292do_test auth-1.66 { 495c5c4113dSnw141292 execsql {SELECT name FROM sqlite_master} 496c5c4113dSnw141292} {t2} 497c5c4113dSnw141292do_test auth-1.67 { 498c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 499c5c4113dSnw141292 if {$code=="SQLITE_DELETE" && $arg1=="sqlite_temp_master"} { 500c5c4113dSnw141292 return SQLITE_DENY 501c5c4113dSnw141292 } 502c5c4113dSnw141292 return SQLITE_OK 503c5c4113dSnw141292 } 504c5c4113dSnw141292 catchsql {DROP TABLE t1} 505c5c4113dSnw141292} {1 {not authorized}} 506c5c4113dSnw141292do_test auth-1.68 { 507c5c4113dSnw141292 execsql {SELECT name FROM sqlite_temp_master} 508c5c4113dSnw141292} {t1} 509c5c4113dSnw141292do_test auth-1.69 { 510c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 511c5c4113dSnw141292 if {$code=="SQLITE_DELETE" && $arg1=="t1"} { 512c5c4113dSnw141292 return SQLITE_DENY 513c5c4113dSnw141292 } 514c5c4113dSnw141292 return SQLITE_OK 515c5c4113dSnw141292 } 516c5c4113dSnw141292 catchsql {DROP TABLE t1} 517c5c4113dSnw141292} {1 {not authorized}} 518c5c4113dSnw141292do_test auth-1.70 { 519c5c4113dSnw141292 execsql {SELECT name FROM sqlite_temp_master} 520c5c4113dSnw141292} {t1} 521c5c4113dSnw141292 522c5c4113dSnw141292do_test auth-1.71 { 523c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 524c5c4113dSnw141292 if {$code=="SQLITE_DELETE" && $arg1=="sqlite_master"} { 525c5c4113dSnw141292 return SQLITE_IGNORE 526c5c4113dSnw141292 } 527c5c4113dSnw141292 return SQLITE_OK 528c5c4113dSnw141292 } 529c5c4113dSnw141292 catchsql {DROP TABLE t2} 530c5c4113dSnw141292} {0 {}} 531c5c4113dSnw141292do_test auth-1.72 { 532c5c4113dSnw141292 execsql {SELECT name FROM sqlite_master} 533c5c4113dSnw141292} {t2} 534c5c4113dSnw141292do_test auth-1.73 { 535c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 536c5c4113dSnw141292 if {$code=="SQLITE_DELETE" && $arg1=="t2"} { 537c5c4113dSnw141292 return SQLITE_IGNORE 538c5c4113dSnw141292 } 539c5c4113dSnw141292 return SQLITE_OK 540c5c4113dSnw141292 } 541c5c4113dSnw141292 catchsql {DROP TABLE t2} 542c5c4113dSnw141292} {0 {}} 543c5c4113dSnw141292do_test auth-1.74 { 544c5c4113dSnw141292 execsql {SELECT name FROM sqlite_master} 545c5c4113dSnw141292} {t2} 546c5c4113dSnw141292do_test auth-1.75 { 547c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 548c5c4113dSnw141292 if {$code=="SQLITE_DELETE" && $arg1=="sqlite_temp_master"} { 549c5c4113dSnw141292 return SQLITE_IGNORE 550c5c4113dSnw141292 } 551c5c4113dSnw141292 return SQLITE_OK 552c5c4113dSnw141292 } 553c5c4113dSnw141292 catchsql {DROP TABLE t1} 554c5c4113dSnw141292} {0 {}} 555c5c4113dSnw141292do_test auth-1.76 { 556c5c4113dSnw141292 execsql {SELECT name FROM sqlite_temp_master} 557c5c4113dSnw141292} {t1} 558c5c4113dSnw141292do_test auth-1.77 { 559c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 560c5c4113dSnw141292 if {$code=="SQLITE_DELETE" && $arg1=="t1"} { 561c5c4113dSnw141292 return SQLITE_IGNORE 562c5c4113dSnw141292 } 563c5c4113dSnw141292 return SQLITE_OK 564c5c4113dSnw141292 } 565c5c4113dSnw141292 catchsql {DROP TABLE t1} 566c5c4113dSnw141292} {0 {}} 567c5c4113dSnw141292do_test auth-1.78 { 568c5c4113dSnw141292 execsql {SELECT name FROM sqlite_temp_master} 569c5c4113dSnw141292} {t1} 570c5c4113dSnw141292 571c5c4113dSnw141292do_test auth-1.79 { 572c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 573c5c4113dSnw141292 if {$code=="SQLITE_CREATE_VIEW"} { 574c5c4113dSnw141292 set ::authargs [list $arg1 $arg2 $arg3 $arg4] 575c5c4113dSnw141292 return SQLITE_DENY 576c5c4113dSnw141292 } 577c5c4113dSnw141292 return SQLITE_OK 578c5c4113dSnw141292 } 579c5c4113dSnw141292 catchsql {CREATE VIEW v1 AS SELECT a+1,b+1 FROM t2} 580c5c4113dSnw141292} {1 {not authorized}} 581c5c4113dSnw141292do_test auth-1.80 { 582c5c4113dSnw141292 set ::authargs 583c5c4113dSnw141292} {v1 {} main {}} 584c5c4113dSnw141292do_test auth-1.81 { 585c5c4113dSnw141292 execsql {SELECT name FROM sqlite_master} 586c5c4113dSnw141292} {t2} 587c5c4113dSnw141292do_test auth-1.82 { 588c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 589c5c4113dSnw141292 if {$code=="SQLITE_CREATE_VIEW"} { 590c5c4113dSnw141292 set ::authargs [list $arg1 $arg2 $arg3 $arg4] 591c5c4113dSnw141292 return SQLITE_IGNORE 592c5c4113dSnw141292 } 593c5c4113dSnw141292 return SQLITE_OK 594c5c4113dSnw141292 } 595c5c4113dSnw141292 catchsql {CREATE VIEW v1 AS SELECT a+1,b+1 FROM t2} 596c5c4113dSnw141292} {0 {}} 597c5c4113dSnw141292do_test auth-1.83 { 598c5c4113dSnw141292 set ::authargs 599c5c4113dSnw141292} {v1 {} main {}} 600c5c4113dSnw141292do_test auth-1.84 { 601c5c4113dSnw141292 execsql {SELECT name FROM sqlite_master} 602c5c4113dSnw141292} {t2} 603c5c4113dSnw141292 604c5c4113dSnw141292do_test auth-1.85 { 605c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 606c5c4113dSnw141292 if {$code=="SQLITE_CREATE_TEMP_VIEW"} { 607c5c4113dSnw141292 set ::authargs [list $arg1 $arg2 $arg3 $arg4] 608c5c4113dSnw141292 return SQLITE_DENY 609c5c4113dSnw141292 } 610c5c4113dSnw141292 return SQLITE_OK 611c5c4113dSnw141292 } 612c5c4113dSnw141292 catchsql {CREATE TEMPORARY VIEW v1 AS SELECT a+1,b+1 FROM t2} 613c5c4113dSnw141292} {1 {not authorized}} 614c5c4113dSnw141292do_test auth-1.86 { 615c5c4113dSnw141292 set ::authargs 616c5c4113dSnw141292} {v1 {} temp {}} 617c5c4113dSnw141292do_test auth-1.87 { 618c5c4113dSnw141292 execsql {SELECT name FROM sqlite_temp_master} 619c5c4113dSnw141292} {t1} 620c5c4113dSnw141292do_test auth-1.88 { 621c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 622c5c4113dSnw141292 if {$code=="SQLITE_CREATE_TEMP_VIEW"} { 623c5c4113dSnw141292 set ::authargs [list $arg1 $arg2 $arg3 $arg4] 624c5c4113dSnw141292 return SQLITE_IGNORE 625c5c4113dSnw141292 } 626c5c4113dSnw141292 return SQLITE_OK 627c5c4113dSnw141292 } 628c5c4113dSnw141292 catchsql {CREATE TEMPORARY VIEW v1 AS SELECT a+1,b+1 FROM t2} 629c5c4113dSnw141292} {0 {}} 630c5c4113dSnw141292do_test auth-1.89 { 631c5c4113dSnw141292 set ::authargs 632c5c4113dSnw141292} {v1 {} temp {}} 633c5c4113dSnw141292do_test auth-1.90 { 634c5c4113dSnw141292 execsql {SELECT name FROM sqlite_temp_master} 635c5c4113dSnw141292} {t1} 636c5c4113dSnw141292 637c5c4113dSnw141292do_test auth-1.91 { 638c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 639c5c4113dSnw141292 if {$code=="SQLITE_INSERT" && $arg1=="sqlite_master"} { 640c5c4113dSnw141292 return SQLITE_DENY 641c5c4113dSnw141292 } 642c5c4113dSnw141292 return SQLITE_OK 643c5c4113dSnw141292 } 644c5c4113dSnw141292 catchsql {CREATE VIEW v1 AS SELECT a+1,b+1 FROM t2} 645c5c4113dSnw141292} {1 {not authorized}} 646c5c4113dSnw141292do_test auth-1.92 { 647c5c4113dSnw141292 execsql {SELECT name FROM sqlite_master} 648c5c4113dSnw141292} {t2} 649c5c4113dSnw141292do_test auth-1.93 { 650c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 651c5c4113dSnw141292 if {$code=="SQLITE_INSERT" && $arg1=="sqlite_master"} { 652c5c4113dSnw141292 return SQLITE_IGNORE 653c5c4113dSnw141292 } 654c5c4113dSnw141292 return SQLITE_OK 655c5c4113dSnw141292 } 656c5c4113dSnw141292 catchsql {CREATE VIEW v1 AS SELECT a+1,b+1 FROM t2} 657c5c4113dSnw141292} {0 {}} 658c5c4113dSnw141292do_test auth-1.94 { 659c5c4113dSnw141292 execsql {SELECT name FROM sqlite_master} 660c5c4113dSnw141292} {t2} 661c5c4113dSnw141292 662c5c4113dSnw141292do_test auth-1.95 { 663c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 664c5c4113dSnw141292 if {$code=="SQLITE_INSERT" && $arg1=="sqlite_temp_master"} { 665c5c4113dSnw141292 return SQLITE_DENY 666c5c4113dSnw141292 } 667c5c4113dSnw141292 return SQLITE_OK 668c5c4113dSnw141292 } 669c5c4113dSnw141292 catchsql {CREATE TEMPORARY VIEW v1 AS SELECT a+1,b+1 FROM t2} 670c5c4113dSnw141292} {1 {not authorized}} 671c5c4113dSnw141292do_test auth-1.96 { 672c5c4113dSnw141292 execsql {SELECT name FROM sqlite_temp_master} 673c5c4113dSnw141292} {t1} 674c5c4113dSnw141292do_test auth-1.97 { 675c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 676c5c4113dSnw141292 if {$code=="SQLITE_INSERT" && $arg1=="sqlite_temp_master"} { 677c5c4113dSnw141292 return SQLITE_IGNORE 678c5c4113dSnw141292 } 679c5c4113dSnw141292 return SQLITE_OK 680c5c4113dSnw141292 } 681c5c4113dSnw141292 catchsql {CREATE TEMPORARY VIEW v1 AS SELECT a+1,b+1 FROM t2} 682c5c4113dSnw141292} {0 {}} 683c5c4113dSnw141292do_test auth-1.98 { 684c5c4113dSnw141292 execsql {SELECT name FROM sqlite_temp_master} 685c5c4113dSnw141292} {t1} 686c5c4113dSnw141292 687c5c4113dSnw141292do_test auth-1.99 { 688c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 689c5c4113dSnw141292 if {$code=="SQLITE_DELETE" && $arg1=="sqlite_master"} { 690c5c4113dSnw141292 return SQLITE_DENY 691c5c4113dSnw141292 } 692c5c4113dSnw141292 return SQLITE_OK 693c5c4113dSnw141292 } 694c5c4113dSnw141292 catchsql { 695c5c4113dSnw141292 CREATE VIEW v2 AS SELECT a+1,b+1 FROM t2; 696c5c4113dSnw141292 DROP VIEW v2 697c5c4113dSnw141292 } 698c5c4113dSnw141292} {1 {not authorized}} 699c5c4113dSnw141292do_test auth-1.100 { 700c5c4113dSnw141292 execsql {SELECT name FROM sqlite_master} 701c5c4113dSnw141292} {t2 v2} 702c5c4113dSnw141292do_test auth-1.101 { 703c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 704c5c4113dSnw141292 if {$code=="SQLITE_DROP_VIEW"} { 705c5c4113dSnw141292 set ::authargs [list $arg1 $arg2 $arg3 $arg4] 706c5c4113dSnw141292 return SQLITE_DENY 707c5c4113dSnw141292 } 708c5c4113dSnw141292 return SQLITE_OK 709c5c4113dSnw141292 } 710c5c4113dSnw141292 catchsql {DROP VIEW v2} 711c5c4113dSnw141292} {1 {not authorized}} 712c5c4113dSnw141292do_test auth-1.102 { 713c5c4113dSnw141292 set ::authargs 714c5c4113dSnw141292} {v2 {} main {}} 715c5c4113dSnw141292do_test auth-1.103 { 716c5c4113dSnw141292 execsql {SELECT name FROM sqlite_master} 717c5c4113dSnw141292} {t2 v2} 718c5c4113dSnw141292do_test auth-1.104 { 719c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 720c5c4113dSnw141292 if {$code=="SQLITE_DELETE" && $arg1=="sqlite_master"} { 721c5c4113dSnw141292 return SQLITE_IGNORE 722c5c4113dSnw141292 } 723c5c4113dSnw141292 return SQLITE_OK 724c5c4113dSnw141292 } 725c5c4113dSnw141292 catchsql {DROP VIEW v2} 726c5c4113dSnw141292} {0 {}} 727c5c4113dSnw141292do_test auth-1.105 { 728c5c4113dSnw141292 execsql {SELECT name FROM sqlite_master} 729c5c4113dSnw141292} {t2 v2} 730c5c4113dSnw141292do_test auth-1.106 { 731c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 732c5c4113dSnw141292 if {$code=="SQLITE_DROP_VIEW"} { 733c5c4113dSnw141292 set ::authargs [list $arg1 $arg2 $arg3 $arg4] 734c5c4113dSnw141292 return SQLITE_IGNORE 735c5c4113dSnw141292 } 736c5c4113dSnw141292 return SQLITE_OK 737c5c4113dSnw141292 } 738c5c4113dSnw141292 catchsql {DROP VIEW v2} 739c5c4113dSnw141292} {0 {}} 740c5c4113dSnw141292do_test auth-1.107 { 741c5c4113dSnw141292 set ::authargs 742c5c4113dSnw141292} {v2 {} main {}} 743c5c4113dSnw141292do_test auth-1.108 { 744c5c4113dSnw141292 execsql {SELECT name FROM sqlite_master} 745c5c4113dSnw141292} {t2 v2} 746c5c4113dSnw141292do_test auth-1.109 { 747c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 748c5c4113dSnw141292 if {$code=="SQLITE_DROP_VIEW"} { 749c5c4113dSnw141292 set ::authargs [list $arg1 $arg2 $arg3 $arg4] 750c5c4113dSnw141292 return SQLITE_OK 751c5c4113dSnw141292 } 752c5c4113dSnw141292 return SQLITE_OK 753c5c4113dSnw141292 } 754c5c4113dSnw141292 catchsql {DROP VIEW v2} 755c5c4113dSnw141292} {0 {}} 756c5c4113dSnw141292do_test auth-1.110 { 757c5c4113dSnw141292 set ::authargs 758c5c4113dSnw141292} {v2 {} main {}} 759c5c4113dSnw141292do_test auth-1.111 { 760c5c4113dSnw141292 execsql {SELECT name FROM sqlite_master} 761c5c4113dSnw141292} {t2} 762c5c4113dSnw141292 763c5c4113dSnw141292 764c5c4113dSnw141292do_test auth-1.112 { 765c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 766c5c4113dSnw141292 if {$code=="SQLITE_DELETE" && $arg1=="sqlite_temp_master"} { 767c5c4113dSnw141292 return SQLITE_DENY 768c5c4113dSnw141292 } 769c5c4113dSnw141292 return SQLITE_OK 770c5c4113dSnw141292 } 771c5c4113dSnw141292 catchsql { 772c5c4113dSnw141292 CREATE TEMP VIEW v1 AS SELECT a+1,b+1 FROM t1; 773c5c4113dSnw141292 DROP VIEW v1 774c5c4113dSnw141292 } 775c5c4113dSnw141292} {1 {not authorized}} 776c5c4113dSnw141292do_test auth-1.113 { 777c5c4113dSnw141292 execsql {SELECT name FROM sqlite_temp_master} 778c5c4113dSnw141292} {t1 v1} 779c5c4113dSnw141292do_test auth-1.114 { 780c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 781c5c4113dSnw141292 if {$code=="SQLITE_DROP_TEMP_VIEW"} { 782c5c4113dSnw141292 set ::authargs [list $arg1 $arg2 $arg3 $arg4] 783c5c4113dSnw141292 return SQLITE_DENY 784c5c4113dSnw141292 } 785c5c4113dSnw141292 return SQLITE_OK 786c5c4113dSnw141292 } 787c5c4113dSnw141292 catchsql {DROP VIEW v1} 788c5c4113dSnw141292} {1 {not authorized}} 789c5c4113dSnw141292do_test auth-1.115 { 790c5c4113dSnw141292 set ::authargs 791c5c4113dSnw141292} {v1 {} temp {}} 792c5c4113dSnw141292do_test auth-1.116 { 793c5c4113dSnw141292 execsql {SELECT name FROM sqlite_temp_master} 794c5c4113dSnw141292} {t1 v1} 795c5c4113dSnw141292do_test auth-1.117 { 796c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 797c5c4113dSnw141292 if {$code=="SQLITE_DELETE" && $arg1=="sqlite_temp_master"} { 798c5c4113dSnw141292 return SQLITE_IGNORE 799c5c4113dSnw141292 } 800c5c4113dSnw141292 return SQLITE_OK 801c5c4113dSnw141292 } 802c5c4113dSnw141292 catchsql {DROP VIEW v1} 803c5c4113dSnw141292} {0 {}} 804c5c4113dSnw141292do_test auth-1.118 { 805c5c4113dSnw141292 execsql {SELECT name FROM sqlite_temp_master} 806c5c4113dSnw141292} {t1 v1} 807c5c4113dSnw141292do_test auth-1.119 { 808c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 809c5c4113dSnw141292 if {$code=="SQLITE_DROP_TEMP_VIEW"} { 810c5c4113dSnw141292 set ::authargs [list $arg1 $arg2 $arg3 $arg4] 811c5c4113dSnw141292 return SQLITE_IGNORE 812c5c4113dSnw141292 } 813c5c4113dSnw141292 return SQLITE_OK 814c5c4113dSnw141292 } 815c5c4113dSnw141292 catchsql {DROP VIEW v1} 816c5c4113dSnw141292} {0 {}} 817c5c4113dSnw141292do_test auth-1.120 { 818c5c4113dSnw141292 set ::authargs 819c5c4113dSnw141292} {v1 {} temp {}} 820c5c4113dSnw141292do_test auth-1.121 { 821c5c4113dSnw141292 execsql {SELECT name FROM sqlite_temp_master} 822c5c4113dSnw141292} {t1 v1} 823c5c4113dSnw141292do_test auth-1.122 { 824c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 825c5c4113dSnw141292 if {$code=="SQLITE_DROP_TEMP_VIEW"} { 826c5c4113dSnw141292 set ::authargs [list $arg1 $arg2 $arg3 $arg4] 827c5c4113dSnw141292 return SQLITE_OK 828c5c4113dSnw141292 } 829c5c4113dSnw141292 return SQLITE_OK 830c5c4113dSnw141292 } 831c5c4113dSnw141292 catchsql {DROP VIEW v1} 832c5c4113dSnw141292} {0 {}} 833c5c4113dSnw141292do_test auth-1.123 { 834c5c4113dSnw141292 set ::authargs 835c5c4113dSnw141292} {v1 {} temp {}} 836c5c4113dSnw141292do_test auth-1.124 { 837c5c4113dSnw141292 execsql {SELECT name FROM sqlite_temp_master} 838c5c4113dSnw141292} {t1} 839c5c4113dSnw141292 840c5c4113dSnw141292do_test auth-1.125 { 841c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 842c5c4113dSnw141292 if {$code=="SQLITE_CREATE_TRIGGER"} { 843c5c4113dSnw141292 set ::authargs [list $arg1 $arg2 $arg3 $arg4] 844c5c4113dSnw141292 return SQLITE_DENY 845c5c4113dSnw141292 } 846c5c4113dSnw141292 return SQLITE_OK 847c5c4113dSnw141292 } 848c5c4113dSnw141292 catchsql { 849c5c4113dSnw141292 CREATE TRIGGER r2 DELETE on t2 BEGIN 850c5c4113dSnw141292 SELECT NULL; 851c5c4113dSnw141292 END; 852c5c4113dSnw141292 } 853c5c4113dSnw141292} {1 {not authorized}} 854c5c4113dSnw141292do_test auth-1.126 { 855c5c4113dSnw141292 set ::authargs 856c5c4113dSnw141292} {r2 t2 main {}} 857c5c4113dSnw141292do_test auth-1.127 { 858c5c4113dSnw141292 execsql {SELECT name FROM sqlite_master} 859c5c4113dSnw141292} {t2} 860c5c4113dSnw141292do_test auth-1.128 { 861c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 862c5c4113dSnw141292 if {$code=="SQLITE_INSERT" && $arg1=="sqlite_master"} { 863c5c4113dSnw141292 return SQLITE_DENY 864c5c4113dSnw141292 } 865c5c4113dSnw141292 return SQLITE_OK 866c5c4113dSnw141292 } 867c5c4113dSnw141292 catchsql { 868c5c4113dSnw141292 CREATE TRIGGER r2 DELETE on t2 BEGIN 869c5c4113dSnw141292 SELECT NULL; 870c5c4113dSnw141292 END; 871c5c4113dSnw141292 } 872c5c4113dSnw141292} {1 {not authorized}} 873c5c4113dSnw141292do_test auth-1.129 { 874c5c4113dSnw141292 execsql {SELECT name FROM sqlite_master} 875c5c4113dSnw141292} {t2} 876c5c4113dSnw141292do_test auth-1.130 { 877c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 878c5c4113dSnw141292 if {$code=="SQLITE_CREATE_TRIGGER"} { 879c5c4113dSnw141292 set ::authargs [list $arg1 $arg2 $arg3 $arg4] 880c5c4113dSnw141292 return SQLITE_IGNORE 881c5c4113dSnw141292 } 882c5c4113dSnw141292 return SQLITE_OK 883c5c4113dSnw141292 } 884c5c4113dSnw141292 catchsql { 885c5c4113dSnw141292 CREATE TRIGGER r2 DELETE on t2 BEGIN 886c5c4113dSnw141292 SELECT NULL; 887c5c4113dSnw141292 END; 888c5c4113dSnw141292 } 889c5c4113dSnw141292} {0 {}} 890c5c4113dSnw141292do_test auth-1.131 { 891c5c4113dSnw141292 set ::authargs 892c5c4113dSnw141292} {r2 t2 main {}} 893c5c4113dSnw141292do_test auth-1.132 { 894c5c4113dSnw141292 execsql {SELECT name FROM sqlite_master} 895c5c4113dSnw141292} {t2} 896c5c4113dSnw141292do_test auth-1.133 { 897c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 898c5c4113dSnw141292 if {$code=="SQLITE_INSERT" && $arg1=="sqlite_master"} { 899c5c4113dSnw141292 return SQLITE_IGNORE 900c5c4113dSnw141292 } 901c5c4113dSnw141292 return SQLITE_OK 902c5c4113dSnw141292 } 903c5c4113dSnw141292 catchsql { 904c5c4113dSnw141292 CREATE TRIGGER r2 DELETE on t2 BEGIN 905c5c4113dSnw141292 SELECT NULL; 906c5c4113dSnw141292 END; 907c5c4113dSnw141292 } 908c5c4113dSnw141292} {0 {}} 909c5c4113dSnw141292do_test auth-1.134 { 910c5c4113dSnw141292 execsql {SELECT name FROM sqlite_master} 911c5c4113dSnw141292} {t2} 912c5c4113dSnw141292do_test auth-1.135 { 913c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 914c5c4113dSnw141292 if {$code=="SQLITE_CREATE_TRIGGER"} { 915c5c4113dSnw141292 set ::authargs [list $arg1 $arg2 $arg3 $arg4] 916c5c4113dSnw141292 return SQLITE_OK 917c5c4113dSnw141292 } 918c5c4113dSnw141292 return SQLITE_OK 919c5c4113dSnw141292 } 920c5c4113dSnw141292 catchsql { 921c5c4113dSnw141292 CREATE TABLE tx(id); 922c5c4113dSnw141292 CREATE TRIGGER r2 AFTER INSERT ON t2 BEGIN 923c5c4113dSnw141292 INSERT INTO tx VALUES(NEW.rowid); 924c5c4113dSnw141292 END; 925c5c4113dSnw141292 } 926c5c4113dSnw141292} {0 {}} 927c5c4113dSnw141292do_test auth-1.136.1 { 928c5c4113dSnw141292 set ::authargs 929c5c4113dSnw141292} {r2 t2 main {}} 930c5c4113dSnw141292do_test auth-1.136.2 { 931c5c4113dSnw141292 execsql { 932c5c4113dSnw141292 SELECT name FROM sqlite_master WHERE type='trigger' 933c5c4113dSnw141292 } 934c5c4113dSnw141292} {r2} 935c5c4113dSnw141292do_test auth-1.136.3 { 936c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 937c5c4113dSnw141292 lappend ::authargs $code $arg1 $arg2 $arg3 $arg4 938c5c4113dSnw141292 return SQLITE_OK 939c5c4113dSnw141292 } 940c5c4113dSnw141292 set ::authargs {} 941c5c4113dSnw141292 execsql { 942c5c4113dSnw141292 INSERT INTO t2 VALUES(1,2,3); 943c5c4113dSnw141292 } 944c5c4113dSnw141292 set ::authargs 945c5c4113dSnw141292} {SQLITE_INSERT t2 {} main {} SQLITE_INSERT tx {} main r2 SQLITE_READ t2 ROWID main r2} 946c5c4113dSnw141292do_test auth-1.136.4 { 947c5c4113dSnw141292 execsql { 948c5c4113dSnw141292 SELECT * FROM tx; 949c5c4113dSnw141292 } 950c5c4113dSnw141292} {3} 951c5c4113dSnw141292do_test auth-1.137 { 952c5c4113dSnw141292 execsql {SELECT name FROM sqlite_master} 953c5c4113dSnw141292} {t2 tx r2} 954c5c4113dSnw141292do_test auth-1.138 { 955c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 956c5c4113dSnw141292 if {$code=="SQLITE_CREATE_TEMP_TRIGGER"} { 957c5c4113dSnw141292 set ::authargs [list $arg1 $arg2 $arg3 $arg4] 958c5c4113dSnw141292 return SQLITE_DENY 959c5c4113dSnw141292 } 960c5c4113dSnw141292 return SQLITE_OK 961c5c4113dSnw141292 } 962c5c4113dSnw141292 catchsql { 963c5c4113dSnw141292 CREATE TRIGGER r1 DELETE on t1 BEGIN 964c5c4113dSnw141292 SELECT NULL; 965c5c4113dSnw141292 END; 966c5c4113dSnw141292 } 967c5c4113dSnw141292} {1 {not authorized}} 968c5c4113dSnw141292do_test auth-1.139 { 969c5c4113dSnw141292 set ::authargs 970c5c4113dSnw141292} {r1 t1 temp {}} 971c5c4113dSnw141292do_test auth-1.140 { 972c5c4113dSnw141292 execsql {SELECT name FROM sqlite_temp_master} 973c5c4113dSnw141292} {t1} 974c5c4113dSnw141292do_test auth-1.141 { 975c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 976c5c4113dSnw141292 if {$code=="SQLITE_INSERT" && $arg1=="sqlite_temp_master"} { 977c5c4113dSnw141292 return SQLITE_DENY 978c5c4113dSnw141292 } 979c5c4113dSnw141292 return SQLITE_OK 980c5c4113dSnw141292 } 981c5c4113dSnw141292 catchsql { 982c5c4113dSnw141292 CREATE TRIGGER r1 DELETE on t1 BEGIN 983c5c4113dSnw141292 SELECT NULL; 984c5c4113dSnw141292 END; 985c5c4113dSnw141292 } 986c5c4113dSnw141292} {1 {not authorized}} 987c5c4113dSnw141292do_test auth-1.142 { 988c5c4113dSnw141292 execsql {SELECT name FROM sqlite_temp_master} 989c5c4113dSnw141292} {t1} 990c5c4113dSnw141292do_test auth-1.143 { 991c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 992c5c4113dSnw141292 if {$code=="SQLITE_CREATE_TEMP_TRIGGER"} { 993c5c4113dSnw141292 set ::authargs [list $arg1 $arg2 $arg3 $arg4] 994c5c4113dSnw141292 return SQLITE_IGNORE 995c5c4113dSnw141292 } 996c5c4113dSnw141292 return SQLITE_OK 997c5c4113dSnw141292 } 998c5c4113dSnw141292 catchsql { 999c5c4113dSnw141292 CREATE TRIGGER r1 DELETE on t1 BEGIN 1000c5c4113dSnw141292 SELECT NULL; 1001c5c4113dSnw141292 END; 1002c5c4113dSnw141292 } 1003c5c4113dSnw141292} {0 {}} 1004c5c4113dSnw141292do_test auth-1.144 { 1005c5c4113dSnw141292 set ::authargs 1006c5c4113dSnw141292} {r1 t1 temp {}} 1007c5c4113dSnw141292do_test auth-1.145 { 1008c5c4113dSnw141292 execsql {SELECT name FROM sqlite_temp_master} 1009c5c4113dSnw141292} {t1} 1010c5c4113dSnw141292do_test auth-1.146 { 1011c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 1012c5c4113dSnw141292 if {$code=="SQLITE_INSERT" && $arg1=="sqlite_temp_master"} { 1013c5c4113dSnw141292 return SQLITE_IGNORE 1014c5c4113dSnw141292 } 1015c5c4113dSnw141292 return SQLITE_OK 1016c5c4113dSnw141292 } 1017c5c4113dSnw141292 catchsql { 1018c5c4113dSnw141292 CREATE TRIGGER r1 DELETE on t1 BEGIN 1019c5c4113dSnw141292 SELECT NULL; 1020c5c4113dSnw141292 END; 1021c5c4113dSnw141292 } 1022c5c4113dSnw141292} {0 {}} 1023c5c4113dSnw141292do_test auth-1.147 { 1024c5c4113dSnw141292 execsql {SELECT name FROM sqlite_temp_master} 1025c5c4113dSnw141292} {t1} 1026c5c4113dSnw141292do_test auth-1.148 { 1027c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 1028c5c4113dSnw141292 if {$code=="SQLITE_CREATE_TEMP_TRIGGER"} { 1029c5c4113dSnw141292 set ::authargs [list $arg1 $arg2 $arg3 $arg4] 1030c5c4113dSnw141292 return SQLITE_OK 1031c5c4113dSnw141292 } 1032c5c4113dSnw141292 return SQLITE_OK 1033c5c4113dSnw141292 } 1034c5c4113dSnw141292 catchsql { 1035c5c4113dSnw141292 CREATE TRIGGER r1 DELETE on t1 BEGIN 1036c5c4113dSnw141292 SELECT NULL; 1037c5c4113dSnw141292 END; 1038c5c4113dSnw141292 } 1039c5c4113dSnw141292} {0 {}} 1040c5c4113dSnw141292do_test auth-1.149 { 1041c5c4113dSnw141292 set ::authargs 1042c5c4113dSnw141292} {r1 t1 temp {}} 1043c5c4113dSnw141292do_test auth-1.150 { 1044c5c4113dSnw141292 execsql {SELECT name FROM sqlite_temp_master} 1045c5c4113dSnw141292} {t1 r1} 1046c5c4113dSnw141292 1047c5c4113dSnw141292do_test auth-1.151 { 1048c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 1049c5c4113dSnw141292 if {$code=="SQLITE_DELETE" && $arg1=="sqlite_master"} { 1050c5c4113dSnw141292 return SQLITE_DENY 1051c5c4113dSnw141292 } 1052c5c4113dSnw141292 return SQLITE_OK 1053c5c4113dSnw141292 } 1054c5c4113dSnw141292 catchsql {DROP TRIGGER r2} 1055c5c4113dSnw141292} {1 {not authorized}} 1056c5c4113dSnw141292do_test auth-1.152 { 1057c5c4113dSnw141292 execsql {SELECT name FROM sqlite_master} 1058c5c4113dSnw141292} {t2 tx r2} 1059c5c4113dSnw141292do_test auth-1.153 { 1060c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 1061c5c4113dSnw141292 if {$code=="SQLITE_DROP_TRIGGER"} { 1062c5c4113dSnw141292 set ::authargs [list $arg1 $arg2 $arg3 $arg4] 1063c5c4113dSnw141292 return SQLITE_DENY 1064c5c4113dSnw141292 } 1065c5c4113dSnw141292 return SQLITE_OK 1066c5c4113dSnw141292 } 1067c5c4113dSnw141292 catchsql {DROP TRIGGER r2} 1068c5c4113dSnw141292} {1 {not authorized}} 1069c5c4113dSnw141292do_test auth-1.154 { 1070c5c4113dSnw141292 set ::authargs 1071c5c4113dSnw141292} {r2 t2 main {}} 1072c5c4113dSnw141292do_test auth-1.155 { 1073c5c4113dSnw141292 execsql {SELECT name FROM sqlite_master} 1074c5c4113dSnw141292} {t2 tx r2} 1075c5c4113dSnw141292do_test auth-1.156 { 1076c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 1077c5c4113dSnw141292 if {$code=="SQLITE_DELETE" && $arg1=="sqlite_master"} { 1078c5c4113dSnw141292 return SQLITE_IGNORE 1079c5c4113dSnw141292 } 1080c5c4113dSnw141292 return SQLITE_OK 1081c5c4113dSnw141292 } 1082c5c4113dSnw141292 catchsql {DROP TRIGGER r2} 1083c5c4113dSnw141292} {0 {}} 1084c5c4113dSnw141292do_test auth-1.157 { 1085c5c4113dSnw141292 execsql {SELECT name FROM sqlite_master} 1086c5c4113dSnw141292} {t2 tx r2} 1087c5c4113dSnw141292do_test auth-1.158 { 1088c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 1089c5c4113dSnw141292 if {$code=="SQLITE_DROP_TRIGGER"} { 1090c5c4113dSnw141292 set ::authargs [list $arg1 $arg2 $arg3 $arg4] 1091c5c4113dSnw141292 return SQLITE_IGNORE 1092c5c4113dSnw141292 } 1093c5c4113dSnw141292 return SQLITE_OK 1094c5c4113dSnw141292 } 1095c5c4113dSnw141292 catchsql {DROP TRIGGER r2} 1096c5c4113dSnw141292} {0 {}} 1097c5c4113dSnw141292do_test auth-1.159 { 1098c5c4113dSnw141292 set ::authargs 1099c5c4113dSnw141292} {r2 t2 main {}} 1100c5c4113dSnw141292do_test auth-1.160 { 1101c5c4113dSnw141292 execsql {SELECT name FROM sqlite_master} 1102c5c4113dSnw141292} {t2 tx r2} 1103c5c4113dSnw141292do_test auth-1.161 { 1104c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 1105c5c4113dSnw141292 if {$code=="SQLITE_DROP_TRIGGER"} { 1106c5c4113dSnw141292 set ::authargs [list $arg1 $arg2 $arg3 $arg4] 1107c5c4113dSnw141292 return SQLITE_OK 1108c5c4113dSnw141292 } 1109c5c4113dSnw141292 return SQLITE_OK 1110c5c4113dSnw141292 } 1111c5c4113dSnw141292 catchsql {DROP TRIGGER r2} 1112c5c4113dSnw141292} {0 {}} 1113c5c4113dSnw141292do_test auth-1.162 { 1114c5c4113dSnw141292 set ::authargs 1115c5c4113dSnw141292} {r2 t2 main {}} 1116c5c4113dSnw141292do_test auth-1.163 { 1117c5c4113dSnw141292 execsql { 1118c5c4113dSnw141292 DROP TABLE tx; 1119c5c4113dSnw141292 DELETE FROM t2 WHERE a=1 AND b=2 AND c=3; 1120c5c4113dSnw141292 SELECT name FROM sqlite_master; 1121c5c4113dSnw141292 } 1122c5c4113dSnw141292} {t2} 1123c5c4113dSnw141292 1124c5c4113dSnw141292do_test auth-1.164 { 1125c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 1126c5c4113dSnw141292 if {$code=="SQLITE_DELETE" && $arg1=="sqlite_temp_master"} { 1127c5c4113dSnw141292 return SQLITE_DENY 1128c5c4113dSnw141292 } 1129c5c4113dSnw141292 return SQLITE_OK 1130c5c4113dSnw141292 } 1131c5c4113dSnw141292 catchsql {DROP TRIGGER r1} 1132c5c4113dSnw141292} {1 {not authorized}} 1133c5c4113dSnw141292do_test auth-1.165 { 1134c5c4113dSnw141292 execsql {SELECT name FROM sqlite_temp_master} 1135c5c4113dSnw141292} {t1 r1} 1136c5c4113dSnw141292do_test auth-1.166 { 1137c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 1138c5c4113dSnw141292 if {$code=="SQLITE_DROP_TEMP_TRIGGER"} { 1139c5c4113dSnw141292 set ::authargs [list $arg1 $arg2 $arg3 $arg4] 1140c5c4113dSnw141292 return SQLITE_DENY 1141c5c4113dSnw141292 } 1142c5c4113dSnw141292 return SQLITE_OK 1143c5c4113dSnw141292 } 1144c5c4113dSnw141292 catchsql {DROP TRIGGER r1} 1145c5c4113dSnw141292} {1 {not authorized}} 1146c5c4113dSnw141292do_test auth-1.167 { 1147c5c4113dSnw141292 set ::authargs 1148c5c4113dSnw141292} {r1 t1 temp {}} 1149c5c4113dSnw141292do_test auth-1.168 { 1150c5c4113dSnw141292 execsql {SELECT name FROM sqlite_temp_master} 1151c5c4113dSnw141292} {t1 r1} 1152c5c4113dSnw141292do_test auth-1.169 { 1153c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 1154c5c4113dSnw141292 if {$code=="SQLITE_DELETE" && $arg1=="sqlite_temp_master"} { 1155c5c4113dSnw141292 return SQLITE_IGNORE 1156c5c4113dSnw141292 } 1157c5c4113dSnw141292 return SQLITE_OK 1158c5c4113dSnw141292 } 1159c5c4113dSnw141292 catchsql {DROP TRIGGER r1} 1160c5c4113dSnw141292} {0 {}} 1161c5c4113dSnw141292do_test auth-1.170 { 1162c5c4113dSnw141292 execsql {SELECT name FROM sqlite_temp_master} 1163c5c4113dSnw141292} {t1 r1} 1164c5c4113dSnw141292do_test auth-1.171 { 1165c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 1166c5c4113dSnw141292 if {$code=="SQLITE_DROP_TEMP_TRIGGER"} { 1167c5c4113dSnw141292 set ::authargs [list $arg1 $arg2 $arg3 $arg4] 1168c5c4113dSnw141292 return SQLITE_IGNORE 1169c5c4113dSnw141292 } 1170c5c4113dSnw141292 return SQLITE_OK 1171c5c4113dSnw141292 } 1172c5c4113dSnw141292 catchsql {DROP TRIGGER r1} 1173c5c4113dSnw141292} {0 {}} 1174c5c4113dSnw141292do_test auth-1.172 { 1175c5c4113dSnw141292 set ::authargs 1176c5c4113dSnw141292} {r1 t1 temp {}} 1177c5c4113dSnw141292do_test auth-1.173 { 1178c5c4113dSnw141292 execsql {SELECT name FROM sqlite_temp_master} 1179c5c4113dSnw141292} {t1 r1} 1180c5c4113dSnw141292do_test auth-1.174 { 1181c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 1182c5c4113dSnw141292 if {$code=="SQLITE_DROP_TEMP_TRIGGER"} { 1183c5c4113dSnw141292 set ::authargs [list $arg1 $arg2 $arg3 $arg4] 1184c5c4113dSnw141292 return SQLITE_OK 1185c5c4113dSnw141292 } 1186c5c4113dSnw141292 return SQLITE_OK 1187c5c4113dSnw141292 } 1188c5c4113dSnw141292 catchsql {DROP TRIGGER r1} 1189c5c4113dSnw141292} {0 {}} 1190c5c4113dSnw141292do_test auth-1.175 { 1191c5c4113dSnw141292 set ::authargs 1192c5c4113dSnw141292} {r1 t1 temp {}} 1193c5c4113dSnw141292do_test auth-1.176 { 1194c5c4113dSnw141292 execsql {SELECT name FROM sqlite_temp_master} 1195c5c4113dSnw141292} {t1} 1196c5c4113dSnw141292 1197c5c4113dSnw141292do_test auth-1.177 { 1198c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 1199c5c4113dSnw141292 if {$code=="SQLITE_CREATE_INDEX"} { 1200c5c4113dSnw141292 set ::authargs [list $arg1 $arg2 $arg3 $arg4] 1201c5c4113dSnw141292 return SQLITE_DENY 1202c5c4113dSnw141292 } 1203c5c4113dSnw141292 return SQLITE_OK 1204c5c4113dSnw141292 } 1205c5c4113dSnw141292 catchsql {CREATE INDEX i2 ON t2(a)} 1206c5c4113dSnw141292} {1 {not authorized}} 1207c5c4113dSnw141292do_test auth-1.178 { 1208c5c4113dSnw141292 set ::authargs 1209c5c4113dSnw141292} {i2 t2 main {}} 1210c5c4113dSnw141292do_test auth-1.179 { 1211c5c4113dSnw141292 execsql {SELECT name FROM sqlite_master} 1212c5c4113dSnw141292} {t2} 1213c5c4113dSnw141292do_test auth-1.180 { 1214c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 1215c5c4113dSnw141292 if {$code=="SQLITE_INSERT" && $arg1=="sqlite_master"} { 1216c5c4113dSnw141292 return SQLITE_DENY 1217c5c4113dSnw141292 } 1218c5c4113dSnw141292 return SQLITE_OK 1219c5c4113dSnw141292 } 1220c5c4113dSnw141292 catchsql {CREATE INDEX i2 ON t2(a)} 1221c5c4113dSnw141292} {1 {not authorized}} 1222c5c4113dSnw141292do_test auth-1.181 { 1223c5c4113dSnw141292 execsql {SELECT name FROM sqlite_master} 1224c5c4113dSnw141292} {t2} 1225c5c4113dSnw141292do_test auth-1.182 { 1226c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 1227c5c4113dSnw141292 if {$code=="SQLITE_CREATE_INDEX"} { 1228c5c4113dSnw141292 set ::authargs [list $arg1 $arg2 $arg3 $arg4] 1229c5c4113dSnw141292 return SQLITE_IGNORE 1230c5c4113dSnw141292 } 1231c5c4113dSnw141292 return SQLITE_OK 1232c5c4113dSnw141292 } 1233c5c4113dSnw141292 catchsql {CREATE INDEX i2 ON t2(b)} 1234c5c4113dSnw141292} {0 {}} 1235c5c4113dSnw141292do_test auth-1.183 { 1236c5c4113dSnw141292 set ::authargs 1237c5c4113dSnw141292} {i2 t2 main {}} 1238c5c4113dSnw141292do_test auth-1.184 { 1239c5c4113dSnw141292 execsql {SELECT name FROM sqlite_master} 1240c5c4113dSnw141292} {t2} 1241c5c4113dSnw141292do_test auth-1.185 { 1242c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 1243c5c4113dSnw141292 if {$code=="SQLITE_INSERT" && $arg1=="sqlite_master"} { 1244c5c4113dSnw141292 return SQLITE_IGNORE 1245c5c4113dSnw141292 } 1246c5c4113dSnw141292 return SQLITE_OK 1247c5c4113dSnw141292 } 1248c5c4113dSnw141292 catchsql {CREATE INDEX i2 ON t2(b)} 1249c5c4113dSnw141292} {0 {}} 1250c5c4113dSnw141292do_test auth-1.186 { 1251c5c4113dSnw141292 execsql {SELECT name FROM sqlite_master} 1252c5c4113dSnw141292} {t2} 1253c5c4113dSnw141292do_test auth-1.187 { 1254c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 1255c5c4113dSnw141292 if {$code=="SQLITE_CREATE_INDEX"} { 1256c5c4113dSnw141292 set ::authargs [list $arg1 $arg2 $arg3 $arg4] 1257c5c4113dSnw141292 return SQLITE_OK 1258c5c4113dSnw141292 } 1259c5c4113dSnw141292 return SQLITE_OK 1260c5c4113dSnw141292 } 1261c5c4113dSnw141292 catchsql {CREATE INDEX i2 ON t2(a)} 1262c5c4113dSnw141292} {0 {}} 1263c5c4113dSnw141292do_test auth-1.188 { 1264c5c4113dSnw141292 set ::authargs 1265c5c4113dSnw141292} {i2 t2 main {}} 1266c5c4113dSnw141292do_test auth-1.189 { 1267c5c4113dSnw141292 execsql {SELECT name FROM sqlite_master} 1268c5c4113dSnw141292} {t2 i2} 1269c5c4113dSnw141292 1270c5c4113dSnw141292do_test auth-1.190 { 1271c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 1272c5c4113dSnw141292 if {$code=="SQLITE_CREATE_TEMP_INDEX"} { 1273c5c4113dSnw141292 set ::authargs [list $arg1 $arg2 $arg3 $arg4] 1274c5c4113dSnw141292 return SQLITE_DENY 1275c5c4113dSnw141292 } 1276c5c4113dSnw141292 return SQLITE_OK 1277c5c4113dSnw141292 } 1278c5c4113dSnw141292 catchsql {CREATE INDEX i1 ON t1(a)} 1279c5c4113dSnw141292} {1 {not authorized}} 1280c5c4113dSnw141292do_test auth-1.191 { 1281c5c4113dSnw141292 set ::authargs 1282c5c4113dSnw141292} {i1 t1 temp {}} 1283c5c4113dSnw141292do_test auth-1.192 { 1284c5c4113dSnw141292 execsql {SELECT name FROM sqlite_temp_master} 1285c5c4113dSnw141292} {t1} 1286c5c4113dSnw141292do_test auth-1.193 { 1287c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 1288c5c4113dSnw141292 if {$code=="SQLITE_INSERT" && $arg1=="sqlite_temp_master"} { 1289c5c4113dSnw141292 return SQLITE_DENY 1290c5c4113dSnw141292 } 1291c5c4113dSnw141292 return SQLITE_OK 1292c5c4113dSnw141292 } 1293c5c4113dSnw141292 catchsql {CREATE INDEX i1 ON t1(b)} 1294c5c4113dSnw141292} {1 {not authorized}} 1295c5c4113dSnw141292do_test auth-1.194 { 1296c5c4113dSnw141292 execsql {SELECT name FROM sqlite_temp_master} 1297c5c4113dSnw141292} {t1} 1298c5c4113dSnw141292do_test auth-1.195 { 1299c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 1300c5c4113dSnw141292 if {$code=="SQLITE_CREATE_TEMP_INDEX"} { 1301c5c4113dSnw141292 set ::authargs [list $arg1 $arg2 $arg3 $arg4] 1302c5c4113dSnw141292 return SQLITE_IGNORE 1303c5c4113dSnw141292 } 1304c5c4113dSnw141292 return SQLITE_OK 1305c5c4113dSnw141292 } 1306c5c4113dSnw141292 catchsql {CREATE INDEX i1 ON t1(b)} 1307c5c4113dSnw141292} {0 {}} 1308c5c4113dSnw141292do_test auth-1.196 { 1309c5c4113dSnw141292 set ::authargs 1310c5c4113dSnw141292} {i1 t1 temp {}} 1311c5c4113dSnw141292do_test auth-1.197 { 1312c5c4113dSnw141292 execsql {SELECT name FROM sqlite_temp_master} 1313c5c4113dSnw141292} {t1} 1314c5c4113dSnw141292do_test auth-1.198 { 1315c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 1316c5c4113dSnw141292 if {$code=="SQLITE_INSERT" && $arg1=="sqlite_temp_master"} { 1317c5c4113dSnw141292 return SQLITE_IGNORE 1318c5c4113dSnw141292 } 1319c5c4113dSnw141292 return SQLITE_OK 1320c5c4113dSnw141292 } 1321c5c4113dSnw141292 catchsql {CREATE INDEX i1 ON t1(c)} 1322c5c4113dSnw141292} {0 {}} 1323c5c4113dSnw141292do_test auth-1.199 { 1324c5c4113dSnw141292 execsql {SELECT name FROM sqlite_temp_master} 1325c5c4113dSnw141292} {t1} 1326c5c4113dSnw141292do_test auth-1.200 { 1327c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 1328c5c4113dSnw141292 if {$code=="SQLITE_CREATE_TEMP_INDEX"} { 1329c5c4113dSnw141292 set ::authargs [list $arg1 $arg2 $arg3 $arg4] 1330c5c4113dSnw141292 return SQLITE_OK 1331c5c4113dSnw141292 } 1332c5c4113dSnw141292 return SQLITE_OK 1333c5c4113dSnw141292 } 1334c5c4113dSnw141292 catchsql {CREATE INDEX i1 ON t1(a)} 1335c5c4113dSnw141292} {0 {}} 1336c5c4113dSnw141292do_test auth-1.201 { 1337c5c4113dSnw141292 set ::authargs 1338c5c4113dSnw141292} {i1 t1 temp {}} 1339c5c4113dSnw141292do_test auth-1.202 { 1340c5c4113dSnw141292 execsql {SELECT name FROM sqlite_temp_master} 1341c5c4113dSnw141292} {t1 i1} 1342c5c4113dSnw141292 1343c5c4113dSnw141292do_test auth-1.203 { 1344c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 1345c5c4113dSnw141292 if {$code=="SQLITE_DELETE" && $arg1=="sqlite_master"} { 1346c5c4113dSnw141292 return SQLITE_DENY 1347c5c4113dSnw141292 } 1348c5c4113dSnw141292 return SQLITE_OK 1349c5c4113dSnw141292 } 1350c5c4113dSnw141292 catchsql {DROP INDEX i2} 1351c5c4113dSnw141292} {1 {not authorized}} 1352c5c4113dSnw141292do_test auth-1.204 { 1353c5c4113dSnw141292 execsql {SELECT name FROM sqlite_master} 1354c5c4113dSnw141292} {t2 i2} 1355c5c4113dSnw141292do_test auth-1.205 { 1356c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 1357c5c4113dSnw141292 if {$code=="SQLITE_DROP_INDEX"} { 1358c5c4113dSnw141292 set ::authargs [list $arg1 $arg2 $arg3 $arg4] 1359c5c4113dSnw141292 return SQLITE_DENY 1360c5c4113dSnw141292 } 1361c5c4113dSnw141292 return SQLITE_OK 1362c5c4113dSnw141292 } 1363c5c4113dSnw141292 catchsql {DROP INDEX i2} 1364c5c4113dSnw141292} {1 {not authorized}} 1365c5c4113dSnw141292do_test auth-1.206 { 1366c5c4113dSnw141292 set ::authargs 1367c5c4113dSnw141292} {i2 t2 main {}} 1368c5c4113dSnw141292do_test auth-1.207 { 1369c5c4113dSnw141292 execsql {SELECT name FROM sqlite_master} 1370c5c4113dSnw141292} {t2 i2} 1371c5c4113dSnw141292do_test auth-1.208 { 1372c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 1373c5c4113dSnw141292 if {$code=="SQLITE_DELETE" && $arg1=="sqlite_master"} { 1374c5c4113dSnw141292 return SQLITE_IGNORE 1375c5c4113dSnw141292 } 1376c5c4113dSnw141292 return SQLITE_OK 1377c5c4113dSnw141292 } 1378c5c4113dSnw141292 catchsql {DROP INDEX i2} 1379c5c4113dSnw141292} {0 {}} 1380c5c4113dSnw141292do_test auth-1.209 { 1381c5c4113dSnw141292 execsql {SELECT name FROM sqlite_master} 1382c5c4113dSnw141292} {t2 i2} 1383c5c4113dSnw141292do_test auth-1.210 { 1384c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 1385c5c4113dSnw141292 if {$code=="SQLITE_DROP_INDEX"} { 1386c5c4113dSnw141292 set ::authargs [list $arg1 $arg2 $arg3 $arg4] 1387c5c4113dSnw141292 return SQLITE_IGNORE 1388c5c4113dSnw141292 } 1389c5c4113dSnw141292 return SQLITE_OK 1390c5c4113dSnw141292 } 1391c5c4113dSnw141292 catchsql {DROP INDEX i2} 1392c5c4113dSnw141292} {0 {}} 1393c5c4113dSnw141292do_test auth-1.211 { 1394c5c4113dSnw141292 set ::authargs 1395c5c4113dSnw141292} {i2 t2 main {}} 1396c5c4113dSnw141292do_test auth-1.212 { 1397c5c4113dSnw141292 execsql {SELECT name FROM sqlite_master} 1398c5c4113dSnw141292} {t2 i2} 1399c5c4113dSnw141292do_test auth-1.213 { 1400c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 1401c5c4113dSnw141292 if {$code=="SQLITE_DROP_INDEX"} { 1402c5c4113dSnw141292 set ::authargs [list $arg1 $arg2 $arg3 $arg4] 1403c5c4113dSnw141292 return SQLITE_OK 1404c5c4113dSnw141292 } 1405c5c4113dSnw141292 return SQLITE_OK 1406c5c4113dSnw141292 } 1407c5c4113dSnw141292 catchsql {DROP INDEX i2} 1408c5c4113dSnw141292} {0 {}} 1409c5c4113dSnw141292do_test auth-1.214 { 1410c5c4113dSnw141292 set ::authargs 1411c5c4113dSnw141292} {i2 t2 main {}} 1412c5c4113dSnw141292do_test auth-1.215 { 1413c5c4113dSnw141292 execsql {SELECT name FROM sqlite_master} 1414c5c4113dSnw141292} {t2} 1415c5c4113dSnw141292 1416c5c4113dSnw141292do_test auth-1.216 { 1417c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 1418c5c4113dSnw141292 if {$code=="SQLITE_DELETE" && $arg1=="sqlite_temp_master"} { 1419c5c4113dSnw141292 return SQLITE_DENY 1420c5c4113dSnw141292 } 1421c5c4113dSnw141292 return SQLITE_OK 1422c5c4113dSnw141292 } 1423c5c4113dSnw141292 catchsql {DROP INDEX i1} 1424c5c4113dSnw141292} {1 {not authorized}} 1425c5c4113dSnw141292do_test auth-1.217 { 1426c5c4113dSnw141292 execsql {SELECT name FROM sqlite_temp_master} 1427c5c4113dSnw141292} {t1 i1} 1428c5c4113dSnw141292do_test auth-1.218 { 1429c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 1430c5c4113dSnw141292 if {$code=="SQLITE_DROP_TEMP_INDEX"} { 1431c5c4113dSnw141292 set ::authargs [list $arg1 $arg2 $arg3 $arg4] 1432c5c4113dSnw141292 return SQLITE_DENY 1433c5c4113dSnw141292 } 1434c5c4113dSnw141292 return SQLITE_OK 1435c5c4113dSnw141292 } 1436c5c4113dSnw141292 catchsql {DROP INDEX i1} 1437c5c4113dSnw141292} {1 {not authorized}} 1438c5c4113dSnw141292do_test auth-1.219 { 1439c5c4113dSnw141292 set ::authargs 1440c5c4113dSnw141292} {i1 t1 temp {}} 1441c5c4113dSnw141292do_test auth-1.220 { 1442c5c4113dSnw141292 execsql {SELECT name FROM sqlite_temp_master} 1443c5c4113dSnw141292} {t1 i1} 1444c5c4113dSnw141292do_test auth-1.221 { 1445c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 1446c5c4113dSnw141292 if {$code=="SQLITE_DELETE" && $arg1=="sqlite_temp_master"} { 1447c5c4113dSnw141292 return SQLITE_IGNORE 1448c5c4113dSnw141292 } 1449c5c4113dSnw141292 return SQLITE_OK 1450c5c4113dSnw141292 } 1451c5c4113dSnw141292 catchsql {DROP INDEX i1} 1452c5c4113dSnw141292} {0 {}} 1453c5c4113dSnw141292do_test auth-1.222 { 1454c5c4113dSnw141292 execsql {SELECT name FROM sqlite_temp_master} 1455c5c4113dSnw141292} {t1 i1} 1456c5c4113dSnw141292do_test auth-1.223 { 1457c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 1458c5c4113dSnw141292 if {$code=="SQLITE_DROP_TEMP_INDEX"} { 1459c5c4113dSnw141292 set ::authargs [list $arg1 $arg2 $arg3 $arg4] 1460c5c4113dSnw141292 return SQLITE_IGNORE 1461c5c4113dSnw141292 } 1462c5c4113dSnw141292 return SQLITE_OK 1463c5c4113dSnw141292 } 1464c5c4113dSnw141292 catchsql {DROP INDEX i1} 1465c5c4113dSnw141292} {0 {}} 1466c5c4113dSnw141292do_test auth-1.224 { 1467c5c4113dSnw141292 set ::authargs 1468c5c4113dSnw141292} {i1 t1 temp {}} 1469c5c4113dSnw141292do_test auth-1.225 { 1470c5c4113dSnw141292 execsql {SELECT name FROM sqlite_temp_master} 1471c5c4113dSnw141292} {t1 i1} 1472c5c4113dSnw141292do_test auth-1.226 { 1473c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 1474c5c4113dSnw141292 if {$code=="SQLITE_DROP_TEMP_INDEX"} { 1475c5c4113dSnw141292 set ::authargs [list $arg1 $arg2 $arg3 $arg4] 1476c5c4113dSnw141292 return SQLITE_OK 1477c5c4113dSnw141292 } 1478c5c4113dSnw141292 return SQLITE_OK 1479c5c4113dSnw141292 } 1480c5c4113dSnw141292 catchsql {DROP INDEX i1} 1481c5c4113dSnw141292} {0 {}} 1482c5c4113dSnw141292do_test auth-1.227 { 1483c5c4113dSnw141292 set ::authargs 1484c5c4113dSnw141292} {i1 t1 temp {}} 1485c5c4113dSnw141292do_test auth-1.228 { 1486c5c4113dSnw141292 execsql {SELECT name FROM sqlite_temp_master} 1487c5c4113dSnw141292} {t1} 1488c5c4113dSnw141292 1489c5c4113dSnw141292do_test auth-1.229 { 1490c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 1491c5c4113dSnw141292 if {$code=="SQLITE_PRAGMA"} { 1492c5c4113dSnw141292 set ::authargs [list $arg1 $arg2 $arg3 $arg4] 1493c5c4113dSnw141292 return SQLITE_DENY 1494c5c4113dSnw141292 } 1495c5c4113dSnw141292 return SQLITE_OK 1496c5c4113dSnw141292 } 1497c5c4113dSnw141292 catchsql {PRAGMA full_column_names=on} 1498c5c4113dSnw141292} {1 {not authorized}} 1499c5c4113dSnw141292do_test auth-1.230 { 1500c5c4113dSnw141292 set ::authargs 1501c5c4113dSnw141292} {full_column_names on {} {}} 1502c5c4113dSnw141292do_test auth-1.231 { 1503c5c4113dSnw141292 execsql2 {SELECT a FROM t2} 1504c5c4113dSnw141292} {a 11 a 7} 1505c5c4113dSnw141292do_test auth-1.232 { 1506c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 1507c5c4113dSnw141292 if {$code=="SQLITE_PRAGMA"} { 1508c5c4113dSnw141292 set ::authargs [list $arg1 $arg2 $arg3 $arg4] 1509c5c4113dSnw141292 return SQLITE_IGNORE 1510c5c4113dSnw141292 } 1511c5c4113dSnw141292 return SQLITE_OK 1512c5c4113dSnw141292 } 1513c5c4113dSnw141292 catchsql {PRAGMA full_column_names=on} 1514c5c4113dSnw141292} {0 {}} 1515c5c4113dSnw141292do_test auth-1.233 { 1516c5c4113dSnw141292 set ::authargs 1517c5c4113dSnw141292} {full_column_names on {} {}} 1518c5c4113dSnw141292do_test auth-1.234 { 1519c5c4113dSnw141292 execsql2 {SELECT a FROM t2} 1520c5c4113dSnw141292} {a 11 a 7} 1521c5c4113dSnw141292do_test auth-1.235 { 1522c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 1523c5c4113dSnw141292 if {$code=="SQLITE_PRAGMA"} { 1524c5c4113dSnw141292 set ::authargs [list $arg1 $arg2 $arg3 $arg4] 1525c5c4113dSnw141292 return SQLITE_OK 1526c5c4113dSnw141292 } 1527c5c4113dSnw141292 return SQLITE_OK 1528c5c4113dSnw141292 } 1529c5c4113dSnw141292 catchsql {PRAGMA full_column_names=on} 1530c5c4113dSnw141292} {0 {}} 1531c5c4113dSnw141292do_test auth-1.236 { 1532c5c4113dSnw141292 execsql2 {SELECT a FROM t2} 1533c5c4113dSnw141292} {t2.a 11 t2.a 7} 1534c5c4113dSnw141292do_test auth-1.237 { 1535c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 1536c5c4113dSnw141292 if {$code=="SQLITE_PRAGMA"} { 1537c5c4113dSnw141292 set ::authargs [list $arg1 $arg2 $arg3 $arg4] 1538c5c4113dSnw141292 return SQLITE_OK 1539c5c4113dSnw141292 } 1540c5c4113dSnw141292 return SQLITE_OK 1541c5c4113dSnw141292 } 1542c5c4113dSnw141292 catchsql {PRAGMA full_column_names=OFF} 1543c5c4113dSnw141292} {0 {}} 1544c5c4113dSnw141292do_test auth-1.238 { 1545c5c4113dSnw141292 set ::authargs 1546c5c4113dSnw141292} {full_column_names OFF {} {}} 1547c5c4113dSnw141292do_test auth-1.239 { 1548c5c4113dSnw141292 execsql2 {SELECT a FROM t2} 1549c5c4113dSnw141292} {a 11 a 7} 1550c5c4113dSnw141292 1551c5c4113dSnw141292do_test auth-1.240 { 1552c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 1553c5c4113dSnw141292 if {$code=="SQLITE_TRANSACTION"} { 1554c5c4113dSnw141292 set ::authargs [list $arg1 $arg2 $arg3 $arg4] 1555c5c4113dSnw141292 return SQLITE_DENY 1556c5c4113dSnw141292 } 1557c5c4113dSnw141292 return SQLITE_OK 1558c5c4113dSnw141292 } 1559c5c4113dSnw141292 catchsql {BEGIN} 1560c5c4113dSnw141292} {1 {not authorized}} 1561c5c4113dSnw141292do_test auth-1.241 { 1562c5c4113dSnw141292 set ::authargs 1563c5c4113dSnw141292} {BEGIN {} {} {}} 1564c5c4113dSnw141292do_test auth-1.242 { 1565c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 1566c5c4113dSnw141292 if {$code=="SQLITE_TRANSACTION" && $arg1!="BEGIN"} { 1567c5c4113dSnw141292 set ::authargs [list $arg1 $arg2 $arg3 $arg4] 1568c5c4113dSnw141292 return SQLITE_DENY 1569c5c4113dSnw141292 } 1570c5c4113dSnw141292 return SQLITE_OK 1571c5c4113dSnw141292 } 1572c5c4113dSnw141292 catchsql {BEGIN; INSERT INTO t2 VALUES(44,55,66); COMMIT} 1573c5c4113dSnw141292} {1 {not authorized}} 1574c5c4113dSnw141292do_test auth-1.243 { 1575c5c4113dSnw141292 set ::authargs 1576c5c4113dSnw141292} {COMMIT {} {} {}} 1577c5c4113dSnw141292do_test auth-1.244 { 1578c5c4113dSnw141292 execsql {SELECT * FROM t2} 1579c5c4113dSnw141292} {11 2 33 7 8 9 44 55 66} 1580c5c4113dSnw141292do_test auth-1.245 { 1581c5c4113dSnw141292 catchsql {ROLLBACK} 1582c5c4113dSnw141292} {1 {not authorized}} 1583c5c4113dSnw141292do_test auth-1.246 { 1584c5c4113dSnw141292 set ::authargs 1585c5c4113dSnw141292} {ROLLBACK {} {} {}} 1586c5c4113dSnw141292do_test auth-1.247 { 1587c5c4113dSnw141292 catchsql {END TRANSACTION} 1588c5c4113dSnw141292} {1 {not authorized}} 1589c5c4113dSnw141292do_test auth-1.248 { 1590c5c4113dSnw141292 set ::authargs 1591c5c4113dSnw141292} {COMMIT {} {} {}} 1592c5c4113dSnw141292do_test auth-1.249 { 1593c5c4113dSnw141292 db authorizer {} 1594c5c4113dSnw141292 catchsql {ROLLBACK} 1595c5c4113dSnw141292} {0 {}} 1596c5c4113dSnw141292do_test auth-1.250 { 1597c5c4113dSnw141292 execsql {SELECT * FROM t2} 1598c5c4113dSnw141292} {11 2 33 7 8 9} 1599c5c4113dSnw141292 1600c5c4113dSnw141292# ticket #340 - authorization for ATTACH and DETACH. 1601c5c4113dSnw141292# 1602c5c4113dSnw141292do_test auth-1.251 { 1603c5c4113dSnw141292 db authorizer ::auth 1604c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 1605c5c4113dSnw141292 if {$code=="SQLITE_ATTACH"} { 1606c5c4113dSnw141292 set ::authargs [list $arg1 $arg2 $arg3 $arg4] 1607c5c4113dSnw141292 } 1608c5c4113dSnw141292 return SQLITE_OK 1609c5c4113dSnw141292 } 1610c5c4113dSnw141292 catchsql { 1611c5c4113dSnw141292 ATTACH DATABASE ':memory:' AS test1 1612c5c4113dSnw141292 } 1613c5c4113dSnw141292} {0 {}} 1614c5c4113dSnw141292do_test auth-1.252 { 1615c5c4113dSnw141292 set ::authargs 1616c5c4113dSnw141292} {:memory: {} {} {}} 1617c5c4113dSnw141292do_test auth-1.253 { 1618c5c4113dSnw141292 catchsql {DETACH DATABASE test1} 1619c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 1620c5c4113dSnw141292 if {$code=="SQLITE_ATTACH"} { 1621c5c4113dSnw141292 set ::authargs [list $arg1 $arg2 $arg3 $arg4] 1622c5c4113dSnw141292 return SQLITE_DENY 1623c5c4113dSnw141292 } 1624c5c4113dSnw141292 return SQLITE_OK 1625c5c4113dSnw141292 } 1626c5c4113dSnw141292 catchsql { 1627c5c4113dSnw141292 ATTACH DATABASE ':memory:' AS test1; 1628c5c4113dSnw141292 } 1629c5c4113dSnw141292} {1 {not authorized}} 1630c5c4113dSnw141292do_test auth-1.254 { 1631c5c4113dSnw141292 lindex [execsql {PRAGMA database_list}] 7 1632c5c4113dSnw141292} {} 1633c5c4113dSnw141292do_test auth-1.255 { 1634c5c4113dSnw141292 catchsql {DETACH DATABASE test1} 1635c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 1636c5c4113dSnw141292 if {$code=="SQLITE_ATTACH"} { 1637c5c4113dSnw141292 set ::authargs [list $arg1 $arg2 $arg3 $arg4] 1638c5c4113dSnw141292 return SQLITE_IGNORE 1639c5c4113dSnw141292 } 1640c5c4113dSnw141292 return SQLITE_OK 1641c5c4113dSnw141292 } 1642c5c4113dSnw141292 catchsql { 1643c5c4113dSnw141292 ATTACH DATABASE ':memory:' AS test1; 1644c5c4113dSnw141292 } 1645c5c4113dSnw141292} {0 {}} 1646c5c4113dSnw141292do_test auth-1.256 { 1647c5c4113dSnw141292 lindex [execsql {PRAGMA database_list}] 7 1648c5c4113dSnw141292} {} 1649c5c4113dSnw141292do_test auth-1.257 { 1650c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 1651c5c4113dSnw141292 if {$code=="SQLITE_DETACH"} { 1652c5c4113dSnw141292 set ::authargs [list $arg1 $arg2 $arg3 $arg4] 1653c5c4113dSnw141292 return SQLITE_OK 1654c5c4113dSnw141292 } 1655c5c4113dSnw141292 return SQLITE_OK 1656c5c4113dSnw141292 } 1657c5c4113dSnw141292 execsql {ATTACH DATABASE ':memory:' AS test1} 1658c5c4113dSnw141292 catchsql { 1659c5c4113dSnw141292 DETACH DATABASE test1; 1660c5c4113dSnw141292 } 1661c5c4113dSnw141292} {0 {}} 1662c5c4113dSnw141292do_test auth-1.258 { 1663c5c4113dSnw141292 lindex [execsql {PRAGMA database_list}] 7 1664c5c4113dSnw141292} {} 1665c5c4113dSnw141292do_test auth-1.259 { 1666c5c4113dSnw141292 execsql {ATTACH DATABASE ':memory:' AS test1} 1667c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 1668c5c4113dSnw141292 if {$code=="SQLITE_DETACH"} { 1669c5c4113dSnw141292 set ::authargs [list $arg1 $arg2 $arg3 $arg4] 1670c5c4113dSnw141292 return SQLITE_IGNORE 1671c5c4113dSnw141292 } 1672c5c4113dSnw141292 return SQLITE_OK 1673c5c4113dSnw141292 } 1674c5c4113dSnw141292 catchsql { 1675c5c4113dSnw141292 DETACH DATABASE test1; 1676c5c4113dSnw141292 } 1677c5c4113dSnw141292} {0 {}} 1678c5c4113dSnw141292do_test auth-1.260 { 1679c5c4113dSnw141292 lindex [execsql {PRAGMA database_list}] 7 1680c5c4113dSnw141292} {test1} 1681c5c4113dSnw141292do_test auth-1.261 { 1682c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 1683c5c4113dSnw141292 if {$code=="SQLITE_DETACH"} { 1684c5c4113dSnw141292 set ::authargs [list $arg1 $arg2 $arg3 $arg4] 1685c5c4113dSnw141292 return SQLITE_DENY 1686c5c4113dSnw141292 } 1687c5c4113dSnw141292 return SQLITE_OK 1688c5c4113dSnw141292 } 1689c5c4113dSnw141292 catchsql { 1690c5c4113dSnw141292 DETACH DATABASE test1; 1691c5c4113dSnw141292 } 1692c5c4113dSnw141292} {1 {not authorized}} 1693c5c4113dSnw141292do_test auth-1.262 { 1694c5c4113dSnw141292 lindex [execsql {PRAGMA database_list}] 7 1695c5c4113dSnw141292} {test1} 1696c5c4113dSnw141292db authorizer {} 1697c5c4113dSnw141292execsql {DETACH DATABASE test1} 1698c5c4113dSnw141292 1699c5c4113dSnw141292 1700c5c4113dSnw141292do_test auth-2.1 { 1701c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 1702c5c4113dSnw141292 if {$code=="SQLITE_READ" && $arg1=="t3" && $arg2=="x"} { 1703c5c4113dSnw141292 return SQLITE_DENY 1704c5c4113dSnw141292 } 1705c5c4113dSnw141292 return SQLITE_OK 1706c5c4113dSnw141292 } 1707c5c4113dSnw141292 db authorizer ::auth 1708c5c4113dSnw141292 execsql {CREATE TABLE t3(x INTEGER PRIMARY KEY, y, z)} 1709c5c4113dSnw141292 catchsql {SELECT * FROM t3} 1710c5c4113dSnw141292} {1 {access to t3.x is prohibited}} 1711c5c4113dSnw141292do_test auth-2.1 { 1712c5c4113dSnw141292 catchsql {SELECT y,z FROM t3} 1713c5c4113dSnw141292} {0 {}} 1714c5c4113dSnw141292do_test auth-2.2 { 1715c5c4113dSnw141292 catchsql {SELECT ROWID,y,z FROM t3} 1716c5c4113dSnw141292} {1 {access to t3.x is prohibited}} 1717c5c4113dSnw141292do_test auth-2.3 { 1718c5c4113dSnw141292 catchsql {SELECT OID,y,z FROM t3} 1719c5c4113dSnw141292} {1 {access to t3.x is prohibited}} 1720c5c4113dSnw141292do_test auth-2.4 { 1721c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 1722c5c4113dSnw141292 if {$code=="SQLITE_READ" && $arg1=="t3" && $arg2=="x"} { 1723c5c4113dSnw141292 return SQLITE_IGNORE 1724c5c4113dSnw141292 } 1725c5c4113dSnw141292 return SQLITE_OK 1726c5c4113dSnw141292 } 1727c5c4113dSnw141292 execsql {INSERT INTO t3 VALUES(44,55,66)} 1728c5c4113dSnw141292 catchsql {SELECT * FROM t3} 1729c5c4113dSnw141292} {0 {{} 55 66}} 1730c5c4113dSnw141292do_test auth-2.5 { 1731c5c4113dSnw141292 catchsql {SELECT rowid,y,z FROM t3} 1732c5c4113dSnw141292} {0 {{} 55 66}} 1733c5c4113dSnw141292do_test auth-2.6 { 1734c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 1735c5c4113dSnw141292 if {$code=="SQLITE_READ" && $arg1=="t3" && $arg2=="ROWID"} { 1736c5c4113dSnw141292 return SQLITE_IGNORE 1737c5c4113dSnw141292 } 1738c5c4113dSnw141292 return SQLITE_OK 1739c5c4113dSnw141292 } 1740c5c4113dSnw141292 catchsql {SELECT * FROM t3} 1741c5c4113dSnw141292} {0 {44 55 66}} 1742c5c4113dSnw141292do_test auth-2.7 { 1743c5c4113dSnw141292 catchsql {SELECT ROWID,y,z FROM t3} 1744c5c4113dSnw141292} {0 {44 55 66}} 1745c5c4113dSnw141292do_test auth-2.8 { 1746c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 1747c5c4113dSnw141292 if {$code=="SQLITE_READ" && $arg1=="t2" && $arg2=="ROWID"} { 1748c5c4113dSnw141292 return SQLITE_IGNORE 1749c5c4113dSnw141292 } 1750c5c4113dSnw141292 return SQLITE_OK 1751c5c4113dSnw141292 } 1752c5c4113dSnw141292 catchsql {SELECT ROWID,b,c FROM t2} 1753c5c4113dSnw141292} {0 {{} 2 33 {} 8 9}} 1754c5c4113dSnw141292do_test auth-2.9.1 { 1755c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 1756c5c4113dSnw141292 if {$code=="SQLITE_READ" && $arg1=="t2" && $arg2=="ROWID"} { 1757c5c4113dSnw141292 return bogus 1758c5c4113dSnw141292 } 1759c5c4113dSnw141292 return SQLITE_OK 1760c5c4113dSnw141292 } 1761c5c4113dSnw141292 catchsql {SELECT ROWID,b,c FROM t2} 1762c5c4113dSnw141292} {1 {illegal return value (999) from the authorization function - should be SQLITE_OK, SQLITE_IGNORE, or SQLITE_DENY}} 1763c5c4113dSnw141292do_test auth-2.9.2 { 1764c5c4113dSnw141292 db errorcode 1765c5c4113dSnw141292} {21} 1766c5c4113dSnw141292do_test auth-2.10 { 1767c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 1768c5c4113dSnw141292 if {$code=="SQLITE_SELECT"} { 1769c5c4113dSnw141292 return bogus 1770c5c4113dSnw141292 } 1771c5c4113dSnw141292 return SQLITE_OK 1772c5c4113dSnw141292 } 1773c5c4113dSnw141292 catchsql {SELECT ROWID,b,c FROM t2} 1774c5c4113dSnw141292} {1 {illegal return value (1) from the authorization function - should be SQLITE_OK, SQLITE_IGNORE, or SQLITE_DENY}} 1775c5c4113dSnw141292do_test auth-2.11.1 { 1776c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 1777c5c4113dSnw141292 if {$code=="SQLITE_READ" && $arg2=="a"} { 1778c5c4113dSnw141292 return SQLITE_IGNORE 1779c5c4113dSnw141292 } 1780c5c4113dSnw141292 return SQLITE_OK 1781c5c4113dSnw141292 } 1782c5c4113dSnw141292 catchsql {SELECT * FROM t2, t3} 1783c5c4113dSnw141292} {0 {{} 2 33 44 55 66 {} 8 9 44 55 66}} 1784c5c4113dSnw141292do_test auth-2.11.2 { 1785c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 1786c5c4113dSnw141292 if {$code=="SQLITE_READ" && $arg2=="x"} { 1787c5c4113dSnw141292 return SQLITE_IGNORE 1788c5c4113dSnw141292 } 1789c5c4113dSnw141292 return SQLITE_OK 1790c5c4113dSnw141292 } 1791c5c4113dSnw141292 catchsql {SELECT * FROM t2, t3} 1792c5c4113dSnw141292} {0 {11 2 33 {} 55 66 7 8 9 {} 55 66}} 1793c5c4113dSnw141292 1794c5c4113dSnw141292# Make sure the OLD and NEW pseudo-tables of a trigger get authorized. 1795c5c4113dSnw141292# 1796c5c4113dSnw141292do_test auth-3.1 { 1797c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 1798c5c4113dSnw141292 return SQLITE_OK 1799c5c4113dSnw141292 } 1800c5c4113dSnw141292 execsql { 1801c5c4113dSnw141292 CREATE TABLE tx(a1,a2,b1,b2,c1,c2); 1802c5c4113dSnw141292 CREATE TRIGGER r1 AFTER UPDATE ON t2 FOR EACH ROW BEGIN 1803c5c4113dSnw141292 INSERT INTO tx VALUES(OLD.a,NEW.a,OLD.b,NEW.b,OLD.c,NEW.c); 1804c5c4113dSnw141292 END; 1805c5c4113dSnw141292 UPDATE t2 SET a=a+1; 1806c5c4113dSnw141292 SELECT * FROM tx; 1807c5c4113dSnw141292 } 1808c5c4113dSnw141292} {11 12 2 2 33 33 7 8 8 8 9 9} 1809c5c4113dSnw141292do_test auth-3.2 { 1810c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 1811c5c4113dSnw141292 if {$code=="SQLITE_READ" && $arg1=="t2" && $arg2=="c"} { 1812c5c4113dSnw141292 return SQLITE_IGNORE 1813c5c4113dSnw141292 } 1814c5c4113dSnw141292 return SQLITE_OK 1815c5c4113dSnw141292 } 1816c5c4113dSnw141292 execsql { 1817c5c4113dSnw141292 DELETE FROM tx; 1818c5c4113dSnw141292 UPDATE t2 SET a=a+100; 1819c5c4113dSnw141292 SELECT * FROM tx; 1820c5c4113dSnw141292 } 1821c5c4113dSnw141292} {12 112 2 2 {} {} 8 108 8 8 {} {}} 1822c5c4113dSnw141292 1823c5c4113dSnw141292# Make sure the names of views and triggers are passed on on arg4. 1824c5c4113dSnw141292# 1825c5c4113dSnw141292do_test auth-4.1 { 1826c5c4113dSnw141292 proc auth {code arg1 arg2 arg3 arg4} { 1827c5c4113dSnw141292 lappend ::authargs $code $arg1 $arg2 $arg3 $arg4 1828c5c4113dSnw141292 return SQLITE_OK 1829c5c4113dSnw141292 } 1830c5c4113dSnw141292 set authargs {} 1831c5c4113dSnw141292 execsql { 1832c5c4113dSnw141292 UPDATE t2 SET a=a+1; 1833c5c4113dSnw141292 } 1834c5c4113dSnw141292 set authargs 1835c5c4113dSnw141292} [list \ 1836c5c4113dSnw141292 SQLITE_READ t2 a main {} \ 1837c5c4113dSnw141292 SQLITE_UPDATE t2 a main {} \ 1838c5c4113dSnw141292 SQLITE_INSERT tx {} main r1 \ 1839c5c4113dSnw141292 SQLITE_READ t2 a main r1 \ 1840c5c4113dSnw141292 SQLITE_READ t2 a main r1 \ 1841c5c4113dSnw141292 SQLITE_READ t2 b main r1 \ 1842c5c4113dSnw141292 SQLITE_READ t2 b main r1 \ 1843c5c4113dSnw141292 SQLITE_READ t2 c main r1 \ 1844c5c4113dSnw141292 SQLITE_READ t2 c main r1] 1845c5c4113dSnw141292do_test auth-4.2 { 1846c5c4113dSnw141292 execsql { 1847c5c4113dSnw141292 CREATE VIEW v1 AS SELECT a+b AS x FROM t2; 1848c5c4113dSnw141292 CREATE TABLE v1chng(x1,x2); 1849c5c4113dSnw141292 CREATE TRIGGER r2 INSTEAD OF UPDATE ON v1 BEGIN 1850c5c4113dSnw141292 INSERT INTO v1chng VALUES(OLD.x,NEW.x); 1851c5c4113dSnw141292 END; 1852c5c4113dSnw141292 SELECT * FROM v1; 1853c5c4113dSnw141292 } 1854c5c4113dSnw141292} {115 117} 1855c5c4113dSnw141292do_test auth-4.3 { 1856c5c4113dSnw141292 set authargs {} 1857c5c4113dSnw141292 execsql { 1858c5c4113dSnw141292 UPDATE v1 SET x=1 WHERE x=117 1859c5c4113dSnw141292 } 1860c5c4113dSnw141292 set authargs 1861c5c4113dSnw141292} [list \ 1862c5c4113dSnw141292 SQLITE_UPDATE v1 x main {} \ 1863c5c4113dSnw141292 SQLITE_READ v1 x main {} \ 1864c5c4113dSnw141292 SQLITE_SELECT {} {} {} v1 \ 1865c5c4113dSnw141292 SQLITE_READ t2 a main v1 \ 1866c5c4113dSnw141292 SQLITE_READ t2 b main v1 \ 1867c5c4113dSnw141292 SQLITE_INSERT v1chng {} main r2 \ 1868c5c4113dSnw141292 SQLITE_READ v1 x main r2 \ 1869c5c4113dSnw141292 SQLITE_READ v1 x main r2] 1870c5c4113dSnw141292do_test auth-4.4 { 1871c5c4113dSnw141292 execsql { 1872c5c4113dSnw141292 CREATE TRIGGER r3 INSTEAD OF DELETE ON v1 BEGIN 1873c5c4113dSnw141292 INSERT INTO v1chng VALUES(OLD.x,NULL); 1874c5c4113dSnw141292 END; 1875c5c4113dSnw141292 SELECT * FROM v1; 1876c5c4113dSnw141292 } 1877c5c4113dSnw141292} {115 117} 1878c5c4113dSnw141292do_test auth-4.5 { 1879c5c4113dSnw141292 set authargs {} 1880c5c4113dSnw141292 execsql { 1881c5c4113dSnw141292 DELETE FROM v1 WHERE x=117 1882c5c4113dSnw141292 } 1883c5c4113dSnw141292 set authargs 1884c5c4113dSnw141292} [list \ 1885c5c4113dSnw141292 SQLITE_DELETE v1 {} main {} \ 1886c5c4113dSnw141292 SQLITE_READ v1 x main {} \ 1887c5c4113dSnw141292 SQLITE_SELECT {} {} {} v1 \ 1888c5c4113dSnw141292 SQLITE_READ t2 a main v1 \ 1889c5c4113dSnw141292 SQLITE_READ t2 b main v1 \ 1890c5c4113dSnw141292 SQLITE_INSERT v1chng {} main r3 \ 1891c5c4113dSnw141292 SQLITE_READ v1 x main r3] 1892c5c4113dSnw141292 1893c5c4113dSnw141292finish_test 1894