@quereus/quereus 4.20.1 → 4.20.2
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/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 +173 -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,104 @@
|
|
|
1
|
+
-- ddl-view-edge-cases.sqllogic - View DDL and constraint edge cases
|
|
2
|
+
-- Targets: create-view.ts, drop-view.ts, add-constraint.ts
|
|
3
|
+
|
|
4
|
+
-- ===== VIEW DDL EDGE CASES =====
|
|
5
|
+
|
|
6
|
+
CREATE TABLE v_base (id INTEGER PRIMARY KEY, name TEXT, val INTEGER);
|
|
7
|
+
INSERT INTO v_base VALUES (1, 'Alpha', 10), (2, 'Beta', 20), (3, 'Gamma', 30);
|
|
8
|
+
|
|
9
|
+
-- Basic view creation and query
|
|
10
|
+
CREATE VIEW v_test AS SELECT id, name FROM v_base WHERE val > 15;
|
|
11
|
+
SELECT * FROM v_test ORDER BY id;
|
|
12
|
+
→ [{"id":2,"name":"Beta"},{"id":3,"name":"Gamma"}]
|
|
13
|
+
|
|
14
|
+
-- expect error: duplicate view name without IF NOT EXISTS
|
|
15
|
+
CREATE VIEW v_test AS SELECT id FROM v_base;
|
|
16
|
+
-- error: already exists
|
|
17
|
+
|
|
18
|
+
-- CREATE VIEW IF NOT EXISTS on existing view → no-op, original definition preserved
|
|
19
|
+
CREATE VIEW IF NOT EXISTS v_test AS SELECT id FROM v_base;
|
|
20
|
+
SELECT * FROM v_test ORDER BY id;
|
|
21
|
+
→ [{"id":2,"name":"Beta"},{"id":3,"name":"Gamma"}]
|
|
22
|
+
|
|
23
|
+
-- DROP VIEW (normal success case)
|
|
24
|
+
DROP VIEW v_test;
|
|
25
|
+
-- run
|
|
26
|
+
|
|
27
|
+
-- expect error: DROP VIEW on nonexistent without IF EXISTS
|
|
28
|
+
DROP VIEW v_test;
|
|
29
|
+
-- error: does not exist
|
|
30
|
+
|
|
31
|
+
-- DROP VIEW IF EXISTS on nonexistent → no-op (no error)
|
|
32
|
+
DROP VIEW IF EXISTS v_test;
|
|
33
|
+
SELECT 1 AS ok;
|
|
34
|
+
→ [{"ok":1}]
|
|
35
|
+
|
|
36
|
+
-- CREATE VIEW IF NOT EXISTS when view doesn't exist → creates it
|
|
37
|
+
CREATE VIEW IF NOT EXISTS v_new AS SELECT id, val FROM v_base;
|
|
38
|
+
SELECT * FROM v_new ORDER BY id;
|
|
39
|
+
→ [{"id":1,"val":10},{"id":2,"val":20},{"id":3,"val":30}]
|
|
40
|
+
|
|
41
|
+
-- DROP VIEW IF EXISTS on existing → drops it
|
|
42
|
+
DROP VIEW IF EXISTS v_new;
|
|
43
|
+
SELECT 1 AS ok;
|
|
44
|
+
→ [{"ok":1}]
|
|
45
|
+
|
|
46
|
+
-- Verify it's actually gone
|
|
47
|
+
SELECT * FROM v_new;
|
|
48
|
+
-- error: not found
|
|
49
|
+
|
|
50
|
+
-- Drop and recreate with different definition
|
|
51
|
+
CREATE VIEW v_redef AS SELECT name FROM v_base;
|
|
52
|
+
SELECT * FROM v_redef ORDER BY name;
|
|
53
|
+
→ [{"name":"Alpha"},{"name":"Beta"},{"name":"Gamma"}]
|
|
54
|
+
|
|
55
|
+
DROP VIEW v_redef;
|
|
56
|
+
CREATE VIEW v_redef AS SELECT val FROM v_base WHERE val < 25;
|
|
57
|
+
SELECT * FROM v_redef ORDER BY val;
|
|
58
|
+
→ [{"val":10},{"val":20}]
|
|
59
|
+
|
|
60
|
+
DROP VIEW v_redef;
|
|
61
|
+
DROP TABLE v_base;
|
|
62
|
+
|
|
63
|
+
-- ===== CONSTRAINT EDGE CASES =====
|
|
64
|
+
|
|
65
|
+
-- Named CHECK constraint via ALTER TABLE ADD CONSTRAINT
|
|
66
|
+
CREATE TABLE t_chk (id INTEGER PRIMARY KEY, val INTEGER NULL);
|
|
67
|
+
INSERT INTO t_chk VALUES (1, 10);
|
|
68
|
+
|
|
69
|
+
ALTER TABLE t_chk ADD CONSTRAINT val_nonneg CHECK (val >= 0);
|
|
70
|
+
|
|
71
|
+
-- Valid insert passes constraint
|
|
72
|
+
INSERT INTO t_chk VALUES (2, 5);
|
|
73
|
+
SELECT * FROM t_chk ORDER BY id;
|
|
74
|
+
→ [{"id":1,"val":10},{"id":2,"val":5}]
|
|
75
|
+
|
|
76
|
+
-- Violating insert fails
|
|
77
|
+
INSERT INTO t_chk VALUES (3, -1);
|
|
78
|
+
-- error: CHECK constraint failed
|
|
79
|
+
|
|
80
|
+
-- NULL should pass CHECK (SQL standard: NULL is UNKNOWN, not FALSE)
|
|
81
|
+
INSERT INTO t_chk VALUES (4, null);
|
|
82
|
+
SELECT id, val FROM t_chk WHERE id = 4;
|
|
83
|
+
→ [{"id":4,"val":null}]
|
|
84
|
+
|
|
85
|
+
DROP TABLE t_chk;
|
|
86
|
+
|
|
87
|
+
-- Multiple named constraints on same table
|
|
88
|
+
CREATE TABLE t_multi_chk (id INTEGER PRIMARY KEY, a INTEGER NULL, b INTEGER NULL);
|
|
89
|
+
ALTER TABLE t_multi_chk ADD CONSTRAINT chk_a CHECK (a > 0);
|
|
90
|
+
ALTER TABLE t_multi_chk ADD CONSTRAINT chk_b CHECK (b > 0);
|
|
91
|
+
|
|
92
|
+
INSERT INTO t_multi_chk VALUES (1, 10, 20);
|
|
93
|
+
SELECT * FROM t_multi_chk;
|
|
94
|
+
→ [{"id":1,"a":10,"b":20}]
|
|
95
|
+
|
|
96
|
+
-- Violates first constraint
|
|
97
|
+
INSERT INTO t_multi_chk VALUES (2, -1, 20);
|
|
98
|
+
-- error: CHECK constraint failed
|
|
99
|
+
|
|
100
|
+
-- Violates second constraint
|
|
101
|
+
INSERT INTO t_multi_chk VALUES (3, 10, -1);
|
|
102
|
+
-- error: CHECK constraint failed
|
|
103
|
+
|
|
104
|
+
DROP TABLE t_multi_chk;
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
-- adapted from SQLite test/view.test
|
|
2
|
+
-- View error / rejection paths.
|
|
3
|
+
|
|
4
|
+
-- ===================================
|
|
5
|
+
-- 1. View querying a dropped underlying table
|
|
6
|
+
-- ===================================
|
|
7
|
+
|
|
8
|
+
create table mb_base (id integer primary key, val integer);
|
|
9
|
+
insert into mb_base values (1, 10);
|
|
10
|
+
create view mb_v as select id, val from mb_base;
|
|
11
|
+
|
|
12
|
+
select * from mb_v;
|
|
13
|
+
→ [{"id":1,"val":10}]
|
|
14
|
+
|
|
15
|
+
drop table mb_base;
|
|
16
|
+
|
|
17
|
+
-- Querying view after base table dropped should error
|
|
18
|
+
select * from mb_v;
|
|
19
|
+
-- error: not found
|
|
20
|
+
|
|
21
|
+
drop view mb_v;
|
|
22
|
+
|
|
23
|
+
-- ===================================
|
|
24
|
+
-- 2. Mutations through a single-source projection view (updateable)
|
|
25
|
+
-- ===================================
|
|
26
|
+
|
|
27
|
+
create table rom_base (id integer primary key, val integer);
|
|
28
|
+
insert into rom_base values (1, 10);
|
|
29
|
+
create view rom_v as select id, val from rom_base;
|
|
30
|
+
|
|
31
|
+
insert into rom_v values (2, 20);
|
|
32
|
+
|
|
33
|
+
update rom_v set val = 99 where id = 1;
|
|
34
|
+
|
|
35
|
+
delete from rom_v where id = 1;
|
|
36
|
+
|
|
37
|
+
-- View now reflects the base writes routed through it.
|
|
38
|
+
select * from rom_v order by id;
|
|
39
|
+
→ [{"id":2,"val":20}]
|
|
40
|
+
|
|
41
|
+
drop view rom_v;
|
|
42
|
+
drop table rom_base;
|
|
43
|
+
|
|
44
|
+
-- ===================================
|
|
45
|
+
-- 3. DROP TABLE on a view / DROP VIEW on a table
|
|
46
|
+
-- ===================================
|
|
47
|
+
|
|
48
|
+
create table dm_base (id integer primary key);
|
|
49
|
+
create view dm_v as select id from dm_base;
|
|
50
|
+
|
|
51
|
+
drop table dm_v;
|
|
52
|
+
-- error:
|
|
53
|
+
|
|
54
|
+
drop view dm_base;
|
|
55
|
+
-- error:
|
|
56
|
+
|
|
57
|
+
drop view dm_v;
|
|
58
|
+
drop table dm_base;
|
|
59
|
+
|
|
60
|
+
-- ===================================
|
|
61
|
+
-- 4. ALTER TABLE on a view rejected
|
|
62
|
+
-- ===================================
|
|
63
|
+
|
|
64
|
+
create table at_base (id integer primary key, x integer);
|
|
65
|
+
create view at_v as select id, x from at_base;
|
|
66
|
+
|
|
67
|
+
alter table at_v rename to at_v2;
|
|
68
|
+
-- error:
|
|
69
|
+
|
|
70
|
+
alter table at_v add column y integer null;
|
|
71
|
+
-- error:
|
|
72
|
+
|
|
73
|
+
drop view at_v;
|
|
74
|
+
drop table at_base;
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
-- View updateability — Phase 1 rejections.
|
|
2
|
+
-- Honest contract of body shapes NOT handled yet; each must raise a diagnostic.
|
|
3
|
+
|
|
4
|
+
create table t (id integer primary key, name text);
|
|
5
|
+
create table t2 (id integer primary key, name text);
|
|
6
|
+
|
|
7
|
+
-- Computed-lineage projection: a computed view column is read-only (no-inverse),
|
|
8
|
+
-- named in the diagnostic.
|
|
9
|
+
create view vc as select id, length(name) as name_len from t;
|
|
10
|
+
|
|
11
|
+
insert into vc (id, name_len) values (1, 5);
|
|
12
|
+
-- error: name_len
|
|
13
|
+
|
|
14
|
+
update vc set name_len = 9 where id = 1;
|
|
15
|
+
-- error: name_len
|
|
16
|
+
|
|
17
|
+
-- Aggregate body: not row-decomposable.
|
|
18
|
+
create view va as select count(*) as c from t;
|
|
19
|
+
|
|
20
|
+
insert into va (c) values (1);
|
|
21
|
+
-- error: cannot write through view
|
|
22
|
+
|
|
23
|
+
-- Set-operation (UNION) body.
|
|
24
|
+
create view vu as select id from t union all select id from t2;
|
|
25
|
+
|
|
26
|
+
insert into vu (id) values (1);
|
|
27
|
+
-- error: cannot write through view
|
|
28
|
+
|
|
29
|
+
-- Join body (multi-source inner join): update / delete AND insert write-through
|
|
30
|
+
-- are SHIPPED (see 93.4-view-mutation.sqllogic). This view projects only the
|
|
31
|
+
-- shared key `tid`, so an insert supplying just `tid` leaves both base tables'
|
|
32
|
+
-- NOT NULL `name` columns (no default) unfilled — a `no-default` rejection naming
|
|
33
|
+
-- the obstructing base column, not a blanket "insert not supported".
|
|
34
|
+
create view vj as select t.id as tid from t join t2 on t.id = t2.id;
|
|
35
|
+
|
|
36
|
+
insert into vj (tid) values (9);
|
|
37
|
+
-- error: no default
|
|
38
|
+
|
|
39
|
+
-- Outer (left) join body: BOTH the preserved side and a non-preserved-side update are
|
|
40
|
+
-- now write-through-able (see 93.4-view-mutation.sqllogic § Outer joins — the matched-
|
|
41
|
+
-- update / null-extended-insert materialization), so the prior `voj` non-preserved-update
|
|
42
|
+
-- rejection moved there. What stays deferred is a FULL outer join (no preserved anchor):
|
|
43
|
+
-- every side is null-extended, so a non-preserved update cannot key a materialization.
|
|
44
|
+
create view voj_full as select t.id as tid, t2.name as n2 from t full join t2 on t.id = t2.id;
|
|
45
|
+
|
|
46
|
+
update voj_full set n2 = 'q' where tid = 1;
|
|
47
|
+
-- error: cannot write through view
|
|
48
|
+
|
|
49
|
+
-- VALUES body: no base-table lineage.
|
|
50
|
+
create view vv as values (1), (2);
|
|
51
|
+
|
|
52
|
+
insert into vv values (3);
|
|
53
|
+
-- error: no recoverable base operation
|
|
54
|
+
|
|
55
|
+
-- Predicate contradiction: insert violates the view's selection at plan time.
|
|
56
|
+
create view vp as select id, name from t where id = 1;
|
|
57
|
+
|
|
58
|
+
insert into vp (id, name) values (2, 'x');
|
|
59
|
+
-- error: contradicts its selection predicate
|
|
60
|
+
|
|
61
|
+
-- RETURNING through a view is SHIPPED (see 93.4-view-mutation.sqllogic § RETURNING).
|
|
62
|
+
-- Single-source insert/update/delete RETURNING (incl. computed view columns) and
|
|
63
|
+
-- multi-source inner-join update/delete RETURNING are supported. Only a
|
|
64
|
+
-- multi-source (join) INSERT … RETURNING is still rejected:
|
|
65
|
+
create table jt1 (id integer primary key, a integer);
|
|
66
|
+
create table jt2 (id integer primary key, c integer);
|
|
67
|
+
create view rjv as select t1.id as id, t1.a as a, t2.c as c
|
|
68
|
+
from jt1 t1 join jt2 t2 on t2.id = t1.id;
|
|
69
|
+
insert into rjv (id, a, c) values (1, 2, 3) returning id;
|
|
70
|
+
-- error: RETURNING through a multi-source
|
|
71
|
+
|
|
72
|
+
-- (A multi-source UPDATE that rewrites a column its own WHERE predicate filters on
|
|
73
|
+
-- is now SHIPPED via per-row identity capture — see 93.4 § RETURNING (d). The
|
|
74
|
+
-- former loud rejection for that shape has been removed.)
|
|
75
|
+
|
|
76
|
+
-- Per-row identity capture now stitches on EACH side's PK columns (composite keys
|
|
77
|
+
-- flattened to k<side>_0, k<side>_1, …), so a multi-source UPDATE … RETURNING through
|
|
78
|
+
-- a join view whose (even non-written) side has a COMPOSITE PK is now SHIPPED — the
|
|
79
|
+
-- RETURNING re-query correlates the full joined row by all sides' captured keys.
|
|
80
|
+
create table cpp (a integer, b integer, label text, primary key (a, b));
|
|
81
|
+
create table cpc (cid integer primary key, ra integer, rb integer, note text);
|
|
82
|
+
insert into cpp values (1, 1, 'L');
|
|
83
|
+
insert into cpc values (10, 1, 1, 'n');
|
|
84
|
+
create view cppv as select c.cid as cid, c.note as note, p.label as label
|
|
85
|
+
from cpc c join cpp p on p.a = c.ra and p.b = c.rb;
|
|
86
|
+
update cppv set note = 'N' where cid = 10 returning cid, note;
|
|
87
|
+
→ [{"cid":10,"note":"N"}]
|
|
88
|
+
|
|
89
|
+
-- the same update WITHOUT returning also works (identified by the child PK alone).
|
|
90
|
+
update cppv set note = 'M' where cid = 10;
|
|
91
|
+
select cid, note, label from cppv order by cid;
|
|
92
|
+
→ [{"cid":10,"note":"M","label":"L"}]
|
|
93
|
+
|
|
94
|
+
-- LIMIT body: the predicate-conjoin rewrite cannot reproduce the row-count
|
|
95
|
+
-- window, so a mutation could escape it. Reject rather than widen the write.
|
|
96
|
+
create view vlim as select id, name from t limit 5;
|
|
97
|
+
|
|
98
|
+
delete from vlim;
|
|
99
|
+
-- error: LIMIT/OFFSET body
|
|
100
|
+
|
|
101
|
+
update vlim set name = 'z' where id = 1;
|
|
102
|
+
-- error: LIMIT/OFFSET body
|
|
103
|
+
|
|
104
|
+
-- DISTINCT body: no 1:1 base-row lineage.
|
|
105
|
+
create view vdist as select distinct name from t;
|
|
106
|
+
|
|
107
|
+
delete from vdist where name = 'a';
|
|
108
|
+
-- error: DISTINCT body
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
-- View updateability — OR-clause conflict resolution under view-mediated insert.
|
|
2
|
+
-- The view's projection-filter body routes the OR clause to the base op verbatim.
|
|
3
|
+
|
|
4
|
+
-- ===================================
|
|
5
|
+
-- OR IGNORE: the violating op drops its row; siblings continue.
|
|
6
|
+
-- ===================================
|
|
7
|
+
create table ki (id integer primary key, val integer);
|
|
8
|
+
insert into ki values (1, 10);
|
|
9
|
+
create view kvi as select id, val from ki where val >= 0;
|
|
10
|
+
|
|
11
|
+
insert or ignore into kvi values (1, 99), (2, 20);
|
|
12
|
+
select * from ki order by id;
|
|
13
|
+
→ [{"id":1,"val":10},{"id":2,"val":20}]
|
|
14
|
+
|
|
15
|
+
-- ===================================
|
|
16
|
+
-- OR REPLACE: the conflicting row is replaced.
|
|
17
|
+
-- ===================================
|
|
18
|
+
create table kr (id integer primary key, val integer);
|
|
19
|
+
insert into kr values (1, 10);
|
|
20
|
+
create view kvr as select id, val from kr where val >= 0;
|
|
21
|
+
|
|
22
|
+
insert or replace into kvr values (1, 50);
|
|
23
|
+
select * from kr order by id;
|
|
24
|
+
→ [{"id":1,"val":50}]
|
|
25
|
+
|
|
26
|
+
-- ===================================
|
|
27
|
+
-- OR FAIL: abort at first violation; already-succeeded prior rows remain.
|
|
28
|
+
-- ===================================
|
|
29
|
+
create table kf (id integer primary key, val integer);
|
|
30
|
+
insert into kf values (2, 10);
|
|
31
|
+
create view kvf as select id, val from kf where val >= 0;
|
|
32
|
+
|
|
33
|
+
insert or fail into kvf values (1, 1), (2, 2), (3, 3);
|
|
34
|
+
-- error:
|
|
35
|
+
select * from kf order by id;
|
|
36
|
+
→ [{"id":1,"val":1},{"id":2,"val":10}]
|
|
37
|
+
|
|
38
|
+
-- ===================================
|
|
39
|
+
-- OR ABORT (default): abort and undo prior rows in the same statement.
|
|
40
|
+
-- ===================================
|
|
41
|
+
create table ka (id integer primary key, val integer);
|
|
42
|
+
insert into ka values (2, 10);
|
|
43
|
+
create view kva as select id, val from ka where val >= 0;
|
|
44
|
+
|
|
45
|
+
insert into kva values (1, 1), (2, 2), (3, 3);
|
|
46
|
+
-- error:
|
|
47
|
+
select * from ka order by id;
|
|
48
|
+
→ [{"id":2,"val":10}]
|
|
49
|
+
|
|
50
|
+
-- ===================================
|
|
51
|
+
-- OR ROLLBACK: abort the enclosing transaction.
|
|
52
|
+
-- ===================================
|
|
53
|
+
create table ko (id integer primary key, val integer);
|
|
54
|
+
insert into ko values (2, 10);
|
|
55
|
+
create view kvo as select id, val from ko where val >= 0;
|
|
56
|
+
|
|
57
|
+
insert or rollback into kvo values (1, 1), (2, 2);
|
|
58
|
+
-- error:
|
|
59
|
+
select * from ko order by id;
|
|
60
|
+
→ [{"id":2,"val":10}]
|