@quereus/quereus 4.20.1 → 4.20.3
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 +2 -0
- package/dist/src/schema/schema-differ.d.ts.map +1 -1
- package/dist/src/schema/schema-differ.js +17 -69
- package/dist/src/schema/schema-differ.js.map +1 -1
- package/package.json +7 -4
- package/test/README.md +173 -0
- package/test/logic/01-basic.sqllogic +39 -0
- package/test/logic/01.1-select-projection-extras.sqllogic +130 -0
- package/test/logic/01.2-strings.sqllogic +43 -0
- package/test/logic/01.5-insert-select.sqllogic +237 -0
- package/test/logic/01.6-update-extras.sqllogic +118 -0
- package/test/logic/01.7-update-from.sqllogic +67 -0
- package/test/logic/01.8-delete-extras.sqllogic +122 -0
- package/test/logic/01.8.1-delete-range-cow.sqllogic +115 -0
- package/test/logic/01.9-query-expr-dml-gates.sqllogic +32 -0
- package/test/logic/01.9-query-expr-dml.sqllogic +171 -0
- package/test/logic/01.9-query-expr-values.sqllogic +111 -0
- package/test/logic/01.9.1-limit-over-dml-subquery.sqllogic +119 -0
- package/test/logic/02-filters.sqllogic +54 -0
- package/test/logic/02-smoke.sqllogic +62 -0
- package/test/logic/02.1-bind-parameters.sqllogic +223 -0
- package/test/logic/03-expressions.sqllogic +190 -0
- package/test/logic/03.1-quoted-identifiers.sqllogic +55 -0
- package/test/logic/03.4-defaults.sqllogic +554 -0
- package/test/logic/03.4.1-default-edge-cases.sqllogic +99 -0
- package/test/logic/03.5-tvf.sqllogic +61 -0
- package/test/logic/03.6-type-system.sqllogic +544 -0
- package/test/logic/03.6.1-numeric-text-comparison-coercion.sqllogic +244 -0
- package/test/logic/03.6.2-value-to-text.sqllogic +224 -0
- package/test/logic/03.7-bigint-mixed-arithmetic.sqllogic +65 -0
- package/test/logic/03.8-not-precedence.sqllogic +255 -0
- package/test/logic/03.9-is-bool-predicate.sqllogic +150 -0
- package/test/logic/03.9.1-is-bool-predicate-partial-index.sqllogic +34 -0
- package/test/logic/04-order-by.sqllogic +38 -0
- package/test/logic/04-transactions.sqllogic +239 -0
- package/test/logic/04a-savepoint-lazy-attach.sqllogic +122 -0
- package/test/logic/05-vtab_memory.sqllogic +50 -0
- package/test/logic/05.0.1-vtab-memory-unique-index-collation.sqllogic +34 -0
- package/test/logic/05.1-composite-pk-range-scan.sqllogic +147 -0
- package/test/logic/05.1.1-secondary-index-range-scan.sqllogic +56 -0
- package/test/logic/05.2-cast-seek-correctness.sqllogic +124 -0
- package/test/logic/06-builtin_functions.sqllogic +149 -0
- package/test/logic/06.1-string-functions.sqllogic +92 -0
- package/test/logic/06.1.3-like-glob-edges.sqllogic +53 -0
- package/test/logic/06.2-math-functions.sqllogic +82 -0
- package/test/logic/06.3-schema.sqllogic +48 -0
- package/test/logic/06.3.1-schema-all-schemas.sqllogic +39 -0
- package/test/logic/06.3.2-schema-foreign-keys.sqllogic +208 -0
- package/test/logic/06.3.3-introspection-tags.sqllogic +202 -0
- package/test/logic/06.3.3.1-introspection-tags-index.sqllogic +74 -0
- package/test/logic/06.3.4-view-info.sqllogic +378 -0
- package/test/logic/06.3.5-column-info.sqllogic +347 -0
- package/test/logic/06.3.6-schema-views.sqllogic +29 -0
- package/test/logic/06.4-schema-search-path.sqllogic +354 -0
- package/test/logic/06.4.1-schema-case-insensitive.sqllogic +83 -0
- package/test/logic/06.4.2-collation-extras.sqllogic +472 -0
- package/test/logic/06.4.2.1-collation-index-access-paths.sqllogic +140 -0
- package/test/logic/06.4.3-write-path-collation.sqllogic +99 -0
- package/test/logic/06.4.4-comparison-collation-precedence.sqllogic +342 -0
- package/test/logic/06.4.5-any-collate-declared-keys.sqllogic +92 -0
- package/test/logic/06.5-polymorphic-types.sqllogic +169 -0
- package/test/logic/06.5.1-conversion-functions.sqllogic +173 -0
- package/test/logic/06.5.2-scalar-minmax.sqllogic +16 -0
- package/test/logic/06.5.3-undeclared-return-type-comparison.sqllogic +244 -0
- package/test/logic/06.5.4-declared-return-type-builtins.sqllogic +288 -0
- package/test/logic/06.6-aggregate-extended.sqllogic +78 -0
- package/test/logic/06.7-json-extended.sqllogic +53 -0
- package/test/logic/06.8-json-path-operators.sqllogic +99 -0
- package/test/logic/06.9-json-canonical-key.sqllogic +65 -0
- package/test/logic/06.9.1-json-coerce-once.sqllogic +417 -0
- package/test/logic/06.9.1.1-json-coerce-once-index.sqllogic +39 -0
- package/test/logic/06.9.2-json-structural-equality.sqllogic +382 -0
- package/test/logic/06.9.2.1-json-structural-equality-index.sqllogic +76 -0
- package/test/logic/06.9.3-json-index-range-seek.sqllogic +205 -0
- package/test/logic/07-aggregates.sqllogic +193 -0
- package/test/logic/07.1-aggregate-filter-clause.sqllogic +12 -0
- package/test/logic/07.2-aggregate-order-by.sqllogic +11 -0
- package/test/logic/07.3-group-by-extras.sqllogic +602 -0
- package/test/logic/07.3.1-group-by-order-by-key.sqllogic +164 -0
- package/test/logic/07.3.2-grouped-select-list-shape.sqllogic +231 -0
- package/test/logic/07.4-group-by-filter-composite-pk.sqllogic +120 -0
- package/test/logic/07.5-sum-mixed-exact-and-float.sqllogic +151 -0
- package/test/logic/07.5-window.sqllogic +1941 -0
- package/test/logic/07.5.1-window-named.sqllogic +13 -0
- package/test/logic/07.5.2-window-nth-value.sqllogic +13 -0
- package/test/logic/07.6-subqueries.sqllogic +78 -0
- package/test/logic/07.6.1-subquery-extras.sqllogic +93 -0
- package/test/logic/07.7-and-or-short-circuit.sqllogic +58 -0
- package/test/logic/07.7-in-subquery-caching.sqllogic +174 -0
- package/test/logic/07.7-scalar-agg-decorrelation.sqllogic +197 -0
- package/test/logic/07.7.1-in-extras.sqllogic +158 -0
- package/test/logic/07.7.1-scalar-agg-decorrelation-filter.sqllogic +105 -0
- package/test/logic/07.7.2-scalar-agg-decorrelation-nested.sqllogic +115 -0
- package/test/logic/07.7.3-exists-in-select-decorrelation.sqllogic +107 -0
- package/test/logic/07.7.4-where-conjunct-ordering.sqllogic +121 -0
- package/test/logic/07.7.5-filter-lost-under-index-order.sqllogic +134 -0
- package/test/logic/07.7.6-correlated-predicate-scope.sqllogic +178 -0
- package/test/logic/07.7.7-join-source-scope-shadowing.sqllogic +137 -0
- package/test/logic/07.7.8-correlated-ref-to-computed-column.sqllogic +165 -0
- package/test/logic/07.7.9-conjunct-monotonicity.sqllogic +200 -0
- package/test/logic/07.8-correlated-subquery-edges.sqllogic +71 -0
- package/test/logic/07.8.1-correlated-in-decorrelation-gates.sqllogic +156 -0
- package/test/logic/07.9-in-value-list.sqllogic +154 -0
- package/test/logic/07.9.1-in-value-list-composite-index.sqllogic +38 -0
- package/test/logic/08-views.sqllogic +64 -0
- package/test/logic/08.1-semi-anti-join.sqllogic +191 -0
- package/test/logic/08.1-view-edge-cases.sqllogic +118 -0
- package/test/logic/08.1.1-uncorrelated-in-semijoin.sqllogic +251 -0
- package/test/logic/08.2-existence-flag-semijoin-recovery.sqllogic +197 -0
- package/test/logic/08.3-existence-flag-inner-recovery.sqllogic +102 -0
- package/test/logic/08.4-key-set-semi-join.sqllogic +447 -0
- package/test/logic/09-set_operations.sqllogic +244 -0
- package/test/logic/09.1-set-op-cross-collation.sqllogic +230 -0
- package/test/logic/10-distinct_datatypes.sqllogic +127 -0
- package/test/logic/10.1-ddl-lifecycle.sqllogic +203 -0
- package/test/logic/10.1.1-create-table-syntax-edges.sqllogic +47 -0
- package/test/logic/10.1.2-ddl-in-transaction.sqllogic +143 -0
- package/test/logic/10.1.2.1-add-constraint-in-transaction.sqllogic +59 -0
- package/test/logic/10.1.3-ddl-drop-in-transaction.sqllogic +187 -0
- package/test/logic/10.1.3.1-drop-constraint-in-transaction.sqllogic +45 -0
- package/test/logic/10.1.4-create-table-duplicate-constraint-names.sqllogic +149 -0
- package/test/logic/10.1.4-ddl-transaction-policy.sqllogic +314 -0
- package/test/logic/10.1.5-alter-add-constraint-minted-name-disambiguation.sqllogic +219 -0
- package/test/logic/10.1.5-create-index-lifecycle.sqllogic +72 -0
- package/test/logic/10.1.6-ddl-transaction-policy-index.sqllogic +143 -0
- package/test/logic/10.1.7-create-table-default-type-check.sqllogic +119 -0
- package/test/logic/10.1.8-alter-add-check-existing-rows.sqllogic +117 -0
- package/test/logic/10.2-column-features.sqllogic +365 -0
- package/test/logic/10.2.1-table-options-rejection.sqllogic +63 -0
- package/test/logic/10.2.2-default-collation-memory.sqllogic +30 -0
- package/test/logic/10.3-function-features.sqllogic +247 -0
- package/test/logic/10.4-schema-scale.sqllogic +168 -0
- package/test/logic/10.4.1-schema-scale-indexes.sqllogic +121 -0
- package/test/logic/10.5-indexes.sqllogic +164 -0
- package/test/logic/10.5.1-partial-indexes.sqllogic +526 -0
- package/test/logic/10.5.2-expression-indexes.sqllogic +34 -0
- package/test/logic/10.5.3-desc-index-ordering.sqllogic +130 -0
- package/test/logic/10.5.4-composite-pk-index-update-phantom.sqllogic +55 -0
- package/test/logic/10.5.5-index-name-uniqueness.sqllogic +76 -0
- package/test/logic/10.5.6-minmax-index-boundary.sqllogic +204 -0
- package/test/logic/10.5.7-implicit-unique-index-lifecycle.sqllogic +1216 -0
- package/test/logic/10.6-distinct-edge-cases.sqllogic +119 -0
- package/test/logic/100-predicate-normalization-edge-cases.sqllogic +238 -0
- package/test/logic/100.1-where-extras.sqllogic +163 -0
- package/test/logic/100.1.1-where-join-on-order-indexed.sqllogic +35 -0
- package/test/logic/101-builtin-mutation-kills.sqllogic +974 -0
- package/test/logic/101-transaction-edge-cases.sqllogic +395 -0
- package/test/logic/102-schema-catalog-edge-cases.sqllogic +252 -0
- package/test/logic/102-unique-constraints.sqllogic +145 -0
- package/test/logic/102.0.1-schema-catalog-indexed-table.sqllogic +32 -0
- package/test/logic/102.1-unique-edge-cases.sqllogic +111 -0
- package/test/logic/102.1.1-unique-index-creation-edge-cases.sqllogic +75 -0
- package/test/logic/102.2-unique-collation.sqllogic +181 -0
- package/test/logic/102.2.1-unique-collation-index-derived.sqllogic +305 -0
- package/test/logic/103-database-options-edge-cases.sqllogic +108 -0
- package/test/logic/103.1-pragma-boolean-values.sqllogic +126 -0
- package/test/logic/104-emit-mutation-kills.sqllogic +236 -0
- package/test/logic/105-vtab-memory-mutation-kills.sqllogic +754 -0
- package/test/logic/105.1-vtab-memory-index-mutation-kills.sqllogic +540 -0
- package/test/logic/106-constraint-extractor-mutation-kills.sqllogic +350 -0
- package/test/logic/107-temporal-arithmetic-mutation-kills.sqllogic +833 -0
- package/test/logic/108-cardinality-estimation.sqllogic +146 -0
- package/test/logic/108.1-analyze-name-resolution.sqllogic +102 -0
- package/test/logic/109-aggregate-physical-selection.sqllogic +103 -0
- package/test/logic/11-joins.sqllogic +86 -0
- package/test/logic/11.1-join-using.sqllogic +267 -0
- package/test/logic/11.2-comma-join.sqllogic +35 -0
- package/test/logic/11.3-index-nested-loop-join.sqllogic +305 -0
- package/test/logic/11.3-mismatched-collation-join.sqllogic +74 -0
- package/test/logic/11.4-hash-join-side-swap.sqllogic +118 -0
- package/test/logic/110-scan-emitter-mutation-kills.sqllogic +121 -0
- package/test/logic/110.1-scan-emitter-index-scan-kills.sqllogic +47 -0
- package/test/logic/12-empty-primary-key.sqllogic +124 -0
- package/test/logic/12-join_padding_order.sqllogic +58 -0
- package/test/logic/12.1-orderby-index-consumption.sqllogic +40 -0
- package/test/logic/13-cte.sqllogic +137 -0
- package/test/logic/13.1-cte-multiple-recursive.sqllogic +104 -0
- package/test/logic/13.10-cte-qualified-name.sqllogic +136 -0
- package/test/logic/13.11-unreferenced-dml-cte.sqllogic +414 -0
- package/test/logic/13.12-nested-dml-cte-rejected.sqllogic +280 -0
- package/test/logic/13.2-cte-bind-params.sqllogic +98 -0
- package/test/logic/13.3-cte-edge-cases.sqllogic +120 -0
- package/test/logic/13.4-cte-extras.sqllogic +98 -0
- package/test/logic/13.5-cte-join-order.sqllogic +166 -0
- package/test/logic/13.6-cte-dml-runs-once.sqllogic +318 -0
- package/test/logic/13.7-cte-sibling-visibility.sqllogic +227 -0
- package/test/logic/13.8-insert-with-clause-visibility.sqllogic +254 -0
- package/test/logic/13.9-schema-authored-cte-isolation.sqllogic +328 -0
- package/test/logic/13.9.1-schema-authored-schema-path-isolation.sqllogic +408 -0
- package/test/logic/14-utilities.sqllogic +168 -0
- package/test/logic/15-timespan.sqllogic +279 -0
- package/test/logic/15.1-semantic-ordering.sqllogic +960 -0
- package/test/logic/15.1.1-json-check-coercion.sqllogic +178 -0
- package/test/logic/15.1.2-semantic-ordering-index.sqllogic +41 -0
- package/test/logic/15.1.3-declared-form-write-contract.sqllogic +519 -0
- package/test/logic/16-epoch.sqllogic +187 -0
- package/test/logic/17-weekday-modifier.sqllogic +78 -0
- package/test/logic/18-json-string-escapes.sqllogic +86 -0
- package/test/logic/18-strftime-extended-formats.sqllogic +68 -0
- package/test/logic/20-empty-single-row.sqllogic +261 -0
- package/test/logic/21-null-edge-cases.sqllogic +227 -0
- package/test/logic/21.1-where-null-comparisons.sqllogic +151 -0
- package/test/logic/21.1.1-where-null-comparisons-secondary-index.sqllogic +35 -0
- package/test/logic/21.2-between-edges.sqllogic +157 -0
- package/test/logic/22-boundary-values.sqllogic +175 -0
- package/test/logic/23-self-joins-duplicates.sqllogic +74 -0
- package/test/logic/24-builtin-branches.sqllogic +611 -0
- package/test/logic/24.1-substr-extras.sqllogic +75 -0
- package/test/logic/24.2-random-extras.sqllogic +39 -0
- package/test/logic/25-aggregate-edge-cases.sqllogic +289 -0
- package/test/logic/25.1-nested-aggregates.sqllogic +74 -0
- package/test/logic/25.2-having-edge-cases.sqllogic +318 -0
- package/test/logic/25.3-aggregate-isnull-empty.sqllogic +16 -0
- package/test/logic/25.4-groupby-fd-constant-empty.sqllogic +55 -0
- package/test/logic/25.5-ungrouped-aggregate-column-free-select-item.sqllogic +196 -0
- package/test/logic/26-join-edge-cases.sqllogic +333 -0
- package/test/logic/26.1-left-join-isnull-on-notnull.sqllogic +26 -0
- package/test/logic/26.2-left-join-on-vs-where.sqllogic +67 -0
- package/test/logic/26.3-join-on-constants.sqllogic +61 -0
- package/test/logic/26.4-join-on-is-null-nullable.sqllogic +44 -0
- package/test/logic/27-window-edge-cases.sqllogic +206 -0
- package/test/logic/27.1-window-groups-frame.sqllogic +13 -0
- package/test/logic/27.2-window-exclude.sqllogic +13 -0
- package/test/logic/27.3-window-json-aggregation.sqllogic +66 -0
- package/test/logic/28-set-ops-sort-edge-cases.sqllogic +444 -0
- package/test/logic/28.1-compound-limit-offset.sqllogic +143 -0
- package/test/logic/28.2-orderby-expression-extras.sqllogic +698 -0
- package/test/logic/28.2-set-op-branch-types.sqllogic +217 -0
- package/test/logic/29-constraint-edge-cases.sqllogic +442 -0
- package/test/logic/29.1-column-level-conflict-clause.sqllogic +171 -0
- package/test/logic/29.2-table-level-pk-conflict-clause.sqllogic +113 -0
- package/test/logic/40-constraints.sqllogic +418 -0
- package/test/logic/40.1-pk-desc-direction.sqllogic +76 -0
- package/test/logic/40.2-check-extras.sqllogic +683 -0
- package/test/logic/41-alter-table.sqllogic +191 -0
- package/test/logic/41-fk-cascade-conflict-and-self-ref.sqllogic +263 -0
- package/test/logic/41-fk-cross-schema.sqllogic +155 -0
- package/test/logic/41-fk-extended-targets.sqllogic +173 -0
- package/test/logic/41-foreign-keys.sqllogic +1001 -0
- package/test/logic/41-generated-column-errors.sqllogic +225 -0
- package/test/logic/41-generated-column-extras.sqllogic +598 -0
- package/test/logic/41-generated-column-scope.sqllogic +329 -0
- package/test/logic/41-generated-columns.sqllogic +361 -0
- package/test/logic/41.1-alter-pk.sqllogic +230 -0
- package/test/logic/41.1-fk-collation-conflict.sqllogic +277 -0
- package/test/logic/41.10-alter-drop-column-foreign-key.sqllogic +274 -0
- package/test/logic/41.10.1-alter-drop-column-unique-index.sqllogic +169 -0
- package/test/logic/41.10.2-alter-drop-column-check-and-assertion.sqllogic +1616 -0
- package/test/logic/41.10.3-alter-drop-column-referencing-fk.sqllogic +292 -0
- package/test/logic/41.10.4-drop-object-expression-dependents.sqllogic +602 -0
- package/test/logic/41.11-deferred-fk-with-rename.sqllogic +232 -0
- package/test/logic/41.12-alter-default-coercion.sqllogic +200 -0
- package/test/logic/41.13-alter-add-column-generated-backfill.sqllogic +566 -0
- package/test/logic/41.14-alter-add-column-subquery-backfill.sqllogic +129 -0
- package/test/logic/41.15-alter-column-default-type-check.sqllogic +178 -0
- package/test/logic/41.16-fk-unenforceable.sqllogic +364 -0
- package/test/logic/41.2-alter-column.sqllogic +382 -0
- package/test/logic/41.2.1-alter-column-retype-deleted-row-memory.sqllogic +32 -0
- package/test/logic/41.2.2-alter-column-retype-index-rebuild.sqllogic +77 -0
- package/test/logic/41.2.3-alter-column-set-not-null-pk-backfill.sqllogic +310 -0
- package/test/logic/41.2.3.1-alter-column-set-not-null-pk-backfill-secondary-index.sqllogic +37 -0
- package/test/logic/41.3-alter-add-column-unique.sqllogic +184 -0
- package/test/logic/41.3-alter-rename-propagation.sqllogic +2352 -0
- package/test/logic/41.3.1-alter-rename-index-propagation.sqllogic +94 -0
- package/test/logic/41.4-alter-add-column-constraints.sqllogic +855 -0
- package/test/logic/41.5-alter-misc.sqllogic +48 -0
- package/test/logic/41.5-cross-schema-foreign-keys.sqllogic +253 -0
- package/test/logic/41.6-alter-drop-rename-constraint.sqllogic +354 -0
- package/test/logic/41.6.1-alter-drop-constraint-index-derived.sqllogic +22 -0
- package/test/logic/41.7-alter-column-collate.sqllogic +105 -0
- package/test/logic/41.7.1-alter-column-collate-unique.sqllogic +45 -0
- package/test/logic/41.7.2-alter-column-collate-unique-store.sqllogic +208 -0
- package/test/logic/41.7.2.1-alter-column-collate-unique-index-store.sqllogic +114 -0
- package/test/logic/41.7.3-alter-column-retype-unique.sqllogic +293 -0
- package/test/logic/41.7.3.1-alter-column-retype-staged-rows-memory.sqllogic +41 -0
- package/test/logic/41.7.3.2-alter-column-retype-unique-index.sqllogic +72 -0
- package/test/logic/41.7.4-alter-column-retype-semantic-memory.sqllogic +445 -0
- package/test/logic/41.7.4.1-alter-column-retype-semantic-index-memory.sqllogic +91 -0
- package/test/logic/41.7.5-alter-column-collate-pk-staged-delete-memory.sqllogic +106 -0
- package/test/logic/41.8-alter-add-constraint-unique-fk.sqllogic +275 -0
- package/test/logic/41.8-alter-savepoint-staged-rows.sqllogic +443 -0
- package/test/logic/41.8.1-alter-rename-savepoint-staged-rows.sqllogic +408 -0
- package/test/logic/41.9-alter-constraint-body-change.sqllogic +180 -0
- package/test/logic/41.9-fk-restrict-batched.sqllogic +290 -0
- package/test/logic/42-committed-snapshot.sqllogic +254 -0
- package/test/logic/42-returning.sqllogic +159 -0
- package/test/logic/42.1-returning-extras.sqllogic +232 -0
- package/test/logic/42.2-returning-stored-row.sqllogic +165 -0
- package/test/logic/43-default-nullability.sqllogic +131 -0
- package/test/logic/43-transition-constraints.sqllogic +341 -0
- package/test/logic/43.1-default-collation.sqllogic +140 -0
- package/test/logic/43.1-notnull-or-conflict.sqllogic +79 -0
- package/test/logic/43.2-deferred-check-new-on-delete.sqllogic +95 -0
- package/test/logic/43.3-nullable-primary-key.sqllogic +587 -0
- package/test/logic/44-determinism-validation.sqllogic +164 -0
- package/test/logic/44-orthogonality.sqllogic +146 -0
- package/test/logic/44.1-nondeterministic-schema.sqllogic +316 -0
- package/test/logic/45-udf-determinism.sqllogic +39 -0
- package/test/logic/46-mutation-context.sqllogic +595 -0
- package/test/logic/47-upsert.sqllogic +255 -0
- package/test/logic/47.1-upsert-conflict-targets.sqllogic +169 -0
- package/test/logic/47.2-replace-and-or-clauses.sqllogic +164 -0
- package/test/logic/47.2.1-pk-replace-secondary-unique.sqllogic +374 -0
- package/test/logic/47.3-engine-or-fail.sqllogic +122 -0
- package/test/logic/47.3-upsert-conflict-target-collation.sqllogic +139 -0
- package/test/logic/47.3.1-upsert-conflict-index-derived-collation.sqllogic +25 -0
- package/test/logic/47.4-upsert-conflict-target-affinity.sqllogic +59 -0
- package/test/logic/47.5-upsert-do-update-constraints.sqllogic +440 -0
- package/test/logic/47.6-upsert-do-update-decomposed.sqllogic +100 -0
- package/test/logic/49-reference-graph.sqllogic +84 -0
- package/test/logic/50-declarative-schema.sqllogic +2550 -0
- package/test/logic/50-metadata-tags.sqllogic +1033 -0
- package/test/logic/50.0.1-metadata-tags-index.sqllogic +141 -0
- package/test/logic/50.1-declare-schema-pk.sqllogic +150 -0
- package/test/logic/50.2-declare-schema-renames.sqllogic +949 -0
- package/test/logic/50.2.1-declare-schema-index-renames.sqllogic +210 -0
- package/test/logic/50.3-declare-schema-duplicate-names.sqllogic +280 -0
- package/test/logic/50.4-declare-schema-apply-restore.sqllogic +192 -0
- package/test/logic/51-lens-foundation.sqllogic +147 -0
- package/test/logic/51-materialized-views.sqllogic +376 -0
- package/test/logic/51.5-materialized-views-coarsened-key.sqllogic +198 -0
- package/test/logic/51.7-maintained-table-attach-detach.sqllogic +468 -0
- package/test/logic/51.8-maintained-table-declared-constraints.sqllogic +440 -0
- package/test/logic/51.85-maintained-table-parent-fk.sqllogic +103 -0
- package/test/logic/51.9-maintained-table-secondary-unique.sqllogic +237 -0
- package/test/logic/51.9.1-maintained-table-partial-unique.sqllogic +36 -0
- package/test/logic/52-lens-overrides.sqllogic +566 -0
- package/test/logic/53-materialized-views-rowtime.sqllogic +1601 -0
- package/test/logic/53-reserved-tags.sqllogic +252 -0
- package/test/logic/53.1-materialized-view-write-through.sqllogic +329 -0
- package/test/logic/53.2-materialized-view-rename-propagation.sqllogic +483 -0
- package/test/logic/53.3-materialized-view-constraint-only-ddl.sqllogic +409 -0
- package/test/logic/53.3.1-materialized-view-index-ddl-irrelevance.sqllogic +29 -0
- package/test/logic/53.4-materialized-view-structural-alter-restore.sqllogic +436 -0
- package/test/logic/54-covering-mv-enforcement.sqllogic +314 -0
- package/test/logic/54.1-covering-mv-partial-enforcement.sqllogic +34 -0
- package/test/logic/55-internal-eviction-reporting.sqllogic +89 -0
- package/test/logic/55-lens-prover.sqllogic +202 -0
- package/test/logic/55.1-eviction-restrict-fk.sqllogic +148 -0
- package/test/logic/55.5-lens-authored-inverse.sqllogic +1468 -0
- package/test/logic/80-grow-retrieve-pass.sqllogic +79 -0
- package/test/logic/81-quickpick.sqllogic +24 -0
- package/test/logic/82-bloom-join.sqllogic +185 -0
- package/test/logic/83-merge-join.sqllogic +280 -0
- package/test/logic/84-asof-scan.sqllogic +238 -0
- package/test/logic/84-key-cardinality.sqllogic +50 -0
- package/test/logic/85-relational-const-folding.sqllogic +51 -0
- package/test/logic/86-scalar-cse.sqllogic +42 -0
- package/test/logic/90-error_paths.sqllogic +114 -0
- package/test/logic/90.1-parse-errors.sqllogic +77 -0
- package/test/logic/90.2-alter-table-errors.sqllogic +53 -0
- package/test/logic/90.2.1-alter-extra-errors.sqllogic +51 -0
- package/test/logic/90.3-expression-errors.sqllogic +43 -0
- package/test/logic/90.4-dml-errors.sqllogic +47 -0
- package/test/logic/90.5-unsupported-join-types.sqllogic +37 -0
- package/test/logic/90.5.1-right-full-join-read.sqllogic +157 -0
- package/test/logic/90.6-select-error-paths.sqllogic +57 -0
- package/test/logic/91-merge-join-edge-cases.sqllogic +159 -0
- package/test/logic/92-hash-aggregate-edge-cases.sqllogic +139 -0
- package/test/logic/93-ddl-view-edge-cases.sqllogic +104 -0
- package/test/logic/93.1-view-error-paths.sqllogic +74 -0
- package/test/logic/93.2-view-mutation-pending.sqllogic +108 -0
- package/test/logic/93.3-view-mutation-or-clause.sqllogic +60 -0
- package/test/logic/93.4-view-mutation.sqllogic +4881 -0
- package/test/logic/93.4.1-view-mutation-partial-unique-cardinality.sqllogic +31 -0
- package/test/logic/93.5-authored-inverse.sqllogic +415 -0
- package/test/logic/93.6-set-op-flagless-write.sqllogic +862 -0
- package/test/logic/94-tvf-edge-cases.sqllogic +58 -0
- package/test/logic/94.1-limit-offset-edge-cases.sqllogic +109 -0
- package/test/logic/94.2-limit-offset-extras.sqllogic +98 -0
- package/test/logic/95-assertions.sqllogic +1417 -0
- package/test/logic/96-subquery-edge-cases.sqllogic +276 -0
- package/test/logic/97-json-function-edge-cases.sqllogic +633 -0
- package/test/logic/97.1-json-blob-and-special-values.sqllogic +92 -0
- package/test/logic/98-temporal-edge-cases.sqllogic +515 -0
- package/test/logic/99-conversion-edge-cases.sqllogic +325 -0
- package/test/logic/99.0.1-schema-index-listing.sqllogic +21 -0
- package/test/logic/99.1-cast-syntax-extras.sqllogic +167 -0
- package/test/logic/drop-unique-index.sqllogic +88 -0
- package/test/logic/pushdown-test.sqllogic +36 -0
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
-- 51.9-maintained-table-secondary-unique.sqllogic — declared secondary
|
|
2
|
+
-- (non-PK) UNIQUE constraints on a `create table … maintained as` table are
|
|
3
|
+
-- enforced against the rows the DERIVATION writes: the create-fill, the
|
|
4
|
+
-- attach/re-attach reconcile, steady-state row-time maintenance, and the
|
|
5
|
+
-- full-rebuild flush. A collision throws a CONSTRAINT error attributed to the
|
|
6
|
+
-- maintained table, naming the constraint and the colliding key values.
|
|
7
|
+
-- Enforcement is post-batch against the final effective contents, so a
|
|
8
|
+
-- maintenance batch that MOVES a unique value between primary keys (the
|
|
9
|
+
-- reconcile diff applies its inserts before its deletes) never false-positives.
|
|
10
|
+
|
|
11
|
+
-- ===================================
|
|
12
|
+
-- 1. create-fill collision: two derived rows collide on the declared UNIQUE
|
|
13
|
+
-- ===================================
|
|
14
|
+
|
|
15
|
+
create table src (id integer primary key, tag text);
|
|
16
|
+
insert into src values (1, 'x'), (2, 'x');
|
|
17
|
+
|
|
18
|
+
create table mt (id integer primary key, tag text unique) maintained as select id, tag from src;
|
|
19
|
+
-- error: row derived into maintained table 'main.mt' collides on its declared UNIQUE constraint
|
|
20
|
+
|
|
21
|
+
-- the failed create left nothing behind: the name is free for a plain create
|
|
22
|
+
create table mt (id integer primary key);
|
|
23
|
+
drop table mt;
|
|
24
|
+
|
|
25
|
+
-- ===================================
|
|
26
|
+
-- 2. steady state: insert and update images collide against existing derived rows
|
|
27
|
+
-- ===================================
|
|
28
|
+
|
|
29
|
+
delete from src where id = 2;
|
|
30
|
+
create table mt (id integer primary key, tag text unique) maintained as select id, tag from src;
|
|
31
|
+
|
|
32
|
+
insert into src values (3, 'x');
|
|
33
|
+
-- error: row derived into maintained table 'main.mt'
|
|
34
|
+
|
|
35
|
+
-- the violating source statement rolled back whole
|
|
36
|
+
select count(*) as n from src;
|
|
37
|
+
→ [{"n":1}]
|
|
38
|
+
select * from mt order by id;
|
|
39
|
+
→ [{"id":1,"tag":"x"}]
|
|
40
|
+
|
|
41
|
+
-- a multi-row statement: the second row collides with the first row's pending image
|
|
42
|
+
insert into src values (5, 'q'), (6, 'q');
|
|
43
|
+
-- error: row derived into maintained table 'main.mt'
|
|
44
|
+
select count(*) as n from src;
|
|
45
|
+
→ [{"n":1}]
|
|
46
|
+
|
|
47
|
+
-- a derived UPDATE image collides too
|
|
48
|
+
insert into src values (2, 'y');
|
|
49
|
+
update src set tag = 'x' where id = 2;
|
|
50
|
+
-- error: row derived into maintained table 'main.mt'
|
|
51
|
+
select tag from mt where id = 2;
|
|
52
|
+
→ [{"tag":"y"}]
|
|
53
|
+
|
|
54
|
+
-- same-PK update of the unique column to a fresh value succeeds (a row never
|
|
55
|
+
-- collides with itself)
|
|
56
|
+
update src set tag = 'z' where id = 2;
|
|
57
|
+
select * from mt order by id;
|
|
58
|
+
→ [{"id":1,"tag":"x"},{"id":2,"tag":"z"}]
|
|
59
|
+
|
|
60
|
+
-- moving the unique value to a different primary key in one statement succeeds
|
|
61
|
+
-- (delete + upsert land in one maintenance batch; enforcement is post-batch)
|
|
62
|
+
update src set id = 9 where id = 1;
|
|
63
|
+
select * from mt order by id;
|
|
64
|
+
→ [{"id":2,"tag":"z"},{"id":9,"tag":"x"}]
|
|
65
|
+
|
|
66
|
+
-- ===================================
|
|
67
|
+
-- 3. collation: case-only variants collide under a NOCASE UNIQUE column
|
|
68
|
+
-- ===================================
|
|
69
|
+
|
|
70
|
+
create table csrc (id integer primary key, code text collate nocase);
|
|
71
|
+
insert into csrc values (1, 'Alpha');
|
|
72
|
+
create table mc (id integer primary key, code text collate nocase unique) maintained as select id, code from csrc;
|
|
73
|
+
|
|
74
|
+
insert into csrc values (2, 'ALPHA');
|
|
75
|
+
-- error: row derived into maintained table 'main.mc'
|
|
76
|
+
select count(*) as n from mc;
|
|
77
|
+
→ [{"n":1}]
|
|
78
|
+
|
|
79
|
+
-- a genuinely different value flows
|
|
80
|
+
insert into csrc values (2, 'beta');
|
|
81
|
+
select count(*) as n from mc;
|
|
82
|
+
→ [{"n":2}]
|
|
83
|
+
|
|
84
|
+
-- ===================================
|
|
85
|
+
-- 4. NULLs are distinct: multiple derived NULL rows coexist
|
|
86
|
+
-- ===================================
|
|
87
|
+
|
|
88
|
+
create table nsrc (id integer primary key, tag text null);
|
|
89
|
+
insert into nsrc values (1, null), (2, null);
|
|
90
|
+
create table mn (id integer primary key, tag text null unique) maintained as select id, tag from nsrc;
|
|
91
|
+
select count(*) as n from mn;
|
|
92
|
+
→ [{"n":2}]
|
|
93
|
+
insert into nsrc values (3, null);
|
|
94
|
+
select count(*) as n from mn;
|
|
95
|
+
→ [{"n":3}]
|
|
96
|
+
|
|
97
|
+
-- ===================================
|
|
98
|
+
-- 5. partial UNIQUE (unique index … where): only in-scope rows collide
|
|
99
|
+
-- ===================================
|
|
100
|
+
-- Lives in 51.9.1-maintained-table-partial-unique: a partial UNIQUE can only be
|
|
101
|
+
-- spelled as `create unique index … where …`, so it needs standalone index DDL.
|
|
102
|
+
|
|
103
|
+
-- ===================================
|
|
104
|
+
-- 6. a declared per-constraint conflict default never masks a derivation
|
|
105
|
+
-- collision: eviction would silently diverge the table from its derivation
|
|
106
|
+
-- ===================================
|
|
107
|
+
|
|
108
|
+
create table rsrc (id integer primary key, email text);
|
|
109
|
+
insert into rsrc values (1, 'a@x');
|
|
110
|
+
create table mre (id integer primary key, email text unique on conflict replace) maintained as select id, email from rsrc;
|
|
111
|
+
|
|
112
|
+
insert into rsrc values (2, 'a@x');
|
|
113
|
+
-- error: row derived into maintained table 'main.mre'
|
|
114
|
+
select count(*) as n from mre;
|
|
115
|
+
→ [{"n":1}]
|
|
116
|
+
|
|
117
|
+
-- ===================================
|
|
118
|
+
-- 7. attach / re-attach reconcile
|
|
119
|
+
-- ===================================
|
|
120
|
+
|
|
121
|
+
-- a reconcile that MOVES a unique value between primary keys succeeds (the
|
|
122
|
+
-- replace-all diff inserts before it deletes; enforcement is post-batch)
|
|
123
|
+
create table b1 (id integer primary key, tag text);
|
|
124
|
+
insert into b1 values (2, 'x');
|
|
125
|
+
create table tgt (id integer primary key, tag text unique);
|
|
126
|
+
insert into tgt values (1, 'x');
|
|
127
|
+
alter table tgt set maintained as select id, tag from b1;
|
|
128
|
+
select * from tgt order by id;
|
|
129
|
+
→ [{"id":2,"tag":"x"}]
|
|
130
|
+
|
|
131
|
+
-- a derivation producing a colliding pair fails the attach; the table reverts
|
|
132
|
+
-- to plain, rows intact
|
|
133
|
+
alter table tgt drop maintained;
|
|
134
|
+
create table b2 (id integer primary key, tag text);
|
|
135
|
+
insert into b2 values (3, 'x'), (4, 'x');
|
|
136
|
+
alter table tgt set maintained as select id, tag from b2;
|
|
137
|
+
-- error: row derived into maintained table 'main.tgt'
|
|
138
|
+
insert into tgt values (5, 'other');
|
|
139
|
+
select count(*) as n from tgt;
|
|
140
|
+
→ [{"n":2}]
|
|
141
|
+
|
|
142
|
+
-- re-attach failure restores the PRIOR derivation (and its row-time plan)
|
|
143
|
+
create table a1 (id integer primary key, tag text);
|
|
144
|
+
insert into a1 values (1, 'p');
|
|
145
|
+
create table a2 (id integer primary key, tag text);
|
|
146
|
+
insert into a2 values (1, 'd'), (2, 'd');
|
|
147
|
+
create table ma (id integer primary key, tag text unique) maintained as select id, tag from a1;
|
|
148
|
+
alter table ma set maintained as select id, tag from a2;
|
|
149
|
+
-- error: row derived into maintained table 'main.ma'
|
|
150
|
+
select * from ma;
|
|
151
|
+
→ [{"id":1,"tag":"p"}]
|
|
152
|
+
insert into a1 values (2, 'r');
|
|
153
|
+
select count(*) as n from ma;
|
|
154
|
+
→ [{"n":2}]
|
|
155
|
+
|
|
156
|
+
-- ===================================
|
|
157
|
+
-- 8. MV-over-MV cascade: the consumer's own declared UNIQUE validates its
|
|
158
|
+
-- cascaded deltas
|
|
159
|
+
-- ===================================
|
|
160
|
+
|
|
161
|
+
create table base (id integer primary key, v text);
|
|
162
|
+
insert into base values (1, 'one');
|
|
163
|
+
create table mt1 (id integer primary key, v text) maintained as select id, v from base;
|
|
164
|
+
create table mt2 (id integer primary key, v text unique) maintained as select id, v from mt1;
|
|
165
|
+
|
|
166
|
+
insert into base values (2, 'one');
|
|
167
|
+
-- error: row derived into maintained table 'main.mt2'
|
|
168
|
+
select count(*) as n from base;
|
|
169
|
+
→ [{"n":1}]
|
|
170
|
+
select count(*) as n from mt2;
|
|
171
|
+
→ [{"n":1}]
|
|
172
|
+
|
|
173
|
+
-- ===================================
|
|
174
|
+
-- 9. full-rebuild floor: the rebuild diff is UNIQUE-checked once at the flush
|
|
175
|
+
-- ===================================
|
|
176
|
+
|
|
177
|
+
-- DISTINCT falls to the full-rebuild arm; the all-columns key is the declared
|
|
178
|
+
-- (integer-only — store text PKs collate NOCASE) primary key, with a declared
|
|
179
|
+
-- secondary UNIQUE on m
|
|
180
|
+
create table fsrc (id integer primary key, n integer, m integer);
|
|
181
|
+
insert into fsrc values (1, 10, 7);
|
|
182
|
+
create table mfr (n integer, m integer, primary key (n, m), unique (m)) maintained as select distinct n, m from fsrc;
|
|
183
|
+
|
|
184
|
+
insert into fsrc values (2, 20, 7);
|
|
185
|
+
-- error: row derived into maintained table 'main.mfr'
|
|
186
|
+
select count(*) as cnt from fsrc;
|
|
187
|
+
→ [{"cnt":1}]
|
|
188
|
+
|
|
189
|
+
-- a rebuild that moves the unique value between primary keys succeeds
|
|
190
|
+
update fsrc set n = 30 where id = 1;
|
|
191
|
+
select * from mfr;
|
|
192
|
+
→ [{"n":30,"m":7}]
|
|
193
|
+
|
|
194
|
+
-- ===================================
|
|
195
|
+
-- 10. detach: every committed row already satisfies the UNIQUE, which becomes
|
|
196
|
+
-- user-enforced — no stranded violators
|
|
197
|
+
-- ===================================
|
|
198
|
+
|
|
199
|
+
alter table mt drop maintained;
|
|
200
|
+
insert into mt values (10, 'x');
|
|
201
|
+
-- error: UNIQUE constraint failed
|
|
202
|
+
insert into mt values (10, 'w');
|
|
203
|
+
select count(*) as n from mt;
|
|
204
|
+
→ [{"n":3}]
|
|
205
|
+
|
|
206
|
+
-- ===================================
|
|
207
|
+
-- 11. zero-overhead regression: maintained tables without a secondary UNIQUE
|
|
208
|
+
-- and the MV sugar store duplicate non-key values exactly as before
|
|
209
|
+
-- ===================================
|
|
210
|
+
|
|
211
|
+
create table z (id integer primary key, v text);
|
|
212
|
+
insert into z values (1, 'dup'), (2, 'dup');
|
|
213
|
+
create table mz (id integer primary key, v text) maintained as select id, v from z;
|
|
214
|
+
create materialized view vz as select id, v from z;
|
|
215
|
+
insert into z values (3, 'dup');
|
|
216
|
+
select count(*) as n from mz;
|
|
217
|
+
→ [{"n":3}]
|
|
218
|
+
select count(*) as n from vz;
|
|
219
|
+
→ [{"n":3}]
|
|
220
|
+
|
|
221
|
+
-- ===================================
|
|
222
|
+
-- 12. intra-statement value swap: bounded-delta maintenance applies per source
|
|
223
|
+
-- row, so a swap across two source rows aborts mid-statement exactly like the
|
|
224
|
+
-- equivalent multi-row UPDATE on an ordinary table (docs/materialized-views.md
|
|
225
|
+
-- § Declared secondary UNIQUE); the statement rolls back whole
|
|
226
|
+
-- ===================================
|
|
227
|
+
|
|
228
|
+
create table wsrc (id integer primary key, tag text);
|
|
229
|
+
insert into wsrc values (1, 'a'), (2, 'b');
|
|
230
|
+
create table mw (id integer primary key, tag text unique) maintained as select id, tag from wsrc;
|
|
231
|
+
|
|
232
|
+
update wsrc set tag = case id when 1 then 'b' else 'a' end;
|
|
233
|
+
-- error: row derived into maintained table 'main.mw'
|
|
234
|
+
select * from mw order by id;
|
|
235
|
+
→ [{"id":1,"tag":"a"},{"id":2,"tag":"b"}]
|
|
236
|
+
select * from wsrc order by id;
|
|
237
|
+
→ [{"id":1,"tag":"a"},{"id":2,"tag":"b"}]
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
-- 51.9.1-maintained-table-partial-unique.sqllogic
|
|
2
|
+
--
|
|
3
|
+
-- requires-capability: standalone-index-ddl
|
|
4
|
+
--
|
|
5
|
+
-- Carved out of 51.9-maintained-table-secondary-unique: every other section there
|
|
6
|
+
-- declares its secondary UNIQUE inline or table-level. A PARTIAL unique constraint has
|
|
7
|
+
-- no declarative spelling in this engine — `create unique index … where …` is the only
|
|
8
|
+
-- way to express it — so this section is the file's one piece of index DDL.
|
|
9
|
+
--
|
|
10
|
+
-- Subject: a partial UNIQUE on a maintained (derivation) table collides only on rows
|
|
11
|
+
-- inside the predicate's scope, including when a source write moves a row INTO scope.
|
|
12
|
+
|
|
13
|
+
-- ===================================
|
|
14
|
+
-- partial UNIQUE (unique index … where): only in-scope rows collide
|
|
15
|
+
-- ===================================
|
|
16
|
+
|
|
17
|
+
create table psrc (id integer primary key, code text, status text);
|
|
18
|
+
insert into psrc values (1, 'c1', 'active'), (2, 'c1', 'archived');
|
|
19
|
+
create table mp (id integer primary key, code text, status text);
|
|
20
|
+
create unique index mp_active_code on mp(code) where status = 'active';
|
|
21
|
+
alter table mp set maintained as select id, code, status from psrc;
|
|
22
|
+
|
|
23
|
+
-- an out-of-scope duplicate is fine
|
|
24
|
+
insert into psrc values (3, 'c1', 'archived');
|
|
25
|
+
select count(*) as n from mp;
|
|
26
|
+
→ [{"n":3}]
|
|
27
|
+
|
|
28
|
+
-- an in-scope duplicate rejects
|
|
29
|
+
insert into psrc values (4, 'c1', 'active');
|
|
30
|
+
-- error: row derived into maintained table 'main.mp'
|
|
31
|
+
|
|
32
|
+
-- a source write transitioning a row INTO the predicate's scope collides too
|
|
33
|
+
update psrc set status = 'active' where id = 2;
|
|
34
|
+
-- error: row derived into maintained table 'main.mp'
|
|
35
|
+
select count(*) as n from mp;
|
|
36
|
+
→ [{"n":3}]
|