@quereus/quereus 2.9.0 → 3.0.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 +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 +169 -92
- 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/pass.d.ts.map +1 -1
- package/dist/src/planner/framework/pass.js +46 -16
- 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 +52 -16
- 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 +40 -13
- 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 +16 -0
- package/dist/src/runtime/foreign-key-actions.d.ts.map +1 -1
- package/dist/src/runtime/foreign-key-actions.js +81 -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.map +1 -1
- package/dist/src/schema/rename-rewriter.js +303 -102
- 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/manager.d.ts.map +1 -1
- package/dist/src/vtab/memory/layer/manager.js +24 -5
- package/dist/src/vtab/memory/layer/manager.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
|
@@ -1,13 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Global assertion evaluation for deferred constraint checking.
|
|
3
3
|
*
|
|
4
|
-
* This module handles the evaluation of CREATE ASSERTION constraints at
|
|
5
|
-
* commit time. It optimizes assertion checking by:
|
|
4
|
+
* This module handles the evaluation of CREATE ASSERTION constraints at
|
|
5
|
+
* transaction commit time. It optimizes assertion checking by:
|
|
6
6
|
* - Only evaluating assertions impacted by changed tables
|
|
7
|
-
* - Caching compiled plans and
|
|
7
|
+
* - Caching compiled plans, classifications, and residual variants across commits
|
|
8
8
|
* - Invalidating cached plans on schema changes
|
|
9
|
-
* -
|
|
10
|
-
*
|
|
9
|
+
* - Driving per-binding execution through the reusable `DeltaExecutor` kernel
|
|
10
|
+
*
|
|
11
|
+
* Assertions are the first consumer of `DeltaExecutor`. Materialized views,
|
|
12
|
+
* reactive signals, and triggers will plug in by registering their own
|
|
13
|
+
* `DeltaSubscription`s.
|
|
11
14
|
*/
|
|
12
15
|
import { QuereusError } from '../common/errors.js';
|
|
13
16
|
import { StatusCode } from '../common/types.js';
|
|
@@ -18,11 +21,12 @@ import { Scheduler } from '../runtime/scheduler.js';
|
|
|
18
21
|
import { RowContextMap } from '../runtime/context-helpers.js';
|
|
19
22
|
import { BlockNode } from '../planner/nodes/block.js';
|
|
20
23
|
import { FilterNode } from '../planner/nodes/filter.js';
|
|
21
|
-
import { BinaryOpNode } from '../planner/nodes/scalar.js';
|
|
24
|
+
import { BinaryOpNode, UnaryOpNode } from '../planner/nodes/scalar.js';
|
|
22
25
|
import { ParameterReferenceNode, ColumnReferenceNode, TableReferenceNode } from '../planner/nodes/reference.js';
|
|
23
26
|
import { EmissionContext } from '../runtime/emission-context.js';
|
|
24
27
|
import { isAsyncIterable } from '../runtime/utils.js';
|
|
25
|
-
import {
|
|
28
|
+
import { extractBindings } from '../planner/analysis/binding-extractor.js';
|
|
29
|
+
import { DeltaExecutor } from '../runtime/delta-executor.js';
|
|
26
30
|
const log = createLogger('core:assertions');
|
|
27
31
|
/** Maximum number of violating rows to include in error messages */
|
|
28
32
|
const MAX_VIOLATION_SAMPLES = 5;
|
|
@@ -30,11 +34,11 @@ const MAX_VIOLATION_SAMPLES = 5;
|
|
|
30
34
|
* Evaluates global assertions (CREATE ASSERTION) at transaction commit time.
|
|
31
35
|
*
|
|
32
36
|
* Assertions are evaluated only when the tables they reference have been modified.
|
|
33
|
-
* The evaluator uses
|
|
34
|
-
* checked per-row
|
|
37
|
+
* The evaluator uses binding analysis to determine whether assertions can be
|
|
38
|
+
* checked per-row, per-group, or require a full violation query.
|
|
35
39
|
*
|
|
36
|
-
* Compiled plans are cached and invalidated on schema
|
|
37
|
-
* re-parsing/re-planning on every commit.
|
|
40
|
+
* Compiled plans and residual variants are cached and invalidated on schema
|
|
41
|
+
* changes to avoid re-parsing/re-planning on every commit.
|
|
38
42
|
*/
|
|
39
43
|
export class AssertionEvaluator {
|
|
40
44
|
ctx;
|
|
@@ -44,8 +48,21 @@ export class AssertionEvaluator {
|
|
|
44
48
|
schemaGeneration = 0;
|
|
45
49
|
/** Unsubscribe function for schema change listener */
|
|
46
50
|
unsubscribeSchemaChanges = null;
|
|
51
|
+
/** The shared delta dispatcher */
|
|
52
|
+
executor;
|
|
47
53
|
constructor(ctx) {
|
|
48
54
|
this.ctx = ctx;
|
|
55
|
+
const executorCtx = {
|
|
56
|
+
getChangedBaseTables: () => ctx.getChangedBaseTables(),
|
|
57
|
+
getChangedTuples: (base, cols, pk) => ctx.getChangedTuples(base, cols, pk),
|
|
58
|
+
getRowCount: (base) => {
|
|
59
|
+
const [schemaName, tableName] = base.split('.');
|
|
60
|
+
const table = ctx._findTable(tableName, schemaName);
|
|
61
|
+
return table?.estimatedRows;
|
|
62
|
+
},
|
|
63
|
+
deltaPerRowFallbackRatio: ctx.optimizer.tuning.deltaPerRowFallbackRatio,
|
|
64
|
+
};
|
|
65
|
+
this.executor = new DeltaExecutor(executorCtx);
|
|
49
66
|
this.subscribeToSchemaChanges();
|
|
50
67
|
}
|
|
51
68
|
subscribeToSchemaChanges() {
|
|
@@ -59,7 +76,12 @@ export class AssertionEvaluator {
|
|
|
59
76
|
}
|
|
60
77
|
/** Remove an assertion from the plan cache (called on DROP ASSERTION) */
|
|
61
78
|
invalidateAssertion(name) {
|
|
62
|
-
|
|
79
|
+
const key = name.toLowerCase();
|
|
80
|
+
const cached = this.cache.get(key);
|
|
81
|
+
if (cached) {
|
|
82
|
+
this.releaseCached(cached);
|
|
83
|
+
this.cache.delete(key);
|
|
84
|
+
}
|
|
63
85
|
}
|
|
64
86
|
/** Unsubscribe from schema changes and clear cached plans */
|
|
65
87
|
dispose() {
|
|
@@ -67,11 +89,24 @@ export class AssertionEvaluator {
|
|
|
67
89
|
this.unsubscribeSchemaChanges();
|
|
68
90
|
this.unsubscribeSchemaChanges = null;
|
|
69
91
|
}
|
|
92
|
+
for (const cached of this.cache.values()) {
|
|
93
|
+
this.releaseCached(cached);
|
|
94
|
+
}
|
|
70
95
|
this.cache.clear();
|
|
96
|
+
this.executor.disposeAll();
|
|
97
|
+
}
|
|
98
|
+
releaseCached(cached) {
|
|
99
|
+
cached.subscriptionDisposer();
|
|
100
|
+
for (const d of cached.captureDisposers)
|
|
101
|
+
d();
|
|
102
|
+
cached.captureDisposers.length = 0;
|
|
71
103
|
}
|
|
72
104
|
/**
|
|
73
|
-
* Run all global assertions
|
|
74
|
-
*
|
|
105
|
+
* Run all global assertions impacted by changes in the current transaction.
|
|
106
|
+
* The DeltaExecutor walks all live subscriptions; assertion subscriptions
|
|
107
|
+
* dispatch their own residual scheduler per binding tuple.
|
|
108
|
+
*
|
|
109
|
+
* @throws QuereusError with CONSTRAINT status if any assertion is violated.
|
|
75
110
|
*/
|
|
76
111
|
async runGlobalAssertions() {
|
|
77
112
|
const assertions = this.ctx.schemaManager.getAllAssertions();
|
|
@@ -80,9 +115,23 @@ export class AssertionEvaluator {
|
|
|
80
115
|
const changedBases = this.ctx.getChangedBaseTables();
|
|
81
116
|
if (changedBases.size === 0)
|
|
82
117
|
return;
|
|
118
|
+
// Ensure every assertion is compiled (registers its subscription on first
|
|
119
|
+
// touch). Subsequent commits reuse the cached subscription unless schema
|
|
120
|
+
// has changed.
|
|
121
|
+
for (const assertion of assertions) {
|
|
122
|
+
this.getOrCompilePlan(assertion);
|
|
123
|
+
}
|
|
124
|
+
// Assertions with no table dependencies (e.g. CHECK (1 = 0)) must run on
|
|
125
|
+
// every commit regardless of what changed — the kernel skips them because
|
|
126
|
+
// it dispatches on dependency overlap. Handle them directly here.
|
|
83
127
|
for (const assertion of assertions) {
|
|
84
|
-
|
|
128
|
+
const cached = this.cache.get(assertion.name.toLowerCase());
|
|
129
|
+
if (cached && cached.baseTablesInPlan.size === 0) {
|
|
130
|
+
await this.executeViolationOnce(assertion.name, assertion.violationSql);
|
|
131
|
+
}
|
|
85
132
|
}
|
|
133
|
+
// Kernel walks all live subscriptions; assertions throw on violation.
|
|
134
|
+
await this.executor.runAll();
|
|
86
135
|
}
|
|
87
136
|
getOrCompilePlan(assertion) {
|
|
88
137
|
const key = assertion.name.toLowerCase();
|
|
@@ -90,6 +139,9 @@ export class AssertionEvaluator {
|
|
|
90
139
|
if (existing && existing.schemaGeneration === this.schemaGeneration) {
|
|
91
140
|
return existing;
|
|
92
141
|
}
|
|
142
|
+
if (existing) {
|
|
143
|
+
this.releaseCached(existing);
|
|
144
|
+
}
|
|
93
145
|
log('Compiling assertion plan for %s (generation %d)', assertion.name, this.schemaGeneration);
|
|
94
146
|
const parser = new Parser();
|
|
95
147
|
let ast;
|
|
@@ -100,100 +152,139 @@ export class AssertionEvaluator {
|
|
|
100
152
|
const error = err instanceof Error ? err : new Error(String(err));
|
|
101
153
|
throw new QuereusError(`Failed to parse deferred assertion '${assertion.name}': ${error.message}`, StatusCode.INTERNAL, error);
|
|
102
154
|
}
|
|
155
|
+
// Suppress optimizer-side assertion-hoisting throughout assertion plan
|
|
156
|
+
// compilation. Otherwise the hoist would let the optimizer fold this
|
|
157
|
+
// assertion's own violation query to empty (the assertion would prove
|
|
158
|
+
// its own non-violation), defeating commit-time enforcement.
|
|
159
|
+
// See `planner/analysis/assertion-hoist-cache.ts`.
|
|
160
|
+
return this.ctx.schemaManager.withSuppressedAssertionHoist(() => this.compileUnderSuppression(assertion, ast, key));
|
|
161
|
+
}
|
|
162
|
+
compileUnderSuppression(assertion, ast, key) {
|
|
103
163
|
const { plan } = this.ctx._buildPlan([ast]);
|
|
104
164
|
const analyzed = this.ctx.optimizer.optimizeForAnalysis(plan, this.ctx);
|
|
105
|
-
const
|
|
165
|
+
const bindings = extractBindings(analyzed);
|
|
166
|
+
// Collect baseTables and PK indices per base.
|
|
106
167
|
const baseTablesInPlan = new Set();
|
|
107
|
-
|
|
108
|
-
const
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
168
|
+
const pkIndicesByBase = new Map();
|
|
169
|
+
for (const base of bindings.relationToBase.values()) {
|
|
170
|
+
baseTablesInPlan.add(base);
|
|
171
|
+
if (!pkIndicesByBase.has(base)) {
|
|
172
|
+
const [schemaName, tableName] = base.split('.');
|
|
173
|
+
const table = this.ctx._findTable(tableName, schemaName);
|
|
174
|
+
if (table) {
|
|
175
|
+
pkIndicesByBase.set(base, table.primaryKeyDefinition.map(d => d.index));
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
// Register projection capture for any binding whose key columns aren't
|
|
180
|
+
// already covered by the table's PK. PK columns are always captured
|
|
181
|
+
// implicitly; 'row' bindings normally bind on PK and need nothing extra,
|
|
182
|
+
// but a 'row' binding picked from a covered non-PK unique key (and any
|
|
183
|
+
// 'group' binding) requires its non-PK columns to be retained on every
|
|
184
|
+
// change.
|
|
185
|
+
const captureDisposers = [];
|
|
186
|
+
const extraByBase = new Map();
|
|
187
|
+
const recordExtras = (base, cols) => {
|
|
188
|
+
const pk = pkIndicesByBase.get(base);
|
|
189
|
+
const pkSet = pk ? new Set(pk) : new Set();
|
|
190
|
+
for (const c of cols) {
|
|
191
|
+
if (pkSet.has(c))
|
|
192
|
+
continue;
|
|
193
|
+
let set = extraByBase.get(base);
|
|
194
|
+
if (!set) {
|
|
195
|
+
set = new Set();
|
|
196
|
+
extraByBase.set(base, set);
|
|
197
|
+
}
|
|
198
|
+
set.add(c);
|
|
199
|
+
}
|
|
200
|
+
};
|
|
201
|
+
for (const [relKey, mode] of bindings.perRelation) {
|
|
202
|
+
const base = bindings.relationToBase.get(relKey);
|
|
115
203
|
if (!base)
|
|
116
204
|
continue;
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
205
|
+
if (mode.kind === 'row') {
|
|
206
|
+
recordExtras(base, mode.keyColumns);
|
|
207
|
+
}
|
|
208
|
+
else if (mode.kind === 'group') {
|
|
209
|
+
recordExtras(base, mode.groupColumns);
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
for (const [base, extra] of extraByBase) {
|
|
213
|
+
captureDisposers.push(this.ctx.registerCaptureSpec(base, { extraColumns: extra }));
|
|
214
|
+
}
|
|
215
|
+
// Pre-compile per-relation residuals for 'row' and 'group' bindings.
|
|
216
|
+
const residualsByRelation = new Map();
|
|
217
|
+
for (const [relKey, mode] of bindings.perRelation) {
|
|
218
|
+
if (mode.kind === 'global')
|
|
120
219
|
continue;
|
|
121
|
-
const
|
|
122
|
-
const
|
|
220
|
+
const bindCols = mode.kind === 'row' ? mode.keyColumns : mode.groupColumns;
|
|
221
|
+
const paramPrefix = mode.kind === 'row' ? 'pk' : 'gk';
|
|
222
|
+
const rewritten = this.injectKeyFilter(analyzed, relKey, bindCols, paramPrefix);
|
|
123
223
|
const optimizedPlan = this.ctx.optimizer.optimize(rewritten, this.ctx);
|
|
124
224
|
const emissionContext = new EmissionContext(this.ctx);
|
|
125
225
|
const instruction = emitPlanNode(optimizedPlan, emissionContext);
|
|
126
226
|
const scheduler = new Scheduler(instruction);
|
|
127
|
-
|
|
227
|
+
residualsByRelation.set(relKey, {
|
|
228
|
+
instruction,
|
|
229
|
+
scheduler,
|
|
230
|
+
bindColumns: [...bindCols],
|
|
231
|
+
paramPrefix,
|
|
232
|
+
});
|
|
128
233
|
}
|
|
129
234
|
const cached = {
|
|
130
235
|
analyzedPlan: analyzed,
|
|
131
|
-
|
|
132
|
-
relationKeyToBase,
|
|
236
|
+
bindings,
|
|
133
237
|
baseTablesInPlan,
|
|
134
|
-
|
|
238
|
+
pkIndicesByBase,
|
|
239
|
+
residualsByRelation,
|
|
240
|
+
captureDisposers,
|
|
135
241
|
schemaGeneration: this.schemaGeneration,
|
|
242
|
+
subscriptionDisposer: () => { },
|
|
136
243
|
};
|
|
244
|
+
const subscription = this.buildSubscription(assertion, cached);
|
|
245
|
+
cached.subscriptionDisposer = this.executor.register(subscription);
|
|
137
246
|
this.cache.set(key, cached);
|
|
138
247
|
return cached;
|
|
139
248
|
}
|
|
140
|
-
|
|
141
|
-
const
|
|
142
|
-
|
|
143
|
-
const
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
249
|
+
buildSubscription(assertion, cached) {
|
|
250
|
+
const id = `assertion:${assertion.name}`;
|
|
251
|
+
const bindingsForExecutor = new Map(cached.bindings.perRelation);
|
|
252
|
+
const relationToBase = new Map(cached.bindings.relationToBase);
|
|
253
|
+
const pkIndicesByBase = new Map(cached.pkIndicesByBase);
|
|
254
|
+
const apply = async (input) => {
|
|
255
|
+
// Per-binding dispatch for 'row'/'group' relations.
|
|
256
|
+
for (const [relKey, tuples] of input.perRelationTuples) {
|
|
257
|
+
const residual = cached.residualsByRelation.get(relKey);
|
|
258
|
+
if (!residual) {
|
|
259
|
+
// Defensive: no residual compiled — run the full violation
|
|
260
|
+
// query once to maintain correctness.
|
|
261
|
+
await this.executeViolationOnce(assertion.name, assertion.violationSql);
|
|
262
|
+
return;
|
|
150
263
|
}
|
|
264
|
+
await this.executeResidualPerTuple(assertion.name, residual, tuples);
|
|
151
265
|
}
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
// If any changed base appears as a global instance, run full violation query once
|
|
156
|
-
let requiresGlobal = false;
|
|
157
|
-
for (const [relKey, klass] of cached.classifications) {
|
|
158
|
-
if (klass === 'global') {
|
|
159
|
-
const base = cached.relationKeyToBase.get(relKey);
|
|
160
|
-
if (base && changedBases.has(base)) {
|
|
161
|
-
requiresGlobal = true;
|
|
162
|
-
break;
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
if (requiresGlobal) {
|
|
167
|
-
await this.executeViolationOnce(assertion.name, assertion.violationSql);
|
|
168
|
-
return;
|
|
169
|
-
}
|
|
170
|
-
// Collect row-specific references that correspond to changed bases
|
|
171
|
-
const rowSpecificChanged = [];
|
|
172
|
-
for (const [relKey, klass] of cached.classifications) {
|
|
173
|
-
if (klass !== 'row')
|
|
174
|
-
continue;
|
|
175
|
-
const base = cached.relationKeyToBase.get(relKey);
|
|
176
|
-
if (base && changedBases.has(base)) {
|
|
177
|
-
rowSpecificChanged.push({ relKey, base });
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
|
-
if (rowSpecificChanged.length === 0) {
|
|
181
|
-
await this.executeViolationOnce(assertion.name, assertion.violationSql);
|
|
182
|
-
return;
|
|
183
|
-
}
|
|
184
|
-
// Execute parameterized variants per changed key for each row-specific reference
|
|
185
|
-
for (const { relKey, base } of rowSpecificChanged) {
|
|
186
|
-
const artifacts = cached.rowSpecificArtifacts.get(relKey);
|
|
187
|
-
if (!artifacts) {
|
|
188
|
-
// Fallback to global if artifacts weren't compiled
|
|
266
|
+
// Global re-evaluation: run once if any relation needs it. (Multiple
|
|
267
|
+
// 'global' relations for one assertion still only need one run.)
|
|
268
|
+
if (input.globalRelations.size > 0) {
|
|
189
269
|
await this.executeViolationOnce(assertion.name, assertion.violationSql);
|
|
190
|
-
return;
|
|
191
270
|
}
|
|
192
|
-
|
|
193
|
-
|
|
271
|
+
};
|
|
272
|
+
return {
|
|
273
|
+
id,
|
|
274
|
+
dependencies: cached.baseTablesInPlan,
|
|
275
|
+
bindings: bindingsForExecutor,
|
|
276
|
+
relationToBase,
|
|
277
|
+
pkIndicesByBase,
|
|
278
|
+
apply,
|
|
279
|
+
dispose: () => { },
|
|
280
|
+
};
|
|
194
281
|
}
|
|
195
282
|
async executeViolationOnce(assertionName, sql) {
|
|
283
|
+
// `prepare()` defers planning; force compile under hoist-suppression so
|
|
284
|
+
// the optimizer can't fold this assertion's own violation query to
|
|
285
|
+
// empty. See `getOrCompilePlan`.
|
|
196
286
|
const stmt = this.ctx.prepare(sql);
|
|
287
|
+
this.ctx.schemaManager.withSuppressedAssertionHoist(() => { stmt.compile(); });
|
|
197
288
|
try {
|
|
198
289
|
const violatingRows = [];
|
|
199
290
|
// Use _iterateRowsRaw() to avoid transaction management - we're already inside
|
|
@@ -211,15 +302,14 @@ export class AssertionEvaluator {
|
|
|
211
302
|
await stmt.finalize();
|
|
212
303
|
}
|
|
213
304
|
}
|
|
214
|
-
async
|
|
215
|
-
|
|
216
|
-
if (changedKeyTuples.length === 0)
|
|
305
|
+
async executeResidualPerTuple(assertionName, artifacts, tuples) {
|
|
306
|
+
if (tuples.length === 0)
|
|
217
307
|
return;
|
|
218
|
-
const { scheduler,
|
|
219
|
-
for (const tuple of
|
|
308
|
+
const { scheduler, paramPrefix } = artifacts;
|
|
309
|
+
for (const tuple of tuples) {
|
|
220
310
|
const params = {};
|
|
221
|
-
for (let i = 0; i <
|
|
222
|
-
params[
|
|
311
|
+
for (let i = 0; i < tuple.length; i++) {
|
|
312
|
+
params[`${paramPrefix}${i}`] = tuple[i];
|
|
223
313
|
}
|
|
224
314
|
const runtimeCtx = {
|
|
225
315
|
db: this.ctx,
|
|
@@ -246,25 +336,29 @@ export class AssertionEvaluator {
|
|
|
246
336
|
}
|
|
247
337
|
return new QuereusError(message, StatusCode.CONSTRAINT);
|
|
248
338
|
}
|
|
249
|
-
|
|
250
|
-
|
|
339
|
+
/**
|
|
340
|
+
* Inject a key-equality filter onto the `TableReferenceNode` matching
|
|
341
|
+
* `targetRelationKey`. Used for both `'row'` (with PK columns + 'pk' prefix)
|
|
342
|
+
* and `'group'` (with group-key columns + 'gk' prefix).
|
|
343
|
+
*/
|
|
344
|
+
injectKeyFilter(block, targetRelationKey, keyColumns, paramPrefix) {
|
|
345
|
+
const newStatements = block.getChildren().map(stmt => this.rewriteForKeyFilter(stmt, targetRelationKey, keyColumns, paramPrefix));
|
|
251
346
|
if (newStatements.every((s, i) => s === block.getChildren()[i]))
|
|
252
347
|
return block;
|
|
253
348
|
return new BlockNode(block.scope, newStatements, block.parameters);
|
|
254
349
|
}
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
const maybe = this.tryWrapTableReference(node, targetRelationKey, pkIndices);
|
|
350
|
+
rewriteForKeyFilter(node, targetRelationKey, keyColumns, paramPrefix) {
|
|
351
|
+
const maybe = this.tryWrapTableReference(node, targetRelationKey, keyColumns, paramPrefix);
|
|
258
352
|
if (maybe)
|
|
259
353
|
return maybe;
|
|
260
354
|
const originalChildren = node.getChildren();
|
|
261
355
|
if (!originalChildren || originalChildren.length === 0)
|
|
262
356
|
return node;
|
|
263
|
-
const rewrittenChildren = originalChildren.map(child => this.
|
|
357
|
+
const rewrittenChildren = originalChildren.map(child => this.rewriteForKeyFilter(child, targetRelationKey, keyColumns, paramPrefix));
|
|
264
358
|
const changed = rewrittenChildren.some((c, i) => c !== originalChildren[i]);
|
|
265
359
|
return changed ? node.withChildren(rewrittenChildren) : node;
|
|
266
360
|
}
|
|
267
|
-
tryWrapTableReference(node, targetRelationKey,
|
|
361
|
+
tryWrapTableReference(node, targetRelationKey, keyColumns, paramPrefix) {
|
|
268
362
|
if (!(node instanceof TableReferenceNode))
|
|
269
363
|
return null;
|
|
270
364
|
const tableSchema = node.tableSchema;
|
|
@@ -274,7 +368,6 @@ export class AssertionEvaluator {
|
|
|
274
368
|
const relKey = `${relName}#${node.id ?? 'unknown'}`;
|
|
275
369
|
if (relKey !== targetRelationKey)
|
|
276
370
|
return null;
|
|
277
|
-
// Build predicate: AND(col_pk_i = :pk{i}) for all PK columns
|
|
278
371
|
const relational = node;
|
|
279
372
|
const scope = relational.scope;
|
|
280
373
|
const attributes = relational.getAttributes();
|
|
@@ -284,35 +377,46 @@ export class AssertionEvaluator {
|
|
|
284
377
|
return new ColumnReferenceNode(scope, expr, attr.type, attr.id, colIndex);
|
|
285
378
|
};
|
|
286
379
|
const makeParamRef = (i, type) => {
|
|
287
|
-
const
|
|
288
|
-
|
|
380
|
+
const name = `${paramPrefix}${i}`;
|
|
381
|
+
const pexpr = { type: 'parameter', name };
|
|
382
|
+
return new ParameterReferenceNode(scope, pexpr, name, type);
|
|
289
383
|
};
|
|
384
|
+
// Per-column NULL safety: `col = :param` evaluates UNKNOWN when either
|
|
385
|
+
// side is NULL, so a residual built from plain equalities would silently
|
|
386
|
+
// skip change tuples whose key columns are NULL and miss real violations.
|
|
387
|
+
// For each nullable key column emit the NULL-safe form:
|
|
388
|
+
// (col IS NULL AND :prefix_i IS NULL) OR col = :prefix_i
|
|
389
|
+
// For NOT NULL columns (typically PK columns on the 'row' path) keep
|
|
390
|
+
// the simpler `col = :prefix_i` form to avoid disjunctive predicates
|
|
391
|
+
// that could regress index-driven access.
|
|
290
392
|
let predicate = null;
|
|
291
|
-
for (let i = 0; i <
|
|
292
|
-
const colIdx =
|
|
393
|
+
for (let i = 0; i < keyColumns.length; i++) {
|
|
394
|
+
const colIdx = keyColumns[i];
|
|
395
|
+
const colNullable = attributes[colIdx].type.nullable === true;
|
|
293
396
|
const left = makeColumnRef(colIdx);
|
|
294
397
|
const right = makeParamRef(i, attributes[colIdx].type);
|
|
295
|
-
const
|
|
296
|
-
const eqNode = new BinaryOpNode(scope,
|
|
398
|
+
const eqAst = { type: 'binary', operator: '=', left: left.expression, right: right.expression };
|
|
399
|
+
const eqNode = new BinaryOpNode(scope, eqAst, left, right);
|
|
400
|
+
let conjunct = eqNode;
|
|
401
|
+
if (colNullable) {
|
|
402
|
+
const leftForNullCheck = makeColumnRef(colIdx);
|
|
403
|
+
const rightForNullCheck = makeParamRef(i, attributes[colIdx].type);
|
|
404
|
+
const leftIsNullAst = { type: 'unary', operator: 'IS NULL', expr: leftForNullCheck.expression };
|
|
405
|
+
const rightIsNullAst = { type: 'unary', operator: 'IS NULL', expr: rightForNullCheck.expression };
|
|
406
|
+
const leftIsNull = new UnaryOpNode(scope, leftIsNullAst, leftForNullCheck);
|
|
407
|
+
const rightIsNull = new UnaryOpNode(scope, rightIsNullAst, rightForNullCheck);
|
|
408
|
+
const bothNullAst = { type: 'binary', operator: 'AND', left: leftIsNull.expression, right: rightIsNull.expression };
|
|
409
|
+
const bothNull = new BinaryOpNode(scope, bothNullAst, leftIsNull, rightIsNull);
|
|
410
|
+
const orAst = { type: 'binary', operator: 'OR', left: bothNull.expression, right: eqNode.expression };
|
|
411
|
+
conjunct = new BinaryOpNode(scope, orAst, bothNull, eqNode);
|
|
412
|
+
}
|
|
297
413
|
predicate = predicate
|
|
298
|
-
? new BinaryOpNode(scope, { type: 'binary', operator: 'AND', left: predicate.expression, right:
|
|
299
|
-
:
|
|
414
|
+
? new BinaryOpNode(scope, { type: 'binary', operator: 'AND', left: predicate.expression, right: conjunct.expression }, predicate, conjunct)
|
|
415
|
+
: conjunct;
|
|
300
416
|
}
|
|
301
417
|
if (!predicate)
|
|
302
418
|
return null;
|
|
303
419
|
return new FilterNode(scope, relational, predicate);
|
|
304
420
|
}
|
|
305
|
-
collectTables(node, relToBase, bases) {
|
|
306
|
-
for (const child of node.getChildren()) {
|
|
307
|
-
this.collectTables(child, relToBase, bases);
|
|
308
|
-
}
|
|
309
|
-
if (node instanceof TableReferenceNode) {
|
|
310
|
-
const schema = node.tableSchema;
|
|
311
|
-
const baseName = `${schema.schemaName}.${schema.name}`.toLowerCase();
|
|
312
|
-
bases.add(baseName);
|
|
313
|
-
const relKey = `${baseName}#${node.id ?? 'unknown'}`;
|
|
314
|
-
relToBase.set(relKey, baseName);
|
|
315
|
-
}
|
|
316
|
-
}
|
|
317
421
|
}
|
|
318
422
|
//# sourceMappingURL=database-assertions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database-assertions.js","sourceRoot":"","sources":["../../../src/core/database-assertions.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"database-assertions.js","sourceRoot":"","sources":["../../../src/core/database-assertions.ts"],"names":[],"mappings":"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"}
|