| OLD | NEW |
| 1 # 2006 Aug 24 | 1 # 2006 Aug 24 |
| 2 # | 2 # |
| 3 # The author disclaims copyright to this source code. In place of | 3 # The author disclaims copyright to this source code. In place of |
| 4 # a legal notice, here is a blessing: | 4 # a legal notice, here is a blessing: |
| 5 # | 5 # |
| 6 # May you do good and not evil. | 6 # May you do good and not evil. |
| 7 # May you find forgiveness for yourself and forgive others. | 7 # May you find forgiveness for yourself and forgive others. |
| 8 # May you share freely, never taking more than you give. | 8 # May you share freely, never taking more than you give. |
| 9 # | 9 # |
| 10 #*********************************************************************** | 10 #*********************************************************************** |
| (...skipping 13 matching lines...) Expand all Loading... |
| 24 finish_test | 24 finish_test |
| 25 return | 25 return |
| 26 } | 26 } |
| 27 | 27 |
| 28 do_test auth2-1.1 { | 28 do_test auth2-1.1 { |
| 29 execsql { | 29 execsql { |
| 30 CREATE TABLE t1(a,b,c); | 30 CREATE TABLE t1(a,b,c); |
| 31 INSERT INTO t1 VALUES(1,2,3); | 31 INSERT INTO t1 VALUES(1,2,3); |
| 32 } | 32 } |
| 33 set ::flist {} | 33 set ::flist {} |
| 34 proc auth {code arg1 arg2 arg3 arg4} { | 34 proc auth {code arg1 arg2 arg3 arg4 args} { |
| 35 if {$code=="SQLITE_FUNCTION"} { | 35 if {$code=="SQLITE_FUNCTION"} { |
| 36 lappend ::flist $arg2 | 36 lappend ::flist $arg2 |
| 37 if {$arg2=="max"} { | 37 if {$arg2=="max"} { |
| 38 return SQLITE_DENY | 38 return SQLITE_DENY |
| 39 } elseif {$arg2=="min"} { | 39 } elseif {$arg2=="min"} { |
| 40 return SQLITE_IGNORE | 40 return SQLITE_IGNORE |
| 41 } else { | 41 } else { |
| 42 return SQLITE_OK | 42 return SQLITE_OK |
| 43 } | 43 } |
| 44 } | 44 } |
| (...skipping 28 matching lines...) Expand all Loading... |
| 73 } coalesce | 73 } coalesce |
| 74 | 74 |
| 75 # Make sure the authorizer is not called when parsing the schema | 75 # Make sure the authorizer is not called when parsing the schema |
| 76 # and when computing the result set of a view. | 76 # and when computing the result set of a view. |
| 77 # | 77 # |
| 78 db close | 78 db close |
| 79 sqlite3 db test.db | 79 sqlite3 db test.db |
| 80 sqlite3 db2 test.db | 80 sqlite3 db2 test.db |
| 81 proc auth {args} { | 81 proc auth {args} { |
| 82 global authargs | 82 global authargs |
| 83 append authargs $args\n | 83 append authargs [lrange $args 0 4]\n |
| 84 return SQLITE_OK | 84 return SQLITE_OK |
| 85 } | 85 } |
| 86 db auth auth | 86 db auth auth |
| 87 do_test auth2-2.1 { | 87 do_test auth2-2.1 { |
| 88 set ::authargs {} | 88 set ::authargs {} |
| 89 db eval { | 89 db eval { |
| 90 CREATE TABLE t2(x,y,z); | 90 CREATE TABLE t2(x,y,z); |
| 91 } | 91 } |
| 92 set ::authargs | 92 set ::authargs |
| 93 } {SQLITE_INSERT sqlite_master {} main {} | 93 } {SQLITE_INSERT sqlite_master {} main {} |
| 94 SQLITE_CREATE_TABLE t2 {} main {} | 94 SQLITE_CREATE_TABLE t2 {} main {} |
| 95 SQLITE_UPDATE sqlite_master type main {} | 95 SQLITE_UPDATE sqlite_master type main {} |
| 96 SQLITE_UPDATE sqlite_master name main {} | 96 SQLITE_UPDATE sqlite_master name main {} |
| 97 SQLITE_UPDATE sqlite_master tbl_name main {} | 97 SQLITE_UPDATE sqlite_master tbl_name main {} |
| 98 SQLITE_UPDATE sqlite_master rootpage main {} | 98 SQLITE_UPDATE sqlite_master rootpage main {} |
| 99 SQLITE_UPDATE sqlite_master sql main {} | 99 SQLITE_UPDATE sqlite_master sql main {} |
| 100 SQLITE_READ sqlite_master ROWID main {} | 100 SQLITE_READ sqlite_master ROWID main {} |
| 101 SQLITE_READ sqlite_master name main {} | 101 SQLITE_READ sqlite_master name main {} |
| 102 SQLITE_READ sqlite_master rootpage main {} | 102 SQLITE_READ sqlite_master rootpage main {} |
| 103 SQLITE_READ sqlite_master sql main {} | 103 SQLITE_READ sqlite_master sql main {} |
| 104 SQLITE_READ sqlite_master tbl_name main {} | 104 SQLITE_READ sqlite_master tbl_name main {} |
| 105 SQLITE_READ sqlite_master type main {} |
| 105 SQLITE_READ sqlite_master ROWID main {} | 106 SQLITE_READ sqlite_master ROWID main {} |
| 106 } | 107 } |
| 107 do_test auth2-2.2 { | 108 do_test auth2-2.2 { |
| 108 set ::authargs {} | 109 set ::authargs {} |
| 109 db eval { | 110 db eval { |
| 110 CREATE VIEW v2 AS SELECT x+y AS a, y+z AS b from t2; | 111 CREATE VIEW v2 AS SELECT x+y AS a, y+z AS b from t2; |
| 111 } | 112 } |
| 112 set ::authargs | 113 set ::authargs |
| 113 } {SQLITE_INSERT sqlite_master {} main {} | 114 } {SQLITE_INSERT sqlite_master {} main {} |
| 114 SQLITE_CREATE_VIEW v2 {} main {} | 115 SQLITE_CREATE_VIEW v2 {} main {} |
| 115 SQLITE_UPDATE sqlite_master type main {} | 116 SQLITE_UPDATE sqlite_master type main {} |
| 116 SQLITE_UPDATE sqlite_master name main {} | 117 SQLITE_UPDATE sqlite_master name main {} |
| 117 SQLITE_UPDATE sqlite_master tbl_name main {} | 118 SQLITE_UPDATE sqlite_master tbl_name main {} |
| 118 SQLITE_UPDATE sqlite_master rootpage main {} | 119 SQLITE_UPDATE sqlite_master rootpage main {} |
| 119 SQLITE_UPDATE sqlite_master sql main {} | 120 SQLITE_UPDATE sqlite_master sql main {} |
| 120 SQLITE_READ sqlite_master ROWID main {} | 121 SQLITE_READ sqlite_master ROWID main {} |
| 121 SQLITE_READ sqlite_master name main {} | 122 SQLITE_READ sqlite_master name main {} |
| 122 SQLITE_READ sqlite_master rootpage main {} | 123 SQLITE_READ sqlite_master rootpage main {} |
| 123 SQLITE_READ sqlite_master sql main {} | 124 SQLITE_READ sqlite_master sql main {} |
| 124 SQLITE_READ sqlite_master tbl_name main {} | 125 SQLITE_READ sqlite_master tbl_name main {} |
| 126 SQLITE_READ sqlite_master type main {} |
| 125 SQLITE_READ sqlite_master ROWID main {} | 127 SQLITE_READ sqlite_master ROWID main {} |
| 126 } | 128 } |
| 127 do_test auth2-2.3 { | 129 do_test auth2-2.3 { |
| 128 set ::authargs {} | 130 set ::authargs {} |
| 129 db eval { | 131 db eval { |
| 130 SELECT a, b FROM v2; | 132 SELECT a, b FROM v2; |
| 131 } | 133 } |
| 132 set ::authargs | 134 set ::authargs |
| 133 } {SQLITE_SELECT {} {} {} {} | 135 } {SQLITE_SELECT {} {} {} {} |
| 134 SQLITE_READ v2 a main {} | |
| 135 SQLITE_READ v2 b main {} | |
| 136 SQLITE_READ t2 x main v2 | 136 SQLITE_READ t2 x main v2 |
| 137 SQLITE_READ t2 y main v2 | 137 SQLITE_READ t2 y main v2 |
| 138 SQLITE_READ t2 y main v2 | 138 SQLITE_READ t2 y main v2 |
| 139 SQLITE_READ t2 z main v2 | 139 SQLITE_READ t2 z main v2 |
| 140 SQLITE_READ v2 a main {} |
| 141 SQLITE_READ v2 b main {} |
| 140 SQLITE_SELECT {} {} {} v2 | 142 SQLITE_SELECT {} {} {} v2 |
| 141 } | 143 } |
| 142 do_test auth2-2.4 { | 144 do_test auth2-2.4 { |
| 143 db2 eval { | 145 db2 eval { |
| 144 CREATE TABLE t3(p,q,r); | 146 CREATE TABLE t3(p,q,r); |
| 145 } | 147 } |
| 146 set ::authargs {} | 148 set ::authargs {} |
| 147 db eval { | 149 db eval { |
| 148 SELECT b, a FROM v2; | 150 SELECT b, a FROM v2; |
| 149 } | 151 } |
| 150 set ::authargs | 152 set ::authargs |
| 151 } {SQLITE_SELECT {} {} {} {} | 153 } {SQLITE_SELECT {} {} {} {} |
| 152 SQLITE_READ v2 b main {} | |
| 153 SQLITE_READ v2 a main {} | |
| 154 SQLITE_READ t2 x main v2 | 154 SQLITE_READ t2 x main v2 |
| 155 SQLITE_READ t2 y main v2 | 155 SQLITE_READ t2 y main v2 |
| 156 SQLITE_READ t2 y main v2 | 156 SQLITE_READ t2 y main v2 |
| 157 SQLITE_READ t2 z main v2 | 157 SQLITE_READ t2 z main v2 |
| 158 SQLITE_READ v2 b main {} |
| 159 SQLITE_READ v2 a main {} |
| 158 SQLITE_SELECT {} {} {} v2 | 160 SQLITE_SELECT {} {} {} v2 |
| 159 SQLITE_SELECT {} {} {} {} | 161 SQLITE_SELECT {} {} {} {} |
| 160 SQLITE_READ v2 b main {} | |
| 161 SQLITE_READ v2 a main {} | |
| 162 SQLITE_READ t2 x main v2 | 162 SQLITE_READ t2 x main v2 |
| 163 SQLITE_READ t2 y main v2 | 163 SQLITE_READ t2 y main v2 |
| 164 SQLITE_READ t2 y main v2 | 164 SQLITE_READ t2 y main v2 |
| 165 SQLITE_READ t2 z main v2 | 165 SQLITE_READ t2 z main v2 |
| 166 SQLITE_READ v2 b main {} |
| 167 SQLITE_READ v2 a main {} |
| 166 SQLITE_SELECT {} {} {} v2 | 168 SQLITE_SELECT {} {} {} v2 |
| 167 } | 169 } |
| 168 db2 close | 170 db2 close |
| 169 | 171 |
| 170 finish_test | 172 finish_test |
| OLD | NEW |