@quereus/quereus 2.8.0 → 3.0.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 +224 -222
- package/dist/src/core/database-assertions.d.ts +36 -16
- package/dist/src/core/database-assertions.d.ts.map +1 -1
- package/dist/src/core/database-assertions.js +222 -118
- package/dist/src/core/database-assertions.js.map +1 -1
- package/dist/src/core/database-transaction.d.ts +96 -13
- package/dist/src/core/database-transaction.d.ts.map +1 -1
- package/dist/src/core/database-transaction.js +294 -35
- package/dist/src/core/database-transaction.js.map +1 -1
- package/dist/src/core/database-watchers.d.ts +58 -0
- package/dist/src/core/database-watchers.d.ts.map +1 -0
- package/dist/src/core/database-watchers.js +206 -0
- package/dist/src/core/database-watchers.js.map +1 -0
- package/dist/src/core/database.d.ts +78 -5
- package/dist/src/core/database.d.ts.map +1 -1
- package/dist/src/core/database.js +120 -20
- package/dist/src/core/database.js.map +1 -1
- package/dist/src/core/statement.d.ts +9 -0
- package/dist/src/core/statement.d.ts.map +1 -1
- package/dist/src/core/statement.js +29 -0
- package/dist/src/core/statement.js.map +1 -1
- package/dist/src/core/table-handle.d.ts +45 -0
- package/dist/src/core/table-handle.d.ts.map +1 -0
- package/dist/src/core/table-handle.js +54 -0
- package/dist/src/core/table-handle.js.map +1 -0
- package/dist/src/emit/ast-stringify.d.ts.map +1 -1
- package/dist/src/emit/ast-stringify.js +0 -3
- package/dist/src/emit/ast-stringify.js.map +1 -1
- package/dist/src/func/builtins/conversion.d.ts.map +1 -1
- package/dist/src/func/builtins/conversion.js +12 -1
- package/dist/src/func/builtins/conversion.js.map +1 -1
- package/dist/src/func/builtins/explain.d.ts.map +1 -1
- package/dist/src/func/builtins/explain.js +22 -8
- package/dist/src/func/builtins/explain.js.map +1 -1
- package/dist/src/func/builtins/generation.d.ts.map +1 -1
- package/dist/src/func/builtins/generation.js +26 -1
- package/dist/src/func/builtins/generation.js.map +1 -1
- package/dist/src/func/builtins/index.d.ts.map +1 -1
- package/dist/src/func/builtins/index.js +5 -1
- package/dist/src/func/builtins/index.js.map +1 -1
- package/dist/src/func/builtins/json-tvf.d.ts.map +1 -1
- package/dist/src/func/builtins/json-tvf.js +16 -2
- package/dist/src/func/builtins/json-tvf.js.map +1 -1
- package/dist/src/func/builtins/schema.d.ts +4 -0
- package/dist/src/func/builtins/schema.d.ts.map +1 -1
- package/dist/src/func/builtins/schema.js +270 -11
- package/dist/src/func/builtins/schema.js.map +1 -1
- package/dist/src/func/registration.d.ts +19 -1
- package/dist/src/func/registration.d.ts.map +1 -1
- package/dist/src/func/registration.js +8 -3
- package/dist/src/func/registration.js.map +1 -1
- package/dist/src/index.d.ts +7 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +5 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/parser/ast.d.ts +3 -2
- package/dist/src/parser/ast.d.ts.map +1 -1
- package/dist/src/parser/parser.d.ts.map +1 -1
- package/dist/src/parser/parser.js +25 -8
- package/dist/src/parser/parser.js.map +1 -1
- package/dist/src/planner/analysis/assertion-classifier.d.ts +71 -0
- package/dist/src/planner/analysis/assertion-classifier.d.ts.map +1 -0
- package/dist/src/planner/analysis/assertion-classifier.js +286 -0
- package/dist/src/planner/analysis/assertion-classifier.js.map +1 -0
- package/dist/src/planner/analysis/assertion-hoist-cache.d.ts +34 -0
- package/dist/src/planner/analysis/assertion-hoist-cache.d.ts.map +1 -0
- package/dist/src/planner/analysis/assertion-hoist-cache.js +119 -0
- package/dist/src/planner/analysis/assertion-hoist-cache.js.map +1 -0
- package/dist/src/planner/analysis/binding-extractor.d.ts +58 -0
- package/dist/src/planner/analysis/binding-extractor.d.ts.map +1 -0
- package/dist/src/planner/analysis/binding-extractor.js +110 -0
- package/dist/src/planner/analysis/binding-extractor.js.map +1 -0
- package/dist/src/planner/analysis/change-scope.d.ts +184 -0
- package/dist/src/planner/analysis/change-scope.d.ts.map +1 -0
- package/dist/src/planner/analysis/change-scope.js +825 -0
- package/dist/src/planner/analysis/change-scope.js.map +1 -0
- package/dist/src/planner/analysis/check-extraction.d.ts +29 -0
- package/dist/src/planner/analysis/check-extraction.d.ts.map +1 -0
- package/dist/src/planner/analysis/check-extraction.js +420 -0
- package/dist/src/planner/analysis/check-extraction.js.map +1 -0
- package/dist/src/planner/analysis/constraint-extractor.d.ts +47 -7
- package/dist/src/planner/analysis/constraint-extractor.d.ts.map +1 -1
- package/dist/src/planner/analysis/constraint-extractor.js +169 -92
- package/dist/src/planner/analysis/constraint-extractor.js.map +1 -1
- package/dist/src/planner/analysis/partial-unique-extraction.d.ts +68 -0
- package/dist/src/planner/analysis/partial-unique-extraction.d.ts.map +1 -0
- package/dist/src/planner/analysis/partial-unique-extraction.js +347 -0
- package/dist/src/planner/analysis/partial-unique-extraction.js.map +1 -0
- package/dist/src/planner/analysis/predicate-conjuncts.d.ts +14 -0
- package/dist/src/planner/analysis/predicate-conjuncts.d.ts.map +1 -0
- package/dist/src/planner/analysis/predicate-conjuncts.js +31 -0
- package/dist/src/planner/analysis/predicate-conjuncts.js.map +1 -0
- package/dist/src/planner/analysis/predicate-shape.d.ts +52 -0
- package/dist/src/planner/analysis/predicate-shape.d.ts.map +1 -0
- package/dist/src/planner/analysis/predicate-shape.js +119 -0
- package/dist/src/planner/analysis/predicate-shape.js.map +1 -0
- package/dist/src/planner/analysis/sat-checker.d.ts +43 -0
- package/dist/src/planner/analysis/sat-checker.d.ts.map +1 -0
- package/dist/src/planner/analysis/sat-checker.js +393 -0
- package/dist/src/planner/analysis/sat-checker.js.map +1 -0
- package/dist/src/planner/building/foreign-key-builder.d.ts.map +1 -1
- package/dist/src/planner/building/foreign-key-builder.js +3 -2
- package/dist/src/planner/building/foreign-key-builder.js.map +1 -1
- package/dist/src/planner/building/select.js +14 -2
- package/dist/src/planner/building/select.js.map +1 -1
- package/dist/src/planner/building/table.d.ts.map +1 -1
- package/dist/src/planner/building/table.js +1 -1
- package/dist/src/planner/building/table.js.map +1 -1
- package/dist/src/planner/building/update.d.ts.map +1 -1
- package/dist/src/planner/building/update.js +10 -6
- package/dist/src/planner/building/update.js.map +1 -1
- package/dist/src/planner/framework/characteristics.d.ts +13 -2
- package/dist/src/planner/framework/characteristics.d.ts.map +1 -1
- package/dist/src/planner/framework/characteristics.js +31 -5
- package/dist/src/planner/framework/characteristics.js.map +1 -1
- package/dist/src/planner/framework/pass.d.ts.map +1 -1
- package/dist/src/planner/framework/pass.js +46 -16
- package/dist/src/planner/framework/pass.js.map +1 -1
- package/dist/src/planner/framework/physical-utils.d.ts +21 -9
- package/dist/src/planner/framework/physical-utils.d.ts.map +1 -1
- package/dist/src/planner/framework/physical-utils.js +47 -31
- package/dist/src/planner/framework/physical-utils.js.map +1 -1
- package/dist/src/planner/nodes/aggregate-node.d.ts +25 -0
- package/dist/src/planner/nodes/aggregate-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/aggregate-node.js +75 -8
- 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 +8 -1
- package/dist/src/planner/nodes/alias-node.js.map +1 -1
- package/dist/src/planner/nodes/asof-scan-node.d.ts +137 -0
- package/dist/src/planner/nodes/asof-scan-node.d.ts.map +1 -0
- package/dist/src/planner/nodes/asof-scan-node.js +237 -0
- package/dist/src/planner/nodes/asof-scan-node.js.map +1 -0
- package/dist/src/planner/nodes/bloom-join-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/bloom-join-node.js +19 -9
- package/dist/src/planner/nodes/bloom-join-node.js.map +1 -1
- package/dist/src/planner/nodes/constraint-check-node.d.ts +3 -0
- package/dist/src/planner/nodes/constraint-check-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/constraint-check-node.js.map +1 -1
- package/dist/src/planner/nodes/distinct-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/distinct-node.js +17 -6
- package/dist/src/planner/nodes/distinct-node.js.map +1 -1
- package/dist/src/planner/nodes/empty-relation-node.d.ts +27 -0
- package/dist/src/planner/nodes/empty-relation-node.d.ts.map +1 -0
- package/dist/src/planner/nodes/empty-relation-node.js +61 -0
- package/dist/src/planner/nodes/empty-relation-node.js.map +1 -0
- package/dist/src/planner/nodes/filter.d.ts.map +1 -1
- package/dist/src/planner/nodes/filter.js +67 -5
- package/dist/src/planner/nodes/filter.js.map +1 -1
- package/dist/src/planner/nodes/function.d.ts +11 -1
- package/dist/src/planner/nodes/function.d.ts.map +1 -1
- package/dist/src/planner/nodes/function.js +94 -1
- package/dist/src/planner/nodes/function.js.map +1 -1
- package/dist/src/planner/nodes/hash-aggregate.d.ts +1 -1
- package/dist/src/planner/nodes/hash-aggregate.d.ts.map +1 -1
- package/dist/src/planner/nodes/hash-aggregate.js +10 -6
- package/dist/src/planner/nodes/hash-aggregate.js.map +1 -1
- package/dist/src/planner/nodes/join-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/join-node.js +21 -10
- package/dist/src/planner/nodes/join-node.js.map +1 -1
- package/dist/src/planner/nodes/join-utils.d.ts +42 -1
- package/dist/src/planner/nodes/join-utils.d.ts.map +1 -1
- package/dist/src/planner/nodes/join-utils.js +132 -0
- package/dist/src/planner/nodes/join-utils.js.map +1 -1
- package/dist/src/planner/nodes/limit-offset.d.ts.map +1 -1
- package/dist/src/planner/nodes/limit-offset.js +8 -1
- package/dist/src/planner/nodes/limit-offset.js.map +1 -1
- package/dist/src/planner/nodes/merge-join-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/merge-join-node.js +22 -9
- package/dist/src/planner/nodes/merge-join-node.js.map +1 -1
- package/dist/src/planner/nodes/ordinal-slice-node.d.ts +50 -0
- package/dist/src/planner/nodes/ordinal-slice-node.d.ts.map +1 -0
- package/dist/src/planner/nodes/ordinal-slice-node.js +130 -0
- package/dist/src/planner/nodes/ordinal-slice-node.js.map +1 -0
- package/dist/src/planner/nodes/plan-node-type.d.ts +3 -0
- package/dist/src/planner/nodes/plan-node-type.d.ts.map +1 -1
- package/dist/src/planner/nodes/plan-node-type.js +3 -0
- package/dist/src/planner/nodes/plan-node-type.js.map +1 -1
- package/dist/src/planner/nodes/plan-node.d.ts +316 -5
- package/dist/src/planner/nodes/plan-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/plan-node.js +49 -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 +78 -28
- package/dist/src/planner/nodes/project-node.js.map +1 -1
- package/dist/src/planner/nodes/reference.d.ts +27 -2
- package/dist/src/planner/nodes/reference.d.ts.map +1 -1
- package/dist/src/planner/nodes/reference.js +117 -1
- package/dist/src/planner/nodes/reference.js.map +1 -1
- package/dist/src/planner/nodes/retrieve-node.d.ts +9 -1
- package/dist/src/planner/nodes/retrieve-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/retrieve-node.js +21 -0
- 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 +64 -28
- package/dist/src/planner/nodes/returning-node.js.map +1 -1
- package/dist/src/planner/nodes/scalar.d.ts +8 -1
- package/dist/src/planner/nodes/scalar.d.ts.map +1 -1
- package/dist/src/planner/nodes/scalar.js +112 -1
- package/dist/src/planner/nodes/scalar.js.map +1 -1
- package/dist/src/planner/nodes/set-operation-node.d.ts +2 -1
- package/dist/src/planner/nodes/set-operation-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/set-operation-node.js +24 -0
- package/dist/src/planner/nodes/set-operation-node.js.map +1 -1
- package/dist/src/planner/nodes/single-row.d.ts.map +1 -1
- package/dist/src/planner/nodes/single-row.js +3 -1
- package/dist/src/planner/nodes/single-row.js.map +1 -1
- package/dist/src/planner/nodes/sort.d.ts.map +1 -1
- package/dist/src/planner/nodes/sort.js +28 -1
- package/dist/src/planner/nodes/sort.js.map +1 -1
- package/dist/src/planner/nodes/stream-aggregate.d.ts +1 -1
- package/dist/src/planner/nodes/stream-aggregate.d.ts.map +1 -1
- package/dist/src/planner/nodes/stream-aggregate.js +10 -8
- package/dist/src/planner/nodes/stream-aggregate.js.map +1 -1
- package/dist/src/planner/nodes/table-access-nodes.d.ts +40 -5
- package/dist/src/planner/nodes/table-access-nodes.d.ts.map +1 -1
- package/dist/src/planner/nodes/table-access-nodes.js +113 -18
- package/dist/src/planner/nodes/table-access-nodes.js.map +1 -1
- package/dist/src/planner/nodes/table-function-call.d.ts +4 -1
- package/dist/src/planner/nodes/table-function-call.d.ts.map +1 -1
- package/dist/src/planner/nodes/table-function-call.js +224 -14
- package/dist/src/planner/nodes/table-function-call.js.map +1 -1
- package/dist/src/planner/nodes/update-node.d.ts +1 -3
- package/dist/src/planner/nodes/update-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/update-node.js +3 -9
- package/dist/src/planner/nodes/update-node.js.map +1 -1
- package/dist/src/planner/nodes/window-node.d.ts +61 -2
- package/dist/src/planner/nodes/window-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/window-node.js +71 -3
- package/dist/src/planner/nodes/window-node.js.map +1 -1
- package/dist/src/planner/optimizer-tuning.d.ts +38 -1
- package/dist/src/planner/optimizer-tuning.d.ts.map +1 -1
- package/dist/src/planner/optimizer-tuning.js +6 -0
- package/dist/src/planner/optimizer-tuning.js.map +1 -1
- package/dist/src/planner/optimizer.d.ts.map +1 -1
- package/dist/src/planner/optimizer.js +278 -0
- package/dist/src/planner/optimizer.js.map +1 -1
- package/dist/src/planner/rules/access/rule-asof-strategy-select.d.ts +30 -0
- package/dist/src/planner/rules/access/rule-asof-strategy-select.d.ts.map +1 -0
- package/dist/src/planner/rules/access/rule-asof-strategy-select.js +112 -0
- package/dist/src/planner/rules/access/rule-asof-strategy-select.js.map +1 -0
- package/dist/src/planner/rules/access/rule-monotonic-limit-pushdown.d.ts +33 -0
- package/dist/src/planner/rules/access/rule-monotonic-limit-pushdown.d.ts.map +1 -0
- package/dist/src/planner/rules/access/rule-monotonic-limit-pushdown.js +162 -0
- package/dist/src/planner/rules/access/rule-monotonic-limit-pushdown.js.map +1 -0
- package/dist/src/planner/rules/access/rule-monotonic-range-access.d.ts +29 -0
- package/dist/src/planner/rules/access/rule-monotonic-range-access.d.ts.map +1 -0
- package/dist/src/planner/rules/access/rule-monotonic-range-access.js +175 -0
- package/dist/src/planner/rules/access/rule-monotonic-range-access.js.map +1 -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 +53 -17
- 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 +30 -0
- package/dist/src/planner/rules/aggregate/rule-groupby-fd-simplification.d.ts.map +1 -0
- package/dist/src/planner/rules/aggregate/rule-groupby-fd-simplification.js +116 -0
- package/dist/src/planner/rules/aggregate/rule-groupby-fd-simplification.js.map +1 -0
- package/dist/src/planner/rules/distinct/rule-distinct-elimination.d.ts +7 -7
- package/dist/src/planner/rules/distinct/rule-distinct-elimination.d.ts.map +1 -1
- package/dist/src/planner/rules/distinct/rule-distinct-elimination.js +18 -16
- package/dist/src/planner/rules/distinct/rule-distinct-elimination.js.map +1 -1
- package/dist/src/planner/rules/join/equi-pair-extractor.d.ts +61 -0
- package/dist/src/planner/rules/join/equi-pair-extractor.d.ts.map +1 -0
- package/dist/src/planner/rules/join/equi-pair-extractor.js +155 -0
- package/dist/src/planner/rules/join/equi-pair-extractor.js.map +1 -0
- package/dist/src/planner/rules/join/rule-join-elimination.d.ts +56 -0
- package/dist/src/planner/rules/join/rule-join-elimination.d.ts.map +1 -0
- package/dist/src/planner/rules/join/rule-join-elimination.js +326 -0
- package/dist/src/planner/rules/join/rule-join-elimination.js.map +1 -0
- package/dist/src/planner/rules/join/rule-join-greedy-commute.d.ts.map +1 -1
- package/dist/src/planner/rules/join/rule-join-greedy-commute.js +10 -2
- package/dist/src/planner/rules/join/rule-join-greedy-commute.js.map +1 -1
- 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 +2 -122
- package/dist/src/planner/rules/join/rule-join-physical-selection.js.map +1 -1
- package/dist/src/planner/rules/join/rule-lateral-top1-asof.d.ts +21 -0
- package/dist/src/planner/rules/join/rule-lateral-top1-asof.d.ts.map +1 -0
- package/dist/src/planner/rules/join/rule-lateral-top1-asof.js +405 -0
- package/dist/src/planner/rules/join/rule-lateral-top1-asof.js.map +1 -0
- package/dist/src/planner/rules/join/rule-monotonic-merge-join.d.ts +31 -0
- package/dist/src/planner/rules/join/rule-monotonic-merge-join.d.ts.map +1 -0
- package/dist/src/planner/rules/join/rule-monotonic-merge-join.js +113 -0
- package/dist/src/planner/rules/join/rule-monotonic-merge-join.js.map +1 -0
- package/dist/src/planner/rules/predicate/rule-aggregate-predicate-pushdown.d.ts +20 -0
- package/dist/src/planner/rules/predicate/rule-aggregate-predicate-pushdown.d.ts.map +1 -0
- package/dist/src/planner/rules/predicate/rule-aggregate-predicate-pushdown.js +181 -0
- package/dist/src/planner/rules/predicate/rule-aggregate-predicate-pushdown.js.map +1 -0
- package/dist/src/planner/rules/predicate/rule-empty-relation-folding.d.ts +46 -0
- package/dist/src/planner/rules/predicate/rule-empty-relation-folding.d.ts.map +1 -0
- package/dist/src/planner/rules/predicate/rule-empty-relation-folding.js +156 -0
- package/dist/src/planner/rules/predicate/rule-empty-relation-folding.js.map +1 -0
- package/dist/src/planner/rules/predicate/rule-filter-contradiction.d.ts +30 -0
- package/dist/src/planner/rules/predicate/rule-filter-contradiction.d.ts.map +1 -0
- package/dist/src/planner/rules/predicate/rule-filter-contradiction.js +60 -0
- package/dist/src/planner/rules/predicate/rule-filter-contradiction.js.map +1 -0
- package/dist/src/planner/rules/predicate/rule-predicate-inference-equivalence.d.ts +45 -0
- package/dist/src/planner/rules/predicate/rule-predicate-inference-equivalence.d.ts.map +1 -0
- package/dist/src/planner/rules/predicate/rule-predicate-inference-equivalence.js +210 -0
- package/dist/src/planner/rules/predicate/rule-predicate-inference-equivalence.js.map +1 -0
- package/dist/src/planner/rules/predicate/rule-sargable-range-rewrite.d.ts +29 -0
- package/dist/src/planner/rules/predicate/rule-sargable-range-rewrite.d.ts.map +1 -0
- package/dist/src/planner/rules/predicate/rule-sargable-range-rewrite.js +161 -0
- package/dist/src/planner/rules/predicate/rule-sargable-range-rewrite.js.map +1 -0
- package/dist/src/planner/rules/sort/rule-orderby-fd-pruning.d.ts +39 -0
- package/dist/src/planner/rules/sort/rule-orderby-fd-pruning.d.ts.map +1 -0
- package/dist/src/planner/rules/sort/rule-orderby-fd-pruning.js +91 -0
- package/dist/src/planner/rules/sort/rule-orderby-fd-pruning.js.map +1 -0
- package/dist/src/planner/rules/subquery/rule-anti-join-fk-empty.d.ts +35 -0
- package/dist/src/planner/rules/subquery/rule-anti-join-fk-empty.d.ts.map +1 -0
- package/dist/src/planner/rules/subquery/rule-anti-join-fk-empty.js +74 -0
- package/dist/src/planner/rules/subquery/rule-anti-join-fk-empty.js.map +1 -0
- package/dist/src/planner/rules/subquery/rule-semi-join-fk-trivial.d.ts +27 -0
- package/dist/src/planner/rules/subquery/rule-semi-join-fk-trivial.d.ts.map +1 -0
- package/dist/src/planner/rules/subquery/rule-semi-join-fk-trivial.js +103 -0
- package/dist/src/planner/rules/subquery/rule-semi-join-fk-trivial.js.map +1 -0
- package/dist/src/planner/rules/subquery/rule-subquery-decorrelation.d.ts.map +1 -1
- package/dist/src/planner/rules/subquery/rule-subquery-decorrelation.js +1 -25
- package/dist/src/planner/rules/subquery/rule-subquery-decorrelation.js.map +1 -1
- package/dist/src/planner/rules/window/rule-monotonic-window.d.ts +47 -0
- package/dist/src/planner/rules/window/rule-monotonic-window.d.ts.map +1 -0
- package/dist/src/planner/rules/window/rule-monotonic-window.js +341 -0
- package/dist/src/planner/rules/window/rule-monotonic-window.js.map +1 -0
- package/dist/src/planner/scopes/global.js +2 -2
- package/dist/src/planner/scopes/global.js.map +1 -1
- package/dist/src/planner/type-utils.d.ts.map +1 -1
- package/dist/src/planner/type-utils.js +11 -0
- package/dist/src/planner/type-utils.js.map +1 -1
- package/dist/src/planner/util/fd-utils.d.ts +245 -0
- package/dist/src/planner/util/fd-utils.d.ts.map +1 -0
- package/dist/src/planner/util/fd-utils.js +1416 -0
- package/dist/src/planner/util/fd-utils.js.map +1 -0
- package/dist/src/planner/util/ind-utils.d.ts +79 -0
- package/dist/src/planner/util/ind-utils.d.ts.map +1 -0
- package/dist/src/planner/util/ind-utils.js +146 -0
- package/dist/src/planner/util/ind-utils.js.map +1 -0
- package/dist/src/planner/util/key-utils.d.ts +75 -14
- package/dist/src/planner/util/key-utils.d.ts.map +1 -1
- package/dist/src/planner/util/key-utils.js +234 -57
- package/dist/src/planner/util/key-utils.js.map +1 -1
- package/dist/src/runtime/context-helpers.d.ts +9 -0
- package/dist/src/runtime/context-helpers.d.ts.map +1 -1
- package/dist/src/runtime/context-helpers.js +5 -0
- package/dist/src/runtime/context-helpers.js.map +1 -1
- package/dist/src/runtime/delta-executor.d.ts +134 -0
- package/dist/src/runtime/delta-executor.d.ts.map +1 -0
- package/dist/src/runtime/delta-executor.js +382 -0
- package/dist/src/runtime/delta-executor.js.map +1 -0
- package/dist/src/runtime/emit/alter-table.d.ts.map +1 -1
- package/dist/src/runtime/emit/alter-table.js +52 -16
- package/dist/src/runtime/emit/alter-table.js.map +1 -1
- package/dist/src/runtime/emit/asof-scan.d.ts +10 -0
- package/dist/src/runtime/emit/asof-scan.d.ts.map +1 -0
- package/dist/src/runtime/emit/asof-scan.js +467 -0
- package/dist/src/runtime/emit/asof-scan.js.map +1 -0
- package/dist/src/runtime/emit/constraint-check.d.ts.map +1 -1
- package/dist/src/runtime/emit/constraint-check.js +20 -0
- 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 +3 -2
- package/dist/src/runtime/emit/create-assertion.js.map +1 -1
- package/dist/src/runtime/emit/dml-executor.d.ts.map +1 -1
- package/dist/src/runtime/emit/dml-executor.js +40 -13
- package/dist/src/runtime/emit/dml-executor.js.map +1 -1
- package/dist/src/runtime/emit/drop-assertion.js +1 -1
- package/dist/src/runtime/emit/drop-assertion.js.map +1 -1
- package/dist/src/runtime/emit/empty-relation.d.ts +5 -0
- package/dist/src/runtime/emit/empty-relation.d.ts.map +1 -0
- package/dist/src/runtime/emit/empty-relation.js +11 -0
- package/dist/src/runtime/emit/empty-relation.js.map +1 -0
- package/dist/src/runtime/emit/ordinal-slice.d.ts +13 -0
- package/dist/src/runtime/emit/ordinal-slice.d.ts.map +1 -0
- package/dist/src/runtime/emit/ordinal-slice.js +89 -0
- package/dist/src/runtime/emit/ordinal-slice.js.map +1 -0
- package/dist/src/runtime/emit/returning.d.ts.map +1 -1
- package/dist/src/runtime/emit/returning.js +9 -4
- package/dist/src/runtime/emit/returning.js.map +1 -1
- package/dist/src/runtime/emit/scan.d.ts +19 -3
- package/dist/src/runtime/emit/scan.d.ts.map +1 -1
- package/dist/src/runtime/emit/scan.js +12 -8
- 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 +91 -14
- package/dist/src/runtime/emit/schema-declarative.js.map +1 -1
- package/dist/src/runtime/emit/window.d.ts.map +1 -1
- package/dist/src/runtime/emit/window.js +732 -37
- package/dist/src/runtime/emit/window.js.map +1 -1
- package/dist/src/runtime/foreign-key-actions.d.ts +16 -0
- package/dist/src/runtime/foreign-key-actions.d.ts.map +1 -1
- package/dist/src/runtime/foreign-key-actions.js +86 -5
- package/dist/src/runtime/foreign-key-actions.js.map +1 -1
- package/dist/src/runtime/register.d.ts.map +1 -1
- package/dist/src/runtime/register.js +6 -0
- package/dist/src/runtime/register.js.map +1 -1
- package/dist/src/schema/assertion.d.ts +8 -0
- package/dist/src/schema/assertion.d.ts.map +1 -1
- package/dist/src/schema/catalog.d.ts +10 -0
- package/dist/src/schema/catalog.d.ts.map +1 -1
- package/dist/src/schema/catalog.js +29 -6
- package/dist/src/schema/catalog.js.map +1 -1
- package/dist/src/schema/change-events.d.ts +5 -1
- package/dist/src/schema/change-events.d.ts.map +1 -1
- package/dist/src/schema/change-events.js.map +1 -1
- package/dist/src/schema/function.d.ts +89 -1
- package/dist/src/schema/function.d.ts.map +1 -1
- package/dist/src/schema/function.js +31 -0
- package/dist/src/schema/function.js.map +1 -1
- package/dist/src/schema/manager.d.ts +43 -0
- package/dist/src/schema/manager.d.ts.map +1 -1
- package/dist/src/schema/manager.js +105 -4
- package/dist/src/schema/manager.js.map +1 -1
- package/dist/src/schema/rename-rewriter.d.ts.map +1 -1
- package/dist/src/schema/rename-rewriter.js +303 -102
- package/dist/src/schema/rename-rewriter.js.map +1 -1
- package/dist/src/schema/schema-differ.d.ts +18 -1
- package/dist/src/schema/schema-differ.d.ts.map +1 -1
- package/dist/src/schema/schema-differ.js +307 -42
- package/dist/src/schema/schema-differ.js.map +1 -1
- package/dist/src/schema/table.d.ts +21 -2
- package/dist/src/schema/table.d.ts.map +1 -1
- package/dist/src/schema/table.js +17 -8
- package/dist/src/schema/table.js.map +1 -1
- package/dist/src/types/logical-type.d.ts +11 -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/temporal-types.d.ts.map +1 -1
- package/dist/src/types/temporal-types.js +32 -0
- package/dist/src/types/temporal-types.js.map +1 -1
- package/dist/src/util/ast-literal.d.ts +11 -0
- package/dist/src/util/ast-literal.d.ts.map +1 -0
- package/dist/src/util/ast-literal.js +26 -0
- package/dist/src/util/ast-literal.js.map +1 -0
- package/dist/src/vtab/best-access-plan.d.ts +41 -0
- package/dist/src/vtab/best-access-plan.d.ts.map +1 -1
- package/dist/src/vtab/best-access-plan.js +29 -0
- package/dist/src/vtab/best-access-plan.js.map +1 -1
- package/dist/src/vtab/events.d.ts +9 -0
- package/dist/src/vtab/events.d.ts.map +1 -1
- package/dist/src/vtab/events.js +19 -0
- package/dist/src/vtab/events.js.map +1 -1
- package/dist/src/vtab/filter-info.d.ts +14 -0
- package/dist/src/vtab/filter-info.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 +24 -5
- package/dist/src/vtab/memory/layer/manager.js.map +1 -1
- package/dist/src/vtab/memory/module.d.ts +39 -1
- package/dist/src/vtab/memory/module.d.ts.map +1 -1
- package/dist/src/vtab/memory/module.js +206 -44
- package/dist/src/vtab/memory/module.js.map +1 -1
- package/dist/src/vtab/memory/utils/predicate.d.ts +2 -1
- package/dist/src/vtab/memory/utils/predicate.d.ts.map +1 -1
- package/dist/src/vtab/memory/utils/predicate.js +32 -1
- package/dist/src/vtab/memory/utils/predicate.js.map +1 -1
- package/dist/src/vtab/module.d.ts +24 -0
- package/dist/src/vtab/module.d.ts.map +1 -1
- package/package.json +3 -3
|
@@ -0,0 +1,245 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Functional dependency (FD) and equivalence-class (EC) helpers used by
|
|
3
|
+
* `computePhysical` on relational plan nodes. See `docs/optimizer.md`
|
|
4
|
+
* section "Functional Dependency Tracking" for the propagation table and
|
|
5
|
+
* design rationale.
|
|
6
|
+
*/
|
|
7
|
+
import type { ConstantBinding, ConstantValue, DomainConstraint, FunctionalDependency, GuardPredicate, ScalarPlanNode } from '../nodes/plan-node.js';
|
|
8
|
+
/**
|
|
9
|
+
* Per-node cap on the number of FDs we materialize. The propagation rules
|
|
10
|
+
* are conservative enough that hitting this in practice is rare; the cap
|
|
11
|
+
* is a safety valve for pathological plans.
|
|
12
|
+
*/
|
|
13
|
+
export declare const MAX_FDS_PER_NODE = 64;
|
|
14
|
+
/**
|
|
15
|
+
* Closure of `attrs` under `fds`. Iterative fixed-point.
|
|
16
|
+
*
|
|
17
|
+
* Guarded FDs (`fd.guard !== undefined`) are skipped — they are only valid
|
|
18
|
+
* under a surrounding predicate, and the closure layer has no notion of one.
|
|
19
|
+
* Filter activation strips the guard before the FD reaches closure consumers.
|
|
20
|
+
*
|
|
21
|
+
* O(|fds| × growth) — terminates when no new attribute is added in a pass.
|
|
22
|
+
*/
|
|
23
|
+
export declare function computeClosure(attrs: ReadonlySet<number>, fds: ReadonlyArray<FunctionalDependency>): Set<number>;
|
|
24
|
+
/**
|
|
25
|
+
* Expand a list of equivalence classes into bi-directional FDs over the same
|
|
26
|
+
* column indices, then concatenate with the existing FDs. For a class
|
|
27
|
+
* `{c0, c1, ..., ck}` this emits `{ci} → {cj}` for every distinct ordered pair
|
|
28
|
+
* — enough for `computeClosure` to derive every member from any one of them.
|
|
29
|
+
*/
|
|
30
|
+
export declare function expandEcsToFds(ecs: ReadonlyArray<ReadonlyArray<number>>, fds: ReadonlyArray<FunctionalDependency>): FunctionalDependency[];
|
|
31
|
+
/** True iff `attrs` determines every attribute in `target` under `fds`. */
|
|
32
|
+
export declare function determines(attrs: ReadonlySet<number>, target: ReadonlySet<number>, fds: ReadonlyArray<FunctionalDependency>): boolean;
|
|
33
|
+
/**
|
|
34
|
+
* Smallest subset of `attrs` whose closure equals the closure of `attrs`.
|
|
35
|
+
* Greedy minimization: try dropping each attribute; keep the drop iff the
|
|
36
|
+
* resulting closure is unchanged. O(|attrs|² × |fds|).
|
|
37
|
+
*/
|
|
38
|
+
export declare function minimalCover(attrs: ReadonlySet<number>, fds: ReadonlyArray<FunctionalDependency>): Set<number>;
|
|
39
|
+
export interface AddFdOptions {
|
|
40
|
+
/**
|
|
41
|
+
* Hint: column subsets that are known full-cover keys on the relation.
|
|
42
|
+
* Used by `enforceCap` to prefer FDs whose determinants are subsets of
|
|
43
|
+
* any such key when truncating; otherwise unused. Optional.
|
|
44
|
+
*/
|
|
45
|
+
keyHints?: ReadonlyArray<ReadonlyArray<number>>;
|
|
46
|
+
cap?: number;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Add a single FD, dropping any existing entry with the same determinants
|
|
50
|
+
* (and same guard) whose dependents are a subset of the new one (subsumption).
|
|
51
|
+
* When the resulting list exceeds the cap, drop FDs whose determinants are
|
|
52
|
+
* not a subset of any `keyHints` entry on the same node.
|
|
53
|
+
*
|
|
54
|
+
* Guard-aware: FDs with different `guard` predicates are kept side-by-side
|
|
55
|
+
* even when their determinants/dependents match — they are logically distinct
|
|
56
|
+
* facts and may be activated by different surrounding predicates.
|
|
57
|
+
*/
|
|
58
|
+
export declare function addFd(fds: ReadonlyArray<FunctionalDependency>, next: FunctionalDependency, opts?: AddFdOptions): FunctionalDependency[];
|
|
59
|
+
/** Merge two FD lists, applying subsumption via `addFd`. */
|
|
60
|
+
export declare function mergeFds(a: ReadonlyArray<FunctionalDependency>, b: ReadonlyArray<FunctionalDependency>, opts?: AddFdOptions): FunctionalDependency[];
|
|
61
|
+
/**
|
|
62
|
+
* Project FDs through a column mapping (oldCol → newCol). FDs whose
|
|
63
|
+
* determinants lose any column are dropped entirely (the projection breaks
|
|
64
|
+
* the determinant set). Dependents that don't survive are filtered out;
|
|
65
|
+
* an FD whose dependents are completely filtered is dropped.
|
|
66
|
+
*
|
|
67
|
+
* Exception: an FD with empty determinants (the singleton "at-most-one-row"
|
|
68
|
+
* marker) survives as long as at least one dependent does — losing some
|
|
69
|
+
* dependent columns to projection doesn't invalidate the at-most-one-row
|
|
70
|
+
* claim on the surviving columns.
|
|
71
|
+
*
|
|
72
|
+
* Guarded FDs additionally require every column referenced in `guard.clauses`
|
|
73
|
+
* to be in the mapping — if any guard column is dropped the guard becomes
|
|
74
|
+
* unobservable and the FD can never be re-activated downstream.
|
|
75
|
+
*/
|
|
76
|
+
export declare function projectFds(fds: ReadonlyArray<FunctionalDependency>, mapping: ReadonlyMap<number, number>): FunctionalDependency[];
|
|
77
|
+
/** Shift all column indices in `fds` (including any `guard` columns) by `offset`. */
|
|
78
|
+
export declare function shiftFds(fds: ReadonlyArray<FunctionalDependency>, offset: number): FunctionalDependency[];
|
|
79
|
+
/**
|
|
80
|
+
* Return the unconditional twin of `fd` — drop the guard but keep determinants
|
|
81
|
+
* and dependents. Used by Filter activation when the surrounding predicate
|
|
82
|
+
* entails the guard.
|
|
83
|
+
*/
|
|
84
|
+
export declare function stripGuard(fd: FunctionalDependency): FunctionalDependency;
|
|
85
|
+
/** Shift all column indices in `classes` by `offset`. */
|
|
86
|
+
export declare function shiftEquivClasses(classes: ReadonlyArray<ReadonlyArray<number>>, offset: number): number[][];
|
|
87
|
+
/**
|
|
88
|
+
* Merge two equivalence-class sets, taking the transitive closure of
|
|
89
|
+
* overlapping classes (union-find style).
|
|
90
|
+
*/
|
|
91
|
+
export declare function mergeEquivClasses(a: ReadonlyArray<ReadonlyArray<number>>, b: ReadonlyArray<ReadonlyArray<number>>): number[][];
|
|
92
|
+
/** Add a new equality `a ≡ b` to an existing class list. */
|
|
93
|
+
export declare function addEquivalence(classes: ReadonlyArray<ReadonlyArray<number>>, a: number, b: number): number[][];
|
|
94
|
+
/**
|
|
95
|
+
* Build an FD `key → {0..columnCount-1} \ key` from a superkey. The canonical
|
|
96
|
+
* way to encode "K is a unique key on a relation": K determines every other
|
|
97
|
+
* output column. K = ∅ produces the "at-most-one-row" singleton FD.
|
|
98
|
+
*
|
|
99
|
+
* Returns undefined when K covers every column (the all-columns case has no
|
|
100
|
+
* non-trivial encoding — that case is communicated via `RelationType.isSet`
|
|
101
|
+
* instead).
|
|
102
|
+
*/
|
|
103
|
+
export declare function superkeyToFd(key: readonly number[], columnCount: number): FunctionalDependency | undefined;
|
|
104
|
+
/**
|
|
105
|
+
* True iff the closure of `attrs` under `fds` covers `{0..columnCount-1}` —
|
|
106
|
+
* i.e., `attrs` is a superkey of the relation. Replaces the legacy "covers a
|
|
107
|
+
* `uniqueKeys` entry" check; FDs are the canonical surface now.
|
|
108
|
+
*/
|
|
109
|
+
export declare function isSuperkey(attrs: ReadonlySet<number>, fds: ReadonlyArray<FunctionalDependency> | undefined, columnCount: number): boolean;
|
|
110
|
+
/**
|
|
111
|
+
* Enumerate the minimal full-cover key sets discoverable from `fds`: for each
|
|
112
|
+
* FD `K → Y` whose closure covers all columns, return `K` (greedily minimized
|
|
113
|
+
* within `K`). Deduplicated by set equality.
|
|
114
|
+
*
|
|
115
|
+
* Excludes the trivial "all-columns is a superkey" tautology — only FDs with
|
|
116
|
+
* `K ⊊ all_cols` are considered, since the all-cols case is encoded via
|
|
117
|
+
* `RelationType.isSet`.
|
|
118
|
+
*/
|
|
119
|
+
export declare function deriveKeysFromFds(fds: ReadonlyArray<FunctionalDependency> | undefined, columnCount: number): number[][];
|
|
120
|
+
/**
|
|
121
|
+
* True iff the FD set encodes any non-trivial key — i.e., there exists some
|
|
122
|
+
* FD whose determinants form a superkey of `columnCount` columns with the
|
|
123
|
+
* determinant set strictly smaller than all columns. This is the FD-surface
|
|
124
|
+
* replacement for "the relation has a known unique key smaller than its full
|
|
125
|
+
* column list" (the old `uniqueKeys.length > 0` check), excluding the
|
|
126
|
+
* tautological all-columns case which carries no information.
|
|
127
|
+
*/
|
|
128
|
+
export declare function hasAnyKey(fds: ReadonlyArray<FunctionalDependency> | undefined, columnCount: number): boolean;
|
|
129
|
+
/**
|
|
130
|
+
* True iff the relation has at-most-one-row — i.e., some FD `∅ → Y` exists
|
|
131
|
+
* whose closure covers every column. Replaces the legacy `[[]]` singleton
|
|
132
|
+
* marker on `uniqueKeys`.
|
|
133
|
+
*/
|
|
134
|
+
export declare function hasSingletonFd(fds: ReadonlyArray<FunctionalDependency> | undefined, columnCount: number): boolean;
|
|
135
|
+
/**
|
|
136
|
+
* Build the singleton FD `∅ → {0..columnCount-1}` that encodes
|
|
137
|
+
* "at-most-one-row". Returns undefined when `columnCount === 0` (no
|
|
138
|
+
* dependents).
|
|
139
|
+
*/
|
|
140
|
+
export declare function singletonFd(columnCount: number): FunctionalDependency | undefined;
|
|
141
|
+
/**
|
|
142
|
+
* True iff `attrs` is asserted to be a unique key by the FD set — i.e., there
|
|
143
|
+
* exists some FD whose determinants are a subset of `attrs` and whose closure
|
|
144
|
+
* covers all columns. Stricter than `isSuperkey`: the trivial "all-cols is a
|
|
145
|
+
* superkey of itself" tautology does NOT count, because no FD makes that claim.
|
|
146
|
+
*
|
|
147
|
+
* Use this when you need a positive uniqueness claim (e.g., the
|
|
148
|
+
* sort/window strict-monotonicOn check). For "would attrs functionally
|
|
149
|
+
* determine the rest of the relation under closure?" use `isSuperkey` directly.
|
|
150
|
+
*/
|
|
151
|
+
export declare function isAssertedKey(attrs: ReadonlySet<number>, fds: ReadonlyArray<FunctionalDependency> | undefined, columnCount: number): boolean;
|
|
152
|
+
/**
|
|
153
|
+
* Re-export so callers can import the binding shape from this module
|
|
154
|
+
* alongside the helpers (avoids reaching into `plan-node.js` for types
|
|
155
|
+
* that are conceptually part of the FD/EC layer).
|
|
156
|
+
*/
|
|
157
|
+
export type { ConstantBinding, ConstantValue };
|
|
158
|
+
/**
|
|
159
|
+
* Extracted FD/EC/binding contributions from an equality-shaped predicate.
|
|
160
|
+
*
|
|
161
|
+
* - `fds`: FDs of the form `∅ → col` (column constant under the predicate)
|
|
162
|
+
* or `col1 → col2` / `col2 → col1` (mutual determination from `col1 = col2`).
|
|
163
|
+
* - `equivPairs`: `[col1, col2]` pairs to be merged into the EC list.
|
|
164
|
+
* - `constantBindings`: per-column constant bindings (one per `col = const`
|
|
165
|
+
* or `col = ?` conjunct). The caller is responsible for closing these
|
|
166
|
+
* over the resulting EC list.
|
|
167
|
+
*/
|
|
168
|
+
export interface EqualityFds {
|
|
169
|
+
readonly fds: ReadonlyArray<FunctionalDependency>;
|
|
170
|
+
readonly equivPairs: ReadonlyArray<readonly [number, number]>;
|
|
171
|
+
readonly constantBindings: ReadonlyArray<ConstantBinding>;
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Walk `predicate` (assumed to be a normalized conjunction) and extract FDs,
|
|
175
|
+
* equivalence-class contributions, and constant bindings from equality
|
|
176
|
+
* conjuncts.
|
|
177
|
+
*
|
|
178
|
+
* `attrIdToIndex` maps an attribute ID to its column index in the predicate's
|
|
179
|
+
* relation. Equality conjuncts referencing attributes outside this map
|
|
180
|
+
* (correlated subqueries, etc.) are silently ignored.
|
|
181
|
+
*
|
|
182
|
+
* Recognized shapes (per AND-conjunct):
|
|
183
|
+
* - `col = literal` ⇒ FD `∅ → col` + binding `{col} → literal value`.
|
|
184
|
+
* - `col = ?` ⇒ FD `∅ → col` + binding `{col} → parameter ref`.
|
|
185
|
+
* - `col1 = col2` ⇒ FDs `{col1} → {col2}` and `{col2} → {col1}` plus an
|
|
186
|
+
* equivalence pair `[col1, col2]`.
|
|
187
|
+
*
|
|
188
|
+
* Non-equality conjuncts contribute nothing.
|
|
189
|
+
*/
|
|
190
|
+
export declare function extractEqualityFds(predicate: ScalarPlanNode, attrIdToIndex: ReadonlyMap<number, number>): EqualityFds;
|
|
191
|
+
/**
|
|
192
|
+
* Decide whether the surrounding `predicate` (combined with the source's ECs
|
|
193
|
+
* and constant bindings) entails every clause in `guard`. Conservative — when
|
|
194
|
+
* in doubt, returns `false`.
|
|
195
|
+
*
|
|
196
|
+
* `isColumnNonNullable(col)` reports whether the source's output column is
|
|
197
|
+
* declared NOT NULL; the helper uses it to discharge `is-null negated:true`
|
|
198
|
+
* guards from type information alone.
|
|
199
|
+
*
|
|
200
|
+
* `isColumnNumeric(col)` reports whether the source's output column has a
|
|
201
|
+
* numeric logical type. Used to gate the `NOT col → col = 0` rewrite: only
|
|
202
|
+
* sound for numeric columns since the consumer matches `eq-literal{col, 0}`
|
|
203
|
+
* via strict `sqlValueEquals`, which treats TEXT `''`, BLOB, and boolean
|
|
204
|
+
* `false` as unequal to integer 0.
|
|
205
|
+
*/
|
|
206
|
+
export declare function predicateImpliesGuard(predicate: ScalarPlanNode, guard: GuardPredicate, ecs: ReadonlyArray<ReadonlyArray<number>>, bindings: ReadonlyArray<ConstantBinding>, attrIdToIndex: ReadonlyMap<number, number>, isColumnNonNullable: (col: number) => boolean, isColumnNumeric: (col: number) => boolean): boolean;
|
|
207
|
+
/**
|
|
208
|
+
* Merge two binding lists, coalescing bindings that share a `ConstantValue`
|
|
209
|
+
* by unioning their `attrs`. Caps the result at `MAX_FDS_PER_NODE`; later
|
|
210
|
+
* additions are dropped when the cap is exceeded — bindings sourced from
|
|
211
|
+
* earlier nodes are preferred since they typically sit closer to keyed
|
|
212
|
+
* columns. Truncations are logged under `quereus:planner:fd`.
|
|
213
|
+
*/
|
|
214
|
+
export declare function mergeConstantBindings(a: ReadonlyArray<ConstantBinding>, b: ReadonlyArray<ConstantBinding>): ConstantBinding[];
|
|
215
|
+
/**
|
|
216
|
+
* Extend `bindings` over `ecs`: if a binding pins column `c` to value `v` and
|
|
217
|
+
* `c` is in an equivalence class `{c, c2, ...}`, fold every member of that
|
|
218
|
+
* class into the binding's `attrs`. This is what lets predicate-inference
|
|
219
|
+
* rules consume bindings directly without walking ECs.
|
|
220
|
+
*/
|
|
221
|
+
export declare function closeConstantBindingsOverEcs(bindings: ReadonlyArray<ConstantBinding>, ecs: ReadonlyArray<ReadonlyArray<number>>): ConstantBinding[];
|
|
222
|
+
/**
|
|
223
|
+
* Project bindings through `mapping` (oldCol → newCol). A binding whose
|
|
224
|
+
* `attrs` lose every member is dropped; otherwise the surviving members are
|
|
225
|
+
* remapped.
|
|
226
|
+
*/
|
|
227
|
+
export declare function projectConstantBindings(bindings: ReadonlyArray<ConstantBinding>, mapping: ReadonlyMap<number, number>): ConstantBinding[];
|
|
228
|
+
/** Shift `attrs` by `offset` (column-index translation for joins). */
|
|
229
|
+
export declare function shiftConstantBindings(bindings: ReadonlyArray<ConstantBinding>, offset: number): ConstantBinding[];
|
|
230
|
+
export type { DomainConstraint };
|
|
231
|
+
/**
|
|
232
|
+
* Concatenate two domain-constraint lists, dropping structurally equal
|
|
233
|
+
* duplicates. We deliberately do NOT intersect overlapping range/enum
|
|
234
|
+
* constraints on the same column — that's deferred to the
|
|
235
|
+
* predicate-contradiction-detection ticket. Caps at `MAX_FDS_PER_NODE`.
|
|
236
|
+
*/
|
|
237
|
+
export declare function mergeDomainConstraints(a: ReadonlyArray<DomainConstraint>, b: ReadonlyArray<DomainConstraint>): DomainConstraint[];
|
|
238
|
+
/**
|
|
239
|
+
* Project domain constraints through `mapping` (oldCol → newCol). Drops any
|
|
240
|
+
* constraint whose column is not in the mapping; remaps the rest.
|
|
241
|
+
*/
|
|
242
|
+
export declare function projectDomainConstraints(domains: ReadonlyArray<DomainConstraint>, mapping: ReadonlyMap<number, number>): DomainConstraint[];
|
|
243
|
+
/** Shift every domain constraint's `column` by `offset` (join translation). */
|
|
244
|
+
export declare function shiftDomainConstraints(domains: ReadonlyArray<DomainConstraint>, offset: number): DomainConstraint[];
|
|
245
|
+
//# sourceMappingURL=fd-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fd-utils.d.ts","sourceRoot":"","sources":["../../../../src/planner/util/fd-utils.ts"],"names":[],"mappings":"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"}
|