@quereus/quereus 4.6.0 → 4.7.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 +2 -2
- package/dist/src/common/errors.d.ts +17 -0
- package/dist/src/common/errors.d.ts.map +1 -1
- package/dist/src/common/errors.js +21 -0
- package/dist/src/common/errors.js.map +1 -1
- package/dist/src/core/database-assertions.d.ts +4 -3
- package/dist/src/core/database-assertions.d.ts.map +1 -1
- package/dist/src/core/database-assertions.js +44 -14
- package/dist/src/core/database-assertions.js.map +1 -1
- package/dist/src/core/database-events.d.ts +62 -0
- package/dist/src/core/database-events.d.ts.map +1 -1
- package/dist/src/core/database-events.js +88 -2
- package/dist/src/core/database-events.js.map +1 -1
- package/dist/src/core/database-internal.d.ts +5 -2
- package/dist/src/core/database-internal.d.ts.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 +4 -2
- package/dist/src/core/database-materialized-views-plan-builders.js.map +1 -1
- package/dist/src/core/database-materialized-views-plans.d.ts +12 -2
- package/dist/src/core/database-materialized-views-plans.d.ts.map +1 -1
- package/dist/src/core/database-materialized-views.d.ts +46 -0
- package/dist/src/core/database-materialized-views.d.ts.map +1 -1
- package/dist/src/core/database-materialized-views.js +75 -4
- package/dist/src/core/database-materialized-views.js.map +1 -1
- package/dist/src/core/database.d.ts +9 -1
- package/dist/src/core/database.d.ts.map +1 -1
- package/dist/src/core/database.js +36 -10
- 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 +7 -1
- package/dist/src/core/derived-row-validator.js.map +1 -1
- package/dist/src/core/statement.d.ts.map +1 -1
- package/dist/src/core/statement.js +15 -5
- package/dist/src/core/statement.js.map +1 -1
- package/dist/src/emit/ast-stringify.d.ts +18 -2
- package/dist/src/emit/ast-stringify.d.ts.map +1 -1
- package/dist/src/emit/ast-stringify.js +22 -4
- package/dist/src/emit/ast-stringify.js.map +1 -1
- package/dist/src/func/builtins/explain.d.ts.map +1 -1
- package/dist/src/func/builtins/explain.js +19 -5
- 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 +24 -20
- 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 +32 -5
- package/dist/src/func/builtins/schema.js.map +1 -1
- package/dist/src/index.d.ts +4 -4
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +4 -4
- package/dist/src/index.js.map +1 -1
- package/dist/src/parser/ast.d.ts +58 -1
- package/dist/src/parser/ast.d.ts.map +1 -1
- package/dist/src/parser/parser.js +1 -1
- package/dist/src/parser/parser.js.map +1 -1
- package/dist/src/parser/utils.d.ts +13 -1
- package/dist/src/parser/utils.d.ts.map +1 -1
- package/dist/src/parser/utils.js +14 -0
- package/dist/src/parser/utils.js.map +1 -1
- package/dist/src/planner/analysis/assertion-classifier.d.ts.map +1 -1
- package/dist/src/planner/analysis/assertion-classifier.js +7 -2
- package/dist/src/planner/analysis/assertion-classifier.js.map +1 -1
- package/dist/src/planner/analysis/assertion-hoist-cache.d.ts.map +1 -1
- package/dist/src/planner/analysis/assertion-hoist-cache.js +5 -0
- package/dist/src/planner/analysis/assertion-hoist-cache.js.map +1 -1
- package/dist/src/planner/analysis/change-scope.d.ts +11 -3
- package/dist/src/planner/analysis/change-scope.d.ts.map +1 -1
- package/dist/src/planner/analysis/change-scope.js +5 -4
- package/dist/src/planner/analysis/change-scope.js.map +1 -1
- package/dist/src/planner/analysis/coverage-prover.d.ts.map +1 -1
- package/dist/src/planner/analysis/coverage-prover.js +13 -5
- package/dist/src/planner/analysis/coverage-prover.js.map +1 -1
- package/dist/src/planner/analysis/equi-correlation.d.ts +6 -1
- package/dist/src/planner/analysis/equi-correlation.d.ts.map +1 -1
- package/dist/src/planner/analysis/equi-correlation.js +8 -1
- package/dist/src/planner/analysis/equi-correlation.js.map +1 -1
- package/dist/src/planner/analysis/predicate-dependencies.d.ts +34 -0
- package/dist/src/planner/analysis/predicate-dependencies.d.ts.map +1 -0
- package/dist/src/planner/analysis/predicate-dependencies.js +60 -0
- package/dist/src/planner/analysis/predicate-dependencies.js.map +1 -0
- package/dist/src/planner/analysis/query-rewrite-matcher.d.ts +1 -1
- package/dist/src/planner/analysis/query-rewrite-matcher.d.ts.map +1 -1
- package/dist/src/planner/analysis/query-rewrite-matcher.js +0 -26
- package/dist/src/planner/analysis/query-rewrite-matcher.js.map +1 -1
- package/dist/src/planner/building/alter-table.d.ts.map +1 -1
- package/dist/src/planner/building/alter-table.js +53 -17
- package/dist/src/planner/building/alter-table.js.map +1 -1
- package/dist/src/planner/building/constraint-builder.d.ts.map +1 -1
- package/dist/src/planner/building/constraint-builder.js +9 -5
- package/dist/src/planner/building/constraint-builder.js.map +1 -1
- package/dist/src/planner/building/create-assertion.d.ts.map +1 -1
- package/dist/src/planner/building/create-assertion.js +72 -1
- package/dist/src/planner/building/create-assertion.js.map +1 -1
- package/dist/src/planner/building/create-view.d.ts +6 -1
- package/dist/src/planner/building/create-view.d.ts.map +1 -1
- package/dist/src/planner/building/create-view.js +12 -3
- package/dist/src/planner/building/create-view.js.map +1 -1
- package/dist/src/planner/building/ddl.d.ts.map +1 -1
- package/dist/src/planner/building/ddl.js +6 -2
- package/dist/src/planner/building/ddl.js.map +1 -1
- package/dist/src/planner/building/delete.d.ts.map +1 -1
- package/dist/src/planner/building/delete.js +23 -10
- package/dist/src/planner/building/delete.js.map +1 -1
- package/dist/src/planner/building/dml-target.d.ts.map +1 -1
- package/dist/src/planner/building/dml-target.js +4 -0
- package/dist/src/planner/building/dml-target.js.map +1 -1
- package/dist/src/planner/building/drop-assertion.d.ts.map +1 -1
- package/dist/src/planner/building/drop-assertion.js +3 -1
- package/dist/src/planner/building/drop-assertion.js.map +1 -1
- package/dist/src/planner/building/foreign-key-builder.d.ts.map +1 -1
- package/dist/src/planner/building/foreign-key-builder.js +7 -5
- package/dist/src/planner/building/foreign-key-builder.js.map +1 -1
- package/dist/src/planner/building/function-call.d.ts +35 -0
- package/dist/src/planner/building/function-call.d.ts.map +1 -1
- package/dist/src/planner/building/function-call.js +53 -40
- package/dist/src/planner/building/function-call.js.map +1 -1
- package/dist/src/planner/building/insert.d.ts.map +1 -1
- package/dist/src/planner/building/insert.js +185 -48
- package/dist/src/planner/building/insert.js.map +1 -1
- package/dist/src/planner/building/materialized-view.d.ts.map +1 -1
- package/dist/src/planner/building/materialized-view.js +3 -1
- package/dist/src/planner/building/materialized-view.js.map +1 -1
- package/dist/src/planner/building/schema-authored-context.d.ts +69 -0
- package/dist/src/planner/building/schema-authored-context.d.ts.map +1 -0
- package/dist/src/planner/building/schema-authored-context.js +75 -0
- package/dist/src/planner/building/schema-authored-context.js.map +1 -0
- package/dist/src/planner/building/schema-resolution.d.ts.map +1 -1
- package/dist/src/planner/building/schema-resolution.js +7 -4
- package/dist/src/planner/building/schema-resolution.js.map +1 -1
- package/dist/src/planner/building/select-aggregates.d.ts +187 -2
- package/dist/src/planner/building/select-aggregates.d.ts.map +1 -1
- package/dist/src/planner/building/select-aggregates.js +414 -81
- package/dist/src/planner/building/select-aggregates.js.map +1 -1
- package/dist/src/planner/building/select-compound.js +2 -2
- package/dist/src/planner/building/select-compound.js.map +1 -1
- package/dist/src/planner/building/select-context.d.ts +91 -0
- package/dist/src/planner/building/select-context.d.ts.map +1 -1
- package/dist/src/planner/building/select-context.js +113 -0
- package/dist/src/planner/building/select-context.js.map +1 -1
- package/dist/src/planner/building/select-modifiers.d.ts +10 -3
- package/dist/src/planner/building/select-modifiers.d.ts.map +1 -1
- package/dist/src/planner/building/select-modifiers.js +29 -8
- package/dist/src/planner/building/select-modifiers.js.map +1 -1
- package/dist/src/planner/building/select-ordinal.d.ts +64 -19
- package/dist/src/planner/building/select-ordinal.d.ts.map +1 -1
- package/dist/src/planner/building/select-ordinal.js +79 -30
- package/dist/src/planner/building/select-ordinal.js.map +1 -1
- package/dist/src/planner/building/select-projections.d.ts +1 -1
- package/dist/src/planner/building/select-projections.d.ts.map +1 -1
- package/dist/src/planner/building/select-projections.js +18 -11
- package/dist/src/planner/building/select-projections.js.map +1 -1
- package/dist/src/planner/building/select-window.d.ts +13 -3
- package/dist/src/planner/building/select-window.d.ts.map +1 -1
- package/dist/src/planner/building/select-window.js +142 -37
- 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 +129 -59
- 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 +27 -13
- package/dist/src/planner/building/update.js.map +1 -1
- package/dist/src/planner/building/view-mutation-builder.d.ts +1 -1
- package/dist/src/planner/building/view-mutation-builder.d.ts.map +1 -1
- package/dist/src/planner/building/view-mutation-builder.js +102 -8
- package/dist/src/planner/building/view-mutation-builder.js.map +1 -1
- package/dist/src/planner/building/with.d.ts.map +1 -1
- package/dist/src/planner/building/with.js +34 -4
- package/dist/src/planner/building/with.js.map +1 -1
- package/dist/src/planner/cache/correlation-detector.d.ts +15 -0
- package/dist/src/planner/cache/correlation-detector.d.ts.map +1 -1
- package/dist/src/planner/cache/correlation-detector.js +26 -0
- package/dist/src/planner/cache/correlation-detector.js.map +1 -1
- package/dist/src/planner/cache/materialization-advisory.d.ts +7 -0
- package/dist/src/planner/cache/materialization-advisory.d.ts.map +1 -1
- package/dist/src/planner/cache/materialization-advisory.js +12 -3
- package/dist/src/planner/cache/materialization-advisory.js.map +1 -1
- package/dist/src/planner/framework/characteristics.d.ts +9 -0
- package/dist/src/planner/framework/characteristics.d.ts.map +1 -1
- package/dist/src/planner/framework/characteristics.js.map +1 -1
- package/dist/src/planner/framework/pass.d.ts +2 -0
- package/dist/src/planner/framework/pass.d.ts.map +1 -1
- package/dist/src/planner/framework/pass.js +15 -0
- package/dist/src/planner/framework/pass.js.map +1 -1
- package/dist/src/planner/mutation/backward-body.d.ts.map +1 -1
- package/dist/src/planner/mutation/backward-body.js +4 -1
- package/dist/src/planner/mutation/backward-body.js.map +1 -1
- package/dist/src/planner/mutation/body-context.d.ts +23 -0
- package/dist/src/planner/mutation/body-context.d.ts.map +1 -0
- package/dist/src/planner/mutation/body-context.js +26 -0
- package/dist/src/planner/mutation/body-context.js.map +1 -0
- package/dist/src/planner/mutation/cte-flatten.js +15 -2
- package/dist/src/planner/mutation/cte-flatten.js.map +1 -1
- package/dist/src/planner/mutation/decomposition.d.ts +8 -0
- package/dist/src/planner/mutation/decomposition.d.ts.map +1 -1
- package/dist/src/planner/mutation/decomposition.js +8 -3
- package/dist/src/planner/mutation/decomposition.js.map +1 -1
- package/dist/src/planner/mutation/lens-enforcement.js +1 -1
- package/dist/src/planner/mutation/multi-source.d.ts +7 -0
- package/dist/src/planner/mutation/multi-source.d.ts.map +1 -1
- package/dist/src/planner/mutation/multi-source.js +5 -0
- package/dist/src/planner/mutation/multi-source.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/mutation/scope-transform.d.ts +32 -0
- package/dist/src/planner/mutation/scope-transform.d.ts.map +1 -1
- package/dist/src/planner/mutation/scope-transform.js +181 -33
- package/dist/src/planner/mutation/scope-transform.js.map +1 -1
- package/dist/src/planner/mutation/set-op.d.ts.map +1 -1
- package/dist/src/planner/mutation/set-op.js +66 -16
- package/dist/src/planner/mutation/set-op.js.map +1 -1
- package/dist/src/planner/mutation/single-source.d.ts.map +1 -1
- package/dist/src/planner/mutation/single-source.js +100 -24
- package/dist/src/planner/mutation/single-source.js.map +1 -1
- package/dist/src/planner/nodes/add-constraint-node.d.ts +15 -1
- package/dist/src/planner/nodes/add-constraint-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/add-constraint-node.js +10 -1
- package/dist/src/planner/nodes/add-constraint-node.js.map +1 -1
- package/dist/src/planner/nodes/aggregate-node.d.ts +14 -5
- package/dist/src/planner/nodes/aggregate-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/aggregate-node.js +28 -21
- package/dist/src/planner/nodes/aggregate-node.js.map +1 -1
- package/dist/src/planner/nodes/alter-table-node.d.ts +27 -2
- package/dist/src/planner/nodes/alter-table-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/alter-table-node.js +49 -2
- package/dist/src/planner/nodes/alter-table-node.js.map +1 -1
- package/dist/src/planner/nodes/constraint-check-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/constraint-check-node.js +17 -19
- package/dist/src/planner/nodes/constraint-check-node.js.map +1 -1
- package/dist/src/planner/nodes/create-assertion-node.d.ts +2 -1
- package/dist/src/planner/nodes/create-assertion-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/create-assertion-node.js +5 -2
- package/dist/src/planner/nodes/create-assertion-node.js.map +1 -1
- package/dist/src/planner/nodes/cte-node.d.ts +19 -9
- package/dist/src/planner/nodes/cte-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/cte-node.js +25 -9
- package/dist/src/planner/nodes/cte-node.js.map +1 -1
- package/dist/src/planner/nodes/delete-node.d.ts +20 -2
- package/dist/src/planner/nodes/delete-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/delete-node.js +11 -2
- package/dist/src/planner/nodes/delete-node.js.map +1 -1
- package/dist/src/planner/nodes/dml-executor-node.d.ts +58 -1
- package/dist/src/planner/nodes/dml-executor-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/dml-executor-node.js +107 -15
- package/dist/src/planner/nodes/dml-executor-node.js.map +1 -1
- package/dist/src/planner/nodes/drop-assertion-node.d.ts +2 -1
- package/dist/src/planner/nodes/drop-assertion-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/drop-assertion-node.js +5 -2
- package/dist/src/planner/nodes/drop-assertion-node.js.map +1 -1
- package/dist/src/planner/nodes/filter.d.ts.map +1 -1
- package/dist/src/planner/nodes/filter.js +12 -6
- package/dist/src/planner/nodes/filter.js.map +1 -1
- package/dist/src/planner/nodes/hash-aggregate.d.ts +0 -5
- package/dist/src/planner/nodes/hash-aggregate.d.ts.map +1 -1
- package/dist/src/planner/nodes/hash-aggregate.js +17 -20
- package/dist/src/planner/nodes/hash-aggregate.js.map +1 -1
- package/dist/src/planner/nodes/insert-node.d.ts +19 -2
- package/dist/src/planner/nodes/insert-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/insert-node.js +10 -2
- package/dist/src/planner/nodes/insert-node.js.map +1 -1
- package/dist/src/planner/nodes/key-set-semi-join-node.d.ts +42 -10
- package/dist/src/planner/nodes/key-set-semi-join-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/key-set-semi-join-node.js +85 -16
- package/dist/src/planner/nodes/key-set-semi-join-node.js.map +1 -1
- package/dist/src/planner/nodes/lens-auxiliary-access-node.d.ts +5 -0
- package/dist/src/planner/nodes/lens-auxiliary-access-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/lens-auxiliary-access-node.js.map +1 -1
- package/dist/src/planner/nodes/plan-node.d.ts +5 -0
- package/dist/src/planner/nodes/plan-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/plan-node.js +12 -0
- package/dist/src/planner/nodes/plan-node.js.map +1 -1
- package/dist/src/planner/nodes/project-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/project-node.js +16 -35
- package/dist/src/planner/nodes/project-node.js.map +1 -1
- package/dist/src/planner/nodes/retrieve-node.d.ts +16 -2
- package/dist/src/planner/nodes/retrieve-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/retrieve-node.js +8 -1
- package/dist/src/planner/nodes/retrieve-node.js.map +1 -1
- package/dist/src/planner/nodes/returning-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/returning-node.js +13 -32
- package/dist/src/planner/nodes/returning-node.js.map +1 -1
- package/dist/src/planner/nodes/stream-aggregate.d.ts +0 -5
- package/dist/src/planner/nodes/stream-aggregate.d.ts.map +1 -1
- package/dist/src/planner/nodes/stream-aggregate.js +18 -24
- package/dist/src/planner/nodes/stream-aggregate.js.map +1 -1
- package/dist/src/planner/nodes/table-access-nodes.d.ts +89 -1
- package/dist/src/planner/nodes/table-access-nodes.d.ts.map +1 -1
- package/dist/src/planner/nodes/table-access-nodes.js +64 -2
- package/dist/src/planner/nodes/table-access-nodes.js.map +1 -1
- package/dist/src/planner/nodes/update-node.d.ts +19 -2
- package/dist/src/planner/nodes/update-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/update-node.js +10 -2
- package/dist/src/planner/nodes/update-node.js.map +1 -1
- package/dist/src/planner/optimizer.d.ts +18 -0
- package/dist/src/planner/optimizer.d.ts.map +1 -1
- package/dist/src/planner/optimizer.js +59 -10
- package/dist/src/planner/optimizer.js.map +1 -1
- package/dist/src/planner/planning-context.d.ts +24 -0
- package/dist/src/planner/planning-context.d.ts.map +1 -1
- package/dist/src/planner/planning-context.js.map +1 -1
- package/dist/src/planner/rules/access/rule-key-set-seek.d.ts +78 -20
- 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 +297 -71
- package/dist/src/planner/rules/access/rule-key-set-seek.js.map +1 -1
- package/dist/src/planner/rules/access/rule-monotonic-range-access.d.ts.map +1 -1
- package/dist/src/planner/rules/access/rule-monotonic-range-access.js +2 -2
- package/dist/src/planner/rules/access/rule-monotonic-range-access.js.map +1 -1
- package/dist/src/planner/rules/access/rule-select-access-path.d.ts +11 -1
- package/dist/src/planner/rules/access/rule-select-access-path.d.ts.map +1 -1
- package/dist/src/planner/rules/access/rule-select-access-path.js +46 -2
- package/dist/src/planner/rules/access/rule-select-access-path.js.map +1 -1
- package/dist/src/planner/rules/aggregate/rule-groupby-fd-simplification.d.ts +7 -4
- package/dist/src/planner/rules/aggregate/rule-groupby-fd-simplification.d.ts.map +1 -1
- package/dist/src/planner/rules/aggregate/rule-groupby-fd-simplification.js +39 -5
- package/dist/src/planner/rules/aggregate/rule-groupby-fd-simplification.js.map +1 -1
- package/dist/src/planner/rules/cache/rule-cte-optimization.d.ts.map +1 -1
- package/dist/src/planner/rules/cache/rule-cte-optimization.js +6 -2
- package/dist/src/planner/rules/cache/rule-cte-optimization.js.map +1 -1
- package/dist/src/planner/rules/cache/rule-materialized-view-rewrite.js +10 -3
- package/dist/src/planner/rules/cache/rule-materialized-view-rewrite.js.map +1 -1
- package/dist/src/planner/rules/join/index-nested-loop.d.ts.map +1 -1
- package/dist/src/planner/rules/join/index-nested-loop.js +13 -7
- package/dist/src/planner/rules/join/index-nested-loop.js.map +1 -1
- package/dist/src/planner/rules/join/rule-fanout-lookup-join.d.ts +4 -0
- package/dist/src/planner/rules/join/rule-fanout-lookup-join.d.ts.map +1 -1
- package/dist/src/planner/rules/join/rule-fanout-lookup-join.js +50 -15
- package/dist/src/planner/rules/join/rule-fanout-lookup-join.js.map +1 -1
- package/dist/src/planner/rules/join/rule-join-elimination.d.ts +6 -0
- package/dist/src/planner/rules/join/rule-join-elimination.d.ts.map +1 -1
- package/dist/src/planner/rules/join/rule-join-elimination.js +25 -9
- package/dist/src/planner/rules/join/rule-join-elimination.js.map +1 -1
- package/dist/src/planner/rules/join/rule-join-key-inference.d.ts +7 -0
- package/dist/src/planner/rules/join/rule-join-key-inference.d.ts.map +1 -1
- package/dist/src/planner/rules/join/rule-join-key-inference.js +23 -11
- package/dist/src/planner/rules/join/rule-join-key-inference.js.map +1 -1
- package/dist/src/planner/rules/join/rule-join-physical-selection.d.ts +2 -2
- package/dist/src/planner/rules/join/rule-join-physical-selection.d.ts.map +1 -1
- package/dist/src/planner/rules/join/rule-join-physical-selection.js +46 -16
- package/dist/src/planner/rules/join/rule-join-physical-selection.js.map +1 -1
- package/dist/src/planner/rules/join/rule-monotonic-merge-join.d.ts +2 -0
- package/dist/src/planner/rules/join/rule-monotonic-merge-join.d.ts.map +1 -1
- package/dist/src/planner/rules/join/rule-monotonic-merge-join.js +14 -0
- package/dist/src/planner/rules/join/rule-monotonic-merge-join.js.map +1 -1
- package/dist/src/planner/rules/predicate/rule-aggregate-predicate-pushdown.d.ts +2 -2
- package/dist/src/planner/rules/predicate/rule-aggregate-predicate-pushdown.d.ts.map +1 -1
- package/dist/src/planner/rules/predicate/rule-aggregate-predicate-pushdown.js +19 -22
- package/dist/src/planner/rules/predicate/rule-aggregate-predicate-pushdown.js.map +1 -1
- package/dist/src/planner/rules/predicate/rule-filter-selectivity.d.ts +33 -19
- package/dist/src/planner/rules/predicate/rule-filter-selectivity.d.ts.map +1 -1
- package/dist/src/planner/rules/predicate/rule-filter-selectivity.js +37 -18
- package/dist/src/planner/rules/predicate/rule-filter-selectivity.js.map +1 -1
- package/dist/src/planner/rules/predicate/rule-join-predicate-pushdown.d.ts +6 -3
- package/dist/src/planner/rules/predicate/rule-join-predicate-pushdown.d.ts.map +1 -1
- package/dist/src/planner/rules/predicate/rule-join-predicate-pushdown.js +6 -3
- package/dist/src/planner/rules/predicate/rule-join-predicate-pushdown.js.map +1 -1
- package/dist/src/planner/rules/predicate/rule-predicate-pushdown.d.ts.map +1 -1
- package/dist/src/planner/rules/predicate/rule-predicate-pushdown.js +11 -21
- package/dist/src/planner/rules/predicate/rule-predicate-pushdown.js.map +1 -1
- package/dist/src/planner/rules/shared/access-leaf.d.ts +16 -3
- package/dist/src/planner/rules/shared/access-leaf.d.ts.map +1 -1
- package/dist/src/planner/rules/shared/access-leaf.js +21 -5
- package/dist/src/planner/rules/shared/access-leaf.js.map +1 -1
- package/dist/src/planner/rules/subquery/rule-anti-join-fk-empty.js +1 -1
- package/dist/src/planner/rules/subquery/rule-anti-join-fk-empty.js.map +1 -1
- package/dist/src/planner/rules/subquery/rule-semi-join-fk-trivial.js +1 -1
- package/dist/src/planner/rules/subquery/rule-semi-join-fk-trivial.js.map +1 -1
- package/dist/src/planner/stored-body-context.d.ts +57 -0
- package/dist/src/planner/stored-body-context.d.ts.map +1 -0
- package/dist/src/planner/stored-body-context.js +64 -0
- package/dist/src/planner/stored-body-context.js.map +1 -0
- package/dist/src/planner/util/ind-utils.d.ts +28 -20
- package/dist/src/planner/util/ind-utils.d.ts.map +1 -1
- package/dist/src/planner/util/ind-utils.js +36 -27
- package/dist/src/planner/util/ind-utils.js.map +1 -1
- package/dist/src/planner/util/key-utils.d.ts +19 -4
- package/dist/src/planner/util/key-utils.d.ts.map +1 -1
- package/dist/src/planner/util/key-utils.js +23 -7
- package/dist/src/planner/util/key-utils.js.map +1 -1
- package/dist/src/planner/util/output-names.d.ts +12 -0
- package/dist/src/planner/util/output-names.d.ts.map +1 -0
- package/dist/src/planner/util/output-names.js +20 -0
- package/dist/src/planner/util/output-names.js.map +1 -0
- package/dist/src/planner/util/row-estimates.d.ts +11 -0
- package/dist/src/planner/util/row-estimates.d.ts.map +1 -1
- package/dist/src/planner/util/row-estimates.js +28 -0
- package/dist/src/planner/util/row-estimates.js.map +1 -1
- package/dist/src/runtime/deferred-constraint-queue.d.ts.map +1 -1
- package/dist/src/runtime/deferred-constraint-queue.js +3 -2
- package/dist/src/runtime/deferred-constraint-queue.js.map +1 -1
- package/dist/src/runtime/emit/add-constraint.d.ts.map +1 -1
- package/dist/src/runtime/emit/add-constraint.js +22 -6
- package/dist/src/runtime/emit/add-constraint.js.map +1 -1
- package/dist/src/runtime/emit/alter-schema-event.d.ts +59 -4
- package/dist/src/runtime/emit/alter-schema-event.d.ts.map +1 -1
- package/dist/src/runtime/emit/alter-schema-event.js +63 -4
- 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 +212 -92
- 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 +15 -4
- package/dist/src/runtime/emit/analyze.js.map +1 -1
- package/dist/src/runtime/emit/assertion-drop-guard.d.ts +37 -0
- package/dist/src/runtime/emit/assertion-drop-guard.d.ts.map +1 -0
- package/dist/src/runtime/emit/assertion-drop-guard.js +59 -0
- package/dist/src/runtime/emit/assertion-drop-guard.js.map +1 -0
- package/dist/src/runtime/emit/assertion-rename-helpers.d.ts +33 -0
- package/dist/src/runtime/emit/assertion-rename-helpers.d.ts.map +1 -0
- package/dist/src/runtime/emit/assertion-rename-helpers.js +124 -0
- package/dist/src/runtime/emit/assertion-rename-helpers.js.map +1 -0
- package/dist/src/runtime/emit/constraint-check.d.ts.map +1 -1
- package/dist/src/runtime/emit/constraint-check.js +10 -227
- 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 +31 -14
- package/dist/src/runtime/emit/create-assertion.js.map +1 -1
- package/dist/src/runtime/emit/cte.d.ts.map +1 -1
- package/dist/src/runtime/emit/cte.js +11 -6
- package/dist/src/runtime/emit/cte.js.map +1 -1
- package/dist/src/runtime/emit/dml-executor.d.ts.map +1 -1
- package/dist/src/runtime/emit/dml-executor.js +169 -1
- package/dist/src/runtime/emit/dml-executor.js.map +1 -1
- package/dist/src/runtime/emit/drop-assertion.js +8 -8
- package/dist/src/runtime/emit/drop-assertion.js.map +1 -1
- package/dist/src/runtime/emit/drop-column-guards.d.ts +151 -0
- package/dist/src/runtime/emit/drop-column-guards.d.ts.map +1 -0
- package/dist/src/runtime/emit/drop-column-guards.js +230 -0
- package/dist/src/runtime/emit/drop-column-guards.js.map +1 -0
- package/dist/src/runtime/emit/drop-table.d.ts.map +1 -1
- package/dist/src/runtime/emit/drop-table.js +6 -0
- 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 +4 -0
- package/dist/src/runtime/emit/drop-view.js.map +1 -1
- package/dist/src/runtime/emit/key-set-semi-join.d.ts.map +1 -1
- package/dist/src/runtime/emit/key-set-semi-join.js +5 -3
- package/dist/src/runtime/emit/key-set-semi-join.js.map +1 -1
- package/dist/src/runtime/emit/materialized-view-helpers.d.ts +4 -4
- package/dist/src/runtime/emit/materialized-view-helpers.d.ts.map +1 -1
- package/dist/src/runtime/emit/materialized-view-helpers.js +34 -22
- package/dist/src/runtime/emit/materialized-view-helpers.js.map +1 -1
- package/dist/src/runtime/emit/materialized-view.d.ts.map +1 -1
- package/dist/src/runtime/emit/materialized-view.js +7 -2
- package/dist/src/runtime/emit/materialized-view.js.map +1 -1
- package/dist/src/runtime/emit/recursive-cte.d.ts.map +1 -1
- package/dist/src/runtime/emit/recursive-cte.js +4 -5
- package/dist/src/runtime/emit/recursive-cte.js.map +1 -1
- package/dist/src/runtime/emit/update.d.ts.map +1 -1
- package/dist/src/runtime/emit/update.js +18 -6
- package/dist/src/runtime/emit/update.js.map +1 -1
- package/dist/src/runtime/row-constraints.d.ts +85 -0
- package/dist/src/runtime/row-constraints.d.ts.map +1 -0
- package/dist/src/runtime/row-constraints.js +239 -0
- package/dist/src/runtime/row-constraints.js.map +1 -0
- package/dist/src/runtime/types.d.ts +8 -11
- package/dist/src/runtime/types.d.ts.map +1 -1
- package/dist/src/runtime/types.js.map +1 -1
- package/dist/src/schema/assertion.d.ts +14 -1
- package/dist/src/schema/assertion.d.ts.map +1 -1
- package/dist/src/schema/assertion.js +14 -1
- package/dist/src/schema/assertion.js.map +1 -1
- package/dist/src/schema/catalog-persistability.js +19 -3
- package/dist/src/schema/catalog-persistability.js.map +1 -1
- package/dist/src/schema/catalog.d.ts +6 -0
- package/dist/src/schema/catalog.d.ts.map +1 -1
- package/dist/src/schema/catalog.js +26 -36
- package/dist/src/schema/catalog.js.map +1 -1
- package/dist/src/schema/column-source-resolver.d.ts +18 -0
- package/dist/src/schema/column-source-resolver.d.ts.map +1 -0
- package/dist/src/schema/column-source-resolver.js +22 -0
- package/dist/src/schema/column-source-resolver.js.map +1 -0
- package/dist/src/schema/constraint-builder.d.ts.map +1 -1
- package/dist/src/schema/constraint-builder.js +7 -1
- package/dist/src/schema/constraint-builder.js.map +1 -1
- package/dist/src/schema/ddl-generator.js +8 -0
- package/dist/src/schema/ddl-generator.js.map +1 -1
- package/dist/src/schema/lens-compiler.d.ts.map +1 -1
- package/dist/src/schema/lens-compiler.js +203 -51
- package/dist/src/schema/lens-compiler.js.map +1 -1
- package/dist/src/schema/lens-prover.d.ts +2 -3
- package/dist/src/schema/lens-prover.d.ts.map +1 -1
- package/dist/src/schema/lens-prover.js +19 -11
- package/dist/src/schema/lens-prover.js.map +1 -1
- package/dist/src/schema/manager.d.ts +30 -12
- package/dist/src/schema/manager.d.ts.map +1 -1
- package/dist/src/schema/manager.js +49 -17
- package/dist/src/schema/manager.js.map +1 -1
- package/dist/src/schema/rename-rewriter.d.ts +142 -0
- package/dist/src/schema/rename-rewriter.d.ts.map +1 -1
- package/dist/src/schema/rename-rewriter.js +254 -9
- package/dist/src/schema/rename-rewriter.js.map +1 -1
- package/dist/src/schema/reserved-tags.d.ts +1 -1
- package/dist/src/schema/reserved-tags.d.ts.map +1 -1
- package/dist/src/schema/reserved-tags.js +4 -3
- package/dist/src/schema/reserved-tags.js.map +1 -1
- package/dist/src/schema/schema-differ.d.ts +16 -0
- package/dist/src/schema/schema-differ.d.ts.map +1 -1
- package/dist/src/schema/schema-differ.js +122 -11
- package/dist/src/schema/schema-differ.js.map +1 -1
- package/dist/src/schema/view.d.ts +11 -0
- package/dist/src/schema/view.d.ts.map +1 -1
- package/dist/src/schema/view.js +12 -0
- package/dist/src/schema/view.js.map +1 -1
- package/dist/src/types/builtin-types.d.ts +38 -0
- package/dist/src/types/builtin-types.d.ts.map +1 -1
- package/dist/src/types/builtin-types.js +77 -26
- package/dist/src/types/builtin-types.js.map +1 -1
- package/dist/src/types/index.d.ts +1 -1
- package/dist/src/types/index.d.ts.map +1 -1
- package/dist/src/types/index.js +1 -1
- package/dist/src/types/index.js.map +1 -1
- package/dist/src/util/{working-table-iterable.d.ts → array-row-iterable.d.ts} +6 -6
- package/dist/src/util/array-row-iterable.d.ts.map +1 -0
- package/dist/src/util/{working-table-iterable.js → array-row-iterable.js} +6 -6
- package/dist/src/util/array-row-iterable.js.map +1 -0
- package/dist/src/vtab/events.d.ts +3 -0
- package/dist/src/vtab/events.d.ts.map +1 -1
- package/dist/src/vtab/events.js.map +1 -1
- package/dist/src/vtab/manifest.d.ts +15 -0
- package/dist/src/vtab/manifest.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 +3 -69
- package/dist/src/vtab/memory/layer/manager.js.map +1 -1
- package/dist/src/vtab/memory/module.d.ts +16 -1
- package/dist/src/vtab/memory/module.d.ts.map +1 -1
- package/dist/src/vtab/memory/module.js +62 -2
- package/dist/src/vtab/memory/module.js.map +1 -1
- package/dist/src/vtab/module.d.ts +26 -2
- package/dist/src/vtab/module.d.ts.map +1 -1
- package/dist/src/vtab/table.d.ts +8 -1
- package/dist/src/vtab/table.d.ts.map +1 -1
- package/dist/src/vtab/table.js.map +1 -1
- package/package.json +3 -3
- package/dist/src/util/working-table-iterable.d.ts.map +0 -1
- package/dist/src/util/working-table-iterable.js.map +0 -1
|
@@ -18,7 +18,14 @@ export declare class RetrieveNode extends PlanNode implements UnaryRelationalNod
|
|
|
18
18
|
readonly tableRef: TableReferenceNode;
|
|
19
19
|
/** Optional context data from the module's supports() assessment */
|
|
20
20
|
readonly moduleCtx?: unknown | undefined;
|
|
21
|
-
/**
|
|
21
|
+
/**
|
|
22
|
+
* Captured binding expressions used by the enveloped pipeline (params/correlated).
|
|
23
|
+
*
|
|
24
|
+
* NOTE: deliberately NOT exposed via `getChildren` (OPT-009). No emitter reads them —
|
|
25
|
+
* `runtime/emit/retrieve.ts` throws unconditionally, since a `RetrieveNode` is rewritten
|
|
26
|
+
* to a physical access node before emission — so they are inert and merely go stale
|
|
27
|
+
* after a rewrite. Expose them the moment an emitter reads them.
|
|
28
|
+
*/
|
|
22
29
|
readonly bindings?: ReadonlyArray<ScalarPlanNode> | undefined;
|
|
23
30
|
readonly nodeType = PlanNodeType.Retrieve;
|
|
24
31
|
private typeCache;
|
|
@@ -29,7 +36,14 @@ export declare class RetrieveNode extends PlanNode implements UnaryRelationalNod
|
|
|
29
36
|
tableRef: TableReferenceNode,
|
|
30
37
|
/** Optional context data from the module's supports() assessment */
|
|
31
38
|
moduleCtx?: unknown | undefined,
|
|
32
|
-
/**
|
|
39
|
+
/**
|
|
40
|
+
* Captured binding expressions used by the enveloped pipeline (params/correlated).
|
|
41
|
+
*
|
|
42
|
+
* NOTE: deliberately NOT exposed via `getChildren` (OPT-009). No emitter reads them —
|
|
43
|
+
* `runtime/emit/retrieve.ts` throws unconditionally, since a `RetrieveNode` is rewritten
|
|
44
|
+
* to a physical access node before emission — so they are inert and merely go stale
|
|
45
|
+
* after a rewrite. Expose them the moment an emitter reads them.
|
|
46
|
+
*/
|
|
33
47
|
bindings?: ReadonlyArray<ScalarPlanNode> | undefined);
|
|
34
48
|
getChildren(): readonly PlanNode[];
|
|
35
49
|
withChildren(newChildren: readonly PlanNode[]): RetrieveNode;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"retrieve-node.d.ts","sourceRoot":"","sources":["../../../../src/planner/nodes/retrieve-node.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,KAAK,kBAAkB,EAAE,KAAK,SAAS,EAAE,KAAK,mBAAmB,EAAE,cAAc,EAAE,KAAK,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACtJ,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAIlE;;;;;;GAMG;AACH,qBAAa,YAAa,SAAQ,QAAS,YAAW,mBAAmB;IAOvE,uEAAuE;aACvD,MAAM,EAAE,kBAAkB;IAC1C,sDAAsD;aACtC,QAAQ,EAAE,kBAAkB;IAC5C,oEAAoE;aACpD,SAAS,CAAC,EAAE,OAAO;IACnC
|
|
1
|
+
{"version":3,"file":"retrieve-node.d.ts","sourceRoot":"","sources":["../../../../src/planner/nodes/retrieve-node.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,KAAK,kBAAkB,EAAE,KAAK,SAAS,EAAE,KAAK,mBAAmB,EAAE,cAAc,EAAE,KAAK,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACtJ,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAIlE;;;;;;GAMG;AACH,qBAAa,YAAa,SAAQ,QAAS,YAAW,mBAAmB;IAOvE,uEAAuE;aACvD,MAAM,EAAE,kBAAkB;IAC1C,sDAAsD;aACtC,QAAQ,EAAE,kBAAkB;IAC5C,oEAAoE;aACpD,SAAS,CAAC,EAAE,OAAO;IACnC;;;;;;;OAOG;aACa,QAAQ,CAAC,EAAE,aAAa,CAAC,cAAc,CAAC;IApBzD,SAAkB,QAAQ,yBAAyB;IAEnD,OAAO,CAAC,SAAS,CAAuB;gBAGvC,KAAK,EAAE,KAAK;IACZ,uEAAuE;IACvD,MAAM,EAAE,kBAAkB;IAC1C,sDAAsD;IACtC,QAAQ,EAAE,kBAAkB;IAC5C,oEAAoE;IACpD,SAAS,CAAC,EAAE,OAAO,YAAA;IACnC;;;;;;;OAOG;IACa,QAAQ,CAAC,EAAE,aAAa,CAAC,cAAc,CAAC,YAAA;IAQhD,WAAW,IAAI,SAAS,QAAQ,EAAE;IAIlC,YAAY,CAAC,WAAW,EAAE,SAAS,QAAQ,EAAE,GAAG,YAAY;IAQrE,OAAO,IAAI,YAAY;IAIvB,aAAa,IAAI,SAAS,SAAS,EAAE;IAIrC,YAAY,IAAI,SAAS,CAAC,kBAAkB,CAAC;IAI7C;;;;;;OAMG;IACH,eAAe,CAAC,gBAAgB,EAAE,kBAAkB,EAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAqBpF,0DAA0D;IAC1D,IAAI,UAAU,IAAI,qBAAqB,CAEtC;IAED,gFAAgF;IAChF,YAAY,CAAC,SAAS,EAAE,kBAAkB,EAAE,YAAY,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC,EAAE,aAAa,CAAC,cAAc,CAAC,GAAG,YAAY;IAIrH,QAAQ,IAAI,MAAM;IAOlB,oBAAoB,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CASxD"}
|
|
@@ -23,7 +23,14 @@ export class RetrieveNode extends PlanNode {
|
|
|
23
23
|
tableRef,
|
|
24
24
|
/** Optional context data from the module's supports() assessment */
|
|
25
25
|
moduleCtx,
|
|
26
|
-
/**
|
|
26
|
+
/**
|
|
27
|
+
* Captured binding expressions used by the enveloped pipeline (params/correlated).
|
|
28
|
+
*
|
|
29
|
+
* NOTE: deliberately NOT exposed via `getChildren` (OPT-009). No emitter reads them —
|
|
30
|
+
* `runtime/emit/retrieve.ts` throws unconditionally, since a `RetrieveNode` is rewritten
|
|
31
|
+
* to a physical access node before emission — so they are inert and merely go stale
|
|
32
|
+
* after a rewrite. Expose them the moment an emitter reads them.
|
|
33
|
+
*/
|
|
27
34
|
bindings) {
|
|
28
35
|
// Self-cost only: the source pipeline flows in via getChildren(). This node
|
|
29
36
|
// is just the module/Quereus execution boundary marker — negligible self cost.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"retrieve-node.js","sourceRoot":"","sources":["../../../../src/planner/nodes/retrieve-node.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAA8G,MAAM,gBAAgB,CAAC;AACtJ,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAInD,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAE9D;;;;;;GAMG;AACH,MAAM,OAAO,YAAa,SAAQ,QAAQ;IAQxB;IAEA;IAEA;
|
|
1
|
+
{"version":3,"file":"retrieve-node.js","sourceRoot":"","sources":["../../../../src/planner/nodes/retrieve-node.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"returning-node.d.ts","sourceRoot":"","sources":["../../../../src/planner/nodes/returning-node.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,KAAK,kBAAkB,EAAE,KAAK,SAAS,EAAoB,KAAK,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAC9H,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"returning-node.d.ts","sourceRoot":"","sources":["../../../../src/planner/nodes/returning-node.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,KAAK,kBAAkB,EAAE,KAAK,SAAS,EAAoB,KAAK,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAC9H,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAS7D,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,cAAc,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uEAAuE;IACvE,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;GAGG;AACH,qBAAa,aAAc,SAAQ,QAAS,YAAW,kBAAkB;aAQrD,QAAQ,EAAE,kBAAkB;aAC5B,WAAW,EAAE,aAAa,CAAC,mBAAmB,CAAC;IARjE,SAAkB,QAAQ,0BAA0B;IAEpD,OAAO,CAAC,eAAe,CAAuB;IAC9C,OAAO,CAAC,eAAe,CAA+B;gBAGpD,KAAK,EAAE,KAAK,EACI,QAAQ,EAAE,kBAAkB,EAAE,8CAA8C;IAC5E,WAAW,EAAE,aAAa,CAAC,mBAAmB,CAAC;IAC/D,4EAA4E;IAC5E,oBAAoB,CAAC,EAAE,SAAS,SAAS,EAAE;IAe7C,OAAO,CAAC,eAAe;IAsCvB,OAAO,CAAC,eAAe;IAqCvB,OAAO,IAAI,YAAY;IAIvB,aAAa,IAAI,SAAS,SAAS,EAAE;IAIrC,YAAY,IAAI,SAAS,kBAAkB,EAAE;IAK7C,WAAW,IAAI,SAAS,QAAQ,EAAE;IAKlC,YAAY,CAAC,WAAW,EAAE,SAAS,QAAQ,EAAE,GAAG,QAAQ;IAgDxD,IAAI,aAAa,IAAI,MAAM,GAAG,SAAS,CAEtC;IAED,eAAe,CAAC,gBAAgB,EAAE,kBAAkB,EAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC;IA6E3E,QAAQ,IAAI,MAAM;IAOlB,oBAAoB,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAUzD"}
|
|
@@ -4,6 +4,7 @@ import { ColumnReferenceNode } from './reference.js';
|
|
|
4
4
|
import { expressionToString } from '../../emit/ast-stringify.js';
|
|
5
5
|
import { Cached } from '../../util/cached.js';
|
|
6
6
|
import { deriveProjectionColumnMap, projectKeys } from '../util/key-utils.js';
|
|
7
|
+
import { disambiguateColumnNames } from '../util/output-names.js';
|
|
7
8
|
import { projectOrdering } from '../framework/physical-utils.js';
|
|
8
9
|
import { addFd, projectConstantBindings, projectDomainConstraints, projectFds, projectInds, superkeyToFd } from '../util/fd-utils.js';
|
|
9
10
|
/**
|
|
@@ -34,43 +35,23 @@ export class ReturningNode extends PlanNode {
|
|
|
34
35
|
}
|
|
35
36
|
buildOutputType() {
|
|
36
37
|
// Return type is based on the projections, similar to ProjectNode
|
|
37
|
-
|
|
38
|
-
const columnNames = [];
|
|
39
|
-
const nameCount = new Map();
|
|
40
|
-
const columns = this.projections.map((proj) => {
|
|
38
|
+
const columnNames = disambiguateColumnNames(this.projections.map(proj => {
|
|
41
39
|
// Determine base column name; preserve the spelling supplied by the user
|
|
42
40
|
// (matches ProjectNode behaviour for SELECT — case-insensitive matching is
|
|
43
41
|
// a resolution concern, not an output-name concern).
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
}
|
|
48
|
-
else if (proj.node instanceof ColumnReferenceNode) {
|
|
42
|
+
if (proj.alias)
|
|
43
|
+
return proj.alias;
|
|
44
|
+
if (proj.node instanceof ColumnReferenceNode) {
|
|
49
45
|
const expr = proj.node.expression;
|
|
50
|
-
|
|
51
|
-
}
|
|
52
|
-
else {
|
|
53
|
-
baseName = expressionToString(proj.node.expression);
|
|
54
|
-
}
|
|
55
|
-
// Handle duplicate names
|
|
56
|
-
let finalName;
|
|
57
|
-
const currentCount = nameCount.get(baseName) || 0;
|
|
58
|
-
if (currentCount === 0) {
|
|
59
|
-
// First occurrence - use the base name
|
|
60
|
-
finalName = baseName;
|
|
46
|
+
return expr.table ? `${expr.table}.${expr.name}` : expr.name;
|
|
61
47
|
}
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
name: finalName,
|
|
70
|
-
type: proj.node.getType(),
|
|
71
|
-
nullable: true // Conservative assumption
|
|
72
|
-
};
|
|
73
|
-
});
|
|
48
|
+
return expressionToString(proj.node.expression);
|
|
49
|
+
}));
|
|
50
|
+
const columns = this.projections.map((proj, index) => ({
|
|
51
|
+
name: columnNames[index],
|
|
52
|
+
type: proj.node.getType(),
|
|
53
|
+
nullable: true // Conservative assumption
|
|
54
|
+
}));
|
|
74
55
|
// Logical key propagation via the shared projection-mapping helper (covers
|
|
75
56
|
// both bare column references and injective unary projections).
|
|
76
57
|
const execType = this.executor.getType();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"returning-node.js","sourceRoot":"","sources":["../../../../src/planner/nodes/returning-node.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAA2C,gBAAgB,EAA2B,MAAM,gBAAgB,CAAC;AAC9H,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAGnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,yBAAyB,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAC9E,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,KAAK,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAStI;;;GAGG;AACH,MAAM,OAAO,aAAc,SAAQ,QAAQ;IAQvB;IACA;IARA,QAAQ,GAAG,YAAY,CAAC,SAAS,CAAC;IAE5C,eAAe,CAAuB;IACtC,eAAe,CAA+B;IAEtD,YACE,KAAY,EACI,QAA4B,EAAE,8CAA8C;IAC5E,WAA+C;IAC/D,4EAA4E;IAC5E,oBAA2C;QAE3C,KAAK,CAAC,KAAK,CAAC,CAAC;QALG,aAAQ,GAAR,QAAQ,CAAoB;QAC5B,gBAAW,GAAX,WAAW,CAAoC;QAM/D,IAAI,CAAC,eAAe,GAAG,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;QAChE,IAAI,CAAC,eAAe,GAAG,IAAI,MAAM,CAAC,GAAG,EAAE;YACrC,qEAAqE;YACrE,IAAI,oBAAoB,EAAE,CAAC;gBACzB,OAAO,oBAAoB,CAAC,KAAK,EAAE,CAAC,CAAC,gBAAgB;YACvD,CAAC;YAED,OAAO,IAAI,CAAC,eAAe,EAAE,CAAC;QAChC,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,eAAe;QACrB,kEAAkE;QAClE,
|
|
1
|
+
{"version":3,"file":"returning-node.js","sourceRoot":"","sources":["../../../../src/planner/nodes/returning-node.ts"],"names":[],"mappings":"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"}
|
|
@@ -30,11 +30,6 @@ export declare class StreamAggregateNode extends PlanNode implements UnaryRelati
|
|
|
30
30
|
getChildren(): readonly PlanNode[];
|
|
31
31
|
getRelations(): readonly [RelationalPlanNode];
|
|
32
32
|
get estimatedRows(): number | undefined;
|
|
33
|
-
/**
|
|
34
|
-
* The aggregate's row estimate as a pure function of the source cardinality —
|
|
35
|
-
* `computePhysical` feeds it the PHYSICAL source count, this getter the logical
|
|
36
|
-
* one, and neither can drift from the other.
|
|
37
|
-
*/
|
|
38
33
|
private rowsFrom;
|
|
39
34
|
computePhysical(childrenPhysical: PhysicalProperties[]): Partial<PhysicalProperties>;
|
|
40
35
|
toString(): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stream-aggregate.d.ts","sourceRoot":"","sources":["../../../../src/planner/nodes/stream-aggregate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,KAAK,kBAAkB,EAAE,KAAK,mBAAmB,EAAE,KAAK,cAAc,EAAE,KAAK,kBAAkB,EAAE,KAAK,SAAS,EAAoB,MAAM,gBAAgB,CAAC;AAC7K,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"stream-aggregate.d.ts","sourceRoot":"","sources":["../../../../src/planner/nodes/stream-aggregate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,KAAK,kBAAkB,EAAE,KAAK,mBAAmB,EAAE,KAAK,cAAc,EAAE,KAAK,kBAAkB,EAAE,KAAK,SAAS,EAAoB,MAAM,gBAAgB,CAAC;AAC7K,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAShD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAE1E;;;GAGG;AACH,qBAAa,mBAAoB,SAAQ,QAAS,YAAW,mBAAmB,EAAE,kBAAkB;aAQhF,MAAM,EAAE,kBAAkB;aAC1B,OAAO,EAAE,SAAS,cAAc,EAAE;aAClC,UAAU,EAAE,SAAS;QAAE,UAAU,EAAE,cAAc,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE;aAEpE,oBAAoB,CAAC,EAAE,SAAS,SAAS,EAAE;IAX7D,SAAkB,QAAQ,gCAAgC;IAC1D,QAAQ,CAAC,oBAAoB,EAAG,IAAI,CAAU;IAE9C,OAAO,CAAC,eAAe,CAAsB;gBAG3C,KAAK,EAAE,KAAK,EACI,MAAM,EAAE,kBAAkB,EAC1B,OAAO,EAAE,SAAS,cAAc,EAAE,EAClC,UAAU,EAAE,SAAS;QAAE,UAAU,EAAE,cAAc,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,EACpF,qBAAqB,CAAC,EAAE,MAAM,EACd,oBAAoB,CAAC,EAAE,SAAS,SAAS,EAAE,YAAA;IAa7D,OAAO,CAAC,eAAe;IAsCvB,OAAO,CAAC,oBAAoB;IAU5B,OAAO,IAAI,YAAY;IAkDvB,aAAa,IAAI,SAAS,EAAE;IAI5B,iBAAiB,IAAI,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC;IAyBhD,WAAW,IAAI,SAAS,QAAQ,EAAE;IAIlC,YAAY,IAAI,SAAS,CAAC,kBAAkB,CAAC;IAI7C,IAAI,aAAa,IAAI,MAAM,GAAG,SAAS,CAEtC;IAED,OAAO,CAAC,QAAQ;IAIhB,eAAe,CAAC,gBAAgB,EAAE,kBAAkB,EAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAwB3E,QAAQ,IAAI,MAAM;IAiBlB,oBAAoB,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAoBxD,YAAY,CAAC,WAAW,EAAE,SAAS,QAAQ,EAAE,GAAG,QAAQ;IA+CxD,eAAe,IAAI,SAAS,cAAc,EAAE;IAI5C,uBAAuB,IAAI,SAAS;QAAE,IAAI,EAAE,cAAc,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,EAAE;IAUlG,gBAAgB,IAAI,OAAO;IAI3B,kBAAkB,IAAI,OAAO;IAI7B,SAAS,IAAI,kBAAkB;CAGhC"}
|
|
@@ -5,7 +5,8 @@ import { formatExpressionList } from '../../util/plan-formatter.js';
|
|
|
5
5
|
import { quereusError } from '../../common/errors.js';
|
|
6
6
|
import { StatusCode } from '../../common/types.js';
|
|
7
7
|
import { propagateAggregateFds } from './aggregate-node.js';
|
|
8
|
-
import { physicalSourceRows } from '../util/row-estimates.js';
|
|
8
|
+
import { aggregateRowsFrom, physicalSourceRows } from '../util/row-estimates.js';
|
|
9
|
+
import { disambiguateColumnNames } from '../util/output-names.js';
|
|
9
10
|
/**
|
|
10
11
|
* Physical node representing a streaming aggregate operation.
|
|
11
12
|
* Requires input to be ordered by grouping columns.
|
|
@@ -75,28 +76,36 @@ export class StreamAggregateNode extends PlanNode {
|
|
|
75
76
|
}
|
|
76
77
|
getType() {
|
|
77
78
|
const columns = [];
|
|
78
|
-
// Start with preserved attributes if we have them, otherwise build GROUP BY + aggregates
|
|
79
|
+
// Start with preserved attributes if we have them, otherwise build GROUP BY + aggregates.
|
|
80
|
+
// Duplicate output names are numbered (`a`, `a:1`) exactly as the logical
|
|
81
|
+
// AggregateNode does — `GROUP BY l.a, r.a` publishes two `a` columns, and a
|
|
82
|
+
// result-row object keyed by name would drop one of them.
|
|
79
83
|
if (this.preserveAttributeIds) {
|
|
80
84
|
// Use preserved attributes to match getAttributes() exactly
|
|
81
|
-
|
|
85
|
+
const names = disambiguateColumnNames(this.preserveAttributeIds.map(attr => attr.name));
|
|
86
|
+
this.preserveAttributeIds.forEach((attr, index) => {
|
|
82
87
|
columns.push({
|
|
83
|
-
name:
|
|
88
|
+
name: names[index],
|
|
84
89
|
type: attr.type,
|
|
85
90
|
generated: false // Source attributes are not generated
|
|
86
91
|
});
|
|
87
|
-
}
|
|
92
|
+
});
|
|
88
93
|
}
|
|
89
94
|
else {
|
|
95
|
+
const names = disambiguateColumnNames([
|
|
96
|
+
...this.groupBy.map((expr, index) => this.getGroupByColumnName(expr, index)),
|
|
97
|
+
...this.aggregates.map(agg => agg.alias)
|
|
98
|
+
]);
|
|
90
99
|
// Group by columns come first
|
|
91
100
|
columns.push(...this.groupBy.map((expr, index) => ({
|
|
92
|
-
name:
|
|
101
|
+
name: names[index],
|
|
93
102
|
type: expr.getType(),
|
|
94
103
|
generated: false
|
|
95
104
|
})));
|
|
96
105
|
// Then aggregate columns. Only GROUP BY + aggregate columns are advertised
|
|
97
106
|
// (consistent with getAttributes()); source columns are not emitted as output.
|
|
98
|
-
columns.push(...this.aggregates.map(agg => ({
|
|
99
|
-
name:
|
|
107
|
+
columns.push(...this.aggregates.map((agg, index) => ({
|
|
108
|
+
name: names[this.groupBy.length + index],
|
|
100
109
|
type: agg.expression.getType(),
|
|
101
110
|
generated: true
|
|
102
111
|
})));
|
|
@@ -144,23 +153,8 @@ export class StreamAggregateNode extends PlanNode {
|
|
|
144
153
|
get estimatedRows() {
|
|
145
154
|
return this.rowsFrom(this.source.estimatedRows);
|
|
146
155
|
}
|
|
147
|
-
/**
|
|
148
|
-
* The aggregate's row estimate as a pure function of the source cardinality —
|
|
149
|
-
* `computePhysical` feeds it the PHYSICAL source count, this getter the logical
|
|
150
|
-
* one, and neither can drift from the other.
|
|
151
|
-
*/
|
|
152
156
|
rowsFrom(sourceRows) {
|
|
153
|
-
|
|
154
|
-
return undefined;
|
|
155
|
-
if (this.groupBy.length > 0) {
|
|
156
|
-
// For streaming aggregate, we assume groups are somewhat clustered
|
|
157
|
-
// so we estimate fewer groups than hash aggregate would
|
|
158
|
-
return Math.max(1, Math.floor(sourceRows / 10));
|
|
159
|
-
}
|
|
160
|
-
else {
|
|
161
|
-
// No GROUP BY means single output row
|
|
162
|
-
return 1;
|
|
163
|
-
}
|
|
157
|
+
return aggregateRowsFrom(sourceRows, this.groupBy.length > 0, 10);
|
|
164
158
|
}
|
|
165
159
|
computePhysical(childrenPhysical) {
|
|
166
160
|
const sourcePhysical = childrenPhysical[0];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stream-aggregate.js","sourceRoot":"","sources":["../../../../src/planner/nodes/stream-aggregate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAmH,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAG7K,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"stream-aggregate.js","sourceRoot":"","sources":["../../../../src/planner/nodes/stream-aggregate.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,6 +10,7 @@ import type { Scope } from '../scopes/scope.js';
|
|
|
10
10
|
import type { FilterInfo } from '../../vtab/filter-info.js';
|
|
11
11
|
import type { ScalarPlanNode } from './plan-node.js';
|
|
12
12
|
import type { TableAccessCapable } from '../framework/characteristics.js';
|
|
13
|
+
import type { PredicateConstraint } from '../analysis/constraint-extractor.js';
|
|
13
14
|
/**
|
|
14
15
|
* Advertisement lifted from a `BestAccessPlanResult` onto a physical leaf node:
|
|
15
16
|
* the monotonicOn property keyed by table-relative column index (translated to
|
|
@@ -136,14 +137,101 @@ export declare class IndexSeekNode extends TableAccessNode {
|
|
|
136
137
|
readonly rangeBoundedOn?: PhysicalProperties['rangeBoundedOn'];
|
|
137
138
|
/** When true, suppress the lifted `monotonicOn` advertisement (defensive escalation). */
|
|
138
139
|
readonly suppressMonotonic: boolean;
|
|
140
|
+
/**
|
|
141
|
+
* True when a SortNode was dropped on the strength of this seek's
|
|
142
|
+
* `providesOrdering` (sort absorption in `rule-grow-retrieve`): the seek's
|
|
143
|
+
* emission order is the only thing producing the requested ORDER BY.
|
|
144
|
+
* Rewrites that change this leaf's emission order must decline. False for a
|
|
145
|
+
* vacuously-advertised ordering nothing consumed.
|
|
146
|
+
*/
|
|
147
|
+
readonly orderingLoadBearing: boolean;
|
|
148
|
+
/**
|
|
149
|
+
* The planner-level constraints this seek's keys were built from — the exact
|
|
150
|
+
* `PredicateConstraint` objects `rule-select-access-path` consumed, each carrying
|
|
151
|
+
* its original `sourceExpression` (and therefore its effective comparison
|
|
152
|
+
* collation, which `filterInfo.constraints` cannot express).
|
|
153
|
+
*
|
|
154
|
+
* This node's `FilterInfo` is the ONLY place these predicates are enforced: they
|
|
155
|
+
* were dropped from the tree on the module's promise (`handledFilters`). A rewrite
|
|
156
|
+
* that replaces this node's `FilterInfo` must re-apply them (as a `Filter`) or
|
|
157
|
+
* re-offer them to the module; a rewrite that cannot must decline.
|
|
158
|
+
*
|
|
159
|
+
* Caveats for a consumer that re-applies them:
|
|
160
|
+
* - Under a `COARSER_SAFE` collation cover the seek is already wrapped in a
|
|
161
|
+
* residual `Filter` carrying the same predicate, so re-applying yields a
|
|
162
|
+
* doubly-applied predicate — correct, but one extra evaluation.
|
|
163
|
+
* - `rules/join/index-nested-loop.ts` builds seeks from *synthesized* correlated
|
|
164
|
+
* equalities (`innerCol = outerCol`) whose `sourceExpression` references an
|
|
165
|
+
* attribute from the OUTER side of the join. Those are recorded faithfully, but
|
|
166
|
+
* they are not re-appliable in an arbitrary position — a consumer must gate on
|
|
167
|
+
* the position it intends to re-apply at.
|
|
168
|
+
*
|
|
169
|
+
* Undefined ⇒ this node was built by a path that did not thread the consumed set
|
|
170
|
+
* (never true for `selectPhysicalNode`'s output). An empty array is impossible: a
|
|
171
|
+
* seek exists only because at least one constraint was consumed.
|
|
172
|
+
*
|
|
173
|
+
* NOTE: deliberately NOT exposed via `getChildren` (OPT-009). No emitter reads these
|
|
174
|
+
* expressions — `runtime/emit/scan.ts` emits `seekKeys` only — so they are inert and
|
|
175
|
+
* merely hold pre-rewrite subtrees after a seek rebuild. The consumers above re-apply
|
|
176
|
+
* them into fresh rule output the pass then descends into. Expose them if an emitter
|
|
177
|
+
* ever reads them.
|
|
178
|
+
*/
|
|
179
|
+
readonly pushedConstraints?: readonly PredicateConstraint[] | undefined;
|
|
139
180
|
readonly nodeType = PlanNodeType.IndexSeek;
|
|
140
181
|
constructor(scope: Scope, source: TableReferenceNode, filterInfo: FilterInfo, indexName: string, seekKeys: ScalarPlanNode[], isRange?: boolean, providesOrdering?: {
|
|
141
182
|
column: number;
|
|
142
183
|
desc: boolean;
|
|
143
184
|
}[] | undefined, estimatedCostOverride?: number, advertisement?: AccessPathAdvertisement | undefined, rangeBoundedOn?: PhysicalProperties['rangeBoundedOn'],
|
|
144
185
|
/** When true, suppress the lifted `monotonicOn` advertisement (defensive escalation). */
|
|
145
|
-
suppressMonotonic?: boolean
|
|
186
|
+
suppressMonotonic?: boolean,
|
|
187
|
+
/**
|
|
188
|
+
* True when a SortNode was dropped on the strength of this seek's
|
|
189
|
+
* `providesOrdering` (sort absorption in `rule-grow-retrieve`): the seek's
|
|
190
|
+
* emission order is the only thing producing the requested ORDER BY.
|
|
191
|
+
* Rewrites that change this leaf's emission order must decline. False for a
|
|
192
|
+
* vacuously-advertised ordering nothing consumed.
|
|
193
|
+
*/
|
|
194
|
+
orderingLoadBearing?: boolean,
|
|
195
|
+
/**
|
|
196
|
+
* The planner-level constraints this seek's keys were built from — the exact
|
|
197
|
+
* `PredicateConstraint` objects `rule-select-access-path` consumed, each carrying
|
|
198
|
+
* its original `sourceExpression` (and therefore its effective comparison
|
|
199
|
+
* collation, which `filterInfo.constraints` cannot express).
|
|
200
|
+
*
|
|
201
|
+
* This node's `FilterInfo` is the ONLY place these predicates are enforced: they
|
|
202
|
+
* were dropped from the tree on the module's promise (`handledFilters`). A rewrite
|
|
203
|
+
* that replaces this node's `FilterInfo` must re-apply them (as a `Filter`) or
|
|
204
|
+
* re-offer them to the module; a rewrite that cannot must decline.
|
|
205
|
+
*
|
|
206
|
+
* Caveats for a consumer that re-applies them:
|
|
207
|
+
* - Under a `COARSER_SAFE` collation cover the seek is already wrapped in a
|
|
208
|
+
* residual `Filter` carrying the same predicate, so re-applying yields a
|
|
209
|
+
* doubly-applied predicate — correct, but one extra evaluation.
|
|
210
|
+
* - `rules/join/index-nested-loop.ts` builds seeks from *synthesized* correlated
|
|
211
|
+
* equalities (`innerCol = outerCol`) whose `sourceExpression` references an
|
|
212
|
+
* attribute from the OUTER side of the join. Those are recorded faithfully, but
|
|
213
|
+
* they are not re-appliable in an arbitrary position — a consumer must gate on
|
|
214
|
+
* the position it intends to re-apply at.
|
|
215
|
+
*
|
|
216
|
+
* Undefined ⇒ this node was built by a path that did not thread the consumed set
|
|
217
|
+
* (never true for `selectPhysicalNode`'s output). An empty array is impossible: a
|
|
218
|
+
* seek exists only because at least one constraint was consumed.
|
|
219
|
+
*
|
|
220
|
+
* NOTE: deliberately NOT exposed via `getChildren` (OPT-009). No emitter reads these
|
|
221
|
+
* expressions — `runtime/emit/scan.ts` emits `seekKeys` only — so they are inert and
|
|
222
|
+
* merely hold pre-rewrite subtrees after a seek rebuild. The consumers above re-apply
|
|
223
|
+
* them into fresh rule output the pass then descends into. Expose them if an emitter
|
|
224
|
+
* ever reads them.
|
|
225
|
+
*/
|
|
226
|
+
pushedConstraints?: readonly PredicateConstraint[] | undefined);
|
|
146
227
|
getAccessMethod(): 'index-seek';
|
|
228
|
+
/**
|
|
229
|
+
* Clone recording what this seek's `FilterInfo` is enforcing (see
|
|
230
|
+
* {@link pushedConstraints}) and whether its emission order is load-bearing.
|
|
231
|
+
* Exists so the single stamping site in `rule-select-access-path` need not
|
|
232
|
+
* re-list every constructor argument.
|
|
233
|
+
*/
|
|
234
|
+
withProvenance(pushedConstraints: readonly PredicateConstraint[], orderingLoadBearing: boolean): IndexSeekNode;
|
|
147
235
|
computePhysical(childrenPhysical: PhysicalProperties[]): Partial<PhysicalProperties>;
|
|
148
236
|
toString(): string;
|
|
149
237
|
getLogicalAttributes(): Record<string, unknown>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table-access-nodes.d.ts","sourceRoot":"","sources":["../../../../src/planner/nodes/table-access-nodes.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,KAAK,mBAAmB,EAAE,KAAK,kBAAkB,EAAE,KAAK,SAAS,EAAwB,MAAM,gBAAgB,CAAC;AACnI,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAEhD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"table-access-nodes.d.ts","sourceRoot":"","sources":["../../../../src/planner/nodes/table-access-nodes.ts"],"names":[],"mappings":"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"}
|
|
@@ -301,10 +301,52 @@ export class IndexSeekNode extends TableAccessNode {
|
|
|
301
301
|
advertisement;
|
|
302
302
|
rangeBoundedOn;
|
|
303
303
|
suppressMonotonic;
|
|
304
|
+
orderingLoadBearing;
|
|
305
|
+
pushedConstraints;
|
|
304
306
|
nodeType = PlanNodeType.IndexSeek;
|
|
305
307
|
constructor(scope, source, filterInfo, indexName, seekKeys, isRange = false, providesOrdering, estimatedCostOverride, advertisement, rangeBoundedOn,
|
|
306
308
|
/** When true, suppress the lifted `monotonicOn` advertisement (defensive escalation). */
|
|
307
|
-
suppressMonotonic = false
|
|
309
|
+
suppressMonotonic = false,
|
|
310
|
+
/**
|
|
311
|
+
* True when a SortNode was dropped on the strength of this seek's
|
|
312
|
+
* `providesOrdering` (sort absorption in `rule-grow-retrieve`): the seek's
|
|
313
|
+
* emission order is the only thing producing the requested ORDER BY.
|
|
314
|
+
* Rewrites that change this leaf's emission order must decline. False for a
|
|
315
|
+
* vacuously-advertised ordering nothing consumed.
|
|
316
|
+
*/
|
|
317
|
+
orderingLoadBearing = false,
|
|
318
|
+
/**
|
|
319
|
+
* The planner-level constraints this seek's keys were built from — the exact
|
|
320
|
+
* `PredicateConstraint` objects `rule-select-access-path` consumed, each carrying
|
|
321
|
+
* its original `sourceExpression` (and therefore its effective comparison
|
|
322
|
+
* collation, which `filterInfo.constraints` cannot express).
|
|
323
|
+
*
|
|
324
|
+
* This node's `FilterInfo` is the ONLY place these predicates are enforced: they
|
|
325
|
+
* were dropped from the tree on the module's promise (`handledFilters`). A rewrite
|
|
326
|
+
* that replaces this node's `FilterInfo` must re-apply them (as a `Filter`) or
|
|
327
|
+
* re-offer them to the module; a rewrite that cannot must decline.
|
|
328
|
+
*
|
|
329
|
+
* Caveats for a consumer that re-applies them:
|
|
330
|
+
* - Under a `COARSER_SAFE` collation cover the seek is already wrapped in a
|
|
331
|
+
* residual `Filter` carrying the same predicate, so re-applying yields a
|
|
332
|
+
* doubly-applied predicate — correct, but one extra evaluation.
|
|
333
|
+
* - `rules/join/index-nested-loop.ts` builds seeks from *synthesized* correlated
|
|
334
|
+
* equalities (`innerCol = outerCol`) whose `sourceExpression` references an
|
|
335
|
+
* attribute from the OUTER side of the join. Those are recorded faithfully, but
|
|
336
|
+
* they are not re-appliable in an arbitrary position — a consumer must gate on
|
|
337
|
+
* the position it intends to re-apply at.
|
|
338
|
+
*
|
|
339
|
+
* Undefined ⇒ this node was built by a path that did not thread the consumed set
|
|
340
|
+
* (never true for `selectPhysicalNode`'s output). An empty array is impossible: a
|
|
341
|
+
* seek exists only because at least one constraint was consumed.
|
|
342
|
+
*
|
|
343
|
+
* NOTE: deliberately NOT exposed via `getChildren` (OPT-009). No emitter reads these
|
|
344
|
+
* expressions — `runtime/emit/scan.ts` emits `seekKeys` only — so they are inert and
|
|
345
|
+
* merely hold pre-rewrite subtrees after a seek rebuild. The consumers above re-apply
|
|
346
|
+
* them into fresh rule output the pass then descends into. Expose them if an emitter
|
|
347
|
+
* ever reads them.
|
|
348
|
+
*/
|
|
349
|
+
pushedConstraints) {
|
|
308
350
|
super(scope, source, filterInfo, estimatedCostOverride);
|
|
309
351
|
this.indexName = indexName;
|
|
310
352
|
this.seekKeys = seekKeys;
|
|
@@ -313,10 +355,26 @@ export class IndexSeekNode extends TableAccessNode {
|
|
|
313
355
|
this.advertisement = advertisement;
|
|
314
356
|
this.rangeBoundedOn = rangeBoundedOn;
|
|
315
357
|
this.suppressMonotonic = suppressMonotonic;
|
|
358
|
+
this.orderingLoadBearing = orderingLoadBearing;
|
|
359
|
+
this.pushedConstraints = pushedConstraints;
|
|
316
360
|
}
|
|
317
361
|
getAccessMethod() {
|
|
318
362
|
return 'index-seek';
|
|
319
363
|
}
|
|
364
|
+
/**
|
|
365
|
+
* Clone recording what this seek's `FilterInfo` is enforcing (see
|
|
366
|
+
* {@link pushedConstraints}) and whether its emission order is load-bearing.
|
|
367
|
+
* Exists so the single stamping site in `rule-select-access-path` need not
|
|
368
|
+
* re-list every constructor argument.
|
|
369
|
+
*/
|
|
370
|
+
withProvenance(pushedConstraints, orderingLoadBearing) {
|
|
371
|
+
return new IndexSeekNode(this.scope, this.source, this.filterInfo, this.indexName, this.seekKeys, this.isRange, this.providesOrdering,
|
|
372
|
+
// No cost override: the base falls back to `filterInfo.indexInfoOutput.
|
|
373
|
+
// estimatedCost`, which is the very `accessPlan.cost` every seek arm passes
|
|
374
|
+
// as its override — so the clone re-derives the same self-cost. Same
|
|
375
|
+
// reasoning as `withChildren` below.
|
|
376
|
+
undefined, this.advertisement, this.rangeBoundedOn, this.suppressMonotonic, orderingLoadBearing, pushedConstraints);
|
|
377
|
+
}
|
|
320
378
|
computePhysical(childrenPhysical) {
|
|
321
379
|
const sourcePhysical = childrenPhysical[0];
|
|
322
380
|
const lifted = liftAdvertisement(this.source, this.advertisement);
|
|
@@ -403,7 +461,11 @@ export class IndexSeekNode extends TableAccessNode {
|
|
|
403
461
|
return this;
|
|
404
462
|
}
|
|
405
463
|
// Create new instance
|
|
406
|
-
return new IndexSeekNode(this.scope, newSource, this.filterInfo, this.indexName, newSeekKeys, this.isRange, this.providesOrdering, undefined, this.advertisement, this.rangeBoundedOn, this.suppressMonotonic
|
|
464
|
+
return new IndexSeekNode(this.scope, newSource, this.filterInfo, this.indexName, newSeekKeys, this.isRange, this.providesOrdering, undefined, this.advertisement, this.rangeBoundedOn, this.suppressMonotonic,
|
|
465
|
+
// Both must survive a rebuild: a lost `orderingLoadBearing` silently
|
|
466
|
+
// re-enables an emission-order rewrite that should decline, and lost
|
|
467
|
+
// `pushedConstraints` makes the seek look like it enforces nothing.
|
|
468
|
+
this.orderingLoadBearing, this.pushedConstraints);
|
|
407
469
|
}
|
|
408
470
|
}
|
|
409
471
|
//# sourceMappingURL=table-access-nodes.js.map
|