@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,566 @@
|
|
|
1
|
+
-- Lens explicit overrides + per-attribute merge (docs/lens.md).
|
|
2
|
+
-- `declare lens for X over Y { view T as <select> }` composes an effective read
|
|
3
|
+
-- body: covered columns (override) ⊕ default-mapper gap-fill. Read-correct only —
|
|
4
|
+
-- write enforcement is the prover ticket's concern.
|
|
5
|
+
|
|
6
|
+
-- ===================================
|
|
7
|
+
-- 1. Rename override + sparse gap-fill
|
|
8
|
+
-- ===================================
|
|
9
|
+
|
|
10
|
+
declare schema ybasis {
|
|
11
|
+
table CarCore {
|
|
12
|
+
id integer primary key,
|
|
13
|
+
speed integer,
|
|
14
|
+
color text
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
-- run
|
|
19
|
+
|
|
20
|
+
apply schema ybasis;
|
|
21
|
+
|
|
22
|
+
-- run
|
|
23
|
+
|
|
24
|
+
insert into ybasis.CarCore values (1, 120, 'red'), (2, 90, 'blue');
|
|
25
|
+
|
|
26
|
+
-- run
|
|
27
|
+
|
|
28
|
+
declare logical schema carapp {
|
|
29
|
+
table Car {
|
|
30
|
+
id integer primary key,
|
|
31
|
+
maxSpeed integer,
|
|
32
|
+
color text
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
-- run
|
|
37
|
+
|
|
38
|
+
-- Override covers id + maxSpeed (renamed from speed); color is gap-filled.
|
|
39
|
+
declare lens for carapp over ybasis {
|
|
40
|
+
view Car as select id, speed as maxSpeed from ybasis.CarCore
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
-- run
|
|
44
|
+
|
|
45
|
+
apply schema carapp;
|
|
46
|
+
|
|
47
|
+
-- run
|
|
48
|
+
|
|
49
|
+
select * from carapp.Car order by id;
|
|
50
|
+
→ [{"id": 1, "maxSpeed": 120, "color": "red"}, {"id": 2, "maxSpeed": 90, "color": "blue"}]
|
|
51
|
+
|
|
52
|
+
select color from carapp.Car where id = 2;
|
|
53
|
+
→ [{"color": "blue"}]
|
|
54
|
+
|
|
55
|
+
-- ===================================
|
|
56
|
+
-- 2. A logical column with no basis mapping is a coverage error
|
|
57
|
+
-- (every logical column must map to basis — stored or computed)
|
|
58
|
+
-- ===================================
|
|
59
|
+
|
|
60
|
+
declare schema ph {
|
|
61
|
+
table PersonCore {
|
|
62
|
+
id integer primary key,
|
|
63
|
+
name text
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
-- run
|
|
68
|
+
|
|
69
|
+
apply schema ph;
|
|
70
|
+
|
|
71
|
+
-- run
|
|
72
|
+
|
|
73
|
+
declare logical schema papp {
|
|
74
|
+
table Person {
|
|
75
|
+
id integer primary key,
|
|
76
|
+
name text,
|
|
77
|
+
secret text
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
-- run
|
|
82
|
+
|
|
83
|
+
-- `secret` has no basis column to map to → the lens compile rejects it.
|
|
84
|
+
declare lens for papp over ph {
|
|
85
|
+
view Person as select id, name from ph.PersonCore
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
-- run
|
|
89
|
+
|
|
90
|
+
apply schema papp;
|
|
91
|
+
-- error: secret
|
|
92
|
+
|
|
93
|
+
-- ===================================
|
|
94
|
+
-- 3. Filter override — where restricts reads
|
|
95
|
+
-- ===================================
|
|
96
|
+
|
|
97
|
+
declare schema ub {
|
|
98
|
+
table Acct {
|
|
99
|
+
id integer primary key,
|
|
100
|
+
active integer
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
-- run
|
|
105
|
+
|
|
106
|
+
apply schema ub;
|
|
107
|
+
|
|
108
|
+
-- run
|
|
109
|
+
|
|
110
|
+
insert into ub.Acct values (1, 1), (2, 0), (3, 1);
|
|
111
|
+
|
|
112
|
+
-- run
|
|
113
|
+
|
|
114
|
+
declare logical schema uapp {
|
|
115
|
+
table Acct {
|
|
116
|
+
id integer primary key,
|
|
117
|
+
active integer
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
-- run
|
|
122
|
+
|
|
123
|
+
declare lens for uapp over ub {
|
|
124
|
+
view Acct as select * from ub.Acct where active = 1
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
-- run
|
|
128
|
+
|
|
129
|
+
apply schema uapp;
|
|
130
|
+
|
|
131
|
+
-- run
|
|
132
|
+
|
|
133
|
+
select id from uapp.Acct order by id;
|
|
134
|
+
→ [{"id": 1}, {"id": 3}]
|
|
135
|
+
|
|
136
|
+
-- ===================================
|
|
137
|
+
-- 4. Cross-basis join (full coverage) — body used verbatim
|
|
138
|
+
-- ===================================
|
|
139
|
+
|
|
140
|
+
declare schema cb {
|
|
141
|
+
table Core {
|
|
142
|
+
id integer primary key,
|
|
143
|
+
name text
|
|
144
|
+
}
|
|
145
|
+
table Contact {
|
|
146
|
+
id integer primary key,
|
|
147
|
+
email text
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
-- run
|
|
152
|
+
|
|
153
|
+
apply schema cb;
|
|
154
|
+
|
|
155
|
+
-- run
|
|
156
|
+
|
|
157
|
+
insert into cb.Core values (1, 'Ada');
|
|
158
|
+
|
|
159
|
+
-- run
|
|
160
|
+
|
|
161
|
+
insert into cb.Contact values (1, 'ada@x.io');
|
|
162
|
+
|
|
163
|
+
-- run
|
|
164
|
+
|
|
165
|
+
declare logical schema capp {
|
|
166
|
+
table Person {
|
|
167
|
+
id integer primary key,
|
|
168
|
+
name text,
|
|
169
|
+
email text
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
-- run
|
|
174
|
+
|
|
175
|
+
declare lens for capp over cb {
|
|
176
|
+
view Person as select c.id, c.name, k.email from cb.Core c join cb.Contact k using (id)
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
-- run
|
|
180
|
+
|
|
181
|
+
apply schema capp;
|
|
182
|
+
|
|
183
|
+
-- run
|
|
184
|
+
|
|
185
|
+
select * from capp.Person;
|
|
186
|
+
→ [{"id": 1, "name": "Ada", "email": "ada@x.io"}]
|
|
187
|
+
|
|
188
|
+
-- ===================================
|
|
189
|
+
-- 5. Hide-via-gap-fill trap — uncovered column the basis cannot back errors
|
|
190
|
+
-- ===================================
|
|
191
|
+
|
|
192
|
+
declare schema tb {
|
|
193
|
+
table CoreT {
|
|
194
|
+
id integer primary key
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
-- run
|
|
199
|
+
|
|
200
|
+
apply schema tb;
|
|
201
|
+
|
|
202
|
+
-- run
|
|
203
|
+
|
|
204
|
+
declare logical schema tapp {
|
|
205
|
+
table T {
|
|
206
|
+
id integer primary key,
|
|
207
|
+
name text
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
-- run
|
|
212
|
+
|
|
213
|
+
declare lens for tapp over tb {
|
|
214
|
+
view T as select id from tb.CoreT
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
-- run
|
|
218
|
+
|
|
219
|
+
apply schema tapp;
|
|
220
|
+
-- error: name
|
|
221
|
+
|
|
222
|
+
-- ===================================
|
|
223
|
+
-- 6. Unqualified basis sources — an override may name its basis tables bare.
|
|
224
|
+
-- The compiler pins them to the basis schema, so the stored body reads the
|
|
225
|
+
-- same as § 1's qualified form even though the basis is not on the default
|
|
226
|
+
-- schema path.
|
|
227
|
+
-- ===================================
|
|
228
|
+
|
|
229
|
+
declare schema ubasis {
|
|
230
|
+
table CarCore {
|
|
231
|
+
id integer primary key,
|
|
232
|
+
speed integer,
|
|
233
|
+
color text
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
-- run
|
|
238
|
+
|
|
239
|
+
apply schema ubasis;
|
|
240
|
+
|
|
241
|
+
-- run
|
|
242
|
+
|
|
243
|
+
insert into ubasis.CarCore values (1, 120, 'red'), (2, 90, 'blue');
|
|
244
|
+
|
|
245
|
+
-- run
|
|
246
|
+
|
|
247
|
+
declare logical schema uqapp {
|
|
248
|
+
table Car {
|
|
249
|
+
id integer primary key,
|
|
250
|
+
maxSpeed integer,
|
|
251
|
+
color text
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
-- run
|
|
256
|
+
|
|
257
|
+
-- `CarCore` unqualified — resolves to ubasis.CarCore, not the default path.
|
|
258
|
+
declare lens for uqapp over ubasis {
|
|
259
|
+
view Car as select id, speed as maxSpeed from CarCore
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
-- run
|
|
263
|
+
|
|
264
|
+
apply schema uqapp;
|
|
265
|
+
|
|
266
|
+
-- run
|
|
267
|
+
|
|
268
|
+
select * from uqapp.Car order by id;
|
|
269
|
+
→ [{"id": 1, "maxSpeed": 120, "color": "red"}, {"id": 2, "maxSpeed": 90, "color": "blue"}]
|
|
270
|
+
|
|
271
|
+
select color from uqapp.Car where id = 2;
|
|
272
|
+
→ [{"color": "blue"}]
|
|
273
|
+
|
|
274
|
+
-- ===================================
|
|
275
|
+
-- 7. Two-table basis join, both sources unqualified
|
|
276
|
+
-- ===================================
|
|
277
|
+
|
|
278
|
+
declare schema jbasis {
|
|
279
|
+
table PersonCore {
|
|
280
|
+
id integer primary key,
|
|
281
|
+
name text
|
|
282
|
+
}
|
|
283
|
+
table PersonContact {
|
|
284
|
+
id integer primary key,
|
|
285
|
+
email text
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
-- run
|
|
290
|
+
|
|
291
|
+
apply schema jbasis;
|
|
292
|
+
|
|
293
|
+
-- run
|
|
294
|
+
|
|
295
|
+
insert into jbasis.PersonCore values (1, 'Ada');
|
|
296
|
+
|
|
297
|
+
-- run
|
|
298
|
+
|
|
299
|
+
insert into jbasis.PersonContact values (1, 'ada@x.io');
|
|
300
|
+
|
|
301
|
+
-- run
|
|
302
|
+
|
|
303
|
+
declare logical schema japp {
|
|
304
|
+
table Person {
|
|
305
|
+
id integer primary key,
|
|
306
|
+
name text,
|
|
307
|
+
email text
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
-- run
|
|
312
|
+
|
|
313
|
+
declare lens for japp over jbasis {
|
|
314
|
+
view Person as select c.id, c.name, k.email from PersonCore c join PersonContact k using (id)
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
-- run
|
|
318
|
+
|
|
319
|
+
apply schema japp;
|
|
320
|
+
|
|
321
|
+
-- run
|
|
322
|
+
|
|
323
|
+
select * from japp.Person;
|
|
324
|
+
→ [{"id": 1, "name": "Ada", "email": "ada@x.io"}]
|
|
325
|
+
|
|
326
|
+
-- ===================================
|
|
327
|
+
-- 8. Basis is `main` — unqualified sources keep working (no regression; `main`
|
|
328
|
+
-- was already on the default schema path)
|
|
329
|
+
-- ===================================
|
|
330
|
+
|
|
331
|
+
create table MainCore (
|
|
332
|
+
id integer primary key,
|
|
333
|
+
speed integer
|
|
334
|
+
);
|
|
335
|
+
|
|
336
|
+
-- run
|
|
337
|
+
|
|
338
|
+
insert into MainCore values (7, 55);
|
|
339
|
+
|
|
340
|
+
-- run
|
|
341
|
+
|
|
342
|
+
declare logical schema mapp {
|
|
343
|
+
table Car {
|
|
344
|
+
id integer primary key,
|
|
345
|
+
maxSpeed integer
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
|
|
349
|
+
-- run
|
|
350
|
+
|
|
351
|
+
declare lens for mapp over main {
|
|
352
|
+
view Car as select id, speed as maxSpeed from MainCore
|
|
353
|
+
}
|
|
354
|
+
|
|
355
|
+
-- run
|
|
356
|
+
|
|
357
|
+
apply schema mapp;
|
|
358
|
+
|
|
359
|
+
-- run
|
|
360
|
+
|
|
361
|
+
select * from mapp.Car;
|
|
362
|
+
→ [{"id": 7, "maxSpeed": 55}]
|
|
363
|
+
|
|
364
|
+
-- ===================================
|
|
365
|
+
-- 9. A same-named table in `main` shadows nothing — an unqualified override
|
|
366
|
+
-- source binds the BASIS relation, not the default-path one
|
|
367
|
+
-- ===================================
|
|
368
|
+
|
|
369
|
+
declare schema sbasis {
|
|
370
|
+
table Widget {
|
|
371
|
+
id integer primary key,
|
|
372
|
+
label text
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
-- run
|
|
377
|
+
|
|
378
|
+
apply schema sbasis;
|
|
379
|
+
|
|
380
|
+
-- run
|
|
381
|
+
|
|
382
|
+
insert into sbasis.Widget values (1, 'from-basis');
|
|
383
|
+
|
|
384
|
+
-- run
|
|
385
|
+
|
|
386
|
+
create table Widget (
|
|
387
|
+
id integer primary key,
|
|
388
|
+
label text
|
|
389
|
+
);
|
|
390
|
+
|
|
391
|
+
-- run
|
|
392
|
+
|
|
393
|
+
insert into main.Widget values (2, 'from-main');
|
|
394
|
+
|
|
395
|
+
-- run
|
|
396
|
+
|
|
397
|
+
declare logical schema sapp {
|
|
398
|
+
table Widget {
|
|
399
|
+
id integer primary key,
|
|
400
|
+
label text
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
|
|
404
|
+
-- run
|
|
405
|
+
|
|
406
|
+
declare lens for sapp over sbasis {
|
|
407
|
+
view Widget as select id, label from Widget
|
|
408
|
+
}
|
|
409
|
+
|
|
410
|
+
-- run
|
|
411
|
+
|
|
412
|
+
apply schema sapp;
|
|
413
|
+
|
|
414
|
+
-- run
|
|
415
|
+
|
|
416
|
+
select * from sapp.Widget;
|
|
417
|
+
→ [{"id": 1, "label": "from-basis"}]
|
|
418
|
+
|
|
419
|
+
-- ===================================
|
|
420
|
+
-- 10. A CTE shadowing a basis table name still binds the CTE
|
|
421
|
+
-- ===================================
|
|
422
|
+
|
|
423
|
+
declare schema cbasis {
|
|
424
|
+
table CarCore {
|
|
425
|
+
id integer primary key,
|
|
426
|
+
speed integer,
|
|
427
|
+
color text
|
|
428
|
+
}
|
|
429
|
+
}
|
|
430
|
+
|
|
431
|
+
-- run
|
|
432
|
+
|
|
433
|
+
apply schema cbasis;
|
|
434
|
+
|
|
435
|
+
-- run
|
|
436
|
+
|
|
437
|
+
insert into cbasis.CarCore values (1, 120, 'red');
|
|
438
|
+
|
|
439
|
+
-- run
|
|
440
|
+
|
|
441
|
+
declare logical schema ctapp {
|
|
442
|
+
table Car {
|
|
443
|
+
id integer primary key,
|
|
444
|
+
maxSpeed integer
|
|
445
|
+
}
|
|
446
|
+
}
|
|
447
|
+
|
|
448
|
+
-- run
|
|
449
|
+
|
|
450
|
+
-- `CarCore` here is the CTE, not cbasis.CarCore — its rows are what reads.
|
|
451
|
+
declare lens for ctapp over cbasis {
|
|
452
|
+
view Car as with CarCore as (select 9 as id, 1 as speed) select id, speed as maxSpeed from CarCore
|
|
453
|
+
}
|
|
454
|
+
|
|
455
|
+
-- run
|
|
456
|
+
|
|
457
|
+
apply schema ctapp;
|
|
458
|
+
|
|
459
|
+
-- run
|
|
460
|
+
|
|
461
|
+
select * from ctapp.Car;
|
|
462
|
+
→ [{"id": 9, "maxSpeed": 1}]
|
|
463
|
+
|
|
464
|
+
-- ===================================
|
|
465
|
+
-- 11. A CTE shadow is not a basis source, so a column it does not expose is
|
|
466
|
+
-- an uncovered-column error at DEPLOY (not a read-time surprise)
|
|
467
|
+
-- ===================================
|
|
468
|
+
|
|
469
|
+
declare logical schema ctgapp {
|
|
470
|
+
table Car {
|
|
471
|
+
id integer primary key,
|
|
472
|
+
maxSpeed integer,
|
|
473
|
+
color text
|
|
474
|
+
}
|
|
475
|
+
}
|
|
476
|
+
|
|
477
|
+
-- run
|
|
478
|
+
|
|
479
|
+
-- `color` is uncovered; the CTE cannot back it and cbasis.CarCore is not a
|
|
480
|
+
-- source of this body, so the deploy rejects rather than composing an
|
|
481
|
+
-- unreadable body.
|
|
482
|
+
declare lens for ctgapp over cbasis {
|
|
483
|
+
view Car as with CarCore as (select 9 as id, 1 as speed) select id, speed as maxSpeed from CarCore
|
|
484
|
+
}
|
|
485
|
+
|
|
486
|
+
-- run
|
|
487
|
+
|
|
488
|
+
apply schema ctgapp;
|
|
489
|
+
-- error: color
|
|
490
|
+
|
|
491
|
+
-- ===================================
|
|
492
|
+
-- 12. A bare source the basis does not have is rejected at DEPLOY. It cannot be
|
|
493
|
+
-- pinned to the basis, so it would otherwise fall through to the default
|
|
494
|
+
-- schema path and bind main's same-named relation — the same cross-basis
|
|
495
|
+
-- re-anchor the qualified spelling (`main.Gadget`) is already rejected for.
|
|
496
|
+
-- ===================================
|
|
497
|
+
|
|
498
|
+
create table Gadget (
|
|
499
|
+
id integer primary key,
|
|
500
|
+
speed integer
|
|
501
|
+
);
|
|
502
|
+
|
|
503
|
+
-- run
|
|
504
|
+
|
|
505
|
+
declare logical schema gapp {
|
|
506
|
+
table Car {
|
|
507
|
+
id integer primary key,
|
|
508
|
+
speed integer
|
|
509
|
+
}
|
|
510
|
+
}
|
|
511
|
+
|
|
512
|
+
-- run
|
|
513
|
+
|
|
514
|
+
declare lens for gapp over ubasis {
|
|
515
|
+
view Car as select id, speed from Gadget
|
|
516
|
+
}
|
|
517
|
+
|
|
518
|
+
-- run
|
|
519
|
+
|
|
520
|
+
apply schema gapp;
|
|
521
|
+
-- error: Gadget
|
|
522
|
+
|
|
523
|
+
-- ===================================
|
|
524
|
+
-- 13. A basis VIEW is a legitimate bare source: not introspectable (no column
|
|
525
|
+
-- list for `*` expansion), but still a basis relation, so it is qualified.
|
|
526
|
+
-- ===================================
|
|
527
|
+
|
|
528
|
+
declare schema vbasis {
|
|
529
|
+
table CarCore {
|
|
530
|
+
id integer primary key,
|
|
531
|
+
speed integer
|
|
532
|
+
}
|
|
533
|
+
view CarV as select id, speed from vbasis.CarCore
|
|
534
|
+
}
|
|
535
|
+
|
|
536
|
+
-- run
|
|
537
|
+
|
|
538
|
+
apply schema vbasis;
|
|
539
|
+
|
|
540
|
+
-- run
|
|
541
|
+
|
|
542
|
+
insert into vbasis.CarCore values (1, 120);
|
|
543
|
+
|
|
544
|
+
-- run
|
|
545
|
+
|
|
546
|
+
declare logical schema vapp {
|
|
547
|
+
table Car {
|
|
548
|
+
id integer primary key,
|
|
549
|
+
speed integer
|
|
550
|
+
}
|
|
551
|
+
}
|
|
552
|
+
|
|
553
|
+
-- run
|
|
554
|
+
|
|
555
|
+
declare lens for vapp over vbasis {
|
|
556
|
+
view Car as select id, speed from CarV
|
|
557
|
+
}
|
|
558
|
+
|
|
559
|
+
-- run
|
|
560
|
+
|
|
561
|
+
apply schema vapp;
|
|
562
|
+
|
|
563
|
+
-- run
|
|
564
|
+
|
|
565
|
+
select * from vapp.Car;
|
|
566
|
+
→ [{"id": 1, "speed": 120}]
|