@quereus/quereus 2.9.0 → 3.0.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 +224 -222
- package/dist/src/core/database-assertions.d.ts +36 -16
- package/dist/src/core/database-assertions.d.ts.map +1 -1
- package/dist/src/core/database-assertions.js +222 -118
- package/dist/src/core/database-assertions.js.map +1 -1
- package/dist/src/core/database-transaction.d.ts +96 -13
- package/dist/src/core/database-transaction.d.ts.map +1 -1
- package/dist/src/core/database-transaction.js +294 -35
- package/dist/src/core/database-transaction.js.map +1 -1
- package/dist/src/core/database-watchers.d.ts +58 -0
- package/dist/src/core/database-watchers.d.ts.map +1 -0
- package/dist/src/core/database-watchers.js +206 -0
- package/dist/src/core/database-watchers.js.map +1 -0
- package/dist/src/core/database.d.ts +78 -5
- package/dist/src/core/database.d.ts.map +1 -1
- package/dist/src/core/database.js +120 -20
- package/dist/src/core/database.js.map +1 -1
- package/dist/src/core/statement.d.ts +9 -0
- package/dist/src/core/statement.d.ts.map +1 -1
- package/dist/src/core/statement.js +29 -0
- package/dist/src/core/statement.js.map +1 -1
- package/dist/src/core/table-handle.d.ts +45 -0
- package/dist/src/core/table-handle.d.ts.map +1 -0
- package/dist/src/core/table-handle.js +54 -0
- package/dist/src/core/table-handle.js.map +1 -0
- package/dist/src/func/builtins/conversion.d.ts.map +1 -1
- package/dist/src/func/builtins/conversion.js +12 -1
- package/dist/src/func/builtins/conversion.js.map +1 -1
- package/dist/src/func/builtins/explain.d.ts.map +1 -1
- package/dist/src/func/builtins/explain.js +22 -8
- package/dist/src/func/builtins/explain.js.map +1 -1
- package/dist/src/func/builtins/generation.d.ts.map +1 -1
- package/dist/src/func/builtins/generation.js +26 -1
- package/dist/src/func/builtins/generation.js.map +1 -1
- package/dist/src/func/builtins/index.d.ts.map +1 -1
- package/dist/src/func/builtins/index.js +5 -1
- package/dist/src/func/builtins/index.js.map +1 -1
- package/dist/src/func/builtins/json-tvf.d.ts.map +1 -1
- package/dist/src/func/builtins/json-tvf.js +16 -2
- package/dist/src/func/builtins/json-tvf.js.map +1 -1
- package/dist/src/func/builtins/schema.d.ts +4 -0
- package/dist/src/func/builtins/schema.d.ts.map +1 -1
- package/dist/src/func/builtins/schema.js +270 -11
- package/dist/src/func/builtins/schema.js.map +1 -1
- package/dist/src/func/registration.d.ts +19 -1
- package/dist/src/func/registration.d.ts.map +1 -1
- package/dist/src/func/registration.js +8 -3
- package/dist/src/func/registration.js.map +1 -1
- package/dist/src/index.d.ts +7 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +5 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/parser/parser.d.ts.map +1 -1
- package/dist/src/parser/parser.js +12 -4
- package/dist/src/parser/parser.js.map +1 -1
- package/dist/src/planner/analysis/assertion-classifier.d.ts +71 -0
- package/dist/src/planner/analysis/assertion-classifier.d.ts.map +1 -0
- package/dist/src/planner/analysis/assertion-classifier.js +286 -0
- package/dist/src/planner/analysis/assertion-classifier.js.map +1 -0
- package/dist/src/planner/analysis/assertion-hoist-cache.d.ts +34 -0
- package/dist/src/planner/analysis/assertion-hoist-cache.d.ts.map +1 -0
- package/dist/src/planner/analysis/assertion-hoist-cache.js +119 -0
- package/dist/src/planner/analysis/assertion-hoist-cache.js.map +1 -0
- package/dist/src/planner/analysis/binding-extractor.d.ts +58 -0
- package/dist/src/planner/analysis/binding-extractor.d.ts.map +1 -0
- package/dist/src/planner/analysis/binding-extractor.js +110 -0
- package/dist/src/planner/analysis/binding-extractor.js.map +1 -0
- package/dist/src/planner/analysis/change-scope.d.ts +184 -0
- package/dist/src/planner/analysis/change-scope.d.ts.map +1 -0
- package/dist/src/planner/analysis/change-scope.js +825 -0
- package/dist/src/planner/analysis/change-scope.js.map +1 -0
- package/dist/src/planner/analysis/check-extraction.d.ts +29 -0
- package/dist/src/planner/analysis/check-extraction.d.ts.map +1 -0
- package/dist/src/planner/analysis/check-extraction.js +420 -0
- package/dist/src/planner/analysis/check-extraction.js.map +1 -0
- package/dist/src/planner/analysis/constraint-extractor.d.ts +47 -7
- package/dist/src/planner/analysis/constraint-extractor.d.ts.map +1 -1
- package/dist/src/planner/analysis/constraint-extractor.js +186 -93
- package/dist/src/planner/analysis/constraint-extractor.js.map +1 -1
- package/dist/src/planner/analysis/partial-unique-extraction.d.ts +68 -0
- package/dist/src/planner/analysis/partial-unique-extraction.d.ts.map +1 -0
- package/dist/src/planner/analysis/partial-unique-extraction.js +347 -0
- package/dist/src/planner/analysis/partial-unique-extraction.js.map +1 -0
- package/dist/src/planner/analysis/predicate-conjuncts.d.ts +14 -0
- package/dist/src/planner/analysis/predicate-conjuncts.d.ts.map +1 -0
- package/dist/src/planner/analysis/predicate-conjuncts.js +31 -0
- package/dist/src/planner/analysis/predicate-conjuncts.js.map +1 -0
- package/dist/src/planner/analysis/predicate-shape.d.ts +52 -0
- package/dist/src/planner/analysis/predicate-shape.d.ts.map +1 -0
- package/dist/src/planner/analysis/predicate-shape.js +119 -0
- package/dist/src/planner/analysis/predicate-shape.js.map +1 -0
- package/dist/src/planner/analysis/sat-checker.d.ts +43 -0
- package/dist/src/planner/analysis/sat-checker.d.ts.map +1 -0
- package/dist/src/planner/analysis/sat-checker.js +393 -0
- package/dist/src/planner/analysis/sat-checker.js.map +1 -0
- package/dist/src/planner/building/table.d.ts.map +1 -1
- package/dist/src/planner/building/table.js +1 -1
- package/dist/src/planner/building/table.js.map +1 -1
- package/dist/src/planner/framework/characteristics.d.ts +10 -1
- package/dist/src/planner/framework/characteristics.d.ts.map +1 -1
- package/dist/src/planner/framework/characteristics.js +24 -5
- package/dist/src/planner/framework/characteristics.js.map +1 -1
- package/dist/src/planner/framework/context.d.ts +1 -8
- package/dist/src/planner/framework/context.d.ts.map +1 -1
- package/dist/src/planner/framework/context.js +4 -21
- package/dist/src/planner/framework/context.js.map +1 -1
- package/dist/src/planner/framework/pass.d.ts +18 -2
- package/dist/src/planner/framework/pass.d.ts.map +1 -1
- package/dist/src/planner/framework/pass.js +145 -46
- package/dist/src/planner/framework/pass.js.map +1 -1
- package/dist/src/planner/framework/physical-utils.d.ts +0 -9
- package/dist/src/planner/framework/physical-utils.d.ts.map +1 -1
- package/dist/src/planner/framework/physical-utils.js +0 -31
- package/dist/src/planner/framework/physical-utils.js.map +1 -1
- package/dist/src/planner/nodes/aggregate-node.d.ts +25 -0
- package/dist/src/planner/nodes/aggregate-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/aggregate-node.js +75 -8
- 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 +6 -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 +17 -3
- package/dist/src/planner/nodes/asof-scan-node.js.map +1 -1
- package/dist/src/planner/nodes/bloom-join-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/bloom-join-node.js +19 -9
- package/dist/src/planner/nodes/bloom-join-node.js.map +1 -1
- package/dist/src/planner/nodes/distinct-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/distinct-node.js +10 -6
- package/dist/src/planner/nodes/distinct-node.js.map +1 -1
- package/dist/src/planner/nodes/empty-relation-node.d.ts +27 -0
- package/dist/src/planner/nodes/empty-relation-node.d.ts.map +1 -0
- package/dist/src/planner/nodes/empty-relation-node.js +61 -0
- package/dist/src/planner/nodes/empty-relation-node.js.map +1 -0
- package/dist/src/planner/nodes/filter.d.ts.map +1 -1
- package/dist/src/planner/nodes/filter.js +65 -5
- package/dist/src/planner/nodes/filter.js.map +1 -1
- package/dist/src/planner/nodes/hash-aggregate.d.ts +1 -1
- package/dist/src/planner/nodes/hash-aggregate.d.ts.map +1 -1
- package/dist/src/planner/nodes/hash-aggregate.js +8 -6
- package/dist/src/planner/nodes/hash-aggregate.js.map +1 -1
- package/dist/src/planner/nodes/join-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/join-node.js +12 -9
- package/dist/src/planner/nodes/join-node.js.map +1 -1
- package/dist/src/planner/nodes/join-utils.d.ts +24 -1
- package/dist/src/planner/nodes/join-utils.d.ts.map +1 -1
- package/dist/src/planner/nodes/join-utils.js +86 -0
- package/dist/src/planner/nodes/join-utils.js.map +1 -1
- package/dist/src/planner/nodes/limit-offset.d.ts.map +1 -1
- package/dist/src/planner/nodes/limit-offset.js +6 -1
- package/dist/src/planner/nodes/limit-offset.js.map +1 -1
- package/dist/src/planner/nodes/merge-join-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/merge-join-node.js +19 -9
- 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 +5 -2
- package/dist/src/planner/nodes/ordinal-slice-node.js.map +1 -1
- 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/plan-node.d.ts +186 -4
- package/dist/src/planner/nodes/plan-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/plan-node.js.map +1 -1
- package/dist/src/planner/nodes/project-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/project-node.js +75 -30
- package/dist/src/planner/nodes/project-node.js.map +1 -1
- package/dist/src/planner/nodes/reference.d.ts +24 -2
- package/dist/src/planner/nodes/reference.d.ts.map +1 -1
- package/dist/src/planner/nodes/reference.js +101 -1
- package/dist/src/planner/nodes/reference.js.map +1 -1
- package/dist/src/planner/nodes/retrieve-node.d.ts +9 -1
- package/dist/src/planner/nodes/retrieve-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/retrieve-node.js +21 -0
- package/dist/src/planner/nodes/retrieve-node.js.map +1 -1
- package/dist/src/planner/nodes/returning-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/returning-node.js +64 -28
- package/dist/src/planner/nodes/returning-node.js.map +1 -1
- package/dist/src/planner/nodes/scalar.d.ts +1 -0
- package/dist/src/planner/nodes/scalar.d.ts.map +1 -1
- package/dist/src/planner/nodes/scalar.js +12 -0
- package/dist/src/planner/nodes/scalar.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 +15 -0
- package/dist/src/planner/nodes/set-operation-node.js.map +1 -1
- package/dist/src/planner/nodes/single-row.d.ts.map +1 -1
- package/dist/src/planner/nodes/single-row.js +3 -1
- package/dist/src/planner/nodes/single-row.js.map +1 -1
- package/dist/src/planner/nodes/sort.d.ts.map +1 -1
- package/dist/src/planner/nodes/sort.js +10 -3
- package/dist/src/planner/nodes/sort.js.map +1 -1
- package/dist/src/planner/nodes/stream-aggregate.d.ts +1 -1
- package/dist/src/planner/nodes/stream-aggregate.d.ts.map +1 -1
- package/dist/src/planner/nodes/stream-aggregate.js +8 -8
- package/dist/src/planner/nodes/stream-aggregate.js.map +1 -1
- package/dist/src/planner/nodes/table-access-nodes.d.ts +3 -3
- package/dist/src/planner/nodes/table-access-nodes.d.ts.map +1 -1
- package/dist/src/planner/nodes/table-access-nodes.js +26 -8
- package/dist/src/planner/nodes/table-access-nodes.js.map +1 -1
- package/dist/src/planner/nodes/table-function-call.d.ts +4 -1
- package/dist/src/planner/nodes/table-function-call.d.ts.map +1 -1
- package/dist/src/planner/nodes/table-function-call.js +224 -14
- package/dist/src/planner/nodes/table-function-call.js.map +1 -1
- package/dist/src/planner/nodes/window-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/window-node.js +9 -2
- package/dist/src/planner/nodes/window-node.js.map +1 -1
- package/dist/src/planner/optimizer-tuning.d.ts +29 -1
- package/dist/src/planner/optimizer-tuning.d.ts.map +1 -1
- package/dist/src/planner/optimizer-tuning.js +3 -0
- package/dist/src/planner/optimizer-tuning.js.map +1 -1
- package/dist/src/planner/optimizer.d.ts.map +1 -1
- package/dist/src/planner/optimizer.js +187 -0
- 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 +22 -7
- package/dist/src/planner/rules/access/rule-select-access-path.js.map +1 -1
- package/dist/src/planner/rules/aggregate/rule-groupby-fd-simplification.d.ts +30 -0
- package/dist/src/planner/rules/aggregate/rule-groupby-fd-simplification.d.ts.map +1 -0
- package/dist/src/planner/rules/aggregate/rule-groupby-fd-simplification.js +116 -0
- package/dist/src/planner/rules/aggregate/rule-groupby-fd-simplification.js.map +1 -0
- package/dist/src/planner/rules/distinct/rule-distinct-elimination.d.ts +7 -7
- package/dist/src/planner/rules/distinct/rule-distinct-elimination.d.ts.map +1 -1
- package/dist/src/planner/rules/distinct/rule-distinct-elimination.js +18 -16
- package/dist/src/planner/rules/distinct/rule-distinct-elimination.js.map +1 -1
- package/dist/src/planner/rules/join/rule-join-elimination.d.ts +56 -0
- package/dist/src/planner/rules/join/rule-join-elimination.d.ts.map +1 -0
- package/dist/src/planner/rules/join/rule-join-elimination.js +326 -0
- package/dist/src/planner/rules/join/rule-join-elimination.js.map +1 -0
- package/dist/src/planner/rules/join/rule-join-greedy-commute.d.ts.map +1 -1
- package/dist/src/planner/rules/join/rule-join-greedy-commute.js +10 -2
- package/dist/src/planner/rules/join/rule-join-greedy-commute.js.map +1 -1
- package/dist/src/planner/rules/predicate/rule-aggregate-predicate-pushdown.d.ts +20 -0
- package/dist/src/planner/rules/predicate/rule-aggregate-predicate-pushdown.d.ts.map +1 -0
- package/dist/src/planner/rules/predicate/rule-aggregate-predicate-pushdown.js +181 -0
- package/dist/src/planner/rules/predicate/rule-aggregate-predicate-pushdown.js.map +1 -0
- package/dist/src/planner/rules/predicate/rule-empty-relation-folding.d.ts +46 -0
- package/dist/src/planner/rules/predicate/rule-empty-relation-folding.d.ts.map +1 -0
- package/dist/src/planner/rules/predicate/rule-empty-relation-folding.js +156 -0
- package/dist/src/planner/rules/predicate/rule-empty-relation-folding.js.map +1 -0
- package/dist/src/planner/rules/predicate/rule-filter-contradiction.d.ts +30 -0
- package/dist/src/planner/rules/predicate/rule-filter-contradiction.d.ts.map +1 -0
- package/dist/src/planner/rules/predicate/rule-filter-contradiction.js +60 -0
- package/dist/src/planner/rules/predicate/rule-filter-contradiction.js.map +1 -0
- package/dist/src/planner/rules/predicate/rule-predicate-inference-equivalence.d.ts +45 -0
- package/dist/src/planner/rules/predicate/rule-predicate-inference-equivalence.d.ts.map +1 -0
- package/dist/src/planner/rules/predicate/rule-predicate-inference-equivalence.js +210 -0
- package/dist/src/planner/rules/predicate/rule-predicate-inference-equivalence.js.map +1 -0
- package/dist/src/planner/rules/predicate/rule-sargable-range-rewrite.d.ts +29 -0
- package/dist/src/planner/rules/predicate/rule-sargable-range-rewrite.d.ts.map +1 -0
- package/dist/src/planner/rules/predicate/rule-sargable-range-rewrite.js +161 -0
- package/dist/src/planner/rules/predicate/rule-sargable-range-rewrite.js.map +1 -0
- package/dist/src/planner/rules/sort/rule-orderby-fd-pruning.d.ts +39 -0
- package/dist/src/planner/rules/sort/rule-orderby-fd-pruning.d.ts.map +1 -0
- package/dist/src/planner/rules/sort/rule-orderby-fd-pruning.js +91 -0
- package/dist/src/planner/rules/sort/rule-orderby-fd-pruning.js.map +1 -0
- package/dist/src/planner/rules/subquery/rule-anti-join-fk-empty.d.ts +35 -0
- package/dist/src/planner/rules/subquery/rule-anti-join-fk-empty.d.ts.map +1 -0
- package/dist/src/planner/rules/subquery/rule-anti-join-fk-empty.js +74 -0
- package/dist/src/planner/rules/subquery/rule-anti-join-fk-empty.js.map +1 -0
- package/dist/src/planner/rules/subquery/rule-semi-join-fk-trivial.d.ts +27 -0
- package/dist/src/planner/rules/subquery/rule-semi-join-fk-trivial.d.ts.map +1 -0
- package/dist/src/planner/rules/subquery/rule-semi-join-fk-trivial.js +103 -0
- package/dist/src/planner/rules/subquery/rule-semi-join-fk-trivial.js.map +1 -0
- package/dist/src/planner/rules/subquery/rule-subquery-decorrelation.d.ts.map +1 -1
- package/dist/src/planner/rules/subquery/rule-subquery-decorrelation.js +1 -25
- package/dist/src/planner/rules/subquery/rule-subquery-decorrelation.js.map +1 -1
- package/dist/src/planner/scopes/global.js +2 -2
- package/dist/src/planner/scopes/global.js.map +1 -1
- package/dist/src/planner/type-utils.d.ts.map +1 -1
- package/dist/src/planner/type-utils.js +11 -0
- package/dist/src/planner/type-utils.js.map +1 -1
- package/dist/src/planner/util/fd-utils.d.ts +245 -0
- package/dist/src/planner/util/fd-utils.d.ts.map +1 -0
- package/dist/src/planner/util/fd-utils.js +1416 -0
- package/dist/src/planner/util/fd-utils.js.map +1 -0
- package/dist/src/planner/util/ind-utils.d.ts +79 -0
- package/dist/src/planner/util/ind-utils.d.ts.map +1 -0
- package/dist/src/planner/util/ind-utils.js +146 -0
- package/dist/src/planner/util/ind-utils.js.map +1 -0
- package/dist/src/planner/util/key-utils.d.ts +75 -14
- package/dist/src/planner/util/key-utils.d.ts.map +1 -1
- package/dist/src/planner/util/key-utils.js +234 -57
- package/dist/src/planner/util/key-utils.js.map +1 -1
- package/dist/src/runtime/delta-executor.d.ts +134 -0
- package/dist/src/runtime/delta-executor.d.ts.map +1 -0
- package/dist/src/runtime/delta-executor.js +382 -0
- package/dist/src/runtime/delta-executor.js.map +1 -0
- package/dist/src/runtime/emit/alter-table.d.ts.map +1 -1
- package/dist/src/runtime/emit/alter-table.js +70 -24
- package/dist/src/runtime/emit/alter-table.js.map +1 -1
- package/dist/src/runtime/emit/create-assertion.d.ts.map +1 -1
- package/dist/src/runtime/emit/create-assertion.js +3 -2
- package/dist/src/runtime/emit/create-assertion.js.map +1 -1
- package/dist/src/runtime/emit/dml-executor.d.ts.map +1 -1
- package/dist/src/runtime/emit/dml-executor.js +121 -41
- package/dist/src/runtime/emit/dml-executor.js.map +1 -1
- package/dist/src/runtime/emit/drop-assertion.js +1 -1
- package/dist/src/runtime/emit/drop-assertion.js.map +1 -1
- package/dist/src/runtime/emit/empty-relation.d.ts +5 -0
- package/dist/src/runtime/emit/empty-relation.d.ts.map +1 -0
- package/dist/src/runtime/emit/empty-relation.js +11 -0
- package/dist/src/runtime/emit/empty-relation.js.map +1 -0
- package/dist/src/runtime/foreign-key-actions.d.ts +39 -0
- package/dist/src/runtime/foreign-key-actions.d.ts.map +1 -1
- package/dist/src/runtime/foreign-key-actions.js +219 -1
- package/dist/src/runtime/foreign-key-actions.js.map +1 -1
- package/dist/src/runtime/register.d.ts.map +1 -1
- package/dist/src/runtime/register.js +2 -0
- package/dist/src/runtime/register.js.map +1 -1
- package/dist/src/schema/assertion.d.ts +8 -0
- package/dist/src/schema/assertion.d.ts.map +1 -1
- package/dist/src/schema/change-events.d.ts +5 -1
- 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/function.d.ts +65 -1
- package/dist/src/schema/function.d.ts.map +1 -1
- package/dist/src/schema/function.js +31 -0
- package/dist/src/schema/function.js.map +1 -1
- package/dist/src/schema/manager.d.ts +33 -0
- package/dist/src/schema/manager.d.ts.map +1 -1
- package/dist/src/schema/manager.js +95 -4
- package/dist/src/schema/manager.js.map +1 -1
- package/dist/src/schema/rename-rewriter.d.ts +32 -0
- package/dist/src/schema/rename-rewriter.d.ts.map +1 -1
- package/dist/src/schema/rename-rewriter.js +392 -105
- package/dist/src/schema/rename-rewriter.js.map +1 -1
- package/dist/src/schema/table.d.ts +21 -2
- package/dist/src/schema/table.d.ts.map +1 -1
- package/dist/src/schema/table.js +17 -8
- package/dist/src/schema/table.js.map +1 -1
- package/dist/src/types/temporal-types.d.ts.map +1 -1
- package/dist/src/types/temporal-types.js +32 -0
- package/dist/src/types/temporal-types.js.map +1 -1
- package/dist/src/vtab/events.d.ts +9 -0
- package/dist/src/vtab/events.d.ts.map +1 -1
- package/dist/src/vtab/events.js +19 -0
- package/dist/src/vtab/events.js.map +1 -1
- package/dist/src/vtab/memory/layer/connection.d.ts +20 -8
- package/dist/src/vtab/memory/layer/connection.d.ts.map +1 -1
- package/dist/src/vtab/memory/layer/connection.js +95 -73
- package/dist/src/vtab/memory/layer/connection.js.map +1 -1
- package/dist/src/vtab/memory/layer/manager.d.ts.map +1 -1
- package/dist/src/vtab/memory/layer/manager.js +91 -10
- package/dist/src/vtab/memory/layer/manager.js.map +1 -1
- package/dist/src/vtab/memory/layer/transaction.d.ts +0 -8
- package/dist/src/vtab/memory/layer/transaction.d.ts.map +1 -1
- package/dist/src/vtab/memory/layer/transaction.js +0 -15
- package/dist/src/vtab/memory/layer/transaction.js.map +1 -1
- package/dist/src/vtab/memory/table.d.ts.map +1 -1
- package/dist/src/vtab/memory/table.js +13 -2
- package/dist/src/vtab/memory/table.js.map +1 -1
- package/dist/src/vtab/memory/utils/predicate.d.ts +2 -1
- package/dist/src/vtab/memory/utils/predicate.d.ts.map +1 -1
- package/dist/src/vtab/memory/utils/predicate.js +32 -1
- package/dist/src/vtab/memory/utils/predicate.js.map +1 -1
- package/package.json +3 -3
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* - Change log tracking for assertion evaluation
|
|
9
9
|
* - Coordinating commits across virtual table connections
|
|
10
10
|
*/
|
|
11
|
-
import type { SqlValue } from '../common/types.js';
|
|
11
|
+
import type { Row, SqlValue } from '../common/types.js';
|
|
12
12
|
import type { VirtualTableConnection } from '../vtab/connection.js';
|
|
13
13
|
import type { DatabaseEventEmitter } from './database-events.js';
|
|
14
14
|
import type { DeferredConstraintQueue } from '../runtime/deferred-constraint-queue.js';
|
|
@@ -31,6 +31,23 @@ export interface TransactionManagerContext {
|
|
|
31
31
|
runGlobalAssertions(): Promise<void>;
|
|
32
32
|
/** Run deferred row constraints before commit */
|
|
33
33
|
runDeferredRowConstraints(): Promise<void>;
|
|
34
|
+
/** Fire post-commit watchers (Database.watch). Errors logged, never rolled
|
|
35
|
+
* back. Invoked after all connections commit but before the change log
|
|
36
|
+
* is cleared. */
|
|
37
|
+
runPostCommitWatchers(): Promise<void>;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Op kind for a captured row change.
|
|
41
|
+
*/
|
|
42
|
+
export type CapturedOp = 'insert' | 'update' | 'delete';
|
|
43
|
+
/**
|
|
44
|
+
* Per-table capture specification — which non-PK columns to retain on each row
|
|
45
|
+
* change. PK is always captured implicitly. Used by DeltaExecutor consumers to
|
|
46
|
+
* register projection demand at plan-compile time.
|
|
47
|
+
*/
|
|
48
|
+
export interface CaptureSpec {
|
|
49
|
+
/** Column indices on the base table (PK columns are always captured implicitly). */
|
|
50
|
+
extraColumns: ReadonlySet<number>;
|
|
34
51
|
}
|
|
35
52
|
/**
|
|
36
53
|
* Manages transaction state and lifecycle for a Database instance.
|
|
@@ -44,12 +61,14 @@ export declare class TransactionManager {
|
|
|
44
61
|
private isAutocommit;
|
|
45
62
|
private inTransaction;
|
|
46
63
|
private transactionSource;
|
|
47
|
-
/** Per-transaction change tracking: base table
|
|
64
|
+
/** Per-transaction change tracking: base table → PK JSON → CapturedRow */
|
|
48
65
|
private changeLog;
|
|
49
66
|
/** Savepoint layers for change tracking */
|
|
50
67
|
private changeLogLayers;
|
|
51
68
|
/** Stack of active savepoint names (ordered by creation) */
|
|
52
69
|
private savepointStack;
|
|
70
|
+
/** Per-base-table projection capture demand registered by DeltaExecutor consumers. */
|
|
71
|
+
private captureDemand;
|
|
53
72
|
/** Flag to prevent new connections from starting transactions during constraint evaluation */
|
|
54
73
|
private evaluatingDeferredConstraints;
|
|
55
74
|
/** Flag indicating we're in a coordinated multi-connection commit */
|
|
@@ -67,6 +86,13 @@ export declare class TransactionManager {
|
|
|
67
86
|
isEvaluatingDeferredConstraints(): boolean;
|
|
68
87
|
/** Check if we're in a coordinated commit (allows sibling layer validation) */
|
|
69
88
|
isInCoordinatedCommit(): boolean;
|
|
89
|
+
/**
|
|
90
|
+
* Current savepoint stack depth (number of active savepoints). Used by
|
|
91
|
+
* `Database.registerConnection` to replay the active stack onto connections
|
|
92
|
+
* registered mid-transaction so that subsequent rollback-to / release calls
|
|
93
|
+
* targeting earlier depths are in-range on the new connection.
|
|
94
|
+
*/
|
|
95
|
+
getActiveSavepointDepth(): number;
|
|
70
96
|
/**
|
|
71
97
|
* Begins a transaction on all active connections.
|
|
72
98
|
* Called by both explicit BEGIN and implicit transaction start.
|
|
@@ -102,20 +128,71 @@ export declare class TransactionManager {
|
|
|
102
128
|
* Run deferred row constraints with proper flag management.
|
|
103
129
|
*/
|
|
104
130
|
runDeferredRowConstraints(): Promise<void>;
|
|
105
|
-
/**
|
|
131
|
+
/**
|
|
132
|
+
* Register projection capture demand for a base table. Future record calls
|
|
133
|
+
* for that table will retain values for the union of registered columns
|
|
134
|
+
* (PK is always retained implicitly). Returns a dispose handle that removes
|
|
135
|
+
* this spec from the demand set.
|
|
136
|
+
*/
|
|
137
|
+
registerCaptureSpec(baseTable: string, spec: CaptureSpec): () => void;
|
|
138
|
+
/** Serialize a tuple of SqlValues for stable Map keying. */
|
|
106
139
|
private serializeKeyTuple;
|
|
107
|
-
/**
|
|
108
|
-
private
|
|
109
|
-
/**
|
|
110
|
-
|
|
111
|
-
/**
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
140
|
+
/** The active (top) layer that should receive change records. */
|
|
141
|
+
private activeLayer;
|
|
142
|
+
/** Project a row onto the given column indices. */
|
|
143
|
+
private projectRow;
|
|
144
|
+
/**
|
|
145
|
+
* Build the OLD/NEW projection columns for a base table — PK indices first,
|
|
146
|
+
* then any registered extraColumns not already in the PK, preserving a
|
|
147
|
+
* deterministic order. Returns a tuple of indices used for projection.
|
|
148
|
+
*/
|
|
149
|
+
private captureColumnsFor;
|
|
150
|
+
/**
|
|
151
|
+
* Merge an incoming op into the active layer with last-write-wins semantics:
|
|
152
|
+
* - INSERT after DELETE → UPDATE (rare; same PK reappears with new values)
|
|
153
|
+
* - UPDATE after INSERT → INSERT (with refreshed newProjection)
|
|
154
|
+
* - DELETE after INSERT → drop entry (net no-op)
|
|
155
|
+
* - DELETE after UPDATE → DELETE with carrying-over oldProjection from the first OLD
|
|
156
|
+
* - INSERT/UPDATE chains preserve the original `oldProjection` so the OLD
|
|
157
|
+
* state seen at the start of the layer is never overwritten by later
|
|
158
|
+
* intra-layer activity on the same PK.
|
|
159
|
+
*/
|
|
160
|
+
private mergeRecord;
|
|
161
|
+
/**
|
|
162
|
+
* Same merge state machine as `mergeRecord`, but writes to an arbitrary
|
|
163
|
+
* target layer. Used both for normal record paths (via `mergeRecord`) and
|
|
164
|
+
* for savepoint RELEASE (merging the released layer into its parent), so
|
|
165
|
+
* the two paths cannot drift.
|
|
166
|
+
*/
|
|
167
|
+
private mergeRecordInto;
|
|
168
|
+
/** Record an INSERT operation, capturing the new row's projected columns. */
|
|
169
|
+
recordInsert(baseTable: string, newRow: Row, pkIndices: readonly number[]): void;
|
|
170
|
+
/** Record a DELETE operation, capturing the old row's projected columns. */
|
|
171
|
+
recordDelete(baseTable: string, oldRow: Row, pkIndices: readonly number[]): void;
|
|
172
|
+
/**
|
|
173
|
+
* Record an UPDATE operation. When the PK changes value, this is recorded
|
|
174
|
+
* as a DELETE of the old PK followed by an INSERT of the new PK. Otherwise
|
|
175
|
+
* it is recorded as a single UPDATE with both projections.
|
|
176
|
+
*/
|
|
177
|
+
recordUpdate(baseTable: string, oldRow: Row, newRow: Row, pkIndices: readonly number[]): void;
|
|
115
178
|
/** Get the set of changed base tables */
|
|
116
179
|
getChangedBaseTables(): Set<string>;
|
|
117
|
-
/** Gather all changed PK tuples for a base table across layers */
|
|
180
|
+
/** Gather all changed PK tuples for a base table across layers (back-compat). */
|
|
118
181
|
getChangedKeyTuples(base: string): SqlValue[][];
|
|
182
|
+
/**
|
|
183
|
+
* Return the de-duplicated set of value tuples for the requested columns,
|
|
184
|
+
* across all layers and ops. For UPDATE, yields both OLD and NEW
|
|
185
|
+
* projections when any captured column changed value. The supplied
|
|
186
|
+
* `columnIndices` must be a subset of the registered captureSpec columns
|
|
187
|
+
* (or PK columns) — values for non-captured columns are not retained.
|
|
188
|
+
*
|
|
189
|
+
* Column indices are positions in the base table's column space; this
|
|
190
|
+
* function translates them into positions inside the cached projection
|
|
191
|
+
* tuple using the per-base capture column layout (PK first, then extras
|
|
192
|
+
* in insertion order). To avoid recomputing that layout on each call, the
|
|
193
|
+
* caller passes the columns it wants and we resolve via the table demand.
|
|
194
|
+
*/
|
|
195
|
+
getChangedTuples(base: string, columnIndices: readonly number[], pkIndices: readonly number[]): SqlValue[][];
|
|
119
196
|
/** Clear all change tracking */
|
|
120
197
|
clearChangeLog(): void;
|
|
121
198
|
/**
|
|
@@ -147,7 +224,13 @@ export declare class TransactionManager {
|
|
|
147
224
|
private beginSavepointLayer;
|
|
148
225
|
/** Rollback the current savepoint layer */
|
|
149
226
|
private rollbackSavepointLayer;
|
|
150
|
-
/**
|
|
227
|
+
/**
|
|
228
|
+
* Release the current savepoint layer, merging into the parent through
|
|
229
|
+
* the same `mergeRecordInto` state machine the record path uses. This
|
|
230
|
+
* keeps the two paths consistent — in particular, an UPDATE-after-UPDATE
|
|
231
|
+
* preserves the parent layer's `oldProjection` so per-group dispatch
|
|
232
|
+
* still sees the row's pre-savepoint state.
|
|
233
|
+
*/
|
|
151
234
|
private releaseSavepointLayer;
|
|
152
235
|
}
|
|
153
236
|
//# sourceMappingURL=database-transaction.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database-transaction.d.ts","sourceRoot":"","sources":["../../../src/core/database-transaction.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"database-transaction.d.ts","sourceRoot":"","sources":["../../../src/core/database-transaction.ts"],"names":[],"mappings":"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"}
|
|
@@ -26,12 +26,14 @@ export class TransactionManager {
|
|
|
26
26
|
isAutocommit = true;
|
|
27
27
|
inTransaction = false;
|
|
28
28
|
transactionSource = null;
|
|
29
|
-
/** Per-transaction change tracking: base table
|
|
29
|
+
/** Per-transaction change tracking: base table → PK JSON → CapturedRow */
|
|
30
30
|
changeLog = new Map();
|
|
31
31
|
/** Savepoint layers for change tracking */
|
|
32
32
|
changeLogLayers = [];
|
|
33
33
|
/** Stack of active savepoint names (ordered by creation) */
|
|
34
34
|
savepointStack = [];
|
|
35
|
+
/** Per-base-table projection capture demand registered by DeltaExecutor consumers. */
|
|
36
|
+
captureDemand = new Map();
|
|
35
37
|
/** Flag to prevent new connections from starting transactions during constraint evaluation */
|
|
36
38
|
evaluatingDeferredConstraints = false;
|
|
37
39
|
/** Flag indicating we're in a coordinated multi-connection commit */
|
|
@@ -66,6 +68,15 @@ export class TransactionManager {
|
|
|
66
68
|
isInCoordinatedCommit() {
|
|
67
69
|
return this.inCoordinatedCommit;
|
|
68
70
|
}
|
|
71
|
+
/**
|
|
72
|
+
* Current savepoint stack depth (number of active savepoints). Used by
|
|
73
|
+
* `Database.registerConnection` to replay the active stack onto connections
|
|
74
|
+
* registered mid-transaction so that subsequent rollback-to / release calls
|
|
75
|
+
* targeting earlier depths are in-range on the new connection.
|
|
76
|
+
*/
|
|
77
|
+
getActiveSavepointDepth() {
|
|
78
|
+
return this.savepointStack.length;
|
|
79
|
+
}
|
|
69
80
|
// ============================================================================
|
|
70
81
|
// Transaction Control
|
|
71
82
|
// ============================================================================
|
|
@@ -144,6 +155,15 @@ export class TransactionManager {
|
|
|
144
155
|
finally {
|
|
145
156
|
this.inCoordinatedCommit = false;
|
|
146
157
|
}
|
|
158
|
+
// Fire post-commit watchers while the change log is still alive.
|
|
159
|
+
// Errors are swallowed inside the manager — watchers do not roll
|
|
160
|
+
// back the commit.
|
|
161
|
+
try {
|
|
162
|
+
await this.ctx.runPostCommitWatchers();
|
|
163
|
+
}
|
|
164
|
+
catch (err) {
|
|
165
|
+
errorLog('Post-commit watcher dispatch threw: %O', err);
|
|
166
|
+
}
|
|
147
167
|
}
|
|
148
168
|
catch (e) {
|
|
149
169
|
// On pre-commit assertion failure (or commit error), rollback all connections
|
|
@@ -242,44 +262,207 @@ export class TransactionManager {
|
|
|
242
262
|
}
|
|
243
263
|
}
|
|
244
264
|
// ============================================================================
|
|
265
|
+
// Capture Spec Registration
|
|
266
|
+
// ============================================================================
|
|
267
|
+
/**
|
|
268
|
+
* Register projection capture demand for a base table. Future record calls
|
|
269
|
+
* for that table will retain values for the union of registered columns
|
|
270
|
+
* (PK is always retained implicitly). Returns a dispose handle that removes
|
|
271
|
+
* this spec from the demand set.
|
|
272
|
+
*/
|
|
273
|
+
registerCaptureSpec(baseTable, spec) {
|
|
274
|
+
const key = baseTable.toLowerCase();
|
|
275
|
+
let demand = this.captureDemand.get(key);
|
|
276
|
+
if (!demand) {
|
|
277
|
+
demand = { specs: new Set(), union: new Set() };
|
|
278
|
+
this.captureDemand.set(key, demand);
|
|
279
|
+
}
|
|
280
|
+
demand.specs.add(spec);
|
|
281
|
+
for (const c of spec.extraColumns)
|
|
282
|
+
demand.union.add(c);
|
|
283
|
+
let disposed = false;
|
|
284
|
+
return () => {
|
|
285
|
+
if (disposed)
|
|
286
|
+
return;
|
|
287
|
+
disposed = true;
|
|
288
|
+
const d = this.captureDemand.get(key);
|
|
289
|
+
if (!d)
|
|
290
|
+
return;
|
|
291
|
+
d.specs.delete(spec);
|
|
292
|
+
if (d.specs.size === 0) {
|
|
293
|
+
this.captureDemand.delete(key);
|
|
294
|
+
}
|
|
295
|
+
else {
|
|
296
|
+
// Recompute union from remaining specs
|
|
297
|
+
const u = new Set();
|
|
298
|
+
for (const s of d.specs) {
|
|
299
|
+
for (const c of s.extraColumns)
|
|
300
|
+
u.add(c);
|
|
301
|
+
}
|
|
302
|
+
d.union = u;
|
|
303
|
+
}
|
|
304
|
+
};
|
|
305
|
+
}
|
|
306
|
+
// ============================================================================
|
|
245
307
|
// Change Log Management
|
|
246
308
|
// ============================================================================
|
|
247
|
-
/** Serialize a
|
|
309
|
+
/** Serialize a tuple of SqlValues for stable Map keying. */
|
|
248
310
|
serializeKeyTuple(values) {
|
|
249
311
|
return JSON.stringify(values);
|
|
250
312
|
}
|
|
251
|
-
/**
|
|
252
|
-
|
|
253
|
-
|
|
313
|
+
/** The active (top) layer that should receive change records. */
|
|
314
|
+
activeLayer() {
|
|
315
|
+
return this.changeLogLayers.length > 0
|
|
254
316
|
? this.changeLogLayers[this.changeLogLayers.length - 1]
|
|
255
317
|
: this.changeLog;
|
|
256
|
-
const key = baseTable.toLowerCase();
|
|
257
|
-
if (!target.has(key))
|
|
258
|
-
target.set(key, new Set());
|
|
259
|
-
target.get(key).add(this.serializeKeyTuple(keyTuple));
|
|
260
318
|
}
|
|
261
|
-
/**
|
|
262
|
-
|
|
263
|
-
|
|
319
|
+
/** Project a row onto the given column indices. */
|
|
320
|
+
projectRow(row, columns) {
|
|
321
|
+
const out = [];
|
|
322
|
+
for (const i of columns)
|
|
323
|
+
out.push(row[i]);
|
|
324
|
+
return out;
|
|
325
|
+
}
|
|
326
|
+
/**
|
|
327
|
+
* Build the OLD/NEW projection columns for a base table — PK indices first,
|
|
328
|
+
* then any registered extraColumns not already in the PK, preserving a
|
|
329
|
+
* deterministic order. Returns a tuple of indices used for projection.
|
|
330
|
+
*/
|
|
331
|
+
captureColumnsFor(base, pkIndices) {
|
|
332
|
+
const demand = this.captureDemand.get(base);
|
|
333
|
+
const cols = [...pkIndices];
|
|
334
|
+
if (demand && demand.union.size > 0) {
|
|
335
|
+
const seen = new Set(pkIndices);
|
|
336
|
+
for (const c of demand.union) {
|
|
337
|
+
if (!seen.has(c)) {
|
|
338
|
+
cols.push(c);
|
|
339
|
+
seen.add(c);
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
return cols;
|
|
264
344
|
}
|
|
265
|
-
/**
|
|
266
|
-
|
|
267
|
-
|
|
345
|
+
/**
|
|
346
|
+
* Merge an incoming op into the active layer with last-write-wins semantics:
|
|
347
|
+
* - INSERT after DELETE → UPDATE (rare; same PK reappears with new values)
|
|
348
|
+
* - UPDATE after INSERT → INSERT (with refreshed newProjection)
|
|
349
|
+
* - DELETE after INSERT → drop entry (net no-op)
|
|
350
|
+
* - DELETE after UPDATE → DELETE with carrying-over oldProjection from the first OLD
|
|
351
|
+
* - INSERT/UPDATE chains preserve the original `oldProjection` so the OLD
|
|
352
|
+
* state seen at the start of the layer is never overwritten by later
|
|
353
|
+
* intra-layer activity on the same PK.
|
|
354
|
+
*/
|
|
355
|
+
mergeRecord(base, pkKey, incoming) {
|
|
356
|
+
const layer = this.activeLayer();
|
|
357
|
+
this.mergeRecordInto(layer, base.toLowerCase(), pkKey, incoming);
|
|
268
358
|
}
|
|
269
|
-
/**
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
359
|
+
/**
|
|
360
|
+
* Same merge state machine as `mergeRecord`, but writes to an arbitrary
|
|
361
|
+
* target layer. Used both for normal record paths (via `mergeRecord`) and
|
|
362
|
+
* for savepoint RELEASE (merging the released layer into its parent), so
|
|
363
|
+
* the two paths cannot drift.
|
|
364
|
+
*/
|
|
365
|
+
mergeRecordInto(layer, lower, pkKey, incoming) {
|
|
366
|
+
let tableMap = layer.get(lower);
|
|
367
|
+
if (!tableMap) {
|
|
368
|
+
tableMap = new Map();
|
|
369
|
+
layer.set(lower, tableMap);
|
|
370
|
+
}
|
|
371
|
+
const existing = tableMap.get(pkKey);
|
|
372
|
+
if (!existing) {
|
|
373
|
+
tableMap.set(pkKey, incoming);
|
|
374
|
+
return;
|
|
375
|
+
}
|
|
376
|
+
const prev = existing.op;
|
|
377
|
+
const next = incoming.op;
|
|
378
|
+
if (prev === 'insert' && next === 'delete') {
|
|
379
|
+
tableMap.delete(pkKey);
|
|
380
|
+
return;
|
|
381
|
+
}
|
|
382
|
+
if (prev === 'insert' && next === 'update') {
|
|
383
|
+
existing.newProjection = incoming.newProjection ?? existing.newProjection;
|
|
384
|
+
return;
|
|
385
|
+
}
|
|
386
|
+
if (prev === 'insert' && next === 'insert') {
|
|
387
|
+
existing.newProjection = incoming.newProjection ?? existing.newProjection;
|
|
388
|
+
return;
|
|
389
|
+
}
|
|
390
|
+
if (prev === 'update' && next === 'update') {
|
|
391
|
+
// Preserve the earliest oldProjection (existing) and pick up the
|
|
392
|
+
// latest newProjection (incoming).
|
|
393
|
+
existing.newProjection = incoming.newProjection ?? existing.newProjection;
|
|
394
|
+
return;
|
|
395
|
+
}
|
|
396
|
+
if (prev === 'update' && next === 'delete') {
|
|
397
|
+
existing.op = 'delete';
|
|
398
|
+
existing.newProjection = undefined;
|
|
399
|
+
return;
|
|
400
|
+
}
|
|
401
|
+
if (prev === 'delete' && next === 'insert') {
|
|
402
|
+
existing.op = 'update';
|
|
403
|
+
existing.newProjection = incoming.newProjection;
|
|
404
|
+
return;
|
|
405
|
+
}
|
|
406
|
+
if (prev === 'delete' && next === 'delete') {
|
|
407
|
+
// Idempotent: a second delete with the same PK can't happen against
|
|
408
|
+
// committed state, but keep the existing oldProjection.
|
|
409
|
+
return;
|
|
410
|
+
}
|
|
411
|
+
// Defensive fallback for any unanticipated combination — replace.
|
|
412
|
+
tableMap.set(pkKey, incoming);
|
|
413
|
+
}
|
|
414
|
+
/** Record an INSERT operation, capturing the new row's projected columns. */
|
|
415
|
+
recordInsert(baseTable, newRow, pkIndices) {
|
|
416
|
+
const lower = baseTable.toLowerCase();
|
|
417
|
+
const cols = this.captureColumnsFor(lower, pkIndices);
|
|
418
|
+
const pkProjection = this.projectRow(newRow, pkIndices);
|
|
419
|
+
const newProjection = this.projectRow(newRow, cols);
|
|
420
|
+
this.mergeRecord(lower, this.serializeKeyTuple(pkProjection), {
|
|
421
|
+
op: 'insert',
|
|
422
|
+
newProjection,
|
|
423
|
+
});
|
|
424
|
+
}
|
|
425
|
+
/** Record a DELETE operation, capturing the old row's projected columns. */
|
|
426
|
+
recordDelete(baseTable, oldRow, pkIndices) {
|
|
427
|
+
const lower = baseTable.toLowerCase();
|
|
428
|
+
const cols = this.captureColumnsFor(lower, pkIndices);
|
|
429
|
+
const pkProjection = this.projectRow(oldRow, pkIndices);
|
|
430
|
+
const oldProjection = this.projectRow(oldRow, cols);
|
|
431
|
+
this.mergeRecord(lower, this.serializeKeyTuple(pkProjection), {
|
|
432
|
+
op: 'delete',
|
|
433
|
+
oldProjection,
|
|
434
|
+
});
|
|
435
|
+
}
|
|
436
|
+
/**
|
|
437
|
+
* Record an UPDATE operation. When the PK changes value, this is recorded
|
|
438
|
+
* as a DELETE of the old PK followed by an INSERT of the new PK. Otherwise
|
|
439
|
+
* it is recorded as a single UPDATE with both projections.
|
|
440
|
+
*/
|
|
441
|
+
recordUpdate(baseTable, oldRow, newRow, pkIndices) {
|
|
442
|
+
const lower = baseTable.toLowerCase();
|
|
443
|
+
const cols = this.captureColumnsFor(lower, pkIndices);
|
|
444
|
+
const oldPk = this.projectRow(oldRow, pkIndices);
|
|
445
|
+
const newPk = this.projectRow(newRow, pkIndices);
|
|
446
|
+
const oldPkKey = this.serializeKeyTuple(oldPk);
|
|
447
|
+
const newPkKey = this.serializeKeyTuple(newPk);
|
|
448
|
+
const oldProjection = this.projectRow(oldRow, cols);
|
|
449
|
+
const newProjection = this.projectRow(newRow, cols);
|
|
450
|
+
if (oldPkKey === newPkKey) {
|
|
451
|
+
this.mergeRecord(lower, oldPkKey, { op: 'update', oldProjection, newProjection });
|
|
452
|
+
}
|
|
453
|
+
else {
|
|
454
|
+
// PK changed: delete-then-insert semantics so per-group/per-row
|
|
455
|
+
// dispatch sees both keys.
|
|
456
|
+
this.mergeRecord(lower, oldPkKey, { op: 'delete', oldProjection });
|
|
457
|
+
this.mergeRecord(lower, newPkKey, { op: 'insert', newProjection });
|
|
275
458
|
}
|
|
276
459
|
}
|
|
277
460
|
/** Get the set of changed base tables */
|
|
278
461
|
getChangedBaseTables() {
|
|
279
462
|
const result = new Set();
|
|
280
463
|
const collect = (m) => {
|
|
281
|
-
for (const [t,
|
|
282
|
-
if (
|
|
464
|
+
for (const [t, rowMap] of m) {
|
|
465
|
+
if (rowMap.size > 0)
|
|
283
466
|
result.add(t);
|
|
284
467
|
}
|
|
285
468
|
};
|
|
@@ -288,22 +471,94 @@ export class TransactionManager {
|
|
|
288
471
|
collect(layer);
|
|
289
472
|
return result;
|
|
290
473
|
}
|
|
291
|
-
/** Gather all changed PK tuples for a base table across layers */
|
|
474
|
+
/** Gather all changed PK tuples for a base table across layers (back-compat). */
|
|
292
475
|
getChangedKeyTuples(base) {
|
|
293
476
|
const lower = base.toLowerCase();
|
|
294
477
|
const tuples = [];
|
|
478
|
+
const seen = new Set();
|
|
295
479
|
const collect = (m) => {
|
|
296
|
-
const
|
|
297
|
-
if (!
|
|
480
|
+
const rowMap = m.get(lower);
|
|
481
|
+
if (!rowMap)
|
|
298
482
|
return;
|
|
299
|
-
for (const
|
|
300
|
-
|
|
483
|
+
for (const pkKey of rowMap.keys()) {
|
|
484
|
+
if (seen.has(pkKey))
|
|
485
|
+
continue;
|
|
486
|
+
seen.add(pkKey);
|
|
487
|
+
tuples.push(JSON.parse(pkKey));
|
|
488
|
+
}
|
|
301
489
|
};
|
|
302
490
|
collect(this.changeLog);
|
|
303
491
|
for (const layer of this.changeLogLayers)
|
|
304
492
|
collect(layer);
|
|
305
493
|
return tuples;
|
|
306
494
|
}
|
|
495
|
+
/**
|
|
496
|
+
* Return the de-duplicated set of value tuples for the requested columns,
|
|
497
|
+
* across all layers and ops. For UPDATE, yields both OLD and NEW
|
|
498
|
+
* projections when any captured column changed value. The supplied
|
|
499
|
+
* `columnIndices` must be a subset of the registered captureSpec columns
|
|
500
|
+
* (or PK columns) — values for non-captured columns are not retained.
|
|
501
|
+
*
|
|
502
|
+
* Column indices are positions in the base table's column space; this
|
|
503
|
+
* function translates them into positions inside the cached projection
|
|
504
|
+
* tuple using the per-base capture column layout (PK first, then extras
|
|
505
|
+
* in insertion order). To avoid recomputing that layout on each call, the
|
|
506
|
+
* caller passes the columns it wants and we resolve via the table demand.
|
|
507
|
+
*/
|
|
508
|
+
getChangedTuples(base, columnIndices, pkIndices) {
|
|
509
|
+
const lower = base.toLowerCase();
|
|
510
|
+
const projectionCols = this.captureColumnsFor(lower, pkIndices);
|
|
511
|
+
const indexByTableCol = new Map();
|
|
512
|
+
for (let i = 0; i < projectionCols.length; i++) {
|
|
513
|
+
indexByTableCol.set(projectionCols[i], i);
|
|
514
|
+
}
|
|
515
|
+
// Verify every requested column is captured; if not, the caller didn't
|
|
516
|
+
// register the right spec.
|
|
517
|
+
const projectionIndices = [];
|
|
518
|
+
for (const c of columnIndices) {
|
|
519
|
+
const idx = indexByTableCol.get(c);
|
|
520
|
+
if (idx === undefined) {
|
|
521
|
+
throw new QuereusError(`getChangedTuples: column ${c} on ${base} was not registered for capture`, StatusCode.INTERNAL);
|
|
522
|
+
}
|
|
523
|
+
projectionIndices.push(idx);
|
|
524
|
+
}
|
|
525
|
+
const out = [];
|
|
526
|
+
const seen = new Set();
|
|
527
|
+
const emit = (projection) => {
|
|
528
|
+
if (!projection)
|
|
529
|
+
return;
|
|
530
|
+
const tuple = [];
|
|
531
|
+
for (const i of projectionIndices)
|
|
532
|
+
tuple.push(projection[i]);
|
|
533
|
+
const tkey = JSON.stringify(tuple);
|
|
534
|
+
if (seen.has(tkey))
|
|
535
|
+
return;
|
|
536
|
+
seen.add(tkey);
|
|
537
|
+
out.push(tuple);
|
|
538
|
+
};
|
|
539
|
+
const collect = (m) => {
|
|
540
|
+
const rowMap = m.get(lower);
|
|
541
|
+
if (!rowMap)
|
|
542
|
+
return;
|
|
543
|
+
for (const rec of rowMap.values()) {
|
|
544
|
+
if (rec.op === 'insert') {
|
|
545
|
+
emit(rec.newProjection);
|
|
546
|
+
}
|
|
547
|
+
else if (rec.op === 'delete') {
|
|
548
|
+
emit(rec.oldProjection);
|
|
549
|
+
}
|
|
550
|
+
else {
|
|
551
|
+
// UPDATE: emit OLD and NEW so group-membership transitions are visible.
|
|
552
|
+
emit(rec.oldProjection);
|
|
553
|
+
emit(rec.newProjection);
|
|
554
|
+
}
|
|
555
|
+
}
|
|
556
|
+
};
|
|
557
|
+
collect(this.changeLog);
|
|
558
|
+
for (const layer of this.changeLogLayers)
|
|
559
|
+
collect(layer);
|
|
560
|
+
return out;
|
|
561
|
+
}
|
|
307
562
|
/** Clear all change tracking */
|
|
308
563
|
clearChangeLog() {
|
|
309
564
|
this.changeLog.clear();
|
|
@@ -389,7 +644,13 @@ export class TransactionManager {
|
|
|
389
644
|
this.ctx.getDeferredConstraints().rollbackLayer();
|
|
390
645
|
this.ctx.getEventEmitter().rollbackSavepointLayer();
|
|
391
646
|
}
|
|
392
|
-
/**
|
|
647
|
+
/**
|
|
648
|
+
* Release the current savepoint layer, merging into the parent through
|
|
649
|
+
* the same `mergeRecordInto` state machine the record path uses. This
|
|
650
|
+
* keeps the two paths consistent — in particular, an UPDATE-after-UPDATE
|
|
651
|
+
* preserves the parent layer's `oldProjection` so per-group dispatch
|
|
652
|
+
* still sees the row's pre-savepoint state.
|
|
653
|
+
*/
|
|
393
654
|
releaseSavepointLayer() {
|
|
394
655
|
const top = this.changeLogLayers.pop();
|
|
395
656
|
if (!top)
|
|
@@ -397,12 +658,10 @@ export class TransactionManager {
|
|
|
397
658
|
const target = this.changeLogLayers.length > 0
|
|
398
659
|
? this.changeLogLayers[this.changeLogLayers.length - 1]
|
|
399
660
|
: this.changeLog;
|
|
400
|
-
for (const [table,
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
for (const k of set)
|
|
405
|
-
tgt.add(k);
|
|
661
|
+
for (const [table, rowMap] of top) {
|
|
662
|
+
for (const [pkKey, rec] of rowMap) {
|
|
663
|
+
this.mergeRecordInto(target, table, pkKey, rec);
|
|
664
|
+
}
|
|
406
665
|
}
|
|
407
666
|
this.ctx.getDeferredConstraints().releaseLayer();
|
|
408
667
|
this.ctx.getEventEmitter().releaseSavepointLayer();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database-transaction.js","sourceRoot":"","sources":["../../../src/core/database-transaction.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAKhD,MAAM,GAAG,GAAG,YAAY,CAAC,kBAAkB,CAAC,CAAC;AAC7C,MAAM,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACrC,MAAM,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAwBrC;;;;;;GAMG;AACH,MAAM,OAAO,kBAAkB;IAkBD;IAjBrB,YAAY,GAAG,IAAI,CAAC;IACpB,aAAa,GAAG,KAAK,CAAC;IACtB,iBAAiB,GAA6B,IAAI,CAAC;IAE3D,8EAA8E;IACtE,SAAS,GAA6B,IAAI,GAAG,EAAE,CAAC;IACxD,2CAA2C;IACnC,eAAe,GAAoC,EAAE,CAAC;IAE9D,4DAA4D;IACpD,cAAc,GAAa,EAAE,CAAC;IAEtC,8FAA8F;IACtF,6BAA6B,GAAG,KAAK,CAAC;IAC9C,qEAAqE;IAC7D,mBAAmB,GAAG,KAAK,CAAC;IAEpC,YAA6B,GAA8B;QAA9B,QAAG,GAAH,GAAG,CAA2B;IAAG,CAAC;IAE/D,+EAA+E;IAC/E,4BAA4B;IAC5B,+EAA+E;IAE/E,iDAAiD;IACjD,aAAa;QACZ,OAAO,IAAI,CAAC,YAAY,CAAC;IAC1B,CAAC;IAED,gDAAgD;IAChD,eAAe;QACd,OAAO,IAAI,CAAC,aAAa,CAAC;IAC3B,CAAC;IAED,iFAAiF;IACjF,oBAAoB;QACnB,OAAO,IAAI,CAAC,iBAAiB,CAAC;IAC/B,CAAC;IAED,gDAAgD;IAChD,qBAAqB;QACpB,OAAO,IAAI,CAAC,iBAAiB,KAAK,UAAU,CAAC;IAC9C,CAAC;IAED,0FAA0F;IAC1F,+BAA+B;QAC9B,OAAO,IAAI,CAAC,6BAA6B,CAAC;IAC3C,CAAC;IAED,+EAA+E;IAC/E,qBAAqB;QACpB,OAAO,IAAI,CAAC,mBAAmB,CAAC;IACjC,CAAC;IAED,+EAA+E;IAC/E,sBAAsB;IACtB,+EAA+E;IAE/E;;;OAGG;IACH,KAAK,CAAC,gBAAgB,CAAC,MAAyB;QAC/C,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACxB,IAAI,MAAM,KAAK,UAAU,EAAE,CAAC;gBAC3B,IAAI,IAAI,CAAC,iBAAiB,KAAK,UAAU,EAAE,CAAC;oBAC3C,+BAA+B;oBAC/B,QAAQ,CAAC,iEAAiE,CAAC,CAAC;oBAC5E,IAAI,CAAC,iBAAiB,GAAG,UAAU,CAAC;oBACpC,IAAI,CAAC,cAAc,EAAE,CAAC;oBACtB,OAAO;gBACR,CAAC;gBACD,MAAM,IAAI,YAAY,CAAC,oDAAoD,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;YAChG,CAAC;YACD,kDAAkD;YAClD,OAAO;QACR,CAAC;QAED,QAAQ,CAAC,aAAa,MAAM,eAAe,CAAC,CAAC;QAE7C,6CAA6C;QAC7C,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC,UAAU,EAAE,CAAC;QAExC,8CAA8C;QAC9C,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC;QACjD,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;YACtC,IAAI,CAAC;gBACJ,MAAM,UAAU,CAAC,KAAK,EAAE,CAAC;YAC1B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAChB,QAAQ,CAAC,6CAA6C,UAAU,CAAC,YAAY,MAAM,EAAE,KAAK,CAAC,CAAC;gBAC5F,MAAM,KAAK,CAAC;YACb,CAAC;QACF,CAAC;QAED,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC1B,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC1B,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC;QAEhC,IAAI,MAAM,KAAK,UAAU,EAAE,CAAC;YAC3B,IAAI,CAAC,cAAc,EAAE,CAAC;QACvB,CAAC;IACF,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,iBAAiB;QACtB,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;YACzB,QAAQ,CAAC,wDAAwD,CAAC,CAAC;YACnE,OAAO;QACR,CAAC;QAED,QAAQ,CAAC,cAAc,IAAI,CAAC,iBAAiB,eAAe,CAAC,CAAC;QAE9D,8DAA8D;QAC9D,MAAM,mBAAmB,GAAG,IAAI,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC;QAEzD,IAAI,eAAe,GAAG,KAAK,CAAC;QAC5B,IAAI,CAAC;YACJ,4EAA4E;YAC5E,MAAM,IAAI,CAAC,GAAG,CAAC,mBAAmB,EAAE,CAAC;YACrC,MAAM,IAAI,CAAC,GAAG,CAAC,yBAAyB,EAAE,CAAC;YAE3C,uEAAuE;YACvE,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;YAChC,IAAI,CAAC;gBACJ,oEAAoE;gBACpE,KAAK,MAAM,UAAU,IAAI,mBAAmB,EAAE,CAAC;oBAC9C,IAAI,CAAC;wBACJ,MAAM,UAAU,CAAC,MAAM,EAAE,CAAC;oBAC3B,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBAChB,QAAQ,CAAC,8CAA8C,UAAU,CAAC,YAAY,MAAM,EAAE,KAAK,CAAC,CAAC;wBAC7F,MAAM,KAAK,CAAC;oBACb,CAAC;gBACF,CAAC;gBACD,eAAe,GAAG,IAAI,CAAC;YACxB,CAAC;oBAAS,CAAC;gBACV,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;YAClC,CAAC;QACF,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACZ,8EAA8E;YAC9E,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC;YAC3C,MAAM,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;YACvD,MAAM,CAAC,CAAC;QACT,CAAC;gBAAS,CAAC;YACV,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;YAC3B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;YACzB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;YAC9B,IAAI,CAAC,cAAc,EAAE,CAAC;YAEtB,0DAA0D;YAC1D,IAAI,eAAe,EAAE,CAAC;gBACrB,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC,UAAU,EAAE,CAAC;YACzC,CAAC;iBAAM,CAAC;gBACP,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC,YAAY,EAAE,CAAC;YAC3C,CAAC;QACF,CAAC;IACF,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,mBAAmB;QACxB,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;YACzB,QAAQ,CAAC,0DAA0D,CAAC,CAAC;YACrE,OAAO;QACR,CAAC;QAED,QAAQ,CAAC,gBAAgB,IAAI,CAAC,iBAAiB,eAAe,CAAC,CAAC;QAEhE,kCAAkC;QAClC,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC;QACjD,MAAM,gBAAgB,GAAG,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE;YAC7D,IAAI,CAAC;gBACJ,MAAM,UAAU,CAAC,QAAQ,EAAE,CAAC;YAC7B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAChB,QAAQ,CAAC,gDAAgD,UAAU,CAAC,YAAY,MAAM,EAAE,KAAK,CAAC,CAAC;YAChG,CAAC;QACF,CAAC,CAAC,CAAC;QAEH,MAAM,OAAO,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;QAE3C,qCAAqC;QACrC,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC,YAAY,EAAE,CAAC;QAE1C,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAC3B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAC9B,IAAI,CAAC,cAAc,EAAE,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,iBAAiB;QACtB,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YAC9C,MAAM,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;QACzC,CAAC;IACF,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,kBAAkB;QACvB,IAAI,IAAI,CAAC,iBAAiB,KAAK,UAAU,EAAE,CAAC;YAC3C,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAChC,CAAC;IACF,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,oBAAoB;QACzB,IAAI,IAAI,CAAC,iBAAiB,KAAK,UAAU,EAAE,CAAC;YAC3C,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAClC,CAAC;IACF,CAAC;IAED;;;OAGG;IACH,4BAA4B;QAC3B,IAAI,IAAI,CAAC,iBAAiB,KAAK,UAAU,EAAE,CAAC;YAC3C,QAAQ,CAAC,qEAAqE,CAAC,CAAC;YAChF,IAAI,CAAC,iBAAiB,GAAG,UAAU,CAAC;QACrC,CAAC;IACF,CAAC;IAED,+EAA+E;IAC/E,iCAAiC;IACjC,+EAA+E;IAE/E;;OAEG;IACH,KAAK,CAAC,yBAAyB;QAC9B,IAAI,CAAC,6BAA6B,GAAG,IAAI,CAAC;QAC1C,IAAI,CAAC;YACJ,MAAM,IAAI,CAAC,GAAG,CAAC,sBAAsB,EAAE,CAAC,eAAe,EAAE,CAAC;QAC3D,CAAC;gBAAS,CAAC;YACV,IAAI,CAAC,6BAA6B,GAAG,KAAK,CAAC;QAC5C,CAAC;IACF,CAAC;IAED,+EAA+E;IAC/E,wBAAwB;IACxB,+EAA+E;IAE/E,8DAA8D;IACtD,iBAAiB,CAAC,MAAkB;QAC3C,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC;IAED,iEAAiE;IACzD,SAAS,CAAC,SAAiB,EAAE,QAAoB;QACxD,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC;YAC7C,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC;YACvD,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;QAClB,MAAM,GAAG,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC;QACpC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;QACjD,MAAM,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC;IACxD,CAAC;IAED,iCAAiC;IACjC,YAAY,CAAC,SAAiB,EAAE,MAAkB;QACjD,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IACnC,CAAC;IAED,gCAAgC;IAChC,YAAY,CAAC,SAAiB,EAAE,MAAkB;QACjD,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IACnC,CAAC;IAED,iCAAiC;IACjC,YAAY,CAAC,SAAiB,EAAE,MAAkB,EAAE,MAAkB;QACrE,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAClC,6CAA6C;QAC7C,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC;YACvE,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QACnC,CAAC;IACF,CAAC;IAED,yCAAyC;IACzC,oBAAoB;QACnB,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU,CAAC;QACjC,MAAM,OAAO,GAAG,CAAC,CAA2B,EAAE,EAAE;YAC/C,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;gBACxB,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC;oBAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC/B,CAAC;QACF,CAAC,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACxB,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,eAAe;YAAE,OAAO,CAAC,KAAK,CAAC,CAAC;QACzD,OAAO,MAAM,CAAC;IACf,CAAC;IAED,kEAAkE;IAClE,mBAAmB,CAAC,IAAY;QAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACjC,MAAM,MAAM,GAAiB,EAAE,CAAC;QAChC,MAAM,OAAO,GAAG,CAAC,CAA2B,EAAQ,EAAE;YACrD,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACzB,IAAI,CAAC,GAAG;gBAAE,OAAO;YACjB,KAAK,MAAM,CAAC,IAAI,GAAG;gBAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAe,CAAC,CAAC;QAC/D,CAAC,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACxB,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,eAAe;YAAE,OAAO,CAAC,KAAK,CAAC,CAAC;QACzD,OAAO,MAAM,CAAC;IACf,CAAC;IAED,gCAAgC;IAChC,cAAc;QACb,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QACvB,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;QAC1B,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;QACzB,IAAI,CAAC,GAAG,CAAC,sBAAsB,EAAE,CAAC,KAAK,EAAE,CAAC;IAC3C,CAAC;IAED,+EAA+E;IAC/E,uBAAuB;IACvB,+EAA+E;IAE/E;;;OAGG;IACH,eAAe,CAAC,IAAY;QAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;QACzC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,OAAO,KAAK,CAAC;IACd,CAAC;IAED;;;OAGG;IACH,aAAa,CAAC,IAAY;QACzB,4EAA4E;QAC5E,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC1D,IAAI,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,KAAK,IAAI;gBAAE,OAAO,CAAC,CAAC;QAC/C,CAAC;QACD,MAAM,IAAI,YAAY,CAAC,sBAAsB,IAAI,EAAE,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;IACxE,CAAC;IAED;;;;;OAKG;IACH,gBAAgB,CAAC,IAAY;QAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QACvC,MAAM,eAAe,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,KAAK,CAAC;QAE3D,2EAA2E;QAC3E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,eAAe,EAAE,CAAC,EAAE,EAAE,CAAC;YAC1C,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC9B,CAAC;QACD,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,KAAK,CAAC;QACnC,OAAO,KAAK,CAAC;IACd,CAAC;IAED;;;;;;OAMG;IACH,mBAAmB,CAAC,IAAY;QAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QACvC,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,KAAK,GAAG,CAAC,CAAC;QAE3D,6CAA6C;QAC7C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC/B,CAAC;QACD,4CAA4C;QAC5C,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC9B,yDAAyD;QACzD,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,KAAK,GAAG,CAAC,CAAC;QAEvC,sDAAsD;QACtD,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAE3B,OAAO,KAAK,CAAC;IACd,CAAC;IAED,+EAA+E;IAC/E,wCAAwC;IACxC,+EAA+E;IAE/E,sDAAsD;IAC9C,mBAAmB;QAC1B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC;QACrC,IAAI,CAAC,GAAG,CAAC,sBAAsB,EAAE,CAAC,UAAU,EAAE,CAAC;QAC/C,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC,mBAAmB,EAAE,CAAC;IAClD,CAAC;IAED,2CAA2C;IACnC,sBAAsB;QAC7B,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,CAAC;QAC3B,IAAI,CAAC,GAAG,CAAC,sBAAsB,EAAE,CAAC,aAAa,EAAE,CAAC;QAClD,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC,sBAAsB,EAAE,CAAC;IACrD,CAAC;IAED,+DAA+D;IACvD,qBAAqB;QAC5B,MAAM,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,CAAC;QACvC,IAAI,CAAC,GAAG;YAAE,OAAO;QAEjB,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC;YAC7C,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC;YACvD,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;QAElB,KAAK,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC;YAChC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;gBAAE,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;YACrD,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAE,CAAC;YAC/B,KAAK,MAAM,CAAC,IAAI,GAAG;gBAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACjC,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,sBAAsB,EAAE,CAAC,YAAY,EAAE,CAAC;QACjD,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC,qBAAqB,EAAE,CAAC;IACpD,CAAC;CACD"}
|
|
1
|
+
{"version":3,"file":"database-transaction.js","sourceRoot":"","sources":["../../../src/core/database-transaction.ts"],"names":[],"mappings":"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"}
|