@quereus/quereus 4.9.0 → 4.10.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/dist/src/core/database.d.ts.map +1 -1
- package/dist/src/core/database.js +19 -4
- package/dist/src/core/database.js.map +1 -1
- package/dist/src/core/statement.d.ts.map +1 -1
- package/dist/src/core/statement.js +74 -15
- package/dist/src/core/statement.js.map +1 -1
- package/dist/src/func/builtins/aggregate.d.ts.map +1 -1
- package/dist/src/func/builtins/aggregate.js +85 -33
- package/dist/src/func/builtins/aggregate.js.map +1 -1
- package/dist/src/func/builtins/explain.d.ts.map +1 -1
- package/dist/src/func/builtins/explain.js +9 -2
- package/dist/src/func/builtins/explain.js.map +1 -1
- package/dist/src/func/builtins/scalar.d.ts.map +1 -1
- package/dist/src/func/builtins/scalar.js +4 -2
- package/dist/src/func/builtins/scalar.js.map +1 -1
- package/dist/src/func/registration.d.ts +6 -0
- package/dist/src/func/registration.d.ts.map +1 -1
- package/dist/src/func/registration.js +1 -0
- package/dist/src/func/registration.js.map +1 -1
- package/dist/src/index.d.ts +1 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +6 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/planner/nodes/scalar.d.ts.map +1 -1
- package/dist/src/planner/nodes/scalar.js +13 -1
- package/dist/src/planner/nodes/scalar.js.map +1 -1
- package/dist/src/runtime/emission-context.d.ts +14 -1
- package/dist/src/runtime/emission-context.d.ts.map +1 -1
- package/dist/src/runtime/emission-context.js +17 -5
- package/dist/src/runtime/emission-context.js.map +1 -1
- package/dist/src/runtime/emit/aggregate-setup.d.ts +44 -8
- package/dist/src/runtime/emit/aggregate-setup.d.ts.map +1 -1
- package/dist/src/runtime/emit/aggregate-setup.js +79 -15
- package/dist/src/runtime/emit/aggregate-setup.js.map +1 -1
- package/dist/src/runtime/emit/aggregate.d.ts.map +1 -1
- package/dist/src/runtime/emit/aggregate.js +21 -106
- package/dist/src/runtime/emit/aggregate.js.map +1 -1
- package/dist/src/runtime/emit/asof-scan.js +1 -1
- package/dist/src/runtime/emit/asof-scan.js.map +1 -1
- package/dist/src/runtime/emit/between.d.ts +2 -0
- package/dist/src/runtime/emit/between.d.ts.map +1 -1
- package/dist/src/runtime/emit/between.js +7 -8
- package/dist/src/runtime/emit/between.js.map +1 -1
- package/dist/src/runtime/emit/binary.d.ts +27 -5
- package/dist/src/runtime/emit/binary.d.ts.map +1 -1
- package/dist/src/runtime/emit/binary.js +266 -177
- package/dist/src/runtime/emit/binary.js.map +1 -1
- package/dist/src/runtime/emit/case.d.ts +34 -0
- package/dist/src/runtime/emit/case.d.ts.map +1 -1
- package/dist/src/runtime/emit/case.js +18 -11
- package/dist/src/runtime/emit/case.js.map +1 -1
- package/dist/src/runtime/emit/cast.d.ts +2 -0
- package/dist/src/runtime/emit/cast.d.ts.map +1 -1
- package/dist/src/runtime/emit/cast.js +7 -5
- package/dist/src/runtime/emit/cast.js.map +1 -1
- package/dist/src/runtime/emit/column-reference.d.ts +3 -1
- package/dist/src/runtime/emit/column-reference.d.ts.map +1 -1
- package/dist/src/runtime/emit/column-reference.js +6 -2
- package/dist/src/runtime/emit/column-reference.js.map +1 -1
- package/dist/src/runtime/emit/dml-executor.d.ts.map +1 -1
- package/dist/src/runtime/emit/dml-executor.js +21 -0
- package/dist/src/runtime/emit/dml-executor.js.map +1 -1
- package/dist/src/runtime/emit/filter.d.ts +1 -1
- package/dist/src/runtime/emit/filter.js +1 -1
- package/dist/src/runtime/emit/hash-aggregate.d.ts.map +1 -1
- package/dist/src/runtime/emit/hash-aggregate.js +18 -88
- package/dist/src/runtime/emit/hash-aggregate.js.map +1 -1
- package/dist/src/runtime/emit/literal.d.ts +14 -1
- package/dist/src/runtime/emit/literal.d.ts.map +1 -1
- package/dist/src/runtime/emit/literal.js +33 -7
- package/dist/src/runtime/emit/literal.js.map +1 -1
- package/dist/src/runtime/emit/materialized-view-helpers.d.ts +7 -1
- package/dist/src/runtime/emit/materialized-view-helpers.d.ts.map +1 -1
- package/dist/src/runtime/emit/materialized-view-helpers.js +121 -32
- package/dist/src/runtime/emit/materialized-view-helpers.js.map +1 -1
- package/dist/src/runtime/emit/parameter.d.ts +3 -1
- package/dist/src/runtime/emit/parameter.d.ts.map +1 -1
- package/dist/src/runtime/emit/parameter.js +7 -2
- package/dist/src/runtime/emit/parameter.js.map +1 -1
- package/dist/src/runtime/emit/scalar-function.d.ts +29 -1
- package/dist/src/runtime/emit/scalar-function.d.ts.map +1 -1
- package/dist/src/runtime/emit/scalar-function.js +66 -16
- package/dist/src/runtime/emit/scalar-function.js.map +1 -1
- package/dist/src/runtime/emit/scalar-op.d.ts +63 -0
- package/dist/src/runtime/emit/scalar-op.d.ts.map +1 -0
- package/dist/src/runtime/emit/scalar-op.js +37 -0
- package/dist/src/runtime/emit/scalar-op.js.map +1 -0
- package/dist/src/runtime/emit/scan.d.ts.map +1 -1
- package/dist/src/runtime/emit/scan.js +19 -1
- package/dist/src/runtime/emit/scan.js.map +1 -1
- package/dist/src/runtime/emit/temporal-arithmetic.d.ts +18 -8
- package/dist/src/runtime/emit/temporal-arithmetic.d.ts.map +1 -1
- package/dist/src/runtime/emit/temporal-arithmetic.js +29 -311
- package/dist/src/runtime/emit/temporal-arithmetic.js.map +1 -1
- package/dist/src/runtime/emit/unary.d.ts +2 -0
- package/dist/src/runtime/emit/unary.d.ts.map +1 -1
- package/dist/src/runtime/emit/unary.js +125 -53
- package/dist/src/runtime/emit/unary.js.map +1 -1
- package/dist/src/runtime/emitters.d.ts +22 -0
- package/dist/src/runtime/emitters.d.ts.map +1 -1
- package/dist/src/runtime/emitters.js +29 -0
- package/dist/src/runtime/emitters.js.map +1 -1
- package/dist/src/runtime/scalar-fusion.d.ts +47 -0
- package/dist/src/runtime/scalar-fusion.d.ts.map +1 -0
- package/dist/src/runtime/scalar-fusion.js +275 -0
- package/dist/src/runtime/scalar-fusion.js.map +1 -0
- package/dist/src/runtime/strict-flags.d.ts +9 -0
- package/dist/src/runtime/strict-flags.d.ts.map +1 -1
- package/dist/src/runtime/strict-flags.js +9 -0
- package/dist/src/runtime/strict-flags.js.map +1 -1
- package/dist/src/runtime/strict-fork.js +2 -2
- package/dist/src/runtime/strict-fork.js.map +1 -1
- package/dist/src/runtime/strict-representation.d.ts +78 -0
- package/dist/src/runtime/strict-representation.d.ts.map +1 -0
- package/dist/src/runtime/strict-representation.js +159 -0
- package/dist/src/runtime/strict-representation.js.map +1 -0
- package/dist/src/schema/function.d.ts +15 -0
- package/dist/src/schema/function.d.ts.map +1 -1
- package/dist/src/schema/function.js.map +1 -1
- package/dist/src/types/builtin-types.d.ts.map +1 -1
- package/dist/src/types/builtin-types.js +17 -8
- package/dist/src/types/builtin-types.js.map +1 -1
- package/dist/src/types/temporal-ops.d.ts +119 -0
- package/dist/src/types/temporal-ops.d.ts.map +1 -0
- package/dist/src/types/temporal-ops.js +348 -0
- package/dist/src/types/temporal-ops.js.map +1 -0
- package/dist/src/types/temporal-types.d.ts.map +1 -1
- package/dist/src/types/temporal-types.js +8 -3
- package/dist/src/types/temporal-types.js.map +1 -1
- package/dist/src/util/coercion.d.ts +22 -7
- package/dist/src/util/coercion.d.ts.map +1 -1
- package/dist/src/util/coercion.js +28 -15
- package/dist/src/util/coercion.js.map +1 -1
- package/dist/src/util/comparison.d.ts +25 -0
- package/dist/src/util/comparison.d.ts.map +1 -1
- package/dist/src/util/comparison.js +25 -0
- package/dist/src/util/comparison.js.map +1 -1
- package/dist/src/util/key-tuple-codec.d.ts +12 -3
- package/dist/src/util/key-tuple-codec.d.ts.map +1 -1
- package/dist/src/util/key-tuple-codec.js.map +1 -1
- package/dist/src/util/numeric-canonical.d.ts +26 -0
- package/dist/src/util/numeric-canonical.d.ts.map +1 -0
- package/dist/src/util/numeric-canonical.js +66 -0
- package/dist/src/util/numeric-canonical.js.map +1 -0
- package/dist/src/vtab/module.d.ts +25 -0
- package/dist/src/vtab/module.d.ts.map +1 -1
- package/package.json +4 -3
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import type { ScalarPlanNode } from '../../planner/nodes/plan-node.js';
|
|
2
|
-
import type { AggregateArgBinding,
|
|
3
|
-
import { type SqlValue } from '../../common/types.js';
|
|
2
|
+
import type { AggregateArgBinding, AggregateFunctionSchema } from '../../schema/function.js';
|
|
3
|
+
import { type SqlValue, type MaybePromise } from '../../common/types.js';
|
|
4
4
|
import type { EmissionContext } from '../emission-context.js';
|
|
5
|
+
import type { Instruction, RuntimeContext } from '../types.js';
|
|
5
6
|
/**
|
|
6
7
|
* Emit-time setup shared by the stream and hash aggregate emitters: both walk the
|
|
7
8
|
* same `{ expression, alias }` aggregate list and need the same per-aggregate
|
|
@@ -32,18 +33,53 @@ export declare function argComparisonContext(arg: ScalarPlanNode, ctx: EmissionC
|
|
|
32
33
|
* {@link import('../../schema/function.js').AggregateFunctionSchema.bindArgs}) steps
|
|
33
34
|
* and merges by the argument's semantic order. Nothing in the per-row path then has
|
|
34
35
|
* to resolve a type or a collation.
|
|
36
|
+
*
|
|
37
|
+
* The returned `schemas` are already narrowed to {@link AggregateFunctionSchema} (the
|
|
38
|
+
* `isAggregateFunctionSchema` check above throws INTERNAL on mismatch) and `argCounts`
|
|
39
|
+
* captures each call site's argument count — row loops need neither an
|
|
40
|
+
* `instanceof AggregateFunctionCallNode` re-check nor a `isAggregateFunctionSchema`
|
|
41
|
+
* re-check to use `stepFunction` / `finalizeFunction` or to size their argument loop.
|
|
35
42
|
*/
|
|
36
43
|
export declare function bindAggregateSchemas(aggregates: readonly AggregateExpr[], ctx: EmissionContext): {
|
|
37
|
-
schemas:
|
|
44
|
+
schemas: AggregateFunctionSchema[];
|
|
38
45
|
distinctFlags: boolean[];
|
|
46
|
+
argCounts: number[];
|
|
39
47
|
};
|
|
48
|
+
/**
|
|
49
|
+
* Emit one call instruction per aggregate argument, flattened across the aggregate list
|
|
50
|
+
* in declaration order — the order both emitters' row loops slice back out of
|
|
51
|
+
* `groupByAndAggregateArgs` using `argCounts` from {@link bindAggregateSchemas}.
|
|
52
|
+
*/
|
|
53
|
+
export declare function emitAggregateArgInstructions(aggregates: readonly AggregateExpr[], ctx: EmissionContext): Instruction[];
|
|
40
54
|
/** Pre-resolved typed comparators for DISTINCT aggregate argument tracking. */
|
|
41
55
|
export declare function buildDistinctComparators(aggregates: readonly AggregateExpr[], ctx: EmissionContext): DistinctComparator[];
|
|
42
56
|
/**
|
|
43
|
-
* Per-aggregate
|
|
44
|
-
*
|
|
45
|
-
*
|
|
46
|
-
*
|
|
57
|
+
* Per-aggregate value transform, replacing a per-row `coerceForAggregate(value,
|
|
58
|
+
* functionName)` call with a decision made once at emit time. `undefined` means the call
|
|
59
|
+
* site never coerces — the aggregate ignores coercion (COUNT, GROUP_CONCAT, JSON_*, per
|
|
60
|
+
* {@link aggregateCoercesArguments}), every argument is already numeric, or every
|
|
61
|
+
* argument type carries semantic ordering (TIMESPAN/JSON) where the numeric-string
|
|
62
|
+
* conversion must never run ahead of a type-aware comparator. Otherwise the transform is
|
|
63
|
+
* {@link coerceAggregateValue} — the same function `coerceForAggregate` calls once its
|
|
64
|
+
* own routing agrees, so the two paths cannot drift.
|
|
65
|
+
*/
|
|
66
|
+
export declare function computeAggregateValueTransforms(aggregates: readonly AggregateExpr[]): Array<((value: SqlValue) => SqlValue) | undefined>;
|
|
67
|
+
/** One argument/key evaluator: a scalar sub-program bound to a row context. */
|
|
68
|
+
type ValueEvaluator = (ctx: RuntimeContext) => MaybePromise<SqlValue>;
|
|
69
|
+
/**
|
|
70
|
+
* Evaluate N argument-evaluator closures against the same row context, applying an
|
|
71
|
+
* optional per-value transform, without paying a microtask hop when every closure
|
|
72
|
+
* resolves synchronously (the common case — see `resolveMaybe`, runtime/async-util.ts).
|
|
73
|
+
* Shared by the stream/hash aggregate step loops (grouped and ungrouped) and by GROUP BY
|
|
74
|
+
* key evaluation.
|
|
75
|
+
*
|
|
76
|
+
* Evaluation stays strictly sequential: each closure runs only after the previous one
|
|
77
|
+
* has settled. Sibling scalar sub-programs share one {@link RuntimeContext} — row slots,
|
|
78
|
+
* scan connections and the once-per-execution memo all live on it — and the only
|
|
79
|
+
* supported way to run sub-programs concurrently is against forked contexts
|
|
80
|
+
* (`ParallelDriver.fork`, runtime/parallel-driver.ts). So this must not start argument
|
|
81
|
+
* `j+1` while `j` is still pending; the saving here is the microtask hop, not overlap.
|
|
47
82
|
*/
|
|
48
|
-
export declare function
|
|
83
|
+
export declare function evalArgsSync(rctx: RuntimeContext, fns: readonly ValueEvaluator[], transform?: (value: SqlValue) => SqlValue): MaybePromise<SqlValue[]>;
|
|
84
|
+
export {};
|
|
49
85
|
//# sourceMappingURL=aggregate-setup.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aggregate-setup.d.ts","sourceRoot":"","sources":["../../../../src/runtime/emit/aggregate-setup.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,KAAK,EAAE,mBAAmB,EAAE,
|
|
1
|
+
{"version":3,"file":"aggregate-setup.d.ts","sourceRoot":"","sources":["../../../../src/runtime/emit/aggregate-setup.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,KAAK,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAK7F,OAAO,EAAc,KAAK,QAAQ,EAAE,KAAK,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAIrF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE/D;;;;;;;;GAQG;AAEH,qEAAqE;AACrE,MAAM,MAAM,aAAa,GAAG;IAAE,QAAQ,CAAC,UAAU,EAAE,cAAc,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAE5F;2EAC2E;AAC3E,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,EAAE,QAAQ,GAAG,QAAQ,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,QAAQ,EAAE,KAAK,MAAM,CAAC;AAEhG;;;;;kEAKkE;AAClE,wBAAgB,oBAAoB,CACnC,GAAG,EAAE,cAAc,EACnB,GAAG,EAAE,eAAe,GAClB,QAAQ,CAAC,IAAI,CAAC,mBAAmB,EAAE,aAAa,CAAC,CAAC,GAAG,mBAAmB,CAM1E;AAmBD;;;;;;;;;;;;GAYG;AACH,wBAAgB,oBAAoB,CACnC,UAAU,EAAE,SAAS,aAAa,EAAE,EACpC,GAAG,EAAE,eAAe,GAClB;IAAE,OAAO,EAAE,uBAAuB,EAAE,CAAC;IAAC,aAAa,EAAE,OAAO,EAAE,CAAC;IAAC,SAAS,EAAE,MAAM,EAAE,CAAA;CAAE,CAmBvF;AAED;;;;GAIG;AACH,wBAAgB,4BAA4B,CAC3C,UAAU,EAAE,SAAS,aAAa,EAAE,EACpC,GAAG,EAAE,eAAe,GAClB,WAAW,EAAE,CAef;AAED,+EAA+E;AAC/E,wBAAgB,wBAAwB,CACvC,UAAU,EAAE,SAAS,aAAa,EAAE,EACpC,GAAG,EAAE,eAAe,GAClB,kBAAkB,EAAE,CAqBtB;AAED;;;;;;;;;GASG;AACH,wBAAgB,+BAA+B,CAC9C,UAAU,EAAE,SAAS,aAAa,EAAE,GAClC,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,QAAQ,KAAK,QAAQ,CAAC,GAAG,SAAS,CAAC,CAWpD;AAED,+EAA+E;AAC/E,KAAK,cAAc,GAAG,CAAC,GAAG,EAAE,cAAc,KAAK,YAAY,CAAC,QAAQ,CAAC,CAAC;AAEtE;;;;;;;;;;;;;GAaG;AACH,wBAAgB,YAAY,CAC3B,IAAI,EAAE,cAAc,EACpB,GAAG,EAAE,SAAS,cAAc,EAAE,EAC9B,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,QAAQ,GACvC,YAAY,CAAC,QAAQ,EAAE,CAAC,CAQ1B"}
|
|
@@ -4,6 +4,8 @@ import { bindAggregateSchema } from '../../func/registration.js';
|
|
|
4
4
|
import { createTypedComparator, hasSemanticOrdering } from '../../util/comparison.js';
|
|
5
5
|
import { StatusCode } from '../../common/types.js';
|
|
6
6
|
import { quereusError } from '../../common/errors.js';
|
|
7
|
+
import { aggregateCoercesArguments, coerceAggregateValue } from '../../util/coercion.js';
|
|
8
|
+
import { emitCallFromPlan } from '../emitters.js';
|
|
7
9
|
/** The declared logical type and resolved collation of one aggregate or window
|
|
8
10
|
* argument at this call site — the comparison context `bindArgs` (aggregate and
|
|
9
11
|
* window alike) and DISTINCT tracking all rank under. A missing collation name
|
|
@@ -35,20 +37,47 @@ function requireAggregateCall(agg) {
|
|
|
35
37
|
* {@link import('../../schema/function.js').AggregateFunctionSchema.bindArgs}) steps
|
|
36
38
|
* and merges by the argument's semantic order. Nothing in the per-row path then has
|
|
37
39
|
* to resolve a type or a collation.
|
|
40
|
+
*
|
|
41
|
+
* The returned `schemas` are already narrowed to {@link AggregateFunctionSchema} (the
|
|
42
|
+
* `isAggregateFunctionSchema` check above throws INTERNAL on mismatch) and `argCounts`
|
|
43
|
+
* captures each call site's argument count — row loops need neither an
|
|
44
|
+
* `instanceof AggregateFunctionCallNode` re-check nor a `isAggregateFunctionSchema`
|
|
45
|
+
* re-check to use `stepFunction` / `finalizeFunction` or to size their argument loop.
|
|
38
46
|
*/
|
|
39
47
|
export function bindAggregateSchemas(aggregates, ctx) {
|
|
40
48
|
const schemas = [];
|
|
41
49
|
const distinctFlags = [];
|
|
50
|
+
const argCounts = [];
|
|
42
51
|
for (const agg of aggregates) {
|
|
43
52
|
const funcNode = requireAggregateCall(agg);
|
|
44
53
|
const funcSchema = funcNode.functionSchema;
|
|
45
54
|
if (!isAggregateFunctionSchema(funcSchema)) {
|
|
46
55
|
quereusError(`Function ${funcNode.functionName || 'unknown'} is not an aggregate function`, StatusCode.INTERNAL);
|
|
47
56
|
}
|
|
48
|
-
|
|
57
|
+
const args = funcNode.args || [];
|
|
58
|
+
schemas.push(bindAggregateSchema(funcSchema, args.map(arg => argComparisonContext(arg, ctx))));
|
|
49
59
|
distinctFlags.push(funcNode.isDistinct);
|
|
60
|
+
argCounts.push(args.length);
|
|
61
|
+
}
|
|
62
|
+
return { schemas, distinctFlags, argCounts };
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Emit one call instruction per aggregate argument, flattened across the aggregate list
|
|
66
|
+
* in declaration order — the order both emitters' row loops slice back out of
|
|
67
|
+
* `groupByAndAggregateArgs` using `argCounts` from {@link bindAggregateSchemas}.
|
|
68
|
+
*/
|
|
69
|
+
export function emitAggregateArgInstructions(aggregates, ctx) {
|
|
70
|
+
const instructions = [];
|
|
71
|
+
for (const agg of aggregates) {
|
|
72
|
+
const funcNode = requireAggregateCall(agg);
|
|
73
|
+
for (const arg of funcNode.args || []) {
|
|
74
|
+
if (!arg) {
|
|
75
|
+
quereusError(`Aggregate argument is undefined for function ${funcNode.functionName}`, StatusCode.INTERNAL);
|
|
76
|
+
}
|
|
77
|
+
instructions.push(emitCallFromPlan(arg, ctx));
|
|
78
|
+
}
|
|
50
79
|
}
|
|
51
|
-
return
|
|
80
|
+
return instructions;
|
|
52
81
|
}
|
|
53
82
|
/** Pre-resolved typed comparators for DISTINCT aggregate argument tracking. */
|
|
54
83
|
export function buildDistinctComparators(aggregates, ctx) {
|
|
@@ -77,23 +106,58 @@ export function buildDistinctComparators(aggregates, ctx) {
|
|
|
77
106
|
});
|
|
78
107
|
}
|
|
79
108
|
/**
|
|
80
|
-
* Per-aggregate
|
|
81
|
-
*
|
|
82
|
-
*
|
|
83
|
-
*
|
|
109
|
+
* Per-aggregate value transform, replacing a per-row `coerceForAggregate(value,
|
|
110
|
+
* functionName)` call with a decision made once at emit time. `undefined` means the call
|
|
111
|
+
* site never coerces — the aggregate ignores coercion (COUNT, GROUP_CONCAT, JSON_*, per
|
|
112
|
+
* {@link aggregateCoercesArguments}), every argument is already numeric, or every
|
|
113
|
+
* argument type carries semantic ordering (TIMESPAN/JSON) where the numeric-string
|
|
114
|
+
* conversion must never run ahead of a type-aware comparator. Otherwise the transform is
|
|
115
|
+
* {@link coerceAggregateValue} — the same function `coerceForAggregate` calls once its
|
|
116
|
+
* own routing agrees, so the two paths cannot drift.
|
|
84
117
|
*/
|
|
85
|
-
export function
|
|
118
|
+
export function computeAggregateValueTransforms(aggregates) {
|
|
86
119
|
return aggregates.map(agg => {
|
|
87
|
-
const funcNode = agg
|
|
88
|
-
if (!(funcNode
|
|
89
|
-
return
|
|
90
|
-
const funcName = (funcNode.functionName || '').toUpperCase();
|
|
91
|
-
// COUNT, GROUP_CONCAT and JSON_* never coerce their arguments.
|
|
92
|
-
if (funcName === 'COUNT' || funcName === 'GROUP_CONCAT' || funcName.startsWith('JSON_'))
|
|
93
|
-
return false;
|
|
120
|
+
const funcNode = requireAggregateCall(agg);
|
|
121
|
+
if (!aggregateCoercesArguments(funcNode.functionName || ''))
|
|
122
|
+
return undefined;
|
|
94
123
|
const args = funcNode.args || [];
|
|
95
|
-
|
|
124
|
+
const skip = args.length > 0 && (args.every(arg => arg.getType().logicalType.isNumeric)
|
|
96
125
|
|| args.every(arg => hasSemanticOrdering(arg.getType().logicalType)));
|
|
126
|
+
return skip ? undefined : coerceAggregateValue;
|
|
97
127
|
});
|
|
98
128
|
}
|
|
129
|
+
/**
|
|
130
|
+
* Evaluate N argument-evaluator closures against the same row context, applying an
|
|
131
|
+
* optional per-value transform, without paying a microtask hop when every closure
|
|
132
|
+
* resolves synchronously (the common case — see `resolveMaybe`, runtime/async-util.ts).
|
|
133
|
+
* Shared by the stream/hash aggregate step loops (grouped and ungrouped) and by GROUP BY
|
|
134
|
+
* key evaluation.
|
|
135
|
+
*
|
|
136
|
+
* Evaluation stays strictly sequential: each closure runs only after the previous one
|
|
137
|
+
* has settled. Sibling scalar sub-programs share one {@link RuntimeContext} — row slots,
|
|
138
|
+
* scan connections and the once-per-execution memo all live on it — and the only
|
|
139
|
+
* supported way to run sub-programs concurrently is against forked contexts
|
|
140
|
+
* (`ParallelDriver.fork`, runtime/parallel-driver.ts). So this must not start argument
|
|
141
|
+
* `j+1` while `j` is still pending; the saving here is the microtask hop, not overlap.
|
|
142
|
+
*/
|
|
143
|
+
export function evalArgsSync(rctx, fns, transform) {
|
|
144
|
+
const results = new Array(fns.length);
|
|
145
|
+
for (let j = 0; j < fns.length; j++) {
|
|
146
|
+
const raw = fns[j](rctx);
|
|
147
|
+
if (raw instanceof Promise)
|
|
148
|
+
return evalArgsFrom(rctx, fns, transform, results, j, raw);
|
|
149
|
+
results[j] = transform ? transform(raw) : raw;
|
|
150
|
+
}
|
|
151
|
+
return results;
|
|
152
|
+
}
|
|
153
|
+
/** Async tail of {@link evalArgsSync}: awaits the first pending argument, then the rest in order. */
|
|
154
|
+
async function evalArgsFrom(rctx, fns, transform, results, pendingIndex, pending) {
|
|
155
|
+
const first = await pending;
|
|
156
|
+
results[pendingIndex] = transform ? transform(first) : first;
|
|
157
|
+
for (let j = pendingIndex + 1; j < fns.length; j++) {
|
|
158
|
+
const raw = await fns[j](rctx);
|
|
159
|
+
results[j] = transform ? transform(raw) : raw;
|
|
160
|
+
}
|
|
161
|
+
return results;
|
|
162
|
+
}
|
|
99
163
|
//# sourceMappingURL=aggregate-setup.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aggregate-setup.js","sourceRoot":"","sources":["../../../../src/runtime/emit/aggregate-setup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,2CAA2C,CAAC;AAGtF,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAEtF,OAAO,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"aggregate-setup.js","sourceRoot":"","sources":["../../../../src/runtime/emit/aggregate-setup.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aggregate.d.ts","sourceRoot":"","sources":["../../../../src/runtime/emit/aggregate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yCAAyC,CAAC;AACnF,OAAO,KAAK,EAAE,WAAW,EAAkB,MAAM,aAAa,CAAC;AAI/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"aggregate.d.ts","sourceRoot":"","sources":["../../../../src/runtime/emit/aggregate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yCAAyC,CAAC;AACnF,OAAO,KAAK,EAAE,WAAW,EAAkB,MAAM,aAAa,CAAC;AAI/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,QAAQ,EAAiB,MAAM,kCAAkC,CAAC;AAUhF,OAAO,EAAY,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAGzE,eAAO,MAAM,MAAM,0BAAkC,CAAC;AAMtD,OAAO,EAAE,iBAAiB,EAAE,CAAC;AAE7B;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,QAAQ,GAAG,QAAQ,CAgB3D;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,mBAAmB,EAAE,GAAG,EAAE,eAAe,GAAG,WAAW,CAkXhG"}
|
|
@@ -1,16 +1,11 @@
|
|
|
1
1
|
import { asRun } from '../types.js';
|
|
2
2
|
import { emitPlanNode, emitCallFromPlan } from '../emitters.js';
|
|
3
|
-
import { isAggregateFunctionSchema } from '../../schema/function.js';
|
|
4
|
-
import { AggregateFunctionCallNode } from '../../planner/nodes/aggregate-function.js';
|
|
5
3
|
import { isRelationalNode } from '../../planner/nodes/plan-node.js';
|
|
6
4
|
import { createTypedComparator } from '../../util/comparison.js';
|
|
7
|
-
import { bindAggregateSchemas, buildDistinctComparators,
|
|
5
|
+
import { bindAggregateSchemas, buildDistinctComparators, computeAggregateValueTransforms, emitAggregateArgInstructions, evalArgsSync } from './aggregate-setup.js';
|
|
8
6
|
import { createValueSet } from '../../util/value-set.js';
|
|
9
7
|
import { createLogger } from '../../common/logger.js';
|
|
10
8
|
import { logContextPush, logContextPop } from '../utils.js';
|
|
11
|
-
import { coerceForAggregate } from '../../util/coercion.js';
|
|
12
|
-
import { quereusError } from '../../common/errors.js';
|
|
13
|
-
import { StatusCode } from '../../common/types.js';
|
|
14
9
|
import { buildRowDescriptor } from '../../util/row-descriptor.js';
|
|
15
10
|
import { cloneInitialValue } from '../../func/registration.js';
|
|
16
11
|
export const ctxLog = createLogger('runtime:context');
|
|
@@ -89,8 +84,8 @@ export function emitStreamAggregate(plan, ctx) {
|
|
|
89
84
|
return 0;
|
|
90
85
|
}
|
|
91
86
|
const distinctComparators = buildDistinctComparators(plan.aggregates, ctx);
|
|
92
|
-
const
|
|
93
|
-
const { schemas: aggregateSchemas, distinctFlags: aggregateDistinctFlags } = bindAggregateSchemas(plan.aggregates, ctx);
|
|
87
|
+
const aggregateValueTransforms = computeAggregateValueTransforms(plan.aggregates);
|
|
88
|
+
const { schemas: aggregateSchemas, distinctFlags: aggregateDistinctFlags, argCounts: aggregateArgCounts } = bindAggregateSchemas(plan.aggregates, ctx);
|
|
94
89
|
async function* run(ctx, sourceRows, ...groupByAndAggregateArgs) {
|
|
95
90
|
// Split the arguments: first N are GROUP BY expressions, rest are aggregate args
|
|
96
91
|
const numGroupBy = plan.groupBy.length;
|
|
@@ -98,22 +93,14 @@ export function emitStreamAggregate(plan, ctx) {
|
|
|
98
93
|
// For aggregate arguments, we need to properly index them based on each aggregate's argument count
|
|
99
94
|
let aggregateArgOffset = numGroupBy;
|
|
100
95
|
const aggregateArgFunctions = [];
|
|
101
|
-
for (const
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
quereusError(`Expected AggregateFunctionCallNode but got ${funcNode.constructor.name}`, StatusCode.INTERNAL);
|
|
105
|
-
}
|
|
106
|
-
const args = funcNode.args || [];
|
|
107
|
-
const aggregateArgs = groupByAndAggregateArgs.slice(aggregateArgOffset, aggregateArgOffset + args.length);
|
|
108
|
-
aggregateArgFunctions.push(aggregateArgs);
|
|
109
|
-
aggregateArgOffset += args.length;
|
|
96
|
+
for (const argCount of aggregateArgCounts) {
|
|
97
|
+
aggregateArgFunctions.push(groupByAndAggregateArgs.slice(aggregateArgOffset, aggregateArgOffset + argCount));
|
|
98
|
+
aggregateArgOffset += argCount;
|
|
110
99
|
}
|
|
111
100
|
// Handle the case with no GROUP BY - aggregate everything into a single group
|
|
112
101
|
if (plan.groupBy.length === 0) {
|
|
113
102
|
// Initialize accumulators for each aggregate
|
|
114
|
-
const accumulators = aggregateSchemas.map(schema =>
|
|
115
|
-
return cloneInitialValue(isAggregateFunctionSchema(schema) ? schema.initialValue : undefined);
|
|
116
|
-
});
|
|
103
|
+
const accumulators = aggregateSchemas.map(schema => cloneInitialValue(schema.initialValue));
|
|
117
104
|
// For DISTINCT aggregates, track unique values using BTree with pre-resolved typed comparators
|
|
118
105
|
const distinctTrees = aggregateDistinctFlags.map((isDistinct, i) => isDistinct ? createValueSet(distinctComparators[i]) : null);
|
|
119
106
|
// Track the last source row for representative row in combined descriptor
|
|
@@ -127,22 +114,10 @@ export function emitStreamAggregate(plan, ctx) {
|
|
|
127
114
|
try {
|
|
128
115
|
// For each aggregate, call its step function
|
|
129
116
|
for (let i = 0; i < plan.aggregates.length; i++) {
|
|
130
|
-
const schema = aggregateSchemas[i];
|
|
131
117
|
const isDistinct = aggregateDistinctFlags[i];
|
|
132
118
|
// Evaluate the aggregate arguments in the context of the current row
|
|
133
|
-
const
|
|
134
|
-
const
|
|
135
|
-
if (!(funcNode instanceof AggregateFunctionCallNode)) {
|
|
136
|
-
quereusError(`Expected AggregateFunctionCallNode but got ${funcNode.constructor.name}`, StatusCode.INTERNAL);
|
|
137
|
-
}
|
|
138
|
-
const args = funcNode.args || [];
|
|
139
|
-
const argFunctions = aggregateArgFunctions[i];
|
|
140
|
-
const skipCoercion = aggregateSkipCoercion[i];
|
|
141
|
-
for (let j = 0; j < args.length; j++) {
|
|
142
|
-
const rawValue = await argFunctions[j](ctx);
|
|
143
|
-
const coercedValue = skipCoercion ? rawValue : coerceForAggregate(rawValue, funcNode.functionName || 'unknown');
|
|
144
|
-
argValues.push(coercedValue);
|
|
145
|
-
}
|
|
119
|
+
const argValuesMaybe = evalArgsSync(ctx, aggregateArgFunctions[i], aggregateValueTransforms[i]);
|
|
120
|
+
const argValues = argValuesMaybe instanceof Promise ? await argValuesMaybe : argValuesMaybe;
|
|
146
121
|
// Handle DISTINCT logic using BTree for proper SQL value comparison
|
|
147
122
|
if (isDistinct) {
|
|
148
123
|
const distinctValue = argValues.length === 1 ? argValues[0] : argValues;
|
|
@@ -153,9 +128,7 @@ export function emitStreamAggregate(plan, ctx) {
|
|
|
153
128
|
}
|
|
154
129
|
}
|
|
155
130
|
// Call the step function
|
|
156
|
-
|
|
157
|
-
accumulators[i] = schema.stepFunction(accumulators[i], ...argValues);
|
|
158
|
-
}
|
|
131
|
+
accumulators[i] = aggregateSchemas[i].stepFunction(accumulators[i], ...argValues);
|
|
159
132
|
}
|
|
160
133
|
}
|
|
161
134
|
finally {
|
|
@@ -167,15 +140,7 @@ export function emitStreamAggregate(plan, ctx) {
|
|
|
167
140
|
// Finalize and yield the result
|
|
168
141
|
const aggregateRow = [];
|
|
169
142
|
for (let i = 0; i < plan.aggregates.length; i++) {
|
|
170
|
-
|
|
171
|
-
let finalValue;
|
|
172
|
-
if (isAggregateFunctionSchema(schema)) {
|
|
173
|
-
finalValue = schema.finalizeFunction(accumulators[i]);
|
|
174
|
-
}
|
|
175
|
-
else {
|
|
176
|
-
finalValue = accumulators[i];
|
|
177
|
-
}
|
|
178
|
-
aggregateRow.push(finalValue);
|
|
143
|
+
aggregateRow.push(aggregateSchemas[i].finalizeFunction(accumulators[i]));
|
|
179
144
|
}
|
|
180
145
|
// Build combined row with aggregate results + representative source row
|
|
181
146
|
const fullRow = lastSourceRow ? [...aggregateRow, ...lastSourceRow] : aggregateRow;
|
|
@@ -214,28 +179,14 @@ export function emitStreamAggregate(plan, ctx) {
|
|
|
214
179
|
logContextPush(scanRowDescriptor, 'scan-row', sourceAttributes);
|
|
215
180
|
try {
|
|
216
181
|
// Evaluate GROUP BY expressions to determine the group
|
|
217
|
-
const
|
|
218
|
-
|
|
219
|
-
groupValues.push(await groupByFunc(ctx));
|
|
220
|
-
}
|
|
182
|
+
const groupValuesMaybe = evalArgsSync(ctx, groupByFunctions);
|
|
183
|
+
const groupValues = groupValuesMaybe instanceof Promise ? await groupValuesMaybe : groupValuesMaybe;
|
|
221
184
|
// Evaluate aggregate function arguments BEFORE checking for group changes
|
|
222
185
|
// This ensures we have the values we need even if we're about to yield the previous group
|
|
223
186
|
const currentRowArgValues = [];
|
|
224
187
|
for (let i = 0; i < plan.aggregates.length; i++) {
|
|
225
|
-
const
|
|
226
|
-
|
|
227
|
-
quereusError(`Expected AggregateFunctionCallNode but got ${funcNode.constructor.name}`, StatusCode.INTERNAL);
|
|
228
|
-
}
|
|
229
|
-
const args = funcNode.args || [];
|
|
230
|
-
const argFunctions = aggregateArgFunctions[i];
|
|
231
|
-
const skipCoercion = aggregateSkipCoercion[i];
|
|
232
|
-
const argValues = [];
|
|
233
|
-
for (let j = 0; j < args.length; j++) {
|
|
234
|
-
const rawValue = await argFunctions[j](ctx);
|
|
235
|
-
const coercedValue = skipCoercion ? rawValue : coerceForAggregate(rawValue, funcNode.functionName || 'unknown');
|
|
236
|
-
argValues.push(coercedValue);
|
|
237
|
-
}
|
|
238
|
-
currentRowArgValues.push(argValues);
|
|
188
|
+
const argValuesMaybe = evalArgsSync(ctx, aggregateArgFunctions[i], aggregateValueTransforms[i]);
|
|
189
|
+
currentRowArgValues.push(argValuesMaybe instanceof Promise ? await argValuesMaybe : argValuesMaybe);
|
|
239
190
|
}
|
|
240
191
|
// Check if we've moved to a new group using proper SQL value comparison
|
|
241
192
|
if (currentGroupKey !== null && compareGroupKeys(currentGroupKey, groupValues) !== 0) {
|
|
@@ -247,15 +198,7 @@ export function emitStreamAggregate(plan, ctx) {
|
|
|
247
198
|
aggregateRow.push(...currentGroupValues);
|
|
248
199
|
// Then, add the finalized aggregate values
|
|
249
200
|
for (let i = 0; i < plan.aggregates.length; i++) {
|
|
250
|
-
|
|
251
|
-
let finalValue;
|
|
252
|
-
if (isAggregateFunctionSchema(schema)) {
|
|
253
|
-
finalValue = schema.finalizeFunction(currentAccumulators[i]);
|
|
254
|
-
}
|
|
255
|
-
else {
|
|
256
|
-
finalValue = currentAccumulators[i];
|
|
257
|
-
}
|
|
258
|
-
aggregateRow.push(finalValue);
|
|
201
|
+
aggregateRow.push(aggregateSchemas[i].finalizeFunction(currentAccumulators[i]));
|
|
259
202
|
}
|
|
260
203
|
// Build combined row with aggregate results + representative source row
|
|
261
204
|
const fullRow = previousGroupSourceRow ? [...aggregateRow, ...previousGroupSourceRow] : aggregateRow;
|
|
@@ -305,18 +248,14 @@ export function emitStreamAggregate(plan, ctx) {
|
|
|
305
248
|
cleanupPreviousGroupContext = null;
|
|
306
249
|
}
|
|
307
250
|
// Reset for new group
|
|
308
|
-
currentAccumulators = aggregateSchemas.map(schema =>
|
|
309
|
-
return cloneInitialValue(isAggregateFunctionSchema(schema) ? schema.initialValue : undefined);
|
|
310
|
-
});
|
|
251
|
+
currentAccumulators = aggregateSchemas.map(schema => cloneInitialValue(schema.initialValue));
|
|
311
252
|
currentDistinctTrees = aggregateDistinctFlags.map((isDistinct, i) => isDistinct ? createValueSet(distinctComparators[i]) : null);
|
|
312
253
|
// Set representative row for the new group (which is the current row)
|
|
313
254
|
currentSourceRow = row;
|
|
314
255
|
}
|
|
315
256
|
// Initialize if first group
|
|
316
257
|
if (currentGroupKey === null) {
|
|
317
|
-
currentAccumulators = aggregateSchemas.map(schema =>
|
|
318
|
-
return cloneInitialValue(isAggregateFunctionSchema(schema) ? schema.initialValue : undefined);
|
|
319
|
-
});
|
|
258
|
+
currentAccumulators = aggregateSchemas.map(schema => cloneInitialValue(schema.initialValue));
|
|
320
259
|
currentDistinctTrees = aggregateDistinctFlags.map((isDistinct, i) => isDistinct ? createValueSet(distinctComparators[i]) : null);
|
|
321
260
|
// Set representative row for the first group
|
|
322
261
|
currentSourceRow = row;
|
|
@@ -326,7 +265,6 @@ export function emitStreamAggregate(plan, ctx) {
|
|
|
326
265
|
currentGroupValues = groupValues;
|
|
327
266
|
// For each aggregate, call its step function using the pre-evaluated arguments
|
|
328
267
|
for (let i = 0; i < plan.aggregates.length; i++) {
|
|
329
|
-
const schema = aggregateSchemas[i];
|
|
330
268
|
const isDistinct = aggregateDistinctFlags[i];
|
|
331
269
|
const argValues = currentRowArgValues[i];
|
|
332
270
|
// Handle DISTINCT logic using BTree for proper SQL value comparison
|
|
@@ -339,9 +277,7 @@ export function emitStreamAggregate(plan, ctx) {
|
|
|
339
277
|
}
|
|
340
278
|
}
|
|
341
279
|
// Call the step function
|
|
342
|
-
|
|
343
|
-
currentAccumulators[i] = schema.stepFunction(currentAccumulators[i], ...argValues);
|
|
344
|
-
}
|
|
280
|
+
currentAccumulators[i] = aggregateSchemas[i].stepFunction(currentAccumulators[i], ...argValues);
|
|
345
281
|
}
|
|
346
282
|
}
|
|
347
283
|
finally {
|
|
@@ -357,15 +293,7 @@ export function emitStreamAggregate(plan, ctx) {
|
|
|
357
293
|
aggregateRow.push(...currentGroupValues);
|
|
358
294
|
// Then, add the finalized aggregate values
|
|
359
295
|
for (let i = 0; i < plan.aggregates.length; i++) {
|
|
360
|
-
|
|
361
|
-
let finalValue;
|
|
362
|
-
if (isAggregateFunctionSchema(schema)) {
|
|
363
|
-
finalValue = schema.finalizeFunction(currentAccumulators[i]);
|
|
364
|
-
}
|
|
365
|
-
else {
|
|
366
|
-
finalValue = currentAccumulators[i];
|
|
367
|
-
}
|
|
368
|
-
aggregateRow.push(finalValue);
|
|
296
|
+
aggregateRow.push(aggregateSchemas[i].finalizeFunction(currentAccumulators[i]));
|
|
369
297
|
}
|
|
370
298
|
// Build combined row with aggregate results + representative source row
|
|
371
299
|
const fullRow = currentSourceRow ? [...aggregateRow, ...currentSourceRow] : aggregateRow;
|
|
@@ -412,20 +340,7 @@ export function emitStreamAggregate(plan, ctx) {
|
|
|
412
340
|
// Emit GROUP BY expressions
|
|
413
341
|
const groupByInstructions = plan.groupBy.map(expr => emitCallFromPlan(expr, ctx));
|
|
414
342
|
// Emit aggregate argument expressions
|
|
415
|
-
const aggregateArgInstructions =
|
|
416
|
-
for (const agg of plan.aggregates) {
|
|
417
|
-
const funcNode = agg.expression;
|
|
418
|
-
if (!(funcNode instanceof AggregateFunctionCallNode)) {
|
|
419
|
-
quereusError(`Expected AggregateFunctionCallNode but got ${funcNode.constructor.name}`, StatusCode.INTERNAL);
|
|
420
|
-
}
|
|
421
|
-
const args = funcNode.args || [];
|
|
422
|
-
for (const arg of args) {
|
|
423
|
-
if (!arg) {
|
|
424
|
-
quereusError(`Aggregate argument is undefined for function ${funcNode.functionName}`, StatusCode.INTERNAL);
|
|
425
|
-
}
|
|
426
|
-
aggregateArgInstructions.push(emitCallFromPlan(arg, ctx));
|
|
427
|
-
}
|
|
428
|
-
}
|
|
343
|
+
const aggregateArgInstructions = emitAggregateArgInstructions(plan.aggregates, ctx);
|
|
429
344
|
return {
|
|
430
345
|
params: [sourceInstruction, ...groupByInstructions, ...aggregateArgInstructions],
|
|
431
346
|
run: asRun(run),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aggregate.js","sourceRoot":"","sources":["../../../../src/runtime/emit/aggregate.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"aggregate.js","sourceRoot":"","sources":["../../../../src/runtime/emit/aggregate.ts"],"names":[],"mappings":"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"}
|
|
@@ -34,7 +34,7 @@ function resolveSetup(plan, ctx) {
|
|
|
34
34
|
// semantic-ordering-aware. Correct for the canonical AS OF column types
|
|
35
35
|
// (DATE/DATETIME — canonical ISO text order IS their semantic order). A TIMESPAN
|
|
36
36
|
// or JSON match column would order by text here, disagreeing with `<`/ORDER BY.
|
|
37
|
-
// The equi-join rule (docs/types.md § "Semantic ordering": a physical key pair is
|
|
37
|
+
// The equi-join rule (docs/types-ordering.md § "Semantic ordering": a physical key pair is
|
|
38
38
|
// admissible only when both sides agree on semantic ordering, else it demotes to
|
|
39
39
|
// the residual) does NOT apply here — AS OF has no residual to demote into, so a
|
|
40
40
|
// declining gate would only make the query unplannable. Fixing this means
|