- Notifications
You must be signed in to change notification settings - Fork4.9k
Commit75096c4
committed
Include policies based on ACLs needed
When considering which policies should be included, rather than look atindividual bits of the query (eg: if a RETURNING clause exists, or if aWHERE clause exists which is referencing the table, or if it's aFOR SHARE/UPDATE query), consider any case where we've determinedthe user needs SELECT rights on the relation while doing an UPDATE orDELETE to be a case where we apply SELECT policies, and any case wherewe've deteremind that the user needs UPDATE rights on the relation whiledoing a SELECT to be a case where we apply UPDATE policies.This simplifies the logic and addresses concerns that a user could useUPDATE or DELETE with a WHERE clauses to determine if rows exist, orthey could use SELECT .. FOR UPDATE to lock rows which they are notactually allowed to modify through UPDATE policies.Use list_append_unique() to avoid adding the same quals multiple times,as, on balance, the cost of checking when adding the quals will almostalways be cheaper than keeping them and doing busywork for each tupleduring execution.Back-patch to 9.5 where RLS was added.1 parent3c4c5ac commit75096c4
File tree
2 files changed
+101
-67
lines changed- src
- backend/rewrite
- test/regress/expected
2 files changed
+101
-67
lines changedLines changed: 74 additions & 34 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
165 | 165 |
| |
166 | 166 |
| |
167 | 167 |
| |
168 |
| - | |
169 |
| - | |
| 168 | + | |
| 169 | + | |
| 170 | + | |
| 171 | + | |
| 172 | + | |
| 173 | + | |
| 174 | + | |
| 175 | + | |
| 176 | + | |
| 177 | + | |
| 178 | + | |
| 179 | + | |
| 180 | + | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
| 186 | + | |
| 187 | + | |
| 188 | + | |
| 189 | + | |
| 190 | + | |
| 191 | + | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
| 196 | + | |
| 197 | + | |
| 198 | + | |
| 199 | + | |
| 200 | + | |
| 201 | + | |
| 202 | + | |
| 203 | + | |
| 204 | + | |
| 205 | + | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
170 | 209 |
| |
171 | 210 |
| |
172 |
| - | |
| 211 | + | |
173 | 212 |
| |
174 | 213 |
| |
175 | 214 |
| |
176 |
| - | |
177 |
| - | |
178 |
| - | |
179 | 215 |
| |
| 216 | + | |
| 217 | + | |
| 218 | + | |
| 219 | + | |
180 | 220 |
| |
181 | 221 |
| |
182 | 222 |
| |
| |||
187 | 227 |
| |
188 | 228 |
| |
189 | 229 |
| |
190 |
| - | |
191 |
| - | |
192 |
| - | |
193 |
| - | |
| 230 | + | |
| 231 | + | |
| 232 | + | |
| 233 | + | |
194 | 234 |
| |
195 |
| - | |
196 |
| - | |
197 |
| - | |
| 235 | + | |
| 236 | + | |
198 | 237 |
| |
199 |
| - | |
200 |
| - | |
| 238 | + | |
| 239 | + | |
201 | 240 |
| |
202 |
| - | |
203 |
| - | |
| 241 | + | |
| 242 | + | |
204 | 243 |
| |
205 | 244 |
| |
206 |
| - | |
207 |
| - | |
| 245 | + | |
| 246 | + | |
208 | 247 |
| |
209 | 248 |
| |
210 |
| - | |
211 |
| - | |
| 249 | + | |
| 250 | + | |
212 | 251 |
| |
213 | 252 |
| |
214 | 253 |
| |
| |||
261 | 300 |
| |
262 | 301 |
| |
263 | 302 |
| |
264 |
| - | |
265 |
| - | |
| 303 | + | |
| 304 | + | |
| 305 | + | |
266 | 306 |
| |
267 |
| - | |
| 307 | + | |
268 | 308 |
| |
269 |
| - | |
270 |
| - | |
| 309 | + | |
| 310 | + | |
271 | 311 |
| |
272 | 312 |
| |
273 |
| - | |
274 |
| - | |
| 313 | + | |
| 314 | + | |
275 | 315 |
| |
276 | 316 |
| |
277 |
| - | |
278 |
| - | |
| 317 | + | |
| 318 | + | |
279 | 319 |
| |
280 | 320 |
| |
281 | 321 |
| |
| |||
524 | 564 |
| |
525 | 565 |
| |
526 | 566 |
| |
527 |
| - | |
| 567 | + | |
528 | 568 |
| |
529 | 569 |
| |
530 | 570 |
| |
| |||
539 | 579 |
| |
540 | 580 |
| |
541 | 581 |
| |
542 |
| - | |
| 582 | + | |
543 | 583 |
| |
544 | 584 |
| |
545 | 585 |
| |
| |||
631 | 671 |
| |
632 | 672 |
| |
633 | 673 |
| |
634 |
| - | |
| 674 | + | |
635 | 675 |
| |
636 | 676 |
| |
637 | 677 |
| |
| |||
657 | 697 |
| |
658 | 698 |
| |
659 | 699 |
| |
660 |
| - | |
| 700 | + | |
661 | 701 |
| |
662 | 702 |
| |
663 | 703 |
| |
|
Lines changed: 27 additions & 33 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
1220 | 1220 |
| |
1221 | 1221 |
| |
1222 | 1222 |
| |
1223 |
| - | |
1224 |
| - | |
| 1223 | + | |
| 1224 | + | |
1225 | 1225 |
| |
1226 | 1226 |
| |
1227 | 1227 |
| |
1228 | 1228 |
| |
1229 | 1229 |
| |
1230 |
| - | |
1231 |
| - | |
1232 |
| - | |
1233 |
| - | |
1234 |
| - | |
| 1230 | + | |
| 1231 | + | |
| 1232 | + | |
1235 | 1233 |
| |
1236 | 1234 |
| |
1237 | 1235 |
| |
1238 | 1236 |
| |
1239 |
| - | |
| 1237 | + | |
1240 | 1238 |
| |
1241 | 1239 |
| |
1242 | 1240 |
| |
| |||
1251 | 1249 |
| |
1252 | 1250 |
| |
1253 | 1251 |
| |
1254 |
| - | |
1255 |
| - | |
| 1252 | + | |
| 1253 | + | |
1256 | 1254 |
| |
1257 | 1255 |
| |
1258 | 1256 |
| |
| |||
1261 | 1259 |
| |
1262 | 1260 |
| |
1263 | 1261 |
| |
1264 |
| - | |
1265 |
| - | |
1266 |
| - | |
1267 |
| - | |
1268 |
| - | |
| 1262 | + | |
| 1263 | + | |
| 1264 | + | |
1269 | 1265 |
| |
1270 | 1266 |
| |
1271 | 1267 |
| |
| |||
1279 | 1275 |
| |
1280 | 1276 |
| |
1281 | 1277 |
| |
1282 |
| - | |
1283 |
| - | |
1284 |
| - | |
1285 |
| - | |
1286 |
| - | |
| 1278 | + | |
| 1279 | + | |
| 1280 | + | |
1287 | 1281 |
| |
1288 | 1282 |
| |
1289 | 1283 |
| |
| |||
1297 | 1291 |
| |
1298 | 1292 |
| |
1299 | 1293 |
| |
1300 |
| - | |
1301 |
| - | |
1302 |
| - | |
1303 |
| - | |
1304 |
| - | |
| 1294 | + | |
| 1295 | + | |
| 1296 | + | |
1305 | 1297 |
| |
1306 | 1298 |
| |
1307 | 1299 |
| |
| |||
1311 | 1303 |
| |
1312 | 1304 |
| |
1313 | 1305 |
| |
1314 |
| - | |
| 1306 | + | |
1315 | 1307 |
| |
1316 | 1308 |
| |
1317 | 1309 |
| |
| |||
2743 | 2735 |
| |
2744 | 2736 |
| |
2745 | 2737 |
| |
2746 |
| - | |
2747 |
| - | |
| 2738 | + | |
| 2739 | + | |
2748 | 2740 |
| |
2749 | 2741 |
| |
2750 |
| - | |
2751 |
| - | |
2752 |
| - | |
2753 |
| - | |
2754 |
| - | |
| 2742 | + | |
| 2743 | + | |
| 2744 | + | |
| 2745 | + | |
| 2746 | + | |
| 2747 | + | |
| 2748 | + | |
2755 | 2749 |
| |
2756 | 2750 |
| |
2757 | 2751 |
| |
|
0 commit comments
Comments
(0)