@quereus/quereus 0.16.4 → 0.17.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 +372 -345
- package/dist/src/common/errors.d.ts +2 -18
- package/dist/src/common/errors.d.ts.map +1 -1
- package/dist/src/common/errors.js +6 -29
- package/dist/src/common/errors.js.map +1 -1
- package/dist/src/common/types.d.ts +8 -0
- package/dist/src/common/types.d.ts.map +1 -1
- package/dist/src/common/types.js +20 -0
- package/dist/src/common/types.js.map +1 -1
- package/dist/src/core/database-assertions.d.ts +19 -2
- package/dist/src/core/database-assertions.d.ts.map +1 -1
- package/dist/src/core/database-assertions.js +113 -32
- package/dist/src/core/database-assertions.js.map +1 -1
- package/dist/src/core/database-events.d.ts +17 -0
- package/dist/src/core/database-events.d.ts.map +1 -1
- package/dist/src/core/database-events.js +39 -2
- package/dist/src/core/database-events.js.map +1 -1
- package/dist/src/core/database-transaction.d.ts +31 -4
- package/dist/src/core/database-transaction.d.ts.map +1 -1
- package/dist/src/core/database-transaction.js +68 -2
- package/dist/src/core/database-transaction.js.map +1 -1
- package/dist/src/core/database.d.ts +17 -4
- package/dist/src/core/database.d.ts.map +1 -1
- package/dist/src/core/database.js +189 -154
- package/dist/src/core/database.js.map +1 -1
- package/dist/src/core/statement.d.ts +8 -2
- package/dist/src/core/statement.d.ts.map +1 -1
- package/dist/src/core/statement.js +54 -71
- package/dist/src/core/statement.js.map +1 -1
- package/dist/src/emit/ast-stringify.d.ts +1 -0
- package/dist/src/emit/ast-stringify.d.ts.map +1 -1
- package/dist/src/emit/ast-stringify.js +12 -2
- package/dist/src/emit/ast-stringify.js.map +1 -1
- package/dist/src/func/builtins/builtin-window-functions.d.ts.map +1 -1
- package/dist/src/func/builtins/builtin-window-functions.js +75 -0
- package/dist/src/func/builtins/builtin-window-functions.js.map +1 -1
- package/dist/src/func/builtins/conversion.js +9 -12
- package/dist/src/func/builtins/conversion.js.map +1 -1
- package/dist/src/func/builtins/datetime.d.ts +21 -0
- package/dist/src/func/builtins/datetime.d.ts.map +1 -1
- package/dist/src/func/builtins/datetime.js +452 -368
- package/dist/src/func/builtins/datetime.js.map +1 -1
- package/dist/src/func/builtins/explain.d.ts.map +1 -1
- package/dist/src/func/builtins/explain.js +15 -3
- package/dist/src/func/builtins/explain.js.map +1 -1
- package/dist/src/func/builtins/index.d.ts.map +1 -1
- package/dist/src/func/builtins/index.js +5 -12
- package/dist/src/func/builtins/index.js.map +1 -1
- package/dist/src/func/builtins/json-helpers.js +1 -1
- package/dist/src/func/builtins/json-helpers.js.map +1 -1
- package/dist/src/func/builtins/json.d.ts.map +1 -1
- package/dist/src/func/builtins/json.js +2 -5
- package/dist/src/func/builtins/json.js.map +1 -1
- package/dist/src/func/builtins/schema.d.ts.map +1 -1
- package/dist/src/func/builtins/schema.js +30 -32
- package/dist/src/func/builtins/schema.js.map +1 -1
- package/dist/src/func/builtins/string.d.ts.map +1 -1
- package/dist/src/func/builtins/string.js +40 -64
- package/dist/src/func/builtins/string.js.map +1 -1
- package/dist/src/func/builtins/timespan.d.ts.map +1 -1
- package/dist/src/func/builtins/timespan.js.map +1 -1
- package/dist/src/index.d.ts +2 -2
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +2 -2
- package/dist/src/index.js.map +1 -1
- package/dist/src/parser/ast.d.ts +9 -2
- package/dist/src/parser/ast.d.ts.map +1 -1
- package/dist/src/parser/lexer.d.ts +1 -0
- package/dist/src/parser/lexer.d.ts.map +1 -1
- package/dist/src/parser/lexer.js +3 -0
- package/dist/src/parser/lexer.js.map +1 -1
- package/dist/src/parser/parser.d.ts +11 -1
- package/dist/src/parser/parser.d.ts.map +1 -1
- package/dist/src/parser/parser.js +75 -135
- package/dist/src/parser/parser.js.map +1 -1
- package/dist/src/planner/analysis/const-evaluator.d.ts.map +1 -1
- package/dist/src/planner/analysis/const-evaluator.js +6 -3
- package/dist/src/planner/analysis/const-evaluator.js.map +1 -1
- package/dist/src/planner/analysis/constraint-extractor.d.ts +2 -1
- package/dist/src/planner/analysis/constraint-extractor.d.ts.map +1 -1
- package/dist/src/planner/analysis/constraint-extractor.js +154 -22
- package/dist/src/planner/analysis/constraint-extractor.js.map +1 -1
- package/dist/src/planner/building/alter-table.d.ts.map +1 -1
- package/dist/src/planner/building/alter-table.js +18 -1
- package/dist/src/planner/building/alter-table.js.map +1 -1
- package/dist/src/planner/building/analyze.d.ts +5 -0
- package/dist/src/planner/building/analyze.d.ts.map +1 -0
- package/dist/src/planner/building/analyze.js +5 -0
- package/dist/src/planner/building/analyze.js.map +1 -0
- package/dist/src/planner/building/block.d.ts.map +1 -1
- package/dist/src/planner/building/block.js +3 -0
- package/dist/src/planner/building/block.js.map +1 -1
- package/dist/src/planner/building/constraint-builder.d.ts.map +1 -1
- package/dist/src/planner/building/constraint-builder.js +25 -3
- package/dist/src/planner/building/constraint-builder.js.map +1 -1
- package/dist/src/planner/building/delete.d.ts.map +1 -1
- package/dist/src/planner/building/delete.js +11 -0
- package/dist/src/planner/building/delete.js.map +1 -1
- package/dist/src/planner/building/drop-assertion.d.ts.map +1 -1
- package/dist/src/planner/building/drop-assertion.js +2 -1
- package/dist/src/planner/building/drop-assertion.js.map +1 -1
- package/dist/src/planner/building/expression.d.ts.map +1 -1
- package/dist/src/planner/building/expression.js +55 -7
- package/dist/src/planner/building/expression.js.map +1 -1
- package/dist/src/planner/building/foreign-key-builder.d.ts +16 -0
- package/dist/src/planner/building/foreign-key-builder.d.ts.map +1 -0
- package/dist/src/planner/building/foreign-key-builder.js +269 -0
- package/dist/src/planner/building/foreign-key-builder.js.map +1 -0
- package/dist/src/planner/building/function-call.d.ts.map +1 -1
- package/dist/src/planner/building/function-call.js +3 -2
- package/dist/src/planner/building/function-call.js.map +1 -1
- package/dist/src/planner/building/insert.d.ts.map +1 -1
- package/dist/src/planner/building/insert.js +91 -10
- package/dist/src/planner/building/insert.js.map +1 -1
- package/dist/src/planner/building/schema-resolution.d.ts +4 -0
- package/dist/src/planner/building/schema-resolution.d.ts.map +1 -1
- package/dist/src/planner/building/schema-resolution.js +14 -3
- package/dist/src/planner/building/schema-resolution.js.map +1 -1
- package/dist/src/planner/building/select-aggregates.d.ts +1 -0
- package/dist/src/planner/building/select-aggregates.d.ts.map +1 -1
- package/dist/src/planner/building/select-aggregates.js +118 -3
- package/dist/src/planner/building/select-aggregates.js.map +1 -1
- package/dist/src/planner/building/select-modifiers.js +3 -3
- package/dist/src/planner/building/select-modifiers.js.map +1 -1
- package/dist/src/planner/building/select-window.js +9 -8
- package/dist/src/planner/building/select-window.js.map +1 -1
- package/dist/src/planner/building/select.d.ts.map +1 -1
- package/dist/src/planner/building/select.js +21 -10
- package/dist/src/planner/building/select.js.map +1 -1
- package/dist/src/planner/building/table.d.ts.map +1 -1
- package/dist/src/planner/building/table.js +5 -3
- 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 +30 -1
- package/dist/src/planner/building/update.js.map +1 -1
- package/dist/src/planner/building/with.js +1 -1
- package/dist/src/planner/building/with.js.map +1 -1
- package/dist/src/planner/cache/reference-graph.d.ts +1 -1
- package/dist/src/planner/cache/reference-graph.js +1 -1
- package/dist/src/planner/cost/index.d.ts +10 -3
- package/dist/src/planner/cost/index.d.ts.map +1 -1
- package/dist/src/planner/cost/index.js +17 -3
- package/dist/src/planner/cost/index.js.map +1 -1
- package/dist/src/planner/debug.js +1 -1
- package/dist/src/planner/debug.js.map +1 -1
- package/dist/src/planner/framework/characteristics.d.ts +1 -1
- package/dist/src/planner/framework/characteristics.d.ts.map +1 -1
- package/dist/src/planner/framework/pass.d.ts +3 -1
- package/dist/src/planner/framework/pass.d.ts.map +1 -1
- package/dist/src/planner/framework/pass.js +62 -18
- package/dist/src/planner/framework/pass.js.map +1 -1
- package/dist/src/planner/framework/physical-utils.d.ts +5 -0
- package/dist/src/planner/framework/physical-utils.d.ts.map +1 -1
- package/dist/src/planner/framework/physical-utils.js +19 -0
- package/dist/src/planner/framework/physical-utils.js.map +1 -1
- package/dist/src/planner/framework/trace.d.ts.map +1 -1
- package/dist/src/planner/framework/trace.js +3 -2
- package/dist/src/planner/framework/trace.js.map +1 -1
- package/dist/src/planner/nodes/alias-node.d.ts +2 -1
- package/dist/src/planner/nodes/alias-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/alias-node.js +8 -0
- package/dist/src/planner/nodes/alias-node.js.map +1 -1
- package/dist/src/planner/nodes/alter-table-node.d.ts +42 -0
- package/dist/src/planner/nodes/alter-table-node.d.ts.map +1 -0
- package/dist/src/planner/nodes/alter-table-node.js +55 -0
- package/dist/src/planner/nodes/alter-table-node.js.map +1 -0
- package/dist/src/planner/nodes/analyze-node.d.ts +25 -0
- package/dist/src/planner/nodes/analyze-node.d.ts.map +1 -0
- package/dist/src/planner/nodes/analyze-node.js +83 -0
- package/dist/src/planner/nodes/analyze-node.js.map +1 -0
- package/dist/src/planner/nodes/bloom-join-node.d.ts +66 -0
- package/dist/src/planner/nodes/bloom-join-node.d.ts.map +1 -0
- package/dist/src/planner/nodes/bloom-join-node.js +200 -0
- package/dist/src/planner/nodes/bloom-join-node.js.map +1 -0
- package/dist/src/planner/nodes/constraint-check-node.d.ts +1 -1
- package/dist/src/planner/nodes/constraint-check-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/cte-reference-node.js +7 -7
- package/dist/src/planner/nodes/cte-reference-node.js.map +1 -1
- package/dist/src/planner/nodes/join-node.d.ts +9 -1
- package/dist/src/planner/nodes/join-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/join-node.js +69 -79
- package/dist/src/planner/nodes/join-node.js.map +1 -1
- package/dist/src/planner/nodes/merge-join-node.d.ts +60 -0
- package/dist/src/planner/nodes/merge-join-node.d.ts.map +1 -0
- package/dist/src/planner/nodes/merge-join-node.js +207 -0
- package/dist/src/planner/nodes/merge-join-node.js.map +1 -0
- package/dist/src/planner/nodes/plan-node-type.d.ts +1 -0
- package/dist/src/planner/nodes/plan-node-type.d.ts.map +1 -1
- package/dist/src/planner/nodes/plan-node-type.js +1 -0
- package/dist/src/planner/nodes/plan-node-type.js.map +1 -1
- package/dist/src/planner/nodes/project-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/project-node.js +3 -2
- package/dist/src/planner/nodes/project-node.js.map +1 -1
- package/dist/src/planner/nodes/reference.d.ts +2 -1
- package/dist/src/planner/nodes/reference.d.ts.map +1 -1
- package/dist/src/planner/nodes/reference.js +6 -2
- package/dist/src/planner/nodes/reference.js.map +1 -1
- package/dist/src/planner/nodes/returning-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/returning-node.js +3 -2
- package/dist/src/planner/nodes/returning-node.js.map +1 -1
- package/dist/src/planner/nodes/scalar.d.ts.map +1 -1
- package/dist/src/planner/nodes/subquery.js.map +1 -1
- package/dist/src/planner/nodes/table-access-nodes.js +1 -1
- package/dist/src/planner/nodes/table-access-nodes.js.map +1 -1
- package/dist/src/planner/nodes/update-node.d.ts +2 -0
- package/dist/src/planner/nodes/update-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/update-node.js +2 -1
- package/dist/src/planner/nodes/update-node.js.map +1 -1
- package/dist/src/planner/nodes/window-function.d.ts.map +1 -1
- package/dist/src/planner/nodes/window-function.js +7 -7
- package/dist/src/planner/nodes/window-function.js.map +1 -1
- package/dist/src/planner/nodes/window-node.d.ts +2 -2
- package/dist/src/planner/nodes/window-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/window-node.js +9 -14
- 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 +40 -2
- package/dist/src/planner/optimizer.js.map +1 -1
- package/dist/src/planner/planning-context.d.ts.map +1 -1
- package/dist/src/planner/planning-context.js +1 -6
- package/dist/src/planner/planning-context.js.map +1 -1
- package/dist/src/planner/resolve.d.ts.map +1 -1
- package/dist/src/planner/resolve.js.map +1 -1
- package/dist/src/planner/rules/access/rule-select-access-path.js +157 -28
- 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 +27 -6
- package/dist/src/planner/rules/aggregate/rule-aggregate-streaming.js.map +1 -1
- package/dist/src/planner/rules/cache/rule-in-subquery-cache.d.ts +19 -0
- package/dist/src/planner/rules/cache/rule-in-subquery-cache.d.ts.map +1 -0
- package/dist/src/planner/rules/cache/rule-in-subquery-cache.js +53 -0
- package/dist/src/planner/rules/cache/rule-in-subquery-cache.js.map +1 -0
- package/dist/src/planner/rules/cache/rule-mutating-subquery-cache.d.ts.map +1 -1
- package/dist/src/planner/rules/cache/rule-mutating-subquery-cache.js +5 -0
- package/dist/src/planner/rules/cache/rule-mutating-subquery-cache.js.map +1 -1
- package/dist/src/planner/rules/distinct/rule-distinct-elimination.d.ts +18 -0
- package/dist/src/planner/rules/distinct/rule-distinct-elimination.d.ts.map +1 -0
- package/dist/src/planner/rules/distinct/rule-distinct-elimination.js +37 -0
- package/dist/src/planner/rules/distinct/rule-distinct-elimination.js.map +1 -0
- package/dist/src/planner/rules/join/rule-join-key-inference.d.ts +8 -3
- package/dist/src/planner/rules/join/rule-join-key-inference.d.ts.map +1 -1
- package/dist/src/planner/rules/join/rule-join-key-inference.js +28 -17
- package/dist/src/planner/rules/join/rule-join-key-inference.js.map +1 -1
- package/dist/src/planner/rules/join/rule-join-physical-selection.d.ts +16 -0
- package/dist/src/planner/rules/join/rule-join-physical-selection.d.ts.map +1 -0
- package/dist/src/planner/rules/join/rule-join-physical-selection.js +216 -0
- package/dist/src/planner/rules/join/rule-join-physical-selection.js.map +1 -0
- package/dist/src/planner/rules/retrieve/rule-grow-retrieve.d.ts.map +1 -1
- package/dist/src/planner/rules/retrieve/rule-grow-retrieve.js +34 -4
- package/dist/src/planner/rules/retrieve/rule-grow-retrieve.js.map +1 -1
- package/dist/src/planner/rules/subquery/rule-subquery-decorrelation.d.ts +23 -0
- package/dist/src/planner/rules/subquery/rule-subquery-decorrelation.d.ts.map +1 -0
- package/dist/src/planner/rules/subquery/rule-subquery-decorrelation.js +293 -0
- package/dist/src/planner/rules/subquery/rule-subquery-decorrelation.js.map +1 -0
- package/dist/src/planner/scopes/multi.d.ts +3 -2
- package/dist/src/planner/scopes/multi.d.ts.map +1 -1
- package/dist/src/planner/scopes/multi.js +32 -7
- package/dist/src/planner/scopes/multi.js.map +1 -1
- package/dist/src/planner/scopes/shadow.d.ts +20 -0
- package/dist/src/planner/scopes/shadow.d.ts.map +1 -0
- package/dist/src/planner/scopes/shadow.js +31 -0
- package/dist/src/planner/scopes/shadow.js.map +1 -0
- package/dist/src/planner/stats/analyze.d.ts +17 -0
- package/dist/src/planner/stats/analyze.d.ts.map +1 -0
- package/dist/src/planner/stats/analyze.js +114 -0
- package/dist/src/planner/stats/analyze.js.map +1 -0
- package/dist/src/planner/stats/catalog-stats.d.ts +80 -0
- package/dist/src/planner/stats/catalog-stats.d.ts.map +1 -0
- package/dist/src/planner/stats/catalog-stats.js +248 -0
- package/dist/src/planner/stats/catalog-stats.js.map +1 -0
- package/dist/src/planner/stats/histogram.d.ts +24 -0
- package/dist/src/planner/stats/histogram.d.ts.map +1 -0
- package/dist/src/planner/stats/histogram.js +142 -0
- package/dist/src/planner/stats/histogram.js.map +1 -0
- package/dist/src/planner/type-utils.d.ts.map +1 -1
- package/dist/src/planner/type-utils.js +8 -2
- package/dist/src/planner/type-utils.js.map +1 -1
- package/dist/src/planner/util/key-utils.d.ts +48 -2
- package/dist/src/planner/util/key-utils.d.ts.map +1 -1
- package/dist/src/planner/util/key-utils.js +123 -0
- package/dist/src/planner/util/key-utils.js.map +1 -1
- package/dist/src/planner/validation/determinism-validator.d.ts +9 -0
- package/dist/src/planner/validation/determinism-validator.d.ts.map +1 -1
- package/dist/src/planner/validation/determinism-validator.js +11 -0
- package/dist/src/planner/validation/determinism-validator.js.map +1 -1
- package/dist/src/planner/validation/plan-validator.d.ts.map +1 -1
- package/dist/src/planner/validation/plan-validator.js +1 -0
- package/dist/src/planner/validation/plan-validator.js.map +1 -1
- package/dist/src/runtime/context-helpers.d.ts +34 -10
- package/dist/src/runtime/context-helpers.d.ts.map +1 -1
- package/dist/src/runtime/context-helpers.js +115 -39
- package/dist/src/runtime/context-helpers.js.map +1 -1
- package/dist/src/runtime/deferred-constraint-queue.d.ts +0 -1
- package/dist/src/runtime/deferred-constraint-queue.d.ts.map +1 -1
- package/dist/src/runtime/deferred-constraint-queue.js +10 -23
- package/dist/src/runtime/deferred-constraint-queue.js.map +1 -1
- package/dist/src/runtime/descriptor-helpers.d.ts +7 -0
- package/dist/src/runtime/descriptor-helpers.d.ts.map +1 -0
- package/dist/src/runtime/descriptor-helpers.js +24 -0
- package/dist/src/runtime/descriptor-helpers.js.map +1 -0
- package/dist/src/runtime/emission-context.d.ts +7 -1
- package/dist/src/runtime/emission-context.d.ts.map +1 -1
- package/dist/src/runtime/emission-context.js +16 -0
- 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 +97 -93
- package/dist/src/runtime/emit/aggregate.js.map +1 -1
- package/dist/src/runtime/emit/alter-table.d.ts +5 -0
- package/dist/src/runtime/emit/alter-table.d.ts.map +1 -0
- package/dist/src/runtime/emit/alter-table.js +209 -0
- package/dist/src/runtime/emit/alter-table.js.map +1 -0
- package/dist/src/runtime/emit/analyze.d.ts +9 -0
- package/dist/src/runtime/emit/analyze.d.ts.map +1 -0
- package/dist/src/runtime/emit/analyze.js +72 -0
- package/dist/src/runtime/emit/analyze.js.map +1 -0
- package/dist/src/runtime/emit/array-index.d.ts.map +1 -1
- package/dist/src/runtime/emit/array-index.js +4 -2
- package/dist/src/runtime/emit/array-index.js.map +1 -1
- package/dist/src/runtime/emit/between.d.ts.map +1 -1
- package/dist/src/runtime/emit/between.js +8 -20
- package/dist/src/runtime/emit/between.js.map +1 -1
- package/dist/src/runtime/emit/binary.d.ts.map +1 -1
- package/dist/src/runtime/emit/binary.js +155 -126
- package/dist/src/runtime/emit/binary.js.map +1 -1
- package/dist/src/runtime/emit/bloom-join.d.ts +12 -0
- package/dist/src/runtime/emit/bloom-join.d.ts.map +1 -0
- package/dist/src/runtime/emit/bloom-join.js +114 -0
- package/dist/src/runtime/emit/bloom-join.js.map +1 -0
- package/dist/src/runtime/emit/cache.js +2 -2
- package/dist/src/runtime/emit/cache.js.map +1 -1
- package/dist/src/runtime/emit/cast.d.ts.map +1 -1
- package/dist/src/runtime/emit/cast.js +31 -117
- package/dist/src/runtime/emit/cast.js.map +1 -1
- package/dist/src/runtime/emit/constraint-check.d.ts.map +1 -1
- package/dist/src/runtime/emit/constraint-check.js +2 -24
- 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 +11 -5
- 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 +21 -12
- package/dist/src/runtime/emit/distinct.js.map +1 -1
- package/dist/src/runtime/emit/dml-executor.d.ts.map +1 -1
- package/dist/src/runtime/emit/dml-executor.js +5 -1
- package/dist/src/runtime/emit/dml-executor.js.map +1 -1
- package/dist/src/runtime/emit/drop-assertion.d.ts.map +1 -1
- package/dist/src/runtime/emit/drop-assertion.js +2 -0
- package/dist/src/runtime/emit/drop-assertion.js.map +1 -1
- package/dist/src/runtime/emit/filter.d.ts.map +1 -1
- package/dist/src/runtime/emit/filter.js +26 -7
- package/dist/src/runtime/emit/filter.js.map +1 -1
- package/dist/src/runtime/emit/internal-recursive-cte-ref.d.ts.map +1 -1
- package/dist/src/runtime/emit/internal-recursive-cte-ref.js +11 -5
- package/dist/src/runtime/emit/internal-recursive-cte-ref.js.map +1 -1
- package/dist/src/runtime/emit/join.d.ts +1 -1
- package/dist/src/runtime/emit/join.d.ts.map +1 -1
- package/dist/src/runtime/emit/join.js +44 -33
- package/dist/src/runtime/emit/join.js.map +1 -1
- package/dist/src/runtime/emit/merge-join.d.ts +14 -0
- package/dist/src/runtime/emit/merge-join.d.ts.map +1 -0
- package/dist/src/runtime/emit/merge-join.js +152 -0
- package/dist/src/runtime/emit/merge-join.js.map +1 -0
- package/dist/src/runtime/emit/parameter.d.ts.map +1 -1
- package/dist/src/runtime/emit/parameter.js +10 -32
- package/dist/src/runtime/emit/parameter.js.map +1 -1
- package/dist/src/runtime/emit/project.d.ts.map +1 -1
- package/dist/src/runtime/emit/project.js +22 -12
- 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 +5 -9
- 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 +14 -8
- package/dist/src/runtime/emit/returning.js.map +1 -1
- package/dist/src/runtime/emit/scan.d.ts.map +1 -1
- package/dist/src/runtime/emit/scan.js +4 -1
- package/dist/src/runtime/emit/scan.js.map +1 -1
- package/dist/src/runtime/emit/set-operation.d.ts.map +1 -1
- package/dist/src/runtime/emit/set-operation.js +8 -5
- package/dist/src/runtime/emit/set-operation.js.map +1 -1
- package/dist/src/runtime/emit/sort.js +2 -2
- package/dist/src/runtime/emit/sort.js.map +1 -1
- package/dist/src/runtime/emit/subquery.js +2 -2
- 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 +21 -7
- package/dist/src/runtime/emit/table-valued-function.js.map +1 -1
- package/dist/src/runtime/emit/transaction.d.ts.map +1 -1
- package/dist/src/runtime/emit/transaction.js +18 -46
- package/dist/src/runtime/emit/transaction.js.map +1 -1
- package/dist/src/runtime/emit/unary.js +2 -2
- package/dist/src/runtime/emit/unary.js.map +1 -1
- package/dist/src/runtime/emit/update.d.ts.map +1 -1
- package/dist/src/runtime/emit/update.js +43 -21
- 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 +368 -126
- package/dist/src/runtime/emit/window.js.map +1 -1
- package/dist/src/runtime/foreign-key-actions.d.ts +15 -0
- package/dist/src/runtime/foreign-key-actions.d.ts.map +1 -0
- package/dist/src/runtime/foreign-key-actions.js +109 -0
- package/dist/src/runtime/foreign-key-actions.js.map +1 -0
- package/dist/src/runtime/register.d.ts.map +1 -1
- package/dist/src/runtime/register.js +8 -0
- 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 +4 -1
- package/dist/src/runtime/scheduler.js.map +1 -1
- package/dist/src/runtime/types.d.ts +6 -5
- package/dist/src/runtime/types.d.ts.map +1 -1
- package/dist/src/runtime/types.js.map +1 -1
- package/dist/src/schema/change-events.d.ts +36 -8
- package/dist/src/schema/change-events.d.ts.map +1 -1
- package/dist/src/schema/change-events.js.map +1 -1
- package/dist/src/schema/column.d.ts +5 -1
- package/dist/src/schema/column.d.ts.map +1 -1
- package/dist/src/schema/column.js +1 -2
- package/dist/src/schema/column.js.map +1 -1
- package/dist/src/schema/manager.d.ts +54 -4
- package/dist/src/schema/manager.d.ts.map +1 -1
- package/dist/src/schema/manager.js +353 -313
- package/dist/src/schema/manager.js.map +1 -1
- package/dist/src/schema/schema-differ.js +3 -3
- package/dist/src/schema/schema-differ.js.map +1 -1
- package/dist/src/schema/schema.d.ts +1 -1
- package/dist/src/schema/schema.js +2 -2
- package/dist/src/schema/schema.js.map +1 -1
- package/dist/src/schema/table.d.ts +49 -0
- package/dist/src/schema/table.d.ts.map +1 -1
- package/dist/src/schema/table.js +30 -11
- package/dist/src/schema/table.js.map +1 -1
- package/dist/src/types/builtin-types.d.ts.map +1 -1
- package/dist/src/types/builtin-types.js +26 -95
- package/dist/src/types/builtin-types.js.map +1 -1
- package/dist/src/types/index.d.ts +1 -1
- package/dist/src/types/index.d.ts.map +1 -1
- package/dist/src/types/index.js +1 -1
- package/dist/src/types/index.js.map +1 -1
- package/dist/src/types/json-type.d.ts.map +1 -1
- package/dist/src/types/json-type.js +28 -40
- package/dist/src/types/json-type.js.map +1 -1
- package/dist/src/types/logical-type.d.ts +6 -0
- package/dist/src/types/logical-type.d.ts.map +1 -1
- package/dist/src/types/logical-type.js +12 -0
- package/dist/src/types/logical-type.js.map +1 -1
- package/dist/src/types/temporal-types.d.ts.map +1 -1
- package/dist/src/types/temporal-types.js +8 -37
- package/dist/src/types/temporal-types.js.map +1 -1
- package/dist/src/util/async-iterator.d.ts +30 -0
- package/dist/src/util/async-iterator.d.ts.map +1 -0
- package/dist/src/util/async-iterator.js +101 -0
- package/dist/src/util/async-iterator.js.map +1 -0
- package/dist/src/util/coercion.d.ts +4 -5
- package/dist/src/util/coercion.d.ts.map +1 -1
- package/dist/src/util/coercion.js +10 -14
- package/dist/src/util/coercion.js.map +1 -1
- package/dist/src/util/comparison.d.ts +34 -21
- package/dist/src/util/comparison.d.ts.map +1 -1
- package/dist/src/util/comparison.js +77 -43
- package/dist/src/util/comparison.js.map +1 -1
- package/dist/src/util/environment.d.ts +0 -8
- package/dist/src/util/environment.d.ts.map +1 -1
- package/dist/src/util/environment.js +0 -12
- package/dist/src/util/environment.js.map +1 -1
- package/dist/src/util/key-serializer.d.ts +33 -0
- package/dist/src/util/key-serializer.d.ts.map +1 -0
- package/dist/src/util/key-serializer.js +95 -0
- package/dist/src/util/key-serializer.js.map +1 -0
- package/dist/src/util/plugin-helper.d.ts.map +1 -1
- package/dist/src/util/plugin-helper.js +21 -45
- package/dist/src/util/plugin-helper.js.map +1 -1
- package/dist/src/util/serialization.d.ts +1 -0
- package/dist/src/util/serialization.d.ts.map +1 -1
- package/dist/src/util/serialization.js +8 -1
- package/dist/src/util/serialization.js.map +1 -1
- package/dist/src/util/working-table-iterable.d.ts +6 -5
- package/dist/src/util/working-table-iterable.d.ts.map +1 -1
- package/dist/src/util/working-table-iterable.js +8 -15
- package/dist/src/util/working-table-iterable.js.map +1 -1
- package/dist/src/vtab/best-access-plan.d.ts +12 -0
- package/dist/src/vtab/best-access-plan.d.ts.map +1 -1
- package/dist/src/vtab/best-access-plan.js +22 -0
- package/dist/src/vtab/best-access-plan.js.map +1 -1
- package/dist/src/vtab/events.d.ts.map +1 -1
- package/dist/src/vtab/events.js +6 -3
- package/dist/src/vtab/events.js.map +1 -1
- package/dist/src/vtab/manifest.d.ts +3 -1
- package/dist/src/vtab/manifest.d.ts.map +1 -1
- package/dist/src/vtab/memory/index.d.ts +2 -2
- package/dist/src/vtab/memory/index.d.ts.map +1 -1
- package/dist/src/vtab/memory/index.js +4 -7
- package/dist/src/vtab/memory/index.js.map +1 -1
- package/dist/src/vtab/memory/layer/base-cursor.d.ts.map +1 -1
- package/dist/src/vtab/memory/layer/base-cursor.js +37 -9
- package/dist/src/vtab/memory/layer/base-cursor.js.map +1 -1
- package/dist/src/vtab/memory/layer/base.js +1 -1
- package/dist/src/vtab/memory/layer/base.js.map +1 -1
- package/dist/src/vtab/memory/layer/connection.d.ts +11 -7
- package/dist/src/vtab/memory/layer/connection.d.ts.map +1 -1
- package/dist/src/vtab/memory/layer/connection.js +32 -44
- package/dist/src/vtab/memory/layer/connection.js.map +1 -1
- package/dist/src/vtab/memory/layer/manager.d.ts +15 -3
- package/dist/src/vtab/memory/layer/manager.d.ts.map +1 -1
- package/dist/src/vtab/memory/layer/manager.js +85 -37
- package/dist/src/vtab/memory/layer/manager.js.map +1 -1
- package/dist/src/vtab/memory/layer/scan-plan.d.ts +2 -0
- package/dist/src/vtab/memory/layer/scan-plan.d.ts.map +1 -1
- package/dist/src/vtab/memory/layer/scan-plan.js +153 -78
- package/dist/src/vtab/memory/layer/scan-plan.js.map +1 -1
- package/dist/src/vtab/memory/layer/transaction-cursor.d.ts.map +1 -1
- package/dist/src/vtab/memory/layer/transaction-cursor.js +39 -9
- package/dist/src/vtab/memory/layer/transaction-cursor.js.map +1 -1
- package/dist/src/vtab/memory/layer/transaction.d.ts +1 -0
- package/dist/src/vtab/memory/layer/transaction.d.ts.map +1 -1
- package/dist/src/vtab/memory/layer/transaction.js +6 -20
- package/dist/src/vtab/memory/layer/transaction.js.map +1 -1
- package/dist/src/vtab/memory/module.d.ts +14 -24
- package/dist/src/vtab/memory/module.d.ts.map +1 -1
- package/dist/src/vtab/memory/module.js +88 -283
- package/dist/src/vtab/memory/module.js.map +1 -1
- package/dist/src/vtab/memory/table.d.ts +9 -0
- package/dist/src/vtab/memory/table.d.ts.map +1 -1
- package/dist/src/vtab/memory/table.js +121 -18
- package/dist/src/vtab/memory/table.js.map +1 -1
- package/dist/src/vtab/memory/types.d.ts +1 -0
- package/dist/src/vtab/memory/types.d.ts.map +1 -1
- package/dist/src/vtab/memory/utils/primary-key.js.map +1 -1
- package/dist/src/vtab/module.d.ts +13 -0
- package/dist/src/vtab/module.d.ts.map +1 -1
- package/dist/src/vtab/table.d.ts +9 -0
- package/dist/src/vtab/table.d.ts.map +1 -1
- package/dist/src/vtab/table.js.map +1 -1
- package/package.json +2 -2
|
@@ -4,6 +4,14 @@ import { StatusCode } from '../../../common/types.js';
|
|
|
4
4
|
import { safeIterate } from './safe-iterate.js';
|
|
5
5
|
import { QuereusError } from '../../../common/errors.js';
|
|
6
6
|
export async function* scanBaseLayer(layer, plan) {
|
|
7
|
+
// Multi-seek: iterate over multiple equality keys
|
|
8
|
+
if (plan.equalityKeys && plan.equalityKeys.length > 0) {
|
|
9
|
+
for (const key of plan.equalityKeys) {
|
|
10
|
+
const singlePlan = { ...plan, equalityKey: key, equalityKeys: undefined };
|
|
11
|
+
yield* scanBaseLayer(layer, singlePlan);
|
|
12
|
+
}
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
7
15
|
const { primaryKeyExtractorFromRow: keyFromEntry, primaryKeyComparator } = layer.getPkExtractorsAndComparators(layer.getSchema());
|
|
8
16
|
const isEqPlan = plan.equalityKey !== undefined;
|
|
9
17
|
const planAppliesToKey = (key, keyIsIndexKey) => {
|
|
@@ -78,19 +86,39 @@ export async function* scanBaseLayer(layer, plan) {
|
|
|
78
86
|
}
|
|
79
87
|
// Use mutation-safe iterator for secondary index iteration with range support
|
|
80
88
|
const isAscending = !plan.descending;
|
|
81
|
-
|
|
89
|
+
const isDescFirstColumn = secondaryIndex.specColumns[0]?.desc === true;
|
|
90
|
+
// For DESC indexes the tree stores higher values first, so:
|
|
91
|
+
// - ASC index: start from lowerBound (values increase forward in tree order)
|
|
92
|
+
// - DESC index: start from upperBound (higher values first; upper bound is the start)
|
|
82
93
|
let startKey;
|
|
83
|
-
if (
|
|
84
|
-
|
|
94
|
+
if (isDescFirstColumn) {
|
|
95
|
+
if (plan.upperBound) {
|
|
96
|
+
startKey = { value: plan.upperBound.value };
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
if (plan.lowerBound) {
|
|
101
|
+
startKey = { value: plan.lowerBound.value };
|
|
102
|
+
}
|
|
85
103
|
}
|
|
86
104
|
for await (const indexEntry of safeIterate(indexTree, isAscending, startKey)) {
|
|
87
105
|
if (!planAppliesToKey(indexEntry.indexKey, true)) {
|
|
88
|
-
// Early termination for
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
106
|
+
// Early termination: for ASC indexes break when past upper bound,
|
|
107
|
+
// for DESC indexes break when past lower bound (since values decrease in tree order)
|
|
108
|
+
if (isAscending) {
|
|
109
|
+
if (isDescFirstColumn && plan.lowerBound) {
|
|
110
|
+
const keyForComparison = Array.isArray(indexEntry.indexKey) ? indexEntry.indexKey[0] : indexEntry.indexKey;
|
|
111
|
+
const cmp = compareSqlValues(keyForComparison, plan.lowerBound.value);
|
|
112
|
+
if (cmp < 0 || (cmp === 0 && plan.lowerBound.op === IndexConstraintOp.GT)) {
|
|
113
|
+
break;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
else if (!isDescFirstColumn && plan.upperBound) {
|
|
117
|
+
const keyForComparison = Array.isArray(indexEntry.indexKey) ? indexEntry.indexKey[0] : indexEntry.indexKey;
|
|
118
|
+
const cmp = compareSqlValues(keyForComparison, plan.upperBound.value);
|
|
119
|
+
if (cmp > 0 || (cmp === 0 && plan.upperBound.op === IndexConstraintOp.LT)) {
|
|
120
|
+
break;
|
|
121
|
+
}
|
|
94
122
|
}
|
|
95
123
|
}
|
|
96
124
|
continue;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-cursor.js","sourceRoot":"","sources":["../../../../../src/vtab/memory/layer/base-cursor.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"base-cursor.js","sourceRoot":"","sources":["../../../../../src/vtab/memory/layer/base-cursor.ts"],"names":[],"mappings":"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"}
|
|
@@ -136,7 +136,7 @@ export class BaseLayer {
|
|
|
136
136
|
defaultValue
|
|
137
137
|
});
|
|
138
138
|
const oldPrimaryTree = this.primaryTree;
|
|
139
|
-
//
|
|
139
|
+
// Reinitialize primary key functions with the updated schema (which already includes the new column)
|
|
140
140
|
this.initializePrimaryKeyFunctions();
|
|
141
141
|
// Create new primary tree with the updated schema and migrate data
|
|
142
142
|
this.recreatePrimaryTreeWithNewColumn(oldPrimaryTree, defaultValue);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../../../../src/vtab/memory/layer/base.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../../../../src/vtab/memory/layer/base.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,7 +11,8 @@ export declare class MemoryTableConnection {
|
|
|
11
11
|
readLayer: Layer;
|
|
12
12
|
pendingTransactionLayer: TransactionLayer | null;
|
|
13
13
|
explicitTransaction: boolean;
|
|
14
|
-
|
|
14
|
+
/** Stack of savepoint snapshots, indexed by depth from TransactionManager */
|
|
15
|
+
private savepointStack;
|
|
15
16
|
constructor(manager: MemoryTableManager, initialReadLayer: Layer);
|
|
16
17
|
/** Begins a transaction by marking explicitTransaction. The pending layer is created lazily on first mutation */
|
|
17
18
|
begin(): void;
|
|
@@ -21,18 +22,21 @@ export declare class MemoryTableConnection {
|
|
|
21
22
|
rollback(): void;
|
|
22
23
|
/** Helper method to clear transaction-related state */
|
|
23
24
|
private clearTransactionState;
|
|
24
|
-
/** Creates a savepoint
|
|
25
|
-
createSavepoint(
|
|
25
|
+
/** Creates a savepoint at the given depth index */
|
|
26
|
+
createSavepoint(depth: number): void;
|
|
26
27
|
/**
|
|
27
28
|
* Creates a snapshot of a transaction layer by copying its effective data to a new independent layer.
|
|
28
29
|
* This is necessary because BTree inheritance can cause shared mutable state issues.
|
|
29
30
|
* The snapshot becomes immutable and independent of the source layer.
|
|
30
31
|
*/
|
|
31
32
|
private createTransactionSnapshot;
|
|
32
|
-
/** Releases
|
|
33
|
-
releaseSavepoint(
|
|
34
|
-
/**
|
|
35
|
-
|
|
33
|
+
/** Releases savepoints from the top of the stack down to the target depth (exclusive) */
|
|
34
|
+
releaseSavepoint(targetDepth: number): void;
|
|
35
|
+
/**
|
|
36
|
+
* Rolls back to a savepoint at the target depth, restoring the transaction layer.
|
|
37
|
+
* The savepoint is preserved (per SQL standard) so it can be rolled back to again.
|
|
38
|
+
*/
|
|
39
|
+
rollbackToSavepoint(targetDepth: number): void;
|
|
36
40
|
clearSavepoints(): void;
|
|
37
41
|
}
|
|
38
42
|
//# sourceMappingURL=connection.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../../../../src/vtab/memory/layer/connection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAUvD;;;GAGG;AACH,qBAAa,qBAAqB;IACjC,SAAgB,YAAY,EAAE,MAAM,CAAC;IACrC,SAAgB,YAAY,EAAE,kBAAkB,CAAC;IAC1C,SAAS,EAAE,KAAK,CAAC;IACjB,uBAAuB,EAAE,gBAAgB,GAAG,IAAI,CAAQ;IACxD,mBAAmB,EAAE,OAAO,CAAS;
|
|
1
|
+
{"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../../../../src/vtab/memory/layer/connection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAUvD;;;GAGG;AACH,qBAAa,qBAAqB;IACjC,SAAgB,YAAY,EAAE,MAAM,CAAC;IACrC,SAAgB,YAAY,EAAE,kBAAkB,CAAC;IAC1C,SAAS,EAAE,KAAK,CAAC;IACjB,uBAAuB,EAAE,gBAAgB,GAAG,IAAI,CAAQ;IACxD,mBAAmB,EAAE,OAAO,CAAS;IAE5C,6EAA6E;IAC7E,OAAO,CAAC,cAAc,CAA0B;gBAEpC,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,KAAK;IAMhE,iHAAiH;IACjH,KAAK,IAAI,IAAI;IAeb,sCAAsC;IAChC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAW7B,yCAAyC;IACzC,QAAQ,IAAI,IAAI;IAkBhB,uDAAuD;IACvD,OAAO,CAAC,qBAAqB;IAK7B,mDAAmD;IACnD,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAsBpC;;;;OAIG;IACH,OAAO,CAAC,yBAAyB;IA4CjC,yFAAyF;IACzF,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAM3C;;;OAGG;IACH,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IA2BvC,eAAe,IAAI,IAAI;CAG9B"}
|
|
@@ -16,7 +16,8 @@ export class MemoryTableConnection {
|
|
|
16
16
|
readLayer;
|
|
17
17
|
pendingTransactionLayer = null;
|
|
18
18
|
explicitTransaction = false; // Track if transaction was explicitly started
|
|
19
|
-
|
|
19
|
+
/** Stack of savepoint snapshots, indexed by depth from TransactionManager */
|
|
20
|
+
savepointStack = [];
|
|
20
21
|
constructor(manager, initialReadLayer) {
|
|
21
22
|
this.connectionId = connectionCounter++;
|
|
22
23
|
this.tableManager = manager;
|
|
@@ -61,29 +62,25 @@ export class MemoryTableConnection {
|
|
|
61
62
|
}
|
|
62
63
|
/** Helper method to clear transaction-related state */
|
|
63
64
|
clearTransactionState() {
|
|
64
|
-
this.
|
|
65
|
+
this.savepointStack = [];
|
|
65
66
|
this.explicitTransaction = false;
|
|
66
67
|
}
|
|
67
|
-
/** Creates a savepoint
|
|
68
|
-
createSavepoint(
|
|
69
|
-
if (
|
|
70
|
-
quereusError(`Invalid savepoint
|
|
68
|
+
/** Creates a savepoint at the given depth index */
|
|
69
|
+
createSavepoint(depth) {
|
|
70
|
+
if (depth < 0) {
|
|
71
|
+
quereusError(`Invalid savepoint depth: ${depth}. Must be non-negative.`, StatusCode.INTERNAL);
|
|
71
72
|
}
|
|
72
73
|
if (!this.pendingTransactionLayer) {
|
|
73
74
|
// Start an implicit transaction and create a fresh layer immediately so the savepoint has something to snapshot
|
|
74
75
|
this.pendingTransactionLayer = new TransactionLayer(this.tableManager.currentCommittedLayer);
|
|
75
|
-
// Not marking explicitTransaction; this is still auto-txn unless caller ran BEGIN earlier.
|
|
76
76
|
}
|
|
77
|
-
|
|
78
|
-
quereusError(`Failed to create transaction for savepoint ${savepointIndex}`);
|
|
79
|
-
}
|
|
80
|
-
// Create a snapshot of the current transaction state
|
|
77
|
+
// Create a snapshot of the current transaction state and push onto the stack
|
|
81
78
|
const savepointLayer = this.createTransactionSnapshot(this.pendingTransactionLayer);
|
|
82
|
-
|
|
83
|
-
this.savepoints.set(savepointIndex, savepointLayer);
|
|
79
|
+
this.savepointStack.push(savepointLayer);
|
|
84
80
|
// A SAVEPOINT implicitly puts the connection into explicit-transaction mode
|
|
85
81
|
// so that subsequent statements do NOT auto-commit and invalidate the savepoint.
|
|
86
82
|
this.explicitTransaction = true;
|
|
83
|
+
debugLog(`Connection %d: Created savepoint at depth %d (stack size: %d)`, this.connectionId, depth, this.savepointStack.length);
|
|
87
84
|
}
|
|
88
85
|
/**
|
|
89
86
|
* Creates a snapshot of a transaction layer by copying its effective data to a new independent layer.
|
|
@@ -128,47 +125,38 @@ export class MemoryTableConnection {
|
|
|
128
125
|
snapshotLayer.markCommitted();
|
|
129
126
|
return snapshotLayer;
|
|
130
127
|
}
|
|
131
|
-
/** Releases
|
|
132
|
-
releaseSavepoint(
|
|
128
|
+
/** Releases savepoints from the top of the stack down to the target depth (exclusive) */
|
|
129
|
+
releaseSavepoint(targetDepth) {
|
|
133
130
|
if (!this.pendingTransactionLayer)
|
|
134
|
-
return; // No transaction, nothing to release
|
|
135
|
-
if (savepointIndex < 0) {
|
|
136
|
-
warnLog(`Connection %d: Invalid savepoint index %d for release.`, this.connectionId, savepointIndex);
|
|
137
131
|
return;
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
for (const idx of Array.from(this.savepoints.keys())) {
|
|
141
|
-
if (idx >= savepointIndex) {
|
|
142
|
-
this.savepoints.delete(idx);
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
debugLog(`Connection %d: Released savepoint %d`, this.connectionId, savepointIndex);
|
|
132
|
+
this.savepointStack.length = targetDepth;
|
|
133
|
+
debugLog(`Connection %d: Released savepoints to depth %d`, this.connectionId, targetDepth);
|
|
146
134
|
}
|
|
147
|
-
/**
|
|
148
|
-
|
|
135
|
+
/**
|
|
136
|
+
* Rolls back to a savepoint at the target depth, restoring the transaction layer.
|
|
137
|
+
* The savepoint is preserved (per SQL standard) so it can be rolled back to again.
|
|
138
|
+
*/
|
|
139
|
+
rollbackToSavepoint(targetDepth) {
|
|
149
140
|
if (!this.pendingTransactionLayer)
|
|
150
|
-
return; // No transaction, nothing to rollback to
|
|
151
|
-
if (savepointIndex < 0) {
|
|
152
|
-
warnLog(`Connection %d: Invalid savepoint index %d for rollback.`, this.connectionId, savepointIndex);
|
|
153
141
|
return;
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
if (!savepoint) {
|
|
157
|
-
warnLog(`Connection %d: Savepoint %d not found for rollback.`, this.connectionId, savepointIndex);
|
|
142
|
+
if (targetDepth >= this.savepointStack.length) {
|
|
143
|
+
warnLog(`Connection %d: Savepoint depth %d out of range (stack size: %d)`, this.connectionId, targetDepth, this.savepointStack.length);
|
|
158
144
|
return;
|
|
159
145
|
}
|
|
160
|
-
|
|
161
|
-
//
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
}
|
|
146
|
+
const savepoint = this.savepointStack[targetDepth];
|
|
147
|
+
// Create a fresh mutable layer that inherits from the savepoint's immutable snapshot.
|
|
148
|
+
// This allows further mutations after rollback.
|
|
149
|
+
this.pendingTransactionLayer = new TransactionLayer(savepoint);
|
|
150
|
+
// Enable change tracking if it was active on the snapshot
|
|
151
|
+
if (savepoint.isTrackingChanges()) {
|
|
152
|
+
this.pendingTransactionLayer.enableChangeTracking();
|
|
168
153
|
}
|
|
154
|
+
// Remove savepoints above the target, but preserve the target itself
|
|
155
|
+
this.savepointStack.length = targetDepth + 1;
|
|
156
|
+
debugLog(`Connection %d: Rolled back to savepoint depth %d (preserved)`, this.connectionId, targetDepth);
|
|
169
157
|
}
|
|
170
158
|
clearSavepoints() {
|
|
171
|
-
this.
|
|
159
|
+
this.savepointStack = [];
|
|
172
160
|
}
|
|
173
161
|
}
|
|
174
162
|
//# sourceMappingURL=connection.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connection.js","sourceRoot":"","sources":["../../../../../src/vtab/memory/layer/connection.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,UAAU,EAAY,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEzD,IAAI,iBAAiB,GAAG,CAAC,CAAC;AAC1B,MAAM,GAAG,GAAG,YAAY,CAAC,8BAA8B,CAAC,CAAC;AACzD,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACnC,MAAM,QAAQ,GAAG,GAAG,CAAC;AAErB;;;GAGG;AACH,MAAM,OAAO,qBAAqB;IACjB,YAAY,CAAS;IACrB,YAAY,CAAqB;IAC1C,SAAS,CAAQ;IACjB,uBAAuB,GAA4B,IAAI,CAAC;IACxD,mBAAmB,GAAY,KAAK,CAAC,CAAC,8CAA8C;
|
|
1
|
+
{"version":3,"file":"connection.js","sourceRoot":"","sources":["../../../../../src/vtab/memory/layer/connection.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { Database } from '../../../core/database.js';
|
|
2
2
|
import { type TableSchema, type IndexSchema } from '../../../schema/table.js';
|
|
3
3
|
import { type BTreeKey, type BTreeKeyForPrimary } from '../types.js';
|
|
4
|
-
import { type Row, type UpdateResult } from '../../../common/types.js';
|
|
4
|
+
import { type SqlValue, type Row, type UpdateResult } from '../../../common/types.js';
|
|
5
5
|
import type { Layer } from './interface.js';
|
|
6
6
|
import { MemoryTableConnection } from './connection.js';
|
|
7
7
|
import { ConflictResolution } from '../../../common/constants.js';
|
|
@@ -35,6 +35,20 @@ export declare class MemoryTableManager {
|
|
|
35
35
|
private get primaryKeyFromRow();
|
|
36
36
|
private get comparePrimaryKeys();
|
|
37
37
|
get currentCommittedLayer(): Layer;
|
|
38
|
+
/**
|
|
39
|
+
* Returns committed layer statistics for cost-based optimization.
|
|
40
|
+
* Provides exact row count and per-index distinct counts without scanning.
|
|
41
|
+
*/
|
|
42
|
+
getBaseLayerStats(): {
|
|
43
|
+
rowCount: number;
|
|
44
|
+
indexDistinctCounts: Map<string, number>;
|
|
45
|
+
};
|
|
46
|
+
/**
|
|
47
|
+
* Sample column values from the committed layer for histogram construction.
|
|
48
|
+
* Returns sorted non-null values for the specified column index.
|
|
49
|
+
* For tables with <= maxSample rows returns all values; otherwise systematic samples.
|
|
50
|
+
*/
|
|
51
|
+
sampleColumnValues(columnIndex: number, maxSample?: number): SqlValue[];
|
|
38
52
|
connect(): MemoryTableConnection;
|
|
39
53
|
disconnect(connectionId: number): Promise<void>;
|
|
40
54
|
commitTransaction(connection: MemoryTableConnection): Promise<void>;
|
|
@@ -55,8 +69,6 @@ export declare class MemoryTableManager {
|
|
|
55
69
|
performMutation(connection: MemoryTableConnection, operation: 'insert' | 'update' | 'delete', values: Row | undefined, oldKeyValues?: Row, onConflict?: ConflictResolution): Promise<UpdateResult>;
|
|
56
70
|
private validateMutationPermissions;
|
|
57
71
|
private ensureTransactionLayer;
|
|
58
|
-
private shouldSkipPkCheck;
|
|
59
|
-
private cleanConflictResolutionFromValues;
|
|
60
72
|
private performInsert;
|
|
61
73
|
private performUpdate;
|
|
62
74
|
private performUpdateWithPrimaryKeyChange;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../../../../src/vtab/memory/layer/manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,WAAW,EAA0C,MAAM,0BAA0B,CAAC;AACtH,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,
|
|
1
|
+
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../../../../src/vtab/memory/layer/manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -72,6 +72,54 @@ export class MemoryTableManager {
|
|
|
72
72
|
get currentCommittedLayer() {
|
|
73
73
|
return this._currentCommittedLayer;
|
|
74
74
|
}
|
|
75
|
+
/**
|
|
76
|
+
* Returns committed layer statistics for cost-based optimization.
|
|
77
|
+
* Provides exact row count and per-index distinct counts without scanning.
|
|
78
|
+
*/
|
|
79
|
+
getBaseLayerStats() {
|
|
80
|
+
const tree = this._currentCommittedLayer.getModificationTree('primary');
|
|
81
|
+
const rowCount = tree?.getCount() ?? 0;
|
|
82
|
+
const indexDistinctCounts = new Map();
|
|
83
|
+
for (const idx of this.tableSchema?.indexes ?? []) {
|
|
84
|
+
const idxTree = this._currentCommittedLayer.getSecondaryIndexTree?.(idx.name);
|
|
85
|
+
if (idxTree) {
|
|
86
|
+
indexDistinctCounts.set(idx.name, idxTree.getCount());
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
return { rowCount, indexDistinctCounts };
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Sample column values from the committed layer for histogram construction.
|
|
93
|
+
* Returns sorted non-null values for the specified column index.
|
|
94
|
+
* For tables with <= maxSample rows returns all values; otherwise systematic samples.
|
|
95
|
+
*/
|
|
96
|
+
sampleColumnValues(columnIndex, maxSample = 1000) {
|
|
97
|
+
const tree = this._currentCommittedLayer.getModificationTree('primary');
|
|
98
|
+
if (!tree)
|
|
99
|
+
return [];
|
|
100
|
+
const count = tree.getCount();
|
|
101
|
+
const values = [];
|
|
102
|
+
if (count === 0)
|
|
103
|
+
return values;
|
|
104
|
+
const step = count <= maxSample ? 1 : Math.floor(count / maxSample);
|
|
105
|
+
let i = 0;
|
|
106
|
+
for (const path of tree.ascending(tree.first())) {
|
|
107
|
+
if (i % step === 0) {
|
|
108
|
+
const row = tree.at(path);
|
|
109
|
+
if (row) {
|
|
110
|
+
const val = row[columnIndex];
|
|
111
|
+
if (val !== null && val !== undefined) {
|
|
112
|
+
values.push(val);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
i++;
|
|
117
|
+
if (values.length >= maxSample)
|
|
118
|
+
break;
|
|
119
|
+
}
|
|
120
|
+
values.sort((a, b) => compareSqlValues(a, b));
|
|
121
|
+
return values;
|
|
122
|
+
}
|
|
75
123
|
connect() {
|
|
76
124
|
const connection = new MemoryTableConnection(this, this._currentCommittedLayer);
|
|
77
125
|
this.connections.set(connection.connectionId, connection);
|
|
@@ -327,7 +375,6 @@ export class MemoryTableManager {
|
|
|
327
375
|
const wasExplicitTransaction = connection.explicitTransaction;
|
|
328
376
|
this.ensureTransactionLayer(connection);
|
|
329
377
|
const targetLayer = connection.pendingTransactionLayer;
|
|
330
|
-
this.cleanConflictResolutionFromValues(values);
|
|
331
378
|
let result;
|
|
332
379
|
switch (operation) {
|
|
333
380
|
case 'insert':
|
|
@@ -368,17 +415,6 @@ export class MemoryTableManager {
|
|
|
368
415
|
// transaction is auto-created (autocommit mode). Leave explicitTransaction flag as-is.
|
|
369
416
|
}
|
|
370
417
|
}
|
|
371
|
-
shouldSkipPkCheck(values) {
|
|
372
|
-
return !!(values && values._skipPkCheck);
|
|
373
|
-
}
|
|
374
|
-
cleanConflictResolutionFromValues(values) {
|
|
375
|
-
if (values && values._onConflict) {
|
|
376
|
-
delete values._onConflict;
|
|
377
|
-
}
|
|
378
|
-
if (values && values._skipPkCheck) {
|
|
379
|
-
delete values._skipPkCheck;
|
|
380
|
-
}
|
|
381
|
-
}
|
|
382
418
|
async performInsert(targetLayer, values, onConflict) {
|
|
383
419
|
if (!values) {
|
|
384
420
|
throw new QuereusError("INSERT requires values.", StatusCode.MISUSE);
|
|
@@ -394,27 +430,21 @@ export class MemoryTableManager {
|
|
|
394
430
|
});
|
|
395
431
|
const newRowData = validatedRow;
|
|
396
432
|
const primaryKey = this.primaryKeyFromRow(newRowData);
|
|
397
|
-
const
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
}
|
|
405
|
-
if (onConflict === ConflictResolution.REPLACE) {
|
|
406
|
-
// REPLACE: delete existing row and insert new one
|
|
407
|
-
targetLayer.recordUpsert(primaryKey, newRowData, existingRow);
|
|
408
|
-
return { status: 'ok', row: newRowData };
|
|
409
|
-
}
|
|
410
|
-
// Return constraint violation with existing row for UPSERT support
|
|
411
|
-
return {
|
|
412
|
-
status: 'constraint',
|
|
413
|
-
constraint: 'unique',
|
|
414
|
-
message: `UNIQUE constraint failed: ${this._tableName} PK.`,
|
|
415
|
-
existingRow: existingRow
|
|
416
|
-
};
|
|
433
|
+
const existingRow = this.lookupEffectiveRow(primaryKey, targetLayer);
|
|
434
|
+
if (existingRow !== null) {
|
|
435
|
+
if (onConflict === ConflictResolution.IGNORE) {
|
|
436
|
+
return { status: 'ok', row: undefined };
|
|
437
|
+
}
|
|
438
|
+
if (onConflict === ConflictResolution.REPLACE) {
|
|
439
|
+
targetLayer.recordUpsert(primaryKey, newRowData, existingRow);
|
|
440
|
+
return { status: 'ok', row: newRowData };
|
|
417
441
|
}
|
|
442
|
+
return {
|
|
443
|
+
status: 'constraint',
|
|
444
|
+
constraint: 'unique',
|
|
445
|
+
message: `UNIQUE constraint failed: ${this._tableName} PK.`,
|
|
446
|
+
existingRow: existingRow
|
|
447
|
+
};
|
|
418
448
|
}
|
|
419
449
|
targetLayer.recordUpsert(primaryKey, newRowData, null);
|
|
420
450
|
return { status: 'ok', row: newRowData };
|
|
@@ -487,7 +517,6 @@ export class MemoryTableManager {
|
|
|
487
517
|
}
|
|
488
518
|
renameTable(newName) {
|
|
489
519
|
logger.operation('Rename Table', this._tableName, { newName });
|
|
490
|
-
const oldName = this._tableName;
|
|
491
520
|
this._tableName = newName;
|
|
492
521
|
// Emit schema change event
|
|
493
522
|
this.eventEmitter?.emitSchemaChange?.({
|
|
@@ -524,7 +553,9 @@ export class MemoryTableManager {
|
|
|
524
553
|
}
|
|
525
554
|
}
|
|
526
555
|
// Check for NOT NULL constraint (could be explicit or from default behavior)
|
|
527
|
-
|
|
556
|
+
// Allow NOT NULL without DEFAULT if table is empty (SQLite-compatible)
|
|
557
|
+
const tableHasRows = this.baseLayer.primaryTree.at(this.baseLayer.primaryTree.first()) !== undefined;
|
|
558
|
+
if (newColumnSchema.notNull && defaultValue === null && !(defaultConstraint?.expr?.type === 'literal') && tableHasRows) {
|
|
528
559
|
throw new QuereusError(`Cannot add NOT NULL col '${newColumnSchema.name}' without DEFAULT.`, StatusCode.CONSTRAINT);
|
|
529
560
|
}
|
|
530
561
|
const updatedColumnsSchema = Object.freeze([...this.tableSchema.columns, newColumnSchema]);
|
|
@@ -854,12 +885,29 @@ export class MemoryTableManager {
|
|
|
854
885
|
const primaryTree = transactionLayer.getModificationTree('primary');
|
|
855
886
|
if (!primaryTree)
|
|
856
887
|
return;
|
|
857
|
-
//
|
|
888
|
+
// Collect all rows first to avoid modifying the base tree while iterating
|
|
889
|
+
// the inherited BTree (whose parent IS the base tree).
|
|
890
|
+
const allRows = [];
|
|
858
891
|
for (const path of primaryTree.ascending(primaryTree.first())) {
|
|
859
|
-
|
|
860
|
-
|
|
892
|
+
allRows.push(primaryTree.at(path));
|
|
893
|
+
}
|
|
894
|
+
logger.debugLog(`[Consolidate] Collected ${allRows.length} rows from transaction layer. Row widths: ${allRows.map(r => r.length).join(',')}`);
|
|
895
|
+
// Count base layer rows before
|
|
896
|
+
let baseCount = 0;
|
|
897
|
+
for (const _path of this.baseLayer.primaryTree.ascending(this.baseLayer.primaryTree.first())) {
|
|
898
|
+
baseCount++;
|
|
899
|
+
}
|
|
900
|
+
logger.debugLog(`[Consolidate] Base layer had ${baseCount} rows before copy`);
|
|
901
|
+
// Now insert collected rows into the base layer
|
|
902
|
+
for (const row of allRows) {
|
|
861
903
|
this.baseLayer.primaryTree.insert(row);
|
|
862
904
|
}
|
|
905
|
+
// Count base layer rows after
|
|
906
|
+
let baseCountAfter = 0;
|
|
907
|
+
for (const _path of this.baseLayer.primaryTree.ascending(this.baseLayer.primaryTree.first())) {
|
|
908
|
+
baseCountAfter++;
|
|
909
|
+
}
|
|
910
|
+
logger.debugLog(`[Consolidate] Base layer has ${baseCountAfter} rows after copy`);
|
|
863
911
|
// Also need to rebuild secondary indexes in the base layer
|
|
864
912
|
await this.baseLayer.rebuildAllSecondaryIndexes();
|
|
865
913
|
}
|