@quereus/quereus 4.3.1 → 4.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +25 -7
- package/dist/src/common/types.d.ts +9 -59
- package/dist/src/common/types.d.ts.map +1 -1
- package/dist/src/common/types.js.map +1 -1
- package/dist/src/core/database-assertions.d.ts +2 -2
- package/dist/src/core/database-assertions.d.ts.map +1 -1
- package/dist/src/core/database-assertions.js +4 -3
- package/dist/src/core/database-assertions.js.map +1 -1
- package/dist/src/core/database-external-changes.d.ts +3 -3
- package/dist/src/core/database-external-changes.d.ts.map +1 -1
- package/dist/src/core/database-external-changes.js +13 -10
- package/dist/src/core/database-external-changes.js.map +1 -1
- package/dist/src/core/database-internal.d.ts.map +1 -1
- package/dist/src/core/database-materialized-views-analysis.d.ts +199 -0
- package/dist/src/core/database-materialized-views-analysis.d.ts.map +1 -0
- package/dist/src/core/database-materialized-views-analysis.js +502 -0
- package/dist/src/core/database-materialized-views-analysis.js.map +1 -0
- package/dist/src/core/database-materialized-views-apply.d.ts +422 -0
- package/dist/src/core/database-materialized-views-apply.d.ts.map +1 -0
- package/dist/src/core/database-materialized-views-apply.js +929 -0
- package/dist/src/core/database-materialized-views-apply.js.map +1 -0
- package/dist/src/core/database-materialized-views-plan-builders.d.ts +267 -0
- package/dist/src/core/database-materialized-views-plan-builders.d.ts.map +1 -0
- package/dist/src/core/database-materialized-views-plan-builders.js +1423 -0
- package/dist/src/core/database-materialized-views-plan-builders.js.map +1 -0
- package/dist/src/core/database-materialized-views-plans.d.ts +641 -0
- package/dist/src/core/database-materialized-views-plans.d.ts.map +1 -0
- package/dist/src/core/database-materialized-views-plans.js +13 -0
- package/dist/src/core/database-materialized-views-plans.js.map +1 -0
- package/dist/src/core/database-materialized-views.d.ts +108 -860
- package/dist/src/core/database-materialized-views.d.ts.map +1 -1
- package/dist/src/core/database-materialized-views.js +212 -2165
- package/dist/src/core/database-materialized-views.js.map +1 -1
- package/dist/src/core/database-transaction.d.ts +10 -1
- package/dist/src/core/database-transaction.d.ts.map +1 -1
- package/dist/src/core/database-transaction.js +16 -4
- package/dist/src/core/database-transaction.js.map +1 -1
- package/dist/src/core/database-watchers.d.ts.map +1 -1
- package/dist/src/core/database-watchers.js +2 -1
- package/dist/src/core/database-watchers.js.map +1 -1
- package/dist/src/core/database.d.ts +99 -13
- package/dist/src/core/database.d.ts.map +1 -1
- package/dist/src/core/database.js +270 -50
- package/dist/src/core/database.js.map +1 -1
- package/dist/src/core/derived-row-validator.d.ts +1 -1
- package/dist/src/core/derived-row-validator.d.ts.map +1 -1
- package/dist/src/core/derived-row-validator.js +5 -3
- package/dist/src/core/derived-row-validator.js.map +1 -1
- package/dist/src/core/statement.d.ts +8 -0
- package/dist/src/core/statement.d.ts.map +1 -1
- package/dist/src/core/statement.js +98 -18
- package/dist/src/core/statement.js.map +1 -1
- package/dist/src/emit/ast-stringify.d.ts.map +1 -1
- package/dist/src/emit/ast-stringify.js +24 -13
- package/dist/src/emit/ast-stringify.js.map +1 -1
- package/dist/src/func/builtins/aggregate.d.ts.map +1 -1
- package/dist/src/func/builtins/aggregate.js +127 -21
- package/dist/src/func/builtins/aggregate.js.map +1 -1
- package/dist/src/func/builtins/explain.d.ts.map +1 -1
- package/dist/src/func/builtins/explain.js +2 -1
- package/dist/src/func/builtins/explain.js.map +1 -1
- package/dist/src/func/builtins/json.d.ts.map +1 -1
- package/dist/src/func/builtins/json.js +2 -1
- package/dist/src/func/builtins/json.js.map +1 -1
- package/dist/src/func/builtins/mutation.d.ts.map +1 -1
- package/dist/src/func/builtins/mutation.js +3 -2
- package/dist/src/func/builtins/mutation.js.map +1 -1
- package/dist/src/func/registration.d.ts +6 -1
- package/dist/src/func/registration.d.ts.map +1 -1
- package/dist/src/func/registration.js +16 -0
- package/dist/src/func/registration.js.map +1 -1
- package/dist/src/index.d.ts +16 -6
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +33 -7
- package/dist/src/index.js.map +1 -1
- package/dist/src/parser/ast.d.ts +2 -2
- package/dist/src/parser/lexer.d.ts +11 -1
- package/dist/src/parser/lexer.d.ts.map +1 -1
- package/dist/src/parser/lexer.js +40 -34
- package/dist/src/parser/lexer.js.map +1 -1
- package/dist/src/parser/parser.d.ts.map +1 -1
- package/dist/src/parser/parser.js +16 -9
- package/dist/src/parser/parser.js.map +1 -1
- package/dist/src/planner/analysis/authored-inverse.js +1 -1
- package/dist/src/planner/analysis/comparison-collation.d.ts +52 -0
- package/dist/src/planner/analysis/comparison-collation.d.ts.map +1 -1
- package/dist/src/planner/analysis/comparison-collation.js +84 -7
- package/dist/src/planner/analysis/comparison-collation.js.map +1 -1
- package/dist/src/planner/analysis/constraint-extractor.d.ts.map +1 -1
- package/dist/src/planner/analysis/constraint-extractor.js +64 -17
- package/dist/src/planner/analysis/constraint-extractor.js.map +1 -1
- package/dist/src/planner/analysis/coverage-prover.d.ts +1 -1
- package/dist/src/planner/analysis/coverage-prover.js +1 -1
- package/dist/src/planner/analysis/equi-correlation.d.ts +26 -0
- package/dist/src/planner/analysis/equi-correlation.d.ts.map +1 -0
- package/dist/src/planner/analysis/equi-correlation.js +62 -0
- package/dist/src/planner/analysis/equi-correlation.js.map +1 -0
- package/dist/src/planner/analysis/query-rewrite-matcher.d.ts +54 -18
- package/dist/src/planner/analysis/query-rewrite-matcher.d.ts.map +1 -1
- package/dist/src/planner/analysis/query-rewrite-matcher.js +86 -42
- package/dist/src/planner/analysis/query-rewrite-matcher.js.map +1 -1
- package/dist/src/planner/analysis/sat-checker.d.ts +8 -1
- package/dist/src/planner/analysis/sat-checker.d.ts.map +1 -1
- package/dist/src/planner/analysis/sat-checker.js +117 -22
- package/dist/src/planner/analysis/sat-checker.js.map +1 -1
- package/dist/src/planner/analysis/scalar-invertibility.d.ts +13 -4
- package/dist/src/planner/analysis/scalar-invertibility.d.ts.map +1 -1
- package/dist/src/planner/analysis/scalar-invertibility.js +12 -3
- package/dist/src/planner/analysis/scalar-invertibility.js.map +1 -1
- package/dist/src/planner/analysis/scalar-subqueries.d.ts +28 -0
- package/dist/src/planner/analysis/scalar-subqueries.d.ts.map +1 -0
- package/dist/src/planner/analysis/scalar-subqueries.js +60 -0
- package/dist/src/planner/analysis/scalar-subqueries.js.map +1 -0
- package/dist/src/planner/analysis/update-lineage.d.ts +1 -1
- package/dist/src/planner/analysis/update-lineage.js +1 -1
- package/dist/src/planner/analysis/update-lineage.js.map +1 -1
- package/dist/src/planner/analysis/view-complement.d.ts +2 -2
- package/dist/src/planner/building/delete.js +2 -2
- package/dist/src/planner/building/delete.js.map +1 -1
- package/dist/src/planner/building/dml-target.d.ts +2 -2
- package/dist/src/planner/building/dml-target.js +2 -2
- package/dist/src/planner/building/insert.d.ts.map +1 -1
- package/dist/src/planner/building/insert.js +53 -2
- package/dist/src/planner/building/insert.js.map +1 -1
- package/dist/src/planner/building/schema-resolution.d.ts +3 -0
- package/dist/src/planner/building/schema-resolution.d.ts.map +1 -1
- package/dist/src/planner/building/schema-resolution.js +4 -5
- package/dist/src/planner/building/schema-resolution.js.map +1 -1
- package/dist/src/planner/building/select.d.ts.map +1 -1
- package/dist/src/planner/building/select.js +18 -4
- package/dist/src/planner/building/select.js.map +1 -1
- package/dist/src/planner/building/update.js +2 -2
- package/dist/src/planner/building/update.js.map +1 -1
- package/dist/src/planner/building/view-mutation-builder.js +7 -7
- package/dist/src/planner/building/view-mutation-builder.js.map +1 -1
- package/dist/src/planner/building/with.d.ts.map +1 -1
- package/dist/src/planner/building/with.js +5 -8
- package/dist/src/planner/building/with.js.map +1 -1
- package/dist/src/planner/cache/materialization-advisory.d.ts +34 -2
- package/dist/src/planner/cache/materialization-advisory.d.ts.map +1 -1
- package/dist/src/planner/cache/materialization-advisory.js +185 -42
- package/dist/src/planner/cache/materialization-advisory.js.map +1 -1
- package/dist/src/planner/cache/reference-graph.d.ts +14 -5
- package/dist/src/planner/cache/reference-graph.d.ts.map +1 -1
- package/dist/src/planner/cache/reference-graph.js +31 -39
- package/dist/src/planner/cache/reference-graph.js.map +1 -1
- package/dist/src/planner/cost/index.d.ts +30 -5
- package/dist/src/planner/cost/index.d.ts.map +1 -1
- package/dist/src/planner/cost/index.js +26 -0
- package/dist/src/planner/cost/index.js.map +1 -1
- package/dist/src/planner/debug.d.ts +3 -2
- package/dist/src/planner/debug.d.ts.map +1 -1
- package/dist/src/planner/debug.js +9 -3
- package/dist/src/planner/debug.js.map +1 -1
- package/dist/src/planner/framework/characteristics.d.ts +46 -19
- package/dist/src/planner/framework/characteristics.d.ts.map +1 -1
- package/dist/src/planner/framework/characteristics.js +50 -134
- package/dist/src/planner/framework/characteristics.js.map +1 -1
- package/dist/src/planner/framework/context.d.ts +8 -44
- package/dist/src/planner/framework/context.d.ts.map +1 -1
- package/dist/src/planner/framework/context.js +0 -91
- package/dist/src/planner/framework/context.js.map +1 -1
- package/dist/src/planner/framework/pass.d.ts +7 -0
- package/dist/src/planner/framework/pass.d.ts.map +1 -1
- package/dist/src/planner/framework/pass.js +84 -0
- package/dist/src/planner/framework/pass.js.map +1 -1
- package/dist/src/planner/framework/registry.d.ts +13 -42
- package/dist/src/planner/framework/registry.d.ts.map +1 -1
- package/dist/src/planner/framework/registry.js +14 -182
- package/dist/src/planner/framework/registry.js.map +1 -1
- package/dist/src/planner/mutation/backward-body.d.ts +2 -2
- package/dist/src/planner/mutation/cte-flatten.js +1 -1
- package/dist/src/planner/mutation/decomposition.d.ts +2 -2
- package/dist/src/planner/mutation/decomposition.js +1 -1
- package/dist/src/planner/mutation/lens-enforcement.d.ts.map +1 -1
- package/dist/src/planner/mutation/lens-enforcement.js +2 -1
- package/dist/src/planner/mutation/lens-enforcement.js.map +1 -1
- package/dist/src/planner/mutation/multi-source.d.ts +8 -8
- package/dist/src/planner/mutation/multi-source.js +11 -11
- package/dist/src/planner/mutation/multi-source.js.map +1 -1
- package/dist/src/planner/mutation/propagate.d.ts +1 -1
- package/dist/src/planner/mutation/propagate.js +1 -1
- package/dist/src/planner/mutation/scope-transform.d.ts +2 -2
- package/dist/src/planner/mutation/scope-transform.js +3 -3
- package/dist/src/planner/mutation/scope-transform.js.map +1 -1
- package/dist/src/planner/mutation/set-op.d.ts +1 -1
- package/dist/src/planner/mutation/set-op.d.ts.map +1 -1
- package/dist/src/planner/mutation/set-op.js +3 -2
- package/dist/src/planner/mutation/set-op.js.map +1 -1
- package/dist/src/planner/mutation/single-source.d.ts +3 -3
- package/dist/src/planner/mutation/single-source.js +9 -9
- package/dist/src/planner/mutation/single-source.js.map +1 -1
- package/dist/src/planner/nodes/aggregate-function.d.ts +3 -1
- package/dist/src/planner/nodes/aggregate-function.d.ts.map +1 -1
- package/dist/src/planner/nodes/aggregate-function.js +1 -0
- package/dist/src/planner/nodes/aggregate-function.js.map +1 -1
- package/dist/src/planner/nodes/aggregate-node.d.ts +1 -0
- package/dist/src/planner/nodes/aggregate-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/aggregate-node.js +8 -1
- package/dist/src/planner/nodes/aggregate-node.js.map +1 -1
- package/dist/src/planner/nodes/alias-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/alias-node.js +3 -1
- package/dist/src/planner/nodes/alias-node.js.map +1 -1
- package/dist/src/planner/nodes/asof-scan-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/asof-scan-node.js +3 -2
- package/dist/src/planner/nodes/asof-scan-node.js.map +1 -1
- package/dist/src/planner/nodes/asserted-keys-node.d.ts +1 -1
- package/dist/src/planner/nodes/asserted-keys-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/asserted-keys-node.js +5 -2
- package/dist/src/planner/nodes/asserted-keys-node.js.map +1 -1
- package/dist/src/planner/nodes/async-gather-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/async-gather-node.js +3 -1
- package/dist/src/planner/nodes/async-gather-node.js.map +1 -1
- package/dist/src/planner/nodes/block.js +3 -3
- package/dist/src/planner/nodes/block.js.map +1 -1
- package/dist/src/planner/nodes/bloom-join-node.d.ts +2 -0
- package/dist/src/planner/nodes/bloom-join-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/bloom-join-node.js +5 -1
- package/dist/src/planner/nodes/bloom-join-node.js.map +1 -1
- package/dist/src/planner/nodes/cache-node.d.ts +19 -2
- package/dist/src/planner/nodes/cache-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/cache-node.js +43 -3
- package/dist/src/planner/nodes/cache-node.js.map +1 -1
- package/dist/src/planner/nodes/cte-node.d.ts +16 -1
- package/dist/src/planner/nodes/cte-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/cte-node.js +16 -3
- package/dist/src/planner/nodes/cte-node.js.map +1 -1
- package/dist/src/planner/nodes/distinct-node.js +3 -3
- package/dist/src/planner/nodes/distinct-node.js.map +1 -1
- package/dist/src/planner/nodes/dml-executor-node.d.ts +21 -0
- package/dist/src/planner/nodes/dml-executor-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/dml-executor-node.js.map +1 -1
- package/dist/src/planner/nodes/envelope-scan-node.d.ts +1 -1
- package/dist/src/planner/nodes/envelope-scan-node.js +1 -1
- package/dist/src/planner/nodes/fanout-lookup-join-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/fanout-lookup-join-node.js +4 -2
- package/dist/src/planner/nodes/fanout-lookup-join-node.js.map +1 -1
- package/dist/src/planner/nodes/filter.d.ts +10 -2
- package/dist/src/planner/nodes/filter.d.ts.map +1 -1
- package/dist/src/planner/nodes/filter.js +81 -14
- package/dist/src/planner/nodes/filter.js.map +1 -1
- package/dist/src/planner/nodes/hash-aggregate.d.ts +12 -1
- package/dist/src/planner/nodes/hash-aggregate.d.ts.map +1 -1
- package/dist/src/planner/nodes/hash-aggregate.js +28 -1
- package/dist/src/planner/nodes/hash-aggregate.js.map +1 -1
- package/dist/src/planner/nodes/internal-recursive-cte-ref-node.d.ts +3 -1
- package/dist/src/planner/nodes/internal-recursive-cte-ref-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/internal-recursive-cte-ref-node.js +1 -0
- package/dist/src/planner/nodes/internal-recursive-cte-ref-node.js.map +1 -1
- package/dist/src/planner/nodes/join-node.d.ts +3 -1
- package/dist/src/planner/nodes/join-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/join-node.js +5 -5
- package/dist/src/planner/nodes/join-node.js.map +1 -1
- package/dist/src/planner/nodes/lens-auxiliary-access-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/lens-auxiliary-access-node.js +4 -1
- package/dist/src/planner/nodes/lens-auxiliary-access-node.js.map +1 -1
- package/dist/src/planner/nodes/limit-offset.d.ts +1 -0
- package/dist/src/planner/nodes/limit-offset.d.ts.map +1 -1
- package/dist/src/planner/nodes/limit-offset.js +4 -3
- package/dist/src/planner/nodes/limit-offset.js.map +1 -1
- package/dist/src/planner/nodes/merge-join-node.d.ts +2 -0
- package/dist/src/planner/nodes/merge-join-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/merge-join-node.js +6 -1
- package/dist/src/planner/nodes/merge-join-node.js.map +1 -1
- package/dist/src/planner/nodes/ordinal-slice-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/ordinal-slice-node.js +3 -1
- package/dist/src/planner/nodes/ordinal-slice-node.js.map +1 -1
- package/dist/src/planner/nodes/plan-node.d.ts +68 -5
- package/dist/src/planner/nodes/plan-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/plan-node.js +137 -24
- package/dist/src/planner/nodes/plan-node.js.map +1 -1
- package/dist/src/planner/nodes/project-node.d.ts +3 -2
- package/dist/src/planner/nodes/project-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/project-node.js +1 -0
- package/dist/src/planner/nodes/project-node.js.map +1 -1
- package/dist/src/planner/nodes/recursive-cte-node.d.ts +30 -1
- package/dist/src/planner/nodes/recursive-cte-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/recursive-cte-node.js +38 -5
- package/dist/src/planner/nodes/recursive-cte-node.js.map +1 -1
- package/dist/src/planner/nodes/reference.d.ts +5 -1
- package/dist/src/planner/nodes/reference.d.ts.map +1 -1
- package/dist/src/planner/nodes/reference.js +3 -0
- package/dist/src/planner/nodes/reference.js.map +1 -1
- package/dist/src/planner/nodes/remote-query-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/remote-query-node.js +3 -1
- package/dist/src/planner/nodes/remote-query-node.js.map +1 -1
- package/dist/src/planner/nodes/retrieve-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/retrieve-node.js +3 -1
- package/dist/src/planner/nodes/retrieve-node.js.map +1 -1
- package/dist/src/planner/nodes/set-operation-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/set-operation-node.js +3 -1
- package/dist/src/planner/nodes/set-operation-node.js.map +1 -1
- package/dist/src/planner/nodes/sink-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/sink-node.js +3 -1
- package/dist/src/planner/nodes/sink-node.js.map +1 -1
- package/dist/src/planner/nodes/sort.d.ts +2 -1
- package/dist/src/planner/nodes/sort.d.ts.map +1 -1
- package/dist/src/planner/nodes/sort.js +9 -5
- package/dist/src/planner/nodes/sort.js.map +1 -1
- package/dist/src/planner/nodes/stream-aggregate.d.ts +12 -1
- package/dist/src/planner/nodes/stream-aggregate.d.ts.map +1 -1
- package/dist/src/planner/nodes/stream-aggregate.js +32 -3
- package/dist/src/planner/nodes/stream-aggregate.js.map +1 -1
- package/dist/src/planner/nodes/table-access-nodes.d.ts +2 -1
- package/dist/src/planner/nodes/table-access-nodes.d.ts.map +1 -1
- package/dist/src/planner/nodes/table-access-nodes.js +2 -0
- package/dist/src/planner/nodes/table-access-nodes.js.map +1 -1
- package/dist/src/planner/nodes/view-mutation-node.d.ts +2 -2
- package/dist/src/planner/nodes/view-mutation-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/view-mutation-node.js +5 -1
- package/dist/src/planner/nodes/view-mutation-node.js.map +1 -1
- package/dist/src/planner/nodes/window-function.d.ts +3 -1
- package/dist/src/planner/nodes/window-function.d.ts.map +1 -1
- package/dist/src/planner/nodes/window-function.js +1 -0
- package/dist/src/planner/nodes/window-function.js.map +1 -1
- package/dist/src/planner/optimizer.d.ts +52 -8
- package/dist/src/planner/optimizer.d.ts.map +1 -1
- package/dist/src/planner/optimizer.js +1014 -895
- package/dist/src/planner/optimizer.js.map +1 -1
- package/dist/src/planner/rules/access/rule-select-access-path.d.ts.map +1 -1
- package/dist/src/planner/rules/access/rule-select-access-path.js +235 -202
- package/dist/src/planner/rules/access/rule-select-access-path.js.map +1 -1
- package/dist/src/planner/rules/cache/rule-cte-optimization.d.ts.map +1 -1
- package/dist/src/planner/rules/cache/rule-cte-optimization.js +8 -1
- package/dist/src/planner/rules/cache/rule-cte-optimization.js.map +1 -1
- package/dist/src/planner/rules/cache/rule-in-subquery-cache.d.ts +7 -0
- package/dist/src/planner/rules/cache/rule-in-subquery-cache.d.ts.map +1 -1
- package/dist/src/planner/rules/cache/rule-in-subquery-cache.js +14 -1
- package/dist/src/planner/rules/cache/rule-in-subquery-cache.js.map +1 -1
- package/dist/src/planner/rules/cache/rule-materialized-view-rewrite.d.ts +2 -2
- package/dist/src/planner/rules/cache/rule-materialized-view-rewrite.d.ts.map +1 -1
- package/dist/src/planner/rules/cache/rule-materialized-view-rewrite.js +55 -56
- package/dist/src/planner/rules/cache/rule-materialized-view-rewrite.js.map +1 -1
- 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 +6 -0
- package/dist/src/planner/rules/cache/rule-mutating-subquery-cache.js.map +1 -1
- package/dist/src/planner/rules/cache/rule-nested-loop-right-cache.d.ts +25 -0
- package/dist/src/planner/rules/cache/rule-nested-loop-right-cache.d.ts.map +1 -0
- package/dist/src/planner/rules/cache/rule-nested-loop-right-cache.js +176 -0
- package/dist/src/planner/rules/cache/rule-nested-loop-right-cache.js.map +1 -0
- package/dist/src/planner/rules/cache/rule-scalar-cse.d.ts +1 -1
- package/dist/src/planner/rules/cache/rule-scalar-cse.js +1 -1
- package/dist/src/planner/rules/cache/rule-scalar-subquery-cache.d.ts +29 -0
- package/dist/src/planner/rules/cache/rule-scalar-subquery-cache.d.ts.map +1 -0
- package/dist/src/planner/rules/cache/rule-scalar-subquery-cache.js +66 -0
- package/dist/src/planner/rules/cache/rule-scalar-subquery-cache.js.map +1 -0
- package/dist/src/planner/rules/join/rule-fanout-batched-outer.d.ts +1 -1
- package/dist/src/planner/rules/join/rule-fanout-batched-outer.js +1 -1
- package/dist/src/planner/rules/join/rule-fanout-lookup-join.d.ts.map +1 -1
- package/dist/src/planner/rules/join/rule-fanout-lookup-join.js +1 -54
- package/dist/src/planner/rules/join/rule-fanout-lookup-join.js.map +1 -1
- package/dist/src/planner/rules/join/rule-inner-join-existence-recovery.d.ts +1 -1
- package/dist/src/planner/rules/join/rule-inner-join-existence-recovery.js +1 -1
- package/dist/src/planner/rules/join/rule-join-elimination.d.ts +1 -1
- package/dist/src/planner/rules/join/rule-join-elimination.js +1 -1
- package/dist/src/planner/rules/parallel/rule-async-gather-zip-by-key.js +5 -6
- package/dist/src/planner/rules/parallel/rule-async-gather-zip-by-key.js.map +1 -1
- package/dist/src/planner/rules/predicate/rule-empty-relation-folding.d.ts +1 -1
- package/dist/src/planner/rules/predicate/rule-empty-relation-folding.js +1 -1
- package/dist/src/planner/rules/predicate/rule-filter-contradiction.d.ts +2 -2
- package/dist/src/planner/rules/predicate/rule-filter-contradiction.d.ts.map +1 -1
- package/dist/src/planner/rules/predicate/rule-filter-contradiction.js +4 -3
- package/dist/src/planner/rules/predicate/rule-filter-contradiction.js.map +1 -1
- package/dist/src/planner/rules/predicate/rule-filter-selectivity.d.ts +19 -0
- package/dist/src/planner/rules/predicate/rule-filter-selectivity.d.ts.map +1 -0
- package/dist/src/planner/rules/predicate/rule-filter-selectivity.js +48 -0
- package/dist/src/planner/rules/predicate/rule-filter-selectivity.js.map +1 -0
- package/dist/src/planner/rules/predicate/rule-sargable-range-rewrite.js +12 -1
- package/dist/src/planner/rules/predicate/rule-sargable-range-rewrite.js.map +1 -1
- package/dist/src/planner/rules/retrieve/rule-grow-retrieve.d.ts.map +1 -1
- package/dist/src/planner/rules/retrieve/rule-grow-retrieve.js +22 -20
- package/dist/src/planner/rules/retrieve/rule-grow-retrieve.js.map +1 -1
- package/dist/src/planner/rules/shared/index-style-context.d.ts +39 -0
- package/dist/src/planner/rules/shared/index-style-context.d.ts.map +1 -0
- package/dist/src/planner/rules/shared/index-style-context.js +26 -0
- package/dist/src/planner/rules/shared/index-style-context.js.map +1 -0
- package/dist/src/planner/rules/sort/rule-orderby-fd-pruning.d.ts +1 -1
- package/dist/src/planner/rules/sort/rule-orderby-fd-pruning.js +1 -1
- package/dist/src/planner/rules/subquery/rule-anti-join-fk-empty.d.ts +1 -1
- package/dist/src/planner/rules/subquery/rule-anti-join-fk-empty.js +1 -1
- package/dist/src/planner/rules/subquery/rule-scalar-agg-decorrelation.d.ts +191 -0
- package/dist/src/planner/rules/subquery/rule-scalar-agg-decorrelation.d.ts.map +1 -0
- package/dist/src/planner/rules/subquery/rule-scalar-agg-decorrelation.js +623 -0
- package/dist/src/planner/rules/subquery/rule-scalar-agg-decorrelation.js.map +1 -0
- package/dist/src/planner/rules/subquery/rule-subquery-decorrelation.d.ts +10 -1
- package/dist/src/planner/rules/subquery/rule-subquery-decorrelation.d.ts.map +1 -1
- package/dist/src/planner/rules/subquery/rule-subquery-decorrelation.js +242 -51
- package/dist/src/planner/rules/subquery/rule-subquery-decorrelation.js.map +1 -1
- package/dist/src/planner/stats/analyze.d.ts.map +1 -1
- package/dist/src/planner/stats/analyze.js +2 -20
- package/dist/src/planner/stats/analyze.js.map +1 -1
- package/dist/src/planner/stats/histogram.d.ts.map +1 -1
- package/dist/src/planner/stats/histogram.js +4 -0
- package/dist/src/planner/stats/histogram.js.map +1 -1
- package/dist/src/planner/util/fd-utils.d.ts +2 -3
- package/dist/src/planner/util/fd-utils.d.ts.map +1 -1
- package/dist/src/planner/util/fd-utils.js +2 -3
- package/dist/src/planner/util/fd-utils.js.map +1 -1
- package/dist/src/planner/validation/plan-validator.d.ts +16 -0
- package/dist/src/planner/validation/plan-validator.d.ts.map +1 -1
- package/dist/src/planner/validation/plan-validator.js +36 -0
- package/dist/src/planner/validation/plan-validator.js.map +1 -1
- package/dist/src/runtime/async-util.d.ts +26 -0
- package/dist/src/runtime/async-util.d.ts.map +1 -1
- package/dist/src/runtime/async-util.js +139 -55
- package/dist/src/runtime/async-util.js.map +1 -1
- package/dist/src/runtime/cache/shared-cache.d.ts +7 -0
- package/dist/src/runtime/cache/shared-cache.d.ts.map +1 -1
- package/dist/src/runtime/cache/shared-cache.js +34 -1
- package/dist/src/runtime/cache/shared-cache.js.map +1 -1
- package/dist/src/runtime/context-helpers.d.ts +32 -4
- package/dist/src/runtime/context-helpers.d.ts.map +1 -1
- package/dist/src/runtime/context-helpers.js +26 -9
- package/dist/src/runtime/context-helpers.js.map +1 -1
- package/dist/src/runtime/deferred-constraint-queue.d.ts.map +1 -1
- package/dist/src/runtime/deferred-constraint-queue.js +2 -1
- package/dist/src/runtime/deferred-constraint-queue.js.map +1 -1
- package/dist/src/runtime/emission-context.d.ts +27 -3
- package/dist/src/runtime/emission-context.d.ts.map +1 -1
- package/dist/src/runtime/emission-context.js +38 -7
- package/dist/src/runtime/emission-context.js.map +1 -1
- package/dist/src/runtime/emit/add-constraint.d.ts.map +1 -1
- package/dist/src/runtime/emit/add-constraint.js +7 -1
- package/dist/src/runtime/emit/add-constraint.js.map +1 -1
- package/dist/src/runtime/emit/aggregate.d.ts +2 -3
- package/dist/src/runtime/emit/aggregate.d.ts.map +1 -1
- package/dist/src/runtime/emit/aggregate.js +23 -28
- package/dist/src/runtime/emit/aggregate.js.map +1 -1
- package/dist/src/runtime/emit/alter-table.d.ts.map +1 -1
- package/dist/src/runtime/emit/alter-table.js +98 -9
- package/dist/src/runtime/emit/alter-table.js.map +1 -1
- package/dist/src/runtime/emit/analyze.d.ts.map +1 -1
- package/dist/src/runtime/emit/analyze.js +2 -1
- package/dist/src/runtime/emit/analyze.js.map +1 -1
- package/dist/src/runtime/emit/asof-scan.d.ts.map +1 -1
- package/dist/src/runtime/emit/asof-scan.js +13 -10
- package/dist/src/runtime/emit/asof-scan.js.map +1 -1
- package/dist/src/runtime/emit/async-gather.d.ts.map +1 -1
- package/dist/src/runtime/emit/async-gather.js +4 -3
- package/dist/src/runtime/emit/async-gather.js.map +1 -1
- package/dist/src/runtime/emit/between.d.ts.map +1 -1
- package/dist/src/runtime/emit/between.js +2 -1
- package/dist/src/runtime/emit/between.js.map +1 -1
- package/dist/src/runtime/emit/binary.d.ts.map +1 -1
- package/dist/src/runtime/emit/binary.js +122 -14
- package/dist/src/runtime/emit/binary.js.map +1 -1
- package/dist/src/runtime/emit/block.d.ts.map +1 -1
- package/dist/src/runtime/emit/block.js +2 -1
- package/dist/src/runtime/emit/block.js.map +1 -1
- package/dist/src/runtime/emit/bloom-join.d.ts.map +1 -1
- package/dist/src/runtime/emit/bloom-join.js +20 -8
- package/dist/src/runtime/emit/bloom-join.js.map +1 -1
- package/dist/src/runtime/emit/cache.d.ts +7 -3
- package/dist/src/runtime/emit/cache.d.ts.map +1 -1
- package/dist/src/runtime/emit/cache.js +25 -7
- package/dist/src/runtime/emit/cache.js.map +1 -1
- package/dist/src/runtime/emit/case.d.ts.map +1 -1
- package/dist/src/runtime/emit/case.js +66 -45
- package/dist/src/runtime/emit/case.js.map +1 -1
- package/dist/src/runtime/emit/cast.d.ts.map +1 -1
- package/dist/src/runtime/emit/cast.js +2 -1
- package/dist/src/runtime/emit/cast.js.map +1 -1
- package/dist/src/runtime/emit/constraint-check.d.ts.map +1 -1
- package/dist/src/runtime/emit/constraint-check.js +13 -7
- package/dist/src/runtime/emit/constraint-check.js.map +1 -1
- package/dist/src/runtime/emit/create-assertion.d.ts.map +1 -1
- package/dist/src/runtime/emit/create-assertion.js +2 -1
- package/dist/src/runtime/emit/create-assertion.js.map +1 -1
- package/dist/src/runtime/emit/create-index.d.ts.map +1 -1
- package/dist/src/runtime/emit/create-index.js +12 -1
- package/dist/src/runtime/emit/create-index.js.map +1 -1
- package/dist/src/runtime/emit/create-table.d.ts.map +1 -1
- package/dist/src/runtime/emit/create-table.js +12 -1
- package/dist/src/runtime/emit/create-table.js.map +1 -1
- package/dist/src/runtime/emit/cte-reference.d.ts.map +1 -1
- package/dist/src/runtime/emit/cte-reference.js +2 -1
- package/dist/src/runtime/emit/cte-reference.js.map +1 -1
- package/dist/src/runtime/emit/cte.d.ts.map +1 -1
- package/dist/src/runtime/emit/cte.js +45 -21
- package/dist/src/runtime/emit/cte.js.map +1 -1
- package/dist/src/runtime/emit/ddl-transaction-policy.d.ts +50 -0
- package/dist/src/runtime/emit/ddl-transaction-policy.d.ts.map +1 -0
- package/dist/src/runtime/emit/ddl-transaction-policy.js +69 -0
- package/dist/src/runtime/emit/ddl-transaction-policy.js.map +1 -0
- package/dist/src/runtime/emit/delete.d.ts.map +1 -1
- package/dist/src/runtime/emit/delete.js +2 -1
- package/dist/src/runtime/emit/delete.js.map +1 -1
- package/dist/src/runtime/emit/distinct.d.ts.map +1 -1
- package/dist/src/runtime/emit/distinct.js +2 -1
- package/dist/src/runtime/emit/distinct.js.map +1 -1
- package/dist/src/runtime/emit/dml-executor.d.ts.map +1 -1
- package/dist/src/runtime/emit/dml-executor.js +138 -74
- package/dist/src/runtime/emit/dml-executor.js.map +1 -1
- package/dist/src/runtime/emit/drop-assertion.d.ts.map +1 -1
- package/dist/src/runtime/emit/drop-assertion.js +2 -1
- package/dist/src/runtime/emit/drop-assertion.js.map +1 -1
- package/dist/src/runtime/emit/drop-index.d.ts.map +1 -1
- package/dist/src/runtime/emit/drop-index.js +17 -1
- package/dist/src/runtime/emit/drop-index.js.map +1 -1
- package/dist/src/runtime/emit/drop-table.d.ts.map +1 -1
- package/dist/src/runtime/emit/drop-table.js +11 -1
- package/dist/src/runtime/emit/drop-table.js.map +1 -1
- package/dist/src/runtime/emit/eager-prefetch.d.ts.map +1 -1
- package/dist/src/runtime/emit/eager-prefetch.js +2 -1
- package/dist/src/runtime/emit/eager-prefetch.js.map +1 -1
- package/dist/src/runtime/emit/envelope-scan.d.ts.map +1 -1
- package/dist/src/runtime/emit/envelope-scan.js +2 -1
- package/dist/src/runtime/emit/envelope-scan.js.map +1 -1
- package/dist/src/runtime/emit/fanout-lookup-join.d.ts.map +1 -1
- package/dist/src/runtime/emit/fanout-lookup-join.js +3 -2
- package/dist/src/runtime/emit/fanout-lookup-join.js.map +1 -1
- package/dist/src/runtime/emit/filter.d.ts.map +1 -1
- package/dist/src/runtime/emit/filter.js +8 -3
- package/dist/src/runtime/emit/filter.js.map +1 -1
- package/dist/src/runtime/emit/hash-aggregate.d.ts.map +1 -1
- package/dist/src/runtime/emit/hash-aggregate.js +16 -11
- package/dist/src/runtime/emit/hash-aggregate.js.map +1 -1
- package/dist/src/runtime/emit/insert.d.ts.map +1 -1
- package/dist/src/runtime/emit/insert.js +2 -1
- package/dist/src/runtime/emit/insert.js.map +1 -1
- package/dist/src/runtime/emit/join.d.ts.map +1 -1
- package/dist/src/runtime/emit/join.js +20 -6
- package/dist/src/runtime/emit/join.js.map +1 -1
- package/dist/src/runtime/emit/limit-offset.d.ts.map +1 -1
- package/dist/src/runtime/emit/limit-offset.js +2 -1
- package/dist/src/runtime/emit/limit-offset.js.map +1 -1
- package/dist/src/runtime/emit/literal.d.ts.map +1 -1
- package/dist/src/runtime/emit/literal.js +2 -1
- package/dist/src/runtime/emit/literal.js.map +1 -1
- package/dist/src/runtime/emit/materialized-view-helpers.d.ts +22 -0
- package/dist/src/runtime/emit/materialized-view-helpers.d.ts.map +1 -1
- package/dist/src/runtime/emit/materialized-view-helpers.js +128 -16
- package/dist/src/runtime/emit/materialized-view-helpers.js.map +1 -1
- package/dist/src/runtime/emit/materialized-view.d.ts.map +1 -1
- package/dist/src/runtime/emit/materialized-view.js +6 -0
- package/dist/src/runtime/emit/materialized-view.js.map +1 -1
- package/dist/src/runtime/emit/merge-join.d.ts.map +1 -1
- package/dist/src/runtime/emit/merge-join.js +14 -4
- package/dist/src/runtime/emit/merge-join.js.map +1 -1
- package/dist/src/runtime/emit/ordinal-slice.d.ts.map +1 -1
- package/dist/src/runtime/emit/ordinal-slice.js +2 -1
- package/dist/src/runtime/emit/ordinal-slice.js.map +1 -1
- package/dist/src/runtime/emit/pragma.d.ts.map +1 -1
- package/dist/src/runtime/emit/pragma.js +2 -1
- package/dist/src/runtime/emit/pragma.js.map +1 -1
- package/dist/src/runtime/emit/project.d.ts.map +1 -1
- package/dist/src/runtime/emit/project.js +7 -2
- package/dist/src/runtime/emit/project.js.map +1 -1
- package/dist/src/runtime/emit/recursive-cte.d.ts.map +1 -1
- package/dist/src/runtime/emit/recursive-cte.js +61 -2
- package/dist/src/runtime/emit/recursive-cte.js.map +1 -1
- package/dist/src/runtime/emit/returning.d.ts.map +1 -1
- package/dist/src/runtime/emit/returning.js +7 -2
- package/dist/src/runtime/emit/returning.js.map +1 -1
- package/dist/src/runtime/emit/scalar-function.d.ts.map +1 -1
- package/dist/src/runtime/emit/scalar-function.js +2 -1
- package/dist/src/runtime/emit/scalar-function.js.map +1 -1
- package/dist/src/runtime/emit/scan.d.ts.map +1 -1
- package/dist/src/runtime/emit/scan.js +55 -17
- package/dist/src/runtime/emit/scan.js.map +1 -1
- package/dist/src/runtime/emit/schema-declarative.d.ts.map +1 -1
- package/dist/src/runtime/emit/schema-declarative.js +6 -5
- package/dist/src/runtime/emit/schema-declarative.js.map +1 -1
- package/dist/src/runtime/emit/sequencing.d.ts.map +1 -1
- package/dist/src/runtime/emit/sequencing.js +2 -1
- package/dist/src/runtime/emit/sequencing.js.map +1 -1
- package/dist/src/runtime/emit/set-operation.d.ts.map +1 -1
- package/dist/src/runtime/emit/set-operation.js +6 -5
- package/dist/src/runtime/emit/set-operation.js.map +1 -1
- package/dist/src/runtime/emit/sink.d.ts.map +1 -1
- package/dist/src/runtime/emit/sink.js +2 -1
- package/dist/src/runtime/emit/sink.js.map +1 -1
- package/dist/src/runtime/emit/sort.d.ts.map +1 -1
- package/dist/src/runtime/emit/sort.js +2 -1
- package/dist/src/runtime/emit/sort.js.map +1 -1
- package/dist/src/runtime/emit/subquery.d.ts.map +1 -1
- package/dist/src/runtime/emit/subquery.js +42 -23
- package/dist/src/runtime/emit/subquery.js.map +1 -1
- package/dist/src/runtime/emit/table-valued-function.d.ts.map +1 -1
- package/dist/src/runtime/emit/table-valued-function.js +2 -1
- package/dist/src/runtime/emit/table-valued-function.js.map +1 -1
- package/dist/src/runtime/emit/temporal-arithmetic.d.ts.map +1 -1
- package/dist/src/runtime/emit/temporal-arithmetic.js +2 -1
- package/dist/src/runtime/emit/temporal-arithmetic.js.map +1 -1
- package/dist/src/runtime/emit/transaction.d.ts.map +1 -1
- package/dist/src/runtime/emit/transaction.js +2 -1
- package/dist/src/runtime/emit/transaction.js.map +1 -1
- package/dist/src/runtime/emit/unary.d.ts.map +1 -1
- package/dist/src/runtime/emit/unary.js +2 -1
- package/dist/src/runtime/emit/unary.js.map +1 -1
- package/dist/src/runtime/emit/update.d.ts.map +1 -1
- package/dist/src/runtime/emit/update.js +2 -1
- package/dist/src/runtime/emit/update.js.map +1 -1
- package/dist/src/runtime/emit/values.d.ts.map +1 -1
- package/dist/src/runtime/emit/values.js +2 -1
- package/dist/src/runtime/emit/values.js.map +1 -1
- package/dist/src/runtime/emit/view-mutation.d.ts +1 -1
- package/dist/src/runtime/emit/view-mutation.d.ts.map +1 -1
- package/dist/src/runtime/emit/view-mutation.js +6 -3
- package/dist/src/runtime/emit/view-mutation.js.map +1 -1
- package/dist/src/runtime/emit/window.d.ts.map +1 -1
- package/dist/src/runtime/emit/window.js +26 -9
- package/dist/src/runtime/emit/window.js.map +1 -1
- package/dist/src/runtime/emitters.d.ts +11 -3
- package/dist/src/runtime/emitters.d.ts.map +1 -1
- package/dist/src/runtime/emitters.js +13 -22
- package/dist/src/runtime/emitters.js.map +1 -1
- package/dist/src/runtime/foreign-key-actions.d.ts.map +1 -1
- package/dist/src/runtime/foreign-key-actions.js +39 -13
- package/dist/src/runtime/foreign-key-actions.js.map +1 -1
- package/dist/src/runtime/parallel-driver.d.ts +32 -4
- package/dist/src/runtime/parallel-driver.d.ts.map +1 -1
- package/dist/src/runtime/parallel-driver.js +88 -18
- package/dist/src/runtime/parallel-driver.js.map +1 -1
- package/dist/src/runtime/scheduler.d.ts +56 -7
- package/dist/src/runtime/scheduler.d.ts.map +1 -1
- package/dist/src/runtime/scheduler.js +223 -200
- package/dist/src/runtime/scheduler.js.map +1 -1
- package/dist/src/runtime/strict-flags.d.ts +22 -0
- package/dist/src/runtime/strict-flags.d.ts.map +1 -0
- package/dist/src/runtime/strict-flags.js +26 -0
- package/dist/src/runtime/strict-flags.js.map +1 -0
- package/dist/src/runtime/strict-fork.d.ts +4 -4
- package/dist/src/runtime/strict-fork.d.ts.map +1 -1
- package/dist/src/runtime/strict-fork.js +175 -31
- package/dist/src/runtime/strict-fork.js.map +1 -1
- package/dist/src/runtime/types.d.ts +102 -4
- package/dist/src/runtime/types.d.ts.map +1 -1
- package/dist/src/runtime/types.js +37 -0
- package/dist/src/runtime/types.js.map +1 -1
- package/dist/src/runtime/utils.d.ts.map +1 -1
- package/dist/src/runtime/utils.js +8 -17
- package/dist/src/runtime/utils.js.map +1 -1
- package/dist/src/schema/column.d.ts +8 -0
- package/dist/src/schema/column.d.ts.map +1 -1
- package/dist/src/schema/column.js.map +1 -1
- package/dist/src/schema/ddl-generator.js +5 -0
- package/dist/src/schema/ddl-generator.js.map +1 -1
- package/dist/src/schema/function.d.ts +79 -0
- package/dist/src/schema/function.d.ts.map +1 -1
- package/dist/src/schema/function.js.map +1 -1
- package/dist/src/schema/lens-compiler.js +2 -2
- package/dist/src/schema/lens-compiler.js.map +1 -1
- package/dist/src/schema/lens-prover.d.ts.map +1 -1
- package/dist/src/schema/lens-prover.js +2 -3
- package/dist/src/schema/lens-prover.js.map +1 -1
- package/dist/src/schema/lens.d.ts +1 -1
- package/dist/src/schema/manager.d.ts.map +1 -1
- package/dist/src/schema/manager.js +7 -2
- package/dist/src/schema/manager.js.map +1 -1
- package/dist/src/schema/rename-rewriter.d.ts +61 -0
- package/dist/src/schema/rename-rewriter.d.ts.map +1 -1
- package/dist/src/schema/rename-rewriter.js +77 -0
- package/dist/src/schema/rename-rewriter.js.map +1 -1
- package/dist/src/schema/table.d.ts +36 -8
- package/dist/src/schema/table.d.ts.map +1 -1
- package/dist/src/schema/table.js +61 -11
- package/dist/src/schema/table.js.map +1 -1
- package/dist/src/schema/unique-enforcement.d.ts +28 -5
- package/dist/src/schema/unique-enforcement.d.ts.map +1 -1
- package/dist/src/schema/unique-enforcement.js +37 -5
- package/dist/src/schema/unique-enforcement.js.map +1 -1
- package/dist/src/schema/view.d.ts +1 -1
- package/dist/src/schema/view.js +1 -1
- package/dist/src/types/json-type.d.ts.map +1 -1
- package/dist/src/types/json-type.js +18 -8
- package/dist/src/types/json-type.js.map +1 -1
- package/dist/src/types/logical-type.d.ts +26 -0
- package/dist/src/types/logical-type.d.ts.map +1 -1
- package/dist/src/types/logical-type.js.map +1 -1
- package/dist/src/util/comparison.d.ts +83 -59
- package/dist/src/util/comparison.d.ts.map +1 -1
- package/dist/src/util/comparison.js +191 -131
- package/dist/src/util/comparison.js.map +1 -1
- package/dist/src/util/json-canonical.d.ts +34 -0
- package/dist/src/util/json-canonical.d.ts.map +1 -0
- package/dist/src/util/json-canonical.js +32 -0
- package/dist/src/util/json-canonical.js.map +1 -0
- package/dist/src/util/key-serializer.d.ts +10 -3
- package/dist/src/util/key-serializer.d.ts.map +1 -1
- package/dist/src/util/key-serializer.js +43 -17
- package/dist/src/util/key-serializer.js.map +1 -1
- package/dist/src/util/key-tuple-codec.d.ts +37 -0
- package/dist/src/util/key-tuple-codec.d.ts.map +1 -0
- package/dist/src/util/key-tuple-codec.js +65 -0
- package/dist/src/util/key-tuple-codec.js.map +1 -0
- package/dist/src/util/latches.d.ts +29 -3
- package/dist/src/util/latches.d.ts.map +1 -1
- package/dist/src/util/latches.js +60 -6
- package/dist/src/util/latches.js.map +1 -1
- package/dist/src/util/patterns.d.ts +22 -8
- package/dist/src/util/patterns.d.ts.map +1 -1
- package/dist/src/util/patterns.js +87 -16
- package/dist/src/util/patterns.js.map +1 -1
- package/dist/src/util/qualified-name.d.ts +10 -0
- package/dist/src/util/qualified-name.d.ts.map +1 -0
- package/dist/src/util/qualified-name.js +15 -0
- package/dist/src/util/qualified-name.js.map +1 -0
- package/dist/src/vtab/backing-host.d.ts +8 -1
- package/dist/src/vtab/backing-host.d.ts.map +1 -1
- package/dist/src/vtab/backing-host.js +7 -0
- package/dist/src/vtab/backing-host.js.map +1 -1
- package/dist/src/vtab/best-access-plan.d.ts +18 -0
- package/dist/src/vtab/best-access-plan.d.ts.map +1 -1
- package/dist/src/vtab/best-access-plan.js +15 -0
- package/dist/src/vtab/best-access-plan.js.map +1 -1
- package/dist/src/vtab/capabilities.d.ts +44 -0
- package/dist/src/vtab/capabilities.d.ts.map +1 -1
- package/dist/src/vtab/filter-info.d.ts +42 -0
- package/dist/src/vtab/filter-info.d.ts.map +1 -1
- package/dist/src/vtab/filter-info.js +137 -1
- package/dist/src/vtab/filter-info.js.map +1 -1
- package/dist/src/vtab/idx-str.d.ts +62 -0
- package/dist/src/vtab/idx-str.d.ts.map +1 -0
- package/dist/src/vtab/idx-str.js +130 -0
- package/dist/src/vtab/idx-str.js.map +1 -0
- package/dist/src/vtab/index-descriptor.d.ts +122 -0
- package/dist/src/vtab/index-descriptor.d.ts.map +1 -0
- package/dist/src/vtab/index-descriptor.js +104 -0
- package/dist/src/vtab/index-descriptor.js.map +1 -0
- package/dist/src/vtab/mapping-advertisement.d.ts +1 -1
- package/dist/src/vtab/memory/index.d.ts +12 -4
- package/dist/src/vtab/memory/index.d.ts.map +1 -1
- package/dist/src/vtab/memory/index.js +17 -9
- package/dist/src/vtab/memory/index.js.map +1 -1
- package/dist/src/vtab/memory/layer/base.d.ts +85 -31
- package/dist/src/vtab/memory/layer/base.d.ts.map +1 -1
- package/dist/src/vtab/memory/layer/base.js +127 -86
- package/dist/src/vtab/memory/layer/base.js.map +1 -1
- package/dist/src/vtab/memory/layer/connection.d.ts +27 -0
- package/dist/src/vtab/memory/layer/connection.d.ts.map +1 -1
- package/dist/src/vtab/memory/layer/connection.js +36 -1
- package/dist/src/vtab/memory/layer/connection.js.map +1 -1
- package/dist/src/vtab/memory/layer/interface.d.ts +24 -4
- package/dist/src/vtab/memory/layer/interface.d.ts.map +1 -1
- package/dist/src/vtab/memory/layer/manager.d.ts +212 -16
- package/dist/src/vtab/memory/layer/manager.d.ts.map +1 -1
- package/dist/src/vtab/memory/layer/manager.js +754 -170
- package/dist/src/vtab/memory/layer/manager.js.map +1 -1
- package/dist/src/vtab/memory/layer/plan-filter.d.ts +26 -1
- package/dist/src/vtab/memory/layer/plan-filter.d.ts.map +1 -1
- package/dist/src/vtab/memory/layer/plan-filter.js +29 -11
- package/dist/src/vtab/memory/layer/plan-filter.js.map +1 -1
- package/dist/src/vtab/memory/layer/safe-iterate.d.ts +2 -2
- package/dist/src/vtab/memory/layer/safe-iterate.d.ts.map +1 -1
- package/dist/src/vtab/memory/layer/safe-iterate.js +2 -2
- package/dist/src/vtab/memory/layer/safe-iterate.js.map +1 -1
- package/dist/src/vtab/memory/layer/scan-layer.d.ts +5 -1
- package/dist/src/vtab/memory/layer/scan-layer.d.ts.map +1 -1
- package/dist/src/vtab/memory/layer/scan-layer.js +59 -24
- package/dist/src/vtab/memory/layer/scan-layer.js.map +1 -1
- package/dist/src/vtab/memory/layer/scan-plan.d.ts.map +1 -1
- package/dist/src/vtab/memory/layer/scan-plan.js +13 -21
- package/dist/src/vtab/memory/layer/scan-plan.js.map +1 -1
- package/dist/src/vtab/memory/layer/transaction.d.ts +169 -7
- package/dist/src/vtab/memory/layer/transaction.d.ts.map +1 -1
- package/dist/src/vtab/memory/layer/transaction.js +334 -9
- package/dist/src/vtab/memory/layer/transaction.js.map +1 -1
- package/dist/src/vtab/memory/module.d.ts +11 -4
- package/dist/src/vtab/memory/module.d.ts.map +1 -1
- package/dist/src/vtab/memory/module.js +35 -16
- package/dist/src/vtab/memory/module.js.map +1 -1
- package/dist/src/vtab/memory/table.d.ts +30 -4
- package/dist/src/vtab/memory/table.d.ts.map +1 -1
- package/dist/src/vtab/memory/table.js +63 -15
- package/dist/src/vtab/memory/table.js.map +1 -1
- package/dist/src/vtab/memory/utils/predicate.d.ts +9 -1
- package/dist/src/vtab/memory/utils/predicate.d.ts.map +1 -1
- package/dist/src/vtab/memory/utils/predicate.js +35 -14
- package/dist/src/vtab/memory/utils/predicate.js.map +1 -1
- package/dist/src/vtab/memory/utils/primary-key-encode.d.ts.map +1 -1
- package/dist/src/vtab/memory/utils/primary-key-encode.js +12 -6
- package/dist/src/vtab/memory/utils/primary-key-encode.js.map +1 -1
- package/dist/src/vtab/memory/utils/primary-key.d.ts +6 -1
- package/dist/src/vtab/memory/utils/primary-key.d.ts.map +1 -1
- package/dist/src/vtab/memory/utils/primary-key.js +12 -8
- package/dist/src/vtab/memory/utils/primary-key.js.map +1 -1
- package/dist/src/vtab/module.d.ts +38 -14
- package/dist/src/vtab/module.d.ts.map +1 -1
- package/dist/src/vtab/table.d.ts +41 -2
- package/dist/src/vtab/table.d.ts.map +1 -1
- package/dist/src/vtab/table.js +19 -0
- package/dist/src/vtab/table.js.map +1 -1
- package/package.json +5 -4
- package/dist/src/planner/rules/cache/rule-materialization-advisory.d.ts +0 -18
- package/dist/src/planner/rules/cache/rule-materialization-advisory.d.ts.map +0 -1
- package/dist/src/planner/rules/cache/rule-materialization-advisory.js +0 -65
- package/dist/src/planner/rules/cache/rule-materialization-advisory.js.map +0 -1
|
@@ -35,6 +35,16 @@ export class MemoryTableConnection {
|
|
|
35
35
|
* self-referential INSERT...SELECT.
|
|
36
36
|
*/
|
|
37
37
|
savepointStack = [];
|
|
38
|
+
/**
|
|
39
|
+
* The eager savepoint snapshot currently serving as {@link readLayer}, or null when
|
|
40
|
+
* `readLayer` is a committed layer. Non-null exactly while this connection's
|
|
41
|
+
* uncommitted writes live in `readLayer` rather than in `pendingTransactionLayer`.
|
|
42
|
+
*
|
|
43
|
+
* Cannot be derived from {@link savepointStack}: `RELEASE` pops the entry that holds
|
|
44
|
+
* the snapshot, but the snapshot stays installed as `readLayer` and its rows stay
|
|
45
|
+
* uncommitted. See {@link hasOpenWork}.
|
|
46
|
+
*/
|
|
47
|
+
readSnapshot = null;
|
|
38
48
|
constructor(manager, initialReadLayer) {
|
|
39
49
|
this.connectionId = connectionCounter++;
|
|
40
50
|
this.tableManager = manager;
|
|
@@ -88,6 +98,7 @@ export class MemoryTableConnection {
|
|
|
88
98
|
/** Helper method to clear transaction-related state */
|
|
89
99
|
clearTransactionState() {
|
|
90
100
|
this.savepointStack = [];
|
|
101
|
+
this.readSnapshot = null;
|
|
91
102
|
this.explicitTransaction = false;
|
|
92
103
|
}
|
|
93
104
|
/** Creates a savepoint at the given depth index */
|
|
@@ -98,6 +109,7 @@ export class MemoryTableConnection {
|
|
|
98
109
|
// Capture readLayer BEFORE any swap so rollback to a later lazy marker
|
|
99
110
|
// can restore the pre-swap view (see the comment on `savepointStack`).
|
|
100
111
|
const savedReadLayer = this.readLayer;
|
|
112
|
+
const savedReadSnapshot = this.readSnapshot;
|
|
101
113
|
// Lazy-snapshot: if no pending layer exists yet, store a null snapshot
|
|
102
114
|
// marker instead of eagerly promoting. The pending layer will be created
|
|
103
115
|
// on first mutation; rolling back to a lazy marker restores the
|
|
@@ -116,7 +128,7 @@ export class MemoryTableConnection {
|
|
|
116
128
|
snapshot = this.pendingTransactionLayer;
|
|
117
129
|
snapshot.markCommitted();
|
|
118
130
|
}
|
|
119
|
-
this.savepointStack.push({ snapshot, readLayer: savedReadLayer });
|
|
131
|
+
this.savepointStack.push({ snapshot, readLayer: savedReadLayer, readSnapshot: savedReadSnapshot });
|
|
120
132
|
// Eager-snapshot path: swap the immutable snapshot in as readLayer and
|
|
121
133
|
// drop the now-stale pending layer reference, so the next mutation
|
|
122
134
|
// allocates a fresh pending layer parented on the snapshot. This keeps
|
|
@@ -126,6 +138,7 @@ export class MemoryTableConnection {
|
|
|
126
138
|
if (snapshot) {
|
|
127
139
|
this.readLayer = snapshot;
|
|
128
140
|
this.pendingTransactionLayer = null;
|
|
141
|
+
this.readSnapshot = snapshot;
|
|
129
142
|
}
|
|
130
143
|
// A SAVEPOINT implicitly puts the connection into explicit-transaction mode
|
|
131
144
|
// so that subsequent statements do NOT auto-commit and invalidate the savepoint.
|
|
@@ -164,6 +177,7 @@ export class MemoryTableConnection {
|
|
|
164
177
|
// happened since) and clear pending.
|
|
165
178
|
this.readLayer = entry.readLayer;
|
|
166
179
|
this.pendingTransactionLayer = null;
|
|
180
|
+
this.readSnapshot = entry.readSnapshot;
|
|
167
181
|
}
|
|
168
182
|
else {
|
|
169
183
|
// Eager-snapshot path: createSavepoint swapped readLayer to the
|
|
@@ -172,13 +186,34 @@ export class MemoryTableConnection {
|
|
|
172
186
|
// pending layer parented on the snapshot.
|
|
173
187
|
this.readLayer = entry.snapshot;
|
|
174
188
|
this.pendingTransactionLayer = null;
|
|
189
|
+
this.readSnapshot = entry.snapshot;
|
|
175
190
|
}
|
|
176
191
|
// Remove savepoints above the target, but preserve the target itself
|
|
177
192
|
this.savepointStack.length = targetDepth + 1;
|
|
178
193
|
debugLog(`Connection %d: Rolled back to savepoint depth %d (preserved)`, this.connectionId, targetDepth);
|
|
179
194
|
}
|
|
195
|
+
/** Ends savepoint bookkeeping. Only called where the transaction itself is ending. */
|
|
180
196
|
clearSavepoints() {
|
|
181
197
|
this.savepointStack = [];
|
|
198
|
+
this.readSnapshot = null;
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* True when this connection holds uncommitted writes for its table — either in a
|
|
202
|
+
* pending layer, or (after an eager savepoint swapped it into `readLayer`) in an
|
|
203
|
+
* immutable savepoint snapshot.
|
|
204
|
+
*
|
|
205
|
+
* `MemoryTableManager.ensureSchemaChangeSafety` uses this twice: it refuses a schema
|
|
206
|
+
* change while a connection OTHER than the DDL issuer has open work (those rows are
|
|
207
|
+
* invisible to the DDL's transaction, so a new constraint cannot be validated against
|
|
208
|
+
* them), and it leaves the DDL issuer's own read view alone rather than re-pointing it
|
|
209
|
+
* at the base layer.
|
|
210
|
+
*
|
|
211
|
+
* Tracks {@link readSnapshot} rather than scanning {@link savepointStack}: `RELEASE`
|
|
212
|
+
* pops the entry while leaving the snapshot installed as `readLayer`, so a stack scan
|
|
213
|
+
* reports "no work" for a connection whose rows are still uncommitted.
|
|
214
|
+
*/
|
|
215
|
+
hasOpenWork() {
|
|
216
|
+
return this.pendingTransactionLayer !== null || this.readSnapshot !== null;
|
|
182
217
|
}
|
|
183
218
|
}
|
|
184
219
|
//# sourceMappingURL=connection.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connection.js","sourceRoot":"","sources":["../../../../../src/vtab/memory/layer/connection.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,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;IAE3F;;;;;;;;;;;;;;;;;;OAkBG;IACK,cAAc,
|
|
1
|
+
{"version":3,"file":"connection.js","sourceRoot":"","sources":["../../../../../src/vtab/memory/layer/connection.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,11 +3,34 @@ import type { TableSchema } from '../../../schema/table.js';
|
|
|
3
3
|
import type { BTreeKeyForPrimary, BTreeKeyForIndex, MemoryIndexEntry } from '../types.js';
|
|
4
4
|
import type { Row } from '../../../common/types.js';
|
|
5
5
|
import type { MemoryIndex } from '../index.js';
|
|
6
|
+
import type { CollationResolver } from '../../../types/logical-type.js';
|
|
7
|
+
/**
|
|
8
|
+
* The primary-key functions a layer exposes to its scanners: extraction from a row,
|
|
9
|
+
* ordering, and the lossless encoding used for value-identity keying (dedup sets).
|
|
10
|
+
* All three come from one `createPrimaryKeyFunctions` build, so a caller never has to
|
|
11
|
+
* re-resolve the PK columns' collations to obtain the encoder.
|
|
12
|
+
*/
|
|
13
|
+
export interface PkExtractorsAndComparators {
|
|
14
|
+
primaryKeyExtractorFromRow: (row: Row) => BTreeKeyForPrimary;
|
|
15
|
+
primaryKeyComparator: (a: BTreeKeyForPrimary, b: BTreeKeyForPrimary) => number;
|
|
16
|
+
primaryKeyEncoder: (pk: BTreeKeyForPrimary) => string;
|
|
17
|
+
}
|
|
6
18
|
/**
|
|
7
19
|
* Represents a snapshot or a set of changes in the MemoryTable MVCC model.
|
|
8
20
|
* Layers form a chain, starting from a BaseLayer.
|
|
9
21
|
*/
|
|
10
22
|
export interface Layer {
|
|
23
|
+
/**
|
|
24
|
+
* Resolves a collation name to its comparison function for the database this
|
|
25
|
+
* layer's table belongs to (`Database.getCollationResolver()`). Every comparator
|
|
26
|
+
* built inside the layer stack — primary key, secondary index, scan bound — must
|
|
27
|
+
* come from here, so a collation registered on the connection is honored and an
|
|
28
|
+
* unregistered one raises instead of silently byte-ordering.
|
|
29
|
+
*
|
|
30
|
+
* A `TransactionLayer` inherits its parent's resolver, so an inherited secondary
|
|
31
|
+
* BTree and the child's `compareKeys` are always built from the same function.
|
|
32
|
+
*/
|
|
33
|
+
readonly collationResolver: CollationResolver;
|
|
11
34
|
/** Returns the layer ID (unique identifier, potentially timestamp or sequence) */
|
|
12
35
|
getLayerId(): number;
|
|
13
36
|
/** Returns the parent layer in the chain, or null for the BaseLayer */
|
|
@@ -36,9 +59,6 @@ export interface Layer {
|
|
|
36
59
|
/**
|
|
37
60
|
* This method provides PK extractor and comparator based on a given schema (usually its own)
|
|
38
61
|
*/
|
|
39
|
-
getPkExtractorsAndComparators(schema: TableSchema):
|
|
40
|
-
primaryKeyExtractorFromRow: (row: Row) => BTreeKeyForPrimary;
|
|
41
|
-
primaryKeyComparator: (a: BTreeKeyForPrimary, b: BTreeKeyForPrimary) => number;
|
|
42
|
-
};
|
|
62
|
+
getPkExtractorsAndComparators(schema: TableSchema): PkExtractorsAndComparators;
|
|
43
63
|
}
|
|
44
64
|
//# sourceMappingURL=interface.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interface.d.ts","sourceRoot":"","sources":["../../../../../src/vtab/memory/layer/interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,KAAK,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC1F,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"interface.d.ts","sourceRoot":"","sources":["../../../../../src/vtab/memory/layer/interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,KAAK,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC1F,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAExE;;;;;GAKG;AACH,MAAM,WAAW,0BAA0B;IAC1C,0BAA0B,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,kBAAkB,CAAC;IAC7D,oBAAoB,EAAE,CAAC,CAAC,EAAE,kBAAkB,EAAE,CAAC,EAAE,kBAAkB,KAAK,MAAM,CAAC;IAC/E,iBAAiB,EAAE,CAAC,EAAE,EAAE,kBAAkB,KAAK,MAAM,CAAC;CACtD;AAED;;;GAGG;AACH,MAAM,WAAW,KAAK;IACrB;;;;;;;;;OASG;IACH,QAAQ,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;IAE9C,kFAAkF;IAClF,UAAU,IAAI,MAAM,CAAC;IAErB,uEAAuE;IACvE,SAAS,IAAI,KAAK,GAAG,IAAI,CAAC;IAE1B;;;;;;;OAOG;IACH,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,KAAK,CAAC,kBAAkB,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC;IAE1F;;;;OAIG;IACH,SAAS,IAAI,WAAW,CAAC;IAEzB,uEAAuE;IACvE,WAAW,IAAI,OAAO,CAAC;IAEvB,+EAA+E;IAC/E,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,KAAK,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,GAAG,IAAI,CAAC;IAE3F,+EAA+E;IAC/E,iBAAiB,CAAC,CAAC,SAAS,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CAAC;IAE/D;;OAEG;IACH,6BAA6B,CAAC,MAAM,EAAE,WAAW,GAAG,0BAA0B,CAAC;CAC/E"}
|
|
@@ -10,9 +10,10 @@ import type { ColumnDef as ASTColumnDef, TableConstraint as ASTTableConstraint }
|
|
|
10
10
|
import type { ScanPlan } from './scan-plan.js';
|
|
11
11
|
import type { VTableEventEmitter } from '../../events.js';
|
|
12
12
|
import type { Expression } from '../../../parser/ast.js';
|
|
13
|
-
import
|
|
13
|
+
import { MemoryIndex } from '../index.js';
|
|
14
14
|
import type { MaintainedTableSchema } from '../../../schema/derivation.js';
|
|
15
15
|
import type { MaintenanceOp, BackingRowChange } from '../../backing-host.js';
|
|
16
|
+
import type { EffectiveRowSource } from '../../module.js';
|
|
16
17
|
/**
|
|
17
18
|
* Unified surface for the structure that enforces a UNIQUE constraint. A
|
|
18
19
|
* constraint is logical; its backing structure is optional and may take one of
|
|
@@ -29,7 +30,7 @@ import type { MaintenanceOp, BackingRowChange } from '../../backing-host.js';
|
|
|
29
30
|
* conflict-resolution path (physical schemas otherwise never reach it, since
|
|
30
31
|
* the auto-index always exists) and is exactly the structure the lens layer
|
|
31
32
|
* makes sole once the auto-index is retired. See
|
|
32
|
-
* `docs/
|
|
33
|
+
* `docs/mv-constraints.md` § Covering structures.
|
|
33
34
|
*/
|
|
34
35
|
export type CoveringStructure = {
|
|
35
36
|
kind: 'memory-index';
|
|
@@ -56,6 +57,13 @@ export declare class MemoryTableManager {
|
|
|
56
57
|
private connections;
|
|
57
58
|
readonly isReadOnly: boolean;
|
|
58
59
|
tableSchema: TableSchema;
|
|
60
|
+
/**
|
|
61
|
+
* `db.getCollationResolver()`, bound once. Every comparator this manager or its
|
|
62
|
+
* layers build — primary key, secondary index, UNIQUE enforcement, scan bounds —
|
|
63
|
+
* resolves names through it, so a collation registered on *this* database is
|
|
64
|
+
* honored and one registered on no database raises instead of byte-ordering.
|
|
65
|
+
*/
|
|
66
|
+
private readonly collationResolver;
|
|
59
67
|
private primaryKeyFunctions;
|
|
60
68
|
/**
|
|
61
69
|
* Implicit covering structures: constraint identity → the auto-index that
|
|
@@ -146,6 +154,28 @@ export declare class MemoryTableManager {
|
|
|
146
154
|
connect(): MemoryTableConnection;
|
|
147
155
|
disconnect(connectionId: number): Promise<void>;
|
|
148
156
|
commitTransaction(connection: MemoryTableConnection): Promise<void>;
|
|
157
|
+
/** All layers in `layer`'s parent chain, including `layer` itself. */
|
|
158
|
+
private layerChainSet;
|
|
159
|
+
/**
|
|
160
|
+
* Collect pending change events from `fromLayer` up to (but not including)
|
|
161
|
+
* `boundary`, in chronological order (oldest layer first, intra-layer order
|
|
162
|
+
* preserved). Mirrors the in-transaction event span whose writes are being
|
|
163
|
+
* committed: savepoint-promoted ancestor layers whose events were never
|
|
164
|
+
* directly emitted are included; already-committed layers at/below the
|
|
165
|
+
* boundary are not (their events were emitted when they committed).
|
|
166
|
+
*/
|
|
167
|
+
private collectPendingChanges;
|
|
168
|
+
/**
|
|
169
|
+
* Rebase a pending layer onto the current committed head after a sibling
|
|
170
|
+
* connection advanced the head past this layer's fork point. Replays the
|
|
171
|
+
* pending chain's own structural writes (pending + in-transaction ancestors
|
|
172
|
+
* down to, but not including, `forkPoint`) onto a fresh {@link TransactionLayer}
|
|
173
|
+
* parented on the head, so the sibling's already-committed rows survive.
|
|
174
|
+
*
|
|
175
|
+
* The head becomes the new layer's base, so every row the sibling committed is
|
|
176
|
+
* inherited automatically; only this branch's own writes are replayed on top.
|
|
177
|
+
*/
|
|
178
|
+
private rebaseLayerOntoHead;
|
|
149
179
|
tryCollapseLayers(): Promise<void>;
|
|
150
180
|
/**
|
|
151
181
|
* Checks if a layer is currently in use by any connections.
|
|
@@ -153,11 +183,6 @@ export declare class MemoryTableManager {
|
|
|
153
183
|
* has it as a pending transaction layer, or has it as a savepoint.
|
|
154
184
|
*/
|
|
155
185
|
private isLayerInUse;
|
|
156
|
-
/**
|
|
157
|
-
* Performs garbage collection of layers that are no longer referenced
|
|
158
|
-
* by any connections or the current committed layer chain.
|
|
159
|
-
*/
|
|
160
|
-
private cleanupUnreferencedLayers;
|
|
161
186
|
lookupEffectiveRow(primaryKey: BTreeKeyForPrimary, startLayer: Layer): Row | null;
|
|
162
187
|
lookupEffectiveValue(key: BTreeKeyForPrimary, indexName: string | 'primary', startLayer: Layer): Row | null;
|
|
163
188
|
performMutation(connection: MemoryTableConnection, operation: 'insert' | 'update' | 'delete', values: Row | undefined, oldKeyValues?: Row, onConflict?: ConflictResolution): Promise<UpdateResult>;
|
|
@@ -292,7 +317,7 @@ export declare class MemoryTableManager {
|
|
|
292
317
|
* Declared secondary-UNIQUE enforcement for maintenance writes — the
|
|
293
318
|
* collision-shaped half of the derived-row constraint contract (CHECK / FK
|
|
294
319
|
* are per-row properties and validate engine-side; see
|
|
295
|
-
* docs/
|
|
320
|
+
* docs/mv-constraints.md § Derived-row constraint validation). The
|
|
296
321
|
* privileged surface bypasses the DML constraint pipeline, so without this
|
|
297
322
|
* the batch above would store two derived rows colliding on a declared
|
|
298
323
|
* UNIQUE silently.
|
|
@@ -335,8 +360,8 @@ export declare class MemoryTableManager {
|
|
|
335
360
|
setDataType?: string;
|
|
336
361
|
setDefault?: Expression | null;
|
|
337
362
|
setCollation?: string;
|
|
338
|
-
}): Promise<void>;
|
|
339
|
-
createIndex(newIndexSchemaEntry: IndexSchema, ifNotExistsFromAst?: boolean): Promise<void>;
|
|
363
|
+
}, rows?: EffectiveRowSource): Promise<void>;
|
|
364
|
+
createIndex(newIndexSchemaEntry: IndexSchema, ifNotExistsFromAst?: boolean, rows?: EffectiveRowSource): Promise<void>;
|
|
340
365
|
dropIndex(indexName: string, ifExists?: boolean): Promise<void>;
|
|
341
366
|
/**
|
|
342
367
|
* Drops a named table-level constraint (CHECK / UNIQUE / FOREIGN KEY). Schema-
|
|
@@ -373,7 +398,7 @@ export declare class MemoryTableManager {
|
|
|
373
398
|
* keeps an engine-side fallback in `runtime/emit/add-constraint.ts` only for
|
|
374
399
|
* modules that omit `alterTable` — which cannot DROP/RENAME a constraint anyway.)
|
|
375
400
|
*/
|
|
376
|
-
addConstraint(constraint: ASTTableConstraint): Promise<void>;
|
|
401
|
+
addConstraint(constraint: ASTTableConstraint, rows?: EffectiveRowSource): Promise<void>;
|
|
377
402
|
/**
|
|
378
403
|
* CHECK arm of {@link addConstraint}. Schema-only: a CHECK has no covering
|
|
379
404
|
* structure and (matching the engine's prior in-emitter behavior) no existing-row
|
|
@@ -384,10 +409,10 @@ export declare class MemoryTableManager {
|
|
|
384
409
|
private addCheckConstraint;
|
|
385
410
|
/**
|
|
386
411
|
* UNIQUE arm of {@link addConstraint}. Builds the covering secondary index the
|
|
387
|
-
* same way {@link ensureUniqueConstraintIndexes} does (validating
|
|
388
|
-
* via
|
|
389
|
-
* already covers the exact columns — in which
|
|
390
|
-
* validated and we only register the covering structure.
|
|
412
|
+
* same way {@link ensureUniqueConstraintIndexes} does (validating the DDL
|
|
413
|
+
* transaction's effective rows via {@link validateUniqueOverEffectiveRows} first),
|
|
414
|
+
* unless an existing *unique* index already covers the exact columns — in which
|
|
415
|
+
* case the data is already validated and we only register the covering structure.
|
|
391
416
|
*/
|
|
392
417
|
private addUniqueConstraint;
|
|
393
418
|
/**
|
|
@@ -407,11 +432,182 @@ export declare class MemoryTableManager {
|
|
|
407
432
|
* the Database registry but not in the manager's map.
|
|
408
433
|
*/
|
|
409
434
|
private repointRegisteredConnections;
|
|
435
|
+
/** Every Database-registered {@link MemoryTableConnection} backed by this manager. */
|
|
436
|
+
private registeredConnections;
|
|
437
|
+
/**
|
|
438
|
+
* Every connection this manager can see: the ones still attached to {@link connections}
|
|
439
|
+
* (including unregistered committed-snapshot readers) plus the Database-registered ones,
|
|
440
|
+
* which may have been detached from the map by a post-autocommit disconnect.
|
|
441
|
+
*/
|
|
442
|
+
private knownConnections;
|
|
443
|
+
/**
|
|
444
|
+
* The connection through which the current DDL statement's transaction runs, if any.
|
|
445
|
+
*
|
|
446
|
+
* A statement reaches a memory table through the single Database-registered connection
|
|
447
|
+
* for it (`MemoryTable.ensureConnection` and `getVTableConnection` both reuse the first
|
|
448
|
+
* one), so that connection's view IS this statement's transaction. In autocommit with
|
|
449
|
+
* no prior scan there is no connection at all, and the committed base is the whole story.
|
|
450
|
+
*
|
|
451
|
+
* NOTE: takes the FIRST registered connection, matching how both reuse sites pick one.
|
|
452
|
+
* If the registry ever holds more than one connection per (table, transaction), this
|
|
453
|
+
* picks arbitrarily — validate against the writer instead, and treat the rest as
|
|
454
|
+
* siblings.
|
|
455
|
+
*/
|
|
456
|
+
private ddlConnection;
|
|
457
|
+
/**
|
|
458
|
+
* The rows a `select` issued by the DDL statement's own transaction would see: the
|
|
459
|
+
* committed base overlaid with that connection's uncommitted writes. Degenerates to the
|
|
460
|
+
* base primary tree when no connection holds open work.
|
|
461
|
+
*
|
|
462
|
+
* `pendingTransactionLayer ?? readLayer` is exactly the layer `MemoryTable.query` scans,
|
|
463
|
+
* and each layer's primary BTree is copy-on-write over its parent's, so one ascending
|
|
464
|
+
* walk yields the merged view (pending inserts/updates present, pending deletes absent).
|
|
465
|
+
*/
|
|
466
|
+
private effectiveDdlRows;
|
|
467
|
+
/**
|
|
468
|
+
* The committed base rows for `alter column … set data type` / `set not null` backfill, with the
|
|
469
|
+
* value at `colIndex` run through `convert`. NULLs pass through untouched UNLESS `convertNulls` is
|
|
470
|
+
* set (the SET NOT NULL backfill maps null → DEFAULT). A value that fails to convert is kept as-is:
|
|
471
|
+
* the manager validated every value in the effective VIEW before calling, so a base value that
|
|
472
|
+
* fails here is one a pending delete/overwrite shadows and no reader can see. The result is a fresh
|
|
473
|
+
* full row list for {@link BaseLayer.rebuildPrimaryTreeFromRows} — the base primary tree is
|
|
474
|
+
* REPLACED, never mutated in place (inheritree forbids mutating a tree the open transaction's
|
|
475
|
+
* layers derive from).
|
|
476
|
+
*/
|
|
477
|
+
private convertBaseRows;
|
|
478
|
+
/**
|
|
479
|
+
* Rejects an index/constraint whose uniqueness the DDL transaction's own effective rows
|
|
480
|
+
* already violate, BEFORE anything is mutated. Builds a throwaway {@link MemoryIndex} —
|
|
481
|
+
* the collation-aware, partial-predicate-aware key comparator — over those rows and lets
|
|
482
|
+
* {@link populateIndexFromRows} raise CONSTRAINT on the first duplicate.
|
|
483
|
+
*
|
|
484
|
+
* `rows` overrides {@link effectiveDdlRows}. A wrapper module (the isolation layer) holds
|
|
485
|
+
* the transaction's pending rows outside this manager, so only it can name the rows the
|
|
486
|
+
* issuing connection actually sees; when it supplies them, they are the judged set and this
|
|
487
|
+
* manager's own committed rows are ignored. See `vtab/module.ts` {@link EffectiveRowSource}.
|
|
488
|
+
*/
|
|
489
|
+
private validateUniqueOverEffectiveRows;
|
|
490
|
+
/**
|
|
491
|
+
* `ALTER COLUMN … SET COLLATE` arm of {@link validateUniqueOverEffectiveRows}: rejects the
|
|
492
|
+
* change when it makes two of the DDL transaction's effective rows collide under any
|
|
493
|
+
* uniqueness-enforcing structure that orders by the altered column. Runs before anything is
|
|
494
|
+
* mutated, so a rejection leaves the table and schema untouched and the transaction usable.
|
|
495
|
+
*
|
|
496
|
+
* `newSchema` carries the post-change per-column collations, so each probe index compares
|
|
497
|
+
* exactly as the rebuilt structure will. Indexes that do not mention the column keep their
|
|
498
|
+
* keys and need no re-check.
|
|
499
|
+
*
|
|
500
|
+
* NOTE: walks `schema.indexes`, so a UNIQUE constraint covered by a row-time materialized
|
|
501
|
+
* view rather than its auto-index (`findIndexForConstraint` prefers the MV) is not re-checked
|
|
502
|
+
* here. The auto-index always exists alongside, so the structure is still validated — but if
|
|
503
|
+
* an MV-only covering shape ever becomes reachable, this walk must follow it.
|
|
504
|
+
*/
|
|
505
|
+
private validateRekeyedUniqueStructures;
|
|
506
|
+
/**
|
|
507
|
+
* PRIMARY KEY arm of the `alter column … set collate` pre-pass. Runs before anything is
|
|
508
|
+
* mutated, so a rejection leaves the table, the schema and the transaction untouched.
|
|
509
|
+
*
|
|
510
|
+
* The primary tree is a map, not a multi-map, so — unlike a secondary index — it cannot
|
|
511
|
+
* physically hold two rows whose keys collapse under the new comparator. Every layer the
|
|
512
|
+
* DDL connection still reads through therefore has to be collision-free, not just the
|
|
513
|
+
* transaction's effective view:
|
|
514
|
+
*
|
|
515
|
+
* 1. **The effective view collides** → `CONSTRAINT`. The duplicate is visible to a `select`
|
|
516
|
+
* in this transaction; the change is simply illegal.
|
|
517
|
+
* 2. **A layer beneath it collides** → `BUSY`. Those rows are not visible now, but every
|
|
518
|
+
* such layer is the copy-on-write base the view reads through, and one of them may be a
|
|
519
|
+
* savepoint snapshot a `rollback to savepoint` must restore. A re-keyed tree could not
|
|
520
|
+
* represent the pair at all. Committing (or rolling back) settles the transaction and
|
|
521
|
+
* the ALTER can be retried — the same "commit/rollback and retry" posture as
|
|
522
|
+
* {@link ensureSchemaChangeSafety}.
|
|
523
|
+
*
|
|
524
|
+
* Case 2 is deliberately conservative. The chain holds one immutable layer per statement
|
|
525
|
+
* boundary (see `MemoryTableConnection.createSavepoint`'s eager path), so it rejects any
|
|
526
|
+
* transaction that has held a colliding pair at ANY statement boundary — even one whose
|
|
527
|
+
* final view is clean and whose intermediate layer no savepoint can reach. Narrowing that
|
|
528
|
+
* would mean re-parenting the view's tree past the unreachable layers, which is exactly the
|
|
529
|
+
* rebase that savepoint snapshots exist to avoid. The tradeoff is a rare false BUSY on a
|
|
530
|
+
* statement sequence the user can retry after committing, versus losing a row on rollback.
|
|
531
|
+
*
|
|
532
|
+
* This precondition is also what makes `TransactionLayer.rekeyPrimaryKey`'s replay sound:
|
|
533
|
+
* with no collisions anywhere in the chain, every primary key resolves to at most one row
|
|
534
|
+
* in each layer under the new comparator.
|
|
535
|
+
*/
|
|
536
|
+
private validateRekeyedPrimaryKey;
|
|
537
|
+
/**
|
|
538
|
+
* Raises `code` when two of `layer`'s rows share a primary key under `pkFunctions`.
|
|
539
|
+
*
|
|
540
|
+
* NOTE: O(rows) per layer, so O(layers × rows) for a whole chain — one more full pass than
|
|
541
|
+
* the base rebuild the caller is about to do anyway. Fine for a statement this rare; if a
|
|
542
|
+
* deep savepoint stack over a large table ever makes an ALTER slow, note that a layer's rows
|
|
543
|
+
* differ from its parent's only at the keys it wrote, so the walk can be narrowed to those.
|
|
544
|
+
*/
|
|
545
|
+
private assertNoPrimaryKeyCollision;
|
|
546
|
+
/**
|
|
547
|
+
* Propagates a schema change — a new index and/or UNIQUE constraint, or a set of structures
|
|
548
|
+
* re-keyed by `alter column … set collate` — into every {@link TransactionLayer} the DDL
|
|
549
|
+
* connection's open transaction still reads through: its pending layer and every savepoint
|
|
550
|
+
* snapshot below it, which are exactly the transaction layers on the view layer's parent
|
|
551
|
+
* chain above the base.
|
|
552
|
+
*
|
|
553
|
+
* Without this the transaction would keep enforcing (and scanning) its creation-time schema
|
|
554
|
+
* for the rest of its life, a `rollback to savepoint` would restore a stale-schema layer,
|
|
555
|
+
* and at commit the pending layer would become the committed head carrying its stale schema
|
|
556
|
+
* and structures — shadowing the base's rebuilt ones. Rebasing would achieve the same but
|
|
557
|
+
* invalidate those snapshots. Applied oldest-first: both
|
|
558
|
+
* {@link TransactionLayer.adoptSchema} and {@link TransactionLayer.rekeyPrimaryKey} inherit
|
|
559
|
+
* their parent's already-rebuilt trees.
|
|
560
|
+
*
|
|
561
|
+
* `rekeyPrimary` selects the heavier path, for the one change that invalidates a layer's
|
|
562
|
+
* primary key functions and every structure derived from them: a collation change on a
|
|
563
|
+
* primary key column.
|
|
564
|
+
*/
|
|
565
|
+
private adoptSchemaOnOpenLayers;
|
|
566
|
+
/**
|
|
567
|
+
* Converts the altered column's own-written values in every open transaction layer, after
|
|
568
|
+
* `alter column … set data type` / `set not null` backfill has converted the base. Runs
|
|
569
|
+
* oldest-first so each layer's copy-on-write base inherits its parent's already-converted rows
|
|
570
|
+
* and only the layer's OWN writes are rewritten (see {@link TransactionLayer.convertColumn}).
|
|
571
|
+
* `convertNulls` routes null own-values through `convert` (the SET NOT NULL null → DEFAULT map);
|
|
572
|
+
* SET DATA TYPE leaves them untouched. No-op in autocommit.
|
|
573
|
+
*
|
|
574
|
+
* PRIMARY-KEY columns never reach here — a physical retype of a key column is rejected before
|
|
575
|
+
* any mutation, and SET NOT NULL leaves the key bytes unchanged — so the primary tree's keys are
|
|
576
|
+
* stable and no re-key is needed.
|
|
577
|
+
*/
|
|
578
|
+
private convertColumnOnOpenLayers;
|
|
579
|
+
/**
|
|
580
|
+
* The DDL connection's open {@link TransactionLayer}s, oldest-first, base excluded — its
|
|
581
|
+
* pending layer and every savepoint snapshot below it, the layers on the view's parent chain
|
|
582
|
+
* above the base. Empty in autocommit (no connection, or the view IS the base).
|
|
583
|
+
*
|
|
584
|
+
* Both schema adoption ({@link adoptSchemaOnOpenLayers}) and value conversion
|
|
585
|
+
* ({@link convertColumnOnOpenLayers}) MUST apply oldest-first: each layer rebuilds its
|
|
586
|
+
* structures over its parent's, so the parent's must already be the new/converted ones.
|
|
587
|
+
*
|
|
588
|
+
* NOTE: the walk takes every TransactionLayer below the view, which normally means the pending
|
|
589
|
+
* layer and its savepoint snapshots. A committed layer already drained into the base by
|
|
590
|
+
* `ensureSchemaChangeSafety` can also sit in the chain (the pending layer forked from it before
|
|
591
|
+
* consolidation); it still shadows the base with its OWN unadapted rows while it remains the
|
|
592
|
+
* view's copy-on-write base, so it must be adapted too — it cannot be skipped, since a savepoint
|
|
593
|
+
* snapshot is `markCommitted()` as well. Both callers' per-layer work is idempotent and additive.
|
|
594
|
+
*/
|
|
595
|
+
private openTransactionLayersOldestFirst;
|
|
410
596
|
/** Consolidates all transaction data into the base layer for schema changes */
|
|
411
597
|
private consolidateToBaseLayer;
|
|
412
598
|
/** Copies all data from a transaction layer to the base layer */
|
|
413
599
|
private copyTransactionDataToBase;
|
|
414
|
-
/**
|
|
600
|
+
/**
|
|
601
|
+
* Sync scan — the hot path (query()/internal maintenance) avoids the async hop.
|
|
602
|
+
* The backing BTree (inheritree) and all per-row filter/early-term logic are
|
|
603
|
+
* fully synchronous, so no async boundary belongs here.
|
|
604
|
+
*/
|
|
605
|
+
scanLayerSync(layer: Layer, plan: ScanPlan): Iterable<Row>;
|
|
606
|
+
/**
|
|
607
|
+
* Async adapter for external `AsyncIterable<Row>` callers (tests,
|
|
608
|
+
* `module.scanEffective`, the backing-host). Retained deliberately — do not
|
|
609
|
+
* delete thinking it is dead; delegates to {@link scanLayerSync}.
|
|
610
|
+
*/
|
|
415
611
|
scanLayer(layer: Layer, plan: ScanPlan): AsyncIterable<Row>;
|
|
416
612
|
}
|
|
417
613
|
//# sourceMappingURL=manager.d.ts.map
|
|
@@ -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,EAAE,KAAK,sBAAsB,EAA2H,MAAM,0BAA0B,CAAC;AACpO,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEtD,OAAO,EAAc,KAAK,QAAQ,EAAE,KAAK,GAAG,EAAE,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAGlG,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../../../../src/vtab/memory/layer/manager.ts"],"names":[],"mappings":"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"}
|