@quereus/quereus 0.2.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +12 -1
- package/dist/src/common/errors.js.map +1 -1
- package/dist/src/common/json-types.d.ts +11 -0
- package/dist/src/common/json-types.d.ts.map +1 -0
- package/dist/src/common/json-types.js +3 -0
- package/dist/src/common/json-types.js.map +1 -0
- package/dist/src/common/types.d.ts +2 -0
- package/dist/src/common/types.d.ts.map +1 -1
- package/dist/src/core/database-options.d.ts +2 -2
- package/dist/src/core/database-options.d.ts.map +1 -1
- package/dist/src/core/database-options.js.map +1 -1
- package/dist/src/core/database.d.ts +61 -14
- package/dist/src/core/database.d.ts.map +1 -1
- package/dist/src/core/database.js +481 -54
- package/dist/src/core/database.js.map +1 -1
- package/dist/src/core/statement.d.ts.map +1 -1
- package/dist/src/core/statement.js +3 -1
- package/dist/src/core/statement.js.map +1 -1
- package/dist/src/func/builtins/builtin-window-functions.d.ts.map +1 -1
- package/dist/src/func/builtins/builtin-window-functions.js.map +1 -1
- package/dist/src/func/builtins/datetime.d.ts +2 -0
- package/dist/src/func/builtins/datetime.d.ts.map +1 -1
- package/dist/src/func/builtins/datetime.js +39 -0
- package/dist/src/func/builtins/datetime.js.map +1 -1
- package/dist/src/func/builtins/explain.d.ts +1 -0
- package/dist/src/func/builtins/explain.d.ts.map +1 -1
- package/dist/src/func/builtins/explain.js +159 -36
- package/dist/src/func/builtins/explain.js.map +1 -1
- package/dist/src/func/builtins/index.d.ts.map +1 -1
- package/dist/src/func/builtins/index.js +5 -2
- package/dist/src/func/builtins/index.js.map +1 -1
- package/dist/src/func/builtins/json-helpers.d.ts +8 -8
- package/dist/src/func/builtins/json-helpers.d.ts.map +1 -1
- package/dist/src/func/builtins/json-helpers.js +3 -3
- package/dist/src/func/builtins/json-helpers.js.map +1 -1
- package/dist/src/func/builtins/json-tvf.d.ts.map +1 -1
- package/dist/src/func/builtins/json-tvf.js +1 -1
- package/dist/src/func/builtins/json-tvf.js.map +1 -1
- package/dist/src/func/builtins/json.d.ts.map +1 -1
- package/dist/src/func/builtins/json.js +3 -2
- package/dist/src/func/builtins/json.js.map +1 -1
- package/dist/src/func/builtins/schema.d.ts.map +1 -1
- package/dist/src/func/builtins/schema.js +22 -1
- package/dist/src/func/builtins/schema.js.map +1 -1
- package/dist/src/func/context.d.ts.map +1 -1
- package/dist/src/func/context.js +5 -0
- package/dist/src/func/context.js.map +1 -1
- package/dist/src/func/registration.d.ts +2 -1
- package/dist/src/func/registration.d.ts.map +1 -1
- package/dist/src/func/registration.js.map +1 -1
- package/dist/src/index.d.ts +3 -3
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +2 -2
- package/dist/src/index.js.map +1 -1
- package/dist/src/parser/ast.d.ts +84 -6
- package/dist/src/parser/ast.d.ts.map +1 -1
- package/dist/src/parser/lexer.d.ts +11 -0
- package/dist/src/parser/lexer.d.ts.map +1 -1
- package/dist/src/parser/lexer.js +29 -21
- package/dist/src/parser/lexer.js.map +1 -1
- package/dist/src/parser/parser.d.ts +16 -0
- package/dist/src/parser/parser.d.ts.map +1 -1
- package/dist/src/parser/parser.js +542 -26
- package/dist/src/parser/parser.js.map +1 -1
- package/dist/src/parser/visitor.d.ts.map +1 -1
- package/dist/src/parser/visitor.js +1 -0
- package/dist/src/parser/visitor.js.map +1 -1
- package/dist/src/planner/analysis/binding-collector.d.ts +5 -0
- package/dist/src/planner/analysis/binding-collector.d.ts.map +1 -0
- package/dist/src/planner/analysis/binding-collector.js +73 -0
- package/dist/src/planner/analysis/binding-collector.js.map +1 -0
- package/dist/src/planner/analysis/const-evaluator.js +1 -1
- package/dist/src/planner/analysis/const-evaluator.js.map +1 -1
- package/dist/src/planner/analysis/const-pass.d.ts.map +1 -1
- package/dist/src/planner/analysis/const-pass.js +1 -1
- package/dist/src/planner/analysis/const-pass.js.map +1 -1
- package/dist/src/planner/analysis/constraint-extractor.d.ts +67 -31
- package/dist/src/planner/analysis/constraint-extractor.d.ts.map +1 -1
- package/dist/src/planner/analysis/constraint-extractor.js +513 -84
- package/dist/src/planner/analysis/constraint-extractor.js.map +1 -1
- package/dist/src/planner/analysis/predicate-normalizer.d.ts +17 -0
- package/dist/src/planner/analysis/predicate-normalizer.d.ts.map +1 -0
- package/dist/src/planner/analysis/predicate-normalizer.js +222 -0
- package/dist/src/planner/analysis/predicate-normalizer.js.map +1 -0
- package/dist/src/planner/building/alter-table.d.ts.map +1 -1
- package/dist/src/planner/building/alter-table.js +5 -2
- package/dist/src/planner/building/alter-table.js.map +1 -1
- package/dist/src/planner/building/block.d.ts.map +1 -1
- package/dist/src/planner/building/block.js +16 -0
- package/dist/src/planner/building/block.js.map +1 -1
- package/dist/src/planner/building/constraint-builder.d.ts +2 -2
- package/dist/src/planner/building/constraint-builder.d.ts.map +1 -1
- package/dist/src/planner/building/constraint-builder.js +52 -3
- package/dist/src/planner/building/constraint-builder.js.map +1 -1
- package/dist/src/planner/building/create-assertion.d.ts +5 -0
- package/dist/src/planner/building/create-assertion.d.ts.map +1 -0
- package/dist/src/planner/building/create-assertion.js +5 -0
- package/dist/src/planner/building/create-assertion.js.map +1 -0
- package/dist/src/planner/building/declare-schema.d.ts +8 -0
- package/dist/src/planner/building/declare-schema.d.ts.map +1 -0
- package/dist/src/planner/building/declare-schema.js +14 -0
- package/dist/src/planner/building/declare-schema.js.map +1 -0
- package/dist/src/planner/building/delete.d.ts.map +1 -1
- package/dist/src/planner/building/delete.js +38 -6
- package/dist/src/planner/building/delete.js.map +1 -1
- package/dist/src/planner/building/drop-assertion.d.ts +5 -0
- package/dist/src/planner/building/drop-assertion.d.ts.map +1 -0
- package/dist/src/planner/building/drop-assertion.js +8 -0
- package/dist/src/planner/building/drop-assertion.js.map +1 -0
- package/dist/src/planner/building/expression.d.ts.map +1 -1
- package/dist/src/planner/building/expression.js +1 -0
- package/dist/src/planner/building/expression.js.map +1 -1
- package/dist/src/planner/building/function-call.d.ts.map +1 -1
- package/dist/src/planner/building/function-call.js +2 -1
- package/dist/src/planner/building/function-call.js.map +1 -1
- package/dist/src/planner/building/insert.d.ts.map +1 -1
- package/dist/src/planner/building/insert.js +68 -11
- package/dist/src/planner/building/insert.js.map +1 -1
- package/dist/src/planner/building/pragma.d.ts.map +1 -1
- package/dist/src/planner/building/pragma.js +1 -0
- package/dist/src/planner/building/pragma.js.map +1 -1
- package/dist/src/planner/building/schema-resolution.d.ts +2 -2
- package/dist/src/planner/building/schema-resolution.d.ts.map +1 -1
- package/dist/src/planner/building/select-aggregates.d.ts.map +1 -1
- package/dist/src/planner/building/select-aggregates.js +3 -2
- package/dist/src/planner/building/select-aggregates.js.map +1 -1
- package/dist/src/planner/building/select-compound.d.ts +2 -2
- package/dist/src/planner/building/select-compound.d.ts.map +1 -1
- package/dist/src/planner/building/select-compound.js +10 -1
- package/dist/src/planner/building/select-compound.js.map +1 -1
- package/dist/src/planner/building/select-context.d.ts +3 -3
- package/dist/src/planner/building/select-context.d.ts.map +1 -1
- package/dist/src/planner/building/select-context.js.map +1 -1
- package/dist/src/planner/building/select-modifiers.d.ts +6 -5
- package/dist/src/planner/building/select-modifiers.d.ts.map +1 -1
- package/dist/src/planner/building/select-modifiers.js +5 -4
- package/dist/src/planner/building/select-modifiers.js.map +1 -1
- package/dist/src/planner/building/select-projections.d.ts.map +1 -1
- package/dist/src/planner/building/select-projections.js +4 -5
- package/dist/src/planner/building/select-projections.js.map +1 -1
- package/dist/src/planner/building/select-window.d.ts.map +1 -1
- package/dist/src/planner/building/select-window.js +6 -3
- package/dist/src/planner/building/select-window.js.map +1 -1
- package/dist/src/planner/building/select.d.ts +3 -3
- package/dist/src/planner/building/select.d.ts.map +1 -1
- package/dist/src/planner/building/select.js +18 -8
- package/dist/src/planner/building/select.js.map +1 -1
- package/dist/src/planner/building/table-function.d.ts.map +1 -1
- package/dist/src/planner/building/table-function.js +1 -1
- package/dist/src/planner/building/table-function.js.map +1 -1
- package/dist/src/planner/building/table.d.ts +5 -3
- package/dist/src/planner/building/table.d.ts.map +1 -1
- package/dist/src/planner/building/table.js +7 -2
- package/dist/src/planner/building/table.js.map +1 -1
- package/dist/src/planner/building/update.d.ts.map +1 -1
- package/dist/src/planner/building/update.js +39 -7
- package/dist/src/planner/building/update.js.map +1 -1
- package/dist/src/planner/building/with.d.ts +3 -3
- package/dist/src/planner/building/with.d.ts.map +1 -1
- package/dist/src/planner/building/with.js.map +1 -1
- package/dist/src/planner/debug.d.ts.map +1 -1
- package/dist/src/planner/debug.js.map +1 -1
- package/dist/src/planner/framework/characteristics.d.ts +235 -0
- package/dist/src/planner/framework/characteristics.d.ts.map +1 -0
- package/dist/src/planner/framework/characteristics.js +299 -0
- package/dist/src/planner/framework/characteristics.js.map +1 -0
- package/dist/src/planner/framework/context.d.ts +16 -5
- package/dist/src/planner/framework/context.d.ts.map +1 -1
- package/dist/src/planner/framework/context.js +2 -0
- package/dist/src/planner/framework/context.js.map +1 -1
- package/dist/src/planner/framework/pass.d.ts +116 -0
- package/dist/src/planner/framework/pass.d.ts.map +1 -0
- package/dist/src/planner/framework/pass.js +236 -0
- package/dist/src/planner/framework/pass.js.map +1 -0
- package/dist/src/planner/nodes/aggregate-node.d.ts +16 -6
- package/dist/src/planner/nodes/aggregate-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/aggregate-node.js +40 -4
- package/dist/src/planner/nodes/aggregate-node.js.map +1 -1
- package/dist/src/planner/nodes/array-index-node.js.map +1 -1
- package/dist/src/planner/nodes/cache-node.d.ts +5 -2
- package/dist/src/planner/nodes/cache-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/cache-node.js +6 -0
- package/dist/src/planner/nodes/cache-node.js.map +1 -1
- package/dist/src/planner/nodes/constraint-check-node.d.ts +12 -4
- package/dist/src/planner/nodes/constraint-check-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/constraint-check-node.js +12 -4
- package/dist/src/planner/nodes/constraint-check-node.js.map +1 -1
- package/dist/src/planner/nodes/create-assertion-node.d.ts +22 -0
- package/dist/src/planner/nodes/create-assertion-node.d.ts.map +1 -0
- package/dist/src/planner/nodes/create-assertion-node.js +41 -0
- package/dist/src/planner/nodes/create-assertion-node.js.map +1 -0
- package/dist/src/planner/nodes/create-index-node.js +2 -2
- package/dist/src/planner/nodes/create-index-node.js.map +1 -1
- package/dist/src/planner/nodes/create-table-node.js +2 -2
- package/dist/src/planner/nodes/create-table-node.js.map +1 -1
- package/dist/src/planner/nodes/cte-node.d.ts +17 -2
- package/dist/src/planner/nodes/cte-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/cte-node.js +9 -1
- package/dist/src/planner/nodes/cte-node.js.map +1 -1
- package/dist/src/planner/nodes/cte-reference-node.js +1 -1
- package/dist/src/planner/nodes/cte-reference-node.js.map +1 -1
- package/dist/src/planner/nodes/declarative-schema.d.ts +62 -0
- package/dist/src/planner/nodes/declarative-schema.d.ts.map +1 -0
- package/dist/src/planner/nodes/declarative-schema.js +181 -0
- package/dist/src/planner/nodes/declarative-schema.js.map +1 -0
- package/dist/src/planner/nodes/delete-node.d.ts +8 -3
- package/dist/src/planner/nodes/delete-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/delete-node.js +10 -2
- package/dist/src/planner/nodes/delete-node.js.map +1 -1
- package/dist/src/planner/nodes/distinct-node.d.ts +3 -2
- package/dist/src/planner/nodes/distinct-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/distinct-node.js +17 -4
- package/dist/src/planner/nodes/distinct-node.js.map +1 -1
- package/dist/src/planner/nodes/dml-executor-node.d.ts +2 -2
- package/dist/src/planner/nodes/dml-executor-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/drop-assertion-node.d.ts +21 -0
- package/dist/src/planner/nodes/drop-assertion-node.d.ts.map +1 -0
- package/dist/src/planner/nodes/drop-assertion-node.js +41 -0
- package/dist/src/planner/nodes/drop-assertion-node.js.map +1 -0
- package/dist/src/planner/nodes/drop-table-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/drop-table-node.js +1 -0
- package/dist/src/planner/nodes/drop-table-node.js.map +1 -1
- package/dist/src/planner/nodes/filter.d.ts +8 -3
- package/dist/src/planner/nodes/filter.d.ts.map +1 -1
- package/dist/src/planner/nodes/filter.js +44 -0
- package/dist/src/planner/nodes/filter.js.map +1 -1
- package/dist/src/planner/nodes/insert-node.d.ts +9 -3
- package/dist/src/planner/nodes/insert-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/insert-node.js +11 -2
- package/dist/src/planner/nodes/insert-node.js.map +1 -1
- package/dist/src/planner/nodes/internal-recursive-cte-ref-node.d.ts +3 -4
- 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 -16
- package/dist/src/planner/nodes/internal-recursive-cte-ref-node.js.map +1 -1
- package/dist/src/planner/nodes/join-node.d.ts +12 -3
- package/dist/src/planner/nodes/join-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/join-node.js +111 -2
- package/dist/src/planner/nodes/join-node.js.map +1 -1
- package/dist/src/planner/nodes/limit-offset.d.ts +7 -3
- package/dist/src/planner/nodes/limit-offset.d.ts.map +1 -1
- package/dist/src/planner/nodes/limit-offset.js +15 -0
- package/dist/src/planner/nodes/limit-offset.js.map +1 -1
- package/dist/src/planner/nodes/plan-node-type.d.ts +8 -0
- package/dist/src/planner/nodes/plan-node-type.d.ts.map +1 -1
- package/dist/src/planner/nodes/plan-node-type.js +8 -0
- package/dist/src/planner/nodes/plan-node-type.js.map +1 -1
- package/dist/src/planner/nodes/plan-node.d.ts +9 -9
- package/dist/src/planner/nodes/plan-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/plan-node.js +3 -3
- package/dist/src/planner/nodes/plan-node.js.map +1 -1
- package/dist/src/planner/nodes/pragma.d.ts +2 -1
- package/dist/src/planner/nodes/pragma.d.ts.map +1 -1
- package/dist/src/planner/nodes/pragma.js +3 -1
- package/dist/src/planner/nodes/pragma.js.map +1 -1
- package/dist/src/planner/nodes/project-node.d.ts +16 -3
- package/dist/src/planner/nodes/project-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/project-node.js +82 -2
- package/dist/src/planner/nodes/project-node.js.map +1 -1
- package/dist/src/planner/nodes/recursive-cte-node.d.ts +2 -2
- package/dist/src/planner/nodes/recursive-cte-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/recursive-cte-node.js +1 -1
- package/dist/src/planner/nodes/recursive-cte-node.js.map +1 -1
- package/dist/src/planner/nodes/reference.d.ts +13 -4
- package/dist/src/planner/nodes/reference.d.ts.map +1 -1
- package/dist/src/planner/nodes/reference.js +16 -0
- package/dist/src/planner/nodes/reference.js.map +1 -1
- package/dist/src/planner/nodes/remote-query-node.d.ts +37 -0
- package/dist/src/planner/nodes/remote-query-node.d.ts.map +1 -0
- package/dist/src/planner/nodes/remote-query-node.js +63 -0
- package/dist/src/planner/nodes/remote-query-node.js.map +1 -0
- package/dist/src/planner/nodes/retrieve-node.d.ts +46 -0
- package/dist/src/planner/nodes/retrieve-node.d.ts.map +1 -0
- package/dist/src/planner/nodes/retrieve-node.js +77 -0
- package/dist/src/planner/nodes/retrieve-node.js.map +1 -0
- package/dist/src/planner/nodes/returning-node.d.ts +4 -3
- package/dist/src/planner/nodes/returning-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/returning-node.js +44 -3
- package/dist/src/planner/nodes/returning-node.js.map +1 -1
- package/dist/src/planner/nodes/sequencing-node.d.ts +1 -1
- package/dist/src/planner/nodes/sequencing-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/sequencing-node.js.map +1 -1
- package/dist/src/planner/nodes/set-operation-node.d.ts +1 -1
- package/dist/src/planner/nodes/set-operation-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/set-operation-node.js.map +1 -1
- package/dist/src/planner/nodes/sort.d.ts +11 -2
- package/dist/src/planner/nodes/sort.d.ts.map +1 -1
- package/dist/src/planner/nodes/sort.js +23 -2
- package/dist/src/planner/nodes/sort.js.map +1 -1
- package/dist/src/planner/nodes/stream-aggregate.d.ts.map +1 -1
- package/dist/src/planner/nodes/stream-aggregate.js +4 -1
- package/dist/src/planner/nodes/stream-aggregate.js.map +1 -1
- package/dist/src/planner/nodes/table-access-nodes.d.ts +7 -1
- package/dist/src/planner/nodes/table-access-nodes.d.ts.map +1 -1
- package/dist/src/planner/nodes/table-access-nodes.js +22 -4
- package/dist/src/planner/nodes/table-access-nodes.js.map +1 -1
- package/dist/src/planner/nodes/table-function-call.d.ts +2 -1
- package/dist/src/planner/nodes/table-function-call.d.ts.map +1 -1
- package/dist/src/planner/nodes/table-function-call.js +12 -5
- package/dist/src/planner/nodes/table-function-call.js.map +1 -1
- package/dist/src/planner/nodes/transaction-node.js +2 -2
- package/dist/src/planner/nodes/transaction-node.js.map +1 -1
- package/dist/src/planner/nodes/update-node.d.ts +7 -1
- package/dist/src/planner/nodes/update-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/update-node.js +11 -2
- package/dist/src/planner/nodes/update-node.js.map +1 -1
- package/dist/src/planner/nodes/view-reference-node.js.map +1 -1
- package/dist/src/planner/nodes/window-function.js.map +1 -1
- package/dist/src/planner/nodes/window-node.js.map +1 -1
- package/dist/src/planner/optimizer-tuning.d.ts +11 -0
- package/dist/src/planner/optimizer-tuning.d.ts.map +1 -1
- package/dist/src/planner/optimizer-tuning.js +6 -0
- package/dist/src/planner/optimizer-tuning.js.map +1 -1
- package/dist/src/planner/optimizer.d.ts +17 -3
- package/dist/src/planner/optimizer.d.ts.map +1 -1
- package/dist/src/planner/optimizer.js +159 -67
- package/dist/src/planner/optimizer.js.map +1 -1
- package/dist/src/planner/planning-context.d.ts +5 -3
- package/dist/src/planner/planning-context.d.ts.map +1 -1
- package/dist/src/planner/planning-context.js +2 -0
- package/dist/src/planner/planning-context.js.map +1 -1
- package/dist/src/planner/resolve.d.ts +3 -2
- package/dist/src/planner/resolve.d.ts.map +1 -1
- package/dist/src/planner/resolve.js +6 -5
- package/dist/src/planner/resolve.js.map +1 -1
- package/dist/src/planner/rules/access/rule-select-access-path.d.ts +8 -3
- 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 +206 -47
- package/dist/src/planner/rules/access/rule-select-access-path.js.map +1 -1
- package/dist/src/planner/rules/aggregate/rule-aggregate-streaming.d.ts +10 -3
- package/dist/src/planner/rules/aggregate/rule-aggregate-streaming.d.ts.map +1 -1
- package/dist/src/planner/rules/aggregate/rule-aggregate-streaming.js +95 -87
- package/dist/src/planner/rules/aggregate/rule-aggregate-streaming.js.map +1 -1
- package/dist/src/planner/rules/cache/rule-cte-optimization.d.ts +8 -2
- package/dist/src/planner/rules/cache/rule-cte-optimization.d.ts.map +1 -1
- package/dist/src/planner/rules/cache/rule-cte-optimization.js +24 -13
- package/dist/src/planner/rules/cache/rule-cte-optimization.js.map +1 -1
- package/dist/src/planner/rules/cache/rule-materialization-advisory.d.ts +9 -2
- package/dist/src/planner/rules/cache/rule-materialization-advisory.d.ts.map +1 -1
- package/dist/src/planner/rules/cache/rule-materialization-advisory.js +14 -7
- package/dist/src/planner/rules/cache/rule-materialization-advisory.js.map +1 -1
- package/dist/src/planner/rules/cache/rule-mutating-subquery-cache.d.ts +9 -3
- package/dist/src/planner/rules/cache/rule-mutating-subquery-cache.d.ts.map +1 -1
- package/dist/src/planner/rules/cache/rule-mutating-subquery-cache.js +34 -37
- package/dist/src/planner/rules/cache/rule-mutating-subquery-cache.js.map +1 -1
- package/dist/src/planner/rules/join/rule-join-greedy-commute.d.ts +14 -0
- package/dist/src/planner/rules/join/rule-join-greedy-commute.d.ts.map +1 -0
- package/dist/src/planner/rules/join/rule-join-greedy-commute.js +33 -0
- package/dist/src/planner/rules/join/rule-join-greedy-commute.js.map +1 -0
- package/dist/src/planner/rules/join/rule-join-key-inference.d.ts +11 -0
- package/dist/src/planner/rules/join/rule-join-key-inference.d.ts.map +1 -0
- package/dist/src/planner/rules/join/rule-join-key-inference.js +32 -0
- package/dist/src/planner/rules/join/rule-join-key-inference.js.map +1 -0
- package/dist/src/planner/rules/join/rule-quickpick-enumeration.d.ts +4 -0
- package/dist/src/planner/rules/join/rule-quickpick-enumeration.d.ts.map +1 -0
- package/dist/src/planner/rules/join/rule-quickpick-enumeration.js +233 -0
- package/dist/src/planner/rules/join/rule-quickpick-enumeration.js.map +1 -0
- package/dist/src/planner/rules/predicate/rule-predicate-pushdown.d.ts +21 -0
- package/dist/src/planner/rules/predicate/rule-predicate-pushdown.d.ts.map +1 -0
- package/dist/src/planner/rules/predicate/rule-predicate-pushdown.js +125 -0
- package/dist/src/planner/rules/predicate/rule-predicate-pushdown.js.map +1 -0
- package/dist/src/planner/rules/retrieve/rule-grow-retrieve.d.ts +21 -0
- package/dist/src/planner/rules/retrieve/rule-grow-retrieve.d.ts.map +1 -0
- package/dist/src/planner/rules/retrieve/rule-grow-retrieve.js +261 -0
- package/dist/src/planner/rules/retrieve/rule-grow-retrieve.js.map +1 -0
- package/dist/src/planner/scopes/registered.d.ts +1 -0
- package/dist/src/planner/scopes/registered.d.ts.map +1 -1
- package/dist/src/planner/scopes/registered.js +7 -0
- package/dist/src/planner/scopes/registered.js.map +1 -1
- package/dist/src/planner/stats/index.d.ts +0 -17
- package/dist/src/planner/stats/index.d.ts.map +1 -1
- package/dist/src/planner/stats/index.js +0 -58
- package/dist/src/planner/stats/index.js.map +1 -1
- package/dist/src/planner/util/deferred-constraint.d.ts +14 -0
- package/dist/src/planner/util/deferred-constraint.d.ts.map +1 -0
- package/dist/src/planner/util/deferred-constraint.js +85 -0
- package/dist/src/planner/util/deferred-constraint.js.map +1 -0
- package/dist/src/planner/util/key-utils.d.ts +15 -0
- package/dist/src/planner/util/key-utils.d.ts.map +1 -0
- package/dist/src/planner/util/key-utils.js +43 -0
- package/dist/src/planner/util/key-utils.js.map +1 -0
- package/dist/src/planner/validation/plan-validator.d.ts.map +1 -1
- package/dist/src/planner/validation/plan-validator.js +1 -0
- package/dist/src/planner/validation/plan-validator.js.map +1 -1
- package/dist/src/runtime/deferred-constraint-queue.d.ts +33 -0
- package/dist/src/runtime/deferred-constraint-queue.d.ts.map +1 -0
- package/dist/src/runtime/deferred-constraint-queue.js +172 -0
- package/dist/src/runtime/deferred-constraint-queue.js.map +1 -0
- package/dist/src/runtime/emission-context.d.ts +9 -3
- package/dist/src/runtime/emission-context.d.ts.map +1 -1
- package/dist/src/runtime/emission-context.js +5 -1
- 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 +22 -4
- 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 +3 -2
- package/dist/src/runtime/emit/aggregate.js.map +1 -1
- package/dist/src/runtime/emit/array-index.js.map +1 -1
- package/dist/src/runtime/emit/binary.d.ts.map +1 -1
- package/dist/src/runtime/emit/binary.js +9 -2
- package/dist/src/runtime/emit/binary.js.map +1 -1
- package/dist/src/runtime/emit/cache.d.ts.map +1 -1
- package/dist/src/runtime/emit/cache.js +1 -1
- package/dist/src/runtime/emit/cache.js.map +1 -1
- package/dist/src/runtime/emit/cast.d.ts.map +1 -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 +112 -25
- package/dist/src/runtime/emit/constraint-check.js.map +1 -1
- package/dist/src/runtime/emit/create-assertion.d.ts +5 -0
- package/dist/src/runtime/emit/create-assertion.d.ts.map +1 -0
- package/dist/src/runtime/emit/create-assertion.js +70 -0
- package/dist/src/runtime/emit/create-assertion.js.map +1 -0
- package/dist/src/runtime/emit/cte-reference.d.ts.map +1 -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.map +1 -1
- package/dist/src/runtime/emit/distinct.d.ts.map +1 -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 +17 -9
- package/dist/src/runtime/emit/dml-executor.js.map +1 -1
- package/dist/src/runtime/emit/drop-assertion.d.ts +5 -0
- package/dist/src/runtime/emit/drop-assertion.d.ts.map +1 -0
- package/dist/src/runtime/emit/drop-assertion.js +30 -0
- package/dist/src/runtime/emit/drop-assertion.js.map +1 -0
- package/dist/src/runtime/emit/filter.d.ts.map +1 -1
- package/dist/src/runtime/emit/filter.js.map +1 -1
- package/dist/src/runtime/emit/join.d.ts.map +1 -1
- 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.map +1 -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.map +1 -1
- package/dist/src/runtime/emit/recursive-cte.d.ts.map +1 -1
- package/dist/src/runtime/emit/recursive-cte.js +1 -1
- package/dist/src/runtime/emit/recursive-cte.js.map +1 -1
- package/dist/src/runtime/emit/remote-query.d.ts +9 -0
- package/dist/src/runtime/emit/remote-query.d.ts.map +1 -0
- package/dist/src/runtime/emit/remote-query.js +30 -0
- package/dist/src/runtime/emit/remote-query.js.map +1 -0
- package/dist/src/runtime/emit/retrieve.d.ts +5 -0
- package/dist/src/runtime/emit/retrieve.d.ts.map +1 -0
- package/dist/src/runtime/emit/retrieve.js +9 -0
- package/dist/src/runtime/emit/retrieve.js.map +1 -0
- package/dist/src/runtime/emit/returning.d.ts.map +1 -1
- package/dist/src/runtime/emit/returning.js +1 -1
- 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.map +1 -1
- package/dist/src/runtime/emit/scan.d.ts.map +1 -1
- package/dist/src/runtime/emit/scan.js +20 -5
- package/dist/src/runtime/emit/scan.js.map +1 -1
- package/dist/src/runtime/emit/schema-declarative.d.ts +8 -0
- package/dist/src/runtime/emit/schema-declarative.d.ts.map +1 -0
- package/dist/src/runtime/emit/schema-declarative.js +163 -0
- package/dist/src/runtime/emit/schema-declarative.js.map +1 -0
- package/dist/src/runtime/emit/sequencing.d.ts.map +1 -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 -6
- package/dist/src/runtime/emit/set-operation.js.map +1 -1
- package/dist/src/runtime/emit/sort.d.ts.map +1 -1
- package/dist/src/runtime/emit/sort.js.map +1 -1
- package/dist/src/runtime/emit/subquery.d.ts +1 -1
- package/dist/src/runtime/emit/subquery.d.ts.map +1 -1
- package/dist/src/runtime/emit/subquery.js +6 -6
- package/dist/src/runtime/emit/subquery.js.map +1 -1
- package/dist/src/runtime/emit/transaction.d.ts.map +1 -1
- package/dist/src/runtime/emit/transaction.js +48 -8
- package/dist/src/runtime/emit/transaction.js.map +1 -1
- package/dist/src/runtime/emit/values.d.ts.map +1 -1
- package/dist/src/runtime/emit/values.js.map +1 -1
- package/dist/src/runtime/emit/window.d.ts.map +1 -1
- package/dist/src/runtime/emit/window.js.map +1 -1
- package/dist/src/runtime/emitters.d.ts.map +1 -1
- package/dist/src/runtime/emitters.js +1 -0
- package/dist/src/runtime/emitters.js.map +1 -1
- package/dist/src/runtime/register.d.ts.map +1 -1
- package/dist/src/runtime/register.js +16 -2
- package/dist/src/runtime/register.js.map +1 -1
- package/dist/src/runtime/scheduler.js.map +1 -1
- package/dist/src/runtime/types.d.ts +2 -2
- package/dist/src/runtime/types.d.ts.map +1 -1
- package/dist/src/runtime/types.js +4 -1
- package/dist/src/runtime/types.js.map +1 -1
- package/dist/src/runtime/utils.d.ts +2 -2
- package/dist/src/runtime/utils.d.ts.map +1 -1
- package/dist/src/runtime/utils.js +1 -0
- package/dist/src/runtime/utils.js.map +1 -1
- package/dist/src/schema/assertion.d.ts +19 -0
- package/dist/src/schema/assertion.d.ts.map +1 -0
- package/dist/src/schema/assertion.js +2 -0
- package/dist/src/schema/assertion.js.map +1 -0
- package/dist/src/schema/catalog.d.ts +44 -0
- package/dist/src/schema/catalog.d.ts.map +1 -0
- package/dist/src/schema/catalog.js +148 -0
- package/dist/src/schema/catalog.js.map +1 -0
- package/dist/src/schema/change-events.d.ts +2 -2
- package/dist/src/schema/change-events.d.ts.map +1 -1
- package/dist/src/schema/column.d.ts +2 -0
- package/dist/src/schema/column.d.ts.map +1 -1
- package/dist/src/schema/column.js.map +1 -1
- package/dist/src/schema/declared-schema-manager.d.ts +42 -0
- package/dist/src/schema/declared-schema-manager.d.ts.map +1 -0
- package/dist/src/schema/declared-schema-manager.js +71 -0
- package/dist/src/schema/declared-schema-manager.js.map +1 -0
- package/dist/src/schema/function.d.ts +3 -2
- package/dist/src/schema/function.d.ts.map +1 -1
- package/dist/src/schema/function.js.map +1 -1
- package/dist/src/schema/manager.d.ts +8 -3
- package/dist/src/schema/manager.d.ts.map +1 -1
- package/dist/src/schema/manager.js +32 -3
- package/dist/src/schema/manager.js.map +1 -1
- package/dist/src/schema/schema-differ.d.ts +34 -0
- package/dist/src/schema/schema-differ.d.ts.map +1 -0
- package/dist/src/schema/schema-differ.js +157 -0
- package/dist/src/schema/schema-differ.js.map +1 -0
- package/dist/src/schema/schema-hasher.d.ts +10 -0
- package/dist/src/schema/schema-hasher.d.ts.map +1 -0
- package/dist/src/schema/schema-hasher.js +39 -0
- package/dist/src/schema/schema-hasher.js.map +1 -0
- package/dist/src/schema/schema.d.ts +7 -0
- package/dist/src/schema/schema.d.ts.map +1 -1
- package/dist/src/schema/schema.js +19 -0
- package/dist/src/schema/schema.js.map +1 -1
- package/dist/src/schema/table.d.ts +31 -6
- package/dist/src/schema/table.d.ts.map +1 -1
- package/dist/src/schema/table.js +27 -12
- package/dist/src/schema/table.js.map +1 -1
- package/dist/src/schema/window-function.d.ts.map +1 -1
- package/dist/src/schema/window-function.js.map +1 -1
- package/dist/src/util/ast-stringify.d.ts.map +1 -1
- package/dist/src/util/ast-stringify.js +116 -3
- package/dist/src/util/ast-stringify.js.map +1 -1
- package/dist/src/util/environment.js.map +1 -1
- package/dist/src/util/plugin-loader.d.ts +25 -0
- package/dist/src/util/plugin-loader.d.ts.map +1 -1
- package/dist/src/util/plugin-loader.js +137 -0
- package/dist/src/util/plugin-loader.js.map +1 -1
- package/dist/src/util/row-descriptor.d.ts +1 -1
- package/dist/src/util/row-descriptor.d.ts.map +1 -1
- package/dist/src/util/row-descriptor.js.map +1 -1
- package/dist/src/util/serialization.d.ts +3 -0
- package/dist/src/util/serialization.d.ts.map +1 -1
- package/dist/src/util/serialization.js +1 -0
- package/dist/src/util/serialization.js.map +1 -1
- package/dist/src/vtab/best-access-plan.d.ts +1 -1
- package/dist/src/vtab/best-access-plan.d.ts.map +1 -1
- package/dist/src/vtab/best-access-plan.js +1 -0
- package/dist/src/vtab/best-access-plan.js.map +1 -1
- package/dist/src/vtab/manifest.d.ts.map +1 -1
- package/dist/src/vtab/memory/layer/base.d.ts.map +1 -1
- package/dist/src/vtab/memory/layer/base.js +2 -0
- package/dist/src/vtab/memory/layer/base.js.map +1 -1
- package/dist/src/vtab/memory/layer/manager.d.ts +2 -1
- package/dist/src/vtab/memory/layer/manager.d.ts.map +1 -1
- package/dist/src/vtab/memory/layer/manager.js +24 -6
- package/dist/src/vtab/memory/layer/manager.js.map +1 -1
- package/dist/src/vtab/memory/layer/safe-iterate.d.ts.map +1 -1
- package/dist/src/vtab/memory/layer/safe-iterate.js.map +1 -1
- package/dist/src/vtab/memory/module.d.ts.map +1 -1
- package/dist/src/vtab/memory/module.js +5 -0
- package/dist/src/vtab/memory/module.js.map +1 -1
- package/dist/src/vtab/memory/table.d.ts +2 -1
- package/dist/src/vtab/memory/table.d.ts.map +1 -1
- package/dist/src/vtab/memory/table.js +3 -2
- package/dist/src/vtab/memory/table.js.map +1 -1
- package/dist/src/vtab/memory/utils/logging.d.ts +2 -2
- package/dist/src/vtab/memory/utils/logging.d.ts.map +1 -1
- package/dist/src/vtab/memory/utils/logging.js +6 -3
- package/dist/src/vtab/memory/utils/logging.js.map +1 -1
- package/dist/src/vtab/module.d.ts +25 -0
- package/dist/src/vtab/module.d.ts.map +1 -1
- package/dist/src/vtab/table.d.ts +18 -5
- package/dist/src/vtab/table.d.ts.map +1 -1
- package/dist/src/vtab/table.js.map +1 -1
- package/package.json +5 -3
- package/src/common/errors.ts +1 -1
- package/src/common/json-types.ts +16 -0
- package/src/common/types.ts +3 -0
- package/src/core/database-options.ts +8 -8
- package/src/core/database.ts +537 -71
- package/src/core/statement.ts +3 -1
- package/src/func/builtins/builtin-window-functions.ts +11 -10
- package/src/func/builtins/datetime.ts +42 -0
- package/src/func/builtins/explain.ts +186 -44
- package/src/func/builtins/index.ts +5 -2
- package/src/func/builtins/json-helpers.ts +21 -21
- package/src/func/builtins/json-tvf.ts +8 -9
- package/src/func/builtins/json.ts +10 -9
- package/src/func/builtins/schema.ts +24 -4
- package/src/func/context.ts +7 -0
- package/src/func/registration.ts +5 -1
- package/src/index.ts +3 -3
- package/src/parser/ast.ts +582 -484
- package/src/parser/lexer.ts +27 -21
- package/src/parser/parser.ts +3336 -2776
- package/src/parser/visitor.ts +1 -0
- package/src/planner/analysis/binding-collector.ts +83 -0
- package/src/planner/analysis/const-evaluator.ts +1 -1
- package/src/planner/analysis/const-pass.ts +3 -2
- package/src/planner/analysis/constraint-extractor.ts +610 -123
- package/src/planner/analysis/predicate-normalizer.ts +237 -0
- package/src/planner/building/alter-table.ts +3 -1
- package/src/planner/building/block.ts +93 -78
- package/src/planner/building/constraint-builder.ts +173 -114
- package/src/planner/building/create-assertion.ts +7 -0
- package/src/planner/building/declare-schema.ts +22 -0
- package/src/planner/building/delete.ts +214 -171
- package/src/planner/building/drop-assertion.ts +11 -0
- package/src/planner/building/expression.ts +1 -0
- package/src/planner/building/function-call.ts +6 -5
- package/src/planner/building/insert.ts +428 -349
- package/src/planner/building/pragma.ts +1 -0
- package/src/planner/building/schema-resolution.ts +176 -176
- package/src/planner/building/select-aggregates.ts +5 -3
- package/src/planner/building/select-compound.ts +22 -13
- package/src/planner/building/select-context.ts +6 -6
- package/src/planner/building/select-modifiers.ts +8 -7
- package/src/planner/building/select-projections.ts +177 -176
- package/src/planner/building/select-window.ts +259 -253
- package/src/planner/building/select.ts +531 -520
- package/src/planner/building/table-function.ts +49 -48
- package/src/planner/building/table.ts +9 -3
- package/src/planner/building/update.ts +319 -270
- package/src/planner/building/with.ts +7 -7
- package/src/planner/debug.ts +1 -0
- package/src/planner/framework/characteristics.ts +503 -0
- package/src/planner/framework/context.ts +23 -6
- package/src/planner/framework/pass.ts +354 -0
- package/src/planner/nodes/aggregate-node.ts +52 -7
- package/src/planner/nodes/array-index-node.ts +1 -1
- package/src/planner/nodes/cache-node.ts +11 -2
- package/src/planner/nodes/constraint-check-node.ts +16 -7
- package/src/planner/nodes/create-assertion-node.ts +51 -0
- package/src/planner/nodes/create-index-node.ts +2 -2
- package/src/planner/nodes/create-table-node.ts +2 -2
- package/src/planner/nodes/cte-node.ts +30 -4
- package/src/planner/nodes/cte-reference-node.ts +2 -2
- package/src/planner/nodes/declarative-schema.ts +221 -0
- package/src/planner/nodes/delete-node.ts +102 -96
- package/src/planner/nodes/distinct-node.ts +20 -6
- package/src/planner/nodes/dml-executor-node.ts +2 -2
- package/src/planner/nodes/drop-assertion-node.ts +50 -0
- package/src/planner/nodes/drop-table-node.ts +1 -0
- package/src/planner/nodes/filter.ts +56 -3
- package/src/planner/nodes/insert-node.ts +126 -120
- package/src/planner/nodes/internal-recursive-cte-ref-node.ts +5 -20
- package/src/planner/nodes/join-node.ts +122 -4
- package/src/planner/nodes/limit-offset.ts +132 -113
- package/src/planner/nodes/plan-node-type.ts +95 -87
- package/src/planner/nodes/plan-node.ts +8 -8
- package/src/planner/nodes/pragma.ts +6 -3
- package/src/planner/nodes/project-node.ts +101 -7
- package/src/planner/nodes/recursive-cte-node.ts +6 -6
- package/src/planner/nodes/reference.ts +334 -312
- package/src/planner/nodes/remote-query-node.ts +73 -0
- package/src/planner/nodes/retrieve-node.ts +86 -0
- package/src/planner/nodes/returning-node.ts +52 -10
- package/src/planner/nodes/sequencing-node.ts +2 -2
- package/src/planner/nodes/set-operation-node.ts +3 -3
- package/src/planner/nodes/sort.ts +33 -4
- package/src/planner/nodes/stream-aggregate.ts +5 -1
- package/src/planner/nodes/table-access-nodes.ts +31 -6
- package/src/planner/nodes/table-function-call.ts +134 -127
- package/src/planner/nodes/transaction-node.ts +2 -2
- package/src/planner/nodes/update-node.ts +138 -132
- package/src/planner/nodes/view-reference-node.ts +1 -1
- package/src/planner/nodes/window-function.ts +2 -2
- package/src/planner/nodes/window-node.ts +1 -1
- package/src/planner/optimizer-tuning.ts +18 -0
- package/src/planner/optimizer.ts +171 -96
- package/src/planner/planning-context.ts +10 -3
- package/src/planner/resolve.ts +10 -9
- package/src/planner/rules/README.md +96 -96
- package/src/planner/rules/access/rule-select-access-path.ts +384 -184
- package/src/planner/rules/aggregate/rule-aggregate-streaming.ts +118 -104
- package/src/planner/rules/cache/rule-cte-optimization.ts +29 -16
- package/src/planner/rules/cache/rule-materialization-advisory.ts +14 -7
- package/src/planner/rules/cache/rule-mutating-subquery-cache.ts +38 -44
- package/src/planner/rules/join/rule-join-greedy-commute.ts +48 -0
- package/src/planner/rules/join/rule-join-key-inference.ts +35 -0
- package/src/planner/rules/join/rule-quickpick-enumeration.ts +267 -0
- package/src/planner/rules/predicate/rule-predicate-pushdown.ts +144 -0
- package/src/planner/rules/retrieve/rule-grow-retrieve.ts +337 -0
- package/src/planner/scopes/registered.ts +8 -0
- package/src/planner/stats/index.ts +0 -65
- package/src/planner/util/key-utils.ts +46 -0
- package/src/planner/validation/plan-validator.ts +5 -3
- package/src/runtime/deferred-constraint-queue.ts +196 -0
- package/src/runtime/emission-context.ts +11 -5
- package/src/runtime/emit/add-constraint.ts +26 -5
- package/src/runtime/emit/aggregate.ts +9 -7
- package/src/runtime/emit/array-index.ts +2 -2
- package/src/runtime/emit/binary.ts +26 -8
- package/src/runtime/emit/cache.ts +2 -2
- package/src/runtime/emit/cast.ts +2 -2
- package/src/runtime/emit/constraint-check.ts +150 -28
- package/src/runtime/emit/create-assertion.ts +82 -0
- package/src/runtime/emit/cte-reference.ts +2 -2
- package/src/runtime/emit/cte.ts +2 -2
- package/src/runtime/emit/distinct.ts +2 -2
- package/src/runtime/emit/dml-executor.ts +20 -12
- package/src/runtime/emit/drop-assertion.ts +45 -0
- package/src/runtime/emit/filter.ts +4 -4
- package/src/runtime/emit/join.ts +8 -7
- package/src/runtime/emit/limit-offset.ts +2 -2
- package/src/runtime/emit/pragma.ts +2 -2
- package/src/runtime/emit/project.ts +2 -2
- package/src/runtime/emit/recursive-cte.ts +2 -2
- package/src/runtime/emit/remote-query.ts +47 -0
- package/src/runtime/emit/retrieve.ts +15 -0
- package/src/runtime/emit/returning.ts +4 -4
- package/src/runtime/emit/scalar-function.ts +2 -2
- package/src/runtime/emit/scan.ts +29 -13
- package/src/runtime/emit/schema-declarative.ts +205 -0
- package/src/runtime/emit/sequencing.ts +3 -3
- package/src/runtime/emit/set-operation.ts +7 -7
- package/src/runtime/emit/sort.ts +2 -2
- package/src/runtime/emit/subquery.ts +10 -10
- package/src/runtime/emit/transaction.ts +46 -8
- package/src/runtime/emit/values.ts +2 -2
- package/src/runtime/emit/window.ts +3 -3
- package/src/runtime/emitters.ts +1 -0
- package/src/runtime/register.ts +150 -135
- package/src/runtime/scheduler.ts +2 -2
- package/src/runtime/types.ts +10 -7
- package/src/runtime/utils.ts +3 -2
- package/src/schema/assertion.ts +21 -0
- package/src/schema/catalog.ts +208 -0
- package/src/schema/change-events.ts +2 -2
- package/src/schema/column.ts +2 -0
- package/src/schema/declared-schema-manager.ts +82 -0
- package/src/schema/function.ts +5 -2
- package/src/schema/manager.ts +742 -709
- package/src/schema/schema-differ.ts +214 -0
- package/src/schema/schema-hasher.ts +44 -0
- package/src/schema/schema.ts +23 -0
- package/src/schema/table.ts +398 -364
- package/src/schema/window-function.ts +2 -0
- package/src/util/ast-stringify.ts +869 -764
- package/src/util/environment.ts +2 -2
- package/src/util/plugin-loader.ts +184 -0
- package/src/util/row-descriptor.ts +1 -1
- package/src/util/serialization.ts +2 -0
- package/src/vtab/best-access-plan.ts +2 -1
- package/src/vtab/manifest.ts +1 -0
- package/src/vtab/memory/index.ts +178 -178
- package/src/vtab/memory/layer/base.ts +275 -273
- package/src/vtab/memory/layer/interface.ts +47 -47
- package/src/vtab/memory/layer/manager.ts +33 -11
- package/src/vtab/memory/layer/safe-iterate.ts +3 -3
- package/src/vtab/memory/layer/transaction.ts +229 -229
- package/src/vtab/memory/module.ts +24 -18
- package/src/vtab/memory/table.ts +256 -253
- package/src/vtab/memory/utils/logging.ts +6 -3
- package/src/vtab/module.ts +170 -140
- package/src/vtab/table.ts +162 -143
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"optimizer.js","sourceRoot":"","sources":["../../../src/planner/optimizer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAmB,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAExE,4BAA4B;AAC5B,OAAO,EAAE,cAAc,EAAE,CAAC;AAE1B,OAAO,EAAE,UAAU,EAAE,
|
|
1
|
+
{"version":3,"file":"optimizer.js","sourceRoot":"","sources":["../../../src/planner/optimizer.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,8 +2,8 @@ import type { SqlParameters } from '../common/types.js';
|
|
|
2
2
|
import type { Database } from '../core/database.js';
|
|
3
3
|
import type { SchemaManager } from '../schema/manager.js';
|
|
4
4
|
import type { Scope } from './scopes/scope.js';
|
|
5
|
-
import type { ScalarPlanNode } from './nodes/plan-node.js';
|
|
6
|
-
import type {
|
|
5
|
+
import type { PlanNode, ScalarPlanNode } from './nodes/plan-node.js';
|
|
6
|
+
import type { CTEScopeNode } from './nodes/cte-node.js';
|
|
7
7
|
import type { CTEReferenceNode } from './nodes/cte-reference-node.js';
|
|
8
8
|
/**
|
|
9
9
|
* Debug options for query planning and execution.
|
|
@@ -106,7 +106,7 @@ export interface PlanningContext {
|
|
|
106
106
|
* This map contains all CTEs from the current WITH clause and any parent WITH clauses,
|
|
107
107
|
* allowing subqueries in expressions to resolve CTE references correctly.
|
|
108
108
|
*/
|
|
109
|
-
readonly cteNodes?: Map<string,
|
|
109
|
+
readonly cteNodes?: Map<string, CTEScopeNode>;
|
|
110
110
|
/**
|
|
111
111
|
* Schema dependency tracker for this planning session.
|
|
112
112
|
*/
|
|
@@ -120,5 +120,7 @@ export interface PlanningContext {
|
|
|
120
120
|
* to the same CTE with the same alias. Key format: "cteName:alias"
|
|
121
121
|
*/
|
|
122
122
|
cteReferenceCache?: Map<string, CTEReferenceNode>;
|
|
123
|
+
/** maps a RelationalPlanNode to its column scope during building */
|
|
124
|
+
readonly outputScopes: Map<PlanNode, Scope>;
|
|
123
125
|
}
|
|
124
126
|
//# sourceMappingURL=planning-context.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"planning-context.d.ts","sourceRoot":"","sources":["../../../src/planner/planning-context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"planning-context.d.ts","sourceRoot":"","sources":["../../../src/planner/planning-context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAEtE;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,+DAA+D;IAC/D,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,uCAAuC;IACvC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,wCAAwC;IACxC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,kDAAkD;IAElD,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CACpC;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAChC,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,UAAU,GAAG,aAAa,GAAG,WAAW,CAAC;IAClE,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;CAChC;AAED;;GAEG;AACH,qBAAa,0BAA0B;IACtC,OAAO,CAAC,YAAY,CAAqB;IAEzC,OAAO,CAAC,eAAe,CAAmC;IAC1D,OAAO,CAAC,qBAAqB,CAAyB;IAEtD;;OAEG;IAEH,gBAAgB,CAAC,GAAG,EAAE,gBAAgB,EAAE,MAAM,EAAE,GAAG,GAAG,IAAI;IAM1D;;OAEG;IACH,uBAAuB,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI;IAKzD;;OAEG;IACH,cAAc,IAAI,OAAO;IAUzB;;OAEG;IACH,eAAe,IAAI,gBAAgB,EAAE;IAIrC;;OAEG;IACH,kBAAkB,IAAI,OAAO;IAI7B;;OAEG;IACH,kBAAkB,IAAI,IAAI;IAU1B,OAAO,CAAC,aAAa;IAMrB,OAAO,CAAC,kBAAkB;CAS1B;AAED;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC;IAEtB;;OAEG;IACH,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;IAEtC;;;;OAIG;IACH,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IAEvB;;OAEG;IACH,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAC;IAElC;;OAEG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,YAAY,CAAC;IAE9B;;;;OAIG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC;QAC1B,UAAU,EAAE,cAAc,CAAC;QAC3B,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,EAAE,MAAM,CAAC;QACpB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC,CAAC;IAEH;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAE9C;;OAEG;IACH,QAAQ,CAAC,kBAAkB,EAAE,0BAA0B,CAAC;IAExD;;OAEG;IAEH,QAAQ,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAEvC;;;OAGG;IACH,iBAAiB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAElD,oEAAoE;IACpE,QAAQ,CAAC,YAAY,EAAE,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;CAC7C"}
|
|
@@ -3,11 +3,13 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export class BuildTimeDependencyTracker {
|
|
5
5
|
dependencies = new Set();
|
|
6
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
6
7
|
resolvedObjects = new Map();
|
|
7
8
|
invalidationCallbacks = new Set();
|
|
8
9
|
/**
|
|
9
10
|
* Records a dependency on a schema object and stores a weak reference to it.
|
|
10
11
|
*/
|
|
12
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
11
13
|
recordDependency(dep, object) {
|
|
12
14
|
const key = this.dependencyKey(dep);
|
|
13
15
|
this.dependencies.add(key);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"planning-context.js","sourceRoot":"","sources":["../../../src/planner/planning-context.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"planning-context.js","sourceRoot":"","sources":["../../../src/planner/planning-context.ts"],"names":[],"mappings":"AAkCA;;GAEG;AACH,MAAM,OAAO,0BAA0B;IAC9B,YAAY,GAAG,IAAI,GAAG,EAAU,CAAC;IACzC,8DAA8D;IACtD,eAAe,GAAG,IAAI,GAAG,EAAwB,CAAC;IAClD,qBAAqB,GAAG,IAAI,GAAG,EAAc,CAAC;IAEtD;;OAEG;IACH,8DAA8D;IAC9D,gBAAgB,CAAC,GAAqB,EAAE,MAAW;QAClD,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QACpC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC3B,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IACpD,CAAC;IAED;;OAEG;IACH,uBAAuB,CAAC,QAAoB;QAC3C,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACzC,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC1D,CAAC;IAED;;OAEG;IACH,cAAc;QACb,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,EAAE,CAAC;YAC9D,IAAI,OAAO,CAAC,KAAK,EAAE,KAAK,SAAS,EAAE,CAAC;gBACnC,sDAAsD;gBACtD,OAAO,KAAK,CAAC;YACd,CAAC;QACF,CAAC;QACD,OAAO,IAAI,CAAC;IACb,CAAC;IAED;;OAEG;IACH,eAAe;QACd,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/E,CAAC;IAED;;OAEG;IACH,kBAAkB;QACjB,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,kBAAkB;QACjB,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,qBAAqB,EAAE,CAAC;YACnD,IAAI,CAAC;gBACJ,QAAQ,EAAE,CAAC;YACZ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAChB,OAAO,CAAC,KAAK,CAAC,wCAAwC,EAAE,KAAK,CAAC,CAAC;YAChE,CAAC;QACF,CAAC;IACF,CAAC;IAEO,aAAa,CAAC,GAAqB;QAC1C,MAAM,MAAM,GAAG,GAAG,CAAC,UAAU,IAAI,EAAE,CAAC;QACpC,MAAM,OAAO,GAAG,GAAG,CAAC,aAAa,IAAI,CAAC,CAAC;QACvC,OAAO,GAAG,GAAG,CAAC,IAAI,IAAI,MAAM,IAAI,GAAG,CAAC,UAAU,IAAI,OAAO,EAAE,CAAC;IAC7D,CAAC;IAEO,kBAAkB,CAAC,GAAW;QACrC,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAClE,OAAO;YACN,IAAI,EAAE,IAAgC;YACtC,UAAU,EAAE,UAAU,IAAI,SAAS;YACnC,UAAU;YACV,aAAa,EAAE,QAAQ,CAAC,UAAU,CAAC,IAAI,SAAS;SAChD,CAAC;IACH,CAAC;CACD"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { Ambiguous, type Scope } from "./scopes/scope.js";
|
|
2
2
|
import * as AST from "../parser/ast.js";
|
|
3
|
-
import {
|
|
3
|
+
import { FunctionReferenceNode, ParameterReferenceNode, TableReferenceNode } from "./nodes/reference.js";
|
|
4
|
+
import { type ScalarPlanNode } from "./nodes/plan-node.js";
|
|
4
5
|
export declare function resolveTable(scope: Scope, exp: AST.IdentifierExpr, selectedSchema?: string): TableReferenceNode | typeof Ambiguous | undefined;
|
|
5
|
-
export declare function resolveColumn(scope: Scope, exp: AST.ColumnExpr, selectedSchema?: string):
|
|
6
|
+
export declare function resolveColumn(scope: Scope, exp: AST.ColumnExpr, selectedSchema?: string): ScalarPlanNode | typeof Ambiguous | undefined;
|
|
6
7
|
export declare function resolveParameter(scope: Scope, exp: AST.ParameterExpr): ParameterReferenceNode | typeof Ambiguous | undefined;
|
|
7
8
|
export declare function resolveFunction(scope: Scope, exp: AST.FunctionExpr): FunctionReferenceNode | typeof Ambiguous | undefined;
|
|
8
9
|
//# sourceMappingURL=resolve.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../../src/planner/resolve.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,KAAK,GAAG,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../../src/planner/resolve.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,KAAK,GAAG,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAuB,qBAAqB,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG9H,OAAO,EAAgB,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEzE,wBAAgB,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,cAAc,EAAE,cAAc,GAAE,MAAe,GAAG,kBAAkB,GAAG,OAAO,SAAS,GAAG,SAAS,CAWtJ;AAaD,wBAAgB,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,UAAU,EAAE,cAAc,GAAE,MAAe,GAAG,cAAc,GAAG,OAAO,SAAS,GAAG,SAAS,CAwC/I;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,aAAa,GAAG,sBAAsB,GAAG,OAAO,SAAS,GAAG,SAAS,CAS5H;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,YAAY,GAAG,qBAAqB,GAAG,OAAO,SAAS,GAAG,SAAS,CAgBzH"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { Ambiguous } from "./scopes/scope.js";
|
|
2
|
-
import {
|
|
2
|
+
import { FunctionReferenceNode, ParameterReferenceNode, TableReferenceNode } from "./nodes/reference.js";
|
|
3
3
|
import { QuereusError } from "../common/errors.js";
|
|
4
4
|
import { StatusCode } from "../common/types.js";
|
|
5
|
+
import { isScalarNode } from "./nodes/plan-node.js";
|
|
5
6
|
export function resolveTable(scope, exp, selectedSchema = 'main') {
|
|
6
7
|
// table: [schema.]name
|
|
7
8
|
const idName = exp.name;
|
|
@@ -32,7 +33,7 @@ export function resolveColumn(scope, exp, selectedSchema = 'main') {
|
|
|
32
33
|
// Fully qualified: schema.table.column
|
|
33
34
|
const symbolKey = `${schemaQualifier}.${tableQualifier}.${columnName}`;
|
|
34
35
|
const result = scope.resolveSymbol(symbolKey, exp);
|
|
35
|
-
if (result === Ambiguous || result
|
|
36
|
+
if (result === Ambiguous || (result && isScalarNode(result))) {
|
|
36
37
|
return result;
|
|
37
38
|
}
|
|
38
39
|
throw new QuereusError(`${symbolKey} isn't a column`, StatusCode.ERROR);
|
|
@@ -42,13 +43,13 @@ export function resolveColumn(scope, exp, selectedSchema = 'main') {
|
|
|
42
43
|
// Try without schema first, then with schema if that fails
|
|
43
44
|
const unqualifiedKey = `${tableQualifier}.${columnName}`;
|
|
44
45
|
const result = scope.resolveSymbol(unqualifiedKey, exp);
|
|
45
|
-
if (result === Ambiguous || result
|
|
46
|
+
if (result === Ambiguous || (result && isScalarNode(result))) {
|
|
46
47
|
return result;
|
|
47
48
|
}
|
|
48
49
|
// If unqualified fails, try with the selected schema
|
|
49
50
|
const qualifiedKey = `${selectedSchema}.${tableQualifier}.${columnName}`;
|
|
50
51
|
const qualifiedResult = scope.resolveSymbol(qualifiedKey, exp);
|
|
51
|
-
if (qualifiedResult === Ambiguous || qualifiedResult
|
|
52
|
+
if (qualifiedResult === Ambiguous || (qualifiedResult && isScalarNode(qualifiedResult))) {
|
|
52
53
|
return qualifiedResult;
|
|
53
54
|
}
|
|
54
55
|
throw new QuereusError(`${unqualifiedKey} isn't a column`, StatusCode.ERROR);
|
|
@@ -57,7 +58,7 @@ export function resolveColumn(scope, exp, selectedSchema = 'main') {
|
|
|
57
58
|
else {
|
|
58
59
|
// Unqualified: column
|
|
59
60
|
const result = scope.resolveSymbol(columnName, exp);
|
|
60
|
-
if (result === Ambiguous || result
|
|
61
|
+
if (result === Ambiguous || (result && isScalarNode(result))) {
|
|
61
62
|
return result;
|
|
62
63
|
}
|
|
63
64
|
throw new QuereusError(`Column not found: ${columnName}`, StatusCode.ERROR);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../../src/planner/resolve.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAc,MAAM,mBAAmB,CAAC;AAE1D,OAAO,
|
|
1
|
+
{"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../../src/planner/resolve.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Rule: Select Access Path
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
4
|
+
* Required Characteristics:
|
|
5
|
+
* - Node must be a RetrieveNode representing a virtual table access boundary
|
|
6
|
+
* - Module must support either supports() (query-based) or getBestAccessPlan() (index-based)
|
|
7
|
+
*
|
|
8
|
+
* Applied When:
|
|
9
|
+
* - RetrieveNode needs to be converted to appropriate physical access method
|
|
10
|
+
*
|
|
11
|
+
* Benefits: Enables cost-based access path selection and module-specific execution
|
|
7
12
|
*/
|
|
8
13
|
import type { PlanNode } from '../../nodes/plan-node.js';
|
|
9
14
|
import type { OptContext } from '../../framework/context.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rule-select-access-path.d.ts","sourceRoot":"","sources":["../../../../../src/planner/rules/access/rule-select-access-path.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"rule-select-access-path.d.ts","sourceRoot":"","sources":["../../../../../src/planner/rules/access/rule-select-access-path.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAkB,MAAM,0BAA0B,CAAC;AAEzE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAiB7D,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,GAAG,QAAQ,GAAG,IAAI,CA0DzF"}
|
|
@@ -1,32 +1,93 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Rule: Select Access Path
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
4
|
+
* Required Characteristics:
|
|
5
|
+
* - Node must be a RetrieveNode representing a virtual table access boundary
|
|
6
|
+
* - Module must support either supports() (query-based) or getBestAccessPlan() (index-based)
|
|
7
|
+
*
|
|
8
|
+
* Applied When:
|
|
9
|
+
* - RetrieveNode needs to be converted to appropriate physical access method
|
|
10
|
+
*
|
|
11
|
+
* Benefits: Enables cost-based access path selection and module-specific execution
|
|
7
12
|
*/
|
|
8
13
|
import { createLogger } from '../../../common/logger.js';
|
|
9
|
-
import {
|
|
14
|
+
import { isRelationalNode } from '../../nodes/plan-node.js';
|
|
15
|
+
import { RetrieveNode } from '../../nodes/retrieve-node.js';
|
|
16
|
+
import { RemoteQueryNode } from '../../nodes/remote-query-node.js';
|
|
10
17
|
import { SeqScanNode, IndexScanNode, IndexSeekNode } from '../../nodes/table-access-nodes.js';
|
|
11
18
|
import { seqScanCost } from '../../cost/index.js';
|
|
19
|
+
import { FilterNode } from '../../nodes/filter.js';
|
|
20
|
+
import { extractConstraintsForTable, createTableInfoFromNode } from '../../analysis/constraint-extractor.js';
|
|
21
|
+
import { LiteralNode } from '../../nodes/scalar.js';
|
|
22
|
+
import { IndexConstraintOp } from '../../../common/constants.js';
|
|
12
23
|
const log = createLogger('optimizer:rule:select-access-path');
|
|
13
24
|
export function ruleSelectAccessPath(node, context) {
|
|
14
|
-
// Guard:
|
|
15
|
-
if (!(node instanceof
|
|
25
|
+
// Guard: node must be a RetrieveNode
|
|
26
|
+
if (!(node instanceof RetrieveNode)) {
|
|
16
27
|
return null;
|
|
17
28
|
}
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
29
|
+
const retrieveNode = node;
|
|
30
|
+
const tableSchema = retrieveNode.tableRef.tableSchema;
|
|
31
|
+
const vtabModule = retrieveNode.vtabModule;
|
|
32
|
+
log('Selecting access path for retrieve over table %s', tableSchema.name);
|
|
33
|
+
// Always allow fallback to sequential scan to guarantee physicalization
|
|
34
|
+
// even when no specialized support is available.
|
|
35
|
+
// If grow-retrieve established an index-style context, reuse it directly
|
|
36
|
+
if (isIndexStyleContext(retrieveNode.moduleCtx)) {
|
|
37
|
+
log('Using index-style context provided by grow-retrieve');
|
|
38
|
+
const accessPlan = retrieveNode.moduleCtx.accessPlan;
|
|
39
|
+
const originalConstraints = retrieveNode.moduleCtx.originalConstraints;
|
|
40
|
+
const physicalLeaf = selectPhysicalNode(retrieveNode.tableRef, accessPlan, originalConstraints);
|
|
41
|
+
if (retrieveNode.moduleCtx.residualPredicate) {
|
|
42
|
+
return new FilterNode(retrieveNode.scope, physicalLeaf, retrieveNode.moduleCtx.residualPredicate);
|
|
43
|
+
}
|
|
44
|
+
return physicalLeaf;
|
|
45
|
+
}
|
|
46
|
+
// Check if module supports query-based execution via supports() method
|
|
47
|
+
if (vtabModule.supports && typeof vtabModule.supports === 'function') {
|
|
48
|
+
log('Module has supports() method - checking support for current pipeline');
|
|
49
|
+
// Check if module supports the current pipeline
|
|
50
|
+
const assessment = vtabModule.supports(retrieveNode.source);
|
|
51
|
+
if (assessment) {
|
|
52
|
+
log('Pipeline supported - creating RemoteQueryNode (cost: %d)', assessment.cost);
|
|
53
|
+
return new RemoteQueryNode(retrieveNode.scope, retrieveNode.source, retrieveNode.tableRef, assessment.ctx);
|
|
27
54
|
}
|
|
28
|
-
|
|
29
|
-
|
|
55
|
+
else {
|
|
56
|
+
log('Pipeline not supported by module - falling back to sequential scan');
|
|
57
|
+
return createSeqScan(retrieveNode.tableRef);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
// Check if module supports index-based execution via getBestAccessPlan() method
|
|
61
|
+
if (vtabModule.getBestAccessPlan && typeof vtabModule.getBestAccessPlan === 'function') {
|
|
62
|
+
log('Module has getBestAccessPlan() method - using index-based execution for %s', tableSchema.name);
|
|
63
|
+
return createIndexBasedAccess(retrieveNode, context);
|
|
64
|
+
}
|
|
65
|
+
// Fall back to sequential scan if module has no access planning support
|
|
66
|
+
log('No access planning support, using sequential scan for %s', tableSchema.name);
|
|
67
|
+
return createSeqScan(retrieveNode.tableRef);
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Create index-based access for modules that support getBestAccessPlan()
|
|
71
|
+
*/
|
|
72
|
+
function createIndexBasedAccess(retrieveNode, context) {
|
|
73
|
+
const tableSchema = retrieveNode.tableRef.tableSchema;
|
|
74
|
+
const vtabModule = retrieveNode.vtabModule;
|
|
75
|
+
// Check if we have pre-computed access plan from ruleGrowRetrieve
|
|
76
|
+
const indexCtx = retrieveNode.moduleCtx; // IndexStyleContext from grow rule
|
|
77
|
+
let accessPlan;
|
|
78
|
+
let constraints;
|
|
79
|
+
let residualPredicate;
|
|
80
|
+
if (indexCtx?.accessPlan) {
|
|
81
|
+
// Use pre-computed access plan from grow rule
|
|
82
|
+
log('Using pre-computed access plan from grow rule');
|
|
83
|
+
accessPlan = indexCtx.accessPlan;
|
|
84
|
+
constraints = indexCtx.originalConstraints || [];
|
|
85
|
+
residualPredicate = indexCtx.residualPredicate;
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
// Extract constraints from grown pipeline in source using table instance key
|
|
89
|
+
const tInfo = createTableInfoFromNode(retrieveNode.tableRef, `${tableSchema.schemaName}.${tableSchema.name}`);
|
|
90
|
+
constraints = extractConstraintsForTable(retrieveNode.source, tInfo.relationKey);
|
|
30
91
|
// Build request for getBestAccessPlan
|
|
31
92
|
const request = {
|
|
32
93
|
columns: tableSchema.columns.map((col, index) => ({
|
|
@@ -37,25 +98,49 @@ export function ruleSelectAccessPath(node, context) {
|
|
|
37
98
|
isUnique: col.primaryKey || false // For now, assume only PK columns are unique
|
|
38
99
|
})),
|
|
39
100
|
filters: constraints,
|
|
40
|
-
estimatedRows:
|
|
101
|
+
estimatedRows: retrieveNode.tableRef.estimatedRows
|
|
41
102
|
};
|
|
42
|
-
//
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
103
|
+
// Use the vtab module's getBestAccessPlan method to get an optimized access plan
|
|
104
|
+
accessPlan = vtabModule.getBestAccessPlan(context.db, tableSchema, request);
|
|
105
|
+
}
|
|
106
|
+
// Choose physical node based on access plan
|
|
107
|
+
const physicalLeaf = selectPhysicalNode(retrieveNode.tableRef, accessPlan, constraints);
|
|
108
|
+
// If the Retrieve source contained a pipeline (e.g., Filter/Sort/Project), rebuild it above the physical leaf
|
|
109
|
+
let rebuiltPipeline = physicalLeaf;
|
|
110
|
+
if (retrieveNode.source !== retrieveNode.tableRef) {
|
|
111
|
+
log('Rebuilding Retrieve pipeline above physical access node');
|
|
112
|
+
rebuiltPipeline = rebuildPipelineWithNewLeaf(retrieveNode.source, retrieveNode.tableRef, physicalLeaf);
|
|
48
113
|
}
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
114
|
+
// Wrap with residual predicate if present (on top of rebuilt pipeline)
|
|
115
|
+
let finalNode = rebuiltPipeline;
|
|
116
|
+
if (residualPredicate) {
|
|
117
|
+
log('Wrapping rebuilt pipeline with residual filter');
|
|
118
|
+
finalNode = new FilterNode(rebuiltPipeline.scope, rebuiltPipeline, residualPredicate);
|
|
53
119
|
}
|
|
120
|
+
log('Selected access for table %s (cost: %f, rows: %s)', tableSchema.name, accessPlan.cost, accessPlan.rows);
|
|
121
|
+
return finalNode;
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Rebuilds a relational pipeline by replacing the specified leaf with a new leaf.
|
|
125
|
+
* Preserves all operators (e.g., Filter, Sort, Project) above the leaf.
|
|
126
|
+
*/
|
|
127
|
+
function rebuildPipelineWithNewLeaf(pipelineRoot, oldLeaf, newLeaf) {
|
|
128
|
+
if (pipelineRoot === oldLeaf) {
|
|
129
|
+
return newLeaf;
|
|
130
|
+
}
|
|
131
|
+
const children = pipelineRoot.getChildren();
|
|
132
|
+
const newChildren = children.map(child => {
|
|
133
|
+
if (isRelationalNode(child)) {
|
|
134
|
+
return rebuildPipelineWithNewLeaf(child, oldLeaf, newLeaf);
|
|
135
|
+
}
|
|
136
|
+
return child; // keep scalar children unchanged
|
|
137
|
+
});
|
|
138
|
+
return pipelineRoot.withChildren(newChildren);
|
|
54
139
|
}
|
|
55
140
|
/**
|
|
56
141
|
* Select the appropriate physical node based on access plan
|
|
57
142
|
*/
|
|
58
|
-
function selectPhysicalNode(
|
|
143
|
+
function selectPhysicalNode(tableRef, accessPlan, constraints) {
|
|
59
144
|
// Create a default FilterInfo for the physical nodes
|
|
60
145
|
const filterInfo = {
|
|
61
146
|
idxNum: 0,
|
|
@@ -78,39 +163,104 @@ function selectPhysicalNode(originalNode, accessPlan, constraints) {
|
|
|
78
163
|
}
|
|
79
164
|
};
|
|
80
165
|
// Analyze the access plan to determine node type
|
|
81
|
-
|
|
82
|
-
const
|
|
166
|
+
// Determine handled constraints by column index, not array position (robust to ordering)
|
|
167
|
+
const handledByCol = new Set();
|
|
168
|
+
constraints.forEach((c, i) => {
|
|
169
|
+
if (accessPlan.handledFilters[i] === true)
|
|
170
|
+
handledByCol.add(c.columnIndex);
|
|
171
|
+
});
|
|
172
|
+
const eqHandled = constraints.filter(c => c.op === '=');
|
|
173
|
+
const hasEqualityConstraints = eqHandled.length > 0;
|
|
174
|
+
const hasRangeConstraints = constraints.some(c => ['>', '>=', '<', '<='].includes(c.op) && handledByCol.has(c.columnIndex));
|
|
83
175
|
// Convert OrderingSpec[] to the format expected by physical nodes
|
|
84
176
|
const providesOrdering = accessPlan.providesOrdering?.map(spec => ({
|
|
85
177
|
column: spec.columnIndex,
|
|
86
178
|
desc: spec.desc
|
|
87
179
|
}));
|
|
88
180
|
// Decision logic for access method
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
181
|
+
const maybeRows = accessPlan.rows || 0;
|
|
182
|
+
const pkCols = tableRef.tableSchema.primaryKeyDefinition ?? [];
|
|
183
|
+
const eqByCol = new Map();
|
|
184
|
+
for (const c of eqHandled)
|
|
185
|
+
eqByCol.set(c.columnIndex, c);
|
|
186
|
+
const coversPk = pkCols.length > 0 && pkCols.every(pk => eqByCol.has(pk.index));
|
|
187
|
+
// If module didn't report handledFilters properly but we have full-PK equality,
|
|
188
|
+
// treat it as handled for the purpose of selecting IndexSeek.
|
|
189
|
+
const treatAsHandledPk = coversPk && pkCols.every(pk => handledByCol.has(pk.index) || eqByCol.has(pk.index));
|
|
190
|
+
if ((hasEqualityConstraints && coversPk || treatAsHandledPk) && maybeRows <= 10) {
|
|
191
|
+
// Build seek keys (as ScalarPlanNode) and constraint wiring for runtime args
|
|
192
|
+
const seekKeys = pkCols.map(pk => {
|
|
193
|
+
const c = eqByCol.get(pk.index);
|
|
194
|
+
if (c.valueExpr)
|
|
195
|
+
return c.valueExpr;
|
|
196
|
+
const lit = { type: 'literal', value: c.value };
|
|
197
|
+
return new LiteralNode(tableRef.scope, lit);
|
|
198
|
+
});
|
|
199
|
+
// Build FilterInfo with EQ constraints carrying argvIndex placeholders
|
|
200
|
+
const eqConstraints = pkCols.map((pk, i) => ({
|
|
201
|
+
constraint: { iColumn: pk.index, op: IndexConstraintOp.EQ, usable: true },
|
|
202
|
+
argvIndex: i + 1,
|
|
203
|
+
}));
|
|
204
|
+
const fi = {
|
|
205
|
+
...filterInfo,
|
|
206
|
+
constraints: eqConstraints,
|
|
207
|
+
// idxStr plan=2 (equality); include primary idx tag for clarity
|
|
208
|
+
idxStr: 'idx=_primary_(0);plan=2',
|
|
209
|
+
};
|
|
210
|
+
log('Using index seek on primary key');
|
|
211
|
+
return new IndexSeekNode(tableRef.scope, tableRef, fi, 'primary', seekKeys, false, providesOrdering, accessPlan.cost);
|
|
96
212
|
}
|
|
97
|
-
|
|
98
|
-
//
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
213
|
+
if (hasRangeConstraints) {
|
|
214
|
+
// Build dynamic range seek using IndexSeek with lower/upper bound expressions
|
|
215
|
+
// Choose first handled range column (typically leading PK/index column)
|
|
216
|
+
const rangeCols = constraints
|
|
217
|
+
.filter(c => ['>', '>=', '<', '<='].includes(c.op) && handledByCol.has(c.columnIndex))
|
|
218
|
+
.sort((a, b) => a.columnIndex - b.columnIndex);
|
|
219
|
+
const primaryFirstCol = (tableRef.tableSchema.primaryKeyDefinition?.[0]?.index) ?? (rangeCols[0]?.columnIndex ?? 0);
|
|
220
|
+
const lower = rangeCols.find(c => c.columnIndex === primaryFirstCol && (c.op === '>' || c.op === '>='));
|
|
221
|
+
const upper = rangeCols.find(c => c.columnIndex === primaryFirstCol && (c.op === '<' || c.op === '<='));
|
|
222
|
+
const seekKeys = [];
|
|
223
|
+
const rangeConstraints = [];
|
|
224
|
+
let argv = 1;
|
|
225
|
+
if (lower) {
|
|
226
|
+
// argvIndex starts at 1
|
|
227
|
+
rangeConstraints.push({ constraint: { iColumn: primaryFirstCol, op: opToIndexOp(lower.op), usable: true }, argvIndex: argv });
|
|
228
|
+
seekKeys.push(lower.valueExpr ? lower.valueExpr : new LiteralNode(tableRef.scope, { type: 'literal', value: lower.value }));
|
|
229
|
+
argv++;
|
|
230
|
+
}
|
|
231
|
+
if (upper) {
|
|
232
|
+
rangeConstraints.push({ constraint: { iColumn: primaryFirstCol, op: opToIndexOp(upper.op), usable: true }, argvIndex: argv });
|
|
233
|
+
seekKeys.push(upper.valueExpr ? upper.valueExpr : new LiteralNode(tableRef.scope, { type: 'literal', value: upper.value }));
|
|
234
|
+
argv++;
|
|
235
|
+
}
|
|
236
|
+
const fi = {
|
|
237
|
+
...filterInfo,
|
|
238
|
+
constraints: rangeConstraints,
|
|
239
|
+
idxStr: 'idx=_primary_(0);plan=3',
|
|
240
|
+
};
|
|
241
|
+
log('Using index seek (range) on primary key');
|
|
242
|
+
return new IndexSeekNode(tableRef.scope, tableRef, fi, 'primary', seekKeys, true, providesOrdering, accessPlan.cost);
|
|
243
|
+
}
|
|
244
|
+
else if (providesOrdering) {
|
|
245
|
+
// Ordering benefit without explicit range constraints: prefer index scan
|
|
246
|
+
log('Using index scan (ordering provided)');
|
|
247
|
+
return new IndexScanNode(tableRef.scope, tableRef, filterInfo, 'primary', providesOrdering, accessPlan.cost);
|
|
102
248
|
}
|
|
103
249
|
else {
|
|
104
250
|
// Fall back to sequential scan
|
|
105
251
|
log('Using sequential scan (no beneficial index access)');
|
|
106
|
-
return createSeqScan(
|
|
252
|
+
return createSeqScan(tableRef, filterInfo, accessPlan.cost);
|
|
107
253
|
}
|
|
108
254
|
}
|
|
255
|
+
// Narrow module context originating from grow-retrieve index-style fallback
|
|
256
|
+
function isIndexStyleContext(ctx) {
|
|
257
|
+
return !!ctx && typeof ctx === 'object' && ctx.kind === 'index-style';
|
|
258
|
+
}
|
|
109
259
|
/**
|
|
110
260
|
* Create a sequential scan node
|
|
111
261
|
*/
|
|
112
|
-
function createSeqScan(
|
|
113
|
-
const tableRows =
|
|
262
|
+
function createSeqScan(tableRef, filterInfo, cost) {
|
|
263
|
+
const tableRows = tableRef.estimatedRows || 1000;
|
|
114
264
|
const scanCost = cost ?? seqScanCost(tableRows);
|
|
115
265
|
// Create default FilterInfo if not provided
|
|
116
266
|
const effectiveFilterInfo = filterInfo || {
|
|
@@ -133,7 +283,16 @@ function createSeqScan(originalNode, filterInfo, cost) {
|
|
|
133
283
|
colUsed: 0n,
|
|
134
284
|
}
|
|
135
285
|
};
|
|
136
|
-
const seqScan = new SeqScanNode(
|
|
286
|
+
const seqScan = new SeqScanNode(tableRef.scope, tableRef, effectiveFilterInfo, scanCost);
|
|
137
287
|
return seqScan;
|
|
138
288
|
}
|
|
289
|
+
function opToIndexOp(op) {
|
|
290
|
+
switch (op) {
|
|
291
|
+
case '>': return IndexConstraintOp.GT;
|
|
292
|
+
case '>=': return IndexConstraintOp.GE;
|
|
293
|
+
case '<': return IndexConstraintOp.LT;
|
|
294
|
+
case '<=': return IndexConstraintOp.LE;
|
|
295
|
+
default: return IndexConstraintOp.GE;
|
|
296
|
+
}
|
|
297
|
+
}
|
|
139
298
|
//# sourceMappingURL=rule-select-access-path.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rule-select-access-path.js","sourceRoot":"","sources":["../../../../../src/planner/rules/access/rule-select-access-path.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"rule-select-access-path.js","sourceRoot":"","sources":["../../../../../src/planner/rules/access/rule-select-access-path.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Rule: Aggregate Streaming
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
4
|
+
* Required Characteristics:
|
|
5
|
+
* - Node must support aggregation operations (AggregationCapable interface)
|
|
6
|
+
* - Node must be relational (produces rows)
|
|
7
|
+
* - Node must be read-only (no side effects for streaming)
|
|
8
|
+
*
|
|
9
|
+
* Applied When:
|
|
10
|
+
* - Logical aggregate node needs physical streaming implementation
|
|
11
|
+
* - Source data can be processed incrementally
|
|
12
|
+
*
|
|
13
|
+
* Benefits: Enables streaming aggregation with proper grouping order, memory efficient processing
|
|
7
14
|
*/
|
|
8
15
|
import type { PlanNode } from '../../nodes/plan-node.js';
|
|
9
16
|
import type { OptContext } from '../../framework/context.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rule-aggregate-streaming.d.ts","sourceRoot":"","sources":["../../../../../src/planner/rules/aggregate/rule-aggregate-streaming.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"rule-aggregate-streaming.d.ts","sourceRoot":"","sources":["../../../../../src/planner/rules/aggregate/rule-aggregate-streaming.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAA6B,MAAM,0BAA0B,CAAC;AACpF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAW7D,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,GAAG,QAAQ,GAAG,IAAI,CAqF5F"}
|