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 |