@quereus/quereus 0.1.0 → 0.2.1
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 +47 -23
- package/dist/src/common/types.d.ts +1 -0
- package/dist/src/common/types.d.ts.map +1 -1
- package/dist/src/core/database.d.ts +22 -4
- package/dist/src/core/database.d.ts.map +1 -1
- package/dist/src/core/database.js +44 -6
- package/dist/src/core/database.js.map +1 -1
- package/dist/src/core/statement.d.ts +0 -7
- package/dist/src/core/statement.d.ts.map +1 -1
- package/dist/src/core/statement.js +1 -51
- package/dist/src/core/statement.js.map +1 -1
- package/dist/src/func/builtins/explain.d.ts.map +1 -1
- package/dist/src/func/builtins/explain.js +0 -11
- package/dist/src/func/builtins/explain.js.map +1 -1
- package/dist/src/index.d.ts +13 -5
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +5 -2
- package/dist/src/index.js.map +1 -1
- package/dist/src/parser/ast.d.ts +10 -4
- package/dist/src/parser/ast.d.ts.map +1 -1
- package/dist/src/parser/parser.d.ts.map +1 -1
- package/dist/src/parser/parser.js +40 -44
- package/dist/src/parser/parser.js.map +1 -1
- package/dist/src/planner/analysis/const-pass.d.ts.map +1 -1
- package/dist/src/planner/analysis/const-pass.js +12 -6
- package/dist/src/planner/analysis/const-pass.js.map +1 -1
- package/dist/src/planner/building/constraint-builder.d.ts +11 -0
- package/dist/src/planner/building/constraint-builder.d.ts.map +1 -0
- package/dist/src/planner/building/constraint-builder.js +79 -0
- package/dist/src/planner/building/constraint-builder.js.map +1 -0
- package/dist/src/planner/building/delete.d.ts.map +1 -1
- package/dist/src/planner/building/delete.js +7 -4
- package/dist/src/planner/building/delete.js.map +1 -1
- package/dist/src/planner/building/expression.d.ts +3 -0
- package/dist/src/planner/building/expression.d.ts.map +1 -1
- package/dist/src/planner/building/expression.js +33 -7
- package/dist/src/planner/building/expression.js.map +1 -1
- package/dist/src/planner/building/insert.d.ts.map +1 -1
- package/dist/src/planner/building/insert.js +5 -2
- package/dist/src/planner/building/insert.js.map +1 -1
- package/dist/src/planner/building/select-aggregates.d.ts.map +1 -1
- package/dist/src/planner/building/select-aggregates.js +46 -9
- package/dist/src/planner/building/select-aggregates.js.map +1 -1
- package/dist/src/planner/building/select-context.js +20 -11
- package/dist/src/planner/building/select-context.js.map +1 -1
- package/dist/src/planner/building/select-modifiers.d.ts +5 -3
- package/dist/src/planner/building/select-modifiers.d.ts.map +1 -1
- package/dist/src/planner/building/select-modifiers.js +29 -20
- package/dist/src/planner/building/select-modifiers.js.map +1 -1
- package/dist/src/planner/building/select-projections.d.ts +3 -1
- package/dist/src/planner/building/select-projections.d.ts.map +1 -1
- package/dist/src/planner/building/select-projections.js +15 -20
- 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 +25 -2
- package/dist/src/planner/building/select.d.ts.map +1 -1
- package/dist/src/planner/building/select.js +147 -24
- package/dist/src/planner/building/select.js.map +1 -1
- package/dist/src/planner/building/table.d.ts +0 -10
- package/dist/src/planner/building/table.d.ts.map +1 -1
- package/dist/src/planner/building/table.js +1 -35
- 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 +8 -5
- package/dist/src/planner/building/update.js.map +1 -1
- package/dist/src/planner/building/with.d.ts.map +1 -1
- package/dist/src/planner/building/with.js +7 -8
- package/dist/src/planner/building/with.js.map +1 -1
- package/dist/src/planner/cache/correlation-detector.d.ts +11 -0
- package/dist/src/planner/cache/correlation-detector.d.ts.map +1 -0
- package/dist/src/planner/cache/correlation-detector.js +73 -0
- package/dist/src/planner/cache/correlation-detector.js.map +1 -0
- package/dist/src/planner/cache/materialization-advisory.d.ts +12 -18
- package/dist/src/planner/cache/materialization-advisory.d.ts.map +1 -1
- package/dist/src/planner/cache/materialization-advisory.js +65 -46
- package/dist/src/planner/cache/materialization-advisory.js.map +1 -1
- package/dist/src/planner/cache/reference-graph.d.ts +14 -9
- package/dist/src/planner/cache/reference-graph.d.ts.map +1 -1
- package/dist/src/planner/cache/reference-graph.js +93 -84
- package/dist/src/planner/cache/reference-graph.js.map +1 -1
- package/dist/src/planner/debug.d.ts +25 -0
- package/dist/src/planner/debug.d.ts.map +1 -1
- package/dist/src/planner/debug.js +127 -0
- package/dist/src/planner/debug.js.map +1 -1
- package/dist/src/planner/framework/context.d.ts +11 -0
- package/dist/src/planner/framework/context.d.ts.map +1 -1
- package/dist/src/planner/framework/context.js +25 -2
- package/dist/src/planner/framework/context.js.map +1 -1
- package/dist/src/planner/framework/registry.d.ts +3 -7
- package/dist/src/planner/framework/registry.d.ts.map +1 -1
- package/dist/src/planner/framework/registry.js +20 -31
- package/dist/src/planner/framework/registry.js.map +1 -1
- package/dist/src/planner/nodes/add-constraint-node.d.ts +2 -1
- package/dist/src/planner/nodes/add-constraint-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/add-constraint-node.js +3 -0
- package/dist/src/planner/nodes/add-constraint-node.js.map +1 -1
- package/dist/src/planner/nodes/aggregate-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/aggregate-node.js +6 -4
- package/dist/src/planner/nodes/aggregate-node.js.map +1 -1
- package/dist/src/planner/nodes/cache-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/cache-node.js +2 -2
- package/dist/src/planner/nodes/cache-node.js.map +1 -1
- package/dist/src/planner/nodes/constraint-check-node.d.ts +13 -6
- package/dist/src/planner/nodes/constraint-check-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/constraint-check-node.js +38 -12
- package/dist/src/planner/nodes/constraint-check-node.js.map +1 -1
- package/dist/src/planner/nodes/create-index-node.d.ts +2 -1
- package/dist/src/planner/nodes/create-index-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/create-index-node.js +3 -0
- package/dist/src/planner/nodes/create-index-node.js.map +1 -1
- package/dist/src/planner/nodes/create-table-node.d.ts +2 -1
- package/dist/src/planner/nodes/create-table-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/create-table-node.js +3 -0
- package/dist/src/planner/nodes/create-table-node.js.map +1 -1
- package/dist/src/planner/nodes/create-view-node.d.ts +2 -1
- package/dist/src/planner/nodes/create-view-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/create-view-node.js +3 -0
- package/dist/src/planner/nodes/create-view-node.js.map +1 -1
- package/dist/src/planner/nodes/cte-node.d.ts +1 -1
- package/dist/src/planner/nodes/cte-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/cte-node.js +33 -12
- package/dist/src/planner/nodes/cte-node.js.map +1 -1
- package/dist/src/planner/nodes/cte-reference-node.d.ts +18 -4
- package/dist/src/planner/nodes/cte-reference-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/cte-reference-node.js +40 -10
- package/dist/src/planner/nodes/cte-reference-node.js.map +1 -1
- package/dist/src/planner/nodes/delete-node.d.ts +4 -3
- package/dist/src/planner/nodes/delete-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/delete-node.js +20 -6
- package/dist/src/planner/nodes/delete-node.js.map +1 -1
- package/dist/src/planner/nodes/distinct-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/distinct-node.js +2 -2
- package/dist/src/planner/nodes/distinct-node.js.map +1 -1
- package/dist/src/planner/nodes/dml-executor-node.d.ts +1 -1
- package/dist/src/planner/nodes/dml-executor-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/dml-executor-node.js +2 -2
- package/dist/src/planner/nodes/dml-executor-node.js.map +1 -1
- package/dist/src/planner/nodes/drop-table-node.d.ts +2 -1
- package/dist/src/planner/nodes/drop-table-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/drop-table-node.js +3 -0
- package/dist/src/planner/nodes/drop-table-node.js.map +1 -1
- package/dist/src/planner/nodes/drop-view-node.d.ts +2 -1
- package/dist/src/planner/nodes/drop-view-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/drop-view-node.js +3 -0
- package/dist/src/planner/nodes/drop-view-node.js.map +1 -1
- package/dist/src/planner/nodes/filter.d.ts.map +1 -1
- package/dist/src/planner/nodes/filter.js +3 -3
- package/dist/src/planner/nodes/filter.js.map +1 -1
- package/dist/src/planner/nodes/insert-node.d.ts +2 -1
- package/dist/src/planner/nodes/insert-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/insert-node.js +18 -5
- package/dist/src/planner/nodes/insert-node.js.map +1 -1
- package/dist/src/planner/nodes/internal-recursive-cte-ref-node.d.ts +28 -0
- package/dist/src/planner/nodes/internal-recursive-cte-ref-node.d.ts.map +1 -0
- package/dist/src/planner/nodes/internal-recursive-cte-ref-node.js +69 -0
- package/dist/src/planner/nodes/internal-recursive-cte-ref-node.js.map +1 -0
- package/dist/src/planner/nodes/join-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/join-node.js +3 -3
- package/dist/src/planner/nodes/join-node.js.map +1 -1
- package/dist/src/planner/nodes/limit-offset.d.ts.map +1 -1
- package/dist/src/planner/nodes/limit-offset.js +2 -2
- package/dist/src/planner/nodes/limit-offset.js.map +1 -1
- package/dist/src/planner/nodes/plan-node-type.d.ts +1 -1
- package/dist/src/planner/nodes/plan-node-type.d.ts.map +1 -1
- package/dist/src/planner/nodes/plan-node-type.js +1 -1
- package/dist/src/planner/nodes/plan-node-type.js.map +1 -1
- package/dist/src/planner/nodes/plan-node.d.ts +23 -0
- package/dist/src/planner/nodes/plan-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/plan-node.js +25 -2
- package/dist/src/planner/nodes/plan-node.js.map +1 -1
- package/dist/src/planner/nodes/project-node.d.ts +5 -1
- package/dist/src/planner/nodes/project-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/project-node.js +39 -20
- 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 +20 -8
- package/dist/src/planner/nodes/recursive-cte-node.js.map +1 -1
- package/dist/src/planner/nodes/reference.d.ts.map +1 -1
- package/dist/src/planner/nodes/reference.js +4 -2
- package/dist/src/planner/nodes/reference.js.map +1 -1
- package/dist/src/planner/nodes/returning-node.d.ts +1 -1
- package/dist/src/planner/nodes/returning-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/returning-node.js +21 -13
- package/dist/src/planner/nodes/returning-node.js.map +1 -1
- package/dist/src/planner/nodes/scalar.d.ts +26 -2
- package/dist/src/planner/nodes/scalar.d.ts.map +1 -1
- package/dist/src/planner/nodes/scalar.js +82 -10
- package/dist/src/planner/nodes/scalar.js.map +1 -1
- package/dist/src/planner/nodes/sequencing-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/sequencing-node.js +2 -2
- package/dist/src/planner/nodes/sequencing-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 -3
- package/dist/src/planner/nodes/set-operation-node.js.map +1 -1
- package/dist/src/planner/nodes/single-row.d.ts +4 -2
- package/dist/src/planner/nodes/single-row.d.ts.map +1 -1
- package/dist/src/planner/nodes/single-row.js +3 -0
- package/dist/src/planner/nodes/single-row.js.map +1 -1
- package/dist/src/planner/nodes/sink-node.d.ts +1 -1
- package/dist/src/planner/nodes/sink-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/sink-node.js +4 -4
- package/dist/src/planner/nodes/sink-node.js.map +1 -1
- package/dist/src/planner/nodes/sort.d.ts.map +1 -1
- package/dist/src/planner/nodes/sort.js +2 -2
- package/dist/src/planner/nodes/sort.js.map +1 -1
- package/dist/src/planner/nodes/stream-aggregate.d.ts +1 -0
- package/dist/src/planner/nodes/stream-aggregate.d.ts.map +1 -1
- package/dist/src/planner/nodes/stream-aggregate.js +64 -11
- package/dist/src/planner/nodes/stream-aggregate.js.map +1 -1
- package/dist/src/planner/nodes/subquery.d.ts +4 -4
- package/dist/src/planner/nodes/subquery.d.ts.map +1 -1
- package/dist/src/planner/nodes/subquery.js +68 -23
- package/dist/src/planner/nodes/subquery.js.map +1 -1
- package/dist/src/planner/nodes/table-access-nodes.d.ts +83 -0
- package/dist/src/planner/nodes/table-access-nodes.d.ts.map +1 -0
- package/dist/src/planner/nodes/table-access-nodes.js +226 -0
- package/dist/src/planner/nodes/table-access-nodes.js.map +1 -0
- package/dist/src/planner/nodes/update-node.d.ts +4 -2
- package/dist/src/planner/nodes/update-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/update-node.js +26 -13
- package/dist/src/planner/nodes/update-node.js.map +1 -1
- package/dist/src/planner/nodes/window-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/window-node.js +25 -23
- package/dist/src/planner/nodes/window-node.js.map +1 -1
- package/dist/src/planner/optimizer.d.ts.map +1 -1
- package/dist/src/planner/optimizer.js +46 -50
- package/dist/src/planner/optimizer.js.map +1 -1
- package/dist/src/planner/planning-context.d.ts +13 -0
- package/dist/src/planner/planning-context.d.ts.map +1 -1
- package/dist/src/planner/planning-context.js.map +1 -1
- package/dist/src/planner/rules/access/rule-select-access-path.d.ts +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 +59 -53
- 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.map +1 -1
- package/dist/src/planner/rules/aggregate/rule-aggregate-streaming.js +62 -2
- package/dist/src/planner/rules/aggregate/rule-aggregate-streaming.js.map +1 -1
- package/dist/src/planner/rules/cache/rule-materialization-advisory.d.ts.map +1 -1
- package/dist/src/planner/rules/cache/rule-materialization-advisory.js +31 -24
- package/dist/src/planner/rules/cache/rule-materialization-advisory.js.map +1 -1
- package/dist/src/planner/scopes/base.d.ts +0 -10
- package/dist/src/planner/scopes/base.d.ts.map +1 -1
- package/dist/src/planner/scopes/base.js +0 -14
- package/dist/src/planner/scopes/base.js.map +1 -1
- package/dist/src/planner/scopes/empty.d.ts +0 -2
- package/dist/src/planner/scopes/empty.d.ts.map +1 -1
- package/dist/src/planner/scopes/empty.js +0 -8
- package/dist/src/planner/scopes/empty.js.map +1 -1
- package/dist/src/planner/scopes/multi.d.ts.map +1 -1
- package/dist/src/planner/scopes/multi.js +0 -1
- package/dist/src/planner/scopes/multi.js.map +1 -1
- package/dist/src/planner/scopes/param.d.ts.map +1 -1
- package/dist/src/planner/scopes/param.js +0 -1
- package/dist/src/planner/scopes/param.js.map +1 -1
- package/dist/src/planner/scopes/registered.d.ts +0 -10
- package/dist/src/planner/scopes/registered.d.ts.map +1 -1
- package/dist/src/planner/scopes/registered.js +1 -17
- package/dist/src/planner/scopes/registered.js.map +1 -1
- package/dist/src/planner/scopes/scope.d.ts +0 -8
- package/dist/src/planner/scopes/scope.d.ts.map +1 -1
- package/dist/src/planner/validation/plan-validator.d.ts.map +1 -1
- package/dist/src/planner/validation/plan-validator.js +1 -7
- package/dist/src/planner/validation/plan-validator.js.map +1 -1
- package/dist/src/runtime/context-helpers.d.ts +45 -0
- package/dist/src/runtime/context-helpers.d.ts.map +1 -0
- package/dist/src/runtime/context-helpers.js +139 -0
- package/dist/src/runtime/context-helpers.js.map +1 -0
- package/dist/src/runtime/emission-context.d.ts +1 -0
- package/dist/src/runtime/emission-context.d.ts.map +1 -1
- package/dist/src/runtime/emission-context.js +2 -1
- package/dist/src/runtime/emission-context.js.map +1 -1
- package/dist/src/runtime/emit/aggregate.d.ts.map +1 -1
- package/dist/src/runtime/emit/aggregate.js +119 -86
- package/dist/src/runtime/emit/aggregate.js.map +1 -1
- package/dist/src/runtime/emit/between.d.ts +5 -0
- package/dist/src/runtime/emit/between.d.ts.map +1 -0
- package/dist/src/runtime/emit/between.js +38 -0
- package/dist/src/runtime/emit/between.js.map +1 -0
- package/dist/src/runtime/emit/binary.d.ts +0 -1
- package/dist/src/runtime/emit/binary.d.ts.map +1 -1
- package/dist/src/runtime/emit/binary.js +0 -36
- package/dist/src/runtime/emit/binary.js.map +1 -1
- package/dist/src/runtime/emit/column-reference.d.ts.map +1 -1
- package/dist/src/runtime/emit/column-reference.js +2 -26
- package/dist/src/runtime/emit/column-reference.js.map +1 -1
- package/dist/src/runtime/emit/constraint-check.d.ts.map +1 -1
- package/dist/src/runtime/emit/constraint-check.js +16 -123
- package/dist/src/runtime/emit/constraint-check.js.map +1 -1
- package/dist/src/runtime/emit/cte-reference.d.ts.map +1 -1
- package/dist/src/runtime/emit/cte-reference.js +16 -48
- package/dist/src/runtime/emit/cte-reference.js.map +1 -1
- package/dist/src/runtime/emit/distinct.d.ts.map +1 -1
- package/dist/src/runtime/emit/distinct.js +2 -8
- package/dist/src/runtime/emit/distinct.js.map +1 -1
- package/dist/src/runtime/emit/filter.d.ts.map +1 -1
- package/dist/src/runtime/emit/filter.js +6 -13
- package/dist/src/runtime/emit/filter.js.map +1 -1
- package/dist/src/runtime/emit/internal-recursive-cte-ref.d.ts +5 -0
- package/dist/src/runtime/emit/internal-recursive-cte-ref.d.ts.map +1 -0
- package/dist/src/runtime/emit/internal-recursive-cte-ref.js +23 -0
- package/dist/src/runtime/emit/internal-recursive-cte-ref.js.map +1 -0
- package/dist/src/runtime/emit/join.d.ts.map +1 -1
- package/dist/src/runtime/emit/join.js +40 -40
- package/dist/src/runtime/emit/join.js.map +1 -1
- package/dist/src/runtime/emit/project.d.ts.map +1 -1
- package/dist/src/runtime/emit/project.js +13 -13
- 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 +3 -14
- 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 -14
- package/dist/src/runtime/emit/returning.js.map +1 -1
- package/dist/src/runtime/emit/scan.d.ts +5 -2
- package/dist/src/runtime/emit/scan.d.ts.map +1 -1
- package/dist/src/runtime/emit/scan.js +21 -17
- package/dist/src/runtime/emit/scan.js.map +1 -1
- package/dist/src/runtime/emit/sort.d.ts.map +1 -1
- package/dist/src/runtime/emit/sort.js +8 -11
- 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 +95 -40
- 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 +7 -22
- package/dist/src/runtime/emit/table-valued-function.js.map +1 -1
- package/dist/src/runtime/emit/update.d.ts.map +1 -1
- package/dist/src/runtime/emit/update.js +20 -27
- package/dist/src/runtime/emit/update.js.map +1 -1
- package/dist/src/runtime/emit/window.d.ts.map +1 -1
- package/dist/src/runtime/emit/window.js +55 -83
- 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 +49 -1
- 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 +5 -4
- package/dist/src/runtime/register.js.map +1 -1
- package/dist/src/runtime/scheduler.d.ts.map +1 -1
- package/dist/src/runtime/scheduler.js +47 -42
- package/dist/src/runtime/scheduler.js.map +1 -1
- package/dist/src/runtime/types.d.ts +34 -0
- package/dist/src/runtime/types.d.ts.map +1 -1
- package/dist/src/runtime/types.js +21 -0
- package/dist/src/runtime/types.js.map +1 -1
- package/dist/src/schema/manager.d.ts.map +1 -1
- package/dist/src/schema/manager.js +29 -16
- package/dist/src/schema/manager.js.map +1 -1
- package/dist/src/schema/table.d.ts +4 -4
- package/dist/src/schema/table.d.ts.map +1 -1
- package/dist/src/schema/table.js +10 -10
- package/dist/src/schema/table.js.map +1 -1
- package/dist/src/util/plugin-loader.d.ts +10 -1
- package/dist/src/util/plugin-loader.d.ts.map +1 -1
- package/dist/src/util/plugin-loader.js +56 -1
- package/dist/src/util/plugin-loader.js.map +1 -1
- package/dist/src/util/working-table-iterable.d.ts.map +1 -1
- package/dist/src/util/working-table-iterable.js +8 -8
- package/dist/src/util/working-table-iterable.js.map +1 -1
- package/dist/src/vtab/manifest.d.ts +36 -0
- package/dist/src/vtab/manifest.d.ts.map +1 -1
- package/dist/src/vtab/table.d.ts +1 -1
- package/dist/src/vtab/table.d.ts.map +1 -1
- package/package.json +8 -3
- package/src/common/types.ts +1 -0
- package/src/core/database.ts +48 -6
- package/src/core/statement.ts +1 -49
- package/src/func/builtins/explain.ts +0 -11
- package/src/index.ts +39 -5
- package/src/parser/ast.ts +12 -6
- package/src/parser/parser.ts +45 -52
- package/src/planner/analysis/const-pass.ts +281 -270
- package/src/planner/building/constraint-builder.ts +114 -0
- package/src/planner/building/delete.ts +18 -5
- package/src/planner/building/expression.ts +35 -7
- package/src/planner/building/insert.ts +16 -3
- package/src/planner/building/select-aggregates.ts +57 -11
- package/src/planner/building/select-context.ts +22 -12
- package/src/planner/building/select-modifiers.ts +35 -21
- package/src/planner/building/select-projections.ts +25 -26
- package/src/planner/building/select-window.ts +14 -9
- package/src/planner/building/select.ts +163 -31
- package/src/planner/building/table.ts +1 -40
- package/src/planner/building/update.ts +22 -7
- package/src/planner/building/with.ts +12 -13
- package/src/planner/cache/correlation-detector.ts +83 -0
- package/src/planner/cache/materialization-advisory.ts +71 -50
- package/src/planner/cache/reference-graph.ts +115 -91
- package/src/planner/debug.ts +163 -0
- package/src/planner/framework/context.ts +36 -2
- package/src/planner/framework/registry.ts +261 -274
- package/src/planner/nodes/add-constraint-node.ts +5 -1
- package/src/planner/nodes/aggregate-node.ts +6 -4
- package/src/planner/nodes/cache-node.ts +2 -2
- package/src/planner/nodes/constraint-check-node.ts +49 -15
- package/src/planner/nodes/create-index-node.ts +5 -1
- package/src/planner/nodes/create-table-node.ts +5 -1
- package/src/planner/nodes/create-view-node.ts +5 -1
- package/src/planner/nodes/cte-node.ts +45 -14
- package/src/planner/nodes/cte-reference-node.ts +49 -13
- package/src/planner/nodes/delete-node.ts +31 -7
- package/src/planner/nodes/distinct-node.ts +2 -2
- package/src/planner/nodes/dml-executor-node.ts +3 -3
- package/src/planner/nodes/drop-table-node.ts +5 -1
- package/src/planner/nodes/drop-view-node.ts +5 -1
- package/src/planner/nodes/filter.ts +3 -3
- package/src/planner/nodes/function.ts +93 -93
- package/src/planner/nodes/insert-node.ts +28 -5
- package/src/planner/nodes/internal-recursive-cte-ref-node.ts +76 -0
- package/src/planner/nodes/join-node.ts +3 -3
- package/src/planner/nodes/limit-offset.ts +2 -2
- package/src/planner/nodes/plan-node-type.ts +1 -1
- package/src/planner/nodes/plan-node.ts +39 -2
- package/src/planner/nodes/project-node.ts +39 -19
- package/src/planner/nodes/recursive-cte-node.ts +37 -9
- package/src/planner/nodes/reference.ts +4 -2
- package/src/planner/nodes/returning-node.ts +25 -13
- package/src/planner/nodes/scalar.ts +95 -11
- package/src/planner/nodes/sequencing-node.ts +2 -2
- package/src/planner/nodes/set-operation-node.ts +3 -3
- package/src/planner/nodes/single-row.ts +7 -2
- package/src/planner/nodes/sink-node.ts +5 -5
- package/src/planner/nodes/sort.ts +2 -2
- package/src/planner/nodes/stream-aggregate.ts +76 -12
- package/src/planner/nodes/subquery.ts +90 -27
- package/src/planner/nodes/{physical-access-nodes.ts → table-access-nodes.ts} +6 -6
- package/src/planner/nodes/update-node.ts +31 -13
- package/src/planner/nodes/window-node.ts +28 -22
- package/src/planner/optimizer.ts +257 -263
- package/src/planner/planning-context.ts +15 -0
- package/src/planner/rules/access/rule-select-access-path.ts +68 -64
- package/src/planner/rules/aggregate/rule-aggregate-streaming.ts +74 -2
- package/src/planner/rules/cache/rule-materialization-advisory.ts +31 -27
- package/src/planner/scopes/base.ts +0 -17
- package/src/planner/scopes/empty.ts +0 -10
- package/src/planner/scopes/multi.ts +0 -1
- package/src/planner/scopes/param.ts +0 -1
- package/src/planner/scopes/registered.ts +1 -20
- package/src/planner/scopes/scope.ts +0 -12
- package/src/planner/validation/plan-validator.ts +1 -8
- package/src/runtime/context-helpers.ts +191 -0
- package/src/runtime/emission-context.ts +5 -2
- package/src/runtime/emit/aggregate.ts +131 -85
- package/src/runtime/emit/between.ts +51 -0
- package/src/runtime/emit/binary.ts +0 -46
- package/src/runtime/emit/column-reference.ts +3 -36
- package/src/runtime/emit/constraint-check.ts +19 -144
- package/src/runtime/emit/cte-reference.ts +23 -60
- package/src/runtime/emit/distinct.ts +2 -7
- package/src/runtime/emit/filter.ts +6 -13
- package/src/runtime/emit/internal-recursive-cte-ref.ts +37 -0
- package/src/runtime/emit/join.ts +45 -43
- package/src/runtime/emit/project.ts +18 -12
- package/src/runtime/emit/recursive-cte.ts +3 -12
- package/src/runtime/emit/returning.ts +7 -14
- package/src/runtime/emit/scan.ts +25 -23
- package/src/runtime/emit/sort.ts +8 -11
- package/src/runtime/emit/subquery.ts +108 -48
- package/src/runtime/emit/table-valued-function.ts +7 -20
- package/src/runtime/emit/update.ts +22 -29
- package/src/runtime/emit/window.ts +74 -88
- package/src/runtime/emitters.ts +52 -1
- package/src/runtime/register.ts +5 -4
- package/src/runtime/scheduler.ts +54 -54
- package/src/runtime/types.ts +45 -0
- package/src/schema/manager.ts +34 -19
- package/src/schema/table.ts +8 -8
- package/src/util/plugin-loader.ts +78 -4
- package/src/util/working-table-iterable.ts +15 -7
- package/src/vtab/manifest.ts +42 -0
- package/src/vtab/table.ts +1 -1
- package/src/planner/nodes/scan.ts +0 -103
- package/src/planner/rules/physical/rule-mark-physical.ts +0 -37
- package/src/runtime/emit/table-reference.ts +0 -92
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stream-aggregate.d.ts","sourceRoot":"","sources":["../../../../src/planner/nodes/stream-aggregate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,KAAK,kBAAkB,EAAE,KAAK,mBAAmB,EAAE,KAAK,cAAc,EAAE,KAAK,kBAAkB,EAAE,KAAK,SAAS,
|
|
1
|
+
{"version":3,"file":"stream-aggregate.d.ts","sourceRoot":"","sources":["../../../../src/planner/nodes/stream-aggregate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,KAAK,kBAAkB,EAAE,KAAK,mBAAmB,EAAE,KAAK,cAAc,EAAE,KAAK,kBAAkB,EAAE,KAAK,SAAS,EAAoB,MAAM,gBAAgB,CAAC;AAC7K,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAMhD;;;GAGG;AACH,qBAAa,mBAAoB,SAAQ,QAAS,YAAW,mBAAmB;aAO5D,MAAM,EAAE,kBAAkB;aAC1B,OAAO,EAAE,SAAS,cAAc,EAAE;aAClC,UAAU,EAAE,SAAS;QAAE,UAAU,EAAE,cAAc,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE;aAEpE,oBAAoB,CAAC,EAAE,SAAS,SAAS,EAAE;IAV7D,SAAkB,QAAQ,gCAAgC;IAE1D,OAAO,CAAC,eAAe,CAAsB;gBAG3C,KAAK,EAAE,KAAK,EACI,MAAM,EAAE,kBAAkB,EAC1B,OAAO,EAAE,SAAS,cAAc,EAAE,EAClC,UAAU,EAAE,SAAS;QAAE,UAAU,EAAE,cAAc,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,EACpF,qBAAqB,CAAC,EAAE,MAAM,EACd,oBAAoB,CAAC,EAAE,SAAS,SAAS,EAAE,YAAA;IAcrD,OAAO,CAAC,eAAe;IA+C/B,OAAO,CAAC,oBAAoB;IAU5B,OAAO,IAAI,YAAY;IAmDvB,aAAa,IAAI,SAAS,EAAE;IAI5B,iBAAiB,IAAI,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC;IAyBhD,WAAW,IAAI,SAAS,QAAQ,EAAE;IAIlC,YAAY,IAAI,SAAS,CAAC,kBAAkB,CAAC;IAI7C,IAAI,aAAa,IAAI,MAAM,GAAG,SAAS,CAYtC;IAED,eAAe,CAAC,iBAAiB,EAAE,kBAAkB,EAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAc5E,QAAQ,IAAI,MAAM;IAiBlB,oBAAoB,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAoBxD,YAAY,CAAC,WAAW,EAAE,SAAS,QAAQ,EAAE,GAAG,QAAQ;CAwCzD"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { PlanNodeType } from './plan-node-type.js';
|
|
2
|
-
import { PlanNode } from './plan-node.js';
|
|
2
|
+
import { PlanNode, isRelationalNode } from './plan-node.js';
|
|
3
3
|
import { Cached } from '../../util/cached.js';
|
|
4
4
|
import { formatExpressionList } from '../../util/plan-formatter.js';
|
|
5
5
|
import { quereusError } from '../../common/errors.js';
|
|
@@ -28,10 +28,12 @@ export class StreamAggregateNode extends PlanNode {
|
|
|
28
28
|
this.attributesCache = new Cached(() => this.buildAttributes());
|
|
29
29
|
}
|
|
30
30
|
buildAttributes() {
|
|
31
|
-
// If we have preserved attribute IDs, use them
|
|
31
|
+
// If we have preserved attribute IDs, use them directly
|
|
32
|
+
// The optimizer rule now passes both aggregate AND source attributes
|
|
32
33
|
if (this.preserveAttributeIds) {
|
|
33
|
-
return this.preserveAttributeIds.slice();
|
|
34
|
+
return this.preserveAttributeIds.slice();
|
|
34
35
|
}
|
|
36
|
+
// Fallback: build attributes from scratch (used when not created via optimizer)
|
|
35
37
|
const attributes = [];
|
|
36
38
|
// Group by columns come first
|
|
37
39
|
this.groupBy.forEach((expr, index) => {
|
|
@@ -52,6 +54,16 @@ export class StreamAggregateNode extends PlanNode {
|
|
|
52
54
|
sourceRelation: `${this.nodeType}:${this.id}`
|
|
53
55
|
});
|
|
54
56
|
});
|
|
57
|
+
// Add source attributes to support HAVING clauses
|
|
58
|
+
const sourceAttributes = this.source.getAttributes();
|
|
59
|
+
const existingAttrNames = new Set(attributes.map(attr => attr.name));
|
|
60
|
+
for (const sourceAttr of sourceAttributes) {
|
|
61
|
+
// Only add if not already present by name (avoid duplicates for GROUP BY columns)
|
|
62
|
+
if (!existingAttrNames.has(sourceAttr.name)) {
|
|
63
|
+
attributes.push(sourceAttr);
|
|
64
|
+
existingAttrNames.add(sourceAttr.name);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
55
67
|
return attributes;
|
|
56
68
|
}
|
|
57
69
|
// Helper function to extract a meaningful name from a GROUP BY expression
|
|
@@ -65,21 +77,41 @@ export class StreamAggregateNode extends PlanNode {
|
|
|
65
77
|
return `group_${index}`;
|
|
66
78
|
}
|
|
67
79
|
getType() {
|
|
68
|
-
|
|
69
|
-
|
|
80
|
+
const columns = [];
|
|
81
|
+
// Start with preserved attributes if we have them, otherwise build GROUP BY + aggregates
|
|
82
|
+
if (this.preserveAttributeIds) {
|
|
83
|
+
// Use preserved attributes to match getAttributes() exactly
|
|
84
|
+
for (const attr of this.preserveAttributeIds) {
|
|
85
|
+
columns.push({
|
|
86
|
+
name: attr.name,
|
|
87
|
+
type: attr.type,
|
|
88
|
+
generated: false // Source attributes are not generated
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
70
93
|
// Group by columns come first
|
|
71
|
-
...this.groupBy.map((expr, index) => ({
|
|
94
|
+
columns.push(...this.groupBy.map((expr, index) => ({
|
|
72
95
|
name: this.getGroupByColumnName(expr, index),
|
|
73
96
|
type: expr.getType(),
|
|
74
97
|
generated: false
|
|
75
|
-
}))
|
|
98
|
+
})));
|
|
76
99
|
// Then aggregate columns
|
|
77
|
-
...this.aggregates.map(agg => ({
|
|
100
|
+
columns.push(...this.aggregates.map(agg => ({
|
|
78
101
|
name: agg.alias,
|
|
79
102
|
type: agg.expression.getType(),
|
|
80
103
|
generated: true
|
|
81
|
-
}))
|
|
82
|
-
|
|
104
|
+
})));
|
|
105
|
+
// Add all source columns to support HAVING clauses (consistent with getAttributes())
|
|
106
|
+
const sourceType = this.source.getType();
|
|
107
|
+
const existingNames = new Set(columns.map(col => col.name));
|
|
108
|
+
for (const sourceCol of sourceType.columns) {
|
|
109
|
+
// Only add if not already present (avoid duplicates for GROUP BY columns)
|
|
110
|
+
if (!existingNames.has(sourceCol.name)) {
|
|
111
|
+
columns.push(sourceCol);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
83
115
|
return {
|
|
84
116
|
typeClass: 'relation',
|
|
85
117
|
columns,
|
|
@@ -93,6 +125,27 @@ export class StreamAggregateNode extends PlanNode {
|
|
|
93
125
|
getAttributes() {
|
|
94
126
|
return this.attributesCache.value;
|
|
95
127
|
}
|
|
128
|
+
getProducingExprs() {
|
|
129
|
+
const attributes = this.getAttributes();
|
|
130
|
+
const map = new Map();
|
|
131
|
+
// Map GROUP BY expressions to their attribute IDs
|
|
132
|
+
for (let i = 0; i < this.groupBy.length; i++) {
|
|
133
|
+
const expr = this.groupBy[i];
|
|
134
|
+
const attr = attributes[i];
|
|
135
|
+
if (attr) {
|
|
136
|
+
map.set(attr.id, expr);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
// Map aggregate expressions to their attribute IDs
|
|
140
|
+
for (let i = 0; i < this.aggregates.length; i++) {
|
|
141
|
+
const agg = this.aggregates[i];
|
|
142
|
+
const attr = attributes[this.groupBy.length + i]; // Aggregates come after GROUP BY
|
|
143
|
+
if (attr) {
|
|
144
|
+
map.set(attr.id, agg.expression);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
return map;
|
|
148
|
+
}
|
|
96
149
|
getChildren() {
|
|
97
150
|
return [this.source, ...this.groupBy, ...this.aggregates.map(agg => agg.expression)];
|
|
98
151
|
}
|
|
@@ -162,7 +215,7 @@ export class StreamAggregateNode extends PlanNode {
|
|
|
162
215
|
const newGroupBy = restChildren.slice(0, this.groupBy.length);
|
|
163
216
|
const newAggregateExpressions = restChildren.slice(this.groupBy.length);
|
|
164
217
|
// Type check
|
|
165
|
-
if (!(
|
|
218
|
+
if (!isRelationalNode(newSource)) {
|
|
166
219
|
quereusError('StreamAggregateNode: first child must be a RelationalPlanNode', StatusCode.INTERNAL);
|
|
167
220
|
}
|
|
168
221
|
// Check if anything changed
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stream-aggregate.js","sourceRoot":"","sources":["../../../../src/planner/nodes/stream-aggregate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAmH,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"stream-aggregate.js","sourceRoot":"","sources":["../../../../src/planner/nodes/stream-aggregate.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,7 +13,7 @@ export declare class ScalarSubqueryNode extends PlanNode implements ScalarPlanNo
|
|
|
13
13
|
constructor(scope: Scope, expression: Expression, // The original SubqueryExpr AST node
|
|
14
14
|
subquery: RelationalPlanNode);
|
|
15
15
|
getType(): ScalarType;
|
|
16
|
-
getChildren(): readonly [];
|
|
16
|
+
getChildren(): readonly PlanNode[];
|
|
17
17
|
getRelations(): readonly [RelationalPlanNode];
|
|
18
18
|
withChildren(newChildren: readonly PlanNode[]): PlanNode;
|
|
19
19
|
toString(): string;
|
|
@@ -31,7 +31,7 @@ export declare class InNode extends PlanNode implements ScalarPlanNode {
|
|
|
31
31
|
condition: ScalarPlanNode, source?: RelationalPlanNode | undefined, // For IN subquery
|
|
32
32
|
values?: ScalarPlanNode[] | undefined);
|
|
33
33
|
getType(): ScalarType;
|
|
34
|
-
getChildren(): readonly
|
|
34
|
+
getChildren(): readonly PlanNode[];
|
|
35
35
|
getRelations(): readonly RelationalPlanNode[];
|
|
36
36
|
withChildren(newChildren: readonly PlanNode[]): PlanNode;
|
|
37
37
|
toString(): string;
|
|
@@ -45,8 +45,8 @@ export declare class ExistsNode extends PlanNode implements ScalarPlanNode {
|
|
|
45
45
|
constructor(scope: Scope, expression: Expression, // The original ExistsExpr AST node
|
|
46
46
|
subquery: RelationalPlanNode);
|
|
47
47
|
getType(): ScalarType;
|
|
48
|
-
getChildren(): readonly [];
|
|
49
|
-
getRelations(): readonly [
|
|
48
|
+
getChildren(): readonly PlanNode[];
|
|
49
|
+
getRelations(): readonly RelationalPlanNode[];
|
|
50
50
|
withChildren(newChildren: readonly PlanNode[]): PlanNode;
|
|
51
51
|
toString(): string;
|
|
52
52
|
getLogicalAttributes(): Record<string, unknown>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subquery.d.ts","sourceRoot":"","sources":["../../../../src/planner/nodes/subquery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAC/D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,KAAK,SAAS,EAAe,MAAM,uBAAuB,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAEhD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"subquery.d.ts","sourceRoot":"","sources":["../../../../src/planner/nodes/subquery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAC/D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,KAAK,SAAS,EAAe,MAAM,uBAAuB,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAEhD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAKtD,qBAAa,kBAAmB,SAAQ,QAAS,YAAW,cAAc;IAIxE,QAAQ,CAAC,KAAK,EAAE,KAAK;IACrB,QAAQ,CAAC,UAAU,EAAE,UAAU;IAC/B,QAAQ,CAAC,QAAQ,EAAE,kBAAkB;IALtC,SAAkB,QAAQ,+BAA+B;gBAG/C,KAAK,EAAE,KAAK,EACZ,UAAU,EAAE,UAAU,EAAE,qCAAqC;IAC7D,QAAQ,EAAE,kBAAkB;IAKtC,OAAO,IAAI,UAAU;IAiBrB,WAAW,IAAI,SAAS,QAAQ,EAAE;IAKlC,YAAY,IAAI,SAAS,CAAC,kBAAkB,CAAC;IAI7C,YAAY,CAAC,WAAW,EAAE,SAAS,QAAQ,EAAE,GAAG,QAAQ;IAyB/C,QAAQ,IAAI,MAAM;IAIlB,oBAAoB,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAMxD;AAED,qBAAa,MAAO,SAAQ,QAAS,YAAW,cAAc;IAM5D,QAAQ,CAAC,KAAK,EAAE,KAAK;IACrB,QAAQ,CAAC,UAAU,EAAE,UAAU;IAC/B,QAAQ,CAAC,SAAS,EAAE,cAAc;IAClC,QAAQ,CAAC,MAAM,CAAC,EAAE,kBAAkB;IACpC,QAAQ,CAAC,MAAM,CAAC,EAAE,cAAc,EAAE;IATnC,SAAkB,QAAQ,mBAAmB;IAE7C,SAAgB,UAAU,EAAE,SAAS,CAAC;gBAG5B,KAAK,EAAE,KAAK,EACZ,UAAU,EAAE,UAAU,EAAE,+BAA+B;IACvD,SAAS,EAAE,cAAc,EACzB,MAAM,CAAC,EAAE,kBAAkB,YAAA,EAAG,kBAAkB;IAChD,MAAM,CAAC,EAAE,cAAc,EAAE,YAAA;IAMnC,OAAO,IAAI,UAAU;IAUrB,WAAW,IAAI,SAAS,QAAQ,EAAE;IAYlC,YAAY,IAAI,SAAS,kBAAkB,EAAE;IAO7C,YAAY,CAAC,WAAW,EAAE,SAAS,QAAQ,EAAE,GAAG,QAAQ;IAuD/C,QAAQ,IAAI,MAAM;IAQlB,oBAAoB,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAQxD;AAED,qBAAa,UAAW,SAAQ,QAAS,YAAW,cAAc;IAIhE,QAAQ,CAAC,KAAK,EAAE,KAAK;IACrB,QAAQ,CAAC,UAAU,EAAE,UAAU;IAC/B,QAAQ,CAAC,QAAQ,EAAE,kBAAkB;IALtC,SAAkB,QAAQ,uBAAuB;gBAGvC,KAAK,EAAE,KAAK,EACZ,UAAU,EAAE,UAAU,EAAE,mCAAmC;IAC3D,QAAQ,EAAE,kBAAkB;IAKtC,OAAO,IAAI,UAAU;IAUrB,WAAW,IAAI,SAAS,QAAQ,EAAE;IAKlC,YAAY,IAAI,SAAS,kBAAkB,EAAE;IAI7C,YAAY,CAAC,WAAW,EAAE,SAAS,QAAQ,EAAE,GAAG,QAAQ;IAyB/C,QAAQ,IAAI,MAAM;IAIlB,oBAAoB,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAMxD"}
|
|
@@ -3,6 +3,8 @@ import { SqlDataType } from "../../common/types.js";
|
|
|
3
3
|
import { PlanNodeType } from "./plan-node-type.js";
|
|
4
4
|
import { compareSqlValues } from "../../util/comparison.js";
|
|
5
5
|
import { formatExpression, formatScalarType } from "../../util/plan-formatter.js";
|
|
6
|
+
import { quereusError } from "../../common/errors.js";
|
|
7
|
+
import { StatusCode } from "../../common/types.js";
|
|
6
8
|
export class ScalarSubqueryNode extends PlanNode {
|
|
7
9
|
scope;
|
|
8
10
|
expression;
|
|
@@ -32,16 +34,27 @@ export class ScalarSubqueryNode extends PlanNode {
|
|
|
32
34
|
};
|
|
33
35
|
}
|
|
34
36
|
getChildren() {
|
|
35
|
-
|
|
37
|
+
// Include the subquery so the optimizer can visit it
|
|
38
|
+
return [this.subquery];
|
|
36
39
|
}
|
|
37
40
|
getRelations() {
|
|
38
41
|
return [this.subquery];
|
|
39
42
|
}
|
|
40
43
|
withChildren(newChildren) {
|
|
41
|
-
if (newChildren.length !==
|
|
42
|
-
|
|
44
|
+
if (newChildren.length !== 1) {
|
|
45
|
+
quereusError(`ScalarSubqueryNode expects 1 child, got ${newChildren.length}`, StatusCode.INTERNAL);
|
|
46
|
+
}
|
|
47
|
+
const [newSubquery] = newChildren;
|
|
48
|
+
// Type check
|
|
49
|
+
if (newSubquery.getType().typeClass !== 'relation') {
|
|
50
|
+
quereusError('ScalarSubqueryNode: child must be a RelationalPlanNode', StatusCode.INTERNAL);
|
|
51
|
+
}
|
|
52
|
+
// Check if anything changed
|
|
53
|
+
if (newSubquery === this.subquery) {
|
|
54
|
+
return this;
|
|
43
55
|
}
|
|
44
|
-
|
|
56
|
+
// Create new instance
|
|
57
|
+
return new ScalarSubqueryNode(this.scope, this.expression, newSubquery);
|
|
45
58
|
}
|
|
46
59
|
toString() {
|
|
47
60
|
return `(subquery)`;
|
|
@@ -82,10 +95,15 @@ export class InNode extends PlanNode {
|
|
|
82
95
|
};
|
|
83
96
|
}
|
|
84
97
|
getChildren() {
|
|
98
|
+
// Include condition, values (if any), and source subquery (if any)
|
|
99
|
+
const children = [this.condition];
|
|
85
100
|
if (this.values) {
|
|
86
|
-
|
|
101
|
+
children.push(...this.values);
|
|
102
|
+
}
|
|
103
|
+
if (this.source) {
|
|
104
|
+
children.push(this.source);
|
|
87
105
|
}
|
|
88
|
-
return
|
|
106
|
+
return children;
|
|
89
107
|
}
|
|
90
108
|
getRelations() {
|
|
91
109
|
if (this.source) {
|
|
@@ -94,29 +112,45 @@ export class InNode extends PlanNode {
|
|
|
94
112
|
return [];
|
|
95
113
|
}
|
|
96
114
|
withChildren(newChildren) {
|
|
97
|
-
const expectedLength = this.values
|
|
115
|
+
const expectedLength = 1 + (this.values?.length ?? 0) + (this.source ? 1 : 0);
|
|
98
116
|
if (newChildren.length !== expectedLength) {
|
|
99
|
-
|
|
117
|
+
quereusError(`InNode expects ${expectedLength} children, got ${newChildren.length}`, StatusCode.INTERNAL);
|
|
100
118
|
}
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
119
|
+
let childIndex = 0;
|
|
120
|
+
const newCondition = newChildren[childIndex++];
|
|
121
|
+
// Type check condition
|
|
122
|
+
if (newCondition.getType().typeClass !== 'scalar') {
|
|
123
|
+
quereusError('InNode: condition must be a ScalarPlanNode', StatusCode.INTERNAL);
|
|
105
124
|
}
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
125
|
+
// Extract new values if they exist
|
|
126
|
+
let newValues;
|
|
127
|
+
if (this.values) {
|
|
128
|
+
newValues = [];
|
|
129
|
+
for (let i = 0; i < this.values.length; i++) {
|
|
130
|
+
const value = newChildren[childIndex++];
|
|
131
|
+
if (value.getType().typeClass !== 'scalar') {
|
|
132
|
+
quereusError('InNode: values must be ScalarPlanNodes', StatusCode.INTERNAL);
|
|
133
|
+
}
|
|
134
|
+
newValues.push(value);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
// Extract new source if it exists
|
|
138
|
+
let newSource;
|
|
139
|
+
if (this.source) {
|
|
140
|
+
newSource = newChildren[childIndex++];
|
|
141
|
+
if (newSource.getType().typeClass !== 'relation') {
|
|
142
|
+
quereusError('InNode: source must be a RelationalPlanNode', StatusCode.INTERNAL);
|
|
109
143
|
}
|
|
110
144
|
}
|
|
111
145
|
// Check if anything changed
|
|
112
146
|
const conditionChanged = newCondition !== this.condition;
|
|
113
|
-
const valuesChanged = this.values && newValues.some((val, i) => val !== this.values[i]);
|
|
114
|
-
|
|
147
|
+
const valuesChanged = this.values && newValues && newValues.some((val, i) => val !== this.values[i]);
|
|
148
|
+
const sourceChanged = newSource !== this.source;
|
|
149
|
+
if (!conditionChanged && !valuesChanged && !sourceChanged) {
|
|
115
150
|
return this;
|
|
116
151
|
}
|
|
117
152
|
// Create new instance
|
|
118
|
-
return new InNode(this.scope, this.expression, newCondition,
|
|
119
|
-
this.values ? newValues : undefined);
|
|
153
|
+
return new InNode(this.scope, this.expression, newCondition, newSource, newValues);
|
|
120
154
|
}
|
|
121
155
|
toString() {
|
|
122
156
|
if (this.source) {
|
|
@@ -157,16 +191,27 @@ export class ExistsNode extends PlanNode {
|
|
|
157
191
|
};
|
|
158
192
|
}
|
|
159
193
|
getChildren() {
|
|
160
|
-
|
|
194
|
+
// Include the subquery so the optimizer can visit it
|
|
195
|
+
return [this.subquery];
|
|
161
196
|
}
|
|
162
197
|
getRelations() {
|
|
163
198
|
return [this.subquery];
|
|
164
199
|
}
|
|
165
200
|
withChildren(newChildren) {
|
|
166
|
-
if (newChildren.length !==
|
|
167
|
-
|
|
201
|
+
if (newChildren.length !== 1) {
|
|
202
|
+
quereusError(`ExistsNode expects 1 child, got ${newChildren.length}`, StatusCode.INTERNAL);
|
|
168
203
|
}
|
|
169
|
-
|
|
204
|
+
const [newSubquery] = newChildren;
|
|
205
|
+
// Type check
|
|
206
|
+
if (newSubquery.getType().typeClass !== 'relation') {
|
|
207
|
+
quereusError('ExistsNode: child must be a RelationalPlanNode', StatusCode.INTERNAL);
|
|
208
|
+
}
|
|
209
|
+
// Check if anything changed
|
|
210
|
+
if (newSubquery === this.subquery) {
|
|
211
|
+
return this;
|
|
212
|
+
}
|
|
213
|
+
// Create new instance
|
|
214
|
+
return new ExistsNode(this.scope, this.expression, newSubquery);
|
|
170
215
|
}
|
|
171
216
|
toString() {
|
|
172
217
|
return `EXISTS (subquery)`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subquery.js","sourceRoot":"","sources":["../../../../src/planner/nodes/subquery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAuB,MAAM,gBAAgB,CAAC;AAG/D,OAAO,EAAkB,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAE5D,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"subquery.js","sourceRoot":"","sources":["../../../../src/planner/nodes/subquery.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Physical table access nodes for seek and range scan operations
|
|
3
|
+
* These replace logical TableReferenceNode during optimization
|
|
4
|
+
*/
|
|
5
|
+
import { PlanNodeType } from './plan-node-type.js';
|
|
6
|
+
import { PlanNode, type UnaryRelationalNode, type PhysicalProperties, type Attribute } from './plan-node.js';
|
|
7
|
+
import { TableReferenceNode } from './reference.js';
|
|
8
|
+
import type { RelationType } from '../../common/datatype.js';
|
|
9
|
+
import type { Scope } from '../scopes/scope.js';
|
|
10
|
+
import type { FilterInfo } from '../../vtab/filter-info.js';
|
|
11
|
+
import type { ScalarPlanNode } from './plan-node.js';
|
|
12
|
+
/**
|
|
13
|
+
* Base class for physical table access operations
|
|
14
|
+
* Provides common functionality for sequential scan, index scan, and index seek
|
|
15
|
+
*/
|
|
16
|
+
export declare abstract class TableAccessNode extends PlanNode implements UnaryRelationalNode {
|
|
17
|
+
readonly source: TableReferenceNode;
|
|
18
|
+
readonly filterInfo: FilterInfo;
|
|
19
|
+
private attributesCache;
|
|
20
|
+
private outputType;
|
|
21
|
+
constructor(scope: Scope, source: TableReferenceNode, filterInfo: FilterInfo, estimatedCostOverride?: number);
|
|
22
|
+
getAttributes(): Attribute[];
|
|
23
|
+
getType(): RelationType;
|
|
24
|
+
getChildren(): readonly PlanNode[];
|
|
25
|
+
getRelations(): readonly [TableReferenceNode];
|
|
26
|
+
withChildren(newChildren: readonly PlanNode[]): PlanNode;
|
|
27
|
+
getLogicalAttributes(): Record<string, unknown>;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Sequential scan - reads entire table without using indexes
|
|
31
|
+
* Used when no suitable index exists or for small tables
|
|
32
|
+
*/
|
|
33
|
+
export declare class SeqScanNode extends TableAccessNode {
|
|
34
|
+
readonly nodeType = PlanNodeType.SeqScan;
|
|
35
|
+
computePhysical(): Partial<PhysicalProperties>;
|
|
36
|
+
toString(): string;
|
|
37
|
+
withChildren(newChildren: readonly PlanNode[]): PlanNode;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Index scan - uses an index to read table data in order
|
|
41
|
+
* Provides ordering and can handle range queries efficiently
|
|
42
|
+
*/
|
|
43
|
+
export declare class IndexScanNode extends TableAccessNode {
|
|
44
|
+
readonly indexName: string;
|
|
45
|
+
readonly providesOrdering?: {
|
|
46
|
+
column: number;
|
|
47
|
+
desc: boolean;
|
|
48
|
+
}[] | undefined;
|
|
49
|
+
readonly nodeType = PlanNodeType.IndexScan;
|
|
50
|
+
constructor(scope: Scope, source: TableReferenceNode, filterInfo: FilterInfo, indexName: string, providesOrdering?: {
|
|
51
|
+
column: number;
|
|
52
|
+
desc: boolean;
|
|
53
|
+
}[] | undefined, estimatedCostOverride?: number);
|
|
54
|
+
computePhysical(): Partial<PhysicalProperties>;
|
|
55
|
+
toString(): string;
|
|
56
|
+
getLogicalAttributes(): Record<string, unknown>;
|
|
57
|
+
withChildren(newChildren: readonly PlanNode[]): PlanNode;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Index seek - point lookup or tight range using an index
|
|
61
|
+
* Very efficient for equality constraints and small ranges
|
|
62
|
+
*/
|
|
63
|
+
export declare class IndexSeekNode extends TableAccessNode {
|
|
64
|
+
readonly indexName: string;
|
|
65
|
+
readonly seekKeys: ScalarPlanNode[];
|
|
66
|
+
readonly isRange: boolean;
|
|
67
|
+
readonly providesOrdering?: {
|
|
68
|
+
column: number;
|
|
69
|
+
desc: boolean;
|
|
70
|
+
}[] | undefined;
|
|
71
|
+
readonly nodeType = PlanNodeType.IndexSeek;
|
|
72
|
+
constructor(scope: Scope, source: TableReferenceNode, filterInfo: FilterInfo, indexName: string, seekKeys: ScalarPlanNode[], isRange?: boolean, providesOrdering?: {
|
|
73
|
+
column: number;
|
|
74
|
+
desc: boolean;
|
|
75
|
+
}[] | undefined, estimatedCostOverride?: number);
|
|
76
|
+
computePhysical(): Partial<PhysicalProperties>;
|
|
77
|
+
toString(): string;
|
|
78
|
+
getLogicalAttributes(): Record<string, unknown>;
|
|
79
|
+
getSeekKeys(): readonly ScalarPlanNode[];
|
|
80
|
+
getChildren(): readonly PlanNode[];
|
|
81
|
+
withChildren(newChildren: readonly PlanNode[]): PlanNode;
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=table-access-nodes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"table-access-nodes.d.ts","sourceRoot":"","sources":["../../../../src/planner/nodes/table-access-nodes.ts"],"names":[],"mappings":"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"}
|