@quereus/quereus 4.10.0 → 4.12.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/common/type-inference.d.ts +12 -6
- package/dist/src/common/type-inference.d.ts.map +1 -1
- package/dist/src/common/type-inference.js +12 -24
- package/dist/src/common/type-inference.js.map +1 -1
- package/dist/src/core/database-assertions.d.ts.map +1 -1
- package/dist/src/core/database-assertions.js +7 -5
- package/dist/src/core/database-assertions.js.map +1 -1
- package/dist/src/core/database-events.d.ts +4 -3
- package/dist/src/core/database-events.d.ts.map +1 -1
- package/dist/src/core/database-events.js +4 -3
- package/dist/src/core/database-events.js.map +1 -1
- package/dist/src/core/database-materialized-views-analysis.d.ts +1 -3
- package/dist/src/core/database-materialized-views-analysis.d.ts.map +1 -1
- package/dist/src/core/database-materialized-views-analysis.js +1 -11
- package/dist/src/core/database-materialized-views-analysis.js.map +1 -1
- package/dist/src/core/database-materialized-views-plan-builders.d.ts.map +1 -1
- package/dist/src/core/database-materialized-views-plan-builders.js +12 -10
- package/dist/src/core/database-materialized-views-plan-builders.js.map +1 -1
- package/dist/src/core/database.d.ts.map +1 -1
- package/dist/src/core/database.js +13 -2
- package/dist/src/core/database.js.map +1 -1
- package/dist/src/core/derived-row-validator.d.ts.map +1 -1
- package/dist/src/core/derived-row-validator.js +14 -2
- package/dist/src/core/derived-row-validator.js.map +1 -1
- package/dist/src/core/param.d.ts +9 -0
- package/dist/src/core/param.d.ts.map +1 -1
- package/dist/src/core/param.js +21 -1
- package/dist/src/core/param.js.map +1 -1
- package/dist/src/core/statement.d.ts.map +1 -1
- package/dist/src/core/statement.js +38 -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 +7 -2
- package/dist/src/func/builtins/aggregate.js.map +1 -1
- package/dist/src/func/builtins/builtin-window-functions.d.ts.map +1 -1
- package/dist/src/func/builtins/builtin-window-functions.js +27 -11
- package/dist/src/func/builtins/builtin-window-functions.js.map +1 -1
- package/dist/src/func/builtins/datetime.d.ts.map +1 -1
- package/dist/src/func/builtins/datetime.js +8 -3
- package/dist/src/func/builtins/datetime.js.map +1 -1
- package/dist/src/func/builtins/explain.d.ts.map +1 -1
- package/dist/src/func/builtins/explain.js +9 -29
- package/dist/src/func/builtins/explain.js.map +1 -1
- package/dist/src/func/builtins/json-tvf.d.ts.map +1 -1
- package/dist/src/func/builtins/json-tvf.js +14 -7
- package/dist/src/func/builtins/json-tvf.js.map +1 -1
- package/dist/src/func/builtins/return-types.d.ts +29 -0
- package/dist/src/func/builtins/return-types.d.ts.map +1 -1
- package/dist/src/func/builtins/return-types.js +4 -1
- package/dist/src/func/builtins/return-types.js.map +1 -1
- package/dist/src/func/builtins/scalar.d.ts.map +1 -1
- package/dist/src/func/builtins/scalar.js +22 -67
- package/dist/src/func/builtins/scalar.js.map +1 -1
- package/dist/src/func/builtins/schema.d.ts.map +1 -1
- package/dist/src/func/builtins/schema.js +26 -16
- package/dist/src/func/builtins/schema.js.map +1 -1
- package/dist/src/index.d.ts +1 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +6 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/parser/parser.d.ts.map +1 -1
- package/dist/src/parser/parser.js +5 -3
- package/dist/src/parser/parser.js.map +1 -1
- package/dist/src/parser/visitor.d.ts +16 -0
- package/dist/src/parser/visitor.d.ts.map +1 -1
- package/dist/src/parser/visitor.js +16 -0
- package/dist/src/parser/visitor.js.map +1 -1
- package/dist/src/planner/analysis/assertion-plan.d.ts +33 -0
- package/dist/src/planner/analysis/assertion-plan.d.ts.map +1 -0
- package/dist/src/planner/analysis/assertion-plan.js +39 -0
- package/dist/src/planner/analysis/assertion-plan.js.map +1 -0
- package/dist/src/planner/analysis/binary-operator-class.d.ts +55 -0
- package/dist/src/planner/analysis/binary-operator-class.d.ts.map +1 -0
- package/dist/src/planner/analysis/binary-operator-class.js +57 -0
- package/dist/src/planner/analysis/binary-operator-class.js.map +1 -0
- package/dist/src/planner/analysis/binding-extractor.d.ts +9 -3
- package/dist/src/planner/analysis/binding-extractor.d.ts.map +1 -1
- package/dist/src/planner/analysis/binding-extractor.js +11 -16
- package/dist/src/planner/analysis/binding-extractor.js.map +1 -1
- package/dist/src/planner/analysis/change-scope.d.ts.map +1 -1
- package/dist/src/planner/analysis/change-scope.js +19 -6
- package/dist/src/planner/analysis/change-scope.js.map +1 -1
- package/dist/src/planner/analysis/check-extraction.d.ts +1 -7
- package/dist/src/planner/analysis/check-extraction.d.ts.map +1 -1
- package/dist/src/planner/analysis/check-extraction.js.map +1 -1
- package/dist/src/planner/analysis/comparison-collation.d.ts +17 -0
- package/dist/src/planner/analysis/comparison-collation.d.ts.map +1 -1
- package/dist/src/planner/analysis/comparison-collation.js +17 -5
- package/dist/src/planner/analysis/comparison-collation.js.map +1 -1
- package/dist/src/planner/analysis/constraint-extractor.d.ts.map +1 -1
- package/dist/src/planner/analysis/constraint-extractor.js +18 -18
- package/dist/src/planner/analysis/constraint-extractor.js.map +1 -1
- package/dist/src/planner/analysis/coverage-prover.d.ts +11 -7
- package/dist/src/planner/analysis/coverage-prover.d.ts.map +1 -1
- package/dist/src/planner/analysis/coverage-prover.js +11 -7
- package/dist/src/planner/analysis/coverage-prover.js.map +1 -1
- package/dist/src/planner/analysis/equi-correlation.d.ts +1 -1
- package/dist/src/planner/analysis/equi-correlation.js +1 -1
- package/dist/src/planner/analysis/expression-fingerprint.d.ts.map +1 -1
- package/dist/src/planner/analysis/expression-fingerprint.js +0 -2
- package/dist/src/planner/analysis/expression-fingerprint.js.map +1 -1
- package/dist/src/planner/analysis/key-filter.d.ts.map +1 -1
- package/dist/src/planner/analysis/key-filter.js +2 -3
- package/dist/src/planner/analysis/key-filter.js.map +1 -1
- package/dist/src/planner/analysis/relation-key.d.ts +104 -0
- package/dist/src/planner/analysis/relation-key.d.ts.map +1 -0
- package/dist/src/planner/analysis/relation-key.js +121 -0
- package/dist/src/planner/analysis/relation-key.js.map +1 -0
- package/dist/src/planner/analysis/scalar-param-usage.d.ts.map +1 -1
- package/dist/src/planner/analysis/scalar-param-usage.js +12 -4
- package/dist/src/planner/analysis/scalar-param-usage.js.map +1 -1
- package/dist/src/planner/analysis/set-op-type-merge.d.ts +9 -3
- package/dist/src/planner/analysis/set-op-type-merge.d.ts.map +1 -1
- package/dist/src/planner/analysis/set-op-type-merge.js +22 -8
- package/dist/src/planner/analysis/set-op-type-merge.js.map +1 -1
- package/dist/src/planner/building/alter-table.d.ts.map +1 -1
- package/dist/src/planner/building/alter-table.js +31 -23
- package/dist/src/planner/building/alter-table.js.map +1 -1
- package/dist/src/planner/building/analyze.d.ts.map +1 -1
- package/dist/src/planner/building/analyze.js +21 -0
- package/dist/src/planner/building/analyze.js.map +1 -1
- package/dist/src/planner/building/block.d.ts.map +1 -1
- package/dist/src/planner/building/block.js +222 -82
- package/dist/src/planner/building/block.js.map +1 -1
- package/dist/src/planner/building/constraint-builder.d.ts +3 -2
- package/dist/src/planner/building/constraint-builder.d.ts.map +1 -1
- package/dist/src/planner/building/constraint-builder.js +20 -27
- package/dist/src/planner/building/constraint-builder.js.map +1 -1
- package/dist/src/planner/building/delete.d.ts.map +1 -1
- package/dist/src/planner/building/delete.js +8 -25
- package/dist/src/planner/building/delete.js.map +1 -1
- package/dist/src/planner/building/expression.d.ts.map +1 -1
- package/dist/src/planner/building/expression.js +11 -3
- package/dist/src/planner/building/expression.js.map +1 -1
- package/dist/src/planner/building/foreign-key-builder.d.ts +19 -8
- package/dist/src/planner/building/foreign-key-builder.d.ts.map +1 -1
- package/dist/src/planner/building/foreign-key-builder.js +56 -37
- package/dist/src/planner/building/foreign-key-builder.js.map +1 -1
- package/dist/src/planner/building/generated-column-scope.d.ts +58 -0
- package/dist/src/planner/building/generated-column-scope.d.ts.map +1 -0
- package/dist/src/planner/building/generated-column-scope.js +117 -0
- package/dist/src/planner/building/generated-column-scope.js.map +1 -0
- package/dist/src/planner/building/insert.d.ts.map +1 -1
- package/dist/src/planner/building/insert.js +36 -60
- package/dist/src/planner/building/insert.js.map +1 -1
- package/dist/src/planner/building/mutation-context.d.ts +63 -0
- package/dist/src/planner/building/mutation-context.d.ts.map +1 -0
- package/dist/src/planner/building/mutation-context.js +126 -0
- package/dist/src/planner/building/mutation-context.js.map +1 -0
- package/dist/src/planner/building/select-aggregates.d.ts +73 -132
- package/dist/src/planner/building/select-aggregates.d.ts.map +1 -1
- package/dist/src/planner/building/select-aggregates.js +405 -81
- package/dist/src/planner/building/select-aggregates.js.map +1 -1
- package/dist/src/planner/building/select-modifiers.d.ts +37 -8
- package/dist/src/planner/building/select-modifiers.d.ts.map +1 -1
- package/dist/src/planner/building/select-modifiers.js +8 -9
- package/dist/src/planner/building/select-modifiers.js.map +1 -1
- package/dist/src/planner/building/select-ordinal.d.ts +6 -0
- package/dist/src/planner/building/select-ordinal.d.ts.map +1 -1
- package/dist/src/planner/building/select-ordinal.js +1 -1
- package/dist/src/planner/building/select-ordinal.js.map +1 -1
- package/dist/src/planner/building/select-window.d.ts +2 -2
- package/dist/src/planner/building/select-window.d.ts.map +1 -1
- package/dist/src/planner/building/select-window.js +82 -101
- package/dist/src/planner/building/select-window.js.map +1 -1
- package/dist/src/planner/building/select.d.ts.map +1 -1
- package/dist/src/planner/building/select.js +78 -33
- package/dist/src/planner/building/select.js.map +1 -1
- package/dist/src/planner/building/update.d.ts.map +1 -1
- package/dist/src/planner/building/update.js +21 -32
- package/dist/src/planner/building/update.js.map +1 -1
- package/dist/src/planner/building/view-mutation-builder.d.ts.map +1 -1
- package/dist/src/planner/building/view-mutation-builder.js +329 -14
- package/dist/src/planner/building/view-mutation-builder.js.map +1 -1
- package/dist/src/planner/building/with.d.ts +6 -0
- package/dist/src/planner/building/with.d.ts.map +1 -1
- package/dist/src/planner/building/with.js +52 -3
- package/dist/src/planner/building/with.js.map +1 -1
- package/dist/src/planner/cache/correlation-detector.d.ts.map +1 -1
- package/dist/src/planner/cache/correlation-detector.js +44 -17
- package/dist/src/planner/cache/correlation-detector.js.map +1 -1
- package/dist/src/planner/framework/physical-utils.d.ts +6 -0
- package/dist/src/planner/framework/physical-utils.d.ts.map +1 -1
- package/dist/src/planner/framework/physical-utils.js +6 -0
- package/dist/src/planner/framework/physical-utils.js.map +1 -1
- package/dist/src/planner/mutation/lens-enforcement.d.ts +123 -0
- package/dist/src/planner/mutation/lens-enforcement.d.ts.map +1 -1
- package/dist/src/planner/mutation/lens-enforcement.js +362 -5
- package/dist/src/planner/mutation/lens-enforcement.js.map +1 -1
- package/dist/src/planner/mutation/mutation-diagnostic.d.ts +1 -1
- package/dist/src/planner/mutation/mutation-diagnostic.d.ts.map +1 -1
- package/dist/src/planner/mutation/mutation-diagnostic.js.map +1 -1
- package/dist/src/planner/nodes/alter-table-node.d.ts +15 -11
- package/dist/src/planner/nodes/alter-table-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/alter-table-node.js +5 -0
- package/dist/src/planner/nodes/alter-table-node.js.map +1 -1
- package/dist/src/planner/nodes/bloom-join-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/bloom-join-node.js +7 -0
- package/dist/src/planner/nodes/bloom-join-node.js.map +1 -1
- package/dist/src/planner/nodes/constraint-check-node.d.ts +16 -0
- package/dist/src/planner/nodes/constraint-check-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/constraint-check-node.js.map +1 -1
- package/dist/src/planner/nodes/plan-node-type.d.ts +1 -1
- package/dist/src/planner/nodes/plan-node-type.d.ts.map +1 -1
- package/dist/src/planner/nodes/plan-node-type.js +1 -1
- package/dist/src/planner/nodes/plan-node-type.js.map +1 -1
- package/dist/src/planner/nodes/pragma.d.ts.map +1 -1
- package/dist/src/planner/nodes/pragma.js +5 -2
- package/dist/src/planner/nodes/pragma.js.map +1 -1
- package/dist/src/planner/nodes/reference.d.ts.map +1 -1
- package/dist/src/planner/nodes/reference.js +9 -1
- package/dist/src/planner/nodes/reference.js.map +1 -1
- package/dist/src/planner/nodes/scalar.d.ts.map +1 -1
- package/dist/src/planner/nodes/scalar.js +117 -91
- package/dist/src/planner/nodes/scalar.js.map +1 -1
- package/dist/src/planner/nodes/sequence-node.d.ts +50 -0
- package/dist/src/planner/nodes/sequence-node.d.ts.map +1 -0
- package/dist/src/planner/nodes/sequence-node.js +96 -0
- package/dist/src/planner/nodes/sequence-node.js.map +1 -0
- package/dist/src/planner/nodes/values-node.d.ts +8 -0
- package/dist/src/planner/nodes/values-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/values-node.js +29 -6
- package/dist/src/planner/nodes/values-node.js.map +1 -1
- package/dist/src/planner/nodes/view-mutation-node.d.ts +43 -1
- package/dist/src/planner/nodes/view-mutation-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/view-mutation-node.js +27 -6
- package/dist/src/planner/nodes/view-mutation-node.js.map +1 -1
- package/dist/src/planner/nodes/window-node.d.ts +33 -4
- package/dist/src/planner/nodes/window-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/window-node.js +80 -36
- package/dist/src/planner/nodes/window-node.js.map +1 -1
- package/dist/src/planner/planning-context.d.ts +38 -1
- package/dist/src/planner/planning-context.d.ts.map +1 -1
- package/dist/src/planner/rules/access/rule-key-set-seek.d.ts.map +1 -1
- package/dist/src/planner/rules/access/rule-key-set-seek.js +8 -3
- package/dist/src/planner/rules/access/rule-key-set-seek.js.map +1 -1
- package/dist/src/planner/rules/join/rule-fanout-lookup-join.js +18 -12
- package/dist/src/planner/rules/join/rule-fanout-lookup-join.js.map +1 -1
- package/dist/src/planner/rules/retrieve/rule-grow-retrieve.js +4 -3
- package/dist/src/planner/rules/retrieve/rule-grow-retrieve.js.map +1 -1
- package/dist/src/planner/rules/window/rule-monotonic-window.d.ts.map +1 -1
- package/dist/src/planner/rules/window/rule-monotonic-window.js +6 -0
- package/dist/src/planner/rules/window/rule-monotonic-window.js.map +1 -1
- package/dist/src/planner/scopes/param.d.ts.map +1 -1
- package/dist/src/planner/scopes/param.js +10 -5
- package/dist/src/planner/scopes/param.js.map +1 -1
- package/dist/src/planner/util/ind-utils.d.ts +25 -8
- package/dist/src/planner/util/ind-utils.d.ts.map +1 -1
- package/dist/src/planner/util/ind-utils.js +53 -10
- package/dist/src/planner/util/ind-utils.js.map +1 -1
- package/dist/src/planner/util/key-utils.d.ts +7 -7
- package/dist/src/planner/util/key-utils.js +9 -9
- package/dist/src/planner/util/key-utils.js.map +1 -1
- package/dist/src/runtime/delta-executor.d.ts.map +1 -1
- package/dist/src/runtime/delta-executor.js +7 -2
- package/dist/src/runtime/delta-executor.js.map +1 -1
- package/dist/src/runtime/emit/add-constraint.d.ts.map +1 -1
- package/dist/src/runtime/emit/add-constraint.js +50 -15
- package/dist/src/runtime/emit/add-constraint.js.map +1 -1
- package/dist/src/runtime/emit/alter-schema-event.d.ts +2 -43
- package/dist/src/runtime/emit/alter-schema-event.d.ts.map +1 -1
- package/dist/src/runtime/emit/alter-schema-event.js +2 -53
- package/dist/src/runtime/emit/alter-schema-event.js.map +1 -1
- package/dist/src/runtime/emit/alter-table.d.ts.map +1 -1
- package/dist/src/runtime/emit/alter-table.js +70 -26
- package/dist/src/runtime/emit/alter-table.js.map +1 -1
- package/dist/src/runtime/emit/analyze.d.ts.map +1 -1
- package/dist/src/runtime/emit/analyze.js +7 -0
- package/dist/src/runtime/emit/analyze.js.map +1 -1
- package/dist/src/runtime/emit/assertion-rename-helpers.d.ts.map +1 -1
- package/dist/src/runtime/emit/assertion-rename-helpers.js +2 -3
- package/dist/src/runtime/emit/assertion-rename-helpers.js.map +1 -1
- package/dist/src/runtime/emit/binary.d.ts +5 -0
- package/dist/src/runtime/emit/binary.d.ts.map +1 -1
- package/dist/src/runtime/emit/binary.js +22 -22
- package/dist/src/runtime/emit/binary.js.map +1 -1
- package/dist/src/runtime/emit/block.d.ts.map +1 -1
- package/dist/src/runtime/emit/block.js +9 -3
- package/dist/src/runtime/emit/block.js.map +1 -1
- package/dist/src/runtime/emit/constraint-check.d.ts.map +1 -1
- package/dist/src/runtime/emit/constraint-check.js +22 -13
- package/dist/src/runtime/emit/constraint-check.js.map +1 -1
- package/dist/src/runtime/emit/create-assertion.d.ts.map +1 -1
- package/dist/src/runtime/emit/create-assertion.js +71 -70
- package/dist/src/runtime/emit/create-assertion.js.map +1 -1
- package/dist/src/runtime/emit/create-index.d.ts.map +1 -1
- package/dist/src/runtime/emit/create-index.js +8 -3
- package/dist/src/runtime/emit/create-index.js.map +1 -1
- package/dist/src/runtime/emit/create-table.d.ts.map +1 -1
- package/dist/src/runtime/emit/create-table.js +20 -10
- package/dist/src/runtime/emit/create-table.js.map +1 -1
- package/dist/src/runtime/emit/create-view.d.ts.map +1 -1
- package/dist/src/runtime/emit/create-view.js +51 -44
- package/dist/src/runtime/emit/create-view.js.map +1 -1
- package/dist/src/runtime/emit/ddl-event-scope.d.ts +71 -0
- package/dist/src/runtime/emit/ddl-event-scope.d.ts.map +1 -0
- package/dist/src/runtime/emit/ddl-event-scope.js +80 -0
- package/dist/src/runtime/emit/ddl-event-scope.js.map +1 -0
- package/dist/src/runtime/emit/dml-executor.d.ts.map +1 -1
- package/dist/src/runtime/emit/dml-executor.js +28 -24
- package/dist/src/runtime/emit/dml-executor.js.map +1 -1
- package/dist/src/runtime/emit/drop-assertion.d.ts.map +1 -1
- package/dist/src/runtime/emit/drop-assertion.js +23 -17
- package/dist/src/runtime/emit/drop-assertion.js.map +1 -1
- package/dist/src/runtime/emit/drop-index.d.ts.map +1 -1
- package/dist/src/runtime/emit/drop-index.js +7 -2
- package/dist/src/runtime/emit/drop-index.js.map +1 -1
- package/dist/src/runtime/emit/drop-table.d.ts.map +1 -1
- package/dist/src/runtime/emit/drop-table.js +16 -10
- package/dist/src/runtime/emit/drop-table.js.map +1 -1
- package/dist/src/runtime/emit/drop-view.d.ts.map +1 -1
- package/dist/src/runtime/emit/drop-view.js +50 -43
- package/dist/src/runtime/emit/drop-view.js.map +1 -1
- package/dist/src/runtime/emit/insert.d.ts.map +1 -1
- package/dist/src/runtime/emit/insert.js +2 -1
- package/dist/src/runtime/emit/insert.js.map +1 -1
- package/dist/src/runtime/emit/materialized-view.d.ts.map +1 -1
- package/dist/src/runtime/emit/materialized-view.js +87 -67
- package/dist/src/runtime/emit/materialized-view.js.map +1 -1
- package/dist/src/runtime/emit/schema-declarative.d.ts +8 -0
- package/dist/src/runtime/emit/schema-declarative.d.ts.map +1 -1
- package/dist/src/runtime/emit/schema-declarative.js +128 -25
- package/dist/src/runtime/emit/schema-declarative.js.map +1 -1
- package/dist/src/runtime/emit/sequence.d.ts +17 -0
- package/dist/src/runtime/emit/sequence.d.ts.map +1 -0
- package/dist/src/runtime/emit/sequence.js +40 -0
- package/dist/src/runtime/emit/sequence.js.map +1 -0
- package/dist/src/runtime/emit/set-object-tags.d.ts.map +1 -1
- package/dist/src/runtime/emit/set-object-tags.js +40 -32
- package/dist/src/runtime/emit/set-object-tags.js.map +1 -1
- package/dist/src/runtime/emit/table-valued-function.d.ts.map +1 -1
- package/dist/src/runtime/emit/table-valued-function.js +3 -2
- package/dist/src/runtime/emit/table-valued-function.js.map +1 -1
- package/dist/src/runtime/emit/update.js +3 -3
- package/dist/src/runtime/emit/update.js.map +1 -1
- package/dist/src/runtime/emit/view-mutation.d.ts.map +1 -1
- package/dist/src/runtime/emit/view-mutation.js +45 -3
- package/dist/src/runtime/emit/view-mutation.js.map +1 -1
- package/dist/src/runtime/foreign-key-actions.d.ts.map +1 -1
- package/dist/src/runtime/foreign-key-actions.js +9 -10
- package/dist/src/runtime/foreign-key-actions.js.map +1 -1
- package/dist/src/runtime/register.d.ts.map +1 -1
- package/dist/src/runtime/register.js +3 -2
- package/dist/src/runtime/register.js.map +1 -1
- package/dist/src/runtime/row-constraints.d.ts +14 -8
- package/dist/src/runtime/row-constraints.d.ts.map +1 -1
- package/dist/src/runtime/row-constraints.js +41 -15
- package/dist/src/runtime/row-constraints.js.map +1 -1
- package/dist/src/runtime/strict-representation.d.ts +11 -6
- package/dist/src/runtime/strict-representation.d.ts.map +1 -1
- package/dist/src/runtime/strict-representation.js +1 -44
- package/dist/src/runtime/strict-representation.js.map +1 -1
- package/dist/src/schema/assertion.d.ts +25 -2
- package/dist/src/schema/assertion.d.ts.map +1 -1
- package/dist/src/schema/assertion.js.map +1 -1
- package/dist/src/schema/catalog-rendering.d.ts +38 -0
- package/dist/src/schema/catalog-rendering.d.ts.map +1 -0
- package/dist/src/schema/catalog-rendering.js +171 -0
- package/dist/src/schema/catalog-rendering.js.map +1 -0
- package/dist/src/schema/catalog.d.ts +94 -5
- package/dist/src/schema/catalog.d.ts.map +1 -1
- package/dist/src/schema/catalog.js +159 -21
- package/dist/src/schema/catalog.js.map +1 -1
- package/dist/src/schema/column-source-resolver.d.ts +9 -5
- package/dist/src/schema/column-source-resolver.d.ts.map +1 -1
- package/dist/src/schema/column-source-resolver.js +9 -5
- package/dist/src/schema/column-source-resolver.js.map +1 -1
- package/dist/src/schema/constraint-builder.d.ts +23 -7
- package/dist/src/schema/constraint-builder.d.ts.map +1 -1
- package/dist/src/schema/constraint-builder.js +60 -16
- package/dist/src/schema/constraint-builder.js.map +1 -1
- package/dist/src/schema/declared-schema-manager.d.ts +50 -0
- package/dist/src/schema/declared-schema-manager.d.ts.map +1 -1
- package/dist/src/schema/declared-schema-manager.js +52 -0
- package/dist/src/schema/declared-schema-manager.js.map +1 -1
- package/dist/src/schema/expr-scope/frame.d.ts +65 -0
- package/dist/src/schema/expr-scope/frame.d.ts.map +1 -0
- package/dist/src/schema/expr-scope/frame.js +104 -0
- package/dist/src/schema/expr-scope/frame.js.map +1 -0
- package/dist/src/schema/expr-scope/walk.d.ts +40 -0
- package/dist/src/schema/expr-scope/walk.d.ts.map +1 -0
- package/dist/src/schema/expr-scope/walk.js +260 -0
- package/dist/src/schema/expr-scope/walk.js.map +1 -0
- package/dist/src/schema/generated-column-refs.d.ts +41 -0
- package/dist/src/schema/generated-column-refs.d.ts.map +1 -0
- package/dist/src/schema/generated-column-refs.js +124 -0
- package/dist/src/schema/generated-column-refs.js.map +1 -0
- package/dist/src/schema/lens-ack.d.ts.map +1 -1
- package/dist/src/schema/lens-ack.js +5 -2
- package/dist/src/schema/lens-ack.js.map +1 -1
- package/dist/src/schema/lens-compiler.d.ts.map +1 -1
- package/dist/src/schema/lens-compiler.js +9 -1
- package/dist/src/schema/lens-compiler.js.map +1 -1
- package/dist/src/schema/lens-prover.d.ts +7 -2
- package/dist/src/schema/lens-prover.d.ts.map +1 -1
- package/dist/src/schema/lens-prover.js +105 -11
- package/dist/src/schema/lens-prover.js.map +1 -1
- package/dist/src/schema/lens.d.ts +12 -0
- package/dist/src/schema/lens.d.ts.map +1 -1
- package/dist/src/schema/lens.js +10 -0
- package/dist/src/schema/lens.js.map +1 -1
- package/dist/src/schema/manager.d.ts +48 -1
- package/dist/src/schema/manager.d.ts.map +1 -1
- package/dist/src/schema/manager.js +168 -36
- package/dist/src/schema/manager.js.map +1 -1
- package/dist/src/schema/rename/self-qualifier-strip.d.ts +16 -10
- package/dist/src/schema/rename/self-qualifier-strip.d.ts.map +1 -1
- package/dist/src/schema/rename/self-qualifier-strip.js +30 -213
- package/dist/src/schema/rename/self-qualifier-strip.js.map +1 -1
- package/dist/src/schema/rename-rewriter.d.ts +4 -3
- package/dist/src/schema/rename-rewriter.d.ts.map +1 -1
- package/dist/src/schema/rename-rewriter.js +4 -3
- package/dist/src/schema/rename-rewriter.js.map +1 -1
- package/dist/src/schema/schema-differ.d.ts +54 -6
- package/dist/src/schema/schema-differ.d.ts.map +1 -1
- package/dist/src/schema/schema-differ.js +108 -42
- package/dist/src/schema/schema-differ.js.map +1 -1
- package/dist/src/schema/schema-hasher.d.ts +12 -0
- package/dist/src/schema/schema-hasher.d.ts.map +1 -1
- package/dist/src/schema/schema-hasher.js +28 -10
- package/dist/src/schema/schema-hasher.js.map +1 -1
- package/dist/src/schema/table.d.ts +117 -19
- package/dist/src/schema/table.d.ts.map +1 -1
- package/dist/src/schema/table.js +213 -71
- package/dist/src/schema/table.js.map +1 -1
- package/dist/src/types/comparison-coercion.d.ts +5 -1
- package/dist/src/types/comparison-coercion.d.ts.map +1 -1
- package/dist/src/types/comparison-coercion.js +21 -5
- package/dist/src/types/comparison-coercion.js.map +1 -1
- package/dist/src/types/representation.d.ts +65 -0
- package/dist/src/types/representation.d.ts.map +1 -0
- package/dist/src/types/representation.js +63 -0
- package/dist/src/types/representation.js.map +1 -0
- package/dist/src/types/validation.d.ts +76 -22
- package/dist/src/types/validation.d.ts.map +1 -1
- package/dist/src/types/validation.js +110 -31
- package/dist/src/types/validation.js.map +1 -1
- package/dist/src/vtab/best-access-plan.d.ts +10 -0
- package/dist/src/vtab/best-access-plan.d.ts.map +1 -1
- package/dist/src/vtab/best-access-plan.js +16 -0
- package/dist/src/vtab/best-access-plan.js.map +1 -1
- package/dist/src/vtab/capabilities.d.ts +72 -4
- package/dist/src/vtab/capabilities.d.ts.map +1 -1
- package/dist/src/vtab/memory/layer/manager.d.ts.map +1 -1
- package/dist/src/vtab/memory/layer/manager.js +17 -13
- package/dist/src/vtab/memory/layer/manager.js.map +1 -1
- package/dist/src/vtab/module.d.ts +13 -7
- package/dist/src/vtab/module.d.ts.map +1 -1
- package/package.json +3 -3
- package/dist/src/planner/nodes/array-index-node.d.ts +0 -22
- package/dist/src/planner/nodes/array-index-node.d.ts.map +0 -1
- package/dist/src/planner/nodes/array-index-node.js +0 -41
- package/dist/src/planner/nodes/array-index-node.js.map +0 -1
- package/dist/src/runtime/emit/array-index.d.ts +0 -5
- package/dist/src/runtime/emit/array-index.d.ts.map +0 -1
- package/dist/src/runtime/emit/array-index.js +0 -22
- package/dist/src/runtime/emit/array-index.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mutation-context.js","sourceRoot":"","sources":["../../../../src/planner/building/mutation-context.ts"],"names":[],"mappings":"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"}
|
|
@@ -20,66 +20,28 @@ export declare function buildAggregatePhase(input: RelationalPlanNode, stmt: AST
|
|
|
20
20
|
groupByExpressions?: ScalarPlanNode[];
|
|
21
21
|
hasHavingOnlyAggregates?: boolean;
|
|
22
22
|
hasOrderByOnlyAggregates?: boolean;
|
|
23
|
-
|
|
23
|
+
orderByNeedsPostAggregateSort?: boolean;
|
|
24
24
|
aggregatesContext?: PlanningContext['aggregates'];
|
|
25
|
+
groupedRedirectContext?: GroupedRedirectContext;
|
|
25
26
|
};
|
|
26
27
|
/**
|
|
27
|
-
* What a
|
|
28
|
-
*
|
|
29
|
-
*
|
|
28
|
+
* What a GROUPED query's post-aggregate builders need in order to run their
|
|
29
|
+
* expressions over the AggregateNode's own rows: the rebuilt SELECT list
|
|
30
|
+
* ({@link buildFinalAggregateProjections}), the window phase's specifications and
|
|
31
|
+
* function arguments, the HAVING predicate, and the sort keys.
|
|
30
32
|
*
|
|
31
|
-
*
|
|
32
|
-
*
|
|
33
|
-
*
|
|
34
|
-
*
|
|
35
|
-
*
|
|
36
|
-
*
|
|
37
|
-
*
|
|
38
|
-
*
|
|
39
|
-
*
|
|
40
|
-
*
|
|
41
|
-
* tell a correlated reference from an ungrouped local one, neither of which this
|
|
42
|
-
* coverage set can express.
|
|
43
|
-
*
|
|
44
|
-
* The fingerprint set covers whole grouped subtrees (`select id+1 … group by
|
|
45
|
-
* id+1`) and, incidentally, the qualifier mismatch between `group by t.a` and a
|
|
46
|
-
* later bare `a`. Fingerprints fold identifier case (see
|
|
47
|
-
* {@link expressionToIdentityString}), so `group by A || '!'` covers a later
|
|
48
|
-
* `a || '!'`; quoted literals stay byte-exact, so `a || 'X'` does not.
|
|
49
|
-
*/
|
|
50
|
-
export interface GroupByCoverage {
|
|
51
|
-
readonly attrIds: ReadonlySet<number>;
|
|
52
|
-
readonly fingerprints: ReadonlySet<string>;
|
|
53
|
-
}
|
|
54
|
-
/**
|
|
55
|
-
* Builds the coverage test for a grouped query. `groupedOutputAttributes` is the
|
|
56
|
-
* AggregateNode's output attributes (group keys followed by aggregate results),
|
|
57
|
-
* needed only when the expressions to be checked were built against the aggregate
|
|
58
|
-
* output scope.
|
|
59
|
-
*/
|
|
60
|
-
export declare function buildGroupByCoverage(groupByExpressions: readonly ScalarPlanNode[], groupedOutputAttributes?: readonly Attribute[]): GroupByCoverage;
|
|
61
|
-
/**
|
|
62
|
-
* Raises the standard GROUP BY coverage error when `node` reads a column the
|
|
63
|
-
* grouped rows do not carry. Used by the SELECT-list check below; the window
|
|
64
|
-
* phase raises the same message from {@link assertGroupedWindowCoverage}.
|
|
65
|
-
*/
|
|
66
|
-
export declare function assertGroupByCoverage(node: PlanNode, coverage: GroupByCoverage): void;
|
|
67
|
-
/**
|
|
68
|
-
* What the window phase of a GROUPED query needs in order to run its window
|
|
69
|
-
* specifications and function arguments over the AggregateNode's own rows.
|
|
70
|
-
*
|
|
71
|
-
* The WindowNode sits ABOVE the AggregateNode, so it can read only what the
|
|
72
|
-
* aggregate's output row carries: the grouping keys and the aggregate results.
|
|
73
|
-
* But the scope those expressions are built against falls through to the
|
|
74
|
-
* pre-aggregate select scope, so several perfectly legal spellings of a grouping
|
|
75
|
-
* key (`wg.a` against `group by a`, or the whole `a || '!'` against `group by a
|
|
76
|
-
* || '!'`) bind to a *base-table* attribute the aggregate row never had. This
|
|
77
|
-
* context supplies both halves of the answer: the two maps let
|
|
78
|
-
* {@link redirectToGroupKeys} rewrite such a subtree onto the aggregate's own
|
|
79
|
-
* output column, and the two attribute-id sets let
|
|
80
|
-
* {@link assertGroupedWindowCoverage} reject what survives.
|
|
33
|
+
* All of them sit ABOVE the AggregateNode, so all of them can read only what the
|
|
34
|
+
* aggregate's output row carries: the grouping keys and the aggregate results. But the
|
|
35
|
+
* scope those expressions are built against falls through to the pre-aggregate select
|
|
36
|
+
* scope, so several perfectly legal spellings of a grouping key (`wg.a` against
|
|
37
|
+
* `group by a`, or the whole `a || '!'` against `group by a || '!'`) bind to a
|
|
38
|
+
* *base-table* attribute the aggregate row never had. This context supplies both halves
|
|
39
|
+
* of the answer: the two maps let {@link redirectPostAggregate} — the ONE entry point
|
|
40
|
+
* every such expression goes through — rewrite such a subtree onto the aggregate's own
|
|
41
|
+
* output column, and the two attribute-id sets let {@link assertGroupedPlanCoverage}
|
|
42
|
+
* reject what survives, once, over the finished plan.
|
|
81
43
|
*/
|
|
82
|
-
export interface
|
|
44
|
+
export interface GroupedRedirectContext {
|
|
83
45
|
/** Where each GROUP BY key lives on the AggregateNode's output row. */
|
|
84
46
|
readonly groupKeys: GroupKeyIndex;
|
|
85
47
|
/** AggregateNode output attributes: group keys in GROUP BY order, then aggregate results. */
|
|
@@ -101,8 +63,8 @@ export interface GroupedWindowContext {
|
|
|
101
63
|
readonly aggregateInputAttrIds: ReadonlySet<number>;
|
|
102
64
|
/**
|
|
103
65
|
* Legal AFTER redirection: AggregateNode output attribute ids ONLY. Once
|
|
104
|
-
* {@link
|
|
105
|
-
* present anywhere in a
|
|
66
|
+
* {@link redirectPostAggregate} has run, an aggregate-input attribute id still
|
|
67
|
+
* present anywhere in a post-aggregate expression is an ungrouped reference.
|
|
106
68
|
*/
|
|
107
69
|
readonly outputAttrIds: ReadonlySet<number>;
|
|
108
70
|
}
|
|
@@ -111,9 +73,9 @@ export interface GroupedWindowContext {
|
|
|
111
73
|
* later expression may reach it by: the whole grouped expression written out again, or
|
|
112
74
|
* (for a bare-column key) the base column under any qualifier.
|
|
113
75
|
*
|
|
114
|
-
* Shared by
|
|
115
|
-
* {@link buildFinalAggregateProjections}, which resolve the same
|
|
116
|
-
* different expressions.
|
|
76
|
+
* Shared by {@link redirectToGroupKeys} (via {@link redirectPostAggregate}) and by
|
|
77
|
+
* the select list's {@link buildFinalAggregateProjections}, which resolve the same
|
|
78
|
+
* question about different expressions.
|
|
117
79
|
*/
|
|
118
80
|
export interface GroupKeyIndex {
|
|
119
81
|
/** Identity fingerprint of each GROUP BY expression → its output column index. */
|
|
@@ -122,83 +84,56 @@ export interface GroupKeyIndex {
|
|
|
122
84
|
readonly byBaseAttrId: ReadonlyMap<number, number>;
|
|
123
85
|
}
|
|
124
86
|
/**
|
|
125
|
-
*
|
|
126
|
-
*
|
|
127
|
-
*
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
*
|
|
132
|
-
*
|
|
133
|
-
* order, then the aggregate results); `aggregateInput` is the AggregateNode's
|
|
134
|
-
* source relation, whose whole subtree defines
|
|
135
|
-
* {@link GroupedWindowContext.aggregateInputAttrIds}.
|
|
136
|
-
*/
|
|
137
|
-
export declare function buildGroupedWindowContext(groupByExpressions: readonly ScalarPlanNode[], outputAttributes: readonly Attribute[], aggregateInput: PlanNode): GroupedWindowContext;
|
|
138
|
-
/**
|
|
139
|
-
* Rewrites every subtree of a window specification / window-function argument that
|
|
140
|
-
* IS a grouping key into a reference to the AggregateNode's output column for that
|
|
141
|
-
* key, so the expression reads the grouped row instead of a base-table column that
|
|
142
|
-
* row does not carry.
|
|
143
|
-
*
|
|
144
|
-
* Two match rules, in order at each node:
|
|
87
|
+
* The ONE entry point through which every post-aggregate expression of a GROUPED
|
|
88
|
+
* query reaches the grouping-key redirect: the rebuilt SELECT list, the window
|
|
89
|
+
* phase's specifications and function arguments, the HAVING predicate, and every
|
|
90
|
+
* post-aggregate sort key. A builder that constructs an expression above the
|
|
91
|
+
* AggregateNode calls this rather than remembering the rewrite itself — forgetting
|
|
92
|
+
* is how the SELECT-list and ORDER BY bugs shipped
|
|
93
|
+
* (complete/bug-qualified-group-key-in-select-list-breaks-window-query,
|
|
94
|
+
* complete/bug-order-by-grouping-key-spelling-breaks-window-query).
|
|
145
95
|
*
|
|
146
|
-
*
|
|
147
|
-
*
|
|
148
|
-
*
|
|
149
|
-
*
|
|
150
|
-
*
|
|
151
|
-
*
|
|
152
|
-
*
|
|
153
|
-
*
|
|
154
|
-
*
|
|
155
|
-
* — because there the same text can name something else entirely: under `group by
|
|
156
|
-
* a`, a bare `a` written inside `over (order by (select … where t.a = a))` names the
|
|
157
|
-
* subquery's own `t.a` and yet fingerprints as `a`, so an unguarded rule 1 would
|
|
158
|
-
* silently rewrite it into the outer group column and change what the query means.
|
|
159
|
-
* The guard cannot replace the top-level case: `group by (select max(t.b) from wg t
|
|
160
|
-
* where t.a = wg.a)` repeated verbatim in the specification is a legal grouping key
|
|
161
|
-
* whose subtree also reads the subquery's own columns.
|
|
162
|
-
* 2. The node is a column reference whose attribute id is the *base* attribute id of
|
|
163
|
-
* a bare-column grouping key — covers `group by a` + `over (order by wg.a)` and
|
|
164
|
-
* `over (order by w.a)`. Both spellings fall through to the same base attribute
|
|
165
|
-
* the group key was built from, so the match is qualifier-independent. It needs no
|
|
166
|
-
* guard at any depth: attribute ids are minted per relation instance, so only a
|
|
167
|
-
* reference that genuinely resolves to this query's grouping column can match.
|
|
168
|
-
*
|
|
169
|
-
* Otherwise recurse into every child, relational ones included, rebuilding through
|
|
170
|
-
* `withChildren` — a correlated reference to a grouping key can live arbitrarily deep
|
|
171
|
-
* inside a subquery in the window specification, and it must be redirected there too
|
|
172
|
-
* or it reaches the runtime as a base-table attribute the grouped row never carried.
|
|
173
|
-
*
|
|
174
|
-
* NOTE: rule 1 matches by AST text, so a subtree that *reads* like a grouping key but
|
|
175
|
-
* resolves to something else could be redirected wrongly. Within one query the guard
|
|
176
|
-
* above closes that off; the residue is a subtree of ENCLOSING-query references that
|
|
177
|
-
* happens to spell a grouping key (`group by a` in an inner query whose window spec
|
|
178
|
-
* says `outer_alias.a`… only when that fingerprints identically). This is the same
|
|
179
|
-
* limitation the select list already carries through the shared {@link GroupKeyIndex};
|
|
180
|
-
* fixing it means comparing resolved attribute identity rather than text, for both
|
|
181
|
-
* callers at once.
|
|
96
|
+
* A pass-through when `context` is absent (the query has no GROUP BY keys), and when
|
|
97
|
+
* the expression contains nothing to redirect. That gate is load-bearing, not an
|
|
98
|
+
* optimization: {@link redirectToGroupKeys} matches a subtree by AST text, so under
|
|
99
|
+
* `group by a` an ungated pass would also fingerprint a plain `order by a` that
|
|
100
|
+
* already bound correctly to a projection/window/aggregate OUTPUT attribute — the
|
|
101
|
+
* clearest hazard being an alias that shadows a grouping key (`select upper(a) as a …
|
|
102
|
+
* group by a order by a` must sort by the projected `upper(a)`). Only an expression
|
|
103
|
+
* that actually fell through to a pre-grouping attribute has anything to fix, and
|
|
104
|
+
* only such an expression is walked.
|
|
182
105
|
*/
|
|
183
|
-
export declare function
|
|
106
|
+
export declare function redirectPostAggregate(expr: ScalarPlanNode, context: GroupedRedirectContext | undefined, scope: Scope): ScalarPlanNode;
|
|
184
107
|
/**
|
|
185
|
-
*
|
|
186
|
-
*
|
|
187
|
-
*
|
|
108
|
+
* Boundary check over a GROUPED query's finished plan: no node ABOVE the
|
|
109
|
+
* AggregateNode may reference an aggregate-input attribute id that is absent from
|
|
110
|
+
* the aggregate's output. Called once per grouped query, from the end of
|
|
111
|
+
* `buildSelectStmt`, walking the operator spine from the query root down to — and
|
|
112
|
+
* stopping at — the AggregateNode itself (whose own input subtree legally reads
|
|
113
|
+
* pre-grouping columns). Each scalar expression hanging off a spine operator gets
|
|
114
|
+
* the subquery-aware per-expression check ({@link assertPostAggregateCoverage}).
|
|
188
115
|
*
|
|
189
|
-
*
|
|
190
|
-
*
|
|
116
|
+
* This is what turns "a builder forgot to call {@link redirectPostAggregate}" from a
|
|
117
|
+
* runtime `No row context found for column …` internal error into the user-facing
|
|
118
|
+
* GROUP BY message at plan time — the SELECT-list and ORDER BY escapes both shipped
|
|
119
|
+
* exactly that way. It also rejects, at plan time, a post-aggregate expression that
|
|
120
|
+
* genuinely reads an ungrouped column (directly, or correlated through a subquery).
|
|
191
121
|
*
|
|
192
|
-
*
|
|
193
|
-
*
|
|
194
|
-
*
|
|
195
|
-
*
|
|
196
|
-
*
|
|
122
|
+
* NOTE: the stop condition is node IDENTITY, so it holds only while `buildSelectStmt`
|
|
123
|
+
* *wraps* the aggregate rather than rebuilding it. A future post-aggregate step that
|
|
124
|
+
* rebuilds the spine through `withChildren` would mint a new AggregateNode, the walk
|
|
125
|
+
* would run straight past it into the aggregate's own input, and every legal
|
|
126
|
+
* pre-grouping reference down there (a WHERE conjunct, a join condition) would be
|
|
127
|
+
* rejected with a user-facing GROUP BY error. If such a step is ever added, locate
|
|
128
|
+
* the aggregate by node id instead of by reference.
|
|
197
129
|
*
|
|
198
|
-
*
|
|
199
|
-
* {@link
|
|
130
|
+
* NOTE: one extra walk of the post-aggregate plan per grouped query per prepare, on
|
|
131
|
+
* top of the redirect's own walk (see {@link redirectNode}). Measured end-to-end, not
|
|
132
|
+
* isolated: compiling a six-column grouped query costs ~0.6-0.8 ms against ~0.5 ms for
|
|
133
|
+
* a comparable ungrouped one, so this walk is bounded well below the surrounding
|
|
134
|
+
* planning cost. Revisit if preparing grouped queries ever shows up as slow.
|
|
200
135
|
*/
|
|
201
|
-
export declare function
|
|
136
|
+
export declare function assertGroupedPlanCoverage(node: PlanNode, aggregateNode: PlanNode, context: GroupedRedirectContext): void;
|
|
202
137
|
/**
|
|
203
138
|
* Every aggregate function call inside an AST expression, in source order.
|
|
204
139
|
* Does not descend into an aggregate's own arguments (nested aggregates are
|
|
@@ -207,10 +142,16 @@ export declare function assertGroupedWindowCoverage(node: PlanNode, context: Gro
|
|
|
207
142
|
*/
|
|
208
143
|
export declare function collectAggregateFunctionExprs(expr: AST.Expression, ctx: PlanningContext): AST.FunctionExpr[];
|
|
209
144
|
/**
|
|
210
|
-
* Builds final projections for the complete SELECT list in aggregate context
|
|
145
|
+
* Builds final projections for the complete SELECT list in aggregate context.
|
|
146
|
+
*
|
|
147
|
+
* `groupedContext` is supplied whenever the query HAS a GROUP BY (it is `undefined`
|
|
148
|
+
* for an aggregate query without one, which has no grouping keys to redirect onto).
|
|
149
|
+
* It is what makes a select-list reference to a grouping key name the AggregateNode's
|
|
150
|
+
* OWN group output column, whatever spelling the reference used — see
|
|
151
|
+
* {@link redirectPostAggregate} and the note on the rebuild below.
|
|
211
152
|
*/
|
|
212
153
|
export declare function buildFinalAggregateProjections(stmt: AST.SelectStmt, selectContext: PlanningContext, aggregateOutputScope: RegisteredScope, aggregateNode: RelationalPlanNode, aggregates: {
|
|
213
154
|
expression: ScalarPlanNode;
|
|
214
155
|
alias: string;
|
|
215
|
-
}[], groupByExpressions: ScalarPlanNode[], starProjectionsByColumn?: ReadonlyMap<AST.ResultColumn, readonly Projection[]
|
|
156
|
+
}[], groupByExpressions: ScalarPlanNode[], starProjectionsByColumn?: ReadonlyMap<AST.ResultColumn, readonly Projection[]>, groupedContext?: GroupedRedirectContext): Projection[];
|
|
216
157
|
//# sourceMappingURL=select-aggregates.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"select-aggregates.d.ts","sourceRoot":"","sources":["../../../../src/planner/building/select-aggregates.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,GAAG,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAoB,KAAK,SAAS,EAAE,KAAK,QAAQ,EAAE,KAAK,kBAAkB,EAAE,KAAK,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACtI,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAI9D,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAO1D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAIhD,OAAO,EAAwD,KAAK,eAAe,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"select-aggregates.d.ts","sourceRoot":"","sources":["../../../../src/planner/building/select-aggregates.ts"],"names":[],"mappings":"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"}
|