@quereus/quereus 4.4.1 → 4.6.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 +5 -4
- package/dist/src/core/database-events.d.ts +99 -1
- package/dist/src/core/database-events.d.ts.map +1 -1
- package/dist/src/core/database-events.js +219 -3
- package/dist/src/core/database-events.js.map +1 -1
- package/dist/src/core/database-materialized-views-analysis.d.ts.map +1 -1
- package/dist/src/core/database-materialized-views-analysis.js +1 -0
- 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 +29 -2
- package/dist/src/core/database-materialized-views-plan-builders.js.map +1 -1
- package/dist/src/core/database-transaction.d.ts +9 -0
- package/dist/src/core/database-transaction.d.ts.map +1 -1
- package/dist/src/core/database-transaction.js +9 -0
- package/dist/src/core/database-transaction.js.map +1 -1
- package/dist/src/core/database.d.ts +7 -1
- package/dist/src/core/database.d.ts.map +1 -1
- package/dist/src/core/database.js +20 -5
- package/dist/src/core/database.js.map +1 -1
- package/dist/src/func/builtins/aggregate.js +11 -11
- 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 +15 -85
- package/dist/src/func/builtins/builtin-window-functions.js.map +1 -1
- package/dist/src/func/builtins/conversion.d.ts.map +1 -1
- package/dist/src/func/builtins/conversion.js +10 -9
- package/dist/src/func/builtins/conversion.js.map +1 -1
- package/dist/src/func/builtins/datetime.d.ts.map +1 -1
- package/dist/src/func/builtins/datetime.js +28 -10
- package/dist/src/func/builtins/datetime.js.map +1 -1
- package/dist/src/func/builtins/json.d.ts.map +1 -1
- package/dist/src/func/builtins/json.js +23 -17
- package/dist/src/func/builtins/json.js.map +1 -1
- package/dist/src/func/builtins/mutation.js +2 -2
- package/dist/src/func/builtins/mutation.js.map +1 -1
- package/dist/src/func/builtins/return-types.d.ts +327 -0
- package/dist/src/func/builtins/return-types.d.ts.map +1 -0
- package/dist/src/func/builtins/return-types.js +43 -0
- package/dist/src/func/builtins/return-types.js.map +1 -0
- package/dist/src/func/builtins/scalar.d.ts.map +1 -1
- package/dist/src/func/builtins/scalar.js +193 -37
- 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 +11 -3
- package/dist/src/func/builtins/schema.js.map +1 -1
- package/dist/src/func/builtins/string.d.ts.map +1 -1
- package/dist/src/func/builtins/string.js +4 -2
- package/dist/src/func/builtins/string.js.map +1 -1
- package/dist/src/func/builtins/timespan.d.ts +3 -0
- package/dist/src/func/builtins/timespan.d.ts.map +1 -1
- package/dist/src/func/builtins/timespan.js +15 -11
- package/dist/src/func/builtins/timespan.js.map +1 -1
- package/dist/src/func/registration.d.ts +39 -1
- package/dist/src/func/registration.d.ts.map +1 -1
- package/dist/src/func/registration.js +236 -41
- package/dist/src/func/registration.js.map +1 -1
- package/dist/src/index.d.ts +14 -7
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +14 -5
- package/dist/src/index.js.map +1 -1
- package/dist/src/parser/parser.d.ts +46 -0
- package/dist/src/parser/parser.d.ts.map +1 -1
- package/dist/src/parser/parser.js +160 -44
- package/dist/src/parser/parser.js.map +1 -1
- package/dist/src/planner/analysis/check-extraction.d.ts.map +1 -1
- package/dist/src/planner/analysis/check-extraction.js +37 -4
- package/dist/src/planner/analysis/check-extraction.js.map +1 -1
- package/dist/src/planner/analysis/coarsened-key.d.ts +4 -3
- package/dist/src/planner/analysis/coarsened-key.d.ts.map +1 -1
- package/dist/src/planner/analysis/coarsened-key.js +37 -3
- package/dist/src/planner/analysis/coarsened-key.js.map +1 -1
- package/dist/src/planner/analysis/comparison-collation.d.ts +41 -13
- package/dist/src/planner/analysis/comparison-collation.d.ts.map +1 -1
- package/dist/src/planner/analysis/comparison-collation.js +51 -14
- package/dist/src/planner/analysis/comparison-collation.js.map +1 -1
- package/dist/src/planner/analysis/constraint-extractor.d.ts +0 -7
- package/dist/src/planner/analysis/constraint-extractor.d.ts.map +1 -1
- package/dist/src/planner/analysis/constraint-extractor.js +59 -59
- package/dist/src/planner/analysis/constraint-extractor.js.map +1 -1
- package/dist/src/planner/analysis/coverage-prover.d.ts +13 -2
- package/dist/src/planner/analysis/coverage-prover.d.ts.map +1 -1
- package/dist/src/planner/analysis/coverage-prover.js +10 -14
- package/dist/src/planner/analysis/coverage-prover.js.map +1 -1
- package/dist/src/planner/analysis/predicate-conjuncts.d.ts +10 -4
- package/dist/src/planner/analysis/predicate-conjuncts.d.ts.map +1 -1
- package/dist/src/planner/analysis/predicate-conjuncts.js +28 -7
- package/dist/src/planner/analysis/predicate-conjuncts.js.map +1 -1
- package/dist/src/planner/analysis/query-rewrite-matcher.d.ts.map +1 -1
- package/dist/src/planner/analysis/query-rewrite-matcher.js +8 -27
- package/dist/src/planner/analysis/query-rewrite-matcher.js.map +1 -1
- package/dist/src/planner/analysis/scalar-subqueries.d.ts +22 -3
- package/dist/src/planner/analysis/scalar-subqueries.d.ts.map +1 -1
- package/dist/src/planner/analysis/scalar-subqueries.js +32 -3
- package/dist/src/planner/analysis/scalar-subqueries.js.map +1 -1
- package/dist/src/planner/analysis/set-op-type-merge.d.ts +64 -0
- package/dist/src/planner/analysis/set-op-type-merge.d.ts.map +1 -0
- package/dist/src/planner/analysis/set-op-type-merge.js +97 -0
- package/dist/src/planner/analysis/set-op-type-merge.js.map +1 -0
- package/dist/src/planner/building/alter-table.d.ts.map +1 -1
- package/dist/src/planner/building/alter-table.js +65 -27
- package/dist/src/planner/building/alter-table.js.map +1 -1
- package/dist/src/planner/building/coercion.d.ts +54 -0
- package/dist/src/planner/building/coercion.d.ts.map +1 -0
- package/dist/src/planner/building/coercion.js +88 -0
- package/dist/src/planner/building/coercion.js.map +1 -0
- package/dist/src/planner/building/constraint-builder.d.ts.map +1 -1
- package/dist/src/planner/building/constraint-builder.js +5 -18
- package/dist/src/planner/building/constraint-builder.js.map +1 -1
- package/dist/src/planner/building/expression.d.ts +17 -0
- package/dist/src/planner/building/expression.d.ts.map +1 -1
- package/dist/src/planner/building/expression.js +23 -115
- package/dist/src/planner/building/expression.js.map +1 -1
- package/dist/src/planner/building/function-call.d.ts.map +1 -1
- package/dist/src/planner/building/function-call.js +13 -0
- package/dist/src/planner/building/function-call.js.map +1 -1
- package/dist/src/planner/building/select-aggregates.d.ts +1 -1
- package/dist/src/planner/building/select-aggregates.d.ts.map +1 -1
- package/dist/src/planner/building/select-aggregates.js +53 -2
- package/dist/src/planner/building/select-aggregates.js.map +1 -1
- package/dist/src/planner/building/select-compound.d.ts.map +1 -1
- package/dist/src/planner/building/select-compound.js +10 -6
- package/dist/src/planner/building/select-compound.js.map +1 -1
- package/dist/src/planner/building/select-context.d.ts +7 -0
- package/dist/src/planner/building/select-context.d.ts.map +1 -1
- package/dist/src/planner/building/select-context.js +10 -40
- package/dist/src/planner/building/select-context.js.map +1 -1
- package/dist/src/planner/building/select.d.ts +37 -1
- package/dist/src/planner/building/select.d.ts.map +1 -1
- package/dist/src/planner/building/select.js +112 -51
- package/dist/src/planner/building/select.js.map +1 -1
- package/dist/src/planner/cost/conjunct-cost.d.ts +82 -0
- package/dist/src/planner/cost/conjunct-cost.d.ts.map +1 -0
- package/dist/src/planner/cost/conjunct-cost.js +107 -0
- package/dist/src/planner/cost/conjunct-cost.js.map +1 -0
- package/dist/src/planner/cost/index.d.ts +10 -0
- package/dist/src/planner/cost/index.d.ts.map +1 -1
- package/dist/src/planner/cost/index.js +15 -0
- package/dist/src/planner/cost/index.js.map +1 -1
- package/dist/src/planner/mutation/propagate.d.ts.map +1 -1
- package/dist/src/planner/mutation/propagate.js +1 -0
- package/dist/src/planner/mutation/propagate.js.map +1 -1
- package/dist/src/planner/nodes/aggregate-node.d.ts +6 -0
- package/dist/src/planner/nodes/aggregate-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/aggregate-node.js +10 -2
- package/dist/src/planner/nodes/aggregate-node.js.map +1 -1
- package/dist/src/planner/nodes/alias-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/alias-node.js +2 -1
- package/dist/src/planner/nodes/alias-node.js.map +1 -1
- package/dist/src/planner/nodes/alter-table-node.d.ts +24 -8
- package/dist/src/planner/nodes/alter-table-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/alter-table-node.js.map +1 -1
- package/dist/src/planner/nodes/asof-scan-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/asof-scan-node.js +4 -1
- package/dist/src/planner/nodes/asof-scan-node.js.map +1 -1
- package/dist/src/planner/nodes/asserted-keys-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/asserted-keys-node.js +2 -1
- package/dist/src/planner/nodes/asserted-keys-node.js.map +1 -1
- package/dist/src/planner/nodes/async-gather-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/async-gather-node.js +19 -8
- package/dist/src/planner/nodes/async-gather-node.js.map +1 -1
- package/dist/src/planner/nodes/bloom-join-node.d.ts +2 -0
- package/dist/src/planner/nodes/bloom-join-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/bloom-join-node.js +17 -7
- package/dist/src/planner/nodes/bloom-join-node.js.map +1 -1
- package/dist/src/planner/nodes/cache-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/cache-node.js +2 -1
- package/dist/src/planner/nodes/cache-node.js.map +1 -1
- package/dist/src/planner/nodes/distinct-node.d.ts +6 -0
- package/dist/src/planner/nodes/distinct-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/distinct-node.js +10 -2
- package/dist/src/planner/nodes/distinct-node.js.map +1 -1
- package/dist/src/planner/nodes/eager-prefetch-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/eager-prefetch-node.js +2 -1
- package/dist/src/planner/nodes/eager-prefetch-node.js.map +1 -1
- package/dist/src/planner/nodes/fanout-lookup-join-node.d.ts +5 -0
- package/dist/src/planner/nodes/fanout-lookup-join-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/fanout-lookup-join-node.js +13 -6
- package/dist/src/planner/nodes/fanout-lookup-join-node.js.map +1 -1
- package/dist/src/planner/nodes/filter.d.ts.map +1 -1
- package/dist/src/planner/nodes/filter.js +12 -5
- package/dist/src/planner/nodes/filter.js.map +1 -1
- package/dist/src/planner/nodes/hash-aggregate.d.ts +6 -0
- package/dist/src/planner/nodes/hash-aggregate.d.ts.map +1 -1
- package/dist/src/planner/nodes/hash-aggregate.js +10 -2
- package/dist/src/planner/nodes/hash-aggregate.js.map +1 -1
- package/dist/src/planner/nodes/join-node.d.ts +25 -1
- package/dist/src/planner/nodes/join-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/join-node.js +38 -10
- package/dist/src/planner/nodes/join-node.js.map +1 -1
- package/dist/src/planner/nodes/join-utils.d.ts +78 -0
- package/dist/src/planner/nodes/join-utils.d.ts.map +1 -1
- package/dist/src/planner/nodes/join-utils.js +73 -0
- package/dist/src/planner/nodes/join-utils.js.map +1 -1
- package/dist/src/planner/nodes/key-set-semi-join-node.d.ts +87 -0
- package/dist/src/planner/nodes/key-set-semi-join-node.d.ts.map +1 -0
- package/dist/src/planner/nodes/key-set-semi-join-node.js +141 -0
- package/dist/src/planner/nodes/key-set-semi-join-node.js.map +1 -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 +2 -1
- package/dist/src/planner/nodes/lens-auxiliary-access-node.js.map +1 -1
- package/dist/src/planner/nodes/limit-offset.d.ts +6 -0
- package/dist/src/planner/nodes/limit-offset.d.ts.map +1 -1
- package/dist/src/planner/nodes/limit-offset.js +10 -2
- package/dist/src/planner/nodes/limit-offset.js.map +1 -1
- package/dist/src/planner/nodes/merge-join-node.d.ts +2 -0
- package/dist/src/planner/nodes/merge-join-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/merge-join-node.js +21 -8
- package/dist/src/planner/nodes/merge-join-node.js.map +1 -1
- package/dist/src/planner/nodes/ordinal-slice-node.d.ts +5 -0
- package/dist/src/planner/nodes/ordinal-slice-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/ordinal-slice-node.js +9 -2
- package/dist/src/planner/nodes/ordinal-slice-node.js.map +1 -1
- package/dist/src/planner/nodes/plan-node-type.d.ts +1 -0
- package/dist/src/planner/nodes/plan-node-type.d.ts.map +1 -1
- package/dist/src/planner/nodes/plan-node-type.js +1 -0
- package/dist/src/planner/nodes/plan-node-type.js.map +1 -1
- package/dist/src/planner/nodes/plan-node.d.ts +24 -0
- package/dist/src/planner/nodes/plan-node.d.ts.map +1 -1
- 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 +2 -1
- package/dist/src/planner/nodes/project-node.js.map +1 -1
- package/dist/src/planner/nodes/reference.d.ts.map +1 -1
- package/dist/src/planner/nodes/reference.js +3 -2
- package/dist/src/planner/nodes/reference.js.map +1 -1
- package/dist/src/planner/nodes/retrieve-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/retrieve-node.js +2 -1
- package/dist/src/planner/nodes/retrieve-node.js.map +1 -1
- package/dist/src/planner/nodes/scalar.d.ts.map +1 -1
- package/dist/src/planner/nodes/scalar.js +5 -18
- package/dist/src/planner/nodes/scalar.js.map +1 -1
- package/dist/src/planner/nodes/set-operation-node.d.ts +68 -16
- package/dist/src/planner/nodes/set-operation-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/set-operation-node.js +147 -26
- package/dist/src/planner/nodes/set-operation-node.js.map +1 -1
- package/dist/src/planner/nodes/sort.d.ts.map +1 -1
- package/dist/src/planner/nodes/sort.js +3 -1
- package/dist/src/planner/nodes/sort.js.map +1 -1
- package/dist/src/planner/nodes/stream-aggregate.d.ts +6 -0
- package/dist/src/planner/nodes/stream-aggregate.d.ts.map +1 -1
- package/dist/src/planner/nodes/stream-aggregate.js +10 -2
- package/dist/src/planner/nodes/stream-aggregate.js.map +1 -1
- package/dist/src/planner/nodes/table-access-nodes.d.ts +19 -1
- package/dist/src/planner/nodes/table-access-nodes.d.ts.map +1 -1
- package/dist/src/planner/nodes/table-access-nodes.js +18 -2
- package/dist/src/planner/nodes/table-access-nodes.js.map +1 -1
- package/dist/src/planner/nodes/window-function.d.ts.map +1 -1
- package/dist/src/planner/nodes/window-function.js +8 -0
- package/dist/src/planner/nodes/window-function.js.map +1 -1
- package/dist/src/planner/nodes/window-node.d.ts +1 -1
- package/dist/src/planner/nodes/window-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/window-node.js +3 -1
- package/dist/src/planner/nodes/window-node.js.map +1 -1
- package/dist/src/planner/optimizer.d.ts +9 -1
- package/dist/src/planner/optimizer.d.ts.map +1 -1
- package/dist/src/planner/optimizer.js +126 -6
- package/dist/src/planner/optimizer.js.map +1 -1
- package/dist/src/planner/rules/access/rule-key-set-seek.d.ts +68 -0
- package/dist/src/planner/rules/access/rule-key-set-seek.d.ts.map +1 -0
- package/dist/src/planner/rules/access/rule-key-set-seek.js +343 -0
- package/dist/src/planner/rules/access/rule-key-set-seek.js.map +1 -0
- 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 +46 -0
- 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 +54 -13
- package/dist/src/planner/rules/access/rule-select-access-path.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 +9 -0
- package/dist/src/planner/rules/cache/rule-cte-optimization.js.map +1 -1
- package/dist/src/planner/rules/cache/rule-nested-loop-right-cache.d.ts.map +1 -1
- package/dist/src/planner/rules/cache/rule-nested-loop-right-cache.js +6 -4
- package/dist/src/planner/rules/cache/rule-nested-loop-right-cache.js.map +1 -1
- package/dist/src/planner/rules/join/equi-pair-extractor.d.ts +49 -49
- package/dist/src/planner/rules/join/equi-pair-extractor.d.ts.map +1 -1
- package/dist/src/planner/rules/join/equi-pair-extractor.js +54 -58
- package/dist/src/planner/rules/join/equi-pair-extractor.js.map +1 -1
- package/dist/src/planner/rules/join/index-nested-loop.d.ts +49 -0
- package/dist/src/planner/rules/join/index-nested-loop.d.ts.map +1 -0
- package/dist/src/planner/rules/join/index-nested-loop.js +285 -0
- package/dist/src/planner/rules/join/index-nested-loop.js.map +1 -0
- package/dist/src/planner/rules/join/rule-fanout-batched-outer.js +8 -8
- package/dist/src/planner/rules/join/rule-join-physical-selection.d.ts +10 -4
- 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 +97 -29
- 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.map +1 -1
- package/dist/src/planner/rules/join/rule-monotonic-merge-join.js +15 -5
- package/dist/src/planner/rules/join/rule-monotonic-merge-join.js.map +1 -1
- package/dist/src/planner/rules/predicate/rule-empty-relation-folding.d.ts +1 -1
- package/dist/src/planner/rules/predicate/rule-empty-relation-folding.js +1 -1
- package/dist/src/planner/rules/predicate/rule-filter-conjunct-ordering.d.ts +43 -0
- package/dist/src/planner/rules/predicate/rule-filter-conjunct-ordering.d.ts.map +1 -0
- package/dist/src/planner/rules/predicate/rule-filter-conjunct-ordering.js +119 -0
- package/dist/src/planner/rules/predicate/rule-filter-conjunct-ordering.js.map +1 -0
- package/dist/src/planner/rules/predicate/rule-filter-selectivity.d.ts +44 -3
- package/dist/src/planner/rules/predicate/rule-filter-selectivity.d.ts.map +1 -1
- package/dist/src/planner/rules/predicate/rule-filter-selectivity.js +142 -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 +73 -0
- package/dist/src/planner/rules/predicate/rule-join-predicate-pushdown.d.ts.map +1 -0
- package/dist/src/planner/rules/predicate/rule-join-predicate-pushdown.js +205 -0
- package/dist/src/planner/rules/predicate/rule-join-predicate-pushdown.js.map +1 -0
- package/dist/src/planner/rules/predicate/rule-predicate-inference-equivalence.d.ts +14 -11
- package/dist/src/planner/rules/predicate/rule-predicate-inference-equivalence.d.ts.map +1 -1
- package/dist/src/planner/rules/predicate/rule-predicate-inference-equivalence.js +21 -85
- package/dist/src/planner/rules/predicate/rule-predicate-inference-equivalence.js.map +1 -1
- package/dist/src/planner/rules/predicate/rule-predicate-pushdown.d.ts +10 -2
- package/dist/src/planner/rules/predicate/rule-predicate-pushdown.d.ts.map +1 -1
- package/dist/src/planner/rules/predicate/rule-predicate-pushdown.js +20 -2
- package/dist/src/planner/rules/predicate/rule-predicate-pushdown.js.map +1 -1
- package/dist/src/planner/rules/retrieve/rule-grow-retrieve.d.ts.map +1 -1
- package/dist/src/planner/rules/retrieve/rule-grow-retrieve.js +18 -3
- package/dist/src/planner/rules/retrieve/rule-grow-retrieve.js.map +1 -1
- package/dist/src/planner/rules/shared/access-leaf.d.ts +39 -0
- package/dist/src/planner/rules/shared/access-leaf.d.ts.map +1 -0
- package/dist/src/planner/rules/shared/access-leaf.js +79 -0
- package/dist/src/planner/rules/shared/access-leaf.js.map +1 -0
- package/dist/src/planner/rules/shared/index-style-context.d.ts +17 -0
- package/dist/src/planner/rules/shared/index-style-context.d.ts.map +1 -1
- package/dist/src/planner/rules/shared/index-style-context.js +7 -0
- package/dist/src/planner/rules/shared/index-style-context.js.map +1 -1
- package/dist/src/planner/rules/subquery/rule-anti-join-fk-empty.d.ts.map +1 -1
- package/dist/src/planner/rules/subquery/rule-anti-join-fk-empty.js +18 -8
- 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.d.ts +3 -1
- package/dist/src/planner/rules/subquery/rule-semi-join-fk-trivial.d.ts.map +1 -1
- package/dist/src/planner/rules/subquery/rule-semi-join-fk-trivial.js +27 -10
- package/dist/src/planner/rules/subquery/rule-semi-join-fk-trivial.js.map +1 -1
- package/dist/src/planner/rules/subquery/rule-subquery-decorrelation.d.ts +24 -6
- package/dist/src/planner/rules/subquery/rule-subquery-decorrelation.d.ts.map +1 -1
- package/dist/src/planner/rules/subquery/rule-subquery-decorrelation.js +243 -70
- package/dist/src/planner/rules/subquery/rule-subquery-decorrelation.js.map +1 -1
- package/dist/src/planner/rules/window/rule-monotonic-window.d.ts +17 -7
- package/dist/src/planner/rules/window/rule-monotonic-window.d.ts.map +1 -1
- package/dist/src/planner/rules/window/rule-monotonic-window.js +124 -87
- package/dist/src/planner/rules/window/rule-monotonic-window.js.map +1 -1
- package/dist/src/planner/scopes/aliased.d.ts.map +1 -1
- package/dist/src/planner/scopes/aliased.js +6 -0
- package/dist/src/planner/scopes/aliased.js.map +1 -1
- package/dist/src/planner/stats/catalog-stats.d.ts +87 -4
- package/dist/src/planner/stats/catalog-stats.d.ts.map +1 -1
- package/dist/src/planner/stats/catalog-stats.js +250 -28
- package/dist/src/planner/stats/catalog-stats.js.map +1 -1
- package/dist/src/planner/stats/conjunct-selectivity.d.ts +48 -0
- package/dist/src/planner/stats/conjunct-selectivity.d.ts.map +1 -0
- package/dist/src/planner/stats/conjunct-selectivity.js +168 -0
- package/dist/src/planner/stats/conjunct-selectivity.js.map +1 -0
- package/dist/src/planner/stats/index.d.ts +36 -2
- package/dist/src/planner/stats/index.d.ts.map +1 -1
- package/dist/src/planner/stats/index.js.map +1 -1
- package/dist/src/planner/stats/selectivity-combine.d.ts +53 -0
- package/dist/src/planner/stats/selectivity-combine.d.ts.map +1 -0
- package/dist/src/planner/stats/selectivity-combine.js +75 -0
- package/dist/src/planner/stats/selectivity-combine.js.map +1 -0
- package/dist/src/planner/stats/table-cardinality.d.ts +28 -0
- package/dist/src/planner/stats/table-cardinality.d.ts.map +1 -0
- package/dist/src/planner/stats/table-cardinality.js +29 -0
- package/dist/src/planner/stats/table-cardinality.js.map +1 -0
- package/dist/src/planner/util/column-origins.d.ts +79 -0
- package/dist/src/planner/util/column-origins.d.ts.map +1 -0
- package/dist/src/planner/util/column-origins.js +150 -0
- package/dist/src/planner/util/column-origins.js.map +1 -0
- package/dist/src/planner/util/fd-utils.d.ts +32 -8
- package/dist/src/planner/util/fd-utils.d.ts.map +1 -1
- package/dist/src/planner/util/fd-utils.js +46 -9
- package/dist/src/planner/util/fd-utils.js.map +1 -1
- package/dist/src/planner/util/ind-utils.d.ts +56 -17
- package/dist/src/planner/util/ind-utils.d.ts.map +1 -1
- package/dist/src/planner/util/ind-utils.js +82 -21
- package/dist/src/planner/util/ind-utils.js.map +1 -1
- package/dist/src/planner/util/key-utils.d.ts +20 -2
- package/dist/src/planner/util/key-utils.d.ts.map +1 -1
- package/dist/src/planner/util/key-utils.js +37 -3
- package/dist/src/planner/util/key-utils.js.map +1 -1
- package/dist/src/planner/util/row-estimates.d.ts +28 -0
- package/dist/src/planner/util/row-estimates.d.ts.map +1 -0
- package/dist/src/planner/util/row-estimates.js +40 -0
- package/dist/src/planner/util/row-estimates.js.map +1 -0
- package/dist/src/planner/util/row-population.d.ts +42 -0
- package/dist/src/planner/util/row-population.d.ts.map +1 -0
- package/dist/src/planner/util/row-population.js +71 -0
- package/dist/src/planner/util/row-population.js.map +1 -0
- package/dist/src/runtime/deferred-constraint-queue.d.ts +40 -0
- package/dist/src/runtime/deferred-constraint-queue.d.ts.map +1 -1
- package/dist/src/runtime/deferred-constraint-queue.js +90 -9
- 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 +39 -1
- package/dist/src/runtime/emit/add-constraint.js.map +1 -1
- package/dist/src/runtime/emit/aggregate.d.ts.map +1 -1
- package/dist/src/runtime/emit/aggregate.js +4 -4
- package/dist/src/runtime/emit/aggregate.js.map +1 -1
- package/dist/src/runtime/emit/alter-schema-event.d.ts +42 -0
- package/dist/src/runtime/emit/alter-schema-event.d.ts.map +1 -0
- package/dist/src/runtime/emit/alter-schema-event.js +28 -0
- package/dist/src/runtime/emit/alter-schema-event.js.map +1 -0
- package/dist/src/runtime/emit/alter-table.d.ts.map +1 -1
- package/dist/src/runtime/emit/alter-table.js +386 -154
- 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 +35 -3
- package/dist/src/runtime/emit/analyze.js.map +1 -1
- package/dist/src/runtime/emit/asof-scan.d.ts.map +1 -1
- package/dist/src/runtime/emit/asof-scan.js +8 -3
- package/dist/src/runtime/emit/asof-scan.js.map +1 -1
- package/dist/src/runtime/emit/between.d.ts.map +1 -1
- package/dist/src/runtime/emit/between.js +4 -38
- package/dist/src/runtime/emit/between.js.map +1 -1
- package/dist/src/runtime/emit/binary.d.ts.map +1 -1
- package/dist/src/runtime/emit/binary.js +2 -23
- package/dist/src/runtime/emit/binary.js.map +1 -1
- package/dist/src/runtime/emit/bloom-join.d.ts.map +1 -1
- package/dist/src/runtime/emit/bloom-join.js +6 -35
- package/dist/src/runtime/emit/bloom-join.js.map +1 -1
- package/dist/src/runtime/emit/case.d.ts.map +1 -1
- package/dist/src/runtime/emit/case.js +40 -6
- package/dist/src/runtime/emit/case.js.map +1 -1
- package/dist/src/runtime/emit/cast.d.ts.map +1 -1
- package/dist/src/runtime/emit/cast.js +4 -19
- package/dist/src/runtime/emit/cast.js.map +1 -1
- package/dist/src/runtime/emit/constraint-check.d.ts.map +1 -1
- package/dist/src/runtime/emit/constraint-check.js +32 -8
- package/dist/src/runtime/emit/constraint-check.js.map +1 -1
- package/dist/src/runtime/emit/dml-executor.d.ts.map +1 -1
- package/dist/src/runtime/emit/dml-executor.js +90 -50
- package/dist/src/runtime/emit/dml-executor.js.map +1 -1
- package/dist/src/runtime/emit/drop-index.d.ts.map +1 -1
- package/dist/src/runtime/emit/drop-index.js +4 -3
- package/dist/src/runtime/emit/drop-index.js.map +1 -1
- package/dist/src/runtime/emit/filter.d.ts +18 -0
- package/dist/src/runtime/emit/filter.d.ts.map +1 -1
- package/dist/src/runtime/emit/filter.js +52 -10
- package/dist/src/runtime/emit/filter.js.map +1 -1
- package/dist/src/runtime/emit/hash-aggregate.d.ts.map +1 -1
- package/dist/src/runtime/emit/hash-aggregate.js +2 -2
- package/dist/src/runtime/emit/hash-aggregate.js.map +1 -1
- package/dist/src/runtime/emit/join-key-extractor.d.ts +46 -0
- package/dist/src/runtime/emit/join-key-extractor.d.ts.map +1 -0
- package/dist/src/runtime/emit/join-key-extractor.js +60 -0
- package/dist/src/runtime/emit/join-key-extractor.js.map +1 -0
- package/dist/src/runtime/emit/join.d.ts.map +1 -1
- package/dist/src/runtime/emit/join.js +8 -46
- package/dist/src/runtime/emit/join.js.map +1 -1
- package/dist/src/runtime/emit/key-set-semi-join.d.ts +29 -0
- package/dist/src/runtime/emit/key-set-semi-join.d.ts.map +1 -0
- package/dist/src/runtime/emit/key-set-semi-join.js +149 -0
- package/dist/src/runtime/emit/key-set-semi-join.js.map +1 -0
- package/dist/src/runtime/emit/merge-join.d.ts.map +1 -1
- package/dist/src/runtime/emit/merge-join.js +15 -8
- package/dist/src/runtime/emit/merge-join.js.map +1 -1
- package/dist/src/runtime/emit/operand-comparator.d.ts +70 -0
- package/dist/src/runtime/emit/operand-comparator.d.ts.map +1 -0
- package/dist/src/runtime/emit/operand-comparator.js +93 -0
- package/dist/src/runtime/emit/operand-comparator.js.map +1 -0
- package/dist/src/runtime/emit/scan.d.ts.map +1 -1
- package/dist/src/runtime/emit/scan.js +11 -2
- package/dist/src/runtime/emit/scan.js.map +1 -1
- package/dist/src/runtime/emit/schema-declarative.d.ts.map +1 -1
- package/dist/src/runtime/emit/schema-declarative.js +30 -0
- package/dist/src/runtime/emit/schema-declarative.js.map +1 -1
- package/dist/src/runtime/emit/subquery.d.ts.map +1 -1
- package/dist/src/runtime/emit/subquery.js +153 -52
- package/dist/src/runtime/emit/subquery.js.map +1 -1
- package/dist/src/runtime/emit/window.js +36 -23
- package/dist/src/runtime/emit/window.js.map +1 -1
- package/dist/src/runtime/parallel-driver.d.ts +5 -2
- package/dist/src/runtime/parallel-driver.d.ts.map +1 -1
- package/dist/src/runtime/parallel-driver.js +6 -2
- package/dist/src/runtime/parallel-driver.js.map +1 -1
- package/dist/src/runtime/register.d.ts.map +1 -1
- package/dist/src/runtime/register.js +2 -0
- package/dist/src/runtime/register.js.map +1 -1
- package/dist/src/runtime/types.d.ts +7 -0
- package/dist/src/runtime/types.d.ts.map +1 -1
- package/dist/src/runtime/types.js.map +1 -1
- package/dist/src/schema/catalog-persistability.d.ts +19 -16
- package/dist/src/schema/catalog-persistability.d.ts.map +1 -1
- package/dist/src/schema/catalog-persistability.js +76 -20
- package/dist/src/schema/catalog-persistability.js.map +1 -1
- package/dist/src/schema/catalog.d.ts +67 -2
- package/dist/src/schema/catalog.d.ts.map +1 -1
- package/dist/src/schema/catalog.js +194 -3
- package/dist/src/schema/catalog.js.map +1 -1
- package/dist/src/schema/column.d.ts +26 -3
- package/dist/src/schema/column.d.ts.map +1 -1
- package/dist/src/schema/column.js.map +1 -1
- package/dist/src/schema/ddl-generator.d.ts.map +1 -1
- package/dist/src/schema/ddl-generator.js +19 -6
- package/dist/src/schema/ddl-generator.js.map +1 -1
- package/dist/src/schema/function.d.ts +40 -0
- package/dist/src/schema/function.d.ts.map +1 -1
- package/dist/src/schema/function.js +10 -2
- package/dist/src/schema/function.js.map +1 -1
- package/dist/src/schema/manager.d.ts +84 -7
- package/dist/src/schema/manager.d.ts.map +1 -1
- package/dist/src/schema/manager.js +153 -53
- package/dist/src/schema/manager.js.map +1 -1
- package/dist/src/schema/schema-differ.d.ts.map +1 -1
- package/dist/src/schema/schema-differ.js +104 -28
- package/dist/src/schema/schema-differ.js.map +1 -1
- package/dist/src/schema/table.d.ts +149 -1
- package/dist/src/schema/table.d.ts.map +1 -1
- package/dist/src/schema/table.js +248 -1
- package/dist/src/schema/table.js.map +1 -1
- package/dist/src/schema/unique-enforcement.d.ts +5 -3
- package/dist/src/schema/unique-enforcement.d.ts.map +1 -1
- package/dist/src/schema/unique-enforcement.js +5 -3
- package/dist/src/schema/unique-enforcement.js.map +1 -1
- package/dist/src/types/builtin-types.d.ts +16 -0
- package/dist/src/types/builtin-types.d.ts.map +1 -1
- package/dist/src/types/builtin-types.js +76 -12
- package/dist/src/types/builtin-types.js.map +1 -1
- package/dist/src/types/cast-semantics.d.ts +42 -0
- package/dist/src/types/cast-semantics.d.ts.map +1 -1
- package/dist/src/types/cast-semantics.js +64 -0
- package/dist/src/types/cast-semantics.js.map +1 -1
- package/dist/src/types/comparison-coercion.d.ts +101 -0
- package/dist/src/types/comparison-coercion.d.ts.map +1 -0
- package/dist/src/types/comparison-coercion.js +162 -0
- package/dist/src/types/comparison-coercion.js.map +1 -0
- package/dist/src/types/index.d.ts +2 -2
- package/dist/src/types/index.d.ts.map +1 -1
- package/dist/src/types/index.js +2 -2
- package/dist/src/types/index.js.map +1 -1
- package/dist/src/types/logical-type.d.ts +7 -0
- package/dist/src/types/logical-type.d.ts.map +1 -1
- package/dist/src/types/logical-type.js.map +1 -1
- package/dist/src/types/validation.d.ts +56 -0
- package/dist/src/types/validation.d.ts.map +1 -1
- package/dist/src/types/validation.js +68 -0
- package/dist/src/types/validation.js.map +1 -1
- package/dist/src/util/coercion.d.ts +8 -0
- package/dist/src/util/coercion.d.ts.map +1 -1
- package/dist/src/util/coercion.js +8 -0
- package/dist/src/util/coercion.js.map +1 -1
- package/dist/src/util/comparison.d.ts +41 -3
- package/dist/src/util/comparison.d.ts.map +1 -1
- package/dist/src/util/comparison.js +52 -5
- package/dist/src/util/comparison.js.map +1 -1
- package/dist/src/util/key-serializer.d.ts +46 -0
- package/dist/src/util/key-serializer.d.ts.map +1 -1
- package/dist/src/util/key-serializer.js +47 -0
- package/dist/src/util/key-serializer.js.map +1 -1
- package/dist/src/util/value-set.d.ts +21 -0
- package/dist/src/util/value-set.d.ts.map +1 -0
- package/dist/src/util/value-set.js +22 -0
- package/dist/src/util/value-set.js.map +1 -0
- package/dist/src/vtab/best-access-plan.d.ts +87 -0
- package/dist/src/vtab/best-access-plan.d.ts.map +1 -1
- package/dist/src/vtab/best-access-plan.js +87 -0
- package/dist/src/vtab/best-access-plan.js.map +1 -1
- package/dist/src/vtab/capabilities.d.ts +1 -1
- package/dist/src/vtab/events.d.ts +5 -1
- package/dist/src/vtab/events.d.ts.map +1 -1
- package/dist/src/vtab/events.js.map +1 -1
- package/dist/src/vtab/memory/layer/alter-column.d.ts +147 -0
- package/dist/src/vtab/memory/layer/alter-column.d.ts.map +1 -0
- package/dist/src/vtab/memory/layer/alter-column.js +214 -0
- package/dist/src/vtab/memory/layer/alter-column.js.map +1 -0
- package/dist/src/vtab/memory/layer/base.d.ts +6 -4
- package/dist/src/vtab/memory/layer/base.d.ts.map +1 -1
- package/dist/src/vtab/memory/layer/base.js +10 -7
- package/dist/src/vtab/memory/layer/base.js.map +1 -1
- package/dist/src/vtab/memory/layer/interface.d.ts +2 -2
- package/dist/src/vtab/memory/layer/interface.d.ts.map +1 -1
- package/dist/src/vtab/memory/layer/manager.d.ts +232 -39
- package/dist/src/vtab/memory/layer/manager.d.ts.map +1 -1
- package/dist/src/vtab/memory/layer/manager.js +657 -519
- package/dist/src/vtab/memory/layer/manager.js.map +1 -1
- package/dist/src/vtab/memory/layer/scan-layer.d.ts.map +1 -1
- package/dist/src/vtab/memory/layer/scan-layer.js +32 -5
- package/dist/src/vtab/memory/layer/scan-layer.js.map +1 -1
- package/dist/src/vtab/memory/layer/transaction.d.ts +111 -16
- package/dist/src/vtab/memory/layer/transaction.d.ts.map +1 -1
- package/dist/src/vtab/memory/layer/transaction.js +154 -51
- package/dist/src/vtab/memory/layer/transaction.js.map +1 -1
- package/dist/src/vtab/memory/module.d.ts +14 -2
- package/dist/src/vtab/memory/module.d.ts.map +1 -1
- package/dist/src/vtab/memory/module.js +53 -40
- package/dist/src/vtab/memory/module.js.map +1 -1
- package/dist/src/vtab/memory/table.d.ts +1 -1
- package/dist/src/vtab/memory/table.d.ts.map +1 -1
- package/dist/src/vtab/memory/table.js +15 -3
- package/dist/src/vtab/memory/table.js.map +1 -1
- package/dist/src/vtab/module.d.ts +51 -21
- package/dist/src/vtab/module.d.ts.map +1 -1
- package/dist/src/vtab/table.d.ts +10 -2
- package/dist/src/vtab/table.d.ts.map +1 -1
- package/dist/src/vtab/table.js +1 -1
- package/dist/src/vtab/table.js.map +1 -1
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ind-utils.js","sourceRoot":"","sources":["../../../../src/planner/util/ind-utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAGH,OAAO,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAEjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"ind-utils.js","sourceRoot":"","sources":["../../../../src/planner/util/ind-utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -116,8 +116,12 @@ export interface JoinKeyCoverageResult {
|
|
|
116
116
|
* @param leftType Logical type of the left child (for logical keys + colCount)
|
|
117
117
|
* @param rightType Logical type of the right child (for logical keys + colCount)
|
|
118
118
|
* @param equiPairs Equi-join column index pairs (left index, right index)
|
|
119
|
-
* @param leftRows Estimated rows from left child
|
|
120
|
-
*
|
|
119
|
+
* @param leftRows Estimated rows from the left child — pass the PHYSICAL
|
|
120
|
+
* count (`physicalSourceRows`), not the logical getter: a
|
|
121
|
+
* physical access node declares no `estimatedRows` getter,
|
|
122
|
+
* so the logical read is `undefined` by the time a join's
|
|
123
|
+
* `computePhysical` runs.
|
|
124
|
+
* @param rightRows Estimated rows from the right child (same rule)
|
|
121
125
|
* @param leftColumnCount Number of columns on the left side (for shifting right key indices)
|
|
122
126
|
*/
|
|
123
127
|
export declare function analyzeJoinKeyCoverage(joinType: JoinType, leftPhys: PhysicalProperties | undefined, rightPhys: PhysicalProperties | undefined, leftType: RelationType | undefined, rightType: RelationType | undefined, equiPairs: ReadonlyArray<{
|
|
@@ -127,8 +131,22 @@ export declare function analyzeJoinKeyCoverage(joinType: JoinType, leftPhys: Phy
|
|
|
127
131
|
/**
|
|
128
132
|
* Extract TableSchema from a plan node by walking down through common wrappers
|
|
129
133
|
* to find a RetrieveNode or TableReferenceNode.
|
|
134
|
+
*
|
|
135
|
+
* Permissive: answers "which table does this subtree ultimately read?", walking
|
|
136
|
+
* through ANY single-relation operator including aggregates and recursive CTEs.
|
|
137
|
+
* That is what FK/PK and key analysis want. When the question is instead "whose
|
|
138
|
+
* statistics describe the rows arriving here", use
|
|
139
|
+
* {@link extractRowSourceTableSchema}.
|
|
130
140
|
*/
|
|
131
141
|
export declare function extractTableSchema(node: RelationalPlanNode): TableSchema | undefined;
|
|
142
|
+
/**
|
|
143
|
+
* The base table whose rows actually reach `node` — declines at any operator that
|
|
144
|
+
* changes the row population (aggregate, recursive CTE, set operation) rather than
|
|
145
|
+
* walking through it. Use this when the question is "whose statistics describe these
|
|
146
|
+
* rows"; use {@link extractTableSchema} when the question is "which table does this
|
|
147
|
+
* subtree read" (FK/key analysis).
|
|
148
|
+
*/
|
|
149
|
+
export declare function extractRowSourceTableSchema(node: RelationalPlanNode): TableSchema | undefined;
|
|
132
150
|
/**
|
|
133
151
|
* Check if an FK→PK relationship aligns with equi-join pairs.
|
|
134
152
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"key-utils.d.ts","sourceRoot":"","sources":["../../../../src/planner/util/key-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,KAAK,EAAE,SAAS,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC/G,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"key-utils.d.ts","sourceRoot":"","sources":["../../../../src/planner/util/key-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,KAAK,EAAE,SAAS,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC/G,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAOzD;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,UAAU,EAAE,aAAa,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,EAAE,aAAa,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,EAAE,EAAE,CAkBpI;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACxC,IAAI,EAAE,cAAc,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,uBAAuB;IACvC,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzB,cAAc,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACxC;AAuCD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,yBAAyB,CAGxC,WAAW,EAAE,SAAS,SAAS,EAAE,EACjC,WAAW,EAAE,SAAS,wBAAwB,EAAE,GAC9C,uBAAuB,CAsCzB;AA0DD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,wBAAgB,eAAe,CAC9B,QAAQ,EAAE,aAAa,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,EAC9C,SAAS,EAAE,aAAa,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,EAC/C,QAAQ,EAAE,QAAQ,EAClB,eAAe,EAAE,MAAM,EACvB,SAAS,CAAC,EAAE,aAAa,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,GACxD,MAAM,EAAE,EAAE,CAuEZ;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,qBAAqB;IACrC,cAAc,EAAE,OAAO,CAAC;IACxB,eAAe,EAAE,OAAO,CAAC;IACzB,aAAa,EAAE,MAAM,EAAE,EAAE,CAAC;IAC1B,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;CAClC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,sBAAsB,CACrC,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,kBAAkB,GAAG,SAAS,EACxC,SAAS,EAAE,kBAAkB,GAAG,SAAS,EACzC,QAAQ,EAAE,YAAY,GAAG,SAAS,EAClC,SAAS,EAAE,YAAY,GAAG,SAAS,EACnC,SAAS,EAAE,aAAa,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,EACzD,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,eAAe,EAAE,MAAM,GACrB,qBAAqB,CAoHvB;AAED;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,kBAAkB,GAAG,WAAW,GAAG,SAAS,CAEpF;AAED;;;;;;GAMG;AACH,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,kBAAkB,GAAG,WAAW,GAAG,SAAS,CAE7F;AAqCD;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CACjC,OAAO,EAAE,WAAW,EACpB,OAAO,EAAE,WAAW,EACpB,aAAa,EAAE,aAAa,CAAC,MAAM,CAAC,EACpC,aAAa,EAAE,aAAa,CAAC,MAAM,CAAC,GAClC,OAAO,CA+CT"}
|
|
@@ -2,6 +2,7 @@ import { resolveReferencedColumns } from '../../schema/table.js';
|
|
|
2
2
|
import { ColumnReferenceNode, ParameterReferenceNode } from '../nodes/reference.js';
|
|
3
3
|
import { LiteralNode } from '../nodes/scalar.js';
|
|
4
4
|
import { isAtMostOneRow, isUnique, isUniqueDeterminant, keysOf } from './fd-utils.js';
|
|
5
|
+
import { changesRowPopulation } from './row-population.js';
|
|
5
6
|
/**
|
|
6
7
|
* Project unique keys through a projection mapping.
|
|
7
8
|
* - sourceKeys: keys defined on the source relation (arrays of column refs by source column index)
|
|
@@ -289,8 +290,12 @@ export function combineJoinKeys(leftKeys, rightKeys, joinType, leftColumnCount,
|
|
|
289
290
|
* @param leftType Logical type of the left child (for logical keys + colCount)
|
|
290
291
|
* @param rightType Logical type of the right child (for logical keys + colCount)
|
|
291
292
|
* @param equiPairs Equi-join column index pairs (left index, right index)
|
|
292
|
-
* @param leftRows Estimated rows from left child
|
|
293
|
-
*
|
|
293
|
+
* @param leftRows Estimated rows from the left child — pass the PHYSICAL
|
|
294
|
+
* count (`physicalSourceRows`), not the logical getter: a
|
|
295
|
+
* physical access node declares no `estimatedRows` getter,
|
|
296
|
+
* so the logical read is `undefined` by the time a join's
|
|
297
|
+
* `computePhysical` runs.
|
|
298
|
+
* @param rightRows Estimated rows from the right child (same rule)
|
|
294
299
|
* @param leftColumnCount Number of columns on the left side (for shifting right key indices)
|
|
295
300
|
*/
|
|
296
301
|
export function analyzeJoinKeyCoverage(joinType, leftPhys, rightPhys, leftType, rightType, equiPairs, leftRows, rightRows, leftColumnCount) {
|
|
@@ -410,8 +415,31 @@ export function analyzeJoinKeyCoverage(joinType, leftPhys, rightPhys, leftType,
|
|
|
410
415
|
/**
|
|
411
416
|
* Extract TableSchema from a plan node by walking down through common wrappers
|
|
412
417
|
* to find a RetrieveNode or TableReferenceNode.
|
|
418
|
+
*
|
|
419
|
+
* Permissive: answers "which table does this subtree ultimately read?", walking
|
|
420
|
+
* through ANY single-relation operator including aggregates and recursive CTEs.
|
|
421
|
+
* That is what FK/PK and key analysis want. When the question is instead "whose
|
|
422
|
+
* statistics describe the rows arriving here", use
|
|
423
|
+
* {@link extractRowSourceTableSchema}.
|
|
413
424
|
*/
|
|
414
425
|
export function extractTableSchema(node) {
|
|
426
|
+
return walkToTableSchema(node, false);
|
|
427
|
+
}
|
|
428
|
+
/**
|
|
429
|
+
* The base table whose rows actually reach `node` — declines at any operator that
|
|
430
|
+
* changes the row population (aggregate, recursive CTE, set operation) rather than
|
|
431
|
+
* walking through it. Use this when the question is "whose statistics describe these
|
|
432
|
+
* rows"; use {@link extractTableSchema} when the question is "which table does this
|
|
433
|
+
* subtree read" (FK/key analysis).
|
|
434
|
+
*/
|
|
435
|
+
export function extractRowSourceTableSchema(node) {
|
|
436
|
+
return walkToTableSchema(node, true);
|
|
437
|
+
}
|
|
438
|
+
/**
|
|
439
|
+
* Shared descent for both variants. `strict` stops the single-relation descent at
|
|
440
|
+
* any row-population-changing operator so the two walks cannot drift apart.
|
|
441
|
+
*/
|
|
442
|
+
function walkToTableSchema(node, strict) {
|
|
415
443
|
// Use duck typing to avoid circular imports
|
|
416
444
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
417
445
|
const n = node;
|
|
@@ -423,10 +451,16 @@ export function extractTableSchema(node) {
|
|
|
423
451
|
if (n.nodeType === 'Retrieve' && n.tableRef) {
|
|
424
452
|
return n.tableRef.tableSchema;
|
|
425
453
|
}
|
|
454
|
+
// A row-population-changing node still has exactly one relation in some shapes
|
|
455
|
+
// (an aggregate's source, a recursive CTE's base case), so the strict walk must
|
|
456
|
+
// decline BEFORE the single-child descent below would step through it.
|
|
457
|
+
if (strict && changesRowPopulation(node)) {
|
|
458
|
+
return undefined;
|
|
459
|
+
}
|
|
426
460
|
// Walk through single-child wrappers (Filter, Project, Sort, etc.)
|
|
427
461
|
const relations = node.getRelations?.() ?? [];
|
|
428
462
|
if (relations.length === 1) {
|
|
429
|
-
return
|
|
463
|
+
return walkToTableSchema(relations[0], strict);
|
|
430
464
|
}
|
|
431
465
|
return undefined;
|
|
432
466
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"key-utils.js","sourceRoot":"","sources":["../../../../src/planner/util/key-utils.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"key-utils.js","sourceRoot":"","sources":["../../../../src/planner/util/key-utils.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AACpF,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,EAAe,MAAM,eAAe,CAAC;AACnG,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAE3D;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAC,UAAgD,EAAE,aAA0C;IACvH,MAAM,MAAM,GAAe,EAAE,CAAC;IAC9B,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAC9B,MAAM,SAAS,GAAa,EAAE,CAAC;QAC/B,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,KAAK,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;YACvB,MAAM,cAAc,GAAG,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACpD,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;gBAClC,OAAO,GAAG,IAAI,CAAC;gBACf,MAAM;YACP,CAAC;YACD,SAAS,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;QAC3D,CAAC;QACD,IAAI,CAAC,OAAO,EAAE,CAAC;YACd,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACxB,CAAC;IACF,CAAC;IACD,OAAO,MAAM,CAAC;AACf,CAAC;AA2BD;;;;;;;GAOG;AACH,SAAS,uBAAuB,CAAC,IAAoB;IACpD,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,IAAI,sBAAsB,GAAG,IAAI,CAAC;IAElC,MAAM,KAAK,GAAqB,CAAC,IAAI,CAAC,CAAC;IACvC,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,MAAM,CAAC,GAAG,KAAK,CAAC,GAAG,EAAG,CAAC;QACvB,IAAI,CAAC,YAAY,mBAAmB,EAAE,CAAC;YACtC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;YAC3B,SAAS;QACV,CAAC;QACD,MAAM,QAAQ,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;QACjC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,wEAAwE;YACxE,IAAI,CAAC,CAAC,CAAC,YAAY,WAAW,IAAI,CAAC,YAAY,sBAAsB,CAAC,EAAE,CAAC;gBACxE,sBAAsB,GAAG,KAAK,CAAC;gBAC/B,MAAM;YACP,CAAC;YACD,SAAS;QACV,CAAC;QACD,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;YAC1B,sFAAsF;YACtF,KAAK,CAAC,IAAI,CAAC,CAAmB,CAAC,CAAC;QACjC,CAAC;IACF,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,sBAAsB,EAAE,CAAC;AAC5C,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,yBAAyB;AACxC,8EAA8E;AAC9E,uFAAuF;AACvF,WAAiC,EACjC,WAAgD;IAEhD,MAAM,GAAG,GAAG,IAAI,GAAG,EAAkB,CAAC;IACtC,MAAM,cAAc,GAA4B,EAAE,CAAC;IAEnD,+DAA+D;IAC/D,KAAK,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,WAAW,EAAE,CAAC;QAC9C,IAAI,IAAI,YAAY,mBAAmB,EAAE,CAAC;YACzC,MAAM,QAAQ,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,WAAW,CAAC,CAAC;YACvE,IAAI,QAAQ,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACzC,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YAC7B,CAAC;QACF,CAAC;IACF,CAAC;IAED,uCAAuC;IACvC,KAAK,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,WAAW,EAAE,CAAC;QAC9C,IAAI,IAAI,YAAY,mBAAmB;YAAE,SAAS;QAElD,MAAM,EAAE,OAAO,EAAE,sBAAsB,EAAE,GAAG,uBAAuB,CAAC,IAAI,CAAC,CAAC;QAC1E,IAAI,CAAC,sBAAsB;YAAE,SAAS;QACtC,IAAI,OAAO,CAAC,IAAI,KAAK,CAAC;YAAE,SAAS;QAEjC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAAe,CAAC;QACvD,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,SAAS;YAAE,SAAS;QAEpD,MAAM,QAAQ,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,CAAC;QAC7D,IAAI,QAAQ,GAAG,CAAC;YAAE,SAAS;QAE3B,yEAAyE;QACzE,wEAAwE;QACxE,4DAA4D;QAC5D,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YACxB,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAC7B,CAAC;QACD,cAAc,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC3C,CAAC;IAED,OAAO,EAAE,GAAG,EAAE,cAAc,EAAE,CAAC;AAChC,CAAC;AAED;;;;;;;;;GASG;AACH,SAAS,iBAAiB,CACzB,IAAqD,EACrD,SAAsB;IAEtB,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC7D,CAAC;AAED,6FAA6F;AAC7F,SAAS,UAAU,CAAC,IAAgB;IACnC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,GAAG,GAAe,EAAE,CAAC;IAC3B,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACtB,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC/D,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,SAAS;QAC5B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACd,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACb,CAAC;IACD,OAAO,GAAG,CAAC;AACZ,CAAC;AAED;;;;;;;;;GASG;AACH,SAAS,eAAe,CACvB,IAAqC,EACrC,OAA0B;IAE1B,IAAI,IAAkC,CAAC;IACvC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACxB,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QAC/B,IAAI,IAAI,KAAK,SAAS;eAClB,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM;eACxB,CAAC,GAAG,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACxE,IAAI,GAAG,GAAG,CAAC;QACZ,CAAC;IACF,CAAC;IACD,OAAO,IAAI,CAAC;AACb,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,MAAM,UAAU,eAAe,CAC9B,QAA8C,EAC9C,SAA+C,EAC/C,QAAkB,EAClB,eAAuB,EACvB,SAA0D;IAE1D,QAAQ,QAAQ,EAAE,CAAC;QAClB,KAAK,OAAO,CAAC;QACb,KAAK,OAAO,CAAC,CAAC,CAAC;YACd,MAAM,MAAM,GAAe,EAAE,CAAC;YAC9B,MAAM,SAAS,GAAG,IAAI,GAAG,CAAS,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YACtE,MAAM,UAAU,GAAG,IAAI,GAAG,CAAS,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;YACxE,qEAAqE;YACrE,mEAAmE;YACnE,MAAM,eAAe,GAAG,iBAAiB,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;YACjE,IAAI,eAAe,EAAE,CAAC;gBACrB,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;oBAC5B,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC/D,CAAC;YACF,CAAC;YACD,oCAAoC;YACpC,MAAM,gBAAgB,GAAG,iBAAiB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;YAChE,IAAI,gBAAgB,EAAE,CAAC;gBACtB,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;oBAC7B,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,GAAG,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;gBACjF,CAAC;YACF,CAAC;YACD,qEAAqE;YACrE,sEAAsE;YACtE,qEAAqE;YACrE,mEAAmE;YACnE,kEAAkE;YAClE,mEAAmE;YACnE,mEAAmE;YACnE,sEAAsE;YACtE,qEAAqE;YACrE,uEAAuE;YACvE,yEAAyE;YACzE,wEAAwE;YACxE,wEAAwE;YACxE,4CAA4C;YAC5C,IAAI,CAAC,eAAe,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBAC3C,MAAM,QAAQ,GAAG,eAAe,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;gBACzD,MAAM,SAAS,GAAG,eAAe,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;gBAC3D,IAAI,QAAQ,IAAI,SAAS,EAAE,CAAC;oBAC3B,MAAM,CAAC,IAAI,CAAC;wBACX,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;wBACxD,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,GAAG,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;qBAC3E,CAAC,CAAC;gBACJ,CAAC;YACF,CAAC;YACD,uEAAuE;YACvE,mEAAmE;YACnE,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC;QAC3B,CAAC;QACD,KAAK,MAAM,CAAC,CAAC,CAAC;YACb,mEAAmE;YACnE,yEAAyE;YACzE,MAAM,UAAU,GAAG,IAAI,GAAG,CAAS,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;YACxE,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,UAAU,CAAC;gBAAE,OAAO,EAAE,CAAC;YACzD,0EAA0E;YAC1E,iEAAiE;YACjE,OAAO,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1F,CAAC;QACD,KAAK,OAAO,CAAC,CAAC,CAAC;YACd,MAAM,SAAS,GAAG,IAAI,GAAG,CAAS,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YACtE,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,SAAS,CAAC;gBAAE,OAAO,EAAE,CAAC;YACvD,OAAO,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,GAAG,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7G,CAAC;QACD,KAAK,MAAM,CAAC;QACZ,KAAK,MAAM;YACV,OAAO,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC9E,KAAK,MAAM,CAAC;QACZ;YACC,OAAO,EAAE,CAAC;IACZ,CAAC;AACF,CAAC;AAiBD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,sBAAsB,CACrC,QAAkB,EAClB,QAAwC,EACxC,SAAyC,EACzC,QAAkC,EAClC,SAAmC,EACnC,SAAyD,EACzD,QAA4B,EAC5B,SAA6B,EAC7B,eAAuB;IAEvB,MAAM,YAAY,GAAG,QAAQ,EAAE,OAAO,CAAC,MAAM,IAAI,eAAe,CAAC;IACjE,MAAM,aAAa,GAAG,SAAS,EAAE,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC;IAErD,sEAAsE;IACtE,qEAAqE;IACrE,6EAA6E;IAC7E,MAAM,eAAe,GAAG,CAAC,QAAQ,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IAC7E,MAAM,gBAAgB,GAAG,CAAC,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IAE/E,8EAA8E;IAC9E,6EAA6E;IAC7E,8EAA8E;IAC9E,MAAM,OAAO,GAAuB,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAC3G,MAAM,QAAQ,GAAuB,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAE/G,8EAA8E;IAC9E,+EAA+E;IAC/E,uEAAuE;IACvE,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC;IACjF,MAAM,gBAAgB,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC;SAC3F,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC;IAE5C,IAAI,QAAQ,KAAK,MAAM,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;QAChD,6EAA6E;QAC7E,6EAA6E;QAC7E,8EAA8E;QAC9E,OAAO;YACN,cAAc,EAAE,KAAK;YACrB,eAAe,EAAE,KAAK;YACtB,aAAa,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;YAC3C,aAAa,EAAE,SAAS;SACxB,CAAC;IACH,CAAC;IAED,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;QACzB,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,aAAa,EAAE,EAAE,EAAE,aAAa,EAAE,SAAS,EAAE,CAAC;IACvG,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,GAAG,CAAS,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9D,MAAM,UAAU,GAAG,IAAI,GAAG,CAAS,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IAEhE,SAAS,gBAAgB,CAAC,IAA0C,EAAE,KAAkB;QACvF,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC7E,CAAC;IAED,0EAA0E;IAC1E,4EAA4E;IAC5E,2EAA2E;IAC3E,8EAA8E;IAC9E,6EAA6E;IAC7E,4EAA4E;IAC5E,2EAA2E;IAC3E,gCAAgC;IAChC,MAAM,cAAc,GAAG,OAAO;QAC7B,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;QAC/C,CAAC,CAAC,gBAAgB,CAAC,eAAe,EAAE,SAAS,CAAC,IAAI,mBAAmB,CAAC,SAAS,EAAE,QAAQ,EAAE,GAAG,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC;IACtH,MAAM,eAAe,GAAG,QAAQ;QAC/B,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC;QACjD,CAAC,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,UAAU,CAAC,IAAI,mBAAmB,CAAC,UAAU,EAAE,SAAS,EAAE,GAAG,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC;IAE3H,qEAAqE;IACrE,MAAM,eAAe,GAAG,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAClE,MAAM,gBAAgB,GAAG,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAErE,MAAM,aAAa,GAAe,EAAE,CAAC;IACrC,IAAI,aAAa,GAAuB,SAAS,CAAC;IAElD,IAAI,QAAQ,KAAK,OAAO,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;QAClD,IAAI,eAAe;YAAE,aAAa,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACzE,IAAI,cAAc;YAAE,aAAa,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAChF,oEAAoE;QACpE,0EAA0E;QAC1E,IAAI,eAAe,IAAI,gBAAgB;YAAE,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEhE,oFAAoF;QACpF,IAAI,eAAe,IAAI,OAAO,QAAQ,KAAK,QAAQ;YAAE,aAAa,GAAG,QAAQ,CAAC;QAC9E,IAAI,cAAc,IAAI,OAAO,SAAS,KAAK,QAAQ;YAAE,aAAa,GAAG,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;QAEpJ,2EAA2E;QAC3E,4EAA4E;QAC5E,2EAA2E;QAC3E,kEAAkE;QAClE,4EAA4E;QAC5E,wEAAwE;QACxE,uEAAuE;QACvE,uEAAuE;QACvE,uEAAuE;QACvE,IAAI,CAAC,cAAc,IAAI,CAAC,eAAe,EAAE,CAAC;YACzC,MAAM,QAAQ,GAAG,eAAe,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACnD,MAAM,SAAS,GAAG,eAAe,CAAC,gBAAgB,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC5D,IAAI,QAAQ,IAAI,SAAS,EAAE,CAAC;gBAC3B,aAAa,CAAC,IAAI,CAAC,CAAC,GAAG,QAAQ,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC;YACjD,CAAC;QACF,CAAC;IACF,CAAC;SAAM,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;QAChC,4EAA4E;QAC5E,4EAA4E;QAC5E,4EAA4E;QAC5E,8EAA8E;QAC9E,IAAI,eAAe,EAAE,CAAC;YACrB,aAAa,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YACpD,IAAI,OAAO,QAAQ,KAAK,QAAQ;gBAAE,aAAa,GAAG,QAAQ,CAAC;QAC5D,CAAC;QACD,wEAAwE;QACxE,IAAI,eAAe,IAAI,gBAAgB;YAAE,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjE,CAAC;SAAM,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjC,qBAAqB;QACrB,IAAI,cAAc,EAAE,CAAC;YACpB,aAAa,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YAC5D,IAAI,OAAO,SAAS,KAAK,QAAQ;gBAAE,aAAa,GAAG,SAAS,CAAC;QAC9D,CAAC;QACD,IAAI,eAAe,IAAI,gBAAgB;YAAE,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjE,CAAC;IAED,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,aAAa,EAAE,aAAa,EAAE,CAAC;AAC1E,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAwB;IAC1D,OAAO,iBAAiB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACvC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,2BAA2B,CAAC,IAAwB;IACnE,OAAO,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACtC,CAAC;AAED;;;GAGG;AACH,SAAS,iBAAiB,CAAC,IAAwB,EAAE,MAAe;IACnE,4CAA4C;IAC5C,8DAA8D;IAC9D,MAAM,CAAC,GAAG,IAAW,CAAC;IAEtB,qBAAqB;IACrB,IAAI,CAAC,CAAC,QAAQ,KAAK,gBAAgB,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;QACtD,OAAO,CAAC,CAAC,WAA0B,CAAC;IACrC,CAAC;IAED,eAAe;IACf,IAAI,CAAC,CAAC,QAAQ,KAAK,UAAU,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC7C,OAAO,CAAC,CAAC,QAAQ,CAAC,WAAsC,CAAC;IAC1D,CAAC;IAED,+EAA+E;IAC/E,gFAAgF;IAChF,uEAAuE;IACvE,IAAI,MAAM,IAAI,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1C,OAAO,SAAS,CAAC;IAClB,CAAC;IAED,mEAAmE;IACnE,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,EAAE,IAAI,EAAE,CAAC;IAC9C,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,iBAAiB,CAAC,SAAS,CAAC,CAAC,CAAuB,EAAE,MAAM,CAAC,CAAC;IACtE,CAAC;IAED,OAAO,SAAS,CAAC;AAClB,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,kBAAkB,CACjC,OAAoB,EACpB,OAAoB,EACpB,aAAoC,EACpC,aAAoC;IAEpC,IAAI,CAAC,OAAO,CAAC,WAAW;QAAE,OAAO,KAAK,CAAC;IAEvC,KAAK,MAAM,EAAE,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;QACtC,IAAI,EAAE,CAAC,eAAe,CAAC,WAAW,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE;YAAE,SAAS;QAE9E,MAAM,KAAK,GAAG,OAAO,CAAC,oBAAoB,CAAC;QAC3C,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM;YAAE,SAAS;QAEvE,wEAAwE;QACxE,qDAAqD;QACrD,IAAI,OAA8B,CAAC;QACnC,IAAI,CAAC;YACJ,OAAO,GAAG,wBAAwB,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QACjD,CAAC;QAAC,MAAM,CAAC;YACR,SAAS;QACV,CAAC;QACD,IAAI,OAAO,CAAC,MAAM,KAAK,EAAE,CAAC,OAAO,CAAC,MAAM;YAAE,SAAS;QAEnD,wEAAwE;QACxE,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;QAC1C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC/C,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;QACjD,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;QACpD,IAAI,UAAU,GAAG,IAAI,CAAC;QACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5C,sEAAsE;YACtE,uCAAuC;YACvC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC/B,UAAU,GAAG,KAAK,CAAC;gBACnB,MAAM;YACP,CAAC;YACD,qEAAqE;YACrE,+CAA+C;YAC/C,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;YAC3C,IAAI,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC5B,UAAU,GAAG,KAAK,CAAC;gBACnB,MAAM;YACP,CAAC;QACF,CAAC;QAED,IAAI,UAAU;YAAE,OAAO,IAAI,CAAC;IAC7B,CAAC;IAED,OAAO,KAAK,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Row-estimate plumbing shared by `computePhysical` implementations.
|
|
3
|
+
*
|
|
4
|
+
* A relational node carries two row counts:
|
|
5
|
+
* - the LOGICAL one, the `estimatedRows` getter, available before optimization
|
|
6
|
+
* and derived from the *logical* children;
|
|
7
|
+
* - the PHYSICAL one, `physical.estimatedRows`, folded bottom-up during the
|
|
8
|
+
* Physical pass from the children's already-computed physical properties.
|
|
9
|
+
*
|
|
10
|
+
* The two diverge the moment the optimizer replaces a `Retrieve` subtree with a
|
|
11
|
+
* physical access node (`SeqScan` / `IndexScan` / `IndexSeek`): those declare no
|
|
12
|
+
* `estimatedRows` getter, so every logical getter reading through them yields
|
|
13
|
+
* `undefined` while their physical property holds the real catalog-derived count.
|
|
14
|
+
* A `computePhysical` that estimates from `this.source.estimatedRows` therefore
|
|
15
|
+
* silently loses the count for the rest of the plan.
|
|
16
|
+
*/
|
|
17
|
+
import type { PhysicalProperties, RelationalPlanNode } from '../nodes/plan-node.js';
|
|
18
|
+
/**
|
|
19
|
+
* The source cardinality a `computePhysical` should estimate from: the child's
|
|
20
|
+
* physical row count when it has one, else the child's logical getter.
|
|
21
|
+
*
|
|
22
|
+
* The logical fallback matters for nodes whose child never stamps a physical
|
|
23
|
+
* count (a scalar-subquery relation, a module leaf that declines to estimate) —
|
|
24
|
+
* there the logical getter is the only number available, and it is still the
|
|
25
|
+
* pre-optimization truth.
|
|
26
|
+
*/
|
|
27
|
+
export declare function physicalSourceRows(childPhysical: PhysicalProperties | undefined, source: RelationalPlanNode): number | undefined;
|
|
28
|
+
//# sourceMappingURL=row-estimates.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"row-estimates.d.ts","sourceRoot":"","sources":["../../../../src/planner/util/row-estimates.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAEpF;;;;;;;;GAQG;AAYH,wBAAgB,kBAAkB,CACjC,aAAa,EAAE,kBAAkB,GAAG,SAAS,EAC7C,MAAM,EAAE,kBAAkB,GACxB,MAAM,GAAG,SAAS,CAEpB"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Row-estimate plumbing shared by `computePhysical` implementations.
|
|
3
|
+
*
|
|
4
|
+
* A relational node carries two row counts:
|
|
5
|
+
* - the LOGICAL one, the `estimatedRows` getter, available before optimization
|
|
6
|
+
* and derived from the *logical* children;
|
|
7
|
+
* - the PHYSICAL one, `physical.estimatedRows`, folded bottom-up during the
|
|
8
|
+
* Physical pass from the children's already-computed physical properties.
|
|
9
|
+
*
|
|
10
|
+
* The two diverge the moment the optimizer replaces a `Retrieve` subtree with a
|
|
11
|
+
* physical access node (`SeqScan` / `IndexScan` / `IndexSeek`): those declare no
|
|
12
|
+
* `estimatedRows` getter, so every logical getter reading through them yields
|
|
13
|
+
* `undefined` while their physical property holds the real catalog-derived count.
|
|
14
|
+
* A `computePhysical` that estimates from `this.source.estimatedRows` therefore
|
|
15
|
+
* silently loses the count for the rest of the plan.
|
|
16
|
+
*/
|
|
17
|
+
/**
|
|
18
|
+
* The source cardinality a `computePhysical` should estimate from: the child's
|
|
19
|
+
* physical row count when it has one, else the child's logical getter.
|
|
20
|
+
*
|
|
21
|
+
* The logical fallback matters for nodes whose child never stamps a physical
|
|
22
|
+
* count (a scalar-subquery relation, a module leaf that declines to estimate) —
|
|
23
|
+
* there the logical getter is the only number available, and it is still the
|
|
24
|
+
* pre-optimization truth.
|
|
25
|
+
*/
|
|
26
|
+
// NOTE: `SchemaManager` hardcodes `TableSchema.estimatedRows` to 0 at CREATE TABLE,
|
|
27
|
+
// so a never-analyzed table's scan reports 0 — a value that means "unknown", not
|
|
28
|
+
// "empty" (see the NOTE in `planner/stats/table-cardinality.ts`). That 0 now travels
|
|
29
|
+
// much further than it used to: before this relay it died at the first operator that
|
|
30
|
+
// read a logical getter, and consumers fell back to their own defaults instead. Any
|
|
31
|
+
// consumer that reads a row estimate as a *magnitude* must therefore spell 0 as
|
|
32
|
+
// unknown — `rule-cte-optimization` gates on `sourceSize > 0` and had to be taught
|
|
33
|
+
// this (its `|| defaultRowEstimate` matches `vtab/memory/module.ts`); threshold
|
|
34
|
+
// consumers that floor (the cache threshold's min of 1000) or use a `>` test are
|
|
35
|
+
// unaffected. The real fix is distinguishing unknown from empty at the source —
|
|
36
|
+
// not clamping here, which would erase a genuinely empty analyzed table.
|
|
37
|
+
export function physicalSourceRows(childPhysical, source) {
|
|
38
|
+
return childPhysical?.estimatedRows ?? source.estimatedRows;
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=row-estimates.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"row-estimates.js","sourceRoot":"","sources":["../../../../src/planner/util/row-estimates.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAIH;;;;;;;;GAQG;AACH,oFAAoF;AACpF,iFAAiF;AACjF,qFAAqF;AACrF,qFAAqF;AACrF,oFAAoF;AACpF,gFAAgF;AAChF,mFAAmF;AACnF,gFAAgF;AAChF,iFAAiF;AACjF,gFAAgF;AAChF,yEAAyE;AACzE,MAAM,UAAU,kBAAkB,CACjC,aAA6C,EAC7C,MAA0B;IAE1B,OAAO,aAAa,EAAE,aAAa,IAAI,MAAM,CAAC,aAAa,CAAC;AAC7D,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Row-population predicates.
|
|
3
|
+
*
|
|
4
|
+
* Answers one question: are the rows a node emits *the same rows* its source
|
|
5
|
+
* relation holds, or a different population entirely? Two callers need it —
|
|
6
|
+
* `column-origins.ts` (which attribute ids describe a base-table column) and
|
|
7
|
+
* `key-utils.ts`'s `extractRowSourceTableSchema` (whose statistics describe the
|
|
8
|
+
* rows arriving here) — and they must not drift apart.
|
|
9
|
+
*
|
|
10
|
+
* Decided by `nodeType` rather than `instanceof`: `plan-node-type.ts` is a leaf
|
|
11
|
+
* module, so importing it cannot introduce a cycle into `key-utils.ts` (which is
|
|
12
|
+
* imported from deep inside the node layer).
|
|
13
|
+
*
|
|
14
|
+
* NOTE: `Distinct` is deliberately NOT here. Its output rows are a *subset* of
|
|
15
|
+
* its source's rows, not a different population, so a base-table row fraction
|
|
16
|
+
* stays a defensible approximation. If a filter over a `distinct` ever shows a
|
|
17
|
+
* bad estimate, the reason is a heavily-skewed column — the fraction of *rows*
|
|
18
|
+
* matching a predicate and the fraction of *distinct rows* matching it diverge
|
|
19
|
+
* when values repeat unevenly — and `Distinct` should join `isRowRegrouping`.
|
|
20
|
+
* `LimitOffset`, `OrdinalSlice` and the physical access nodes are excluded for
|
|
21
|
+
* the same reason: subsets, not different populations.
|
|
22
|
+
*/
|
|
23
|
+
import type { RelationalPlanNode } from '../nodes/plan-node.js';
|
|
24
|
+
/**
|
|
25
|
+
* Does this node publish one branch's attribute ids over rows drawn from several
|
|
26
|
+
* branches? Such an id describes no single base-table column: `union all` of a
|
|
27
|
+
* 4-distinct-value column with a 1000-distinct-value one publishes the left
|
|
28
|
+
* branch's id while carrying both distributions.
|
|
29
|
+
*/
|
|
30
|
+
export declare function isRowMerging(node: RelationalPlanNode): boolean;
|
|
31
|
+
/**
|
|
32
|
+
* Does this node emit one row per group rather than one row per input row? The
|
|
33
|
+
* output cardinality is the group count and the output values are aggregates, so
|
|
34
|
+
* the source's per-row statistics describe neither.
|
|
35
|
+
*/
|
|
36
|
+
export declare function isRowRegrouping(node: RelationalPlanNode): boolean;
|
|
37
|
+
/**
|
|
38
|
+
* Either of the above: the rows this node emits are not the source relation's
|
|
39
|
+
* rows, so the source's statistics do not describe them.
|
|
40
|
+
*/
|
|
41
|
+
export declare function changesRowPopulation(node: RelationalPlanNode): boolean;
|
|
42
|
+
//# sourceMappingURL=row-population.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"row-population.d.ts","sourceRoot":"","sources":["../../../../src/planner/util/row-population.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAGhE;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAgB9D;AAUD;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAIjE;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAEtE"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Row-population predicates.
|
|
3
|
+
*
|
|
4
|
+
* Answers one question: are the rows a node emits *the same rows* its source
|
|
5
|
+
* relation holds, or a different population entirely? Two callers need it —
|
|
6
|
+
* `column-origins.ts` (which attribute ids describe a base-table column) and
|
|
7
|
+
* `key-utils.ts`'s `extractRowSourceTableSchema` (whose statistics describe the
|
|
8
|
+
* rows arriving here) — and they must not drift apart.
|
|
9
|
+
*
|
|
10
|
+
* Decided by `nodeType` rather than `instanceof`: `plan-node-type.ts` is a leaf
|
|
11
|
+
* module, so importing it cannot introduce a cycle into `key-utils.ts` (which is
|
|
12
|
+
* imported from deep inside the node layer).
|
|
13
|
+
*
|
|
14
|
+
* NOTE: `Distinct` is deliberately NOT here. Its output rows are a *subset* of
|
|
15
|
+
* its source's rows, not a different population, so a base-table row fraction
|
|
16
|
+
* stays a defensible approximation. If a filter over a `distinct` ever shows a
|
|
17
|
+
* bad estimate, the reason is a heavily-skewed column — the fraction of *rows*
|
|
18
|
+
* matching a predicate and the fraction of *distinct rows* matching it diverge
|
|
19
|
+
* when values repeat unevenly — and `Distinct` should join `isRowRegrouping`.
|
|
20
|
+
* `LimitOffset`, `OrdinalSlice` and the physical access nodes are excluded for
|
|
21
|
+
* the same reason: subsets, not different populations.
|
|
22
|
+
*/
|
|
23
|
+
import { PlanNodeType } from '../nodes/plan-node-type.js';
|
|
24
|
+
/**
|
|
25
|
+
* Does this node publish one branch's attribute ids over rows drawn from several
|
|
26
|
+
* branches? Such an id describes no single base-table column: `union all` of a
|
|
27
|
+
* 4-distinct-value column with a 1000-distinct-value one publishes the left
|
|
28
|
+
* branch's id while carrying both distributions.
|
|
29
|
+
*/
|
|
30
|
+
export function isRowMerging(node) {
|
|
31
|
+
switch (node.nodeType) {
|
|
32
|
+
case PlanNodeType.SetOperation:
|
|
33
|
+
case PlanNodeType.RecursiveCTE:
|
|
34
|
+
return true;
|
|
35
|
+
case PlanNodeType.AsyncGather:
|
|
36
|
+
// `rule-async-gather-union-all` (PostOptimization) REPLACES a unionAll
|
|
37
|
+
// SetOperation with a gather that keeps children[0]'s attribute ids
|
|
38
|
+
// verbatim — same forwarding, same hazard, no SetOperation left in the
|
|
39
|
+
// plan to recognise. Its other combinators are safe: `crossProduct`
|
|
40
|
+
// concatenates every branch's own ids and `zipByKey` mints fresh ids for
|
|
41
|
+
// the merged key columns.
|
|
42
|
+
return asyncGatherCombinatorKind(node) === 'unionAll';
|
|
43
|
+
default:
|
|
44
|
+
return false;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* `AsyncGatherNode.combinator.kind`, read structurally so this module stays a leaf
|
|
49
|
+
* (importing the node class would put `key-utils.ts` at risk of a cycle).
|
|
50
|
+
*/
|
|
51
|
+
function asyncGatherCombinatorKind(node) {
|
|
52
|
+
return node.combinator?.kind;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Does this node emit one row per group rather than one row per input row? The
|
|
56
|
+
* output cardinality is the group count and the output values are aggregates, so
|
|
57
|
+
* the source's per-row statistics describe neither.
|
|
58
|
+
*/
|
|
59
|
+
export function isRowRegrouping(node) {
|
|
60
|
+
return node.nodeType === PlanNodeType.Aggregate
|
|
61
|
+
|| node.nodeType === PlanNodeType.StreamAggregate
|
|
62
|
+
|| node.nodeType === PlanNodeType.HashAggregate;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Either of the above: the rows this node emits are not the source relation's
|
|
66
|
+
* rows, so the source's statistics do not describe them.
|
|
67
|
+
*/
|
|
68
|
+
export function changesRowPopulation(node) {
|
|
69
|
+
return isRowMerging(node) || isRowRegrouping(node);
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=row-population.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"row-population.js","sourceRoot":"","sources":["../../../../src/planner/util/row-population.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE1D;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,IAAwB;IACpD,QAAQ,IAAI,CAAC,QAAQ,EAAE,CAAC;QACvB,KAAK,YAAY,CAAC,YAAY,CAAC;QAC/B,KAAK,YAAY,CAAC,YAAY;YAC7B,OAAO,IAAI,CAAC;QACb,KAAK,YAAY,CAAC,WAAW;YAC5B,uEAAuE;YACvE,oEAAoE;YACpE,uEAAuE;YACvE,oEAAoE;YACpE,yEAAyE;YACzE,0BAA0B;YAC1B,OAAO,yBAAyB,CAAC,IAAI,CAAC,KAAK,UAAU,CAAC;QACvD;YACC,OAAO,KAAK,CAAC;IACf,CAAC;AACF,CAAC;AAED;;;GAGG;AACH,SAAS,yBAAyB,CAAC,IAAwB;IAC1D,OAAQ,IAAgE,CAAC,UAAU,EAAE,IAAI,CAAC;AAC3F,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,IAAwB;IACvD,OAAO,IAAI,CAAC,QAAQ,KAAK,YAAY,CAAC,SAAS;WAC3C,IAAI,CAAC,QAAQ,KAAK,YAAY,CAAC,eAAe;WAC9C,IAAI,CAAC,QAAQ,KAAK,YAAY,CAAC,aAAa,CAAC;AAClD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,IAAwB;IAC5D,OAAO,YAAY,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC;AACpD,CAAC"}
|
|
@@ -10,6 +10,15 @@ export interface DeferredConstraintRow {
|
|
|
10
10
|
connectionId?: string;
|
|
11
11
|
contextRow?: Row;
|
|
12
12
|
contextDescriptor?: RowDescriptor;
|
|
13
|
+
/**
|
|
14
|
+
* Lowercase `<schema>.<name>` as this entry's frozen evaluator names a table →
|
|
15
|
+
* the name that table carries now. Populated by {@link DeferredConstraintQueue.notifyTableRename}
|
|
16
|
+
* for renames that happen AFTER this entry was queued, and handed to the scan
|
|
17
|
+
* leaf via `RuntimeContext.tableNameRemap` at evaluation time. Per-entry rather
|
|
18
|
+
* than queue-wide because a freed name may be reused by a fresh table in the
|
|
19
|
+
* same transaction — only entries queued before the rename may be redirected.
|
|
20
|
+
*/
|
|
21
|
+
tableRenames?: Map<string, string>;
|
|
13
22
|
}
|
|
14
23
|
export declare class DeferredConstraintQueue {
|
|
15
24
|
private readonly db;
|
|
@@ -17,6 +26,37 @@ export declare class DeferredConstraintQueue {
|
|
|
17
26
|
private layers;
|
|
18
27
|
constructor(db: Database);
|
|
19
28
|
enqueue(baseTable: string, constraintName: string, row: Row, descriptor: RowDescriptor, evaluator: (ctx: RuntimeContext) => OutputValue, connectionId?: string, contextRow?: Row, contextDescriptor?: RowDescriptor): void;
|
|
29
|
+
/**
|
|
30
|
+
* Records an `ALTER TABLE ... RENAME TO` against every entry already queued, so a
|
|
31
|
+
* check parked before the rename still finds its tables at commit.
|
|
32
|
+
*
|
|
33
|
+
* Two halves:
|
|
34
|
+
* - every pending entry learns `<schema>.<oldName>` → `newName`, composing across
|
|
35
|
+
* repeated renames (`pp → pp2 → pp3` leaves `main.pp` → `pp3`). Composition is
|
|
36
|
+
* confined to keys in the renamed table's own schema — map VALUES are bare names,
|
|
37
|
+
* so a same-named table in another schema must not follow this rename. An entry
|
|
38
|
+
* that already maps `<schema>.<oldName>` is left alone on that key: its emit-time
|
|
39
|
+
* table has moved on, and this rename is about whichever table holds the freed
|
|
40
|
+
* name now.
|
|
41
|
+
* - the bucket keyed by the write-time table name moves with the table, so
|
|
42
|
+
* {@link findConnection}'s name fallback keys off the CURRENT name.
|
|
43
|
+
*
|
|
44
|
+
* NOTE: stamps every pending entry, including entries below the current savepoint
|
|
45
|
+
* layer, and `rollbackLayer` does not unstamp them. Correct today because a catalog
|
|
46
|
+
* rename is not rolled back either — the built-in modules declare the
|
|
47
|
+
* `'non-transactional'` DDL tier, so `rollback to <savepoint>` (and a whole
|
|
48
|
+
* `rollback`) leave the rename applied. If transactional DDL ever lands for the
|
|
49
|
+
* native backends, this remap has to become layer-scoped alongside the catalog.
|
|
50
|
+
*
|
|
51
|
+
* NOTE: walks every queued entry per rename, and each entry owns its own map — so a
|
|
52
|
+
* bulk load that parks a very large number of deferred rows and then renames pays
|
|
53
|
+
* O(entries) per rename plus one Map per entry. Fine at today's scale (renames inside
|
|
54
|
+
* a write transaction are rare); if that combination ever shows up hot, share one
|
|
55
|
+
* copy-on-write rename map across the entries queued between two renames.
|
|
56
|
+
*/
|
|
57
|
+
notifyTableRename(schemaName: string, oldName: string, newName: string): void;
|
|
58
|
+
/** Moves the `oldKey` bucket to `newKey`, merging per-constraint row lists into an existing destination. */
|
|
59
|
+
private rekeyBucket;
|
|
20
60
|
beginLayer(): void;
|
|
21
61
|
rollbackLayer(): void;
|
|
22
62
|
releaseLayer(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deferred-constraint-queue.d.ts","sourceRoot":"","sources":["../../../src/runtime/deferred-constraint-queue.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAY,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACrE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AASpD,MAAM,WAAW,qBAAqB;IACrC,GAAG,EAAE,GAAG,CAAC;IACT,UAAU,EAAE,aAAa,CAAC;IAC1B,SAAS,EAAE,CAAC,GAAG,EAAE,cAAc,KAAK,WAAW,CAAC;IAChD,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,GAAG,CAAC;IACjB,iBAAiB,CAAC,EAAE,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"deferred-constraint-queue.d.ts","sourceRoot":"","sources":["../../../src/runtime/deferred-constraint-queue.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAY,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACrE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AASpD,MAAM,WAAW,qBAAqB;IACrC,GAAG,EAAE,GAAG,CAAC;IACT,UAAU,EAAE,aAAa,CAAC;IAC1B,SAAS,EAAE,CAAC,GAAG,EAAE,cAAc,KAAK,WAAW,CAAC;IAChD,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,GAAG,CAAC;IACjB,iBAAiB,CAAC,EAAE,aAAa,CAAC;IAClC;;;;;;;OAOG;IACH,YAAY,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACnC;AAID,qBAAa,uBAAuB;IAIvB,OAAO,CAAC,QAAQ,CAAC,EAAE;IAH/B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAwC;IAChE,OAAO,CAAC,MAAM,CAAmC;gBAEpB,EAAE,EAAE,QAAQ;IAEzC,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,UAAU,EAAE,aAAa,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,cAAc,KAAK,WAAW,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,GAAG,EAAE,iBAAiB,CAAC,EAAE,aAAa,GAAG,IAAI;IAiB1N;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BG;IACH,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IA4B7E,4GAA4G;IAC5G,OAAO,CAAC,WAAW;IAgBnB,UAAU,IAAI,IAAI;IAIlB,aAAa,IAAI,IAAI;IAIrB,YAAY,IAAI,IAAI;IAOpB,KAAK,IAAI,IAAI;IAKP,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;YA4BxB,aAAa;IA0B3B,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,UAAU;IAKlB,OAAO,CAAC,QAAQ;IA4BhB,OAAO,CAAC,KAAK;IAYb,OAAO,CAAC,cAAc;CAkCtB"}
|
|
@@ -29,6 +29,80 @@ export class DeferredConstraintQueue {
|
|
|
29
29
|
contextDescriptor
|
|
30
30
|
});
|
|
31
31
|
}
|
|
32
|
+
/**
|
|
33
|
+
* Records an `ALTER TABLE ... RENAME TO` against every entry already queued, so a
|
|
34
|
+
* check parked before the rename still finds its tables at commit.
|
|
35
|
+
*
|
|
36
|
+
* Two halves:
|
|
37
|
+
* - every pending entry learns `<schema>.<oldName>` → `newName`, composing across
|
|
38
|
+
* repeated renames (`pp → pp2 → pp3` leaves `main.pp` → `pp3`). Composition is
|
|
39
|
+
* confined to keys in the renamed table's own schema — map VALUES are bare names,
|
|
40
|
+
* so a same-named table in another schema must not follow this rename. An entry
|
|
41
|
+
* that already maps `<schema>.<oldName>` is left alone on that key: its emit-time
|
|
42
|
+
* table has moved on, and this rename is about whichever table holds the freed
|
|
43
|
+
* name now.
|
|
44
|
+
* - the bucket keyed by the write-time table name moves with the table, so
|
|
45
|
+
* {@link findConnection}'s name fallback keys off the CURRENT name.
|
|
46
|
+
*
|
|
47
|
+
* NOTE: stamps every pending entry, including entries below the current savepoint
|
|
48
|
+
* layer, and `rollbackLayer` does not unstamp them. Correct today because a catalog
|
|
49
|
+
* rename is not rolled back either — the built-in modules declare the
|
|
50
|
+
* `'non-transactional'` DDL tier, so `rollback to <savepoint>` (and a whole
|
|
51
|
+
* `rollback`) leave the rename applied. If transactional DDL ever lands for the
|
|
52
|
+
* native backends, this remap has to become layer-scoped alongside the catalog.
|
|
53
|
+
*
|
|
54
|
+
* NOTE: walks every queued entry per rename, and each entry owns its own map — so a
|
|
55
|
+
* bulk load that parks a very large number of deferred rows and then renames pays
|
|
56
|
+
* O(entries) per rename plus one Map per entry. Fine at today's scale (renames inside
|
|
57
|
+
* a write transaction are rare); if that combination ever shows up hot, share one
|
|
58
|
+
* copy-on-write rename map across the entries queued between two renames.
|
|
59
|
+
*/
|
|
60
|
+
notifyTableRename(schemaName, oldName, newName) {
|
|
61
|
+
const oldKey = `${schemaName}.${oldName}`.toLowerCase();
|
|
62
|
+
const newKey = `${schemaName}.${newName}`.toLowerCase();
|
|
63
|
+
const oldLower = oldName.toLowerCase();
|
|
64
|
+
const schemaPrefix = `${schemaName.toLowerCase()}.`;
|
|
65
|
+
const stampStore = (store) => {
|
|
66
|
+
for (const constraints of store.values()) {
|
|
67
|
+
for (const rows of constraints.values()) {
|
|
68
|
+
for (const entry of rows) {
|
|
69
|
+
const renames = entry.tableRenames ?? new Map();
|
|
70
|
+
for (const [key, current] of renames) {
|
|
71
|
+
if (key.startsWith(schemaPrefix) && current.toLowerCase() === oldLower) {
|
|
72
|
+
renames.set(key, newName);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
if (!renames.has(oldKey))
|
|
76
|
+
renames.set(oldKey, newName);
|
|
77
|
+
entry.tableRenames = renames;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
this.rekeyBucket(store, oldKey, newKey);
|
|
82
|
+
};
|
|
83
|
+
stampStore(this.entries);
|
|
84
|
+
for (const layer of this.layers)
|
|
85
|
+
stampStore(layer);
|
|
86
|
+
}
|
|
87
|
+
/** Moves the `oldKey` bucket to `newKey`, merging per-constraint row lists into an existing destination. */
|
|
88
|
+
rekeyBucket(store, oldKey, newKey) {
|
|
89
|
+
if (oldKey === newKey)
|
|
90
|
+
return;
|
|
91
|
+
const bucket = store.get(oldKey);
|
|
92
|
+
if (!bucket)
|
|
93
|
+
return;
|
|
94
|
+
store.delete(oldKey);
|
|
95
|
+
const dest = store.get(newKey);
|
|
96
|
+
if (!dest) {
|
|
97
|
+
store.set(newKey, bucket);
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
for (const [constraintName, rows] of bucket) {
|
|
101
|
+
if (!dest.has(constraintName))
|
|
102
|
+
dest.set(constraintName, []);
|
|
103
|
+
dest.get(constraintName).push(...rows);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
32
106
|
beginLayer() {
|
|
33
107
|
this.layers.push(new Map());
|
|
34
108
|
}
|
|
@@ -65,6 +139,9 @@ export class DeferredConstraintQueue {
|
|
|
65
139
|
for (const entry of rows) {
|
|
66
140
|
const connection = this.findConnection(activeConnections, table, entry.connectionId);
|
|
67
141
|
runtimeCtx.activeConnection = connection;
|
|
142
|
+
// Per entry: the evaluator was frozen at row-write time, so any table it
|
|
143
|
+
// names by the pre-rename name resolves through this map in the scan leaf.
|
|
144
|
+
runtimeCtx.tableNameRemap = entry.tableRenames;
|
|
68
145
|
await this.evaluateEntry(runtimeCtx, entry);
|
|
69
146
|
}
|
|
70
147
|
}
|
|
@@ -81,6 +158,12 @@ export class DeferredConstraintQueue {
|
|
|
81
158
|
try {
|
|
82
159
|
slot.set(evaluationRow);
|
|
83
160
|
const value = await entry.evaluator(runtimeCtx);
|
|
161
|
+
// NOTE: unreachable from today's two enqueue sites (runtime/emit/constraint-check.ts
|
|
162
|
+
// and core/derived-row-validator.ts) — both wrap their evaluator so it throws its
|
|
163
|
+
// own message, attributed identically to the immediate path. This stays as the
|
|
164
|
+
// safety net for any future caller that queues a raw evaluator; if that never
|
|
165
|
+
// happens, it can go, and if it does, prefer teaching the caller to self-attribute
|
|
166
|
+
// over enriching this generic (name-only) message.
|
|
84
167
|
if (value !== null && !isTruthy(value)) {
|
|
85
168
|
throw new QuereusError(`CHECK constraint failed: ${entry.constraintName}`, StatusCode.CONSTRAINT);
|
|
86
169
|
}
|
|
@@ -116,6 +199,7 @@ export class DeferredConstraintQueue {
|
|
|
116
199
|
connectionId: entry.connectionId,
|
|
117
200
|
contextRow: entry.contextRow ? entry.contextRow.slice() : undefined,
|
|
118
201
|
contextDescriptor: entry.contextDescriptor,
|
|
202
|
+
tableRenames: entry.tableRenames,
|
|
119
203
|
})));
|
|
120
204
|
}
|
|
121
205
|
}
|
|
@@ -147,15 +231,12 @@ export class DeferredConstraintQueue {
|
|
|
147
231
|
throw new QuereusError(`Deferred constraint execution could not find connectionId=${preferredId} for table ${tableKey}`, StatusCode.INTERNAL);
|
|
148
232
|
}
|
|
149
233
|
// NOTE: this name fallback is only reached when the enqueue site had no
|
|
150
|
-
// `activeConnection` to stamp. `tableKey` is the
|
|
151
|
-
//
|
|
152
|
-
//
|
|
153
|
-
//
|
|
154
|
-
//
|
|
155
|
-
//
|
|
156
|
-
// fails earlier (fix/deferred-foreign-key-breaks-when-table-renamed-in-same-transaction).
|
|
157
|
-
// If that fix makes rename-then-deferred-check reachable, key the fallback off the
|
|
158
|
-
// table's CURRENT name rather than the write-time one.
|
|
234
|
+
// `activeConnection` to stamp. `tableKey` is the table's CURRENT name, not the
|
|
235
|
+
// write-time one: `notifyTableRename` moves the bucket whenever an
|
|
236
|
+
// `ALTER TABLE ... RENAME TO` lands mid-transaction, matching the modules that
|
|
237
|
+
// re-key their connections on rename (see MemoryTableManager.rekeyRegisteredConnections).
|
|
238
|
+
// Were the two to drift apart, the entry would evaluate with no active connection and
|
|
239
|
+
// read committed state instead of the transaction's own writes.
|
|
159
240
|
const normalized = tableKey.toLowerCase();
|
|
160
241
|
const simple = normalized.includes('.') ? normalized.substring(normalized.lastIndexOf('.') + 1) : normalized;
|
|
161
242
|
const matches = connections.filter(conn => {
|