@quereus/quereus 4.3.0 → 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.d.ts.map +1 -1
- package/dist/src/planner/building/delete.js +13 -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-aggregates.d.ts.map +1 -1
- package/dist/src/planner/building/select-aggregates.js +72 -4
- package/dist/src/planner/building/select-aggregates.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.d.ts.map +1 -1
- package/dist/src/planner/building/update.js +16 -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 +90 -26
- 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/scopes/registered.d.ts +21 -0
- package/dist/src/planner/scopes/registered.d.ts.map +1 -1
- package/dist/src/planner/scopes/registered.js +31 -1
- package/dist/src/planner/scopes/registered.js.map +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 +147 -34
- 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 +21 -4
- package/dist/src/vtab/memory/module.d.ts.map +1 -1
- package/dist/src/vtab/memory/module.js +45 -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 +64 -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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rule-sargable-range-rewrite.js","sourceRoot":"","sources":["../../../../../src/planner/rules/predicate/rule-sargable-range-rewrite.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"rule-sargable-range-rewrite.js","sourceRoot":"","sources":["../../../../../src/planner/rules/predicate/rule-sargable-range-rewrite.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rule-grow-retrieve.d.ts","sourceRoot":"","sources":["../../../../../src/planner/rules/retrieve/rule-grow-retrieve.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAGH,OAAO,EAAoB,KAAK,QAAQ,EAAgD,MAAM,0BAA0B,CAAC;AACzH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"rule-grow-retrieve.d.ts","sourceRoot":"","sources":["../../../../../src/planner/rules/retrieve/rule-grow-retrieve.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAGH,OAAO,EAAoB,KAAK,QAAQ,EAAgD,MAAM,0BAA0B,CAAC;AACzH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAwB7D,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,GAAG,QAAQ,GAAG,IAAI,CA8IrF"}
|
|
@@ -29,12 +29,8 @@ import { extractOrderingFromSortKeys } from '../../framework/physical-utils.js';
|
|
|
29
29
|
import { PlanNodeType as _PlanNodeType } from '../../nodes/plan-node-type.js';
|
|
30
30
|
import { BinaryOpNode } from '../../nodes/scalar.js';
|
|
31
31
|
import { collectBindingsInPlan } from '../../analysis/binding-collector.js';
|
|
32
|
-
import {
|
|
33
|
-
import { isCorrelatedSubquery } from '../../cache/correlation-detector.js';
|
|
32
|
+
import { isIndexStyleContext } from '../shared/index-style-context.js';
|
|
34
33
|
const log = createLogger('optimizer:rule:grow-retrieve');
|
|
35
|
-
function isIndexStyleContext(ctx) {
|
|
36
|
-
return !!ctx && typeof ctx === 'object' && ctx.kind === 'index-style';
|
|
37
|
-
}
|
|
38
34
|
export function ruleGrowRetrieve(node, context) {
|
|
39
35
|
// This rule runs in a TOP-DOWN pass, looking for any relational operation
|
|
40
36
|
// above a RetrieveNode that can be pushed into the module's execution boundary
|
|
@@ -89,7 +85,7 @@ export function ruleGrowRetrieve(node, context) {
|
|
|
89
85
|
if (!assessment && vtabModule.getBestAccessPlan && typeof vtabModule.getBestAccessPlan === 'function') {
|
|
90
86
|
if (canTranslateToIndexConstraints(node)) {
|
|
91
87
|
log('Testing index-style fallback for %s', node.nodeType);
|
|
92
|
-
assessment = fallbackIndexSupports(node,
|
|
88
|
+
assessment = fallbackIndexSupports(node, context, tableRef, retrieveChild.moduleCtx);
|
|
93
89
|
if (assessment) {
|
|
94
90
|
log('Index-style fallback supports pipeline (cost: %d)', assessment.cost);
|
|
95
91
|
}
|
|
@@ -125,14 +121,19 @@ export function ruleGrowRetrieve(node, context) {
|
|
|
125
121
|
// Query-based module with supports(): move the entire node into the module boundary
|
|
126
122
|
newPipeline = candidatePipeline;
|
|
127
123
|
}
|
|
128
|
-
// If index-style with a residual predicate that contains
|
|
129
|
-
//
|
|
130
|
-
//
|
|
131
|
-
//
|
|
124
|
+
// If index-style with a residual predicate that contains ANY subquery, keep the
|
|
125
|
+
// residual above the Retrieve as a FilterNode so the bottom-up physical pass still
|
|
126
|
+
// covers the subquery's own plan tree (and structural rules like subquery
|
|
127
|
+
// decorrelation can process it). Burying it in moduleCtx.residualPredicate leaves
|
|
128
|
+
// the subquery's inner Retrieve outside the region select-access-path visits, so it
|
|
129
|
+
// stays unphysicalized and emitRetrieve throws. Correlation is irrelevant: a
|
|
130
|
+
// self-contained IN (SELECT …)/EXISTS/scalar subquery carries an inner Retrieve just
|
|
131
|
+
// the same. Clear the residual from the context to avoid double-application in
|
|
132
|
+
// select-access-path. See tickets/complete/grow-retrieve-noncorrelated-subquery-residual.
|
|
132
133
|
let moduleCtx = assessment.ctx;
|
|
133
134
|
let residualAbove;
|
|
134
135
|
if (isIndexStyleContext(moduleCtx) && moduleCtx.residualPredicate
|
|
135
|
-
&&
|
|
136
|
+
&& predicateContainsSubquery(moduleCtx.residualPredicate)) {
|
|
136
137
|
residualAbove = moduleCtx.residualPredicate;
|
|
137
138
|
moduleCtx = { ...moduleCtx, residualPredicate: undefined };
|
|
138
139
|
}
|
|
@@ -189,9 +190,23 @@ function canTranslateToIndexConstraints(node) {
|
|
|
189
190
|
* Fallback assessment for index-style modules using getBestAccessPlan
|
|
190
191
|
* Translates various operations to index constraints
|
|
191
192
|
*/
|
|
192
|
-
function fallbackIndexSupports(node,
|
|
193
|
+
function fallbackIndexSupports(node, context, tableRef, existingCtx) {
|
|
193
194
|
const vtabModule = tableRef.vtabModule;
|
|
194
195
|
const tableSchema = tableRef.tableSchema;
|
|
196
|
+
// If the RetrieveNode we are growing over already carries an index-style
|
|
197
|
+
// context that provides an ordering (e.g. a reverse plan absorbed from a
|
|
198
|
+
// Sort by trySortAbsorbViaIndexOrdering), we must re-derive a
|
|
199
|
+
// direction-matching plan here. A plain no-ordering re-probe can return an
|
|
200
|
+
// oppositely-ordered plan (a module that serves DESC by reverse-scanning an
|
|
201
|
+
// ascending index yields the forward plan when ordering is not requested);
|
|
202
|
+
// equipping that plan silently clobbers the absorbed reverse plan while the
|
|
203
|
+
// Sort has already been dropped, so rows stream in the wrong direction. See
|
|
204
|
+
// `fix/quereus-reverse-order-sort-absorb-desync`.
|
|
205
|
+
const equippedOrdering = isIndexStyleContext(existingCtx)
|
|
206
|
+
&& existingCtx.accessPlan.providesOrdering
|
|
207
|
+
&& existingCtx.accessPlan.providesOrdering.length > 0
|
|
208
|
+
? existingCtx.accessPlan.providesOrdering
|
|
209
|
+
: undefined;
|
|
195
210
|
// Build BestAccessPlanRequest based on node type
|
|
196
211
|
const request = {
|
|
197
212
|
columns: tableSchema.columns.map((col, index) => ({
|
|
@@ -277,14 +292,40 @@ function fallbackIndexSupports(node, candidatePipeline, context, tableRef) {
|
|
|
277
292
|
log('Node type %s not supported by index-style fallback', node.nodeType);
|
|
278
293
|
return undefined;
|
|
279
294
|
}
|
|
295
|
+
// Carry the equipped ordering into the re-probe (unless the node type already
|
|
296
|
+
// derived one, e.g. a Sort) so the module returns a direction-matching plan
|
|
297
|
+
// instead of a no-ordering one that would clobber the absorbed reverse plan.
|
|
298
|
+
if (equippedOrdering && !request.requiredOrdering) {
|
|
299
|
+
request.requiredOrdering = equippedOrdering.map(o => ({ columnIndex: o.columnIndex, desc: o.desc }));
|
|
300
|
+
}
|
|
280
301
|
log('Built access plan request: %d filters, ordering: %s, limit: %s', request.filters.length, request.requiredOrdering ? 'yes' : 'no', request.limit ?? 'none');
|
|
281
302
|
// Get access plan from module
|
|
282
303
|
const accessPlan = vtabModule.getBestAccessPlan(context.db, tableSchema, request);
|
|
304
|
+
// No-clobber guard: never replace an equipped ordering plan with one that does
|
|
305
|
+
// not provide the same ordering (same column indexes + directions). Declining
|
|
306
|
+
// here leaves the current (correct) tree in place — a redundant Filter above a
|
|
307
|
+
// reverse Retrieve is safe because a Filter preserves row order, so rows still
|
|
308
|
+
// emerge in the absorbed direction.
|
|
309
|
+
// NOTE: the end-to-end regression that proves this guard is load-bearing lives
|
|
310
|
+
// in Lamina's cross-repo suite (ordinal-seek-range-bounds.test.ts), not here —
|
|
311
|
+
// the synthetic reverse-scan spec physicalizes before the re-grow can race in,
|
|
312
|
+
// so it exercises trySortAbsorbViaIndexOrdering's satisfaction check but not
|
|
313
|
+
// this clobber. If you refactor this branch, run Lamina's suite too, or add a
|
|
314
|
+
// Quereus-native repro that re-grows over an already-reverse-equipped Retrieve.
|
|
315
|
+
if (equippedOrdering && !orderingMatches(accessPlan.providesOrdering, equippedOrdering)) {
|
|
316
|
+
log('Re-probe would clobber equipped ordering; declining grow to preserve absorbed plan');
|
|
317
|
+
return undefined;
|
|
318
|
+
}
|
|
283
319
|
// Check if the plan is beneficial
|
|
284
320
|
const handlesAnyFilter = request.filters.length > 0 &&
|
|
285
321
|
accessPlan.handledFilters.some(handled => handled);
|
|
286
|
-
|
|
287
|
-
|
|
322
|
+
// Only count ordering as a benefit when the plan provides the SAME columns and
|
|
323
|
+
// directions that were requested — a wrong-direction (or wrong-column)
|
|
324
|
+
// providesOrdering of equal length must not let a Sort be grown into (and thus
|
|
325
|
+
// dropped by) this Retrieve. Direction-aware, not length-only.
|
|
326
|
+
const providesOrdering = request.requiredOrdering
|
|
327
|
+
? orderingMatches(accessPlan.providesOrdering, request.requiredOrdering)
|
|
328
|
+
: false;
|
|
288
329
|
// Calculate baseline cost
|
|
289
330
|
const estimatedRows = request.estimatedRows ?? 1000;
|
|
290
331
|
const seqCost = seqScanCost(estimatedRows);
|
|
@@ -337,6 +378,25 @@ function fallbackIndexSupports(node, candidatePipeline, context, tableRef) {
|
|
|
337
378
|
ctx: indexCtx
|
|
338
379
|
};
|
|
339
380
|
}
|
|
381
|
+
/**
|
|
382
|
+
* True when `provided` satisfies `required` position-for-position — same column
|
|
383
|
+
* indexes and same descending flags for every required position (the plan may
|
|
384
|
+
* provide extra trailing ordering, so `provided` need only be at least as long).
|
|
385
|
+
* Used both to gate the sort-absorb satisfaction check and to guard a re-grow
|
|
386
|
+
* from clobbering an already-equipped ordering plan. Comparing the ordering as
|
|
387
|
+
* data (columnIndex + desc) keeps a single representation — see the `OrderingSpec`
|
|
388
|
+
* shape in `best-access-plan.ts`.
|
|
389
|
+
*/
|
|
390
|
+
function orderingMatches(provided, required) {
|
|
391
|
+
if (!provided || provided.length < required.length)
|
|
392
|
+
return false;
|
|
393
|
+
for (let i = 0; i < required.length; i++) {
|
|
394
|
+
if (provided[i].columnIndex !== required[i].columnIndex || provided[i].desc !== required[i].desc) {
|
|
395
|
+
return false;
|
|
396
|
+
}
|
|
397
|
+
}
|
|
398
|
+
return true;
|
|
399
|
+
}
|
|
340
400
|
/**
|
|
341
401
|
* Attempt to absorb a Sort whose Retrieve is reachable through a chain of
|
|
342
402
|
* commuting unary operators (Project, Filter). When the table's access plan
|
|
@@ -410,8 +470,11 @@ function trySortAbsorbViaIndexOrdering(sort, context) {
|
|
|
410
470
|
estimatedRows: tableRef.estimatedRows || context.stats.tableRows(tableSchema) || 1000,
|
|
411
471
|
};
|
|
412
472
|
const accessPlan = vtabModule.getBestAccessPlan(context.db, tableSchema, request);
|
|
413
|
-
// Only proceed if the plan actually satisfies the ordering
|
|
414
|
-
|
|
473
|
+
// Only proceed if the plan actually satisfies the ordering — every requested
|
|
474
|
+
// position must be provided by the SAME column and direction, not merely
|
|
475
|
+
// matched on length. A length-only check would let an ascending
|
|
476
|
+
// providesOrdering of equal length wrongly drop a DESC Sort.
|
|
477
|
+
if (!orderingMatches(accessPlan.providesOrdering, requiredOrdering)) {
|
|
415
478
|
log('Access plan does not satisfy required ordering; leaving Sort in place');
|
|
416
479
|
return null;
|
|
417
480
|
}
|
|
@@ -458,18 +521,19 @@ function trySortAbsorbViaIndexOrdering(sort, context) {
|
|
|
458
521
|
return result;
|
|
459
522
|
}
|
|
460
523
|
/**
|
|
461
|
-
* Check
|
|
462
|
-
*
|
|
524
|
+
* Check whether a scalar residual predicate embeds ANY subquery. Every subquery
|
|
525
|
+
* node (`IN (SELECT …)`, `EXISTS`, scalar subquery, and any future ANY/ALL/row
|
|
526
|
+
* variant) hangs a RelationalPlanNode — with its own RetrieveNode — beneath a scalar
|
|
527
|
+
* predicate, so "contains a relational descendant" is exactly "contains a subquery".
|
|
528
|
+
* Detecting it structurally rather than by node class keeps this robust as new
|
|
529
|
+
* subquery node types are added. Such a residual must stay in the region the
|
|
530
|
+
* bottom-up physical pass covers, whether or not the subquery is correlated: a
|
|
531
|
+
* self-contained subquery buries an unphysicalized Retrieve just the same as a
|
|
532
|
+
* correlated one.
|
|
463
533
|
*/
|
|
464
|
-
function
|
|
465
|
-
if (expr instanceof ExistsNode) {
|
|
466
|
-
return isCorrelatedSubquery(expr.subquery);
|
|
467
|
-
}
|
|
468
|
-
if (expr instanceof InNode && expr.source) {
|
|
469
|
-
return isCorrelatedSubquery(expr.source);
|
|
470
|
-
}
|
|
534
|
+
function predicateContainsSubquery(expr) {
|
|
471
535
|
for (const child of expr.getChildren()) {
|
|
472
|
-
if (
|
|
536
|
+
if (isRelationalNode(child) || predicateContainsSubquery(child)) {
|
|
473
537
|
return true;
|
|
474
538
|
}
|
|
475
539
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rule-grow-retrieve.js","sourceRoot":"","sources":["../../../../../src/planner/rules/retrieve/rule-grow-retrieve.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"rule-grow-retrieve.js","sourceRoot":"","sources":["../../../../../src/planner/rules/retrieve/rule-grow-retrieve.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared index-style context passed between the retrieve rules.
|
|
3
|
+
*
|
|
4
|
+
* `ruleGrowRetrieve` (producer) stashes an `IndexStyleContext` on a
|
|
5
|
+
* `RetrieveNode.moduleCtx` — an intentionally untyped (`unknown`) channel — when
|
|
6
|
+
* an index-style module accepts a pushed-down access plan via `getBestAccessPlan`.
|
|
7
|
+
* `ruleSelectAccessPath` (consumer) later retrieves it to physicalize the access
|
|
8
|
+
* path. Because the channel is untyped, both sides must agree on the exact shape;
|
|
9
|
+
* this module is the single source of truth so the two rules cannot drift.
|
|
10
|
+
*
|
|
11
|
+
* Use {@link isIndexStyleContext} at the retrieval site to validate the shape and
|
|
12
|
+
* narrow `moduleCtx` from `unknown` — never blind-cast.
|
|
13
|
+
*/
|
|
14
|
+
import type { BestAccessPlanResult } from '../../../vtab/best-access-plan.js';
|
|
15
|
+
import type { ScalarPlanNode } from '../../nodes/plan-node.js';
|
|
16
|
+
import type { PredicateConstraint } from '../../analysis/constraint-extractor.js';
|
|
17
|
+
/**
|
|
18
|
+
* Context data stored in `RetrieveNode.moduleCtx` for the index-style fallback.
|
|
19
|
+
* Produced by `ruleGrowRetrieve`, consumed by `ruleSelectAccessPath`.
|
|
20
|
+
*/
|
|
21
|
+
export interface IndexStyleContext {
|
|
22
|
+
kind: 'index-style';
|
|
23
|
+
/** Access plan the module returned for the pushed-down request. */
|
|
24
|
+
accessPlan: BestAccessPlanResult;
|
|
25
|
+
/**
|
|
26
|
+
* Predicate the module could not handle, re-applied above the physical leaf.
|
|
27
|
+
* A residual is always a scalar boolean expression, hence `ScalarPlanNode`.
|
|
28
|
+
*/
|
|
29
|
+
residualPredicate?: ScalarPlanNode;
|
|
30
|
+
/** Constraints extracted from the pushed-down predicate. */
|
|
31
|
+
originalConstraints: PredicateConstraint[];
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Type guard narrowing an untyped `moduleCtx` to {@link IndexStyleContext}.
|
|
35
|
+
* Validates the discriminant so the consumer never blind-casts across the
|
|
36
|
+
* cross-rule boundary.
|
|
37
|
+
*/
|
|
38
|
+
export declare function isIndexStyleContext(ctx: unknown): ctx is IndexStyleContext;
|
|
39
|
+
//# sourceMappingURL=index-style-context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-style-context.d.ts","sourceRoot":"","sources":["../../../../../src/planner/rules/shared/index-style-context.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAC;AAElF;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IACjC,IAAI,EAAE,aAAa,CAAC;IACpB,mEAAmE;IACnE,UAAU,EAAE,oBAAoB,CAAC;IACjC;;;OAGG;IACH,iBAAiB,CAAC,EAAE,cAAc,CAAC;IACnC,4DAA4D;IAC5D,mBAAmB,EAAE,mBAAmB,EAAE,CAAC;CAC3C;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,iBAAiB,CAM1E"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared index-style context passed between the retrieve rules.
|
|
3
|
+
*
|
|
4
|
+
* `ruleGrowRetrieve` (producer) stashes an `IndexStyleContext` on a
|
|
5
|
+
* `RetrieveNode.moduleCtx` — an intentionally untyped (`unknown`) channel — when
|
|
6
|
+
* an index-style module accepts a pushed-down access plan via `getBestAccessPlan`.
|
|
7
|
+
* `ruleSelectAccessPath` (consumer) later retrieves it to physicalize the access
|
|
8
|
+
* path. Because the channel is untyped, both sides must agree on the exact shape;
|
|
9
|
+
* this module is the single source of truth so the two rules cannot drift.
|
|
10
|
+
*
|
|
11
|
+
* Use {@link isIndexStyleContext} at the retrieval site to validate the shape and
|
|
12
|
+
* narrow `moduleCtx` from `unknown` — never blind-cast.
|
|
13
|
+
*/
|
|
14
|
+
/**
|
|
15
|
+
* Type guard narrowing an untyped `moduleCtx` to {@link IndexStyleContext}.
|
|
16
|
+
* Validates the discriminant so the consumer never blind-casts across the
|
|
17
|
+
* cross-rule boundary.
|
|
18
|
+
*/
|
|
19
|
+
export function isIndexStyleContext(ctx) {
|
|
20
|
+
// NOTE: discriminant-only check; the payload fields (accessPlan/originalConstraints/
|
|
21
|
+
// residualPredicate) are trusted, not deep-validated. Sound today because
|
|
22
|
+
// ruleGrowRetrieve is the sole writer of this channel. If another producer ever
|
|
23
|
+
// stashes a differently-shaped `{ kind: 'index-style' }` object, add field checks here.
|
|
24
|
+
return !!ctx && typeof ctx === 'object' && ctx.kind === 'index-style';
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=index-style-context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-style-context.js","sourceRoot":"","sources":["../../../../../src/planner/rules/shared/index-style-context.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAuBH;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,GAAY;IAC/C,qFAAqF;IACrF,0EAA0E;IAC1E,gFAAgF;IAChF,wFAAwF;IACxF,OAAO,CAAC,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAK,GAAyB,CAAC,IAAI,KAAK,aAAa,CAAC;AAC9F,CAAC"}
|
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
* members, so the trailing key is a no-op tiebreaker.
|
|
46
46
|
*
|
|
47
47
|
* Ordering with other rules: this is a Structural-pass rule. It must run
|
|
48
|
-
* before `monotonic-limit-pushdown` (PostOptimization
|
|
48
|
+
* before `monotonic-limit-pushdown` (PostOptimization pass) so single-
|
|
49
49
|
* key reductions can enable the pushdown. That ordering is automatic since
|
|
50
50
|
* Structural runs before PostOptimization.
|
|
51
51
|
*/
|
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
* members, so the trailing key is a no-op tiebreaker.
|
|
46
46
|
*
|
|
47
47
|
* Ordering with other rules: this is a Structural-pass rule. It must run
|
|
48
|
-
* before `monotonic-limit-pushdown` (PostOptimization
|
|
48
|
+
* before `monotonic-limit-pushdown` (PostOptimization pass) so single-
|
|
49
49
|
* key reductions can enable the pushdown. That ordering is automatic since
|
|
50
50
|
* Structural runs before PostOptimization.
|
|
51
51
|
*/
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
* The output schema of an anti-join is its left side (SEMI/ANTI take left
|
|
27
27
|
* columns only — see `buildJoinAttributes`), so we hand `EmptyRelationNode`
|
|
28
28
|
* L's attribute IDs and RelationType directly. The const-fold pass
|
|
29
|
-
* (Structural
|
|
29
|
+
* (in the Structural pass, alongside the empty-relation folds) then cascades that emptiness up through Filter /
|
|
30
30
|
* Project / Sort / LimitOffset / Distinct / inner-or-cross-or-semi joins.
|
|
31
31
|
*/
|
|
32
32
|
import type { PlanNode } from '../../nodes/plan-node.js';
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
* The output schema of an anti-join is its left side (SEMI/ANTI take left
|
|
27
27
|
* columns only — see `buildJoinAttributes`), so we hand `EmptyRelationNode`
|
|
28
28
|
* L's attribute IDs and RelationType directly. The const-fold pass
|
|
29
|
-
* (Structural
|
|
29
|
+
* (in the Structural pass, alongside the empty-relation folds) then cascades that emptiness up through Filter /
|
|
30
30
|
* Project / Sort / LimitOffset / Distinct / inner-or-cross-or-semi joins.
|
|
31
31
|
*/
|
|
32
32
|
import { createLogger } from '../../../common/logger.js';
|
|
@@ -11,6 +11,15 @@ export declare class RegisteredScope implements Scope {
|
|
|
11
11
|
readonly parent?: Scope | undefined;
|
|
12
12
|
/** Symbols that have been registered in this scope. */
|
|
13
13
|
private registeredSymbols;
|
|
14
|
+
/**
|
|
15
|
+
* Symbol keys that are ambiguous *in this scope* — a bare name shared by two
|
|
16
|
+
* or more registered outputs (e.g. two GROUP BY keys `i.id` and `c.id` whose
|
|
17
|
+
* base name is both `id`). `resolveSymbol` returns {@link Ambiguous} for these
|
|
18
|
+
* before delegating to the parent, so a bare reference raises the clear
|
|
19
|
+
* "ambiguous column name" error instead of silently binding to a parent-scope
|
|
20
|
+
* column (which for aggregate output would be the wrong, pre-aggregate value).
|
|
21
|
+
*/
|
|
22
|
+
private ambiguousSymbols;
|
|
14
23
|
constructor(
|
|
15
24
|
/** The parent scope, if any. The root scope of a query has no parent. */
|
|
16
25
|
parent?: Scope | undefined);
|
|
@@ -26,6 +35,13 @@ export declare class RegisteredScope implements Scope {
|
|
|
26
35
|
* and returns an appropriate ReferenceNode.
|
|
27
36
|
*/
|
|
28
37
|
registerSymbol(symbolKey: string, getReference: ReferenceCallback): void;
|
|
38
|
+
/**
|
|
39
|
+
* Marks a symbol key as ambiguous in this scope. Unlike {@link registerSymbol}
|
|
40
|
+
* this never throws — the caller uses it deliberately when two outputs share a
|
|
41
|
+
* bare name. A marked key short-circuits {@link resolveSymbol} to
|
|
42
|
+
* {@link Ambiguous} even if a same-named symbol is also registered.
|
|
43
|
+
*/
|
|
44
|
+
markAmbiguous(symbolKey: string): void;
|
|
29
45
|
resolveSymbol(symbolKey: string, expression: AST.Expression): PlanNode | typeof Ambiguous | undefined;
|
|
30
46
|
/**
|
|
31
47
|
* Returns all symbols that have been registered in this scope.
|
|
@@ -33,5 +49,10 @@ export declare class RegisteredScope implements Scope {
|
|
|
33
49
|
* @returns An array of all [symbolKey, ReferenceCallback].
|
|
34
50
|
*/
|
|
35
51
|
getSymbols(): readonly [string, ReferenceCallback][];
|
|
52
|
+
/**
|
|
53
|
+
* Returns all symbol keys marked ambiguous in this scope. Used when composing
|
|
54
|
+
* a derived scope (e.g. the HAVING hybrid scope) so the ambiguity carries over.
|
|
55
|
+
*/
|
|
56
|
+
getAmbiguousSymbols(): readonly string[];
|
|
36
57
|
}
|
|
37
58
|
//# sourceMappingURL=registered.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registered.d.ts","sourceRoot":"","sources":["../../../../src/planner/scopes/registered.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,KAAK,GAAG,MAAM,qBAAqB,CAAC;AAC3C,OAAO,EAAE,KAAK,iBAAiB,EAAE,KAAK,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE3E;;;;GAIG;AACH,qBAAa,eAAgB,YAAW,KAAK;
|
|
1
|
+
{"version":3,"file":"registered.d.ts","sourceRoot":"","sources":["../../../../src/planner/scopes/registered.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,KAAK,GAAG,MAAM,qBAAqB,CAAC;AAC3C,OAAO,EAAE,KAAK,iBAAiB,EAAE,KAAK,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE3E;;;;GAIG;AACH,qBAAa,eAAgB,YAAW,KAAK;IAe3C,yEAAyE;aACzD,MAAM,CAAC,EAAE,KAAK;IAf/B,uDAAuD;IACvD,OAAO,CAAC,iBAAiB,CAA6C;IAEtE;;;;;;;OAOG;IACH,OAAO,CAAC,gBAAgB,CAA0B;;IAGjD,yEAAyE;IACzD,MAAM,CAAC,EAAE,KAAK,YAAA;IAG/B;;;;;;;;;;OAUG;IACH,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,iBAAiB,GAAG,IAAI;IAQxE;;;;;OAKG;IACH,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAItC,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,CAAC,UAAU,GAAG,QAAQ,GAAG,OAAO,SAAS,GAAG,SAAS;IAerG;;;;OAIG;IACH,UAAU,IAAI,SAAS,CAAC,MAAM,EAAE,iBAAiB,CAAC,EAAE;IAIpD;;;OAGG;IACH,mBAAmB,IAAI,SAAS,MAAM,EAAE;CAGxC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { StatusCode } from '../../common/types.js';
|
|
2
2
|
import { QuereusError } from '../../common/errors.js';
|
|
3
|
+
import { Ambiguous } from './scope.js';
|
|
3
4
|
/**
|
|
4
5
|
* The Scope object provides context for symbol resolution during query planning.
|
|
5
6
|
* It encapsulates the logic for looking up columns, parameters, functions, and CTEs
|
|
@@ -9,6 +10,15 @@ export class RegisteredScope {
|
|
|
9
10
|
parent;
|
|
10
11
|
/** Symbols that have been registered in this scope. */
|
|
11
12
|
registeredSymbols = new Map();
|
|
13
|
+
/**
|
|
14
|
+
* Symbol keys that are ambiguous *in this scope* — a bare name shared by two
|
|
15
|
+
* or more registered outputs (e.g. two GROUP BY keys `i.id` and `c.id` whose
|
|
16
|
+
* base name is both `id`). `resolveSymbol` returns {@link Ambiguous} for these
|
|
17
|
+
* before delegating to the parent, so a bare reference raises the clear
|
|
18
|
+
* "ambiguous column name" error instead of silently binding to a parent-scope
|
|
19
|
+
* column (which for aggregate output would be the wrong, pre-aggregate value).
|
|
20
|
+
*/
|
|
21
|
+
ambiguousSymbols = new Set();
|
|
12
22
|
constructor(
|
|
13
23
|
/** The parent scope, if any. The root scope of a query has no parent. */
|
|
14
24
|
parent) {
|
|
@@ -32,8 +42,21 @@ export class RegisteredScope {
|
|
|
32
42
|
}
|
|
33
43
|
this.registeredSymbols.set(lowerSymbolKey, getReference);
|
|
34
44
|
}
|
|
45
|
+
/**
|
|
46
|
+
* Marks a symbol key as ambiguous in this scope. Unlike {@link registerSymbol}
|
|
47
|
+
* this never throws — the caller uses it deliberately when two outputs share a
|
|
48
|
+
* bare name. A marked key short-circuits {@link resolveSymbol} to
|
|
49
|
+
* {@link Ambiguous} even if a same-named symbol is also registered.
|
|
50
|
+
*/
|
|
51
|
+
markAmbiguous(symbolKey) {
|
|
52
|
+
this.ambiguousSymbols.add(symbolKey.toLowerCase());
|
|
53
|
+
}
|
|
35
54
|
resolveSymbol(symbolKey, expression) {
|
|
36
|
-
const
|
|
55
|
+
const lowerSymbolKey = symbolKey.toLowerCase();
|
|
56
|
+
if (this.ambiguousSymbols.has(lowerSymbolKey)) {
|
|
57
|
+
return Ambiguous;
|
|
58
|
+
}
|
|
59
|
+
const reference = this.registeredSymbols.get(lowerSymbolKey);
|
|
37
60
|
if (reference) {
|
|
38
61
|
return reference(expression, this);
|
|
39
62
|
}
|
|
@@ -50,5 +73,12 @@ export class RegisteredScope {
|
|
|
50
73
|
getSymbols() {
|
|
51
74
|
return Array.from(this.registeredSymbols.entries());
|
|
52
75
|
}
|
|
76
|
+
/**
|
|
77
|
+
* Returns all symbol keys marked ambiguous in this scope. Used when composing
|
|
78
|
+
* a derived scope (e.g. the HAVING hybrid scope) so the ambiguity carries over.
|
|
79
|
+
*/
|
|
80
|
+
getAmbiguousSymbols() {
|
|
81
|
+
return Array.from(this.ambiguousSymbols);
|
|
82
|
+
}
|
|
53
83
|
}
|
|
54
84
|
//# sourceMappingURL=registered.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registered.js","sourceRoot":"","sources":["../../../../src/planner/scopes/registered.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"registered.js","sourceRoot":"","sources":["../../../../src/planner/scopes/registered.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAGtD,OAAO,EAAsC,SAAS,EAAE,MAAM,YAAY,CAAC;AAE3E;;;;GAIG;AACH,MAAM,OAAO,eAAe;IAgBV;IAfjB,uDAAuD;IAC/C,iBAAiB,GAAmC,IAAI,GAAG,EAAE,CAAC;IAEtE;;;;;;;OAOG;IACK,gBAAgB,GAAgB,IAAI,GAAG,EAAE,CAAC;IAElD;IACC,yEAAyE;IACzD,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;IAC3B,CAAC;IAEL;;;;;;;;;;OAUG;IACH,cAAc,CAAC,SAAiB,EAAE,YAA+B;QAChE,MAAM,cAAc,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC;QAC/C,IAAI,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC;YAChD,MAAM,IAAI,YAAY,CAAC,WAAW,cAAc,qCAAqC,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;QAC1G,CAAC;QACD,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;IAC1D,CAAC;IAED;;;;;OAKG;IACH,aAAa,CAAC,SAAiB;QAC9B,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC;IACpD,CAAC;IAED,aAAa,CAAC,SAAiB,EAAE,UAA0B;QAC1D,MAAM,cAAc,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC;QAC/C,IAAI,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC;YAC/C,OAAO,SAAS,CAAC;QAClB,CAAC;QACD,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAC7D,IAAI,SAAS,EAAE,CAAC;YACf,OAAO,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QACpC,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QACzD,CAAC;QACD,OAAO,SAAS,CAAC;IAClB,CAAC;IAED;;;;OAIG;IACH,UAAU;QACT,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,CAAC,CAAC;IACrD,CAAC;IAED;;;OAGG;IACH,mBAAmB;QAClB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC1C,CAAC;CACD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analyze.d.ts","sourceRoot":"","sources":["../../../../src/planner/stats/analyze.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,EAAE,eAAe,EAAoB,MAAM,oBAAoB,CAAC;AAS5E;;;;;;;GAOG;AACH,wBAAsB,yBAAyB,CAC9C,IAAI,EAAE,YAAY,EAClB,WAAW,EAAE,WAAW,GACtB,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC,
|
|
1
|
+
{"version":3,"file":"analyze.d.ts","sourceRoot":"","sources":["../../../../src/planner/stats/analyze.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,EAAE,eAAe,EAAoB,MAAM,oBAAoB,CAAC;AAS5E;;;;;;;GAOG;AACH,wBAAsB,yBAAyB,CAC9C,IAAI,EAAE,YAAY,EAClB,WAAW,EAAE,WAAW,GACtB,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC,CAuFtC"}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* Statistics collection via table scanning.
|
|
3
3
|
* Used as fallback when a VTab module doesn't implement getStatistics().
|
|
4
4
|
*/
|
|
5
|
+
import { makeFullScanFilterInfo } from '../../vtab/filter-info.js';
|
|
5
6
|
import { buildHistogram } from './histogram.js';
|
|
6
7
|
import { compareSqlValues } from '../../util/comparison.js';
|
|
7
8
|
import { createLogger } from '../../common/logger.js';
|
|
@@ -28,26 +29,7 @@ export async function collectStatisticsFromScan(vtab, tableSchema) {
|
|
|
28
29
|
let rowCount = 0;
|
|
29
30
|
const maxSample = 1000;
|
|
30
31
|
// Full scan with a minimal filter that returns all rows
|
|
31
|
-
const filterInfo =
|
|
32
|
-
idxNum: 0,
|
|
33
|
-
idxStr: null,
|
|
34
|
-
constraints: [],
|
|
35
|
-
args: [],
|
|
36
|
-
indexInfoOutput: {
|
|
37
|
-
nConstraint: 0,
|
|
38
|
-
aConstraint: [],
|
|
39
|
-
nOrderBy: 0,
|
|
40
|
-
aOrderBy: [],
|
|
41
|
-
colUsed: 0n,
|
|
42
|
-
aConstraintUsage: [],
|
|
43
|
-
idxNum: 0,
|
|
44
|
-
idxStr: null,
|
|
45
|
-
orderByConsumed: false,
|
|
46
|
-
estimatedCost: Infinity,
|
|
47
|
-
estimatedRows: BigInt(Number.MAX_SAFE_INTEGER),
|
|
48
|
-
idxFlags: 0,
|
|
49
|
-
},
|
|
50
|
-
};
|
|
32
|
+
const filterInfo = makeFullScanFilterInfo(Infinity, Number.MAX_SAFE_INTEGER);
|
|
51
33
|
try {
|
|
52
34
|
for await (const row of vtab.query(filterInfo)) {
|
|
53
35
|
rowCount++;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analyze.js","sourceRoot":"","sources":["../../../../src/planner/stats/analyze.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"analyze.js","sourceRoot":"","sources":["../../../../src/planner/stats/analyze.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"histogram.d.ts","sourceRoot":"","sources":["../../../../src/planner/stats/histogram.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,KAAK,EAAE,mBAAmB,EAAmB,MAAM,oBAAoB,CAAC;AAE/E;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CACvC,SAAS,EAAE,mBAAmB,EAC9B,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,QAAQ,EACf,SAAS,EAAE,MAAM,GACf,MAAM,GAAG,SAAS,CAgDpB;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC7B,YAAY,EAAE,QAAQ,EAAE,EACxB,UAAU,EAAE,MAAM,GAChB,mBAAmB,GAAG,SAAS,
|
|
1
|
+
{"version":3,"file":"histogram.d.ts","sourceRoot":"","sources":["../../../../src/planner/stats/histogram.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,KAAK,EAAE,mBAAmB,EAAmB,MAAM,oBAAoB,CAAC;AAE/E;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CACvC,SAAS,EAAE,mBAAmB,EAC9B,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,QAAQ,EACf,SAAS,EAAE,MAAM,GACf,MAAM,GAAG,SAAS,CAgDpB;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC7B,YAAY,EAAE,QAAQ,EAAE,EACxB,UAAU,EAAE,MAAM,GAChB,mBAAmB,GAAG,SAAS,CAgCjC"}
|
|
@@ -86,6 +86,10 @@ export function buildHistogram(sortedValues, numBuckets) {
|
|
|
86
86
|
const distinct = new Set();
|
|
87
87
|
for (let j = start; j <= upperIdx; j++) {
|
|
88
88
|
const val = sortedValues[j];
|
|
89
|
+
// NOTE: String(val) collapses every JSON object to 'object:[object Object]',
|
|
90
|
+
// so a JSON column's per-bucket NDV is undercounted. Harmless today — this is
|
|
91
|
+
// a cost-estimation statistic only, never a correctness key. If JSON-column
|
|
92
|
+
// cardinality ever drives a bad plan, key on canonicalJsonString here instead.
|
|
89
93
|
distinct.add(typeof val + ':' + String(val));
|
|
90
94
|
}
|
|
91
95
|
buckets.push({
|