@quereus/quereus 4.3.1 → 4.3.2
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 +25 -7
- package/dist/src/common/types.d.ts +9 -59
- package/dist/src/common/types.d.ts.map +1 -1
- package/dist/src/common/types.js.map +1 -1
- package/dist/src/core/database-assertions.d.ts +2 -2
- package/dist/src/core/database-assertions.d.ts.map +1 -1
- package/dist/src/core/database-assertions.js +4 -3
- package/dist/src/core/database-assertions.js.map +1 -1
- package/dist/src/core/database-external-changes.d.ts +1 -1
- package/dist/src/core/database-external-changes.js +1 -1
- package/dist/src/core/database-internal.d.ts.map +1 -1
- package/dist/src/core/database-materialized-views-analysis.d.ts +199 -0
- package/dist/src/core/database-materialized-views-analysis.d.ts.map +1 -0
- package/dist/src/core/database-materialized-views-analysis.js +502 -0
- package/dist/src/core/database-materialized-views-analysis.js.map +1 -0
- package/dist/src/core/database-materialized-views-apply.d.ts +280 -0
- package/dist/src/core/database-materialized-views-apply.d.ts.map +1 -0
- package/dist/src/core/database-materialized-views-apply.js +624 -0
- package/dist/src/core/database-materialized-views-apply.js.map +1 -0
- package/dist/src/core/database-materialized-views-plan-builders.d.ts +203 -0
- package/dist/src/core/database-materialized-views-plan-builders.d.ts.map +1 -0
- package/dist/src/core/database-materialized-views-plan-builders.js +1084 -0
- package/dist/src/core/database-materialized-views-plan-builders.js.map +1 -0
- package/dist/src/core/database-materialized-views-plans.d.ts +417 -0
- package/dist/src/core/database-materialized-views-plans.d.ts.map +1 -0
- package/dist/src/core/database-materialized-views-plans.js +13 -0
- package/dist/src/core/database-materialized-views-plans.js.map +1 -0
- package/dist/src/core/database-materialized-views.d.ts +11 -819
- package/dist/src/core/database-materialized-views.d.ts.map +1 -1
- package/dist/src/core/database-materialized-views.js +60 -2069
- package/dist/src/core/database-materialized-views.js.map +1 -1
- package/dist/src/core/database-transaction.d.ts +10 -1
- package/dist/src/core/database-transaction.d.ts.map +1 -1
- package/dist/src/core/database-transaction.js +16 -4
- package/dist/src/core/database-transaction.js.map +1 -1
- package/dist/src/core/database-watchers.d.ts.map +1 -1
- package/dist/src/core/database-watchers.js +2 -1
- package/dist/src/core/database-watchers.js.map +1 -1
- package/dist/src/core/database.d.ts +99 -13
- package/dist/src/core/database.d.ts.map +1 -1
- package/dist/src/core/database.js +250 -33
- package/dist/src/core/database.js.map +1 -1
- package/dist/src/core/derived-row-validator.d.ts +1 -1
- package/dist/src/core/derived-row-validator.d.ts.map +1 -1
- package/dist/src/core/derived-row-validator.js +5 -3
- package/dist/src/core/derived-row-validator.js.map +1 -1
- package/dist/src/core/statement.d.ts +8 -0
- package/dist/src/core/statement.d.ts.map +1 -1
- package/dist/src/core/statement.js +98 -18
- package/dist/src/core/statement.js.map +1 -1
- package/dist/src/emit/ast-stringify.d.ts.map +1 -1
- package/dist/src/emit/ast-stringify.js +24 -13
- package/dist/src/emit/ast-stringify.js.map +1 -1
- package/dist/src/func/builtins/explain.d.ts.map +1 -1
- package/dist/src/func/builtins/explain.js +2 -1
- package/dist/src/func/builtins/explain.js.map +1 -1
- package/dist/src/func/builtins/json.d.ts.map +1 -1
- package/dist/src/func/builtins/json.js +2 -1
- package/dist/src/func/builtins/json.js.map +1 -1
- package/dist/src/func/builtins/mutation.d.ts.map +1 -1
- package/dist/src/func/builtins/mutation.js +3 -2
- package/dist/src/func/builtins/mutation.js.map +1 -1
- package/dist/src/index.d.ts +16 -6
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +33 -7
- package/dist/src/index.js.map +1 -1
- package/dist/src/parser/ast.d.ts +2 -2
- package/dist/src/parser/lexer.d.ts +11 -1
- package/dist/src/parser/lexer.d.ts.map +1 -1
- package/dist/src/parser/lexer.js +40 -34
- package/dist/src/parser/lexer.js.map +1 -1
- package/dist/src/parser/parser.d.ts.map +1 -1
- package/dist/src/parser/parser.js +16 -9
- package/dist/src/parser/parser.js.map +1 -1
- package/dist/src/planner/analysis/authored-inverse.js +1 -1
- package/dist/src/planner/analysis/comparison-collation.d.ts +52 -0
- package/dist/src/planner/analysis/comparison-collation.d.ts.map +1 -1
- package/dist/src/planner/analysis/comparison-collation.js +84 -7
- package/dist/src/planner/analysis/comparison-collation.js.map +1 -1
- package/dist/src/planner/analysis/constraint-extractor.d.ts.map +1 -1
- package/dist/src/planner/analysis/constraint-extractor.js +64 -17
- package/dist/src/planner/analysis/constraint-extractor.js.map +1 -1
- package/dist/src/planner/analysis/coverage-prover.d.ts +1 -1
- package/dist/src/planner/analysis/coverage-prover.js +1 -1
- package/dist/src/planner/analysis/sat-checker.d.ts +8 -1
- package/dist/src/planner/analysis/sat-checker.d.ts.map +1 -1
- package/dist/src/planner/analysis/sat-checker.js +117 -22
- package/dist/src/planner/analysis/sat-checker.js.map +1 -1
- package/dist/src/planner/analysis/scalar-invertibility.d.ts +13 -4
- package/dist/src/planner/analysis/scalar-invertibility.d.ts.map +1 -1
- package/dist/src/planner/analysis/scalar-invertibility.js +12 -3
- package/dist/src/planner/analysis/scalar-invertibility.js.map +1 -1
- package/dist/src/planner/analysis/update-lineage.d.ts +1 -1
- package/dist/src/planner/analysis/update-lineage.js +1 -1
- package/dist/src/planner/analysis/update-lineage.js.map +1 -1
- package/dist/src/planner/analysis/view-complement.d.ts +2 -2
- package/dist/src/planner/building/delete.js +2 -2
- package/dist/src/planner/building/delete.js.map +1 -1
- package/dist/src/planner/building/dml-target.d.ts +2 -2
- package/dist/src/planner/building/dml-target.js +2 -2
- package/dist/src/planner/building/insert.d.ts.map +1 -1
- package/dist/src/planner/building/insert.js +53 -2
- package/dist/src/planner/building/insert.js.map +1 -1
- package/dist/src/planner/building/schema-resolution.d.ts +3 -0
- package/dist/src/planner/building/schema-resolution.d.ts.map +1 -1
- package/dist/src/planner/building/schema-resolution.js +4 -5
- package/dist/src/planner/building/schema-resolution.js.map +1 -1
- package/dist/src/planner/building/select.js +3 -3
- package/dist/src/planner/building/select.js.map +1 -1
- package/dist/src/planner/building/update.js +2 -2
- package/dist/src/planner/building/update.js.map +1 -1
- package/dist/src/planner/building/view-mutation-builder.js +7 -7
- package/dist/src/planner/building/view-mutation-builder.js.map +1 -1
- package/dist/src/planner/cache/materialization-advisory.d.ts +1 -2
- package/dist/src/planner/cache/materialization-advisory.d.ts.map +1 -1
- package/dist/src/planner/cache/materialization-advisory.js +21 -14
- package/dist/src/planner/cache/materialization-advisory.js.map +1 -1
- package/dist/src/planner/cache/reference-graph.d.ts +14 -1
- package/dist/src/planner/cache/reference-graph.d.ts.map +1 -1
- package/dist/src/planner/cache/reference-graph.js +26 -26
- package/dist/src/planner/cache/reference-graph.js.map +1 -1
- package/dist/src/planner/cost/index.d.ts +7 -3
- package/dist/src/planner/cost/index.d.ts.map +1 -1
- package/dist/src/planner/cost/index.js.map +1 -1
- package/dist/src/planner/debug.d.ts +3 -2
- package/dist/src/planner/debug.d.ts.map +1 -1
- package/dist/src/planner/debug.js +9 -3
- package/dist/src/planner/debug.js.map +1 -1
- package/dist/src/planner/framework/characteristics.d.ts +46 -19
- package/dist/src/planner/framework/characteristics.d.ts.map +1 -1
- package/dist/src/planner/framework/characteristics.js +50 -134
- package/dist/src/planner/framework/characteristics.js.map +1 -1
- package/dist/src/planner/framework/context.d.ts +8 -44
- package/dist/src/planner/framework/context.d.ts.map +1 -1
- package/dist/src/planner/framework/context.js +0 -91
- package/dist/src/planner/framework/context.js.map +1 -1
- package/dist/src/planner/framework/pass.d.ts +7 -0
- package/dist/src/planner/framework/pass.d.ts.map +1 -1
- package/dist/src/planner/framework/pass.js +84 -0
- package/dist/src/planner/framework/pass.js.map +1 -1
- package/dist/src/planner/framework/registry.d.ts +13 -42
- package/dist/src/planner/framework/registry.d.ts.map +1 -1
- package/dist/src/planner/framework/registry.js +14 -182
- package/dist/src/planner/framework/registry.js.map +1 -1
- package/dist/src/planner/mutation/backward-body.d.ts +2 -2
- package/dist/src/planner/mutation/cte-flatten.js +1 -1
- package/dist/src/planner/mutation/decomposition.d.ts +2 -2
- package/dist/src/planner/mutation/decomposition.js +1 -1
- package/dist/src/planner/mutation/lens-enforcement.d.ts.map +1 -1
- package/dist/src/planner/mutation/lens-enforcement.js +2 -1
- package/dist/src/planner/mutation/lens-enforcement.js.map +1 -1
- package/dist/src/planner/mutation/multi-source.d.ts +8 -8
- package/dist/src/planner/mutation/multi-source.js +11 -11
- package/dist/src/planner/mutation/multi-source.js.map +1 -1
- package/dist/src/planner/mutation/propagate.d.ts +1 -1
- package/dist/src/planner/mutation/propagate.js +1 -1
- package/dist/src/planner/mutation/scope-transform.d.ts +2 -2
- package/dist/src/planner/mutation/scope-transform.js +3 -3
- package/dist/src/planner/mutation/scope-transform.js.map +1 -1
- package/dist/src/planner/mutation/set-op.d.ts +1 -1
- package/dist/src/planner/mutation/set-op.d.ts.map +1 -1
- package/dist/src/planner/mutation/set-op.js +3 -2
- package/dist/src/planner/mutation/set-op.js.map +1 -1
- package/dist/src/planner/mutation/single-source.d.ts +3 -3
- package/dist/src/planner/mutation/single-source.js +9 -9
- package/dist/src/planner/mutation/single-source.js.map +1 -1
- package/dist/src/planner/nodes/aggregate-function.d.ts +3 -1
- package/dist/src/planner/nodes/aggregate-function.d.ts.map +1 -1
- package/dist/src/planner/nodes/aggregate-function.js +1 -0
- package/dist/src/planner/nodes/aggregate-function.js.map +1 -1
- package/dist/src/planner/nodes/aggregate-node.d.ts +1 -0
- package/dist/src/planner/nodes/aggregate-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/aggregate-node.js +8 -1
- 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 +3 -1
- package/dist/src/planner/nodes/alias-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 +3 -2
- package/dist/src/planner/nodes/asof-scan-node.js.map +1 -1
- package/dist/src/planner/nodes/asserted-keys-node.d.ts +1 -1
- package/dist/src/planner/nodes/asserted-keys-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/asserted-keys-node.js +5 -2
- 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 +3 -1
- package/dist/src/planner/nodes/async-gather-node.js.map +1 -1
- package/dist/src/planner/nodes/block.js +3 -3
- package/dist/src/planner/nodes/block.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 +5 -1
- package/dist/src/planner/nodes/bloom-join-node.js.map +1 -1
- package/dist/src/planner/nodes/cache-node.d.ts +1 -0
- package/dist/src/planner/nodes/cache-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/cache-node.js +1 -0
- package/dist/src/planner/nodes/cache-node.js.map +1 -1
- package/dist/src/planner/nodes/cte-node.d.ts +1 -0
- package/dist/src/planner/nodes/cte-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/cte-node.js +4 -1
- package/dist/src/planner/nodes/cte-node.js.map +1 -1
- package/dist/src/planner/nodes/distinct-node.js +3 -3
- package/dist/src/planner/nodes/distinct-node.js.map +1 -1
- package/dist/src/planner/nodes/dml-executor-node.d.ts +21 -0
- package/dist/src/planner/nodes/dml-executor-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/dml-executor-node.js.map +1 -1
- package/dist/src/planner/nodes/envelope-scan-node.d.ts +1 -1
- package/dist/src/planner/nodes/envelope-scan-node.js +1 -1
- package/dist/src/planner/nodes/fanout-lookup-join-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/fanout-lookup-join-node.js +4 -2
- package/dist/src/planner/nodes/fanout-lookup-join-node.js.map +1 -1
- package/dist/src/planner/nodes/filter.d.ts +10 -2
- package/dist/src/planner/nodes/filter.d.ts.map +1 -1
- package/dist/src/planner/nodes/filter.js +81 -14
- package/dist/src/planner/nodes/filter.js.map +1 -1
- package/dist/src/planner/nodes/hash-aggregate.d.ts +12 -1
- package/dist/src/planner/nodes/hash-aggregate.d.ts.map +1 -1
- package/dist/src/planner/nodes/hash-aggregate.js +28 -1
- package/dist/src/planner/nodes/hash-aggregate.js.map +1 -1
- package/dist/src/planner/nodes/internal-recursive-cte-ref-node.d.ts +3 -1
- package/dist/src/planner/nodes/internal-recursive-cte-ref-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/internal-recursive-cte-ref-node.js +1 -0
- package/dist/src/planner/nodes/internal-recursive-cte-ref-node.js.map +1 -1
- package/dist/src/planner/nodes/join-node.d.ts +3 -1
- package/dist/src/planner/nodes/join-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/join-node.js +5 -5
- package/dist/src/planner/nodes/join-node.js.map +1 -1
- package/dist/src/planner/nodes/lens-auxiliary-access-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/lens-auxiliary-access-node.js +4 -1
- package/dist/src/planner/nodes/lens-auxiliary-access-node.js.map +1 -1
- package/dist/src/planner/nodes/limit-offset.d.ts +1 -0
- package/dist/src/planner/nodes/limit-offset.d.ts.map +1 -1
- package/dist/src/planner/nodes/limit-offset.js +4 -3
- 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 +6 -1
- package/dist/src/planner/nodes/merge-join-node.js.map +1 -1
- package/dist/src/planner/nodes/ordinal-slice-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/ordinal-slice-node.js +3 -1
- package/dist/src/planner/nodes/ordinal-slice-node.js.map +1 -1
- package/dist/src/planner/nodes/plan-node.d.ts +68 -5
- package/dist/src/planner/nodes/plan-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/plan-node.js +137 -24
- package/dist/src/planner/nodes/plan-node.js.map +1 -1
- package/dist/src/planner/nodes/project-node.d.ts +3 -2
- package/dist/src/planner/nodes/project-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/project-node.js +1 -0
- package/dist/src/planner/nodes/project-node.js.map +1 -1
- package/dist/src/planner/nodes/recursive-cte-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/recursive-cte-node.js +8 -2
- package/dist/src/planner/nodes/recursive-cte-node.js.map +1 -1
- package/dist/src/planner/nodes/reference.d.ts +5 -1
- package/dist/src/planner/nodes/reference.d.ts.map +1 -1
- package/dist/src/planner/nodes/reference.js +3 -0
- package/dist/src/planner/nodes/reference.js.map +1 -1
- package/dist/src/planner/nodes/remote-query-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/remote-query-node.js +3 -1
- package/dist/src/planner/nodes/remote-query-node.js.map +1 -1
- package/dist/src/planner/nodes/retrieve-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/retrieve-node.js +3 -1
- package/dist/src/planner/nodes/retrieve-node.js.map +1 -1
- package/dist/src/planner/nodes/set-operation-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/set-operation-node.js +3 -1
- package/dist/src/planner/nodes/set-operation-node.js.map +1 -1
- package/dist/src/planner/nodes/sink-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/sink-node.js +3 -1
- package/dist/src/planner/nodes/sink-node.js.map +1 -1
- package/dist/src/planner/nodes/sort.d.ts +2 -1
- package/dist/src/planner/nodes/sort.d.ts.map +1 -1
- package/dist/src/planner/nodes/sort.js +9 -5
- package/dist/src/planner/nodes/sort.js.map +1 -1
- package/dist/src/planner/nodes/stream-aggregate.d.ts +12 -1
- package/dist/src/planner/nodes/stream-aggregate.d.ts.map +1 -1
- package/dist/src/planner/nodes/stream-aggregate.js +32 -3
- package/dist/src/planner/nodes/stream-aggregate.js.map +1 -1
- package/dist/src/planner/nodes/table-access-nodes.d.ts +2 -1
- package/dist/src/planner/nodes/table-access-nodes.d.ts.map +1 -1
- package/dist/src/planner/nodes/table-access-nodes.js +2 -0
- package/dist/src/planner/nodes/table-access-nodes.js.map +1 -1
- package/dist/src/planner/nodes/view-mutation-node.d.ts +2 -2
- package/dist/src/planner/nodes/view-mutation-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/view-mutation-node.js +5 -1
- package/dist/src/planner/nodes/view-mutation-node.js.map +1 -1
- package/dist/src/planner/nodes/window-function.d.ts +3 -1
- package/dist/src/planner/nodes/window-function.d.ts.map +1 -1
- package/dist/src/planner/nodes/window-function.js +1 -0
- package/dist/src/planner/nodes/window-function.js.map +1 -1
- package/dist/src/planner/optimizer.d.ts +52 -8
- package/dist/src/planner/optimizer.d.ts.map +1 -1
- package/dist/src/planner/optimizer.js +885 -894
- package/dist/src/planner/optimizer.js.map +1 -1
- package/dist/src/planner/rules/access/rule-select-access-path.d.ts.map +1 -1
- package/dist/src/planner/rules/access/rule-select-access-path.js +235 -202
- package/dist/src/planner/rules/access/rule-select-access-path.js.map +1 -1
- package/dist/src/planner/rules/cache/rule-materialized-view-rewrite.d.ts +2 -2
- package/dist/src/planner/rules/cache/rule-materialized-view-rewrite.js +2 -2
- package/dist/src/planner/rules/cache/rule-scalar-cse.d.ts +1 -1
- package/dist/src/planner/rules/cache/rule-scalar-cse.js +1 -1
- package/dist/src/planner/rules/join/rule-fanout-batched-outer.d.ts +1 -1
- package/dist/src/planner/rules/join/rule-fanout-batched-outer.js +1 -1
- package/dist/src/planner/rules/join/rule-inner-join-existence-recovery.d.ts +1 -1
- package/dist/src/planner/rules/join/rule-inner-join-existence-recovery.js +1 -1
- package/dist/src/planner/rules/join/rule-join-elimination.d.ts +1 -1
- package/dist/src/planner/rules/join/rule-join-elimination.js +1 -1
- package/dist/src/planner/rules/parallel/rule-async-gather-zip-by-key.js +5 -6
- package/dist/src/planner/rules/parallel/rule-async-gather-zip-by-key.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-contradiction.d.ts +2 -2
- package/dist/src/planner/rules/predicate/rule-filter-contradiction.d.ts.map +1 -1
- package/dist/src/planner/rules/predicate/rule-filter-contradiction.js +4 -3
- package/dist/src/planner/rules/predicate/rule-filter-contradiction.js.map +1 -1
- package/dist/src/planner/rules/predicate/rule-filter-selectivity.d.ts +19 -0
- package/dist/src/planner/rules/predicate/rule-filter-selectivity.d.ts.map +1 -0
- package/dist/src/planner/rules/predicate/rule-filter-selectivity.js +48 -0
- package/dist/src/planner/rules/predicate/rule-filter-selectivity.js.map +1 -0
- package/dist/src/planner/rules/predicate/rule-sargable-range-rewrite.js +12 -1
- package/dist/src/planner/rules/predicate/rule-sargable-range-rewrite.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 +22 -20
- package/dist/src/planner/rules/retrieve/rule-grow-retrieve.js.map +1 -1
- package/dist/src/planner/rules/shared/index-style-context.d.ts +39 -0
- package/dist/src/planner/rules/shared/index-style-context.d.ts.map +1 -0
- package/dist/src/planner/rules/shared/index-style-context.js +26 -0
- package/dist/src/planner/rules/shared/index-style-context.js.map +1 -0
- package/dist/src/planner/rules/sort/rule-orderby-fd-pruning.d.ts +1 -1
- package/dist/src/planner/rules/sort/rule-orderby-fd-pruning.js +1 -1
- package/dist/src/planner/rules/subquery/rule-anti-join-fk-empty.d.ts +1 -1
- package/dist/src/planner/rules/subquery/rule-anti-join-fk-empty.js +1 -1
- package/dist/src/planner/stats/analyze.d.ts.map +1 -1
- package/dist/src/planner/stats/analyze.js +2 -20
- package/dist/src/planner/stats/analyze.js.map +1 -1
- package/dist/src/planner/stats/histogram.d.ts.map +1 -1
- package/dist/src/planner/stats/histogram.js +4 -0
- package/dist/src/planner/stats/histogram.js.map +1 -1
- package/dist/src/planner/util/fd-utils.d.ts +2 -3
- package/dist/src/planner/util/fd-utils.d.ts.map +1 -1
- package/dist/src/planner/util/fd-utils.js +2 -3
- package/dist/src/planner/util/fd-utils.js.map +1 -1
- package/dist/src/planner/validation/plan-validator.d.ts +16 -0
- package/dist/src/planner/validation/plan-validator.d.ts.map +1 -1
- package/dist/src/planner/validation/plan-validator.js +36 -0
- package/dist/src/planner/validation/plan-validator.js.map +1 -1
- package/dist/src/runtime/async-util.d.ts +26 -0
- package/dist/src/runtime/async-util.d.ts.map +1 -1
- package/dist/src/runtime/async-util.js +139 -55
- package/dist/src/runtime/async-util.js.map +1 -1
- package/dist/src/runtime/context-helpers.d.ts +32 -4
- package/dist/src/runtime/context-helpers.d.ts.map +1 -1
- package/dist/src/runtime/context-helpers.js +26 -9
- package/dist/src/runtime/context-helpers.js.map +1 -1
- package/dist/src/runtime/deferred-constraint-queue.d.ts.map +1 -1
- package/dist/src/runtime/deferred-constraint-queue.js +2 -1
- package/dist/src/runtime/deferred-constraint-queue.js.map +1 -1
- package/dist/src/runtime/emission-context.d.ts +27 -3
- package/dist/src/runtime/emission-context.d.ts.map +1 -1
- package/dist/src/runtime/emission-context.js +38 -7
- package/dist/src/runtime/emission-context.js.map +1 -1
- package/dist/src/runtime/emit/add-constraint.d.ts.map +1 -1
- package/dist/src/runtime/emit/add-constraint.js +7 -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 +17 -13
- package/dist/src/runtime/emit/aggregate.js.map +1 -1
- package/dist/src/runtime/emit/alter-table.d.ts.map +1 -1
- package/dist/src/runtime/emit/alter-table.js +98 -9
- 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 +2 -1
- 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 +13 -10
- package/dist/src/runtime/emit/asof-scan.js.map +1 -1
- package/dist/src/runtime/emit/async-gather.d.ts.map +1 -1
- package/dist/src/runtime/emit/async-gather.js +4 -3
- package/dist/src/runtime/emit/async-gather.js.map +1 -1
- package/dist/src/runtime/emit/between.d.ts.map +1 -1
- package/dist/src/runtime/emit/between.js +2 -1
- 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 +122 -14
- package/dist/src/runtime/emit/binary.js.map +1 -1
- package/dist/src/runtime/emit/block.d.ts.map +1 -1
- package/dist/src/runtime/emit/block.js +2 -1
- package/dist/src/runtime/emit/block.js.map +1 -1
- package/dist/src/runtime/emit/bloom-join.d.ts.map +1 -1
- package/dist/src/runtime/emit/bloom-join.js +20 -8
- package/dist/src/runtime/emit/bloom-join.js.map +1 -1
- package/dist/src/runtime/emit/cache.d.ts.map +1 -1
- package/dist/src/runtime/emit/cache.js +2 -1
- package/dist/src/runtime/emit/cache.js.map +1 -1
- package/dist/src/runtime/emit/case.d.ts.map +1 -1
- package/dist/src/runtime/emit/case.js +66 -45
- 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 +2 -1
- 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 +13 -7
- 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 +2 -1
- package/dist/src/runtime/emit/create-assertion.js.map +1 -1
- package/dist/src/runtime/emit/create-index.d.ts.map +1 -1
- package/dist/src/runtime/emit/create-index.js +12 -1
- package/dist/src/runtime/emit/create-index.js.map +1 -1
- package/dist/src/runtime/emit/create-table.d.ts.map +1 -1
- package/dist/src/runtime/emit/create-table.js +12 -1
- package/dist/src/runtime/emit/create-table.js.map +1 -1
- package/dist/src/runtime/emit/cte-reference.d.ts.map +1 -1
- package/dist/src/runtime/emit/cte-reference.js +2 -1
- package/dist/src/runtime/emit/cte-reference.js.map +1 -1
- package/dist/src/runtime/emit/cte.d.ts.map +1 -1
- package/dist/src/runtime/emit/cte.js +2 -1
- package/dist/src/runtime/emit/cte.js.map +1 -1
- package/dist/src/runtime/emit/ddl-transaction-policy.d.ts +50 -0
- package/dist/src/runtime/emit/ddl-transaction-policy.d.ts.map +1 -0
- package/dist/src/runtime/emit/ddl-transaction-policy.js +69 -0
- package/dist/src/runtime/emit/ddl-transaction-policy.js.map +1 -0
- package/dist/src/runtime/emit/delete.d.ts.map +1 -1
- package/dist/src/runtime/emit/delete.js +2 -1
- package/dist/src/runtime/emit/delete.js.map +1 -1
- package/dist/src/runtime/emit/distinct.d.ts.map +1 -1
- package/dist/src/runtime/emit/distinct.js +2 -1
- package/dist/src/runtime/emit/distinct.js.map +1 -1
- package/dist/src/runtime/emit/dml-executor.d.ts.map +1 -1
- package/dist/src/runtime/emit/dml-executor.js +70 -31
- package/dist/src/runtime/emit/dml-executor.js.map +1 -1
- package/dist/src/runtime/emit/drop-assertion.d.ts.map +1 -1
- package/dist/src/runtime/emit/drop-assertion.js +2 -1
- package/dist/src/runtime/emit/drop-assertion.js.map +1 -1
- package/dist/src/runtime/emit/drop-index.d.ts.map +1 -1
- package/dist/src/runtime/emit/drop-index.js +17 -1
- package/dist/src/runtime/emit/drop-index.js.map +1 -1
- package/dist/src/runtime/emit/drop-table.d.ts.map +1 -1
- package/dist/src/runtime/emit/drop-table.js +11 -1
- package/dist/src/runtime/emit/drop-table.js.map +1 -1
- package/dist/src/runtime/emit/eager-prefetch.d.ts.map +1 -1
- package/dist/src/runtime/emit/eager-prefetch.js +2 -1
- package/dist/src/runtime/emit/eager-prefetch.js.map +1 -1
- package/dist/src/runtime/emit/envelope-scan.d.ts.map +1 -1
- package/dist/src/runtime/emit/envelope-scan.js +2 -1
- package/dist/src/runtime/emit/envelope-scan.js.map +1 -1
- package/dist/src/runtime/emit/fanout-lookup-join.d.ts.map +1 -1
- package/dist/src/runtime/emit/fanout-lookup-join.js +3 -2
- package/dist/src/runtime/emit/fanout-lookup-join.js.map +1 -1
- package/dist/src/runtime/emit/filter.d.ts.map +1 -1
- package/dist/src/runtime/emit/filter.js +8 -3
- 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 +16 -11
- package/dist/src/runtime/emit/hash-aggregate.js.map +1 -1
- package/dist/src/runtime/emit/insert.d.ts.map +1 -1
- package/dist/src/runtime/emit/insert.js +2 -1
- package/dist/src/runtime/emit/insert.js.map +1 -1
- package/dist/src/runtime/emit/join.d.ts.map +1 -1
- package/dist/src/runtime/emit/join.js +20 -6
- package/dist/src/runtime/emit/join.js.map +1 -1
- package/dist/src/runtime/emit/limit-offset.d.ts.map +1 -1
- package/dist/src/runtime/emit/limit-offset.js +2 -1
- package/dist/src/runtime/emit/limit-offset.js.map +1 -1
- package/dist/src/runtime/emit/literal.d.ts.map +1 -1
- package/dist/src/runtime/emit/literal.js +2 -1
- package/dist/src/runtime/emit/literal.js.map +1 -1
- package/dist/src/runtime/emit/materialized-view-helpers.d.ts +22 -0
- package/dist/src/runtime/emit/materialized-view-helpers.d.ts.map +1 -1
- package/dist/src/runtime/emit/materialized-view-helpers.js +123 -12
- package/dist/src/runtime/emit/materialized-view-helpers.js.map +1 -1
- package/dist/src/runtime/emit/materialized-view.d.ts.map +1 -1
- package/dist/src/runtime/emit/materialized-view.js +6 -0
- package/dist/src/runtime/emit/materialized-view.js.map +1 -1
- package/dist/src/runtime/emit/merge-join.d.ts.map +1 -1
- package/dist/src/runtime/emit/merge-join.js +14 -4
- package/dist/src/runtime/emit/merge-join.js.map +1 -1
- package/dist/src/runtime/emit/ordinal-slice.d.ts.map +1 -1
- package/dist/src/runtime/emit/ordinal-slice.js +2 -1
- package/dist/src/runtime/emit/ordinal-slice.js.map +1 -1
- package/dist/src/runtime/emit/pragma.d.ts.map +1 -1
- package/dist/src/runtime/emit/pragma.js +2 -1
- package/dist/src/runtime/emit/pragma.js.map +1 -1
- package/dist/src/runtime/emit/project.d.ts.map +1 -1
- package/dist/src/runtime/emit/project.js +7 -2
- package/dist/src/runtime/emit/project.js.map +1 -1
- package/dist/src/runtime/emit/recursive-cte.d.ts.map +1 -1
- package/dist/src/runtime/emit/recursive-cte.js +2 -1
- package/dist/src/runtime/emit/recursive-cte.js.map +1 -1
- package/dist/src/runtime/emit/returning.d.ts.map +1 -1
- package/dist/src/runtime/emit/returning.js +7 -2
- package/dist/src/runtime/emit/returning.js.map +1 -1
- package/dist/src/runtime/emit/scalar-function.d.ts.map +1 -1
- package/dist/src/runtime/emit/scalar-function.js +2 -1
- package/dist/src/runtime/emit/scalar-function.js.map +1 -1
- package/dist/src/runtime/emit/scan.d.ts.map +1 -1
- package/dist/src/runtime/emit/scan.js +55 -17
- 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 +6 -5
- package/dist/src/runtime/emit/schema-declarative.js.map +1 -1
- package/dist/src/runtime/emit/sequencing.d.ts.map +1 -1
- package/dist/src/runtime/emit/sequencing.js +2 -1
- package/dist/src/runtime/emit/sequencing.js.map +1 -1
- package/dist/src/runtime/emit/set-operation.d.ts.map +1 -1
- package/dist/src/runtime/emit/set-operation.js +6 -5
- package/dist/src/runtime/emit/set-operation.js.map +1 -1
- package/dist/src/runtime/emit/sink.d.ts.map +1 -1
- package/dist/src/runtime/emit/sink.js +2 -1
- package/dist/src/runtime/emit/sink.js.map +1 -1
- package/dist/src/runtime/emit/sort.d.ts.map +1 -1
- package/dist/src/runtime/emit/sort.js +2 -1
- package/dist/src/runtime/emit/sort.js.map +1 -1
- package/dist/src/runtime/emit/subquery.d.ts.map +1 -1
- package/dist/src/runtime/emit/subquery.js +42 -23
- package/dist/src/runtime/emit/subquery.js.map +1 -1
- package/dist/src/runtime/emit/table-valued-function.d.ts.map +1 -1
- package/dist/src/runtime/emit/table-valued-function.js +2 -1
- package/dist/src/runtime/emit/table-valued-function.js.map +1 -1
- package/dist/src/runtime/emit/temporal-arithmetic.d.ts.map +1 -1
- package/dist/src/runtime/emit/temporal-arithmetic.js +2 -1
- package/dist/src/runtime/emit/temporal-arithmetic.js.map +1 -1
- package/dist/src/runtime/emit/transaction.d.ts.map +1 -1
- package/dist/src/runtime/emit/transaction.js +2 -1
- package/dist/src/runtime/emit/transaction.js.map +1 -1
- package/dist/src/runtime/emit/unary.d.ts.map +1 -1
- package/dist/src/runtime/emit/unary.js +2 -1
- package/dist/src/runtime/emit/unary.js.map +1 -1
- package/dist/src/runtime/emit/update.d.ts.map +1 -1
- package/dist/src/runtime/emit/update.js +2 -1
- package/dist/src/runtime/emit/update.js.map +1 -1
- package/dist/src/runtime/emit/values.d.ts.map +1 -1
- package/dist/src/runtime/emit/values.js +2 -1
- package/dist/src/runtime/emit/values.js.map +1 -1
- package/dist/src/runtime/emit/view-mutation.d.ts +1 -1
- package/dist/src/runtime/emit/view-mutation.d.ts.map +1 -1
- package/dist/src/runtime/emit/view-mutation.js +6 -3
- package/dist/src/runtime/emit/view-mutation.js.map +1 -1
- package/dist/src/runtime/emit/window.d.ts.map +1 -1
- package/dist/src/runtime/emit/window.js +26 -9
- package/dist/src/runtime/emit/window.js.map +1 -1
- package/dist/src/runtime/emitters.d.ts +11 -3
- package/dist/src/runtime/emitters.d.ts.map +1 -1
- package/dist/src/runtime/emitters.js +13 -22
- package/dist/src/runtime/emitters.js.map +1 -1
- package/dist/src/runtime/foreign-key-actions.d.ts.map +1 -1
- package/dist/src/runtime/foreign-key-actions.js +39 -13
- package/dist/src/runtime/foreign-key-actions.js.map +1 -1
- package/dist/src/runtime/parallel-driver.d.ts +18 -4
- package/dist/src/runtime/parallel-driver.d.ts.map +1 -1
- package/dist/src/runtime/parallel-driver.js +72 -18
- package/dist/src/runtime/parallel-driver.js.map +1 -1
- package/dist/src/runtime/scheduler.d.ts +56 -7
- package/dist/src/runtime/scheduler.d.ts.map +1 -1
- package/dist/src/runtime/scheduler.js +223 -200
- package/dist/src/runtime/scheduler.js.map +1 -1
- package/dist/src/runtime/strict-flags.d.ts +22 -0
- package/dist/src/runtime/strict-flags.d.ts.map +1 -0
- package/dist/src/runtime/strict-flags.js +26 -0
- package/dist/src/runtime/strict-flags.js.map +1 -0
- package/dist/src/runtime/strict-fork.d.ts +4 -4
- package/dist/src/runtime/strict-fork.d.ts.map +1 -1
- package/dist/src/runtime/strict-fork.js +175 -31
- package/dist/src/runtime/strict-fork.js.map +1 -1
- package/dist/src/runtime/types.d.ts +66 -4
- package/dist/src/runtime/types.d.ts.map +1 -1
- package/dist/src/runtime/types.js +37 -0
- package/dist/src/runtime/types.js.map +1 -1
- package/dist/src/runtime/utils.d.ts.map +1 -1
- package/dist/src/runtime/utils.js +8 -17
- package/dist/src/runtime/utils.js.map +1 -1
- package/dist/src/schema/column.d.ts +8 -0
- 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.js +5 -0
- package/dist/src/schema/ddl-generator.js.map +1 -1
- package/dist/src/schema/lens-compiler.js +2 -2
- package/dist/src/schema/lens-compiler.js.map +1 -1
- package/dist/src/schema/lens-prover.d.ts.map +1 -1
- package/dist/src/schema/lens-prover.js +2 -3
- package/dist/src/schema/lens-prover.js.map +1 -1
- package/dist/src/schema/lens.d.ts +1 -1
- package/dist/src/schema/manager.d.ts.map +1 -1
- package/dist/src/schema/manager.js +7 -2
- package/dist/src/schema/manager.js.map +1 -1
- package/dist/src/schema/rename-rewriter.d.ts +61 -0
- package/dist/src/schema/rename-rewriter.d.ts.map +1 -1
- package/dist/src/schema/rename-rewriter.js +77 -0
- package/dist/src/schema/rename-rewriter.js.map +1 -1
- package/dist/src/schema/table.d.ts +36 -8
- package/dist/src/schema/table.d.ts.map +1 -1
- package/dist/src/schema/table.js +61 -11
- package/dist/src/schema/table.js.map +1 -1
- package/dist/src/schema/unique-enforcement.d.ts +28 -5
- package/dist/src/schema/unique-enforcement.d.ts.map +1 -1
- package/dist/src/schema/unique-enforcement.js +37 -5
- package/dist/src/schema/unique-enforcement.js.map +1 -1
- package/dist/src/schema/view.d.ts +1 -1
- package/dist/src/schema/view.js +1 -1
- package/dist/src/types/json-type.d.ts.map +1 -1
- package/dist/src/types/json-type.js +18 -8
- package/dist/src/types/json-type.js.map +1 -1
- package/dist/src/types/logical-type.d.ts +26 -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/util/comparison.d.ts +83 -59
- package/dist/src/util/comparison.d.ts.map +1 -1
- package/dist/src/util/comparison.js +191 -131
- package/dist/src/util/comparison.js.map +1 -1
- package/dist/src/util/json-canonical.d.ts +34 -0
- package/dist/src/util/json-canonical.d.ts.map +1 -0
- package/dist/src/util/json-canonical.js +32 -0
- package/dist/src/util/json-canonical.js.map +1 -0
- package/dist/src/util/key-serializer.d.ts +10 -3
- package/dist/src/util/key-serializer.d.ts.map +1 -1
- package/dist/src/util/key-serializer.js +43 -17
- package/dist/src/util/key-serializer.js.map +1 -1
- package/dist/src/util/key-tuple-codec.d.ts +37 -0
- package/dist/src/util/key-tuple-codec.d.ts.map +1 -0
- package/dist/src/util/key-tuple-codec.js +65 -0
- package/dist/src/util/key-tuple-codec.js.map +1 -0
- package/dist/src/util/latches.d.ts +29 -3
- package/dist/src/util/latches.d.ts.map +1 -1
- package/dist/src/util/latches.js +60 -6
- package/dist/src/util/latches.js.map +1 -1
- package/dist/src/util/patterns.d.ts +22 -8
- package/dist/src/util/patterns.d.ts.map +1 -1
- package/dist/src/util/patterns.js +87 -16
- package/dist/src/util/patterns.js.map +1 -1
- package/dist/src/util/qualified-name.d.ts +10 -0
- package/dist/src/util/qualified-name.d.ts.map +1 -0
- package/dist/src/util/qualified-name.js +15 -0
- package/dist/src/util/qualified-name.js.map +1 -0
- package/dist/src/vtab/backing-host.d.ts +8 -1
- package/dist/src/vtab/backing-host.d.ts.map +1 -1
- package/dist/src/vtab/backing-host.js +7 -0
- package/dist/src/vtab/backing-host.js.map +1 -1
- package/dist/src/vtab/best-access-plan.d.ts +18 -0
- package/dist/src/vtab/best-access-plan.d.ts.map +1 -1
- package/dist/src/vtab/best-access-plan.js +15 -0
- package/dist/src/vtab/best-access-plan.js.map +1 -1
- package/dist/src/vtab/capabilities.d.ts +44 -0
- package/dist/src/vtab/capabilities.d.ts.map +1 -1
- package/dist/src/vtab/filter-info.d.ts +42 -0
- package/dist/src/vtab/filter-info.d.ts.map +1 -1
- package/dist/src/vtab/filter-info.js +137 -1
- package/dist/src/vtab/filter-info.js.map +1 -1
- package/dist/src/vtab/idx-str.d.ts +62 -0
- package/dist/src/vtab/idx-str.d.ts.map +1 -0
- package/dist/src/vtab/idx-str.js +130 -0
- package/dist/src/vtab/idx-str.js.map +1 -0
- package/dist/src/vtab/index-descriptor.d.ts +122 -0
- package/dist/src/vtab/index-descriptor.d.ts.map +1 -0
- package/dist/src/vtab/index-descriptor.js +104 -0
- package/dist/src/vtab/index-descriptor.js.map +1 -0
- package/dist/src/vtab/mapping-advertisement.d.ts +1 -1
- package/dist/src/vtab/memory/index.d.ts +12 -4
- package/dist/src/vtab/memory/index.d.ts.map +1 -1
- package/dist/src/vtab/memory/index.js +17 -9
- package/dist/src/vtab/memory/index.js.map +1 -1
- package/dist/src/vtab/memory/layer/base.d.ts +85 -31
- package/dist/src/vtab/memory/layer/base.d.ts.map +1 -1
- package/dist/src/vtab/memory/layer/base.js +127 -86
- package/dist/src/vtab/memory/layer/base.js.map +1 -1
- package/dist/src/vtab/memory/layer/connection.d.ts +27 -0
- package/dist/src/vtab/memory/layer/connection.d.ts.map +1 -1
- package/dist/src/vtab/memory/layer/connection.js +36 -1
- package/dist/src/vtab/memory/layer/connection.js.map +1 -1
- package/dist/src/vtab/memory/layer/interface.d.ts +24 -4
- package/dist/src/vtab/memory/layer/interface.d.ts.map +1 -1
- package/dist/src/vtab/memory/layer/manager.d.ts +212 -16
- package/dist/src/vtab/memory/layer/manager.d.ts.map +1 -1
- package/dist/src/vtab/memory/layer/manager.js +754 -170
- package/dist/src/vtab/memory/layer/manager.js.map +1 -1
- package/dist/src/vtab/memory/layer/plan-filter.d.ts +26 -1
- package/dist/src/vtab/memory/layer/plan-filter.d.ts.map +1 -1
- package/dist/src/vtab/memory/layer/plan-filter.js +29 -11
- package/dist/src/vtab/memory/layer/plan-filter.js.map +1 -1
- package/dist/src/vtab/memory/layer/safe-iterate.d.ts +2 -2
- package/dist/src/vtab/memory/layer/safe-iterate.d.ts.map +1 -1
- package/dist/src/vtab/memory/layer/safe-iterate.js +2 -2
- package/dist/src/vtab/memory/layer/safe-iterate.js.map +1 -1
- package/dist/src/vtab/memory/layer/scan-layer.d.ts +5 -1
- package/dist/src/vtab/memory/layer/scan-layer.d.ts.map +1 -1
- package/dist/src/vtab/memory/layer/scan-layer.js +38 -22
- package/dist/src/vtab/memory/layer/scan-layer.js.map +1 -1
- package/dist/src/vtab/memory/layer/scan-plan.d.ts.map +1 -1
- package/dist/src/vtab/memory/layer/scan-plan.js +13 -21
- package/dist/src/vtab/memory/layer/scan-plan.js.map +1 -1
- package/dist/src/vtab/memory/layer/transaction.d.ts +169 -7
- package/dist/src/vtab/memory/layer/transaction.d.ts.map +1 -1
- package/dist/src/vtab/memory/layer/transaction.js +334 -9
- package/dist/src/vtab/memory/layer/transaction.js.map +1 -1
- package/dist/src/vtab/memory/module.d.ts +11 -4
- package/dist/src/vtab/memory/module.d.ts.map +1 -1
- package/dist/src/vtab/memory/module.js +35 -16
- package/dist/src/vtab/memory/module.js.map +1 -1
- package/dist/src/vtab/memory/table.d.ts +30 -4
- package/dist/src/vtab/memory/table.d.ts.map +1 -1
- package/dist/src/vtab/memory/table.js +63 -15
- package/dist/src/vtab/memory/table.js.map +1 -1
- package/dist/src/vtab/memory/utils/predicate.d.ts +9 -1
- package/dist/src/vtab/memory/utils/predicate.d.ts.map +1 -1
- package/dist/src/vtab/memory/utils/predicate.js +35 -14
- package/dist/src/vtab/memory/utils/predicate.js.map +1 -1
- package/dist/src/vtab/memory/utils/primary-key-encode.d.ts.map +1 -1
- package/dist/src/vtab/memory/utils/primary-key-encode.js +12 -6
- package/dist/src/vtab/memory/utils/primary-key-encode.js.map +1 -1
- package/dist/src/vtab/memory/utils/primary-key.d.ts +6 -1
- package/dist/src/vtab/memory/utils/primary-key.d.ts.map +1 -1
- package/dist/src/vtab/memory/utils/primary-key.js +12 -8
- package/dist/src/vtab/memory/utils/primary-key.js.map +1 -1
- package/dist/src/vtab/module.d.ts +38 -14
- package/dist/src/vtab/module.d.ts.map +1 -1
- package/dist/src/vtab/table.d.ts +41 -2
- package/dist/src/vtab/table.d.ts.map +1 -1
- package/dist/src/vtab/table.js +19 -0
- package/dist/src/vtab/table.js.map +1 -1
- package/package.json +5 -4
- package/dist/src/planner/rules/cache/rule-materialization-advisory.d.ts +0 -18
- package/dist/src/planner/rules/cache/rule-materialization-advisory.d.ts.map +0 -1
- package/dist/src/planner/rules/cache/rule-materialization-advisory.js +0 -65
- package/dist/src/planner/rules/cache/rule-materialization-advisory.js.map +0 -1
|
@@ -4,6 +4,14 @@
|
|
|
4
4
|
* This module provides utilities for analyzing plan nodes based on their capabilities
|
|
5
5
|
* and characteristics rather than their specific types, enabling robust and extensible
|
|
6
6
|
* optimization rules.
|
|
7
|
+
*
|
|
8
|
+
* Cross-class capabilities (the `*Capable` interfaces below) are detected via a
|
|
9
|
+
* compiler-enforced brand: each interface declares a unique `readonly is<X>Capable:
|
|
10
|
+
* true` marker, every implementer sets it, and the `CapabilityDetectors` guards test
|
|
11
|
+
* exactly that marker. Because `implements XCapable` fails to compile unless the class
|
|
12
|
+
* also sets the brand, "implements the capability" and "is detected as having it" are
|
|
13
|
+
* the same fact — a new implementer cannot silently be missed by a guard. Concrete
|
|
14
|
+
* class identity still uses `instanceof`; dispatch/serialization still uses `nodeType`.
|
|
7
15
|
*/
|
|
8
16
|
import type { PlanNode, RelationalPlanNode, ScalarPlanNode, ConstantNode, TableDescriptor, MonotonicOnInfo } from '../nodes/plan-node.js';
|
|
9
17
|
import type * as AST from '../../parser/ast.js';
|
|
@@ -84,6 +92,8 @@ export declare class PlanNodeCharacteristics {
|
|
|
84
92
|
* Interface for nodes that can provide predicates (WHERE clauses, join conditions)
|
|
85
93
|
*/
|
|
86
94
|
export interface PredicateCapable extends PlanNode {
|
|
95
|
+
/** Capability brand — set to `true` by every implementer; enables total, misfire-proof detection. */
|
|
96
|
+
readonly isPredicateCapable: true;
|
|
87
97
|
getPredicate(): ScalarPlanNode | null;
|
|
88
98
|
withPredicate(newPredicate: ScalarPlanNode | null): PlanNode;
|
|
89
99
|
}
|
|
@@ -91,12 +101,16 @@ export interface PredicateCapable extends PlanNode {
|
|
|
91
101
|
* Interface for nodes that can expose one or more local predicates (e.g., WHERE, ON)
|
|
92
102
|
*/
|
|
93
103
|
export interface PredicateSourceCapable extends PlanNode {
|
|
104
|
+
/** Capability brand — see {@link PredicateCapable.isPredicateCapable}. */
|
|
105
|
+
readonly isPredicateSourceCapable: true;
|
|
94
106
|
getPredicates(): readonly ScalarPlanNode[];
|
|
95
107
|
}
|
|
96
108
|
/**
|
|
97
109
|
* Interface for nodes that can combine predicates (for pushdown optimization)
|
|
98
110
|
*/
|
|
99
111
|
export interface PredicateCombinable extends PredicateCapable {
|
|
112
|
+
/** Capability brand — see {@link PredicateCapable.isPredicateCapable}. */
|
|
113
|
+
readonly isPredicateCombinableCapable: true;
|
|
100
114
|
canCombinePredicates(): boolean;
|
|
101
115
|
combineWith(other: ScalarPlanNode): ScalarPlanNode;
|
|
102
116
|
}
|
|
@@ -104,6 +118,8 @@ export interface PredicateCombinable extends PredicateCapable {
|
|
|
104
118
|
* Interface for table access nodes
|
|
105
119
|
*/
|
|
106
120
|
export interface TableAccessCapable extends RelationalPlanNode {
|
|
121
|
+
/** Capability brand — see {@link PredicateCapable.isPredicateCapable}. */
|
|
122
|
+
readonly isTableAccessCapable: true;
|
|
107
123
|
readonly tableSchema: TableSchema;
|
|
108
124
|
getAccessMethod(): 'sequential' | 'index-scan' | 'index-seek' | 'virtual';
|
|
109
125
|
}
|
|
@@ -111,6 +127,8 @@ export interface TableAccessCapable extends RelationalPlanNode {
|
|
|
111
127
|
* Interface for aggregation operations
|
|
112
128
|
*/
|
|
113
129
|
export interface AggregationCapable extends RelationalPlanNode {
|
|
130
|
+
/** Capability brand — see {@link PredicateCapable.isPredicateCapable}. */
|
|
131
|
+
readonly isAggregationCapable: true;
|
|
114
132
|
getGroupingKeys(): readonly ScalarPlanNode[];
|
|
115
133
|
getAggregateExpressions(): readonly {
|
|
116
134
|
expr: ScalarPlanNode;
|
|
@@ -125,6 +143,8 @@ export interface AggregationCapable extends RelationalPlanNode {
|
|
|
125
143
|
* Interface for sorting operations
|
|
126
144
|
*/
|
|
127
145
|
export interface SortCapable extends PlanNode {
|
|
146
|
+
/** Capability brand — see {@link PredicateCapable.isPredicateCapable}. */
|
|
147
|
+
readonly isSortCapable: true;
|
|
128
148
|
getSortKeys(): readonly {
|
|
129
149
|
expression: ScalarPlanNode;
|
|
130
150
|
direction: 'asc' | 'desc';
|
|
@@ -140,6 +160,8 @@ export interface SortCapable extends PlanNode {
|
|
|
140
160
|
* Interface for limit/offset capability
|
|
141
161
|
*/
|
|
142
162
|
export interface LimitCapable extends PlanNode {
|
|
163
|
+
/** Capability brand — see {@link PredicateCapable.isPredicateCapable}. */
|
|
164
|
+
readonly isLimitCapable: true;
|
|
143
165
|
getLimitExpression(): ScalarPlanNode | undefined;
|
|
144
166
|
getOffsetExpression(): ScalarPlanNode | undefined;
|
|
145
167
|
}
|
|
@@ -147,6 +169,8 @@ export interface LimitCapable extends PlanNode {
|
|
|
147
169
|
* Interface for nodes that can provide stable attribute→column bindings for constraint mapping
|
|
148
170
|
*/
|
|
149
171
|
export interface ColumnBindingProvider extends PlanNode {
|
|
172
|
+
/** Capability brand — see {@link PredicateCapable.isPredicateCapable}. */
|
|
173
|
+
readonly isColumnBindingProviderCapable: true;
|
|
150
174
|
/** Relation name used for mapping/presentation (e.g., schema.table or alias) */
|
|
151
175
|
getBindingRelationName(): string;
|
|
152
176
|
/** Attributes (id/name) visible at this binding boundary */
|
|
@@ -161,6 +185,8 @@ export interface ColumnBindingProvider extends PlanNode {
|
|
|
161
185
|
* Interface for projection operations
|
|
162
186
|
*/
|
|
163
187
|
export interface ProjectionCapable extends RelationalPlanNode {
|
|
188
|
+
/** Capability brand — see {@link PredicateCapable.isPredicateCapable}. */
|
|
189
|
+
readonly isProjectionCapable: true;
|
|
164
190
|
getProjections(): readonly {
|
|
165
191
|
node: ScalarPlanNode;
|
|
166
192
|
alias: string;
|
|
@@ -176,6 +202,8 @@ export interface ProjectionCapable extends RelationalPlanNode {
|
|
|
176
202
|
* Interface for join operations
|
|
177
203
|
*/
|
|
178
204
|
export interface JoinCapable extends RelationalPlanNode {
|
|
205
|
+
/** Capability brand — see {@link PredicateCapable.isPredicateCapable}. */
|
|
206
|
+
readonly isJoinCapable: true;
|
|
179
207
|
getJoinType(): 'inner' | 'left' | 'right' | 'full' | 'cross' | 'semi' | 'anti';
|
|
180
208
|
getJoinCondition(): ScalarPlanNode | undefined;
|
|
181
209
|
getLeftSource(): RelationalPlanNode;
|
|
@@ -186,6 +214,8 @@ export interface JoinCapable extends RelationalPlanNode {
|
|
|
186
214
|
* Interface for cached operations
|
|
187
215
|
*/
|
|
188
216
|
export interface CacheCapable extends PlanNode {
|
|
217
|
+
/** Capability brand — see {@link PredicateCapable.isPredicateCapable}. */
|
|
218
|
+
readonly isCacheCapable: true;
|
|
189
219
|
getCacheStrategy(): string | null;
|
|
190
220
|
isCached(): boolean;
|
|
191
221
|
}
|
|
@@ -193,6 +223,8 @@ export interface CacheCapable extends PlanNode {
|
|
|
193
223
|
* Interface for Common Table Expression operations
|
|
194
224
|
*/
|
|
195
225
|
export interface CTECapable extends RelationalPlanNode {
|
|
226
|
+
/** Capability brand — see {@link PredicateCapable.isPredicateCapable}. */
|
|
227
|
+
readonly isCTECapable: true;
|
|
196
228
|
readonly cteName: string;
|
|
197
229
|
readonly columns: string[] | undefined;
|
|
198
230
|
readonly materializationHint: 'materialized' | 'not_materialized' | undefined;
|
|
@@ -203,6 +235,8 @@ export interface CTECapable extends RelationalPlanNode {
|
|
|
203
235
|
* Interface for column reference nodes
|
|
204
236
|
*/
|
|
205
237
|
export interface ColumnReferenceCapable extends ScalarPlanNode {
|
|
238
|
+
/** Capability brand — see {@link PredicateCapable.isPredicateCapable}. */
|
|
239
|
+
readonly isColumnReferenceCapable: true;
|
|
206
240
|
readonly attributeId: number;
|
|
207
241
|
readonly columnIndex: number;
|
|
208
242
|
readonly expression: AST.ColumnExpr;
|
|
@@ -211,6 +245,11 @@ export interface ColumnReferenceCapable extends ScalarPlanNode {
|
|
|
211
245
|
* Interface for window function call nodes
|
|
212
246
|
*/
|
|
213
247
|
export interface WindowFunctionCapable extends ScalarPlanNode {
|
|
248
|
+
/** Capability brand — see {@link PredicateCapable.isPredicateCapable}. Distinct from
|
|
249
|
+
* {@link AggregateFunctionCapable.isAggregateFunctionCapable}, so window and aggregate
|
|
250
|
+
* function-call nodes — which share `nodeType === ScalarFunctionCall`/`WindowFunctionCall`
|
|
251
|
+
* shapes — are told apart by brand alone, no nodeType/schema tiebreak needed. */
|
|
252
|
+
readonly isWindowFunctionCapable: true;
|
|
214
253
|
readonly functionName: string;
|
|
215
254
|
readonly isDistinct: boolean;
|
|
216
255
|
readonly alias?: string;
|
|
@@ -219,6 +258,11 @@ export interface WindowFunctionCapable extends ScalarPlanNode {
|
|
|
219
258
|
* Interface for aggregate function call nodes
|
|
220
259
|
*/
|
|
221
260
|
export interface AggregateFunctionCapable extends ScalarPlanNode {
|
|
261
|
+
/** Capability brand — see {@link PredicateCapable.isPredicateCapable}. Carried ONLY by
|
|
262
|
+
* `AggregateFunctionCallNode`, never by `ScalarFunctionCallNode` (both wear
|
|
263
|
+
* `nodeType === ScalarFunctionCall`), so the brand — not the function schema — is the
|
|
264
|
+
* aggregate/scalar discriminant. */
|
|
265
|
+
readonly isAggregateFunctionCapable: true;
|
|
222
266
|
readonly functionName: string;
|
|
223
267
|
readonly isDistinct: boolean;
|
|
224
268
|
readonly args: ReadonlyArray<ScalarPlanNode>;
|
|
@@ -227,6 +271,8 @@ export interface AggregateFunctionCapable extends ScalarPlanNode {
|
|
|
227
271
|
* Interface for internal recursive CTE reference nodes
|
|
228
272
|
*/
|
|
229
273
|
export interface RecursiveCTERefCapable extends RelationalPlanNode {
|
|
274
|
+
/** Capability brand — see {@link PredicateCapable.isPredicateCapable}. */
|
|
275
|
+
readonly isRecursiveCTERefCapable: true;
|
|
230
276
|
readonly cteName: string;
|
|
231
277
|
readonly workingTableDescriptor: TableDescriptor;
|
|
232
278
|
}
|
|
@@ -251,17 +297,6 @@ export declare class CapabilityDetectors {
|
|
|
251
297
|
static isAggregateFunction(node: PlanNode): node is AggregateFunctionCapable;
|
|
252
298
|
static isRecursiveCTERef(node: PlanNode): node is RecursiveCTERefCapable;
|
|
253
299
|
}
|
|
254
|
-
/**
|
|
255
|
-
* Extensible capability registry for custom characteristics
|
|
256
|
-
*/
|
|
257
|
-
export declare class CapabilityRegistry {
|
|
258
|
-
private static readonly detectors;
|
|
259
|
-
static register(capability: string, detector: (node: PlanNode) => boolean): void;
|
|
260
|
-
static hasCapability(node: PlanNode, capability: string): boolean;
|
|
261
|
-
static getCapable(nodes: readonly PlanNode[], capability: string): PlanNode[];
|
|
262
|
-
static getAllCapabilities(): string[];
|
|
263
|
-
static unregister(capability: string): boolean;
|
|
264
|
-
}
|
|
265
300
|
/**
|
|
266
301
|
* Caching analysis utilities
|
|
267
302
|
*/
|
|
@@ -271,12 +306,4 @@ export declare class CachingAnalysis {
|
|
|
271
306
|
private static isExpensiveRepeatedOperation;
|
|
272
307
|
static getCacheThreshold(node: PlanNode): number;
|
|
273
308
|
}
|
|
274
|
-
/**
|
|
275
|
-
* Predicate analysis utilities
|
|
276
|
-
*/
|
|
277
|
-
export declare class PredicateAnalysis {
|
|
278
|
-
static canPushDown(predicate: ScalarPlanNode, targetNode: PlanNode): boolean;
|
|
279
|
-
static canCombine(pred1: ScalarPlanNode, pred2: ScalarPlanNode): boolean;
|
|
280
|
-
private static predicateReferencesOnly;
|
|
281
|
-
}
|
|
282
309
|
//# sourceMappingURL=characteristics.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"characteristics.d.ts","sourceRoot":"","sources":["../../../../src/planner/framework/characteristics.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"characteristics.d.ts","sourceRoot":"","sources":["../../../../src/planner/framework/characteristics.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,kBAAkB,EAAE,cAAc,EAAE,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE1I,OAAO,KAAK,KAAK,GAAG,MAAM,qBAAqB,CAAC;AAChD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAMzD;;GAEG;AACH,qBAAa,uBAAuB;IAEnC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO;IAI9C;;;;;;;;;OASG;IACH,MAAM,CAAC,qBAAqB,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO;IAerD;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,MAAM,CAAC,iBAAiB,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO;IAIjD,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO;IAI1C,MAAM,CAAC,eAAe,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO;IAI/C,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO;IAI5C,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,IAAI,YAAY;IAIvD,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO;IAK5C,MAAM,CAAC,gBAAgB,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO;IAIhD,MAAM,CAAC,iBAAiB,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO;IAMjD,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,QAAQ,GAAG;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,OAAO,CAAA;KAAE,EAAE,GAAG,SAAS;IAKnF,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,QAAQ,GAAG,SAAS,eAAe,EAAE;IAIjE,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS;IAKjF,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM;IAI5C;;;;OAIG;IACH,MAAM,CAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO;IAWpD;;;;OAIG;IACH,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO;IAO7C,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,IAAI,kBAAkB;IAI/D,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,IAAI,kBAAkB;IAI/D,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO;IAIxC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO;IAKtC,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO;IAK3C,MAAM,CAAC,gBAAgB,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO;CAIhD;AAED;;GAEG;AACH,MAAM,WAAW,gBAAiB,SAAQ,QAAQ;IACjD,qGAAqG;IACrG,QAAQ,CAAC,kBAAkB,EAAE,IAAI,CAAC;IAClC,YAAY,IAAI,cAAc,GAAG,IAAI,CAAC;IACtC,aAAa,CAAC,YAAY,EAAE,cAAc,GAAG,IAAI,GAAG,QAAQ,CAAC;CAC7D;AAED;;GAEG;AACH,MAAM,WAAW,sBAAuB,SAAQ,QAAQ;IACvD,0EAA0E;IAC1E,QAAQ,CAAC,wBAAwB,EAAE,IAAI,CAAC;IACxC,aAAa,IAAI,SAAS,cAAc,EAAE,CAAC;CAC3C;AAED;;GAEG;AACH,MAAM,WAAW,mBAAoB,SAAQ,gBAAgB;IAC5D,0EAA0E;IAC1E,QAAQ,CAAC,4BAA4B,EAAE,IAAI,CAAC;IAC5C,oBAAoB,IAAI,OAAO,CAAC;IAChC,WAAW,CAAC,KAAK,EAAE,cAAc,GAAG,cAAc,CAAC;CACnD;AAED;;GAEG;AACH,MAAM,WAAW,kBAAmB,SAAQ,kBAAkB;IAC7D,0EAA0E;IAC1E,QAAQ,CAAC,oBAAoB,EAAE,IAAI,CAAC;IACpC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAClC,eAAe,IAAI,YAAY,GAAG,YAAY,GAAG,YAAY,GAAG,SAAS,CAAC;CAC1E;AAED;;GAEG;AACH,MAAM,WAAW,kBAAmB,SAAQ,kBAAkB;IAC7D,0EAA0E;IAC1E,QAAQ,CAAC,oBAAoB,EAAE,IAAI,CAAC;IACpC,eAAe,IAAI,SAAS,cAAc,EAAE,CAAC;IAC7C,uBAAuB,IAAI,SAAS;QAAE,IAAI,EAAE,cAAc,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACnG,gBAAgB,IAAI,OAAO,CAAC;IAC5B,kBAAkB,IAAI,OAAO,CAAC;IAC9B,SAAS,IAAI,kBAAkB,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,WAAY,SAAQ,QAAQ;IAC5C,0EAA0E;IAC1E,QAAQ,CAAC,aAAa,EAAE,IAAI,CAAC;IAC7B,WAAW,IAAI,SAAS;QAAE,UAAU,EAAE,cAAc,CAAC;QAAC,SAAS,EAAE,KAAK,GAAG,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,CAAA;KAAE,EAAE,CAAC;IAC9G,YAAY,CAAC,IAAI,EAAE,SAAS;QAAE,UAAU,EAAE,cAAc,CAAC;QAAC,SAAS,EAAE,KAAK,GAAG,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,CAAA;KAAE,EAAE,GAAG,QAAQ,CAAC;CAC7H;AAED;;GAEG;AACH,MAAM,WAAW,YAAa,SAAQ,QAAQ;IAC7C,0EAA0E;IAC1E,QAAQ,CAAC,cAAc,EAAE,IAAI,CAAC;IAC9B,kBAAkB,IAAI,cAAc,GAAG,SAAS,CAAC;IACjD,mBAAmB,IAAI,cAAc,GAAG,SAAS,CAAC;CAClD;AAED;;GAEG;AACH,MAAM,WAAW,qBAAsB,SAAQ,QAAQ;IACtD,0EAA0E;IAC1E,QAAQ,CAAC,8BAA8B,EAAE,IAAI,CAAC;IAC9C,gFAAgF;IAChF,sBAAsB,IAAI,MAAM,CAAC;IACjC,4DAA4D;IAC5D,oBAAoB,IAAI,aAAa,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACpE,8DAA8D;IAC9D,0BAA0B,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;CACpE;AAED;;GAEG;AACH,MAAM,WAAW,iBAAkB,SAAQ,kBAAkB;IAC5D,0EAA0E;IAC1E,QAAQ,CAAC,mBAAmB,EAAE,IAAI,CAAC;IACnC,cAAc,IAAI,SAAS;QAAE,IAAI,EAAE,cAAc,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC1F,eAAe,CAAC,WAAW,EAAE,SAAS;QAAE,IAAI,EAAE,cAAc,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,EAAE,GAAG,QAAQ,CAAC;CAChH;AAED;;GAEG;AACH,MAAM,WAAW,WAAY,SAAQ,kBAAkB;IACtD,0EAA0E;IAC1E,QAAQ,CAAC,aAAa,EAAE,IAAI,CAAC;IAC7B,WAAW,IAAI,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;IAC/E,gBAAgB,IAAI,cAAc,GAAG,SAAS,CAAC;IAC/C,aAAa,IAAI,kBAAkB,CAAC;IACpC,cAAc,IAAI,kBAAkB,CAAC;IACrC,eAAe,IAAI,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;CACjD;AAED;;GAEG;AACH,MAAM,WAAW,YAAa,SAAQ,QAAQ;IAC7C,0EAA0E;IAC1E,QAAQ,CAAC,cAAc,EAAE,IAAI,CAAC;IAC9B,gBAAgB,IAAI,MAAM,GAAG,IAAI,CAAC;IAClC,QAAQ,IAAI,OAAO,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,UAAW,SAAQ,kBAAkB;IACrD,0EAA0E;IAC1E,QAAQ,CAAC,YAAY,EAAE,IAAI,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IACvC,QAAQ,CAAC,mBAAmB,EAAE,cAAc,GAAG,kBAAkB,GAAG,SAAS,CAAC;IAC9E,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,YAAY,IAAI,kBAAkB,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,sBAAuB,SAAQ,cAAc;IAC7D,0EAA0E;IAC1E,QAAQ,CAAC,wBAAwB,EAAE,IAAI,CAAC;IACxC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,GAAG,CAAC,UAAU,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,WAAW,qBAAsB,SAAQ,cAAc;IAC5D;;;sFAGkF;IAClF,QAAQ,CAAC,uBAAuB,EAAE,IAAI,CAAC;IACvC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,wBAAyB,SAAQ,cAAc;IAC/D;;;yCAGqC;IACrC,QAAQ,CAAC,0BAA0B,EAAE,IAAI,CAAC;IAC1C,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC,cAAc,CAAC,CAAC;CAC7C;AAED;;GAEG;AACH,MAAM,WAAW,sBAAuB,SAAQ,kBAAkB;IACjE,0EAA0E;IAC1E,QAAQ,CAAC,wBAAwB,EAAE,IAAI,CAAC;IACxC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,sBAAsB,EAAE,eAAe,CAAC;CACjD;AAED;;GAEG;AACH,qBAAa,mBAAmB;IAU/B,MAAM,CAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,IAAI,gBAAgB;IAIrE,MAAM,CAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,IAAI,mBAAmB;IAIxE,MAAM,CAAC,iBAAiB,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,IAAI,sBAAsB;IAIxE,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,IAAI,kBAAkB;IAIhE,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,IAAI,kBAAkB;IAIhE,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,IAAI,WAAW;IAItD,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,IAAI,YAAY;IAIpD,MAAM,CAAC,uBAAuB,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,IAAI,qBAAqB;IAI7E,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,IAAI,iBAAiB;IAI5D,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,IAAI,WAAW;IAIlD,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,IAAI,YAAY;IAIrD,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,IAAI,UAAU;IAIhD,MAAM,CAAC,iBAAiB,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,IAAI,sBAAsB;IAKxE,MAAM,CAAC,gBAAgB,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,IAAI,qBAAqB;IAQtE,MAAM,CAAC,mBAAmB,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,IAAI,wBAAwB;IAQ5E,MAAM,CAAC,iBAAiB,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,IAAI,sBAAsB;CAIxE;AAED;;GAEG;AACH,qBAAa,eAAe;IAC3B,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO;IAqB3C,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO;IAkB3C,OAAO,CAAC,MAAM,CAAC,4BAA4B;IAK3C,MAAM,CAAC,iBAAiB,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM;CAIhD"}
|
|
@@ -1,10 +1,17 @@
|
|
|
1
|
-
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
1
|
/**
|
|
3
2
|
* Characteristics-based plan node analysis
|
|
4
3
|
*
|
|
5
4
|
* This module provides utilities for analyzing plan nodes based on their capabilities
|
|
6
5
|
* and characteristics rather than their specific types, enabling robust and extensible
|
|
7
6
|
* optimization rules.
|
|
7
|
+
*
|
|
8
|
+
* Cross-class capabilities (the `*Capable` interfaces below) are detected via a
|
|
9
|
+
* compiler-enforced brand: each interface declares a unique `readonly is<X>Capable:
|
|
10
|
+
* true` marker, every implementer sets it, and the `CapabilityDetectors` guards test
|
|
11
|
+
* exactly that marker. Because `implements XCapable` fails to compile unless the class
|
|
12
|
+
* also sets the brand, "implements the capability" and "is detected as having it" are
|
|
13
|
+
* the same fact — a new implementer cannot silently be missed by a guard. Concrete
|
|
14
|
+
* class identity still uses `instanceof`; dispatch/serialization still uses `nodeType`.
|
|
8
15
|
*/
|
|
9
16
|
import { isRelationalNode } from '../nodes/plan-node.js';
|
|
10
17
|
import { hasAnyKey, hasSingletonFd } from '../util/fd-utils.js';
|
|
@@ -29,11 +36,17 @@ export class PlanNodeCharacteristics {
|
|
|
29
36
|
* forward the property through its own `computePhysical` override.
|
|
30
37
|
*/
|
|
31
38
|
static subtreeHasSideEffects(node) {
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
39
|
+
// Iterative worklist (not recursion) so a deep plan cannot overflow the
|
|
40
|
+
// native call stack — matching the pass framework's iterative traversal.
|
|
41
|
+
// Early-exits on the first side-effecting node rather than draining fully.
|
|
42
|
+
const stack = [node];
|
|
43
|
+
while (stack.length > 0) {
|
|
44
|
+
const current = stack.pop();
|
|
45
|
+
if (this.hasSideEffects(current))
|
|
36
46
|
return true;
|
|
47
|
+
for (const child of current.getChildren()) {
|
|
48
|
+
stack.push(child);
|
|
49
|
+
}
|
|
37
50
|
}
|
|
38
51
|
return false;
|
|
39
52
|
}
|
|
@@ -154,138 +167,75 @@ export class PlanNodeCharacteristics {
|
|
|
154
167
|
* Type guards for capability detection
|
|
155
168
|
*/
|
|
156
169
|
export class CapabilityDetectors {
|
|
170
|
+
// Every guard is a single brand comparison. The cast is typed (never `any`) and
|
|
171
|
+
// narrowed to just the brand field via `Partial<Pick<X, 'is…Capable'>>`: picking
|
|
172
|
+
// only the brand avoids a spurious "insufficient overlap" error that a full
|
|
173
|
+
// `Partial<X>` triggers on the relational/scalar interfaces (their `getType()`
|
|
174
|
+
// return type conflicts with the base `PlanNode.getType()`), while keeping the
|
|
175
|
+
// guard tied to the interface — rename a brand and this stops compiling. A unique
|
|
176
|
+
// brand name cannot misfire on an incidental property. Guards that may receive a
|
|
177
|
+
// possibly-null node keep the leading null-guard so the property read cannot throw.
|
|
157
178
|
static canPushDownPredicate(node) {
|
|
158
|
-
return
|
|
159
|
-
typeof node.getPredicate === 'function' &&
|
|
160
|
-
'withPredicate' in node &&
|
|
161
|
-
typeof node.withPredicate === 'function';
|
|
179
|
+
return node.isPredicateCapable === true;
|
|
162
180
|
}
|
|
163
181
|
static canCombinePredicates(node) {
|
|
164
|
-
return
|
|
165
|
-
'canCombinePredicates' in node &&
|
|
166
|
-
typeof node.canCombinePredicates === 'function';
|
|
182
|
+
return node.isPredicateCombinableCapable === true;
|
|
167
183
|
}
|
|
168
184
|
static isPredicateSource(node) {
|
|
169
|
-
return
|
|
185
|
+
return node.isPredicateSourceCapable === true;
|
|
170
186
|
}
|
|
171
187
|
static isTableAccess(node) {
|
|
172
|
-
return
|
|
173
|
-
'tableSchema' in node &&
|
|
174
|
-
'getAccessMethod' in node &&
|
|
175
|
-
typeof node.getAccessMethod === 'function';
|
|
188
|
+
return node.isTableAccessCapable === true;
|
|
176
189
|
}
|
|
177
190
|
static isAggregating(node) {
|
|
178
|
-
return
|
|
179
|
-
'getGroupingKeys' in node &&
|
|
180
|
-
typeof node.getGroupingKeys === 'function' &&
|
|
181
|
-
'getAggregateExpressions' in node &&
|
|
182
|
-
typeof node.getAggregateExpressions === 'function';
|
|
191
|
+
return node.isAggregationCapable === true;
|
|
183
192
|
}
|
|
184
193
|
static isSortable(node) {
|
|
185
|
-
return
|
|
186
|
-
typeof node.getSortKeys === 'function' &&
|
|
187
|
-
'withSortKeys' in node &&
|
|
188
|
-
typeof node.withSortKeys === 'function';
|
|
194
|
+
return node.isSortCapable === true;
|
|
189
195
|
}
|
|
190
196
|
static isLimit(node) {
|
|
191
|
-
return
|
|
192
|
-
typeof node.getLimitExpression === 'function' &&
|
|
193
|
-
'getOffsetExpression' in node &&
|
|
194
|
-
typeof node.getOffsetExpression === 'function';
|
|
197
|
+
return node.isLimitCapable === true;
|
|
195
198
|
}
|
|
196
199
|
static isColumnBindingProvider(node) {
|
|
197
|
-
return
|
|
198
|
-
(typeof node.getBindingRelationName === 'string' || typeof node.getBindingRelationName === 'function');
|
|
200
|
+
return node.isColumnBindingProviderCapable === true;
|
|
199
201
|
}
|
|
200
202
|
static canProject(node) {
|
|
201
|
-
return
|
|
202
|
-
'getProjections' in node &&
|
|
203
|
-
typeof node.getProjections === 'function';
|
|
203
|
+
return node.isProjectionCapable === true;
|
|
204
204
|
}
|
|
205
205
|
static isJoin(node) {
|
|
206
|
-
return
|
|
207
|
-
'getJoinType' in node &&
|
|
208
|
-
typeof node.getJoinType === 'function' &&
|
|
209
|
-
'getLeftSource' in node &&
|
|
210
|
-
'getRightSource' in node;
|
|
206
|
+
return node.isJoinCapable === true;
|
|
211
207
|
}
|
|
212
208
|
static isCached(node) {
|
|
213
|
-
return
|
|
214
|
-
typeof node.getCacheStrategy === 'function';
|
|
209
|
+
return node.isCacheCapable === true;
|
|
215
210
|
}
|
|
216
211
|
static isCTE(node) {
|
|
217
|
-
return
|
|
218
|
-
'cteName' in node &&
|
|
219
|
-
typeof node.cteName === 'string' &&
|
|
220
|
-
'getCTESource' in node &&
|
|
221
|
-
typeof node.getCTESource === 'function';
|
|
212
|
+
return node.isCTECapable === true;
|
|
222
213
|
}
|
|
223
214
|
static isColumnReference(node) {
|
|
224
215
|
if (!node)
|
|
225
216
|
return false;
|
|
226
|
-
return
|
|
227
|
-
'attributeId' in node &&
|
|
228
|
-
typeof node.attributeId === 'number' &&
|
|
229
|
-
'columnIndex' in node &&
|
|
230
|
-
typeof node.columnIndex === 'number' &&
|
|
231
|
-
'expression' in node;
|
|
217
|
+
return node.isColumnReferenceCapable === true;
|
|
232
218
|
}
|
|
233
219
|
static isWindowFunction(node) {
|
|
234
220
|
if (!node)
|
|
235
221
|
return false;
|
|
236
|
-
//
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
typeof node.functionName === 'string' &&
|
|
241
|
-
'isDistinct' in node &&
|
|
242
|
-
typeof node.isDistinct === 'boolean';
|
|
222
|
+
// The window brand is distinct from the aggregate-function brand, so this no
|
|
223
|
+
// longer needs a `nodeType === 'WindowFunctionCall'` tiebreak against
|
|
224
|
+
// AggregateFunctionCallNode — the brand alone tells them apart.
|
|
225
|
+
return node.isWindowFunctionCapable === true;
|
|
243
226
|
}
|
|
244
227
|
static isAggregateFunction(node) {
|
|
245
228
|
if (!node)
|
|
246
229
|
return false;
|
|
247
|
-
//
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
'isDistinct' in node &&
|
|
252
|
-
typeof node.isDistinct === 'boolean' &&
|
|
253
|
-
'args' in node &&
|
|
254
|
-
Array.isArray(node.args) &&
|
|
255
|
-
'functionSchema' in node;
|
|
230
|
+
// Only AggregateFunctionCallNode carries this brand; ScalarFunctionCallNode (same
|
|
231
|
+
// nodeType) does not, so the old build-time `isAggregateFunctionSchema` tiebreak —
|
|
232
|
+
// and its null-throw hazard on a missing functionSchema — is gone.
|
|
233
|
+
return node.isAggregateFunctionCapable === true;
|
|
256
234
|
}
|
|
257
235
|
static isRecursiveCTERef(node) {
|
|
258
236
|
if (!node)
|
|
259
237
|
return false;
|
|
260
|
-
return
|
|
261
|
-
'cteName' in node &&
|
|
262
|
-
typeof node.cteName === 'string' &&
|
|
263
|
-
'workingTableDescriptor' in node;
|
|
264
|
-
}
|
|
265
|
-
}
|
|
266
|
-
/**
|
|
267
|
-
* Extensible capability registry for custom characteristics
|
|
268
|
-
*/
|
|
269
|
-
export class CapabilityRegistry {
|
|
270
|
-
static detectors = new Map();
|
|
271
|
-
static register(capability, detector) {
|
|
272
|
-
this.detectors.set(capability, detector);
|
|
273
|
-
}
|
|
274
|
-
static hasCapability(node, capability) {
|
|
275
|
-
const detector = this.detectors.get(capability);
|
|
276
|
-
return detector ? detector(node) : false;
|
|
277
|
-
}
|
|
278
|
-
static getCapable(nodes, capability) {
|
|
279
|
-
const detector = this.detectors.get(capability);
|
|
280
|
-
if (!detector)
|
|
281
|
-
return [];
|
|
282
|
-
return nodes.filter(detector);
|
|
283
|
-
}
|
|
284
|
-
static getAllCapabilities() {
|
|
285
|
-
return Array.from(this.detectors.keys());
|
|
286
|
-
}
|
|
287
|
-
static unregister(capability) {
|
|
288
|
-
return this.detectors.delete(capability);
|
|
238
|
+
return node.isRecursiveCTERefCapable === true;
|
|
289
239
|
}
|
|
290
240
|
}
|
|
291
241
|
/**
|
|
@@ -297,7 +247,8 @@ export class CachingAnalysis {
|
|
|
297
247
|
if (!PlanNodeCharacteristics.isRelational(node)) {
|
|
298
248
|
return false;
|
|
299
249
|
}
|
|
300
|
-
// Already cached nodes don't need re-caching
|
|
250
|
+
// Already cached nodes don't need re-caching. `isCached` narrows to
|
|
251
|
+
// `CacheCapable`, so its `isCached()` method is callable without a cast.
|
|
301
252
|
if (CapabilityDetectors.isCached(node) && node.isCached()) {
|
|
302
253
|
return false;
|
|
303
254
|
}
|
|
@@ -331,39 +282,4 @@ export class CachingAnalysis {
|
|
|
331
282
|
return Math.min(Math.max(estimatedRows * 0.1, 1000), 100000);
|
|
332
283
|
}
|
|
333
284
|
}
|
|
334
|
-
/**
|
|
335
|
-
* Predicate analysis utilities
|
|
336
|
-
*/
|
|
337
|
-
export class PredicateAnalysis {
|
|
338
|
-
static canPushDown(predicate, targetNode) {
|
|
339
|
-
if (!CapabilityDetectors.canPushDownPredicate(targetNode)) {
|
|
340
|
-
return false;
|
|
341
|
-
}
|
|
342
|
-
// Check if predicate only references columns from target
|
|
343
|
-
return this.predicateReferencesOnly(predicate, targetNode);
|
|
344
|
-
}
|
|
345
|
-
static canCombine(pred1, pred2) {
|
|
346
|
-
// Basic heuristic: both must be deterministic
|
|
347
|
-
return PlanNodeCharacteristics.isDeterministic(pred1) &&
|
|
348
|
-
PlanNodeCharacteristics.isDeterministic(pred2);
|
|
349
|
-
}
|
|
350
|
-
static predicateReferencesOnly(_predicate, _targetNode) {
|
|
351
|
-
// TODO: Implement column reference analysis
|
|
352
|
-
// For now, conservatively return true
|
|
353
|
-
return true;
|
|
354
|
-
}
|
|
355
|
-
}
|
|
356
|
-
// Register built-in capabilities
|
|
357
|
-
CapabilityRegistry.register('predicate-pushdown', CapabilityDetectors.canPushDownPredicate);
|
|
358
|
-
CapabilityRegistry.register('table-access', CapabilityDetectors.isTableAccess);
|
|
359
|
-
CapabilityRegistry.register('aggregation', CapabilityDetectors.isAggregating);
|
|
360
|
-
CapabilityRegistry.register('sort', CapabilityDetectors.isSortable);
|
|
361
|
-
CapabilityRegistry.register('projection', CapabilityDetectors.canProject);
|
|
362
|
-
CapabilityRegistry.register('join', CapabilityDetectors.isJoin);
|
|
363
|
-
CapabilityRegistry.register('cache', CapabilityDetectors.isCached);
|
|
364
|
-
CapabilityRegistry.register('cte', CapabilityDetectors.isCTE);
|
|
365
|
-
CapabilityRegistry.register('column-reference', CapabilityDetectors.isColumnReference);
|
|
366
|
-
CapabilityRegistry.register('window-function', CapabilityDetectors.isWindowFunction);
|
|
367
|
-
CapabilityRegistry.register('aggregate-function', CapabilityDetectors.isAggregateFunction);
|
|
368
|
-
CapabilityRegistry.register('recursive-cte-ref', CapabilityDetectors.isRecursiveCTERef);
|
|
369
285
|
//# sourceMappingURL=characteristics.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"characteristics.js","sourceRoot":"","sources":["../../../../src/planner/framework/characteristics.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"characteristics.js","sourceRoot":"","sources":["../../../../src/planner/framework/characteristics.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAGzD,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAEhE,0CAA0C;AAC1C,MAAM,oBAAoB,GAAG,IAAI,CAAC;AAElC;;GAEG;AACH,MAAM,OAAO,uBAAuB;IACnC,8BAA8B;IAC9B,MAAM,CAAC,cAAc,CAAC,IAAc;QACnC,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,KAAK,KAAK,CAAC;IACzC,CAAC;IAED;;;;;;;;;OASG;IACH,MAAM,CAAC,qBAAqB,CAAC,IAAc;QAC1C,wEAAwE;QACxE,yEAAyE;QACzE,2EAA2E;QAC3E,MAAM,KAAK,GAAe,CAAC,IAAI,CAAC,CAAC;QACjC,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzB,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,EAAG,CAAC;YAC7B,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;gBAAE,OAAO,IAAI,CAAC;YAC9C,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;gBAC3C,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACnB,CAAC;QACF,CAAC;QACD,OAAO,KAAK,CAAC;IACd,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,MAAM,CAAC,iBAAiB,CAAC,IAAc;QACtC,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;IAED,MAAM,CAAC,UAAU,CAAC,IAAc;QAC/B,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,KAAK,KAAK,CAAC;IACzC,CAAC;IAED,MAAM,CAAC,eAAe,CAAC,IAAc;QACpC,OAAO,IAAI,CAAC,QAAQ,CAAC,aAAa,KAAK,KAAK,CAAC;IAC9C,CAAC;IAED,MAAM,CAAC,YAAY,CAAC,IAAc;QACjC,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,KAAK,KAAK,CAAC;IAC3C,CAAC;IAED,MAAM,CAAC,UAAU,CAAC,IAAc;QAC/B,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,KAAK,IAAI,IAAI,UAAU,IAAI,IAAI,CAAC;IAC9D,CAAC;IAED,MAAM,CAAC,YAAY,CAAC,IAAc;QACjC,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAC5D,CAAC;IAED,wBAAwB;IACxB,MAAM,CAAC,gBAAgB,CAAC,IAAc;QACrC,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,KAAK,SAAS,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;IAClF,CAAC;IAED,MAAM,CAAC,iBAAiB,CAAC,IAAc;QACtC,4EAA4E;QAC5E,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACpC,OAAO,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IACpE,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,IAAc;QAChC,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;IAC/B,CAAC;IAED,2BAA2B;IAC3B,MAAM,CAAC,cAAc,CAAC,IAAc;QACnC,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,IAAI,EAAE,CAAC;IACxC,CAAC;IAED,MAAM,CAAC,aAAa,CAAC,IAAc,EAAE,MAAc;QAClD,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;IAClE,CAAC;IAED,uBAAuB;IACvB,MAAM,CAAC,aAAa,CAAC,IAAc;QAClC,OAAO,IAAI,CAAC,QAAQ,CAAC,aAAa,IAAI,oBAAoB,CAAC;IAC5D,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,oBAAoB,CAAC,IAAc;QACzC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC;YAAE,OAAO,KAAK,CAAC;QAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC,MAAM,CAAC;QAC7C,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;YACpB,sEAAsE;YACtE,8CAA8C;YAC9C,OAAO,IAAI,CAAC,QAAQ,CAAC,aAAa,KAAK,CAAC,CAAC;QAC1C,CAAC;QACD,OAAO,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;IAC1E,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,aAAa,CAAC,IAAc;QAClC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC;YAAE,OAAO,KAAK,CAAC;QAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC,MAAM,CAAC;QAC7C,OAAO,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;IACrE,CAAC;IAED,0BAA0B;IAC1B,MAAM,CAAC,YAAY,CAAC,IAAc;QACjC,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED,MAAM,CAAC,YAAY,CAAC,IAAc;QACjC,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,IAAc;QAC7B,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,SAAS,KAAK,QAAQ,CAAC;IAC9C,CAAC;IAED,MAAM,CAAC,MAAM,CAAC,IAAc;QAC3B,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,SAAS,KAAK,MAAM,CAAC;IAC5C,CAAC;IAED,8BAA8B;IAC9B,MAAM,CAAC,WAAW,CAAC,IAAc;QAChC,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QAC/C,OAAO,aAAa,GAAG,KAAK,CAAC,CAAC,oBAAoB;IACnD,CAAC;IAED,MAAM,CAAC,gBAAgB,CAAC,IAAc;QACrC,wEAAwE;QACxE,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;CACD;AAuLD;;GAEG;AACH,MAAM,OAAO,mBAAmB;IAC/B,gFAAgF;IAChF,iFAAiF;IACjF,4EAA4E;IAC5E,+EAA+E;IAC/E,+EAA+E;IAC/E,kFAAkF;IAClF,iFAAiF;IACjF,oFAAoF;IAEpF,MAAM,CAAC,oBAAoB,CAAC,IAAc;QACzC,OAAQ,IAA8D,CAAC,kBAAkB,KAAK,IAAI,CAAC;IACpG,CAAC;IAED,MAAM,CAAC,oBAAoB,CAAC,IAAc;QACzC,OAAQ,IAA2E,CAAC,4BAA4B,KAAK,IAAI,CAAC;IAC3H,CAAC;IAED,MAAM,CAAC,iBAAiB,CAAC,IAAc;QACtC,OAAQ,IAA0E,CAAC,wBAAwB,KAAK,IAAI,CAAC;IACtH,CAAC;IAED,MAAM,CAAC,aAAa,CAAC,IAAc;QAClC,OAAQ,IAAkE,CAAC,oBAAoB,KAAK,IAAI,CAAC;IAC1G,CAAC;IAED,MAAM,CAAC,aAAa,CAAC,IAAc;QAClC,OAAQ,IAAkE,CAAC,oBAAoB,KAAK,IAAI,CAAC;IAC1G,CAAC;IAED,MAAM,CAAC,UAAU,CAAC,IAAc;QAC/B,OAAQ,IAAoD,CAAC,aAAa,KAAK,IAAI,CAAC;IACrF,CAAC;IAED,MAAM,CAAC,OAAO,CAAC,IAAc;QAC5B,OAAQ,IAAsD,CAAC,cAAc,KAAK,IAAI,CAAC;IACxF,CAAC;IAED,MAAM,CAAC,uBAAuB,CAAC,IAAc;QAC5C,OAAQ,IAA+E,CAAC,8BAA8B,KAAK,IAAI,CAAC;IACjI,CAAC;IAED,MAAM,CAAC,UAAU,CAAC,IAAc;QAC/B,OAAQ,IAAgE,CAAC,mBAAmB,KAAK,IAAI,CAAC;IACvG,CAAC;IAED,MAAM,CAAC,MAAM,CAAC,IAAc;QAC3B,OAAQ,IAAoD,CAAC,aAAa,KAAK,IAAI,CAAC;IACrF,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,IAAc;QAC7B,OAAQ,IAAsD,CAAC,cAAc,KAAK,IAAI,CAAC;IACxF,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,IAAc;QAC1B,OAAQ,IAAkD,CAAC,YAAY,KAAK,IAAI,CAAC;IAClF,CAAC;IAED,MAAM,CAAC,iBAAiB,CAAC,IAAc;QACtC,IAAI,CAAC,IAAI;YAAE,OAAO,KAAK,CAAC;QACxB,OAAQ,IAA0E,CAAC,wBAAwB,KAAK,IAAI,CAAC;IACtH,CAAC;IAED,MAAM,CAAC,gBAAgB,CAAC,IAAc;QACrC,IAAI,CAAC,IAAI;YAAE,OAAO,KAAK,CAAC;QACxB,6EAA6E;QAC7E,sEAAsE;QACtE,gEAAgE;QAChE,OAAQ,IAAwE,CAAC,uBAAuB,KAAK,IAAI,CAAC;IACnH,CAAC;IAED,MAAM,CAAC,mBAAmB,CAAC,IAAc;QACxC,IAAI,CAAC,IAAI;YAAE,OAAO,KAAK,CAAC;QACxB,kFAAkF;QAClF,mFAAmF;QACnF,mEAAmE;QACnE,OAAQ,IAA8E,CAAC,0BAA0B,KAAK,IAAI,CAAC;IAC5H,CAAC;IAED,MAAM,CAAC,iBAAiB,CAAC,IAAc;QACtC,IAAI,CAAC,IAAI;YAAE,OAAO,KAAK,CAAC;QACxB,OAAQ,IAA0E,CAAC,wBAAwB,KAAK,IAAI,CAAC;IACtH,CAAC;CACD;AAED;;GAEG;AACH,MAAM,OAAO,eAAe;IAC3B,MAAM,CAAC,WAAW,CAAC,IAAc;QAChC,sCAAsC;QACtC,IAAI,CAAC,uBAAuB,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;YACjD,OAAO,KAAK,CAAC;QACd,CAAC;QAED,oEAAoE;QACpE,yEAAyE;QACzE,IAAI,mBAAmB,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;YAC3D,OAAO,KAAK,CAAC;QACd,CAAC;QAED,6CAA6C;QAC7C,IAAI,uBAAuB,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;YAClD,0DAA0D;YAC1D,OAAO,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,CAAC;QAChD,CAAC;QAED,OAAO,IAAI,CAAC;IACb,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,IAAc;QAChC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7B,OAAO,KAAK,CAAC;QACd,CAAC;QAED,6BAA6B;QAC7B,IAAI,uBAAuB,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/C,OAAO,IAAI,CAAC;QACb,CAAC;QAED,mCAAmC;QACnC,IAAI,uBAAuB,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;YACpD,OAAO,IAAI,CAAC;QACb,CAAC;QAED,OAAO,KAAK,CAAC;IACd,CAAC;IAEO,MAAM,CAAC,4BAA4B,CAAC,IAAc;QACzD,OAAO,uBAAuB,CAAC,WAAW,CAAC,IAAI,CAAC;YAC/C,uBAAuB,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACjD,CAAC;IAED,MAAM,CAAC,iBAAiB,CAAC,IAAc;QACtC,MAAM,aAAa,GAAG,uBAAuB,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QAClE,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,GAAG,GAAG,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;IAC9D,CAAC;CACD"}
|
|
@@ -18,10 +18,15 @@ export interface OptContext {
|
|
|
18
18
|
readonly stats: StatsProvider;
|
|
19
19
|
/** Optimizer tuning parameters */
|
|
20
20
|
readonly tuning: OptimizerTuning;
|
|
21
|
-
/**
|
|
21
|
+
/**
|
|
22
|
+
* Current optimization phase. Always 'rewrite' today — `createOptContext`'s
|
|
23
|
+
* `phase` parameter is never passed a different value by any call site, and
|
|
24
|
+
* no pass/rule currently branches on it. Kept as a documented part of the
|
|
25
|
+
* phase-management contract (see registry.ts `RulePhase`) rather than
|
|
26
|
+
* removed outright; wire it through `PassManager` if a phase-gated pass
|
|
27
|
+
* needs it.
|
|
28
|
+
*/
|
|
22
29
|
readonly phase: 'rewrite' | 'impl';
|
|
23
|
-
/** Additional context data that rules can use */
|
|
24
|
-
readonly context: Map<string, unknown>;
|
|
25
30
|
/** Diagnostics bag that rules can populate (emitted after optimization) */
|
|
26
31
|
readonly diagnostics: OptimizerDiagnostics;
|
|
27
32
|
/** Database instance */
|
|
@@ -48,54 +53,13 @@ export declare class OptimizationContext implements OptContext {
|
|
|
48
53
|
readonly tuning: OptimizerTuning;
|
|
49
54
|
readonly phase: 'rewrite' | 'impl';
|
|
50
55
|
readonly db: Database;
|
|
51
|
-
readonly context: Map<string, unknown>;
|
|
52
56
|
readonly visitedRules: Map<string, Set<string>>;
|
|
53
57
|
readonly optimizedNodes: Map<string, PlanNode>;
|
|
54
58
|
readonly diagnostics: OptimizerDiagnostics;
|
|
55
59
|
constructor(optimizer: Optimizer, stats: StatsProvider, tuning: OptimizerTuning, phase: "rewrite" | "impl" | undefined, db: Database);
|
|
56
|
-
/**
|
|
57
|
-
* Create a new context for a different phase
|
|
58
|
-
*/
|
|
59
|
-
withPhase(phase: 'rewrite' | 'impl'): OptimizationContext;
|
|
60
|
-
/**
|
|
61
|
-
* Create a new context with additional context data
|
|
62
|
-
*/
|
|
63
|
-
withContext(key: string, value: unknown): OptimizationContext;
|
|
64
|
-
/**
|
|
65
|
-
* Copy visited tracking state to another context
|
|
66
|
-
*/
|
|
67
|
-
private copyTrackingState;
|
|
68
|
-
/**
|
|
69
|
-
* Get context value
|
|
70
|
-
*/
|
|
71
|
-
getContext<T>(key: string): T | undefined;
|
|
72
|
-
/**
|
|
73
|
-
* Check if context has a key
|
|
74
|
-
*/
|
|
75
|
-
hasContext(key: string): boolean;
|
|
76
|
-
/**
|
|
77
|
-
* Set context value (mutates current context)
|
|
78
|
-
*/
|
|
79
|
-
setContext(key: string, value: unknown): void;
|
|
80
|
-
/**
|
|
81
|
-
* Remove context value (mutates current context)
|
|
82
|
-
*/
|
|
83
|
-
deleteContext(key: string): boolean;
|
|
84
|
-
/**
|
|
85
|
-
* Clear all context data (mutates current context)
|
|
86
|
-
*/
|
|
87
|
-
clearContext(): void;
|
|
88
|
-
/**
|
|
89
|
-
* Get a snapshot of all context data
|
|
90
|
-
*/
|
|
91
|
-
getContextSnapshot(): Record<string, unknown>;
|
|
92
60
|
}
|
|
93
61
|
/**
|
|
94
62
|
* Factory function to create optimization context
|
|
95
63
|
*/
|
|
96
64
|
export declare function createOptContext(optimizer: Optimizer, stats: StatsProvider, tuning: OptimizerTuning, db: Database, phase?: 'rewrite' | 'impl'): OptContext;
|
|
97
|
-
/**
|
|
98
|
-
* Type guard to check if an object is an OptContext
|
|
99
|
-
*/
|
|
100
|
-
export declare function isOptContext(obj: any): obj is OptContext;
|
|
101
65
|
//# sourceMappingURL=context.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../../src/planner/framework/context.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE9D,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAItD;;;GAGG;AACH,MAAM,WAAW,UAAU;IAC1B,6BAA6B;IAC7B,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAE9B,oEAAoE;IACpE,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC;IAE9B,kCAAkC;IAClC,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;IAEjC
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../../src/planner/framework/context.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE9D,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAItD;;;GAGG;AACH,MAAM,WAAW,UAAU;IAC1B,6BAA6B;IAC7B,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAE9B,oEAAoE;IACpE,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC;IAE9B,kCAAkC;IAClC,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;IAEjC;;;;;;;OAOG;IACH,QAAQ,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,CAAC;IAEnC,2EAA2E;IAC3E,QAAQ,CAAC,WAAW,EAAE,oBAAoB,CAAC;IAE3C,wBAAwB;IACxB,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC;IAEtB,+DAA+D;IAC/D,QAAQ,CAAC,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;IAEhD,uFAAuF;IACvF,QAAQ,CAAC,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;CAC/C;AAED,sCAAsC;AACtC,MAAM,WAAW,oBAAoB;IAEpC,SAAS,CAAC,EAAE;QACX,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;IAGF,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACnB;AAED;;GAEG;AACH,qBAAa,mBAAoB,YAAW,UAAU;aAMpC,SAAS,EAAE,SAAS;aACpB,KAAK,EAAE,aAAa;aACpB,MAAM,EAAE,eAAe;aACvB,KAAK,EAAE,SAAS,GAAG,MAAM;aACzB,EAAE,EAAE,QAAQ;IAT7B,QAAQ,CAAC,YAAY,2BAAkC;IACvD,QAAQ,CAAC,cAAc,wBAA+B;IACtD,QAAQ,CAAC,WAAW,EAAS,oBAAoB,CAAC;gBAGjC,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,aAAa,EACpB,MAAM,EAAE,eAAe,EACvB,KAAK,EAAE,SAAS,GAAG,MAAM,YAAY,EACrC,EAAE,EAAE,QAAQ;CAI7B;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC/B,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,aAAa,EACpB,MAAM,EAAE,eAAe,EACvB,EAAE,EAAE,QAAQ,EACZ,KAAK,GAAE,SAAS,GAAG,MAAkB,GACnC,UAAU,CAEZ"}
|