Commit 885a04c
fix(policy): bypass read-policy hooks on internal pre-load queries for dialects without RETURNING
On dialects lacking RETURNING support (e.g. MySQL), the ORM pre-loads
entity ID fields before an UPDATE to identify the row for re-reading.
This pre-load ran through onKyselyQuery plugin hooks, causing a
read-policy denial to surface as "Record not found" before the UPDATE
executed — masking the correct error code.
Introduce internalQueryContextStorage (AsyncLocalStorage) to mark these
internal pre-load queries; ZenStackQueryExecutor now skips all
onKyselyQuery hooks when the flag is set.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>1 parent 84a698f commit 885a04c
4 files changed
Lines changed: 122 additions & 96 deletions
File tree
- packages/orm/src/client
- crud/operations
- executor
- tests/e2e/orm/policy/crud
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
51 | 51 | | |
52 | 52 | | |
53 | 53 | | |
| 54 | + | |
54 | 55 | | |
55 | 56 | | |
56 | 57 | | |
| |||
1211 | 1212 | | |
1212 | 1213 | | |
1213 | 1214 | | |
1214 | | - | |
| 1215 | + | |
1215 | 1216 | | |
1216 | | - | |
1217 | | - | |
1218 | | - | |
1219 | | - | |
1220 | | - | |
1221 | | - | |
1222 | | - | |
| 1217 | + | |
1223 | 1218 | | |
1224 | 1219 | | |
1225 | | - | |
| 1220 | + | |
| 1221 | + | |
| 1222 | + | |
| 1223 | + | |
| 1224 | + | |
| 1225 | + | |
| 1226 | + | |
| 1227 | + | |
| 1228 | + | |
| 1229 | + | |
| 1230 | + | |
| 1231 | + | |
| 1232 | + | |
1226 | 1233 | | |
1227 | 1234 | | |
1228 | 1235 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
Lines changed: 8 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
38 | 38 | | |
39 | 39 | | |
40 | 40 | | |
| 41 | + | |
41 | 42 | | |
42 | 43 | | |
43 | 44 | | |
| |||
197 | 198 | | |
198 | 199 | | |
199 | 200 | | |
| 201 | + | |
| 202 | + | |
| 203 | + | |
| 204 | + | |
| 205 | + | |
| 206 | + | |
| 207 | + | |
200 | 208 | | |
201 | 209 | | |
202 | 210 | | |
| |||
0 commit comments