@quereus/quereus 0.1.0 → 0.2.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 +47 -23
- 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 +9 -2
- package/dist/src/parser/ast.d.ts.map +1 -1
- package/dist/src/parser/parser.d.ts.map +1 -1
- package/dist/src/parser/parser.js +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 +6 -3
- 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 +4 -1
- 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 +7 -4
- 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 +11 -4
- 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.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 +14 -121
- 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/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/package.json +8 -3
- 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 +11 -2
- package/src/parser/parser.ts +40 -47
- package/src/planner/analysis/const-pass.ts +281 -270
- package/src/planner/building/constraint-builder.ts +114 -0
- package/src/planner/building/delete.ts +16 -3
- package/src/planner/building/expression.ts +35 -7
- package/src/planner/building/insert.ts +14 -1
- 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 +19 -4
- 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 +47 -13
- 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 +2 -2
- 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 +17 -142
- 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/util/plugin-loader.ts +78 -4
- package/src/util/working-table-iterable.ts +15 -7
- package/src/vtab/manifest.ts +42 -0
- 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
|
@@ -9,36 +9,43 @@ import { createLogger } from '../../../common/logger.js';
|
|
|
9
9
|
import { MaterializationAdvisory } from '../../cache/materialization-advisory.js';
|
|
10
10
|
const log = createLogger('optimizer:rule:materialization-advisory');
|
|
11
11
|
export function ruleMaterializationAdvisory(node, context) {
|
|
12
|
-
//
|
|
13
|
-
//
|
|
14
|
-
//
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
]);
|
|
19
|
-
if (!rootNodeTypes.has(node.nodeType)) {
|
|
12
|
+
// Apply this rule when we're at a non-relational node that has relational children
|
|
13
|
+
// This captures transitions into relational subtrees (queries, subqueries, CTEs, etc.)
|
|
14
|
+
// Check if this is a non-relational node
|
|
15
|
+
const nodeType = node.getType();
|
|
16
|
+
if (nodeType.typeClass === 'relation') {
|
|
17
|
+
// This is already a relational node, don't apply here
|
|
20
18
|
return null;
|
|
21
19
|
}
|
|
22
|
-
|
|
20
|
+
// Check if this node has any relational children
|
|
21
|
+
const relations = node.getRelations();
|
|
22
|
+
if (relations.length === 0) {
|
|
23
|
+
// No relational children, nothing to analyze
|
|
24
|
+
return null;
|
|
25
|
+
}
|
|
26
|
+
log('Applying materialization advisory at transition from %s to relational children', node.nodeType);
|
|
23
27
|
try {
|
|
24
28
|
// Create advisory with current tuning parameters
|
|
25
29
|
const advisory = new MaterializationAdvisory(context.tuning);
|
|
26
|
-
//
|
|
27
|
-
|
|
28
|
-
//
|
|
29
|
-
const
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
30
|
+
// We need to analyze and potentially transform each relational subtree
|
|
31
|
+
let anyTransformed = false;
|
|
32
|
+
// For each relational child, analyze and transform its entire subtree
|
|
33
|
+
for (const relation of relations) {
|
|
34
|
+
const transformedRelation = advisory.analyzeAndTransform(relation);
|
|
35
|
+
if (transformedRelation !== relation) {
|
|
36
|
+
anyTransformed = true;
|
|
37
|
+
log('Transformed relational subtree under %s', node.nodeType);
|
|
38
|
+
}
|
|
34
39
|
}
|
|
35
|
-
|
|
36
|
-
//
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
40
|
+
// If any relational children were transformed, we need to return a transformed node
|
|
41
|
+
// However, since we can't easily reconstruct the parent node with new relational children
|
|
42
|
+
// (as discussed in the earlier implementation), we'll analyze the entire node
|
|
43
|
+
if (anyTransformed) {
|
|
44
|
+
// Re-analyze the entire tree rooted at this node
|
|
45
|
+
const fullTransform = advisory.analyzeAndTransform(node);
|
|
46
|
+
if (fullTransform !== node) {
|
|
47
|
+
return fullTransform;
|
|
48
|
+
}
|
|
42
49
|
}
|
|
43
50
|
return null;
|
|
44
51
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rule-materialization-advisory.js","sourceRoot":"","sources":["../../../../../src/planner/rules/cache/rule-materialization-advisory.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAGzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,yCAAyC,CAAC;AAElF,MAAM,GAAG,GAAG,YAAY,CAAC,yCAAyC,CAAC,CAAC;AAEpE,MAAM,UAAU,2BAA2B,CAAC,IAAc,EAAE,OAAmB;IAC9E,
|
|
1
|
+
{"version":3,"file":"rule-materialization-advisory.js","sourceRoot":"","sources":["../../../../../src/planner/rules/cache/rule-materialization-advisory.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAGzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,yCAAyC,CAAC;AAElF,MAAM,GAAG,GAAG,YAAY,CAAC,yCAAyC,CAAC,CAAC;AAEpE,MAAM,UAAU,2BAA2B,CAAC,IAAc,EAAE,OAAmB;IAC9E,mFAAmF;IACnF,uFAAuF;IAEvF,yCAAyC;IACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;IAChC,IAAI,QAAQ,CAAC,SAAS,KAAK,UAAU,EAAE,CAAC;QACvC,sDAAsD;QACtD,OAAO,IAAI,CAAC;IACb,CAAC;IAED,iDAAiD;IACjD,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;IACtC,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,6CAA6C;QAC7C,OAAO,IAAI,CAAC;IACb,CAAC;IAED,GAAG,CAAC,gFAAgF,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IAErG,IAAI,CAAC;QACJ,iDAAiD;QACjD,MAAM,QAAQ,GAAG,IAAI,uBAAuB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAE7D,uEAAuE;QACvE,IAAI,cAAc,GAAG,KAAK,CAAC;QAE3B,sEAAsE;QACtE,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YAClC,MAAM,mBAAmB,GAAG,QAAQ,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;YACnE,IAAI,mBAAmB,KAAK,QAAQ,EAAE,CAAC;gBACtC,cAAc,GAAG,IAAI,CAAC;gBACtB,GAAG,CAAC,yCAAyC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC/D,CAAC;QACF,CAAC;QAED,oFAAoF;QACpF,0FAA0F;QAC1F,8EAA8E;QAC9E,IAAI,cAAc,EAAE,CAAC;YACpB,iDAAiD;YACjD,MAAM,aAAa,GAAG,QAAQ,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;YACzD,IAAI,aAAa,KAAK,IAAI,EAAE,CAAC;gBAC5B,OAAO,aAAa,CAAC;YACtB,CAAC;QACF,CAAC;QAED,OAAO,IAAI,CAAC;IAEb,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,GAAG,CAAC,uCAAuC,EAAE,KAAK,CAAC,CAAC;QACpD,8CAA8C;QAC9C,OAAO,IAAI,CAAC;IACb,CAAC;AACF,CAAC"}
|
|
@@ -5,16 +5,6 @@ import { type Scope, Ambiguous } from './scope.js';
|
|
|
5
5
|
* Scope that tracks references.
|
|
6
6
|
*/
|
|
7
7
|
export declare abstract class BaseScope implements Scope {
|
|
8
|
-
/** References that have been resolved through this scope. */
|
|
9
|
-
private _references;
|
|
10
8
|
abstract resolveSymbol(symbolKey: string, expression: AST.Expression): PlanNode | typeof Ambiguous | undefined;
|
|
11
|
-
/**
|
|
12
|
-
* Returns all references that have been resolved through this scope.
|
|
13
|
-
* This includes references from both this scope and any parent scopes.
|
|
14
|
-
*
|
|
15
|
-
* @returns An array of all resolved references.
|
|
16
|
-
*/
|
|
17
|
-
getReferences(): readonly PlanNode[];
|
|
18
|
-
addReference(reference: PlanNode): void;
|
|
19
9
|
}
|
|
20
10
|
//# sourceMappingURL=base.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../../src/planner/scopes/base.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,KAAK,GAAG,MAAM,qBAAqB,CAAC;AAC3C,OAAO,EAAE,KAAK,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEnD;;GAEG;AACH,8BAAsB,SAAU,YAAW,KAAK;IAC/C,
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../../src/planner/scopes/base.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,KAAK,GAAG,MAAM,qBAAqB,CAAC;AAC3C,OAAO,EAAE,KAAK,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEnD;;GAEG;AACH,8BAAsB,SAAU,YAAW,KAAK;IAC/C,QAAQ,CAAC,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,CAAC,UAAU,GAAG,QAAQ,GAAG,OAAO,SAAS,GAAG,SAAS;CAC9G"}
|
|
@@ -2,19 +2,5 @@
|
|
|
2
2
|
* Scope that tracks references.
|
|
3
3
|
*/
|
|
4
4
|
export class BaseScope {
|
|
5
|
-
/** References that have been resolved through this scope. */
|
|
6
|
-
_references = [];
|
|
7
|
-
/**
|
|
8
|
-
* Returns all references that have been resolved through this scope.
|
|
9
|
-
* This includes references from both this scope and any parent scopes.
|
|
10
|
-
*
|
|
11
|
-
* @returns An array of all resolved references.
|
|
12
|
-
*/
|
|
13
|
-
getReferences() {
|
|
14
|
-
return this._references;
|
|
15
|
-
}
|
|
16
|
-
addReference(reference) {
|
|
17
|
-
this._references.push(reference);
|
|
18
|
-
}
|
|
19
5
|
}
|
|
20
6
|
//# sourceMappingURL=base.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../../../src/planner/scopes/base.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,MAAM,OAAgB,SAAS;
|
|
1
|
+
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../../../src/planner/scopes/base.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,MAAM,OAAgB,SAAS;CAE9B"}
|
|
@@ -4,8 +4,6 @@ import { type Scope, Ambiguous } from './scope.js';
|
|
|
4
4
|
/** Scope that contains no symbols. */
|
|
5
5
|
export declare class EmptyScope implements Scope {
|
|
6
6
|
resolveSymbol(_symbolKey: string, _expression: AST.Expression): PlanNode | typeof Ambiguous | undefined;
|
|
7
|
-
getReferences(): readonly PlanNode[];
|
|
8
|
-
addReference(_reference: PlanNode): void;
|
|
9
7
|
static readonly instance: EmptyScope;
|
|
10
8
|
}
|
|
11
9
|
//# sourceMappingURL=empty.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"empty.d.ts","sourceRoot":"","sources":["../../../../src/planner/scopes/empty.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"empty.d.ts","sourceRoot":"","sources":["../../../../src/planner/scopes/empty.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,qBAAqB,CAAC;AAC3C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,KAAK,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEnD,uCAAuC;AACvC,qBAAa,UAAW,YAAW,KAAK;IACvC,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,CAAC,UAAU,GAAG,QAAQ,GAAG,OAAO,SAAS,GAAG,SAAS;IAIvG,MAAM,CAAC,QAAQ,CAAC,QAAQ,aAAoB;CAC5C"}
|
|
@@ -1,16 +1,8 @@
|
|
|
1
|
-
import { QuereusError } from '../../common/errors.js';
|
|
2
|
-
import { StatusCode } from '../../common/types.js';
|
|
3
1
|
/** Scope that contains no symbols. */
|
|
4
2
|
export class EmptyScope {
|
|
5
3
|
resolveSymbol(_symbolKey, _expression) {
|
|
6
4
|
return undefined;
|
|
7
5
|
}
|
|
8
|
-
getReferences() {
|
|
9
|
-
return [];
|
|
10
|
-
}
|
|
11
|
-
addReference(_reference) {
|
|
12
|
-
throw new QuereusError('EmptyScope does not support adding references.', StatusCode.MISUSE);
|
|
13
|
-
}
|
|
14
6
|
static instance = new EmptyScope();
|
|
15
7
|
}
|
|
16
8
|
//# sourceMappingURL=empty.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"empty.js","sourceRoot":"","sources":["../../../../src/planner/scopes/empty.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"empty.js","sourceRoot":"","sources":["../../../../src/planner/scopes/empty.ts"],"names":[],"mappings":"AAIA,uCAAuC;AACvC,MAAM,OAAO,UAAU;IACtB,aAAa,CAAC,UAAkB,EAAE,WAA2B;QAC5D,OAAO,SAAS,CAAC;IAClB,CAAC;IAED,MAAM,CAAU,QAAQ,GAAG,IAAI,UAAU,EAAE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"multi.d.ts","sourceRoot":"","sources":["../../../../src/planner/scopes/multi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,KAAK,GAAG,MAAM,qBAAqB,CAAC;AAG3C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC;;;;GAIG;AACH,qBAAa,UAAW,SAAQ,SAAS;aAEvB,MAAM,EAAE,KAAK,EAAE;gBAAf,MAAM,EAAE,KAAK,EAAE;IAKhC,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,UAAU,EAAE,GAAG,CAAC,UAAU,EAAE,YAAY,EAAE,KAAK,KAAK,QAAQ,GAAG,IAAI;IAItH,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,CAAC,UAAU,GAAG,QAAQ,GAAG,OAAO,SAAS,GAAG,SAAS;
|
|
1
|
+
{"version":3,"file":"multi.d.ts","sourceRoot":"","sources":["../../../../src/planner/scopes/multi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,KAAK,GAAG,MAAM,qBAAqB,CAAC;AAG3C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC;;;;GAIG;AACH,qBAAa,UAAW,SAAQ,SAAS;aAEvB,MAAM,EAAE,KAAK,EAAE;gBAAf,MAAM,EAAE,KAAK,EAAE;IAKhC,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,UAAU,EAAE,GAAG,CAAC,UAAU,EAAE,YAAY,EAAE,KAAK,KAAK,QAAQ,GAAG,IAAI;IAItH,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,CAAC,UAAU,GAAG,QAAQ,GAAG,OAAO,SAAS,GAAG,SAAS;CAcrG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"multi.js","sourceRoot":"","sources":["../../../../src/planner/scopes/multi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvC,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAGnD,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC;;;;GAIG;AACH,MAAM,OAAO,UAAW,SAAQ,SAAS;IAEvB;IADjB,YACiB,MAAe;QAE/B,KAAK,EAAE,CAAC;QAFQ,WAAM,GAAN,MAAM,CAAS;IAGhC,CAAC;IAED,cAAc,CAAC,UAAkB,EAAE,aAA4E;QAC9G,MAAM,IAAI,YAAY,CAAC,kDAAkD,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;IAC9F,CAAC;IAED,aAAa,CAAC,SAAiB,EAAE,UAA0B;QAC1D,iEAAiE;QACjE,oEAAoE;QACpE,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACjC,MAAM,MAAM,GAAG,KAAK,CAAC,aAAa,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;YAC1D,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBAC1B,OAAO,SAAS,CAAC;YAClB,CAAC;YACD,IAAI,MAAM,EAAE,CAAC;gBACZ,
|
|
1
|
+
{"version":3,"file":"multi.js","sourceRoot":"","sources":["../../../../src/planner/scopes/multi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvC,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAGnD,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC;;;;GAIG;AACH,MAAM,OAAO,UAAW,SAAQ,SAAS;IAEvB;IADjB,YACiB,MAAe;QAE/B,KAAK,EAAE,CAAC;QAFQ,WAAM,GAAN,MAAM,CAAS;IAGhC,CAAC;IAED,cAAc,CAAC,UAAkB,EAAE,aAA4E;QAC9G,MAAM,IAAI,YAAY,CAAC,kDAAkD,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;IAC9F,CAAC;IAED,aAAa,CAAC,SAAiB,EAAE,UAA0B;QAC1D,iEAAiE;QACjE,oEAAoE;QACpE,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACjC,MAAM,MAAM,GAAG,KAAK,CAAC,aAAa,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;YAC1D,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBAC1B,OAAO,SAAS,CAAC;YAClB,CAAC;YACD,IAAI,MAAM,EAAE,CAAC;gBACZ,OAAO,MAAM,CAAC;YACf,CAAC;QACF,CAAC;QACD,OAAO,SAAS,CAAC;IAClB,CAAC;CACD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"param.d.ts","sourceRoot":"","sources":["../../../../src/planner/scopes/param.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,GAAG,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,KAAK,KAAK,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAE3D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAStD;;;GAGG;AACH,qBAAa,cAAe,SAAQ,SAAS;aAM3B,WAAW,EAAE,KAAK;IALnC,OAAO,CAAC,mBAAmB,CAAa;IACxC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA2D;IACvF,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAA2C;gBAG9D,WAAW,EAAE,KAAK,EAClC,kBAAkB,CAAC,EAAE,WAAW,CAAC,MAAM,GAAG,MAAM,EAAE,UAAU,CAAC;IAM9D,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,CAAC,UAAU,GAAG,QAAQ,GAAG,OAAO,SAAS,GAAG,SAAS;
|
|
1
|
+
{"version":3,"file":"param.d.ts","sourceRoot":"","sources":["../../../../src/planner/scopes/param.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,GAAG,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,KAAK,KAAK,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAE3D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAStD;;;GAGG;AACH,qBAAa,cAAe,SAAQ,SAAS;aAM3B,WAAW,EAAE,KAAK;IALnC,OAAO,CAAC,mBAAmB,CAAa;IACxC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA2D;IACvF,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAA2C;gBAG9D,WAAW,EAAE,KAAK,EAClC,kBAAkB,CAAC,EAAE,WAAW,CAAC,MAAM,GAAG,MAAM,EAAE,UAAU,CAAC;IAM9D,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,CAAC,UAAU,GAAG,QAAQ,GAAG,OAAO,SAAS,GAAG,SAAS;IAiDrG;;OAEG;IACH,aAAa,IAAI,WAAW,CAAC,MAAM,GAAG,MAAM,EAAE,sBAAsB,CAAC;CAUrE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"param.js","sourceRoot":"","sources":["../../../../src/planner/scopes/param.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"param.js","sourceRoot":"","sources":["../../../../src/planner/scopes/param.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,8 +9,6 @@ import { type ReferenceCallback, type Scope, Ambiguous } from './scope.js';
|
|
|
9
9
|
export declare class RegisteredScope implements Scope {
|
|
10
10
|
/** The parent scope, if any. The root scope of a query has no parent. */
|
|
11
11
|
readonly parent?: Scope | undefined;
|
|
12
|
-
/** References that have been resolved through this scope. */
|
|
13
|
-
private _references;
|
|
14
12
|
/** Symbols that have been registered in this scope. */
|
|
15
13
|
private registeredSymbols;
|
|
16
14
|
constructor(
|
|
@@ -29,14 +27,6 @@ export declare class RegisteredScope implements Scope {
|
|
|
29
27
|
*/
|
|
30
28
|
registerSymbol(symbolKey: string, getReference: ReferenceCallback): void;
|
|
31
29
|
resolveSymbol(symbolKey: string, expression: AST.Expression): PlanNode | typeof Ambiguous | undefined;
|
|
32
|
-
/**
|
|
33
|
-
* Returns all references that have been resolved through this scope.
|
|
34
|
-
* This includes references from both this scope and any parent scopes.
|
|
35
|
-
*
|
|
36
|
-
* @returns An array of all resolved references.
|
|
37
|
-
*/
|
|
38
|
-
getReferences(): readonly PlanNode[];
|
|
39
|
-
addReference(reference: PlanNode): void;
|
|
40
30
|
/**
|
|
41
31
|
* Returns all symbols that have been registered in this scope.
|
|
42
32
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registered.d.ts","sourceRoot":"","sources":["../../../../src/planner/scopes/registered.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,KAAK,GAAG,MAAM,qBAAqB,CAAC;AAC3C,OAAO,EAAE,KAAK,iBAAiB,EAAE,KAAK,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE3E;;;;GAIG;AACH,qBAAa,eAAgB,YAAW,KAAK;
|
|
1
|
+
{"version":3,"file":"registered.d.ts","sourceRoot":"","sources":["../../../../src/planner/scopes/registered.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,KAAK,GAAG,MAAM,qBAAqB,CAAC;AAC3C,OAAO,EAAE,KAAK,iBAAiB,EAAE,KAAK,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE3E;;;;GAIG;AACH,qBAAa,eAAgB,YAAW,KAAK;IAK3C,yEAAyE;aACzD,MAAM,CAAC,EAAE,KAAK;IAL/B,uDAAuD;IACvD,OAAO,CAAC,iBAAiB,CAA6C;;IAGrE,yEAAyE;IACzD,MAAM,CAAC,EAAE,KAAK,YAAA;IAG/B;;;;;;;;;;OAUG;IACH,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,iBAAiB,GAAG,IAAI;IAQxE,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,CAAC,UAAU,GAAG,QAAQ,GAAG,OAAO,SAAS,GAAG,SAAS;IAWrG;;;;OAIG;IACH,UAAU,IAAI,SAAS,CAAC,MAAM,EAAE,iBAAiB,CAAC,EAAE;CAGpD"}
|
|
@@ -7,8 +7,6 @@ import { QuereusError } from '../../common/errors.js';
|
|
|
7
7
|
*/
|
|
8
8
|
export class RegisteredScope {
|
|
9
9
|
parent;
|
|
10
|
-
/** References that have been resolved through this scope. */
|
|
11
|
-
_references = [];
|
|
12
10
|
/** Symbols that have been registered in this scope. */
|
|
13
11
|
registeredSymbols = new Map();
|
|
14
12
|
constructor(
|
|
@@ -37,27 +35,13 @@ export class RegisteredScope {
|
|
|
37
35
|
resolveSymbol(symbolKey, expression) {
|
|
38
36
|
const reference = this.registeredSymbols.get(symbolKey.toLowerCase());
|
|
39
37
|
if (reference) {
|
|
40
|
-
|
|
41
|
-
this.addReference(node);
|
|
42
|
-
return node;
|
|
38
|
+
return reference(expression, this);
|
|
43
39
|
}
|
|
44
40
|
if (this.parent) {
|
|
45
41
|
return this.parent.resolveSymbol(symbolKey, expression);
|
|
46
42
|
}
|
|
47
43
|
return undefined;
|
|
48
44
|
}
|
|
49
|
-
/**
|
|
50
|
-
* Returns all references that have been resolved through this scope.
|
|
51
|
-
* This includes references from both this scope and any parent scopes.
|
|
52
|
-
*
|
|
53
|
-
* @returns An array of all resolved references.
|
|
54
|
-
*/
|
|
55
|
-
getReferences() {
|
|
56
|
-
return this._references;
|
|
57
|
-
}
|
|
58
|
-
addReference(reference) {
|
|
59
|
-
this._references.push(reference);
|
|
60
|
-
}
|
|
61
45
|
/**
|
|
62
46
|
* Returns all symbols that have been registered in this scope.
|
|
63
47
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registered.js","sourceRoot":"","sources":["../../../../src/planner/scopes/registered.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAKtD;;;;GAIG;AACH,MAAM,OAAO,eAAe;
|
|
1
|
+
{"version":3,"file":"registered.js","sourceRoot":"","sources":["../../../../src/planner/scopes/registered.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAKtD;;;;GAIG;AACH,MAAM,OAAO,eAAe;IAMV;IALjB,uDAAuD;IAC/C,iBAAiB,GAAmC,IAAI,GAAG,EAAE,CAAC;IAEtE;IACC,yEAAyE;IACzD,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;IAC3B,CAAC;IAEL;;;;;;;;;;OAUG;IACH,cAAc,CAAC,SAAiB,EAAE,YAA+B;QAChE,MAAM,cAAc,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC;QAC/C,IAAI,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC;YAChD,MAAM,IAAI,YAAY,CAAC,WAAW,cAAc,qCAAqC,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;QAC1G,CAAC;QACD,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;IAC1D,CAAC;IAED,aAAa,CAAC,SAAiB,EAAE,UAA0B;QAC1D,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC;QACtE,IAAI,SAAS,EAAE,CAAC;YACf,OAAO,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QACpC,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QACzD,CAAC;QACD,OAAO,SAAS,CAAC;IAClB,CAAC;IAED;;;;OAIG;IACH,UAAU;QACT,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,CAAC,CAAC;IACrD,CAAC;CACD"}
|
|
@@ -9,13 +9,5 @@ export type ReferenceCallback = (expression: AST.Expression, currentScope: Scope
|
|
|
9
9
|
*/
|
|
10
10
|
export interface Scope {
|
|
11
11
|
resolveSymbol(symbolKey: string, expression: AST.Expression): PlanNode | typeof Ambiguous | undefined;
|
|
12
|
-
/**
|
|
13
|
-
* Returns all references that have been resolved through this scope.
|
|
14
|
-
* This includes references from both this scope and any parent scopes.
|
|
15
|
-
*
|
|
16
|
-
* @returns An array of all resolved references.
|
|
17
|
-
*/
|
|
18
|
-
getReferences(): readonly PlanNode[];
|
|
19
|
-
addReference(reference: PlanNode): void;
|
|
20
12
|
}
|
|
21
13
|
//# sourceMappingURL=scope.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scope.d.ts","sourceRoot":"","sources":["../../../../src/planner/scopes/scope.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,KAAK,GAAG,MAAM,qBAAqB,CAAC;AAG3C,eAAO,MAAM,SAAS,eAAW,CAAC;AAElC,MAAM,MAAM,iBAAiB,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,UAAU,EAAE,YAAY,EAAE,KAAK,KAAK,QAAQ,CAAC;AAE9F;;;;GAIG;AACH,MAAM,WAAW,KAAK;IACrB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,CAAC,UAAU,GAAG,QAAQ,GAAG,OAAO,SAAS,GAAG,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"scope.d.ts","sourceRoot":"","sources":["../../../../src/planner/scopes/scope.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,KAAK,GAAG,MAAM,qBAAqB,CAAC;AAG3C,eAAO,MAAM,SAAS,eAAW,CAAC;AAElC,MAAM,MAAM,iBAAiB,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,UAAU,EAAE,YAAY,EAAE,KAAK,KAAK,QAAQ,CAAC;AAE9F;;;;GAIG;AACH,MAAM,WAAW,KAAK;IACrB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,CAAC,UAAU,GAAG,QAAQ,GAAG,OAAO,SAAS,GAAG,SAAS,CAAC;CACtG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plan-validator.d.ts","sourceRoot":"","sources":["../../../../src/planner/validation/plan-validator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"plan-validator.d.ts","sourceRoot":"","sources":["../../../../src/planner/validation/plan-validator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAoB,QAAQ,EAA2B,MAAM,uBAAuB,CAAC;AAQ5F;;GAEG;AACH,MAAM,WAAW,iBAAiB;IACjC,oEAAoE;IACpE,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,qDAAqD;IACrD,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,mDAAmD;IACnD,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,GAAE,iBAAsB,GAAG,IAAI,CAc1F;AAkRD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CASrD"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Plan validator pass for the Titan optimizer
|
|
3
3
|
* Validates that a plan tree meets all invariants before emission
|
|
4
4
|
*/
|
|
5
|
-
import { PlanNode } from '../nodes/plan-node.js';
|
|
5
|
+
import { isRelationalNode, PlanNode } from '../nodes/plan-node.js';
|
|
6
6
|
import { PlanNodeType } from '../nodes/plan-node-type.js';
|
|
7
7
|
import { QuereusError } from '../../common/errors.js';
|
|
8
8
|
import { StatusCode } from '../../common/types.js';
|
|
@@ -198,12 +198,6 @@ function validateOrdering(ordering, columnCount, nodePath) {
|
|
|
198
198
|
}
|
|
199
199
|
}
|
|
200
200
|
}
|
|
201
|
-
/**
|
|
202
|
-
* Check if a node is a relational node
|
|
203
|
-
*/
|
|
204
|
-
function isRelationalNode(node) {
|
|
205
|
-
return 'getAttributes' in node && typeof node.getAttributes === 'function';
|
|
206
|
-
}
|
|
207
201
|
/**
|
|
208
202
|
* Check if a node type is a DDL node that doesn't produce attributes
|
|
209
203
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plan-validator.js","sourceRoot":"","sources":["../../../../src/planner/validation/plan-validator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,EAA2B,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"plan-validator.js","sourceRoot":"","sources":["../../../../src/planner/validation/plan-validator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { RuntimeContext } from './types.js';
|
|
2
|
+
import type { RowDescriptor, RowGetter } from '../planner/nodes/plan-node.js';
|
|
3
|
+
import type { SqlValue, Row } from '../common/types.js';
|
|
4
|
+
/**
|
|
5
|
+
* A mutable slot for efficient row context management in streaming operations.
|
|
6
|
+
* Avoids per-row Map mutations while maintaining context safety.
|
|
7
|
+
*/
|
|
8
|
+
export interface RowSlot {
|
|
9
|
+
/** Replace the current row (cheap field write) */
|
|
10
|
+
set(row: Row): void;
|
|
11
|
+
/** Tear down (removes descriptor from context) */
|
|
12
|
+
close(): void;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Create a row slot for efficient streaming context management.
|
|
16
|
+
* The slot installs a context entry once and updates it by reference.
|
|
17
|
+
* Perfect for scan/join/window operations that process many rows.
|
|
18
|
+
*/
|
|
19
|
+
export declare function createRowSlot(rctx: RuntimeContext, descriptor: RowDescriptor): RowSlot;
|
|
20
|
+
/**
|
|
21
|
+
* Resolve an attribute ID to its column value in the current context.
|
|
22
|
+
* Searches from newest (innermost) to oldest (outermost) scope.
|
|
23
|
+
*/
|
|
24
|
+
export declare function resolveAttribute(rctx: RuntimeContext, attributeId: number, columnName?: string): SqlValue;
|
|
25
|
+
/**
|
|
26
|
+
* Look up a specific column by descriptor and index.
|
|
27
|
+
* Useful when you already know which descriptor contains the column.
|
|
28
|
+
*/
|
|
29
|
+
export declare function lookupColumn(rctx: RuntimeContext, descriptor: RowDescriptor, columnIndex: number): SqlValue | undefined;
|
|
30
|
+
/**
|
|
31
|
+
* Execute a function with a row context, ensuring proper cleanup.
|
|
32
|
+
* This is the recommended pattern for all row-processing emitters.
|
|
33
|
+
*/
|
|
34
|
+
export declare function withAsyncRowContext<T>(rctx: RuntimeContext, descriptor: RowDescriptor, rowGetter: RowGetter, fn: () => T | Promise<T>): Promise<T>;
|
|
35
|
+
/**
|
|
36
|
+
* Execute a function with a row context, ensuring proper cleanup.
|
|
37
|
+
* This is the recommended pattern for all row-processing emitters.
|
|
38
|
+
*/
|
|
39
|
+
export declare function withRowContext<T>(rctx: RuntimeContext, descriptor: RowDescriptor, rowGetter: RowGetter, fn: () => T): T;
|
|
40
|
+
/**
|
|
41
|
+
* Execute a generator function with row context management.
|
|
42
|
+
* Useful for streaming operations that process multiple rows.
|
|
43
|
+
*/
|
|
44
|
+
export declare function withRowContextGenerator<T>(rctx: RuntimeContext, descriptor: RowDescriptor, rows: AsyncIterable<Row>, fn: (row: Row) => AsyncIterable<T>): AsyncIterable<T>;
|
|
45
|
+
//# sourceMappingURL=context-helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context-helpers.d.ts","sourceRoot":"","sources":["../../../src/runtime/context-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAC9E,OAAO,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAQxD;;;GAGG;AACH,MAAM,WAAW,OAAO;IACvB,kDAAkD;IAClD,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI,CAAC;IACpB,kDAAkD;IAClD,KAAK,IAAI,IAAI,CAAC;CACd;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAC5B,IAAI,EAAE,cAAc,EACpB,UAAU,EAAE,aAAa,GACvB,OAAO,CAmBT;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,QAAQ,CAsCzG;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,cAAc,EAAE,UAAU,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAcvH;AAED;;;GAGG;AACH,wBAAsB,mBAAmB,CAAC,CAAC,EAC1C,IAAI,EAAE,cAAc,EACpB,UAAU,EAAE,aAAa,EACzB,SAAS,EAAE,SAAS,EACpB,EAAE,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GACtB,OAAO,CAAC,CAAC,CAAC,CAWZ;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAC/B,IAAI,EAAE,cAAc,EACpB,UAAU,EAAE,aAAa,EACzB,SAAS,EAAE,SAAS,EACpB,EAAE,EAAE,MAAM,CAAC,GACT,CAAC,CAWH;AAED;;;GAGG;AACH,wBAAuB,uBAAuB,CAAC,CAAC,EAC/C,IAAI,EAAE,cAAc,EACpB,UAAU,EAAE,aAAa,EACzB,IAAI,EAAE,aAAa,CAAC,GAAG,CAAC,EACxB,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,aAAa,CAAC,CAAC,CAAC,GAChC,aAAa,CAAC,CAAC,CAAC,CAuBlB"}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import { QuereusError } from '../common/errors.js';
|
|
2
|
+
import { StatusCode } from '../common/types.js';
|
|
3
|
+
import { createLogger } from '../common/logger.js';
|
|
4
|
+
const ctxLog = createLogger('runtime:context');
|
|
5
|
+
const ctxLookupLog = createLogger('runtime:context:lookup');
|
|
6
|
+
/**
|
|
7
|
+
* Create a row slot for efficient streaming context management.
|
|
8
|
+
* The slot installs a context entry once and updates it by reference.
|
|
9
|
+
* Perfect for scan/join/window operations that process many rows.
|
|
10
|
+
*/
|
|
11
|
+
export function createRowSlot(rctx, descriptor) {
|
|
12
|
+
// Internal boxed reference - one allocation per slot
|
|
13
|
+
const ref = { current: undefined };
|
|
14
|
+
// Install only once
|
|
15
|
+
rctx.context.set(descriptor, () => ref.current);
|
|
16
|
+
const attrs = Object.keys(descriptor).filter(k => descriptor[parseInt(k)] !== undefined);
|
|
17
|
+
ctxLog('CREATE slot with attrs=[%s]', attrs.join(','));
|
|
18
|
+
return {
|
|
19
|
+
set(row) {
|
|
20
|
+
ref.current = row;
|
|
21
|
+
},
|
|
22
|
+
close() {
|
|
23
|
+
rctx.context.delete(descriptor);
|
|
24
|
+
ctxLog('CLOSE slot with attrs=[%s]', attrs.join(','));
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Resolve an attribute ID to its column value in the current context.
|
|
30
|
+
* Searches from newest (innermost) to oldest (outermost) scope.
|
|
31
|
+
*/
|
|
32
|
+
export function resolveAttribute(rctx, attributeId, columnName) {
|
|
33
|
+
// Iterate newest → oldest so the most recently pushed scope wins
|
|
34
|
+
const contextsReversed = Array.from(rctx.context.entries()).reverse();
|
|
35
|
+
ctxLookupLog('LOOKUP column %s (attr#%d) in %d contexts', columnName || '?', attributeId, contextsReversed.length);
|
|
36
|
+
for (const [descriptor, rowGetter] of contextsReversed) {
|
|
37
|
+
const columnIndex = descriptor[attributeId];
|
|
38
|
+
if (columnIndex !== undefined) {
|
|
39
|
+
const row = rowGetter();
|
|
40
|
+
if (Array.isArray(row) && columnIndex < row.length) {
|
|
41
|
+
ctxLookupLog('FOUND column %s at index %d in row', columnName || '?', columnIndex);
|
|
42
|
+
return row[columnIndex];
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
// Log available attributes for debugging
|
|
47
|
+
if (ctxLookupLog.enabled) {
|
|
48
|
+
ctxLookupLog('Available contexts:');
|
|
49
|
+
for (const [descriptor, _] of contextsReversed) {
|
|
50
|
+
const attrs = Object.keys(descriptor).filter(k => descriptor[parseInt(k)] !== undefined);
|
|
51
|
+
ctxLookupLog(' - Descriptor with attrs=[%s]', attrs.join(','));
|
|
52
|
+
}
|
|
53
|
+
// Log current plan execution stack if available
|
|
54
|
+
if (rctx.planStack && rctx.planStack.length > 0) {
|
|
55
|
+
const currentNode = rctx.planStack[rctx.planStack.length - 1];
|
|
56
|
+
ctxLookupLog('LOOKUP FAILED in node %s id=%d', currentNode.nodeType, currentNode.id);
|
|
57
|
+
ctxLookupLog('Execution stack: %s', rctx.planStack.map(n => `${n.nodeType}#${n.id}`).join(' → '));
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
throw new QuereusError(`No row context found for column ${columnName || `attr#${attributeId}`}. The column reference must be evaluated within the context of its source relation.`, StatusCode.ERROR);
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Look up a specific column by descriptor and index.
|
|
64
|
+
* Useful when you already know which descriptor contains the column.
|
|
65
|
+
*/
|
|
66
|
+
export function lookupColumn(rctx, descriptor, columnIndex) {
|
|
67
|
+
const rowGetter = rctx.context.get(descriptor);
|
|
68
|
+
if (!rowGetter) {
|
|
69
|
+
ctxLookupLog('LOOKUP by index %d - no context found', columnIndex);
|
|
70
|
+
return undefined;
|
|
71
|
+
}
|
|
72
|
+
const row = rowGetter();
|
|
73
|
+
if (Array.isArray(row) && columnIndex < row.length) {
|
|
74
|
+
ctxLookupLog('LOOKUP by index %d - found value', columnIndex);
|
|
75
|
+
return row[columnIndex];
|
|
76
|
+
}
|
|
77
|
+
ctxLookupLog('LOOKUP by index %d - index out of bounds', columnIndex);
|
|
78
|
+
return undefined;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Execute a function with a row context, ensuring proper cleanup.
|
|
82
|
+
* This is the recommended pattern for all row-processing emitters.
|
|
83
|
+
*/
|
|
84
|
+
export async function withAsyncRowContext(rctx, descriptor, rowGetter, fn) {
|
|
85
|
+
const attrs = Object.keys(descriptor).filter(k => descriptor[parseInt(k)] !== undefined);
|
|
86
|
+
ctxLog('PUSH async context with attrs=[%s]', attrs.join(','));
|
|
87
|
+
rctx.context.set(descriptor, rowGetter);
|
|
88
|
+
try {
|
|
89
|
+
return await fn();
|
|
90
|
+
}
|
|
91
|
+
finally {
|
|
92
|
+
rctx.context.delete(descriptor);
|
|
93
|
+
ctxLog('POP async context with attrs=[%s]', attrs.join(','));
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Execute a function with a row context, ensuring proper cleanup.
|
|
98
|
+
* This is the recommended pattern for all row-processing emitters.
|
|
99
|
+
*/
|
|
100
|
+
export function withRowContext(rctx, descriptor, rowGetter, fn) {
|
|
101
|
+
const attrs = Object.keys(descriptor).filter(k => descriptor[parseInt(k)] !== undefined);
|
|
102
|
+
ctxLog('PUSH context with attrs=[%s]', attrs.join(','));
|
|
103
|
+
rctx.context.set(descriptor, rowGetter);
|
|
104
|
+
try {
|
|
105
|
+
return fn();
|
|
106
|
+
}
|
|
107
|
+
finally {
|
|
108
|
+
rctx.context.delete(descriptor);
|
|
109
|
+
ctxLog('POP context with attrs=[%s]', attrs.join(','));
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Execute a generator function with row context management.
|
|
114
|
+
* Useful for streaming operations that process multiple rows.
|
|
115
|
+
*/
|
|
116
|
+
export async function* withRowContextGenerator(rctx, descriptor, rows, fn) {
|
|
117
|
+
const attrs = Object.keys(descriptor).filter(k => descriptor[parseInt(k)] !== undefined);
|
|
118
|
+
let rowCount = 0;
|
|
119
|
+
for await (const row of rows) {
|
|
120
|
+
if (rowCount === 0) {
|
|
121
|
+
ctxLog('PUSH generator context with attrs=[%s]', attrs.join(','));
|
|
122
|
+
}
|
|
123
|
+
rctx.context.set(descriptor, () => row);
|
|
124
|
+
try {
|
|
125
|
+
yield* fn(row);
|
|
126
|
+
rowCount++;
|
|
127
|
+
}
|
|
128
|
+
finally {
|
|
129
|
+
rctx.context.delete(descriptor);
|
|
130
|
+
if (ctxLog.enabled && rowCount % 1000 === 0) {
|
|
131
|
+
ctxLog('Generator context processed %d rows', rowCount);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
if (rowCount > 0) {
|
|
136
|
+
ctxLog('POP generator context after %d rows', rowCount);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
//# sourceMappingURL=context-helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context-helpers.js","sourceRoot":"","sources":["../../../src/runtime/context-helpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -54,6 +54,7 @@ export declare class EmissionContext {
|
|
|
54
54
|
private readonly schemaManager;
|
|
55
55
|
private readonly dependencyTracker;
|
|
56
56
|
private readonly schemaSnapshot;
|
|
57
|
+
readonly tracePlanStack: boolean;
|
|
57
58
|
constructor(db: Database);
|
|
58
59
|
/**
|
|
59
60
|
* Looks up a table schema and records the dependency.
|