@omgbase/oqx 0.7.0 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +48 -3
- package/dist/ast.d.ts +6 -0
- package/dist/ast.d.ts.map +1 -1
- package/dist/engine.d.ts +1 -0
- package/dist/engine.d.ts.map +1 -1
- package/dist/engine.js +34 -23
- package/dist/engine.js.map +1 -1
- package/dist/parser.js +55 -16
- package/dist/parser.js.map +1 -1
- package/dist/plan.d.ts.map +1 -1
- package/dist/plan.js +3 -1
- package/dist/plan.js.map +1 -1
- package/package.json +1 -1
- package/src/ast.ts +7 -1
- package/src/engine.ts +37 -24
- package/src/parser.ts +52 -15
- package/src/plan.ts +3 -1
package/README.md
CHANGED
|
@@ -101,8 +101,51 @@ oqx`label: name, decade: age / 10 from ${people} where name == "Bob"`;
|
|
|
101
101
|
// [{ label: "Bob", decade: 4.1 }]
|
|
102
102
|
```
|
|
103
103
|
|
|
104
|
+
An item that is not a plain navigation — a call, arithmetic, a comparison — has
|
|
105
|
+
no natural key, so it must be aliased (`n: size(jobs)`), unless the projection is
|
|
106
|
+
in `values` mode (next).
|
|
107
|
+
|
|
104
108
|
The `select` keyword is optional and works in any position — `select name from …`
|
|
105
|
-
is identical to `name from
|
|
109
|
+
is identical to `name from …` (and hosts `select distinct`, §6).
|
|
110
|
+
|
|
111
|
+
**`values` — scalar projection.** Ordinarily every row projects to a record. Add
|
|
112
|
+
`values` after a projection of exactly **one** item to get the value itself:
|
|
113
|
+
|
|
114
|
+
```js
|
|
115
|
+
oqx`name values from ${people}`; // ["Bob", "Alice", "Carol"]
|
|
116
|
+
oqx`name.upper() values from ${people} where age < 30`; // ["CAROL"] (no alias needed)
|
|
117
|
+
oqx`${people} first { name values where age > 50 }`; // "Alice"
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
`values` is a result-shape mode, not a consumer: it works in the top-level
|
|
121
|
+
projection and inside any `collect` / `first` / `single` block, and composes with
|
|
122
|
+
`distinct` (`select distinct employer values from ${jobs}` is the distinct set of
|
|
123
|
+
employers as strings, not `{ employer }` records). An alias, if present, is
|
|
124
|
+
ignored; a lift (`^name:`) cannot be combined with it.
|
|
125
|
+
|
|
126
|
+
**`$value` — the current item.** Every scope has a current value; `$value` is
|
|
127
|
+
that exact value, whatever its type (an object row or a plain scalar). Bare names
|
|
128
|
+
still navigate it (`name` ≡ `$value.name`), so `$value` matters exactly where
|
|
129
|
+
there is nothing to navigate: collections of numbers or strings, or handing the
|
|
130
|
+
whole row somewhere. Together with `values` this makes scalar collections
|
|
131
|
+
first-class:
|
|
132
|
+
|
|
133
|
+
```js
|
|
134
|
+
const scores = [10, 60, 70, 45];
|
|
135
|
+
oqx`$value values from ${scores} where $value > 50`; // [60, 70]
|
|
136
|
+
oqx`$value values from ${scores} order by $value desc`; // [70, 60, 45, 10]
|
|
137
|
+
|
|
138
|
+
const players = [{ name: "Ann", scores: [10, 60, 70] }, { name: "Ben", scores: [45] }];
|
|
139
|
+
oqx`name, big: scores collect { $value values where $value > 50 } from ${players}`;
|
|
140
|
+
// [{ name: "Ann", big: [60, 70] }, { name: "Ben", big: [] }]
|
|
141
|
+
|
|
142
|
+
oqx`employee: $value from ${people} where name == "Bob"`; // [{ employee: <Bob> }]
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
Inside a nested block `$value` is the inner item; the enclosing row is `^$value`
|
|
146
|
+
(§3). At the root scope (before any row) it is absent. Plain objects are **not**
|
|
147
|
+
iterable through `$value` — a record stays a record; converting one to a
|
|
148
|
+
collection of entries is a separate, explicit step (`entries()`, planned).
|
|
106
149
|
|
|
107
150
|
### 3. Predicates (where)
|
|
108
151
|
|
|
@@ -395,7 +438,9 @@ where a == b && rel exists { … } || !c predicate tree + nested ops
|
|
|
395
438
|
where x in lo..hi / lo...hi / ..hi / lo.. range membership (incl. / excl. / open-ended)
|
|
396
439
|
where x in range(field) coerce a string field to a range, then test coverage
|
|
397
440
|
name the CURRENT row's field only (never climbs)
|
|
398
|
-
|
|
441
|
+
$value the current item itself (a scalar row, or the whole object)
|
|
442
|
+
<expr> values scalar projection: the value, not a { name: value } record
|
|
443
|
+
^name / ^^name read an enclosing row's field (exactly N scopes out); ^$value = the enclosing row
|
|
399
444
|
^name: expr / ^^name: expr lift/export a value N scopes out (flatten-append)
|
|
400
445
|
^rel collect { … } / ^^root exists { … } nested consumer over an enclosing row's relation / a named root
|
|
401
446
|
order by expr desc, expr2 ordering
|
|
@@ -482,7 +527,7 @@ new PlannedEngine(planner).run(parse('name from emp where dept == "eng" && level
|
|
|
482
527
|
|
|
483
528
|
This is the seam an omgbase adapter uses: its existing OQX→SQL compiler (docs/
|
|
484
529
|
blocks/nodes, the relations table, `$` intrinsics, `WITH RECURSIVE` for `follow`)
|
|
485
|
-
becomes a `QueryPlanner`, while oqx
|
|
530
|
+
becomes a `QueryPlanner`, while oqx contributes the parser, IR, semantics
|
|
486
531
|
contract, and residual executor.
|
|
487
532
|
|
|
488
533
|
## Requirements
|
package/dist/ast.d.ts
CHANGED
|
@@ -102,6 +102,10 @@ export interface Subquery {
|
|
|
102
102
|
select: SelectItem[];
|
|
103
103
|
orderBy: OrderSpec[] | null;
|
|
104
104
|
follow: Follow | null;
|
|
105
|
+
/** `values` — scalar projection mode: the (single) projected expression is the
|
|
106
|
+
* row's result itself rather than being wrapped in a `{ name: value }` record,
|
|
107
|
+
* so `name values` yields `["Bob", …]` and `$value values` yields the rows. */
|
|
108
|
+
values?: boolean;
|
|
105
109
|
}
|
|
106
110
|
/** The where-clause boolean tree: OQX owns &&/||/!/grouping so consumer ops
|
|
107
111
|
* (invisible to the scalar evaluator) compose with scalar predicates. */
|
|
@@ -129,5 +133,7 @@ export interface Query {
|
|
|
129
133
|
follow: Follow | null;
|
|
130
134
|
/** `distinct` — dedup the result rows by their projected value (see OpNode). */
|
|
131
135
|
distinct?: boolean;
|
|
136
|
+
/** `values` — scalar projection mode (see Subquery). */
|
|
137
|
+
values?: boolean;
|
|
132
138
|
}
|
|
133
139
|
//# sourceMappingURL=ast.d.ts.map
|
package/dist/ast.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ast.d.ts","sourceRoot":"","sources":["../src/ast.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"ast.d.ts","sourceRoot":"","sources":["../src/ast.ts"],"names":[],"mappings":"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"}
|
package/dist/engine.d.ts
CHANGED
package/dist/engine.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EACV,KAAK,EACN,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAOhD,yEAAyE;AACzE,MAAM,MAAM,SAAS,GACjB;IAAE,QAAQ,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,OAAO,EAAE,CAAA;CAAE,GACxC;IAAE,QAAQ,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,GACvC;IAAE,QAAQ,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACpC;IAAE,QAAQ,EAAE,OAAO,CAAC;IAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CAAA;CAAE,GAC1C;IAAE,QAAQ,EAAE,QAAQ,CAAC;IAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CAAA;CAAE,CAAC;AAEhD,6EAA6E;AAC7E,MAAM,WAAW,MAAM;IACrB,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,OAAO,EAAE,GAAG,SAAS,CAAC;CAC5D;
|
|
1
|
+
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EACV,KAAK,EACN,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAOhD,yEAAyE;AACzE,MAAM,MAAM,SAAS,GACjB;IAAE,QAAQ,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,OAAO,EAAE,CAAA;CAAE,GACxC;IAAE,QAAQ,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,GACvC;IAAE,QAAQ,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACpC;IAAE,QAAQ,EAAE,OAAO,CAAC;IAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CAAA;CAAE,GAC1C;IAAE,QAAQ,EAAE,QAAQ,CAAC;IAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CAAA;CAAE,CAAC;AAEhD,6EAA6E;AAC7E,MAAM,WAAW,MAAM;IACrB,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,OAAO,EAAE,GAAG,SAAS,CAAC;CAC5D;AAsBD,qBAAa,cAAe,YAAW,MAAM;IAC3C,OAAO,CAAC,GAAG,CAAc;gBAEb,OAAO,GAAE,WAAkC;IAIvD,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,GAAE,SAAS,OAAO,EAAO,GAAG,SAAS;IAsC/D,OAAO,CAAC,OAAO;IAKf,OAAO,CAAC,MAAM;IAId,OAAO,CAAC,KAAK;IAMb,OAAO,CAAC,SAAS;IAcjB,OAAO,CAAC,iBAAiB;IA2BzB,OAAO,CAAC,UAAU;IA6DlB,OAAO,CAAC,KAAK;IAcb,OAAO,CAAC,UAAU;IASlB,OAAO,CAAC,SAAS;IAMjB,OAAO,CAAC,SAAS;IAcjB,OAAO,CAAC,WAAW;IA6BnB,OAAO,CAAC,QAAQ;IAKhB,OAAO,CAAE,aAAa;IAStB,OAAO,CAAC,SAAS;IAKjB,OAAO,CAAC,gBAAgB;IAyBxB,OAAO,CAAC,UAAU;IAwBlB,OAAO,CAAC,QAAQ;IAuDhB,OAAO,CAAC,SAAS;IAQjB,OAAO,CAAC,QAAQ;CAYjB;AA+ED,8EAA8E;AAC9E,wBAAgB,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,GAAG,SAAS,CAG9F"}
|
package/dist/engine.js
CHANGED
|
@@ -58,8 +58,8 @@ export class InMemoryEngine {
|
|
|
58
58
|
}
|
|
59
59
|
this.sortScopes(kept, query.orderBy);
|
|
60
60
|
if (query.distinct)
|
|
61
|
-
kept = this.dedupByProjection(kept, query
|
|
62
|
-
return this.shape(query.consumer, kept, query
|
|
61
|
+
kept = this.dedupByProjection(kept, query);
|
|
62
|
+
return this.shape(query.consumer, kept, query);
|
|
63
63
|
}
|
|
64
64
|
// A where match that needs no lift capture (exists/count fast paths).
|
|
65
65
|
matches(where, row, parent) {
|
|
@@ -83,19 +83,19 @@ export class InMemoryEngine {
|
|
|
83
83
|
scopes = scopes.filter((s) => this.evalWhere(post, s));
|
|
84
84
|
this.sortScopes(scopes, query.orderBy);
|
|
85
85
|
if (query.distinct)
|
|
86
|
-
scopes = this.dedupByProjection(scopes, query
|
|
87
|
-
return this.shape(query.consumer, scopes, query
|
|
86
|
+
scopes = this.dedupByProjection(scopes, query);
|
|
87
|
+
return this.shape(query.consumer, scopes, query);
|
|
88
88
|
}
|
|
89
89
|
// Dedup scopes by their PROJECTED value (`distinct`): keep the first scope per
|
|
90
90
|
// distinct projection, preserving order. An empty projection dedups by row
|
|
91
91
|
// identity (so `count distinct { }` counts distinct rows).
|
|
92
|
-
dedupByProjection(scopes,
|
|
92
|
+
dedupByProjection(scopes, proj) {
|
|
93
93
|
const seen = new Set();
|
|
94
94
|
const out = [];
|
|
95
95
|
for (const s of scopes) {
|
|
96
|
-
const key = select.length === 0
|
|
96
|
+
const key = proj.select.length === 0
|
|
97
97
|
? `i:${String(this.ctx.identity(s.row))}`
|
|
98
|
-
: `p:${stableStringify(this.projectRow(
|
|
98
|
+
: `p:${stableStringify(this.projectRow(proj, s))}`;
|
|
99
99
|
if (seen.has(key))
|
|
100
100
|
continue;
|
|
101
101
|
seen.add(key);
|
|
@@ -176,27 +176,34 @@ export class InMemoryEngine {
|
|
|
176
176
|
}));
|
|
177
177
|
}
|
|
178
178
|
// ---- consumer shaping -----------------------------------------------------
|
|
179
|
-
shape(consumer, scopes,
|
|
179
|
+
shape(consumer, scopes, proj) {
|
|
180
180
|
switch (consumer) {
|
|
181
181
|
case "exists": return { consumer, exists: scopes.length > 0 };
|
|
182
182
|
case "count": return { consumer, count: scopes.length };
|
|
183
|
-
case "collect": return { consumer, rows: scopes.map((s) => this.projectRow(
|
|
184
|
-
case "first": return { consumer, row: scopes.length > 0 ? this.projectRow(
|
|
183
|
+
case "collect": return { consumer, rows: scopes.map((s) => this.projectRow(proj, s)) };
|
|
184
|
+
case "first": return { consumer, row: scopes.length > 0 ? this.projectRow(proj, scopes[0]) : null };
|
|
185
185
|
case "single":
|
|
186
186
|
if (scopes.length > 1)
|
|
187
187
|
throw new OqxError(`single { … } matched ${scopes.length} rows; use first { … } for zero-or-one`, "eval");
|
|
188
|
-
return { consumer, row: scopes.length > 0 ? this.projectRow(
|
|
188
|
+
return { consumer, row: scopes.length > 0 ? this.projectRow(proj, scopes[0]) : null };
|
|
189
189
|
}
|
|
190
190
|
}
|
|
191
|
-
|
|
191
|
+
// The per-row result: the raw row (empty projection), the single item's value
|
|
192
|
+
// itself (`values` mode), or a `{ name: value }` record.
|
|
193
|
+
projectRow(proj, scope) {
|
|
194
|
+
const { select } = proj;
|
|
192
195
|
if (select.length === 0)
|
|
193
196
|
return scope.row;
|
|
197
|
+
if (proj.values)
|
|
198
|
+
return this.itemValue(select[0], scope);
|
|
194
199
|
const out = {};
|
|
195
|
-
for (const item of select)
|
|
196
|
-
out[item.name] =
|
|
197
|
-
}
|
|
200
|
+
for (const item of select)
|
|
201
|
+
out[item.name] = this.itemValue(item, scope);
|
|
198
202
|
return out;
|
|
199
203
|
}
|
|
204
|
+
itemValue(item, scope) {
|
|
205
|
+
return item.kind === "field" ? this.evalExpr(item.expr, scope) : this.evalCollectValue(item.op, scope);
|
|
206
|
+
}
|
|
200
207
|
// ---- where evaluation -----------------------------------------------------
|
|
201
208
|
evalWhere(w, scope) {
|
|
202
209
|
switch (w.kind) {
|
|
@@ -239,7 +246,7 @@ export class InMemoryEngine {
|
|
|
239
246
|
if (op.op === "count") {
|
|
240
247
|
let rows = this.matchRows(op, scope);
|
|
241
248
|
if (op.distinct)
|
|
242
|
-
rows = this.dedupByProjection(rows, op.sub
|
|
249
|
+
rows = this.dedupByProjection(rows, op.sub);
|
|
243
250
|
const n = rows.length;
|
|
244
251
|
return op.countCmp ? compareCount(n, op.countCmp) : n > 0;
|
|
245
252
|
}
|
|
@@ -282,14 +289,14 @@ export class InMemoryEngine {
|
|
|
282
289
|
}
|
|
283
290
|
this.sortScopes(scopes, sub.orderBy);
|
|
284
291
|
if (op.distinct)
|
|
285
|
-
scopes = this.dedupByProjection(scopes, sub
|
|
292
|
+
scopes = this.dedupByProjection(scopes, sub);
|
|
286
293
|
switch (op.op) {
|
|
287
|
-
case "collect": return scopes.map((s) => this.projectRow(sub
|
|
288
|
-
case "first": return scopes.length > 0 ? this.projectRow(sub
|
|
294
|
+
case "collect": return scopes.map((s) => this.projectRow(sub, s));
|
|
295
|
+
case "first": return scopes.length > 0 ? this.projectRow(sub, scopes[0]) : null;
|
|
289
296
|
case "single":
|
|
290
297
|
if (scopes.length > 1)
|
|
291
298
|
throw new OqxError(`single { … } for '${describeReceiver(op.receiver)}' matched ${scopes.length} rows`, "eval");
|
|
292
|
-
return scopes.length > 0 ? this.projectRow(sub
|
|
299
|
+
return scopes.length > 0 ? this.projectRow(sub, scopes[0]) : null;
|
|
293
300
|
default: throw new OqxError(`${op.op} { … } is not valid in select position`, "eval");
|
|
294
301
|
}
|
|
295
302
|
}
|
|
@@ -362,9 +369,11 @@ export class InMemoryEngine {
|
|
|
362
369
|
}
|
|
363
370
|
}
|
|
364
371
|
// Resolve a name against ONE scope — never its ancestors. A scope provides,
|
|
365
|
-
// in order: the
|
|
366
|
-
//
|
|
367
|
-
//
|
|
372
|
+
// in order: `$value` (the scope's row itself — the current item, whatever its
|
|
373
|
+
// type, so scalar collections are queryable; absent at the root, which has no
|
|
374
|
+
// row); the recursion intrinsics (`$depth`, …) when it is a follow occurrence;
|
|
375
|
+
// values lifted into it by `^name:` items; then either the row's own property
|
|
376
|
+
// or, for the root scope (no row), the context's named roots.
|
|
368
377
|
//
|
|
369
378
|
// A name the scope lacks is simply absent (undefined). It does NOT fall
|
|
370
379
|
// through to an enclosing scope, so a query's meaning never depends on which
|
|
@@ -373,6 +382,8 @@ export class InMemoryEngine {
|
|
|
373
382
|
// always spelled explicitly as `^name`. Present-but-falsy values (null, false,
|
|
374
383
|
// 0, "") need no special case — there is no "absent, so look outward" rule.
|
|
375
384
|
resolveIn(name, scope) {
|
|
385
|
+
if (name === "$value")
|
|
386
|
+
return scope.parent === null ? undefined : scope.row;
|
|
376
387
|
if (RECUR.has(name))
|
|
377
388
|
return scope.meta ? scope.meta[name] : undefined;
|
|
378
389
|
if (scope.lifts && name in scope.lifts)
|
package/dist/engine.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine.js","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"engine.js","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"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"}
|
package/dist/parser.js
CHANGED
|
@@ -19,7 +19,7 @@ const CONSUMERS = new Set(["collect", "exists", "count", "first", "single"]);
|
|
|
19
19
|
// before them rather than consume them as its high bound.
|
|
20
20
|
const CLAUSE_WORDS = new Set([
|
|
21
21
|
"collect", "exists", "count", "first", "single",
|
|
22
|
-
"order", "by", "asc", "desc", "follow", "distinct", "frontier", "depth", "in",
|
|
22
|
+
"order", "by", "asc", "desc", "follow", "distinct", "frontier", "depth", "in", "values",
|
|
23
23
|
]);
|
|
24
24
|
const RELOPS = new Set(["==", "!=", "<", "<=", ">", ">="]);
|
|
25
25
|
const CMP_OPS = new Set(["==", "!=", "<", "<=", ">", ">="]);
|
|
@@ -68,6 +68,7 @@ class Parser {
|
|
|
68
68
|
consumer: directive.op,
|
|
69
69
|
follow: directive.sub.follow,
|
|
70
70
|
distinct: directive.distinct ?? false,
|
|
71
|
+
values: directive.sub.values ?? false,
|
|
71
72
|
};
|
|
72
73
|
}
|
|
73
74
|
if (directive)
|
|
@@ -88,6 +89,7 @@ class Parser {
|
|
|
88
89
|
consumer: "collect",
|
|
89
90
|
follow: body.follow,
|
|
90
91
|
distinct: body.distinct,
|
|
92
|
+
values: body.values,
|
|
91
93
|
};
|
|
92
94
|
}
|
|
93
95
|
tokDesc() {
|
|
@@ -102,6 +104,7 @@ class Parser {
|
|
|
102
104
|
let orderBy = null;
|
|
103
105
|
let follow = null;
|
|
104
106
|
let distinct = false;
|
|
107
|
+
let values = false;
|
|
105
108
|
let sawWhere = false, sawSelect = false, sawOrder = false;
|
|
106
109
|
while (!this.at("eof") && !this.at("rbrace")) {
|
|
107
110
|
if (this.atFollow()) {
|
|
@@ -134,7 +137,7 @@ class Parser {
|
|
|
134
137
|
distinct = true;
|
|
135
138
|
}
|
|
136
139
|
} // consume `select` + optional `distinct`; a leading `^` is part of the item
|
|
137
|
-
select = this.
|
|
140
|
+
({ items: select, values } = this.parseProjection());
|
|
138
141
|
continue;
|
|
139
142
|
}
|
|
140
143
|
if (orderByAllowed && this.atOrderBy()) {
|
|
@@ -157,12 +160,12 @@ class Parser {
|
|
|
157
160
|
if (sawSelect)
|
|
158
161
|
this.fail("duplicate projection (an implicit select cannot follow a `select`)");
|
|
159
162
|
sawSelect = true;
|
|
160
|
-
select = this.
|
|
163
|
+
({ items: select, values } = this.parseProjection());
|
|
161
164
|
continue;
|
|
162
165
|
}
|
|
163
166
|
this.fail(`unexpected ${this.tokDesc()} — expected from/where/select${orderByAllowed ? "/order by" : ""}/follow`);
|
|
164
167
|
}
|
|
165
|
-
return { froms, where, select, orderBy, follow, distinct };
|
|
168
|
+
return { froms, where, select, orderBy, follow, distinct, values };
|
|
166
169
|
}
|
|
167
170
|
// Decide, by syntactic shape only, whether a leading unkeyworded run is a
|
|
168
171
|
// predicate (→ implicit where) or a projection (→ implicit select). A depth-0
|
|
@@ -317,23 +320,42 @@ class Parser {
|
|
|
317
320
|
return { expr, name };
|
|
318
321
|
}
|
|
319
322
|
// ---- select ---------------------------------------------------------------
|
|
320
|
-
|
|
323
|
+
// A projection list, optionally followed by the `values` mode word. Under
|
|
324
|
+
// `values` the list must be exactly one item, which need not be named: the
|
|
325
|
+
// row's result IS that value (no `{ name: value }` record), so a name would be
|
|
326
|
+
// meaningless. Without `values`, every item needs a key — a bare/dotted
|
|
327
|
+
// navigation supplies its own (the last segment); any other expression must be
|
|
328
|
+
// aliased (`name: expr`).
|
|
329
|
+
parseProjection() {
|
|
321
330
|
const items = [this.parseSelectItem()];
|
|
322
331
|
while (this.at("comma")) {
|
|
323
332
|
this.next();
|
|
324
333
|
items.push(this.parseSelectItem());
|
|
325
334
|
}
|
|
326
|
-
|
|
335
|
+
let values = false;
|
|
336
|
+
if (this.at("ident", "values")) {
|
|
337
|
+
this.next();
|
|
338
|
+
values = true;
|
|
339
|
+
if (items.length !== 1)
|
|
340
|
+
this.fail("`values` projects exactly one expression (got " + items.length + ")");
|
|
341
|
+
const only = items[0];
|
|
342
|
+
if (only.kind === "field" && only.lift > 0)
|
|
343
|
+
this.fail("a lift (^name: …) cannot be combined with `values`");
|
|
344
|
+
}
|
|
345
|
+
else {
|
|
346
|
+
for (const it of items) {
|
|
347
|
+
if (it.name === "")
|
|
348
|
+
this.fail("a projection item that is not a plain name needs an alias (`name: expr`) unless it is followed by `values`");
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
return { items, values };
|
|
327
352
|
}
|
|
328
353
|
parseSelectItem() {
|
|
329
354
|
// Leading `^`s mark a lift; the count is how many scopes out it binds.
|
|
330
355
|
const lift = this.parseCarets();
|
|
331
|
-
if (
|
|
332
|
-
this.
|
|
333
|
-
|
|
334
|
-
if (this.at("colon")) {
|
|
335
|
-
this.next();
|
|
336
|
-
const name = nameTok.value;
|
|
356
|
+
if (this.at("ident") && this.peekAt(1)?.type === "colon") {
|
|
357
|
+
const name = this.next().value;
|
|
358
|
+
this.next(); // ':'
|
|
337
359
|
const op = this.tryOp();
|
|
338
360
|
if (op) {
|
|
339
361
|
if (op.op !== "collect" && op.op !== "first" && op.op !== "single") {
|
|
@@ -346,9 +368,13 @@ class Parser {
|
|
|
346
368
|
const expr = this.parseValueExpr();
|
|
347
369
|
return { kind: "field", name, expr, lift };
|
|
348
370
|
}
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
371
|
+
if (!this.at("ident") && !this.canStartValue())
|
|
372
|
+
this.fail("expected a projection name");
|
|
373
|
+
// Unaliased item: a bare/dotted navigation keys by its last segment; any
|
|
374
|
+
// other expression is unnamed ("") — legal only under `values` (checked by
|
|
375
|
+
// parseProjection, which sees the whole list).
|
|
376
|
+
const expr = this.parseValueExpr();
|
|
377
|
+
return { kind: "field", name: navKey(expr) ?? "", expr, lift };
|
|
352
378
|
}
|
|
353
379
|
// ---- order by -------------------------------------------------------------
|
|
354
380
|
parseOrderSpecs() {
|
|
@@ -481,7 +507,10 @@ class Parser {
|
|
|
481
507
|
}
|
|
482
508
|
parseSubquery() {
|
|
483
509
|
const body = this.parseBody(true);
|
|
484
|
-
return {
|
|
510
|
+
return {
|
|
511
|
+
sub: { from: body.froms, where: body.where, select: body.select, orderBy: body.orderBy, follow: body.follow, values: body.values },
|
|
512
|
+
distinct: body.distinct,
|
|
513
|
+
};
|
|
485
514
|
}
|
|
486
515
|
// ---- expression Pratt parser ----------------------------------------------
|
|
487
516
|
// Value position (select/order/follow/source): full boolean+arithmetic.
|
|
@@ -663,4 +692,14 @@ class Parser {
|
|
|
663
692
|
this.fail(`unexpected ${this.tokDesc()} — expected a value`);
|
|
664
693
|
}
|
|
665
694
|
}
|
|
695
|
+
// The default key of an unaliased projection item: the last segment of a bare /
|
|
696
|
+
// dotted / outer navigation (`name`, `meta.slug` → "slug", `^name`), else null.
|
|
697
|
+
function navKey(e) {
|
|
698
|
+
switch (e.kind) {
|
|
699
|
+
case "ident": return e.name;
|
|
700
|
+
case "outer": return e.name;
|
|
701
|
+
case "member": return e.name;
|
|
702
|
+
default: return null;
|
|
703
|
+
}
|
|
704
|
+
}
|
|
666
705
|
//# sourceMappingURL=parser.js.map
|
package/dist/parser.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"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"}
|
package/dist/plan.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["../src/plan.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["../src/plan.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAEnD,mFAAmF;AACnF,eAAO,MAAM,SAAS,iBAAiB,CAAC;AAExC,kFAAkF;AAClF,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,KAAK,GAAG,IAAI,EACnB,OAAO,EAAE,CAAC,CAAC,EAAE,IAAI,KAAK,OAAO,GAC5B;IAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IAAC,QAAQ,EAAE,KAAK,GAAG,IAAI,CAAA;CAAE,CAW5C;AAED;oFACoF;AACpF,wBAAgB,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,GAAG,IAAI,GAAG,KAAK,CAE9E;AAED,kEAAkE;AAClE,wBAAgB,OAAO,CAAC,CAAC,EAAE,IAAI,GAAG,OAAO,CAExC;AAED,iEAAiE;AACjE,wBAAgB,UAAU,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,OAAO,EAAE,GAAG,OAAO,CAIvE;AAED;uDACuD;AACvD,wBAAgB,UAAU,CAAC,CAAC,EAAE,IAAI,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,IAAI,CAAA;CAAE,GAAG,IAAI,CAKzE"}
|
package/dist/plan.js
CHANGED
|
@@ -12,7 +12,9 @@
|
|
|
12
12
|
// Because a bare identifier resolves against the current row ONLY (it never
|
|
13
13
|
// climbs to an enclosing scope or a named root), an `ident` in a top-level
|
|
14
14
|
// `where` is unambiguously a column of the scanned rows and is safe to push. An
|
|
15
|
-
// `outer` (`^name`) reference is not a row column and stays residual
|
|
15
|
+
// `outer` (`^name`) reference is not a row column and stays residual, and so is
|
|
16
|
+
// the `$value` intrinsic (the row itself, not one of its columns) — adapters
|
|
17
|
+
// gate idents on their known column set, which never includes it.
|
|
16
18
|
/** The synthetic root name the residual query scans — the rows a plan produced. */
|
|
17
19
|
export const ROWS_ROOT = "__oqx_rows__";
|
|
18
20
|
/** Split a top-level where into pushable scalar conjuncts and a residual tree. */
|
package/dist/plan.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plan.js","sourceRoot":"","sources":["../src/plan.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,iFAAiF;AACjF,4EAA4E;AAC5E,kFAAkF;AAClF,gFAAgF;AAChF,yDAAyD;AACzD,EAAE;AACF,gFAAgF;AAChF,2EAA2E;AAC3E,iEAAiE;AACjE,EAAE;AACF,4EAA4E;AAC5E,2EAA2E;AAC3E,gFAAgF;AAChF,
|
|
1
|
+
{"version":3,"file":"plan.js","sourceRoot":"","sources":["../src/plan.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/ast.ts
CHANGED
|
@@ -13,7 +13,7 @@ export type RelOp = "==" | "!=" | "<" | "<=" | ">" | ">=";
|
|
|
13
13
|
/** Scalar value/predicate expression, evaluated against a row scope + bindings. */
|
|
14
14
|
export type Expr =
|
|
15
15
|
| { kind: "lit"; value: string | number | boolean | null }
|
|
16
|
-
| { kind: "ident"; name: string } // bare property of the CURRENT row/scope only (never climbs)
|
|
16
|
+
| { kind: "ident"; name: string } // bare property of the CURRENT row/scope only (never climbs); `$value` is the row itself
|
|
17
17
|
| { kind: "outer"; levels: number; name: string } // `^name` — read from exactly `levels` scopes out
|
|
18
18
|
| { kind: "binding"; index: number } // a ${…} interpolated host value
|
|
19
19
|
| { kind: "member"; recv: Expr; name: string } // .prop navigation on the value to its left
|
|
@@ -73,6 +73,10 @@ export interface Subquery {
|
|
|
73
73
|
select: SelectItem[];
|
|
74
74
|
orderBy: OrderSpec[] | null;
|
|
75
75
|
follow: Follow | null;
|
|
76
|
+
/** `values` — scalar projection mode: the (single) projected expression is the
|
|
77
|
+
* row's result itself rather than being wrapped in a `{ name: value }` record,
|
|
78
|
+
* so `name values` yields `["Bob", …]` and `$value values` yields the rows. */
|
|
79
|
+
values?: boolean;
|
|
76
80
|
}
|
|
77
81
|
|
|
78
82
|
/** The where-clause boolean tree: OQX owns &&/||/!/grouping so consumer ops
|
|
@@ -95,4 +99,6 @@ export interface Query {
|
|
|
95
99
|
follow: Follow | null;
|
|
96
100
|
/** `distinct` — dedup the result rows by their projected value (see OpNode). */
|
|
97
101
|
distinct?: boolean;
|
|
102
|
+
/** `values` — scalar projection mode (see Subquery). */
|
|
103
|
+
values?: boolean;
|
|
98
104
|
}
|
package/src/engine.ts
CHANGED
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
// fall-through from an inner scope to an outer one — see `resolveIn`.
|
|
14
14
|
|
|
15
15
|
import type {
|
|
16
|
-
Query, Where, Expr, OpNode, SelectItem, OrderSpec, Follow,
|
|
16
|
+
Query, Where, Expr, OpNode, SelectItem, OrderSpec, Follow, Subquery,
|
|
17
17
|
} from "./ast.ts";
|
|
18
18
|
import type { DataContext } from "./context.ts";
|
|
19
19
|
import { DefaultContext } from "./context.ts";
|
|
@@ -51,6 +51,10 @@ interface Scope {
|
|
|
51
51
|
const RECUR = new Set(["$depth", "$stop", "$leaf", "$frontier", "$ordinal"]);
|
|
52
52
|
const HARD_DEPTH_CAP = 8;
|
|
53
53
|
|
|
54
|
+
// What a scope projects to: the select list plus the `values` mode flag. Both
|
|
55
|
+
// `Query` and `Subquery` carry this shape.
|
|
56
|
+
type Projection = Pick<Subquery, "select" | "values">;
|
|
57
|
+
|
|
54
58
|
export class InMemoryEngine implements Engine {
|
|
55
59
|
private ctx: DataContext;
|
|
56
60
|
|
|
@@ -91,8 +95,8 @@ export class InMemoryEngine implements Engine {
|
|
|
91
95
|
}
|
|
92
96
|
}
|
|
93
97
|
this.sortScopes(kept, query.orderBy);
|
|
94
|
-
if (query.distinct) kept = this.dedupByProjection(kept, query
|
|
95
|
-
return this.shape(query.consumer, kept, query
|
|
98
|
+
if (query.distinct) kept = this.dedupByProjection(kept, query);
|
|
99
|
+
return this.shape(query.consumer, kept, query);
|
|
96
100
|
}
|
|
97
101
|
|
|
98
102
|
// A where match that needs no lift capture (exists/count fast paths).
|
|
@@ -118,20 +122,20 @@ export class InMemoryEngine implements Engine {
|
|
|
118
122
|
let scopes: Scope[] = occ.map((o) => ({ row: o.row, parent: root, bindings: root.bindings, lifts: {}, meta: o.meta }));
|
|
119
123
|
if (post) scopes = scopes.filter((s) => this.evalWhere(post, s));
|
|
120
124
|
this.sortScopes(scopes, query.orderBy);
|
|
121
|
-
if (query.distinct) scopes = this.dedupByProjection(scopes, query
|
|
122
|
-
return this.shape(query.consumer, scopes, query
|
|
125
|
+
if (query.distinct) scopes = this.dedupByProjection(scopes, query);
|
|
126
|
+
return this.shape(query.consumer, scopes, query);
|
|
123
127
|
}
|
|
124
128
|
|
|
125
129
|
// Dedup scopes by their PROJECTED value (`distinct`): keep the first scope per
|
|
126
130
|
// distinct projection, preserving order. An empty projection dedups by row
|
|
127
131
|
// identity (so `count distinct { }` counts distinct rows).
|
|
128
|
-
private dedupByProjection(scopes: Scope[],
|
|
132
|
+
private dedupByProjection(scopes: Scope[], proj: Projection): Scope[] {
|
|
129
133
|
const seen = new Set<string>();
|
|
130
134
|
const out: Scope[] = [];
|
|
131
135
|
for (const s of scopes) {
|
|
132
|
-
const key = select.length === 0
|
|
136
|
+
const key = proj.select.length === 0
|
|
133
137
|
? `i:${String(this.ctx.identity(s.row))}`
|
|
134
|
-
: `p:${stableStringify(this.projectRow(
|
|
138
|
+
: `p:${stableStringify(this.projectRow(proj, s))}`;
|
|
135
139
|
if (seen.has(key)) continue;
|
|
136
140
|
seen.add(key);
|
|
137
141
|
out.push(s);
|
|
@@ -213,27 +217,33 @@ export class InMemoryEngine implements Engine {
|
|
|
213
217
|
|
|
214
218
|
// ---- consumer shaping -----------------------------------------------------
|
|
215
219
|
|
|
216
|
-
private shape(consumer: Query["consumer"], scopes: Scope[],
|
|
220
|
+
private shape(consumer: Query["consumer"], scopes: Scope[], proj: Projection): OqxResult {
|
|
217
221
|
switch (consumer) {
|
|
218
222
|
case "exists": return { consumer, exists: scopes.length > 0 };
|
|
219
223
|
case "count": return { consumer, count: scopes.length };
|
|
220
|
-
case "collect": return { consumer, rows: scopes.map((s) => this.projectRow(
|
|
221
|
-
case "first": return { consumer, row: scopes.length > 0 ? this.projectRow(
|
|
224
|
+
case "collect": return { consumer, rows: scopes.map((s) => this.projectRow(proj, s)) };
|
|
225
|
+
case "first": return { consumer, row: scopes.length > 0 ? this.projectRow(proj, scopes[0]!) : null };
|
|
222
226
|
case "single":
|
|
223
227
|
if (scopes.length > 1) throw new OqxError(`single { … } matched ${scopes.length} rows; use first { … } for zero-or-one`, "eval");
|
|
224
|
-
return { consumer, row: scopes.length > 0 ? this.projectRow(
|
|
228
|
+
return { consumer, row: scopes.length > 0 ? this.projectRow(proj, scopes[0]!) : null };
|
|
225
229
|
}
|
|
226
230
|
}
|
|
227
231
|
|
|
228
|
-
|
|
232
|
+
// The per-row result: the raw row (empty projection), the single item's value
|
|
233
|
+
// itself (`values` mode), or a `{ name: value }` record.
|
|
234
|
+
private projectRow(proj: Projection, scope: Scope): unknown {
|
|
235
|
+
const { select } = proj;
|
|
229
236
|
if (select.length === 0) return scope.row;
|
|
237
|
+
if (proj.values) return this.itemValue(select[0]!, scope);
|
|
230
238
|
const out: Record<string, unknown> = {};
|
|
231
|
-
for (const item of select)
|
|
232
|
-
out[item.name] = item.kind === "field" ? this.evalExpr(item.expr, scope) : this.evalCollectValue(item.op, scope);
|
|
233
|
-
}
|
|
239
|
+
for (const item of select) out[item.name] = this.itemValue(item, scope);
|
|
234
240
|
return out;
|
|
235
241
|
}
|
|
236
242
|
|
|
243
|
+
private itemValue(item: SelectItem, scope: Scope): unknown {
|
|
244
|
+
return item.kind === "field" ? this.evalExpr(item.expr, scope) : this.evalCollectValue(item.op, scope);
|
|
245
|
+
}
|
|
246
|
+
|
|
237
247
|
// ---- where evaluation -----------------------------------------------------
|
|
238
248
|
|
|
239
249
|
private evalWhere(w: Where, scope: Scope): boolean {
|
|
@@ -271,7 +281,7 @@ export class InMemoryEngine implements Engine {
|
|
|
271
281
|
}
|
|
272
282
|
if (op.op === "count") {
|
|
273
283
|
let rows = this.matchRows(op, scope);
|
|
274
|
-
if (op.distinct) rows = this.dedupByProjection(rows, op.sub
|
|
284
|
+
if (op.distinct) rows = this.dedupByProjection(rows, op.sub);
|
|
275
285
|
const n = rows.length;
|
|
276
286
|
return op.countCmp ? compareCount(n, op.countCmp) : n > 0;
|
|
277
287
|
}
|
|
@@ -310,13 +320,13 @@ export class InMemoryEngine implements Engine {
|
|
|
310
320
|
scopes = this.matchRows(op, scope);
|
|
311
321
|
}
|
|
312
322
|
this.sortScopes(scopes, sub.orderBy);
|
|
313
|
-
if (op.distinct) scopes = this.dedupByProjection(scopes, sub
|
|
323
|
+
if (op.distinct) scopes = this.dedupByProjection(scopes, sub);
|
|
314
324
|
switch (op.op) {
|
|
315
|
-
case "collect": return scopes.map((s) => this.projectRow(sub
|
|
316
|
-
case "first": return scopes.length > 0 ? this.projectRow(sub
|
|
325
|
+
case "collect": return scopes.map((s) => this.projectRow(sub, s));
|
|
326
|
+
case "first": return scopes.length > 0 ? this.projectRow(sub, scopes[0]!) : null;
|
|
317
327
|
case "single":
|
|
318
328
|
if (scopes.length > 1) throw new OqxError(`single { … } for '${describeReceiver(op.receiver)}' matched ${scopes.length} rows`, "eval");
|
|
319
|
-
return scopes.length > 0 ? this.projectRow(sub
|
|
329
|
+
return scopes.length > 0 ? this.projectRow(sub, scopes[0]!) : null;
|
|
320
330
|
default: throw new OqxError(`${op.op} { … } is not valid in select position`, "eval");
|
|
321
331
|
}
|
|
322
332
|
}
|
|
@@ -390,9 +400,11 @@ export class InMemoryEngine implements Engine {
|
|
|
390
400
|
}
|
|
391
401
|
|
|
392
402
|
// Resolve a name against ONE scope — never its ancestors. A scope provides,
|
|
393
|
-
// in order: the
|
|
394
|
-
//
|
|
395
|
-
//
|
|
403
|
+
// in order: `$value` (the scope's row itself — the current item, whatever its
|
|
404
|
+
// type, so scalar collections are queryable; absent at the root, which has no
|
|
405
|
+
// row); the recursion intrinsics (`$depth`, …) when it is a follow occurrence;
|
|
406
|
+
// values lifted into it by `^name:` items; then either the row's own property
|
|
407
|
+
// or, for the root scope (no row), the context's named roots.
|
|
396
408
|
//
|
|
397
409
|
// A name the scope lacks is simply absent (undefined). It does NOT fall
|
|
398
410
|
// through to an enclosing scope, so a query's meaning never depends on which
|
|
@@ -401,6 +413,7 @@ export class InMemoryEngine implements Engine {
|
|
|
401
413
|
// always spelled explicitly as `^name`. Present-but-falsy values (null, false,
|
|
402
414
|
// 0, "") need no special case — there is no "absent, so look outward" rule.
|
|
403
415
|
private resolveIn(name: string, scope: Scope): unknown {
|
|
416
|
+
if (name === "$value") return scope.parent === null ? undefined : scope.row;
|
|
404
417
|
if (RECUR.has(name)) return scope.meta ? scope.meta[name] : undefined;
|
|
405
418
|
if (scope.lifts && name in scope.lifts) return scope.lifts[name];
|
|
406
419
|
if (scope.parent === null) return this.ctx.root(name);
|
package/src/parser.ts
CHANGED
|
@@ -25,7 +25,7 @@ const CONSUMERS = new Set<string>(["collect", "exists", "count", "first", "singl
|
|
|
25
25
|
// before them rather than consume them as its high bound.
|
|
26
26
|
const CLAUSE_WORDS = new Set<string>([
|
|
27
27
|
"collect", "exists", "count", "first", "single",
|
|
28
|
-
"order", "by", "asc", "desc", "follow", "distinct", "frontier", "depth", "in",
|
|
28
|
+
"order", "by", "asc", "desc", "follow", "distinct", "frontier", "depth", "in", "values",
|
|
29
29
|
]);
|
|
30
30
|
const RELOPS = new Set<string>(["==", "!=", "<", "<=", ">", ">="]);
|
|
31
31
|
const CMP_OPS = new Set<string>(["==", "!=", "<", "<=", ">", ">="]);
|
|
@@ -49,6 +49,7 @@ interface BodyClauses {
|
|
|
49
49
|
orderBy: OrderSpec[] | null;
|
|
50
50
|
follow: Follow | null;
|
|
51
51
|
distinct: boolean;
|
|
52
|
+
values: boolean;
|
|
52
53
|
}
|
|
53
54
|
|
|
54
55
|
class Parser {
|
|
@@ -89,6 +90,7 @@ class Parser {
|
|
|
89
90
|
consumer: directive.op,
|
|
90
91
|
follow: directive.sub.follow,
|
|
91
92
|
distinct: directive.distinct ?? false,
|
|
93
|
+
values: directive.sub.values ?? false,
|
|
92
94
|
};
|
|
93
95
|
}
|
|
94
96
|
if (directive) this.fail(`unexpected ${this.tokDesc()} after the top-level directive`);
|
|
@@ -108,6 +110,7 @@ class Parser {
|
|
|
108
110
|
consumer: "collect",
|
|
109
111
|
follow: body.follow,
|
|
110
112
|
distinct: body.distinct,
|
|
113
|
+
values: body.values,
|
|
111
114
|
};
|
|
112
115
|
}
|
|
113
116
|
|
|
@@ -124,6 +127,7 @@ class Parser {
|
|
|
124
127
|
let orderBy: OrderSpec[] | null = null;
|
|
125
128
|
let follow: Follow | null = null;
|
|
126
129
|
let distinct = false;
|
|
130
|
+
let values = false;
|
|
127
131
|
let sawWhere = false, sawSelect = false, sawOrder = false;
|
|
128
132
|
|
|
129
133
|
while (!this.at("eof") && !this.at("rbrace")) {
|
|
@@ -148,7 +152,7 @@ class Parser {
|
|
|
148
152
|
if (sawSelect) this.fail("duplicate projection");
|
|
149
153
|
sawSelect = true;
|
|
150
154
|
if (this.at("kw")) { this.next(); if (this.at("ident", "distinct")) { this.next(); distinct = true; } } // consume `select` + optional `distinct`; a leading `^` is part of the item
|
|
151
|
-
select = this.
|
|
155
|
+
({ items: select, values } = this.parseProjection());
|
|
152
156
|
continue;
|
|
153
157
|
}
|
|
154
158
|
if (orderByAllowed && this.atOrderBy()) {
|
|
@@ -167,12 +171,12 @@ class Parser {
|
|
|
167
171
|
if (this.at("ident") || this.at("binding")) {
|
|
168
172
|
if (sawSelect) this.fail("duplicate projection (an implicit select cannot follow a `select`)");
|
|
169
173
|
sawSelect = true;
|
|
170
|
-
select = this.
|
|
174
|
+
({ items: select, values } = this.parseProjection());
|
|
171
175
|
continue;
|
|
172
176
|
}
|
|
173
177
|
this.fail(`unexpected ${this.tokDesc()} — expected from/where/select${orderByAllowed ? "/order by" : ""}/follow`);
|
|
174
178
|
}
|
|
175
|
-
return { froms, where, select, orderBy, follow, distinct };
|
|
179
|
+
return { froms, where, select, orderBy, follow, distinct, values };
|
|
176
180
|
}
|
|
177
181
|
|
|
178
182
|
// Decide, by syntactic shape only, whether a leading unkeyworded run is a
|
|
@@ -296,20 +300,36 @@ class Parser {
|
|
|
296
300
|
}
|
|
297
301
|
|
|
298
302
|
// ---- select ---------------------------------------------------------------
|
|
299
|
-
|
|
303
|
+
// A projection list, optionally followed by the `values` mode word. Under
|
|
304
|
+
// `values` the list must be exactly one item, which need not be named: the
|
|
305
|
+
// row's result IS that value (no `{ name: value }` record), so a name would be
|
|
306
|
+
// meaningless. Without `values`, every item needs a key — a bare/dotted
|
|
307
|
+
// navigation supplies its own (the last segment); any other expression must be
|
|
308
|
+
// aliased (`name: expr`).
|
|
309
|
+
private parseProjection(): { items: SelectItem[]; values: boolean } {
|
|
300
310
|
const items = [this.parseSelectItem()];
|
|
301
311
|
while (this.at("comma")) { this.next(); items.push(this.parseSelectItem()); }
|
|
302
|
-
|
|
312
|
+
let values = false;
|
|
313
|
+
if (this.at("ident", "values")) {
|
|
314
|
+
this.next();
|
|
315
|
+
values = true;
|
|
316
|
+
if (items.length !== 1) this.fail("`values` projects exactly one expression (got " + items.length + ")");
|
|
317
|
+
const only = items[0]!;
|
|
318
|
+
if (only.kind === "field" && only.lift > 0) this.fail("a lift (^name: …) cannot be combined with `values`");
|
|
319
|
+
} else {
|
|
320
|
+
for (const it of items) {
|
|
321
|
+
if (it.name === "") this.fail("a projection item that is not a plain name needs an alias (`name: expr`) unless it is followed by `values`");
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
return { items, values };
|
|
303
325
|
}
|
|
304
326
|
|
|
305
327
|
private parseSelectItem(): SelectItem {
|
|
306
328
|
// Leading `^`s mark a lift; the count is how many scopes out it binds.
|
|
307
329
|
const lift = this.parseCarets();
|
|
308
|
-
if (
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
this.next();
|
|
312
|
-
const name = nameTok.value;
|
|
330
|
+
if (this.at("ident") && this.peekAt(1)?.type === "colon") {
|
|
331
|
+
const name = this.next().value;
|
|
332
|
+
this.next(); // ':'
|
|
313
333
|
const op = this.tryOp();
|
|
314
334
|
if (op) {
|
|
315
335
|
if (op.op !== "collect" && op.op !== "first" && op.op !== "single") {
|
|
@@ -321,9 +341,12 @@ class Parser {
|
|
|
321
341
|
const expr = this.parseValueExpr();
|
|
322
342
|
return { kind: "field", name, expr, lift };
|
|
323
343
|
}
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
344
|
+
if (!this.at("ident") && !this.canStartValue()) this.fail("expected a projection name");
|
|
345
|
+
// Unaliased item: a bare/dotted navigation keys by its last segment; any
|
|
346
|
+
// other expression is unnamed ("") — legal only under `values` (checked by
|
|
347
|
+
// parseProjection, which sees the whole list).
|
|
348
|
+
const expr = this.parseValueExpr();
|
|
349
|
+
return { kind: "field", name: navKey(expr) ?? "", expr, lift };
|
|
327
350
|
}
|
|
328
351
|
|
|
329
352
|
// ---- order by -------------------------------------------------------------
|
|
@@ -433,7 +456,10 @@ class Parser {
|
|
|
433
456
|
|
|
434
457
|
private parseSubquery(): { sub: Subquery; distinct: boolean } {
|
|
435
458
|
const body = this.parseBody(true);
|
|
436
|
-
return {
|
|
459
|
+
return {
|
|
460
|
+
sub: { from: body.froms, where: body.where, select: body.select, orderBy: body.orderBy, follow: body.follow, values: body.values },
|
|
461
|
+
distinct: body.distinct,
|
|
462
|
+
};
|
|
437
463
|
}
|
|
438
464
|
|
|
439
465
|
// ---- expression Pratt parser ----------------------------------------------
|
|
@@ -587,3 +613,14 @@ class Parser {
|
|
|
587
613
|
this.fail(`unexpected ${this.tokDesc()} — expected a value`);
|
|
588
614
|
}
|
|
589
615
|
}
|
|
616
|
+
|
|
617
|
+
// The default key of an unaliased projection item: the last segment of a bare /
|
|
618
|
+
// dotted / outer navigation (`name`, `meta.slug` → "slug", `^name`), else null.
|
|
619
|
+
function navKey(e: Expr): string | null {
|
|
620
|
+
switch (e.kind) {
|
|
621
|
+
case "ident": return e.name;
|
|
622
|
+
case "outer": return e.name;
|
|
623
|
+
case "member": return e.name;
|
|
624
|
+
default: return null;
|
|
625
|
+
}
|
|
626
|
+
}
|
package/src/plan.ts
CHANGED
|
@@ -12,7 +12,9 @@
|
|
|
12
12
|
// Because a bare identifier resolves against the current row ONLY (it never
|
|
13
13
|
// climbs to an enclosing scope or a named root), an `ident` in a top-level
|
|
14
14
|
// `where` is unambiguously a column of the scanned rows and is safe to push. An
|
|
15
|
-
// `outer` (`^name`) reference is not a row column and stays residual
|
|
15
|
+
// `outer` (`^name`) reference is not a row column and stays residual, and so is
|
|
16
|
+
// the `$value` intrinsic (the row itself, not one of its columns) — adapters
|
|
17
|
+
// gate idents on their known column set, which never includes it.
|
|
16
18
|
|
|
17
19
|
import type { Query, Where, Expr } from "./ast.ts";
|
|
18
20
|
|