@quereus/quereus 4.5.0 → 4.6.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 +4 -3
- package/dist/src/core/database-events.d.ts +99 -1
- package/dist/src/core/database-events.d.ts.map +1 -1
- package/dist/src/core/database-events.js +219 -3
- package/dist/src/core/database-events.js.map +1 -1
- package/dist/src/core/database-materialized-views-plan-builders.d.ts.map +1 -1
- package/dist/src/core/database-materialized-views-plan-builders.js +29 -2
- package/dist/src/core/database-materialized-views-plan-builders.js.map +1 -1
- package/dist/src/core/database-transaction.d.ts +9 -0
- package/dist/src/core/database-transaction.d.ts.map +1 -1
- package/dist/src/core/database-transaction.js +9 -0
- package/dist/src/core/database-transaction.js.map +1 -1
- package/dist/src/core/database.d.ts +7 -1
- package/dist/src/core/database.d.ts.map +1 -1
- package/dist/src/core/database.js +20 -5
- package/dist/src/core/database.js.map +1 -1
- package/dist/src/func/builtins/aggregate.js +11 -11
- package/dist/src/func/builtins/aggregate.js.map +1 -1
- package/dist/src/func/builtins/builtin-window-functions.d.ts.map +1 -1
- package/dist/src/func/builtins/builtin-window-functions.js +15 -85
- package/dist/src/func/builtins/builtin-window-functions.js.map +1 -1
- package/dist/src/func/builtins/conversion.d.ts.map +1 -1
- package/dist/src/func/builtins/conversion.js +10 -9
- package/dist/src/func/builtins/conversion.js.map +1 -1
- package/dist/src/func/builtins/datetime.d.ts.map +1 -1
- package/dist/src/func/builtins/datetime.js +28 -10
- package/dist/src/func/builtins/datetime.js.map +1 -1
- package/dist/src/func/builtins/json.d.ts.map +1 -1
- package/dist/src/func/builtins/json.js +23 -17
- package/dist/src/func/builtins/json.js.map +1 -1
- package/dist/src/func/builtins/mutation.js +2 -2
- package/dist/src/func/builtins/mutation.js.map +1 -1
- package/dist/src/func/builtins/return-types.d.ts +327 -0
- package/dist/src/func/builtins/return-types.d.ts.map +1 -0
- package/dist/src/func/builtins/return-types.js +43 -0
- package/dist/src/func/builtins/return-types.js.map +1 -0
- package/dist/src/func/builtins/scalar.d.ts.map +1 -1
- package/dist/src/func/builtins/scalar.js +138 -71
- package/dist/src/func/builtins/scalar.js.map +1 -1
- package/dist/src/func/builtins/schema.d.ts.map +1 -1
- package/dist/src/func/builtins/schema.js +11 -3
- package/dist/src/func/builtins/schema.js.map +1 -1
- package/dist/src/func/builtins/string.d.ts.map +1 -1
- package/dist/src/func/builtins/string.js +4 -2
- package/dist/src/func/builtins/string.js.map +1 -1
- package/dist/src/func/builtins/timespan.d.ts +3 -0
- package/dist/src/func/builtins/timespan.d.ts.map +1 -1
- package/dist/src/func/builtins/timespan.js +15 -11
- package/dist/src/func/builtins/timespan.js.map +1 -1
- package/dist/src/func/registration.d.ts +35 -1
- package/dist/src/func/registration.d.ts.map +1 -1
- package/dist/src/func/registration.js +235 -41
- package/dist/src/func/registration.js.map +1 -1
- package/dist/src/index.d.ts +11 -4
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +12 -3
- package/dist/src/index.js.map +1 -1
- package/dist/src/parser/parser.d.ts +46 -0
- package/dist/src/parser/parser.d.ts.map +1 -1
- package/dist/src/parser/parser.js +160 -44
- package/dist/src/parser/parser.js.map +1 -1
- package/dist/src/planner/analysis/check-extraction.d.ts.map +1 -1
- package/dist/src/planner/analysis/check-extraction.js +37 -4
- package/dist/src/planner/analysis/check-extraction.js.map +1 -1
- package/dist/src/planner/analysis/comparison-collation.d.ts +20 -22
- package/dist/src/planner/analysis/comparison-collation.d.ts.map +1 -1
- package/dist/src/planner/analysis/comparison-collation.js +29 -26
- package/dist/src/planner/analysis/comparison-collation.js.map +1 -1
- package/dist/src/planner/analysis/constraint-extractor.d.ts +0 -7
- package/dist/src/planner/analysis/constraint-extractor.d.ts.map +1 -1
- package/dist/src/planner/analysis/constraint-extractor.js +59 -59
- package/dist/src/planner/analysis/constraint-extractor.js.map +1 -1
- package/dist/src/planner/building/alter-table.d.ts.map +1 -1
- package/dist/src/planner/building/alter-table.js +65 -27
- package/dist/src/planner/building/alter-table.js.map +1 -1
- package/dist/src/planner/building/coercion.d.ts +21 -45
- package/dist/src/planner/building/coercion.d.ts.map +1 -1
- package/dist/src/planner/building/coercion.js +42 -91
- package/dist/src/planner/building/coercion.js.map +1 -1
- package/dist/src/planner/building/expression.d.ts +17 -0
- package/dist/src/planner/building/expression.d.ts.map +1 -1
- package/dist/src/planner/building/expression.js +28 -17
- package/dist/src/planner/building/expression.js.map +1 -1
- package/dist/src/planner/building/function-call.d.ts.map +1 -1
- package/dist/src/planner/building/function-call.js +7 -2
- package/dist/src/planner/building/function-call.js.map +1 -1
- package/dist/src/planner/building/select-aggregates.d.ts +1 -1
- package/dist/src/planner/building/select-aggregates.d.ts.map +1 -1
- package/dist/src/planner/building/select-aggregates.js +53 -2
- package/dist/src/planner/building/select-aggregates.js.map +1 -1
- package/dist/src/planner/building/select-context.d.ts +7 -0
- package/dist/src/planner/building/select-context.d.ts.map +1 -1
- package/dist/src/planner/building/select-context.js +10 -40
- package/dist/src/planner/building/select-context.js.map +1 -1
- package/dist/src/planner/building/select.d.ts +37 -1
- package/dist/src/planner/building/select.d.ts.map +1 -1
- package/dist/src/planner/building/select.js +112 -51
- package/dist/src/planner/building/select.js.map +1 -1
- package/dist/src/planner/cost/conjunct-cost.d.ts +40 -0
- package/dist/src/planner/cost/conjunct-cost.d.ts.map +1 -1
- package/dist/src/planner/cost/conjunct-cost.js +45 -0
- package/dist/src/planner/cost/conjunct-cost.js.map +1 -1
- package/dist/src/planner/cost/index.d.ts +10 -0
- package/dist/src/planner/cost/index.d.ts.map +1 -1
- package/dist/src/planner/cost/index.js +15 -0
- package/dist/src/planner/cost/index.js.map +1 -1
- package/dist/src/planner/nodes/aggregate-node.d.ts +6 -0
- package/dist/src/planner/nodes/aggregate-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/aggregate-node.js +10 -2
- 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 +2 -1
- package/dist/src/planner/nodes/alias-node.js.map +1 -1
- package/dist/src/planner/nodes/alter-table-node.d.ts +24 -8
- package/dist/src/planner/nodes/alter-table-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/alter-table-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 +4 -1
- package/dist/src/planner/nodes/asof-scan-node.js.map +1 -1
- package/dist/src/planner/nodes/asserted-keys-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/asserted-keys-node.js +2 -1
- package/dist/src/planner/nodes/asserted-keys-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 +8 -3
- package/dist/src/planner/nodes/bloom-join-node.js.map +1 -1
- package/dist/src/planner/nodes/cache-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/cache-node.js +2 -1
- package/dist/src/planner/nodes/cache-node.js.map +1 -1
- package/dist/src/planner/nodes/distinct-node.d.ts +6 -0
- package/dist/src/planner/nodes/distinct-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/distinct-node.js +10 -2
- package/dist/src/planner/nodes/distinct-node.js.map +1 -1
- package/dist/src/planner/nodes/eager-prefetch-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/eager-prefetch-node.js +2 -1
- package/dist/src/planner/nodes/eager-prefetch-node.js.map +1 -1
- package/dist/src/planner/nodes/fanout-lookup-join-node.d.ts +5 -0
- package/dist/src/planner/nodes/fanout-lookup-join-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/fanout-lookup-join-node.js +13 -6
- package/dist/src/planner/nodes/fanout-lookup-join-node.js.map +1 -1
- package/dist/src/planner/nodes/filter.d.ts.map +1 -1
- package/dist/src/planner/nodes/filter.js +12 -5
- package/dist/src/planner/nodes/filter.js.map +1 -1
- package/dist/src/planner/nodes/hash-aggregate.d.ts +6 -0
- package/dist/src/planner/nodes/hash-aggregate.d.ts.map +1 -1
- package/dist/src/planner/nodes/hash-aggregate.js +10 -2
- package/dist/src/planner/nodes/hash-aggregate.js.map +1 -1
- package/dist/src/planner/nodes/join-node.d.ts +20 -1
- package/dist/src/planner/nodes/join-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/join-node.js +30 -9
- package/dist/src/planner/nodes/join-node.js.map +1 -1
- package/dist/src/planner/nodes/join-utils.d.ts +21 -0
- package/dist/src/planner/nodes/join-utils.d.ts.map +1 -1
- package/dist/src/planner/nodes/join-utils.js +26 -0
- package/dist/src/planner/nodes/join-utils.js.map +1 -1
- package/dist/src/planner/nodes/key-set-semi-join-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/key-set-semi-join-node.js +5 -1
- package/dist/src/planner/nodes/key-set-semi-join-node.js.map +1 -1
- package/dist/src/planner/nodes/lens-auxiliary-access-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/lens-auxiliary-access-node.js +2 -1
- package/dist/src/planner/nodes/lens-auxiliary-access-node.js.map +1 -1
- package/dist/src/planner/nodes/limit-offset.d.ts +6 -0
- package/dist/src/planner/nodes/limit-offset.d.ts.map +1 -1
- package/dist/src/planner/nodes/limit-offset.js +10 -2
- 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 +8 -3
- package/dist/src/planner/nodes/merge-join-node.js.map +1 -1
- package/dist/src/planner/nodes/ordinal-slice-node.d.ts +5 -0
- package/dist/src/planner/nodes/ordinal-slice-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/ordinal-slice-node.js +9 -2
- package/dist/src/planner/nodes/ordinal-slice-node.js.map +1 -1
- package/dist/src/planner/nodes/plan-node.d.ts +24 -0
- 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 +2 -1
- package/dist/src/planner/nodes/project-node.js.map +1 -1
- package/dist/src/planner/nodes/reference.d.ts.map +1 -1
- package/dist/src/planner/nodes/reference.js +3 -2
- package/dist/src/planner/nodes/reference.js.map +1 -1
- package/dist/src/planner/nodes/retrieve-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/retrieve-node.js +2 -1
- package/dist/src/planner/nodes/retrieve-node.js.map +1 -1
- package/dist/src/planner/nodes/scalar.d.ts.map +1 -1
- package/dist/src/planner/nodes/scalar.js +5 -18
- package/dist/src/planner/nodes/scalar.js.map +1 -1
- package/dist/src/planner/nodes/sort.d.ts.map +1 -1
- package/dist/src/planner/nodes/sort.js +3 -1
- package/dist/src/planner/nodes/sort.js.map +1 -1
- package/dist/src/planner/nodes/stream-aggregate.d.ts +6 -0
- package/dist/src/planner/nodes/stream-aggregate.d.ts.map +1 -1
- package/dist/src/planner/nodes/stream-aggregate.js +10 -2
- package/dist/src/planner/nodes/stream-aggregate.js.map +1 -1
- package/dist/src/planner/nodes/table-access-nodes.d.ts.map +1 -1
- package/dist/src/planner/nodes/table-access-nodes.js +5 -0
- package/dist/src/planner/nodes/table-access-nodes.js.map +1 -1
- package/dist/src/planner/nodes/window-function.d.ts.map +1 -1
- package/dist/src/planner/nodes/window-function.js +8 -0
- package/dist/src/planner/nodes/window-function.js.map +1 -1
- package/dist/src/planner/nodes/window-node.d.ts +1 -1
- package/dist/src/planner/nodes/window-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/window-node.js +3 -1
- package/dist/src/planner/nodes/window-node.js.map +1 -1
- package/dist/src/planner/optimizer.d.ts +9 -1
- package/dist/src/planner/optimizer.d.ts.map +1 -1
- package/dist/src/planner/optimizer.js +77 -6
- package/dist/src/planner/optimizer.js.map +1 -1
- package/dist/src/planner/rules/access/rule-key-set-seek.d.ts.map +1 -1
- package/dist/src/planner/rules/access/rule-key-set-seek.js +3 -68
- package/dist/src/planner/rules/access/rule-key-set-seek.js.map +1 -1
- package/dist/src/planner/rules/access/rule-select-access-path.d.ts +19 -0
- 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 +24 -3
- package/dist/src/planner/rules/access/rule-select-access-path.js.map +1 -1
- package/dist/src/planner/rules/cache/rule-cte-optimization.d.ts.map +1 -1
- package/dist/src/planner/rules/cache/rule-cte-optimization.js +9 -0
- package/dist/src/planner/rules/cache/rule-cte-optimization.js.map +1 -1
- package/dist/src/planner/rules/cache/rule-nested-loop-right-cache.d.ts.map +1 -1
- package/dist/src/planner/rules/cache/rule-nested-loop-right-cache.js +6 -4
- package/dist/src/planner/rules/cache/rule-nested-loop-right-cache.js.map +1 -1
- package/dist/src/planner/rules/join/equi-pair-extractor.d.ts +5 -31
- package/dist/src/planner/rules/join/equi-pair-extractor.d.ts.map +1 -1
- package/dist/src/planner/rules/join/equi-pair-extractor.js +4 -44
- package/dist/src/planner/rules/join/equi-pair-extractor.js.map +1 -1
- package/dist/src/planner/rules/join/index-nested-loop.d.ts +49 -0
- package/dist/src/planner/rules/join/index-nested-loop.d.ts.map +1 -0
- package/dist/src/planner/rules/join/index-nested-loop.js +285 -0
- package/dist/src/planner/rules/join/index-nested-loop.js.map +1 -0
- package/dist/src/planner/rules/join/rule-fanout-batched-outer.js +8 -8
- package/dist/src/planner/rules/join/rule-join-physical-selection.d.ts +10 -4
- package/dist/src/planner/rules/join/rule-join-physical-selection.d.ts.map +1 -1
- package/dist/src/planner/rules/join/rule-join-physical-selection.js +83 -27
- package/dist/src/planner/rules/join/rule-join-physical-selection.js.map +1 -1
- package/dist/src/planner/rules/join/rule-monotonic-merge-join.js +4 -4
- package/dist/src/planner/rules/join/rule-monotonic-merge-join.js.map +1 -1
- package/dist/src/planner/rules/predicate/rule-filter-conjunct-ordering.d.ts +21 -8
- package/dist/src/planner/rules/predicate/rule-filter-conjunct-ordering.d.ts.map +1 -1
- package/dist/src/planner/rules/predicate/rule-filter-conjunct-ordering.js +70 -14
- package/dist/src/planner/rules/predicate/rule-filter-conjunct-ordering.js.map +1 -1
- package/dist/src/planner/rules/predicate/rule-filter-selectivity.d.ts +42 -17
- package/dist/src/planner/rules/predicate/rule-filter-selectivity.d.ts.map +1 -1
- package/dist/src/planner/rules/predicate/rule-filter-selectivity.js +84 -154
- package/dist/src/planner/rules/predicate/rule-filter-selectivity.js.map +1 -1
- package/dist/src/planner/rules/predicate/rule-join-predicate-pushdown.d.ts +73 -0
- package/dist/src/planner/rules/predicate/rule-join-predicate-pushdown.d.ts.map +1 -0
- package/dist/src/planner/rules/predicate/rule-join-predicate-pushdown.js +205 -0
- package/dist/src/planner/rules/predicate/rule-join-predicate-pushdown.js.map +1 -0
- package/dist/src/planner/rules/predicate/rule-predicate-inference-equivalence.d.ts +14 -11
- package/dist/src/planner/rules/predicate/rule-predicate-inference-equivalence.d.ts.map +1 -1
- package/dist/src/planner/rules/predicate/rule-predicate-inference-equivalence.js +21 -85
- package/dist/src/planner/rules/predicate/rule-predicate-inference-equivalence.js.map +1 -1
- package/dist/src/planner/rules/predicate/rule-predicate-pushdown.d.ts +7 -1
- package/dist/src/planner/rules/predicate/rule-predicate-pushdown.d.ts.map +1 -1
- package/dist/src/planner/rules/predicate/rule-predicate-pushdown.js +7 -1
- package/dist/src/planner/rules/predicate/rule-predicate-pushdown.js.map +1 -1
- package/dist/src/planner/rules/shared/access-leaf.d.ts +39 -0
- package/dist/src/planner/rules/shared/access-leaf.d.ts.map +1 -0
- package/dist/src/planner/rules/shared/access-leaf.js +79 -0
- package/dist/src/planner/rules/shared/access-leaf.js.map +1 -0
- package/dist/src/planner/rules/subquery/rule-anti-join-fk-empty.d.ts.map +1 -1
- package/dist/src/planner/rules/subquery/rule-anti-join-fk-empty.js +18 -8
- package/dist/src/planner/rules/subquery/rule-anti-join-fk-empty.js.map +1 -1
- package/dist/src/planner/rules/subquery/rule-semi-join-fk-trivial.d.ts +3 -1
- package/dist/src/planner/rules/subquery/rule-semi-join-fk-trivial.d.ts.map +1 -1
- package/dist/src/planner/rules/subquery/rule-semi-join-fk-trivial.js +27 -10
- package/dist/src/planner/rules/subquery/rule-semi-join-fk-trivial.js.map +1 -1
- package/dist/src/planner/rules/subquery/rule-subquery-decorrelation.d.ts.map +1 -1
- package/dist/src/planner/rules/subquery/rule-subquery-decorrelation.js +69 -11
- package/dist/src/planner/rules/subquery/rule-subquery-decorrelation.js.map +1 -1
- package/dist/src/planner/rules/window/rule-monotonic-window.d.ts +17 -7
- package/dist/src/planner/rules/window/rule-monotonic-window.d.ts.map +1 -1
- package/dist/src/planner/rules/window/rule-monotonic-window.js +124 -87
- package/dist/src/planner/rules/window/rule-monotonic-window.js.map +1 -1
- package/dist/src/planner/scopes/aliased.d.ts.map +1 -1
- package/dist/src/planner/scopes/aliased.js +6 -0
- package/dist/src/planner/scopes/aliased.js.map +1 -1
- package/dist/src/planner/stats/catalog-stats.d.ts +44 -13
- package/dist/src/planner/stats/catalog-stats.d.ts.map +1 -1
- package/dist/src/planner/stats/catalog-stats.js +137 -61
- package/dist/src/planner/stats/catalog-stats.js.map +1 -1
- package/dist/src/planner/stats/conjunct-selectivity.d.ts +48 -0
- package/dist/src/planner/stats/conjunct-selectivity.d.ts.map +1 -0
- package/dist/src/planner/stats/conjunct-selectivity.js +168 -0
- package/dist/src/planner/stats/conjunct-selectivity.js.map +1 -0
- package/dist/src/planner/stats/index.d.ts +22 -3
- package/dist/src/planner/stats/index.d.ts.map +1 -1
- package/dist/src/planner/stats/index.js.map +1 -1
- package/dist/src/planner/stats/table-cardinality.d.ts +28 -0
- package/dist/src/planner/stats/table-cardinality.d.ts.map +1 -0
- package/dist/src/planner/stats/table-cardinality.js +29 -0
- package/dist/src/planner/stats/table-cardinality.js.map +1 -0
- package/dist/src/planner/util/column-origins.d.ts +29 -8
- package/dist/src/planner/util/column-origins.d.ts.map +1 -1
- package/dist/src/planner/util/column-origins.js +74 -14
- package/dist/src/planner/util/column-origins.js.map +1 -1
- package/dist/src/planner/util/fd-utils.d.ts +32 -8
- package/dist/src/planner/util/fd-utils.d.ts.map +1 -1
- package/dist/src/planner/util/fd-utils.js +46 -9
- package/dist/src/planner/util/fd-utils.js.map +1 -1
- package/dist/src/planner/util/ind-utils.d.ts +56 -17
- package/dist/src/planner/util/ind-utils.d.ts.map +1 -1
- package/dist/src/planner/util/ind-utils.js +82 -21
- package/dist/src/planner/util/ind-utils.js.map +1 -1
- package/dist/src/planner/util/key-utils.d.ts +20 -2
- package/dist/src/planner/util/key-utils.d.ts.map +1 -1
- package/dist/src/planner/util/key-utils.js +37 -3
- package/dist/src/planner/util/key-utils.js.map +1 -1
- package/dist/src/planner/util/row-estimates.d.ts +28 -0
- package/dist/src/planner/util/row-estimates.d.ts.map +1 -0
- package/dist/src/planner/util/row-estimates.js +40 -0
- package/dist/src/planner/util/row-estimates.js.map +1 -0
- package/dist/src/planner/util/row-population.d.ts +42 -0
- package/dist/src/planner/util/row-population.d.ts.map +1 -0
- package/dist/src/planner/util/row-population.js +71 -0
- package/dist/src/planner/util/row-population.js.map +1 -0
- package/dist/src/runtime/emit/add-constraint.d.ts.map +1 -1
- package/dist/src/runtime/emit/add-constraint.js +39 -1
- package/dist/src/runtime/emit/add-constraint.js.map +1 -1
- package/dist/src/runtime/emit/aggregate.d.ts.map +1 -1
- package/dist/src/runtime/emit/aggregate.js +4 -4
- package/dist/src/runtime/emit/aggregate.js.map +1 -1
- package/dist/src/runtime/emit/alter-schema-event.d.ts +42 -0
- package/dist/src/runtime/emit/alter-schema-event.d.ts.map +1 -0
- package/dist/src/runtime/emit/alter-schema-event.js +28 -0
- package/dist/src/runtime/emit/alter-schema-event.js.map +1 -0
- package/dist/src/runtime/emit/alter-table.d.ts.map +1 -1
- package/dist/src/runtime/emit/alter-table.js +380 -154
- package/dist/src/runtime/emit/alter-table.js.map +1 -1
- package/dist/src/runtime/emit/analyze.d.ts.map +1 -1
- package/dist/src/runtime/emit/analyze.js +35 -3
- package/dist/src/runtime/emit/analyze.js.map +1 -1
- package/dist/src/runtime/emit/cast.d.ts.map +1 -1
- package/dist/src/runtime/emit/cast.js +4 -19
- package/dist/src/runtime/emit/cast.js.map +1 -1
- package/dist/src/runtime/emit/dml-executor.d.ts.map +1 -1
- package/dist/src/runtime/emit/dml-executor.js +64 -27
- package/dist/src/runtime/emit/dml-executor.js.map +1 -1
- package/dist/src/runtime/emit/drop-index.d.ts.map +1 -1
- package/dist/src/runtime/emit/drop-index.js +4 -3
- package/dist/src/runtime/emit/drop-index.js.map +1 -1
- package/dist/src/runtime/emit/hash-aggregate.d.ts.map +1 -1
- package/dist/src/runtime/emit/hash-aggregate.js +2 -2
- package/dist/src/runtime/emit/hash-aggregate.js.map +1 -1
- package/dist/src/runtime/emit/join.d.ts.map +1 -1
- package/dist/src/runtime/emit/join.js +8 -67
- package/dist/src/runtime/emit/join.js.map +1 -1
- package/dist/src/runtime/emit/key-set-semi-join.d.ts.map +1 -1
- package/dist/src/runtime/emit/key-set-semi-join.js +6 -0
- package/dist/src/runtime/emit/key-set-semi-join.js.map +1 -1
- package/dist/src/runtime/emit/operand-comparator.d.ts +30 -0
- package/dist/src/runtime/emit/operand-comparator.d.ts.map +1 -1
- package/dist/src/runtime/emit/operand-comparator.js +34 -0
- package/dist/src/runtime/emit/operand-comparator.js.map +1 -1
- package/dist/src/runtime/emit/schema-declarative.d.ts.map +1 -1
- package/dist/src/runtime/emit/schema-declarative.js +30 -0
- package/dist/src/runtime/emit/schema-declarative.js.map +1 -1
- package/dist/src/runtime/emit/subquery.d.ts.map +1 -1
- package/dist/src/runtime/emit/subquery.js +153 -52
- package/dist/src/runtime/emit/subquery.js.map +1 -1
- package/dist/src/runtime/emit/window.js +36 -23
- package/dist/src/runtime/emit/window.js.map +1 -1
- package/dist/src/schema/catalog-persistability.d.ts +19 -16
- package/dist/src/schema/catalog-persistability.d.ts.map +1 -1
- package/dist/src/schema/catalog-persistability.js +76 -20
- package/dist/src/schema/catalog-persistability.js.map +1 -1
- package/dist/src/schema/catalog.d.ts +67 -2
- package/dist/src/schema/catalog.d.ts.map +1 -1
- package/dist/src/schema/catalog.js +194 -3
- package/dist/src/schema/catalog.js.map +1 -1
- package/dist/src/schema/column.d.ts +26 -3
- package/dist/src/schema/column.d.ts.map +1 -1
- package/dist/src/schema/column.js.map +1 -1
- package/dist/src/schema/ddl-generator.d.ts.map +1 -1
- package/dist/src/schema/ddl-generator.js +19 -6
- package/dist/src/schema/ddl-generator.js.map +1 -1
- package/dist/src/schema/function.d.ts +32 -1
- package/dist/src/schema/function.d.ts.map +1 -1
- package/dist/src/schema/function.js +10 -2
- package/dist/src/schema/function.js.map +1 -1
- package/dist/src/schema/manager.d.ts +84 -7
- package/dist/src/schema/manager.d.ts.map +1 -1
- package/dist/src/schema/manager.js +153 -53
- package/dist/src/schema/manager.js.map +1 -1
- package/dist/src/schema/schema-differ.d.ts.map +1 -1
- package/dist/src/schema/schema-differ.js +104 -28
- package/dist/src/schema/schema-differ.js.map +1 -1
- package/dist/src/schema/table.d.ts +149 -1
- package/dist/src/schema/table.d.ts.map +1 -1
- package/dist/src/schema/table.js +248 -1
- package/dist/src/schema/table.js.map +1 -1
- package/dist/src/schema/unique-enforcement.d.ts +5 -3
- package/dist/src/schema/unique-enforcement.d.ts.map +1 -1
- package/dist/src/schema/unique-enforcement.js +5 -3
- package/dist/src/schema/unique-enforcement.js.map +1 -1
- package/dist/src/types/builtin-types.d.ts +16 -0
- package/dist/src/types/builtin-types.d.ts.map +1 -1
- package/dist/src/types/builtin-types.js +46 -8
- package/dist/src/types/builtin-types.js.map +1 -1
- package/dist/src/types/cast-semantics.d.ts +42 -0
- package/dist/src/types/cast-semantics.d.ts.map +1 -1
- package/dist/src/types/cast-semantics.js +64 -0
- package/dist/src/types/cast-semantics.js.map +1 -1
- package/dist/src/types/comparison-coercion.d.ts +101 -0
- package/dist/src/types/comparison-coercion.d.ts.map +1 -0
- package/dist/src/types/comparison-coercion.js +162 -0
- package/dist/src/types/comparison-coercion.js.map +1 -0
- package/dist/src/types/index.d.ts +2 -2
- package/dist/src/types/index.d.ts.map +1 -1
- package/dist/src/types/index.js +2 -2
- package/dist/src/types/index.js.map +1 -1
- package/dist/src/types/logical-type.d.ts +7 -0
- package/dist/src/types/logical-type.d.ts.map +1 -1
- package/dist/src/types/logical-type.js.map +1 -1
- package/dist/src/types/validation.d.ts +56 -0
- package/dist/src/types/validation.d.ts.map +1 -1
- package/dist/src/types/validation.js +68 -0
- package/dist/src/types/validation.js.map +1 -1
- package/dist/src/util/coercion.d.ts +8 -0
- package/dist/src/util/coercion.d.ts.map +1 -1
- package/dist/src/util/coercion.js +8 -0
- package/dist/src/util/coercion.js.map +1 -1
- package/dist/src/util/comparison.d.ts +16 -3
- package/dist/src/util/comparison.d.ts.map +1 -1
- package/dist/src/util/comparison.js +21 -5
- package/dist/src/util/comparison.js.map +1 -1
- package/dist/src/util/key-serializer.d.ts +46 -0
- package/dist/src/util/key-serializer.d.ts.map +1 -1
- package/dist/src/util/key-serializer.js +47 -0
- package/dist/src/util/key-serializer.js.map +1 -1
- package/dist/src/util/value-set.d.ts +21 -0
- package/dist/src/util/value-set.d.ts.map +1 -0
- package/dist/src/util/value-set.js +22 -0
- package/dist/src/util/value-set.js.map +1 -0
- package/dist/src/vtab/capabilities.d.ts +1 -1
- package/dist/src/vtab/events.d.ts +5 -1
- package/dist/src/vtab/events.d.ts.map +1 -1
- package/dist/src/vtab/events.js.map +1 -1
- package/dist/src/vtab/memory/layer/alter-column.d.ts +147 -0
- package/dist/src/vtab/memory/layer/alter-column.d.ts.map +1 -0
- package/dist/src/vtab/memory/layer/alter-column.js +214 -0
- package/dist/src/vtab/memory/layer/alter-column.js.map +1 -0
- package/dist/src/vtab/memory/layer/base.d.ts.map +1 -1
- package/dist/src/vtab/memory/layer/base.js +4 -3
- package/dist/src/vtab/memory/layer/base.js.map +1 -1
- package/dist/src/vtab/memory/layer/interface.d.ts +2 -2
- package/dist/src/vtab/memory/layer/interface.d.ts.map +1 -1
- package/dist/src/vtab/memory/layer/manager.d.ts +176 -25
- package/dist/src/vtab/memory/layer/manager.d.ts.map +1 -1
- package/dist/src/vtab/memory/layer/manager.js +572 -495
- package/dist/src/vtab/memory/layer/manager.js.map +1 -1
- package/dist/src/vtab/memory/layer/scan-layer.d.ts.map +1 -1
- package/dist/src/vtab/memory/layer/scan-layer.js +32 -5
- package/dist/src/vtab/memory/layer/scan-layer.js.map +1 -1
- package/dist/src/vtab/memory/layer/transaction.d.ts +101 -15
- package/dist/src/vtab/memory/layer/transaction.d.ts.map +1 -1
- package/dist/src/vtab/memory/layer/transaction.js +133 -45
- package/dist/src/vtab/memory/layer/transaction.js.map +1 -1
- package/dist/src/vtab/memory/module.d.ts.map +1 -1
- package/dist/src/vtab/memory/module.js +2 -1
- package/dist/src/vtab/memory/module.js.map +1 -1
- package/dist/src/vtab/memory/table.d.ts.map +1 -1
- package/dist/src/vtab/memory/table.js +11 -6
- package/dist/src/vtab/memory/table.js.map +1 -1
- package/dist/src/vtab/module.d.ts +51 -21
- package/dist/src/vtab/module.d.ts.map +1 -1
- package/dist/src/vtab/table.d.ts +1 -1
- package/dist/src/vtab/table.js +1 -1
- package/package.json +3 -3
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Schema, type SchemaKind } from './schema.js';
|
|
2
2
|
import type { IntegrityAssertionSchema } from './assertion.js';
|
|
3
3
|
import type { Database } from '../core/database.js';
|
|
4
|
-
import type { TableSchema, ForeignKeyConstraintSchema } from './table.js';
|
|
4
|
+
import type { TableSchema, IndexSchema, ForeignKeyConstraintSchema } from './table.js';
|
|
5
5
|
import type { FunctionSchema } from './function.js';
|
|
6
6
|
import { type SqlValue } from '../common/types.js';
|
|
7
7
|
import type { AnyVirtualTableModule, BaseModuleConfig } from '../vtab/module.js';
|
|
@@ -9,6 +9,7 @@ import type { ViewSchema } from './view.js';
|
|
|
9
9
|
import { type MaintainedTableSchema, type TableDerivation } from './derivation.js';
|
|
10
10
|
import type * as AST from '../parser/ast.js';
|
|
11
11
|
import { SchemaChangeNotifier } from './change-events.js';
|
|
12
|
+
import type { VTableSchemaChangeEvent } from '../vtab/events.js';
|
|
12
13
|
/**
|
|
13
14
|
* One FK that references some parent table, paired with its declaring child
|
|
14
15
|
* table. Entries in the reverse FK index ({@link SchemaManager.getReferencingForeignKeys});
|
|
@@ -19,6 +20,29 @@ export interface ReferencingForeignKey {
|
|
|
19
20
|
readonly childTable: TableSchema;
|
|
20
21
|
readonly fk: ForeignKeyConstraintSchema;
|
|
21
22
|
}
|
|
23
|
+
/**
|
|
24
|
+
* How much of a schema's index namespace a by-name owner lookup
|
|
25
|
+
* ({@link SchemaManager.findIndexOwner}) should consider.
|
|
26
|
+
*/
|
|
27
|
+
export type IndexLookupScope =
|
|
28
|
+
/**
|
|
29
|
+
* Only indexes a user may create, drop or rename. An implicit covering
|
|
30
|
+
* structure — the auto-built secondary BTree backing a declared `UNIQUE`
|
|
31
|
+
* constraint — is excluded whether hidden or exposed: its lifecycle belongs to
|
|
32
|
+
* the constraint, so removing it means `ALTER TABLE … DROP CONSTRAINT`. Default.
|
|
33
|
+
*/
|
|
34
|
+
'user-indexes'
|
|
35
|
+
/**
|
|
36
|
+
* Additionally admits an *exposed* implicit covering structure (constraint
|
|
37
|
+
* tagged `quereus.expose_implicit_index`), which IS addressable by
|
|
38
|
+
* `ALTER INDEX … TAGS`. Hidden ones stay excluded.
|
|
39
|
+
*/
|
|
40
|
+
| 'tag-addressable';
|
|
41
|
+
/** The table owning a by-name index match, paired with the matched index. */
|
|
42
|
+
export interface IndexOwnerMatch {
|
|
43
|
+
readonly table: TableSchema;
|
|
44
|
+
readonly index: IndexSchema;
|
|
45
|
+
}
|
|
22
46
|
/**
|
|
23
47
|
* Generic options passed to VTab modules during CREATE TABLE.
|
|
24
48
|
* Modules are responsible for interpreting these.
|
|
@@ -857,17 +881,53 @@ export declare class SchemaManager {
|
|
|
857
881
|
* Builds an IndexSchema from AST column definitions, validating against the table schema.
|
|
858
882
|
*/
|
|
859
883
|
private buildIndexSchema;
|
|
884
|
+
/**
|
|
885
|
+
* The table in `schemaName` owning the index named `indexName`, paired with the
|
|
886
|
+
* matched {@link IndexSchema} — or `undefined` when nothing in scope carries the
|
|
887
|
+
* name. The one by-name index-owner resolver: `DROP INDEX` ({@link dropIndex} and
|
|
888
|
+
* the strict-DDL-policy gate in `runtime/emit/drop-index.ts`),
|
|
889
|
+
* `ALTER INDEX … TAGS` ({@link resolveIndexTagSwap}), `CREATE INDEX`'s
|
|
890
|
+
* schema-wide name-uniqueness check ({@link findIndexNameOwnerElsewhere}) and
|
|
891
|
+
* `@quereus/sync`'s replicated index DDL all funnel here.
|
|
892
|
+
*
|
|
893
|
+
* Index names are unique per schema, not per table (docs/sql-ddl.md §6.3), and
|
|
894
|
+
* {@link createIndex} rejects a name already taken elsewhere in the schema, so
|
|
895
|
+
* first-match is unambiguous by construction. That invariant is what makes
|
|
896
|
+
* replication safe: a replicated `drop index "main"."idx"` carries no table name
|
|
897
|
+
* (the DROP INDEX grammar has no slot for one), so without it each receiver would
|
|
898
|
+
* resolve the owner by its own table-registration order and two devices could drop
|
|
899
|
+
* different indexes while both believing they converged.
|
|
900
|
+
*
|
|
901
|
+
* An out-of-scope match is **skipped and the scan continues** — never stopped at.
|
|
902
|
+
* That is what lets one table's constraint-backed `uq_email` coexist with another
|
|
903
|
+
* table's real index of the same name (constraint names are unique per *table*, so
|
|
904
|
+
* two tables may each declare `constraint uq_email unique (email)`). Both scope
|
|
905
|
+
* predicates read only `uniqueConstraints`, which every backend carries, so the
|
|
906
|
+
* filter behaves the same on the store as in memory.
|
|
907
|
+
*
|
|
908
|
+
* Case-insensitive on both `indexName` and `options.excludeTable`, like every
|
|
909
|
+
* other index-name comparison in the engine. An unknown `schemaName` yields
|
|
910
|
+
* `undefined` rather than throwing — callers that must distinguish a missing
|
|
911
|
+
* schema from a missing index check for it themselves first.
|
|
912
|
+
*
|
|
913
|
+
* @param options.scope Which part of the namespace to consider; defaults to
|
|
914
|
+
* `'user-indexes'` (see {@link IndexLookupScope}).
|
|
915
|
+
* @param options.excludeTable Skip this table entirely — used by the
|
|
916
|
+
* name-uniqueness check, which asks about *other* tables only.
|
|
917
|
+
*/
|
|
918
|
+
findIndexOwner(schemaName: string, indexName: string, options?: {
|
|
919
|
+
scope?: IndexLookupScope;
|
|
920
|
+
excludeTable?: string;
|
|
921
|
+
}): IndexOwnerMatch | undefined;
|
|
860
922
|
/**
|
|
861
923
|
* The table in `targetSchemaName` — other than `ownerTableName` — that already
|
|
862
924
|
* carries a **user** index named `indexName`, or `undefined` when the name is
|
|
863
925
|
* free. Backs the schema-wide index-name uniqueness rule enforced by
|
|
864
926
|
* {@link createIndex} and warned about by {@link importIndex}.
|
|
865
927
|
*
|
|
866
|
-
* Implicit covering structures are skipped
|
|
867
|
-
*
|
|
868
|
-
*
|
|
869
|
-
* each declare `constraint uq_email unique (email)` and each materialize an
|
|
870
|
-
* index named `uq_email`. Counting those would reject a valid schema.
|
|
928
|
+
* Implicit covering structures are skipped (the default
|
|
929
|
+
* {@link findIndexOwner} scope): counting them would reject a valid schema in
|
|
930
|
+
* which two tables each declare `constraint uq_email unique (email)`.
|
|
871
931
|
*
|
|
872
932
|
* NOTE: an *exposed* implicit covering index (constraint tagged
|
|
873
933
|
* `quereus.expose_implicit_index`) IS user-addressable by `ALTER INDEX`, so two
|
|
@@ -881,6 +941,17 @@ export declare class SchemaManager {
|
|
|
881
941
|
* Drops a secondary index from the table that owns it.
|
|
882
942
|
* Searches all tables in the target schema to find the owning table.
|
|
883
943
|
*
|
|
944
|
+
* An implicit covering structure — the auto-built secondary BTree backing a
|
|
945
|
+
* declared `UNIQUE` constraint, named after that constraint (or `_uc_<cols>`) —
|
|
946
|
+
* is NOT droppable this way, exposed or not: its lifecycle belongs to the
|
|
947
|
+
* constraint, so removing it means `ALTER TABLE … DROP CONSTRAINT`. The owner
|
|
948
|
+
* scan therefore *skips and keeps scanning* past such a match rather than
|
|
949
|
+
* stopping at it, so a real user index of the same name on another table is
|
|
950
|
+
* still found (constraint names are unique per table, not per schema — see
|
|
951
|
+
* {@link findIndexNameOwnerElsewhere}). With no owner found this falls through
|
|
952
|
+
* to the `IF EXISTS` / `no such index` handling below, matching what
|
|
953
|
+
* `ALTER INDEX … SET TAGS` already does with the same name.
|
|
954
|
+
*
|
|
884
955
|
* @param schemaName The schema to search in (e.g., "main")
|
|
885
956
|
* @param indexName The name of the index to drop
|
|
886
957
|
* @param ifExists If true, silently return if the index is not found
|
|
@@ -898,8 +969,14 @@ export declare class SchemaManager {
|
|
|
898
969
|
* fires for it. If a module without native events ever needs to replicate,
|
|
899
970
|
* thread the object schema in and call the `schema/ddl-generator.ts` generators
|
|
900
971
|
* here the way the store and memory modules do at their own emit sites.
|
|
972
|
+
*
|
|
973
|
+
* Public because the `ALTER TABLE` arms live outside this class
|
|
974
|
+
* (`runtime/emit/alter-table.ts`, `runtime/emit/add-constraint.ts`) and must reach the
|
|
975
|
+
* SAME gate. Re-deciding "no listener / module has its own emitter" at a second site is
|
|
976
|
+
* exactly what produced the data-channel double-emit the store package's
|
|
977
|
+
* `database-events.spec.ts` guards against — keep one gate.
|
|
901
978
|
*/
|
|
902
|
-
|
|
979
|
+
emitAutoSchemaEventIfNeeded(moduleName: string | undefined, event: VTableSchemaChangeEvent): void;
|
|
903
980
|
/**
|
|
904
981
|
* Defines a new table in the schema based on an AST.CreateTableStmt.
|
|
905
982
|
* Interacts with VTab modules (create) and registers the new table schema.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../../src/schema/manager.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../../src/schema/manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AAEtD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAC/D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,KAAK,EAAE,WAAW,EAAuB,WAAW,EAAgD,0BAA0B,EAA0B,MAAM,YAAY,CAAC;AAClL,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEpD,OAAO,EAAc,KAAK,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,KAAK,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAKjF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAE5C,OAAO,EAAqB,KAAK,qBAAqB,EAAE,KAAK,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAKtG,OAAO,KAAK,KAAK,GAAG,MAAM,kBAAkB,CAAC;AAI7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAS1D,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAQjE;;;;;GAKG;AACH,MAAM,WAAW,qBAAqB;IACrC,QAAQ,CAAC,UAAU,EAAE,WAAW,CAAC;IACjC,QAAQ,CAAC,EAAE,EAAE,0BAA0B,CAAC;CACxC;AAQD;;;GAGG;AACH,MAAM,MAAM,gBAAgB;AAC3B;;;;;GAKG;AACD,cAAc;AAChB;;;;GAIG;GACD,iBAAiB,CAAC;AAErB,6EAA6E;AAC7E,MAAM,WAAW,eAAe;IAC/B,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;CAC5B;AAED;;;GAGG;AACH,MAAM,WAAW,wBAAyB,SAAQ,gBAAgB;IACjE,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/B,gBAAgB,CAAC,EAAE,SAAS,GAAG,CAAC,SAAS,EAAE,CAAC;IAC5C,oBAAoB,CAAC,EAAE,SAAS,GAAG,CAAC,eAAe,EAAE,CAAC;CACtD;AAED;;;;;GAKG;AACH,MAAM,WAAW,oBAAoB;IACpC;;;;;;;;;OASG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;;;;;;;;OAUG;IACH,eAAe,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC9B;;;;;;;;;OASG;IACH,kBAAkB,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CACzC;AA4ED;;;GAGG;AACH,qBAAa,aAAa;IACzB,OAAO,CAAC,OAAO,CAAkC;IACjD,OAAO,CAAC,iBAAiB,CAAkB;IAC3C,OAAO,CAAC,OAAO,CAAgF;IAC/F,OAAO,CAAC,qBAAqB,CAAoB;IACjD,OAAO,CAAC,qBAAqB,CAAgC;IAC7D,OAAO,CAAC,EAAE,CAAW;IACrB,OAAO,CAAC,cAAc,CAA8B;IACpD;;;;;;;OAOG;IACH,OAAO,CAAC,wBAAwB,CAAa;IAC7C;;;;;;;;OAQG;IACH,OAAO,CAAC,mBAAmB,CAAa;IAExC;;;;;;OAMG;IACH,OAAO,CAAC,cAAc,CAAqD;IAE3E;;;;;;;;;;;;;;;;;;OAkBG;IACH,OAAO,CAAC,UAAU,CAA4B;IAE9C;;;;OAIG;gBACS,EAAE,EAAE,QAAQ;IA4BxB;;;;OAIG;IACH,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAQpC;;;;OAIG;IACH,oBAAoB,IAAI,MAAM;IAI9B;;;;;;OAMG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,qBAAqB,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI;IASpF;;;;;OAKG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG;QAAE,MAAM,EAAE,qBAAqB,CAAC;QAAC,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,SAAS;IAIzF;;;;OAIG;IACF,UAAU,IAAI,gBAAgB,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,qBAAqB,CAAC;QAAC,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;IAMnG;;;;;OAKG;IACH,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAW5C;;;;OAIG;IACH,wBAAwB,IAAI,MAAM;IAwBlC;;;OAGG;IACH,kBAAkB,IAAI,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC;IAI9C;;;OAGG;IACH,oBAAoB,IAAI;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;KAAE;IAOxE;;;;;OAKG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAI3C;;;;OAIG;IACH,aAAa,IAAI,MAAM;IAIvB;;;;OAIG;IACH,aAAa,IAAI,MAAM;IAWvB;;OAEG;IACH,gBAAgB,IAAI,wBAAwB,EAAE;IAU9C;;;;;OAKG;IACH,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,wBAAwB,GAAG,IAAI;IAyB3E;;;OAGG;IACH,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO;IAiB1D;;OAEG;IACH,iBAAiB,IAAI,oBAAoB;IAIzC;;;;OAIG;IACH,0BAA0B,IAAI,OAAO;IAIrC;;;;OAIG;IACH,4BAA4B,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC;IAS/C;;;;OAIG;IACH,mCAAmC,IAAI,OAAO;IAI9C;;;;OAIG;IACH,qCAAqC,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC;IASxD,0EAA0E;IACpE,0CAA0C,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IASrF;;;;;;;;OAQG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,UAAuB,GAAG,MAAM;IAgB9D;;;;;;OAMG;IACH,OAAO,CAAC,iBAAiB;IAczB;;;;;;OAMG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IA4DnC;;;;;;;OAOG;IACH,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,GAAG,WAAW,GAAG,SAAS;IAI7F;;;;;;OAMG;IACH,0BAA0B,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE;IAavD;;;;;;OAMG;IACH,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IAIxE;;;;;;OAMG;IACH,OAAO,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IAM5E;;;;;;OAMG;IACH,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,qBAAqB,GAAG,SAAS;IAK1G;;OAEG;IACH,sBAAsB,IAAI,qBAAqB,EAAE;IAUjD;;;;;;;;OAQG;IACH,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,eAAe,GAAG,qBAAqB;IAW3G;;;;;;OAMG;IACH,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAG,WAAW,GAAG,UAAU,GAAG,SAAS;IAWhG;;;;;;OAMG;IACH,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,GAAG,SAAS;IAMpG;;;;OAIG;IACH,OAAO,CAAC,UAAU;IAIlB;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,eAAe;IAgBvB;;;;OAIG;IACH,OAAO,CAAC,eAAe;IAgBvB;;;;;;;OAOG;IACH,OAAO,CAAC,eAAe;IAavB;;;;;;OAMG;IACH,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI;IAI1F;;;;OAIG;IACH,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI;IAI5F;;;;;OAKG;IACH,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI;IAIpF;;;;;;OAMG;IACH,OAAO,CAAC,gBAAgB;IAqBxB;;;;;;;OAOG;IACH,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI;IAI/G;;;;;;OAMG;IACH,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI;IAIjH;;;;;;;OAOG;IACH,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI;IAIzG;;;;;;;;OAQG;IACH,OAAO,CAAC,oBAAoB;IA0B5B;;;;;;;;OAQG;IACH,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI;IAIvH;;;;;;;OAOG;IACH,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI;IAIzH;;;;;;;;OAQG;IACH,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI;IAIjH;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,cAAc;IA0BtB;;;;;OAKG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI;IAIxF;;;;;;OAMG;IACH,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI;IAI1F;;;;;;;;OAQG;IACH,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI;IAIlF;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,0BAA0B;IAsBlC;;;;;OAKG;IACH,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI;IAIhG;;;;;;OAMG;IACH,yBAAyB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI;IAIlG;;;;;;;;OAQG;IACH,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI;IAI1F;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,eAAe;IAMvB;;;;;;OAMG;IACH,OAAO,CAAC,mBAAmB;IAkD3B;;;;;OAKG;IACH,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI;IAI1F;;;;;;OAMG;IACH,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI;IAI5F;;;;;;;OAOG;IACH,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI;IAIpF;;;;OAIG;IACH,OAAO,CAAC,wBAAwB;IAIhC;;;;;;OAMG;IACH,OAAO,CAAC,mBAAmB;IAoB3B;;;;;;;;;;;OAWG;IACH,yBAAyB,CAAC,gBAAgB,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,SAAS,qBAAqB,EAAE;IAQ9G;;;;;OAKG;IACH,oBAAoB,IAAI,IAAI;IAI5B;;;;;;;;;OASG;IACH,8BAA8B,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO;IAO9E;;;;OAIG;YACW,kCAAkC;IAiChD;;;;;;;OAOG;IACG,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,GAAE,OAAe,GAAG,OAAO,CAAC,OAAO,CAAC;IA0FnG;;;;;;OAMG;IACH,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO;IAMvD;;OAEG;IACH,QAAQ,IAAI,IAAI;IAehB;;;;;;OAMG;IACH,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAQrC;;;;;;;;;;;;;;;OAeG;IACH,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAIxC;;;;;;OAMG;IACH,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,EAAE,SAAS,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS;IAMpF;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAyBzB;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IAqC1B;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAmC/B;;;;OAIG;IACH,OAAO,CAAC,kBAAkB;IAsD1B;;;OAGG;IACH,OAAO,CAAC,wBAAwB;IAmChC;;;OAGG;IACH,OAAO,CAAC,uBAAuB;IAwE/B;;;;;;;;;;OAUG;IACH,uBAAuB,CAAC,IAAI,EAAE,GAAG,CAAC,eAAe,EAAE,UAAU,EAAE,MAAM,GAAG,WAAW;IAkCnF;;;;;;;OAOG;IACH,OAAO,CAAC,uBAAuB;IAkD/B;;;;;;;;;;;;;OAaG;IACH,4FAA4F;IAC5F,OAAO,CAAC,qBAAqB;IAa7B,qFAAqF;IACrF,OAAO,CAAC,uBAAuB;IAc/B;;;;;;OAMG;IACH,OAAO,CAAC,wBAAwB;IAgBhC;;;;;;;;;OASG;IACH,OAAO,CAAC,kBAAkB;IAqE1B,OAAO,CAAC,0BAA0B;IAwBlC;;;;;;;;OAQG;IACH,0BAA0B,CACzB,WAAW,EAAE,GAAG,CAAC,UAAU,EAC3B,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,kBAAkB,EAAE,OAAO,GACzB,IAAI;IAIP;;;;;;;;;OASG;IACH,wBAAwB,CACvB,WAAW,EAAE,GAAG,CAAC,UAAU,EAC3B,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,kBAAkB,EAAE,OAAO,GACzB,IAAI;IAIP,iGAAiG;IACjG,OAAO,CAAC,kBAAkB;IAmB1B;;;;;;;OAOG;IACH,OAAO,CAAC,kCAAkC;IA0C1C;;;OAGG;IACH,OAAO,CAAC,0BAA0B;IAkClC;;;;;OAKG;IACG,WAAW,CAAC,IAAI,EAAE,GAAG,CAAC,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IA0F3D;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAoCxB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAiCG;IACH,cAAc,CACb,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,gBAAgB,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,GAC3D,eAAe,GAAG,SAAS;IAgB9B;;;;;;;;;;;;;;;;OAgBG;IACH,OAAO,CAAC,2BAA2B;IAQnC;;;;;;;;;;;;;;;;;;OAkBG;IACG,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,GAAE,OAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAyFhG;;;;;;;;;;;;;;;;;;OAkBG;IACH,2BAA2B,CAC1B,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,KAAK,EAAE,uBAAuB,GAC5B,IAAI;IAOP;;;;;;;OAOG;IACH;;;;;;;;;OASG;IACH,wBAAwB,CAAC,IAAI,EAAE,GAAG,CAAC,eAAe,GAAG,WAAW;IAMhE;;;;;;;;;;;;;OAaG;IACG,WAAW,CAAC,IAAI,EAAE,GAAG,CAAC,eAAe,EAAE,aAAa,UAAQ,GAAG,OAAO,CAAC,WAAW,CAAC;IAsHzF;;;;;;;;;;;;;;;OAeG;IACG,kBAAkB,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IAsDxE;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACG,aAAa,CAAC,aAAa,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,EAAE,CAAC;QAAC,iBAAiB,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IA4B5K;;;;;;;;;;OAUG;YACW,SAAS;IAwCvB;;;;;;;;;;;;;;OAcG;IACH,OAAO,CAAC,sBAAsB;IAgB9B;;;;;;;;;;;;;;OAcG;IACH,OAAO,CAAC,UAAU;IAwBlB;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;YACW,sBAAsB;IAmGpC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;YACW,0BAA0B;IA0BxC;;;OAGG;YACW,WAAW;IA+CzB;;;;;;;;;OASG;YACW,WAAW;CAqGzB"}
|
|
@@ -6,7 +6,7 @@ import { buildColumnIndexMap, columnDefToSchema, findPKDefinition, opsToMask, mu
|
|
|
6
6
|
import { buildUniqueConstraintSchema, buildForeignKeyConstraintSchema, validateForeignKeyCollations } from './constraint-builder.js';
|
|
7
7
|
import { normalizeBackingModule } from './view.js';
|
|
8
8
|
import { isMaintainedTable } from './derivation.js';
|
|
9
|
-
import { isHiddenImplicitIndex, isImplicitCoveringIndex, findExposedImplicitConstraintIndex } from './catalog.js';
|
|
9
|
+
import { isHiddenImplicitIndex, isImplicitCoveringIndex, findExposedImplicitConstraintIndex, assertNoDuplicateUniqueConstraints } from './catalog.js';
|
|
10
10
|
import { assertCatalogObjectPersistable } from './catalog-persistability.js';
|
|
11
11
|
import { buildLensBasisFkGate } from './lens-fk-discovery.js';
|
|
12
12
|
import { createLogger } from '../common/logger.js';
|
|
@@ -1049,13 +1049,13 @@ export class SchemaManager {
|
|
|
1049
1049
|
// Primary path: a materialized IndexSchema — every real index, plus the
|
|
1050
1050
|
// memory backend's materialized implicit covering index. Tags live on the
|
|
1051
1051
|
// matched IndexSchema. A *hidden* implicit index is not user-addressable and
|
|
1052
|
-
// is skipped
|
|
1053
|
-
// (its name is materialized, so it is not
|
|
1054
|
-
// surfaces as NOTFOUND — preserving
|
|
1055
|
-
|
|
1056
|
-
|
|
1057
|
-
|
|
1058
|
-
|
|
1052
|
+
// is skipped by the `tag-addressable` scope; it then fails the
|
|
1053
|
+
// exposed-constraint fallback below (its name is materialized, so it is not
|
|
1054
|
+
// "exposed and unmaterialized") and surfaces as NOTFOUND — preserving
|
|
1055
|
+
// Phase 22/37 behavior.
|
|
1056
|
+
const match = this.findIndexOwner(targetSchemaName, indexName, { scope: 'tag-addressable' });
|
|
1057
|
+
if (match) {
|
|
1058
|
+
const { table, index: matched } = match;
|
|
1059
1059
|
// Compute before rebuilding the index array so a drop-of-absent NOTFOUND
|
|
1060
1060
|
// aborts before any swap.
|
|
1061
1061
|
const nextTags = compute(matched.tags);
|
|
@@ -1305,16 +1305,12 @@ export class SchemaManager {
|
|
|
1305
1305
|
objectName: tableSchema.name,
|
|
1306
1306
|
oldObject: tableSchema
|
|
1307
1307
|
});
|
|
1308
|
-
|
|
1309
|
-
|
|
1310
|
-
|
|
1311
|
-
|
|
1312
|
-
|
|
1313
|
-
|
|
1314
|
-
schemaName: tableSchema.schemaName,
|
|
1315
|
-
objectName: tableSchema.name,
|
|
1316
|
-
});
|
|
1317
|
-
}
|
|
1308
|
+
this.emitAutoSchemaEventIfNeeded(tableSchema.vtabModuleName, {
|
|
1309
|
+
type: 'drop',
|
|
1310
|
+
objectType: 'table',
|
|
1311
|
+
schemaName: tableSchema.schemaName,
|
|
1312
|
+
objectName: tableSchema.name,
|
|
1313
|
+
});
|
|
1318
1314
|
}
|
|
1319
1315
|
return removed; // True if removed from schema, false if not found and ifExists was true.
|
|
1320
1316
|
}
|
|
@@ -1955,7 +1951,16 @@ export class SchemaManager {
|
|
|
1955
1951
|
throw new QuereusError(`Virtual table module '${tableSchema.vtabModuleName}' for table '${tableName}' does not support CREATE INDEX.`, StatusCode.ERROR, undefined, stmt.table.loc?.start.line, stmt.table.loc?.start.column);
|
|
1956
1952
|
}
|
|
1957
1953
|
const existingIndex = tableSchema.indexes?.find(idx => idx.name.toLowerCase() === indexName.toLowerCase());
|
|
1958
|
-
|
|
1954
|
+
// The implicit-covering term is what makes this refusal backend-independent.
|
|
1955
|
+
// Memory materializes a constraint's backing structure as a real `IndexSchema`
|
|
1956
|
+
// entry (so `existingIndex` alone catches it); the store keeps it out of the
|
|
1957
|
+
// engine-facing `indexes` list entirely, and without this term `create index
|
|
1958
|
+
// uq_email` would land on the *same* physical key-value store as the
|
|
1959
|
+
// constraint's backing structure (`buildIndexStoreName` is a pure function of
|
|
1960
|
+
// schema + table + index name). `isImplicitCoveringIndex` reads only
|
|
1961
|
+
// `uniqueConstraints`, which both backends carry, so one term covers both.
|
|
1962
|
+
const shadowsConstraintStructure = isImplicitCoveringIndex(tableSchema, indexName);
|
|
1963
|
+
if (existingIndex || shadowsConstraintStructure) {
|
|
1959
1964
|
if (stmt.ifNotExists) {
|
|
1960
1965
|
log(`Skipping CREATE INDEX: Index %s.%s already exists (IF NOT EXISTS).`, targetSchemaName, indexName);
|
|
1961
1966
|
return;
|
|
@@ -2042,17 +2047,66 @@ export class SchemaManager {
|
|
|
2042
2047
|
tags: stmt.tags && Object.keys(stmt.tags).length > 0 ? Object.freeze({ ...stmt.tags }) : undefined,
|
|
2043
2048
|
};
|
|
2044
2049
|
}
|
|
2050
|
+
/**
|
|
2051
|
+
* The table in `schemaName` owning the index named `indexName`, paired with the
|
|
2052
|
+
* matched {@link IndexSchema} — or `undefined` when nothing in scope carries the
|
|
2053
|
+
* name. The one by-name index-owner resolver: `DROP INDEX` ({@link dropIndex} and
|
|
2054
|
+
* the strict-DDL-policy gate in `runtime/emit/drop-index.ts`),
|
|
2055
|
+
* `ALTER INDEX … TAGS` ({@link resolveIndexTagSwap}), `CREATE INDEX`'s
|
|
2056
|
+
* schema-wide name-uniqueness check ({@link findIndexNameOwnerElsewhere}) and
|
|
2057
|
+
* `@quereus/sync`'s replicated index DDL all funnel here.
|
|
2058
|
+
*
|
|
2059
|
+
* Index names are unique per schema, not per table (docs/sql-ddl.md §6.3), and
|
|
2060
|
+
* {@link createIndex} rejects a name already taken elsewhere in the schema, so
|
|
2061
|
+
* first-match is unambiguous by construction. That invariant is what makes
|
|
2062
|
+
* replication safe: a replicated `drop index "main"."idx"` carries no table name
|
|
2063
|
+
* (the DROP INDEX grammar has no slot for one), so without it each receiver would
|
|
2064
|
+
* resolve the owner by its own table-registration order and two devices could drop
|
|
2065
|
+
* different indexes while both believing they converged.
|
|
2066
|
+
*
|
|
2067
|
+
* An out-of-scope match is **skipped and the scan continues** — never stopped at.
|
|
2068
|
+
* That is what lets one table's constraint-backed `uq_email` coexist with another
|
|
2069
|
+
* table's real index of the same name (constraint names are unique per *table*, so
|
|
2070
|
+
* two tables may each declare `constraint uq_email unique (email)`). Both scope
|
|
2071
|
+
* predicates read only `uniqueConstraints`, which every backend carries, so the
|
|
2072
|
+
* filter behaves the same on the store as in memory.
|
|
2073
|
+
*
|
|
2074
|
+
* Case-insensitive on both `indexName` and `options.excludeTable`, like every
|
|
2075
|
+
* other index-name comparison in the engine. An unknown `schemaName` yields
|
|
2076
|
+
* `undefined` rather than throwing — callers that must distinguish a missing
|
|
2077
|
+
* schema from a missing index check for it themselves first.
|
|
2078
|
+
*
|
|
2079
|
+
* @param options.scope Which part of the namespace to consider; defaults to
|
|
2080
|
+
* `'user-indexes'` (see {@link IndexLookupScope}).
|
|
2081
|
+
* @param options.excludeTable Skip this table entirely — used by the
|
|
2082
|
+
* name-uniqueness check, which asks about *other* tables only.
|
|
2083
|
+
*/
|
|
2084
|
+
findIndexOwner(schemaName, indexName, options) {
|
|
2085
|
+
const schema = this.getSchema(schemaName);
|
|
2086
|
+
if (!schema)
|
|
2087
|
+
return undefined;
|
|
2088
|
+
const outOfScope = options?.scope === 'tag-addressable' ? isHiddenImplicitIndex : isImplicitCoveringIndex;
|
|
2089
|
+
const lowerIndexName = indexName.toLowerCase();
|
|
2090
|
+
const lowerExcluded = options?.excludeTable?.toLowerCase();
|
|
2091
|
+
for (const table of schema.getAllTables()) {
|
|
2092
|
+
if (lowerExcluded !== undefined && table.name.toLowerCase() === lowerExcluded)
|
|
2093
|
+
continue;
|
|
2094
|
+
const index = table.indexes?.find(idx => idx.name.toLowerCase() === lowerIndexName);
|
|
2095
|
+
if (!index || outOfScope(table, index.name))
|
|
2096
|
+
continue;
|
|
2097
|
+
return { table, index };
|
|
2098
|
+
}
|
|
2099
|
+
return undefined;
|
|
2100
|
+
}
|
|
2045
2101
|
/**
|
|
2046
2102
|
* The table in `targetSchemaName` — other than `ownerTableName` — that already
|
|
2047
2103
|
* carries a **user** index named `indexName`, or `undefined` when the name is
|
|
2048
2104
|
* free. Backs the schema-wide index-name uniqueness rule enforced by
|
|
2049
2105
|
* {@link createIndex} and warned about by {@link importIndex}.
|
|
2050
2106
|
*
|
|
2051
|
-
* Implicit covering structures are skipped
|
|
2052
|
-
*
|
|
2053
|
-
*
|
|
2054
|
-
* each declare `constraint uq_email unique (email)` and each materialize an
|
|
2055
|
-
* index named `uq_email`. Counting those would reject a valid schema.
|
|
2107
|
+
* Implicit covering structures are skipped (the default
|
|
2108
|
+
* {@link findIndexOwner} scope): counting them would reject a valid schema in
|
|
2109
|
+
* which two tables each declare `constraint uq_email unique (email)`.
|
|
2056
2110
|
*
|
|
2057
2111
|
* NOTE: an *exposed* implicit covering index (constraint tagged
|
|
2058
2112
|
* `quereus.expose_implicit_index`) IS user-addressable by `ALTER INDEX`, so two
|
|
@@ -2062,25 +2116,23 @@ export class SchemaManager {
|
|
|
2062
2116
|
* per schema.
|
|
2063
2117
|
*/
|
|
2064
2118
|
findIndexNameOwnerElsewhere(targetSchemaName, ownerTableName, indexName) {
|
|
2065
|
-
|
|
2066
|
-
if (!schema)
|
|
2067
|
-
return undefined;
|
|
2068
|
-
const lowerIndexName = indexName.toLowerCase();
|
|
2069
|
-
const lowerOwnerName = ownerTableName.toLowerCase();
|
|
2070
|
-
for (const table of schema.getAllTables()) {
|
|
2071
|
-
if (table.name.toLowerCase() === lowerOwnerName)
|
|
2072
|
-
continue;
|
|
2073
|
-
const matched = table.indexes?.find(idx => idx.name.toLowerCase() === lowerIndexName);
|
|
2074
|
-
if (!matched || isImplicitCoveringIndex(table, matched.name))
|
|
2075
|
-
continue;
|
|
2076
|
-
return table;
|
|
2077
|
-
}
|
|
2078
|
-
return undefined;
|
|
2119
|
+
return this.findIndexOwner(targetSchemaName, indexName, { excludeTable: ownerTableName })?.table;
|
|
2079
2120
|
}
|
|
2080
2121
|
/**
|
|
2081
2122
|
* Drops a secondary index from the table that owns it.
|
|
2082
2123
|
* Searches all tables in the target schema to find the owning table.
|
|
2083
2124
|
*
|
|
2125
|
+
* An implicit covering structure — the auto-built secondary BTree backing a
|
|
2126
|
+
* declared `UNIQUE` constraint, named after that constraint (or `_uc_<cols>`) —
|
|
2127
|
+
* is NOT droppable this way, exposed or not: its lifecycle belongs to the
|
|
2128
|
+
* constraint, so removing it means `ALTER TABLE … DROP CONSTRAINT`. The owner
|
|
2129
|
+
* scan therefore *skips and keeps scanning* past such a match rather than
|
|
2130
|
+
* stopping at it, so a real user index of the same name on another table is
|
|
2131
|
+
* still found (constraint names are unique per table, not per schema — see
|
|
2132
|
+
* {@link findIndexNameOwnerElsewhere}). With no owner found this falls through
|
|
2133
|
+
* to the `IF EXISTS` / `no such index` handling below, matching what
|
|
2134
|
+
* `ALTER INDEX … SET TAGS` already does with the same name.
|
|
2135
|
+
*
|
|
2084
2136
|
* @param schemaName The schema to search in (e.g., "main")
|
|
2085
2137
|
* @param indexName The name of the index to drop
|
|
2086
2138
|
* @param ifExists If true, silently return if the index is not found
|
|
@@ -2092,29 +2144,33 @@ export class SchemaManager {
|
|
|
2092
2144
|
return;
|
|
2093
2145
|
throw new QuereusError(`Schema not found: ${schemaName}`, StatusCode.ERROR);
|
|
2094
2146
|
}
|
|
2095
|
-
// Find which table owns this index
|
|
2147
|
+
// Find which table owns this index.
|
|
2148
|
+
// NOTE: a table may hold a UNIQUE constraint whose name equals an unrelated
|
|
2149
|
+
// user index's name on that same table (`create index foo on t (b); alter
|
|
2150
|
+
// table t add constraint foo unique (a);` — both succeed today). There the
|
|
2151
|
+
// out-of-scope predicate is true and this refuses the drop even though a real
|
|
2152
|
+
// index also carries the name. That state is already broken in worse ways
|
|
2153
|
+
// (memory materializes two entries literally named `foo`) and is tracked as
|
|
2154
|
+
// bug-unique-constraint-name-collides-with-index-name; refusing is the
|
|
2155
|
+
// conservative outcome — do not shape-match around it here.
|
|
2096
2156
|
const lowerIndexName = indexName.toLowerCase();
|
|
2097
|
-
|
|
2098
|
-
|
|
2099
|
-
if (table.indexes?.some(idx => idx.name.toLowerCase() === lowerIndexName)) {
|
|
2100
|
-
ownerTable = table;
|
|
2101
|
-
break;
|
|
2102
|
-
}
|
|
2103
|
-
}
|
|
2104
|
-
if (!ownerTable) {
|
|
2157
|
+
const ownerMatch = this.findIndexOwner(schemaName, indexName);
|
|
2158
|
+
if (!ownerMatch) {
|
|
2105
2159
|
if (ifExists) {
|
|
2106
2160
|
log(`Index %s.%s not found, but IF EXISTS specified`, schemaName, indexName);
|
|
2107
2161
|
return;
|
|
2108
2162
|
}
|
|
2109
2163
|
throw new QuereusError(`no such index: ${indexName}`, StatusCode.ERROR);
|
|
2110
2164
|
}
|
|
2165
|
+
const ownerTable = ownerMatch.table;
|
|
2111
2166
|
// Stored display casing of the dropped index — the raw `indexName` arg may
|
|
2112
|
-
// differ in case.
|
|
2113
|
-
// receives the stored name (the module-facing
|
|
2114
|
-
// canonicalSchemaName), keeping a case-divergent
|
|
2115
|
-
// missing a module handle/registry keyed by the stored
|
|
2116
|
-
// store's StoreTable.indexStores cache). Also reused by the
|
|
2117
|
-
|
|
2167
|
+
// differ in case. Taken from the matched IndexSchema, i.e. *before* the module
|
|
2168
|
+
// call, so module.dropIndex receives the stored name (the module-facing
|
|
2169
|
+
// stored-name contract; see canonicalSchemaName), keeping a case-divergent
|
|
2170
|
+
// `DROP INDEX iDx` from missing a module handle/registry keyed by the stored
|
|
2171
|
+
// `idx` (e.g. the store's StoreTable.indexStores cache). Also reused by the
|
|
2172
|
+
// events below.
|
|
2173
|
+
const storedIndexName = ownerMatch.index.name;
|
|
2118
2174
|
// Call module.dropIndex if the module supports it
|
|
2119
2175
|
const moduleReg = ownerTable.vtabModuleName ? this.getModule(ownerTable.vtabModuleName) : undefined;
|
|
2120
2176
|
if (moduleReg?.module?.dropIndex) {
|
|
@@ -2168,6 +2224,12 @@ export class SchemaManager {
|
|
|
2168
2224
|
* fires for it. If a module without native events ever needs to replicate,
|
|
2169
2225
|
* thread the object schema in and call the `schema/ddl-generator.ts` generators
|
|
2170
2226
|
* here the way the store and memory modules do at their own emit sites.
|
|
2227
|
+
*
|
|
2228
|
+
* Public because the `ALTER TABLE` arms live outside this class
|
|
2229
|
+
* (`runtime/emit/alter-table.ts`, `runtime/emit/add-constraint.ts`) and must reach the
|
|
2230
|
+
* SAME gate. Re-deciding "no listener / module has its own emitter" at a second site is
|
|
2231
|
+
* exactly what produced the data-channel double-emit the store package's
|
|
2232
|
+
* `database-events.spec.ts` guards against — keep one gate.
|
|
2171
2233
|
*/
|
|
2172
2234
|
emitAutoSchemaEventIfNeeded(moduleName, event) {
|
|
2173
2235
|
const moduleReg = moduleName ? this.getModule(moduleName) : undefined;
|
|
@@ -2253,6 +2315,14 @@ export class SchemaManager {
|
|
|
2253
2315
|
const allowNonDet = this.db.options.getBooleanOption('nondeterministic_schema');
|
|
2254
2316
|
this.validateDefaultDeterminism(baseTableSchema.columns, tableName, hasMutationContext, allowNonDet);
|
|
2255
2317
|
this.validateCheckConstraintDeterminism(baseTableSchema.checkConstraints, tableName, allowNonDet);
|
|
2318
|
+
// Refuse a CREATE TABLE that declares the same plain UNIQUE twice — the same rule
|
|
2319
|
+
// `ALTER TABLE ADD CONSTRAINT` / `ADD COLUMN … unique` apply, so a duplicate is
|
|
2320
|
+
// refused identically wherever it is written. Before `module.create`, so the
|
|
2321
|
+
// statement leaves no storage behind. Deliberately here rather than in
|
|
2322
|
+
// `buildTableSchemaFromAST`: the import/rehydrate path shares that builder and must
|
|
2323
|
+
// still open a catalog written before this guard existed (same placement rationale
|
|
2324
|
+
// as the FK-collation check below).
|
|
2325
|
+
assertNoDuplicateUniqueConstraints(baseTableSchema.uniqueConstraints ?? [], baseTableSchema.columns, `create table '${tableName}'`);
|
|
2256
2326
|
let tableInstance;
|
|
2257
2327
|
try {
|
|
2258
2328
|
// `preferBacking` (set only by the maintained-table create path) routes
|
|
@@ -2786,11 +2856,41 @@ export class SchemaManager {
|
|
|
2786
2856
|
// once per imported index, so a cold open costs O(indexes × tables). Fine at
|
|
2787
2857
|
// present schema sizes; if opening a large catalog ever shows up as slow, build
|
|
2788
2858
|
// one name→owner map for the whole import instead of re-scanning per index.
|
|
2859
|
+
//
|
|
2860
|
+
// NOTE: this path deliberately does NOT consult `isImplicitCoveringIndex`, so a
|
|
2861
|
+
// catalog written before the write paths refused a name held by that table's own
|
|
2862
|
+
// UNIQUE constraint still imports its shadowing index — after which the name
|
|
2863
|
+
// resolves to a real index that `dropIndex` then refuses to drop. Only reachable
|
|
2864
|
+
// by opening such a pre-existing database; it warns (below) and proceeds rather
|
|
2865
|
+
// than bricking the open. If that ever needs stronger handling, reject or rename
|
|
2866
|
+
// the shadowing index here rather than loosening the write-path guards.
|
|
2789
2867
|
const collidingOwner = this.findIndexNameOwnerElsewhere(targetSchemaName, tableSchema.name, indexName);
|
|
2790
2868
|
if (collidingOwner) {
|
|
2791
2869
|
warnLog(`Imported index '%s' on table '%s' collides with an existing index of the same name on table '%s' in schema '%s'; `
|
|
2792
2870
|
+ `index names are expected to be unique per schema — DROP/ALTER INDEX by this name resolves to whichever table registered first`, indexName, tableSchema.name, collidingOwner.name, targetSchemaName);
|
|
2793
2871
|
}
|
|
2872
|
+
// Same warn-and-proceed treatment for the same-table variant: the name is already
|
|
2873
|
+
// the implicit backing structure of one of this table's own UNIQUE constraints.
|
|
2874
|
+
// Both write paths now refuse this (`createIndex` from the index side,
|
|
2875
|
+
// `assertUniqueConstraintIndexNameFree` from the constraint side), so a catalog
|
|
2876
|
+
// carrying it was written before those guards existed. `importDDL` imports the
|
|
2877
|
+
// CREATE TABLE (constraints included) ahead of every CREATE INDEX, so the
|
|
2878
|
+
// constraint is always the one already present when the collision is seen.
|
|
2879
|
+
//
|
|
2880
|
+
// NOTE: the resulting state is worse than "shadowed and undroppable". Measured on
|
|
2881
|
+
// the memory backend (test/index-ddl-roundtrip.spec.ts), the table ends up with two
|
|
2882
|
+
// index entries under the one name, `index_info()` reports NEITHER, `DROP INDEX`
|
|
2883
|
+
// answers `no such index`, and a predicate over the imported index's column stops
|
|
2884
|
+
// filtering — `where b = 'q'` returns every row. No write path can produce such a
|
|
2885
|
+
// catalog any more, so this is only reachable by opening a database written before
|
|
2886
|
+
// the guards (backwards compatibility is waived project-wide) or by handing
|
|
2887
|
+
// `importCatalog` a collided bundle directly. If either becomes real, reject or
|
|
2888
|
+
// rename the shadowing index HERE rather than loosening the write-path guards.
|
|
2889
|
+
if (isImplicitCoveringIndex(tableSchema, indexName)) {
|
|
2890
|
+
warnLog(`Imported index '%s' on table '%s' collides with the implicit backing index of a UNIQUE constraint of the same name `
|
|
2891
|
+
+ `on that table; the index shadows the constraint's structure, DROP INDEX will refuse to drop it, and predicates `
|
|
2892
|
+
+ `over its columns stop filtering — rename either the index or the constraint`, indexName, tableSchema.name);
|
|
2893
|
+
}
|
|
2794
2894
|
// Append the index (and synthesize the derived UNIQUE constraint when
|
|
2795
2895
|
// unique) without calling module.createIndex() — the storage already exists.
|
|
2796
2896
|
const updatedTableSchema = appendIndexToTableSchema(tableSchema, indexSchema);
|