Commit 79c3145
* fix(analytics): refuse a `{ $field }` comparand on both SQL-lowering doors instead of binding it (#7598)
Measured on origin/main (5823d59), the premise of #7598 was inverted: neither
door refused a field reference in a scalar comparand position — both BOUND the
reference object as the comparison's value, producing a syntactically perfect
predicate comparing a column against a value no row can hold. On the read-scope
door that is an administrator's RLS predicate silently answering the wrong row
set.
Both doors now refuse, each in its existing envelope (INVALID_FILTER / 400 on
the analytics `where` door, READ_SCOPE_COMPILE_FAILED / 500 on the read-scope
lowering). Positions that already refused keep their exact wording, because each
of those converges with driver-sql's own #5222 refusal arm.
This does NOT port the #5222 capability: its four maintainer rulings turn on an
object's declared field set and its tenant-isolation column, neither of which
StrategyContext exposes.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015fkdTyGmMD5s8ZtEifvuGy
* chore(changeset): answer the ADR-0087 disposition for the #7598 refusal in writing
The changeset declares a breaking change (`fix(analytics)!`), so
check-adr-0087-registration requires the ledger question be answered.
Disposition: not-required (no-migration-prescription) -- no authorable key is
retired, packages/spec is untouched, and the FROM shape stays valid metadata
that still executes on the ObjectQL engine path and both SQL drivers, so there
is nothing for `objectstack migrate meta` to rewrite.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015fkdTyGmMD5s8ZtEifvuGy
---------
Co-authored-by: Claude <noreply@anthropic.com>
1 parent e654bfd commit 79c3145
8 files changed
Lines changed: 798 additions & 3 deletions
File tree
- .changeset
- packages/services/service-analytics
- src
- __tests__
- strategies
Lines changed: 55 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2 | 2 | | |
3 | 3 | | |
4 | 4 | | |
5 | | - | |
| 5 | + | |
6 | 6 | | |
7 | 7 | | |
8 | 8 | | |
| |||
23 | 23 | | |
24 | 24 | | |
25 | 25 | | |
| 26 | + | |
26 | 27 | | |
27 | 28 | | |
28 | 29 | | |
| |||
Lines changed: 32 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
126 | 126 | | |
127 | 127 | | |
128 | 128 | | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
129 | 145 | | |
130 | 146 | | |
131 | 147 | | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
132 | 151 | | |
133 | 152 | | |
134 | 153 | | |
| |||
160 | 179 | | |
161 | 180 | | |
162 | 181 | | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
| 186 | + | |
| 187 | + | |
| 188 | + | |
163 | 189 | | |
164 | 190 | | |
165 | 191 | | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
| 196 | + | |
| 197 | + | |
166 | 198 | | |
167 | 199 | | |
168 | 200 | | |
| |||
0 commit comments