Commit e89fa92
feat(spec): declare aggregate? on IDataDriver with the signature the engine calls (#15384)
The engine dispatches native aggregation by presence
(typeof driver.aggregate === 'function') and calls
driver.aggregate(object, ast, options), but IDataDriver never declared the
member, so a custom driver's aggregate was checked in neither direction:
swapped arguments or a non-row result compiled clean and surfaced only after
the engine's having filter matched nothing. Declared optional, matching the
presence test, with the row shape aggregation-conformance pins. All four
in-repo implementations (memory, mongodb, sql, turso remote transport via
TursoDriver) already satisfy it; no driver, capability bit, or engine cast
changes.
The recording double in engine-filter-array-lowering.test.ts drops its local
RecordingDriver extension and annotates against IDataDriver directly.
Claude-Session: https://claude.ai/code/session_01H2oQebDDxYKfWZusyd8GXk
Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>1 parent bcb6a17 commit e89fa92
3 files changed
Lines changed: 53 additions & 10 deletions
File tree
- .changeset
- packages
- objectql/src
- spec/src/contracts
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
Lines changed: 8 additions & 10 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
27 | 27 | | |
28 | 28 | | |
29 | 29 | | |
30 | | - | |
31 | 30 | | |
32 | 31 | | |
33 | 32 | | |
| |||
90 | 89 | | |
91 | 90 | | |
92 | 91 | | |
93 | | - | |
94 | | - | |
95 | | - | |
96 | | - | |
97 | | - | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
98 | 99 | | |
99 | | - | |
100 | | - | |
101 | | - | |
102 | 100 | | |
103 | 101 | | |
104 | 102 | | |
| |||
152 | 150 | | |
153 | 151 | | |
154 | 152 | | |
155 | | - | |
| 153 | + | |
156 | 154 | | |
157 | 155 | | |
158 | 156 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
213 | 213 | | |
214 | 214 | | |
215 | 215 | | |
| 216 | + | |
| 217 | + | |
| 218 | + | |
| 219 | + | |
| 220 | + | |
| 221 | + | |
| 222 | + | |
| 223 | + | |
| 224 | + | |
| 225 | + | |
| 226 | + | |
| 227 | + | |
| 228 | + | |
| 229 | + | |
| 230 | + | |
| 231 | + | |
| 232 | + | |
| 233 | + | |
| 234 | + | |
| 235 | + | |
| 236 | + | |
| 237 | + | |
| 238 | + | |
| 239 | + | |
| 240 | + | |
| 241 | + | |
| 242 | + | |
| 243 | + | |
| 244 | + | |
| 245 | + | |
| 246 | + | |
| 247 | + | |
| 248 | + | |
| 249 | + | |
| 250 | + | |
| 251 | + | |
216 | 252 | | |
217 | 253 | | |
218 | 254 | | |
| |||
0 commit comments