@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.
Files changed (377) hide show
  1. package/README.md +2 -0
  2. package/package.json +7 -4
  3. package/test/README.md +173 -0
  4. package/test/logic/01-basic.sqllogic +39 -0
  5. package/test/logic/01.1-select-projection-extras.sqllogic +130 -0
  6. package/test/logic/01.2-strings.sqllogic +43 -0
  7. package/test/logic/01.5-insert-select.sqllogic +237 -0
  8. package/test/logic/01.6-update-extras.sqllogic +118 -0
  9. package/test/logic/01.7-update-from.sqllogic +67 -0
  10. package/test/logic/01.8-delete-extras.sqllogic +122 -0
  11. package/test/logic/01.8.1-delete-range-cow.sqllogic +115 -0
  12. package/test/logic/01.9-query-expr-dml-gates.sqllogic +32 -0
  13. package/test/logic/01.9-query-expr-dml.sqllogic +171 -0
  14. package/test/logic/01.9-query-expr-values.sqllogic +111 -0
  15. package/test/logic/01.9.1-limit-over-dml-subquery.sqllogic +119 -0
  16. package/test/logic/02-filters.sqllogic +54 -0
  17. package/test/logic/02-smoke.sqllogic +62 -0
  18. package/test/logic/02.1-bind-parameters.sqllogic +223 -0
  19. package/test/logic/03-expressions.sqllogic +190 -0
  20. package/test/logic/03.1-quoted-identifiers.sqllogic +55 -0
  21. package/test/logic/03.4-defaults.sqllogic +554 -0
  22. package/test/logic/03.4.1-default-edge-cases.sqllogic +99 -0
  23. package/test/logic/03.5-tvf.sqllogic +61 -0
  24. package/test/logic/03.6-type-system.sqllogic +544 -0
  25. package/test/logic/03.6.1-numeric-text-comparison-coercion.sqllogic +244 -0
  26. package/test/logic/03.6.2-value-to-text.sqllogic +224 -0
  27. package/test/logic/03.7-bigint-mixed-arithmetic.sqllogic +65 -0
  28. package/test/logic/03.8-not-precedence.sqllogic +255 -0
  29. package/test/logic/03.9-is-bool-predicate.sqllogic +150 -0
  30. package/test/logic/03.9.1-is-bool-predicate-partial-index.sqllogic +34 -0
  31. package/test/logic/04-order-by.sqllogic +38 -0
  32. package/test/logic/04-transactions.sqllogic +239 -0
  33. package/test/logic/04a-savepoint-lazy-attach.sqllogic +122 -0
  34. package/test/logic/05-vtab_memory.sqllogic +50 -0
  35. package/test/logic/05.0.1-vtab-memory-unique-index-collation.sqllogic +34 -0
  36. package/test/logic/05.1-composite-pk-range-scan.sqllogic +147 -0
  37. package/test/logic/05.1.1-secondary-index-range-scan.sqllogic +56 -0
  38. package/test/logic/05.2-cast-seek-correctness.sqllogic +124 -0
  39. package/test/logic/06-builtin_functions.sqllogic +149 -0
  40. package/test/logic/06.1-string-functions.sqllogic +92 -0
  41. package/test/logic/06.1.3-like-glob-edges.sqllogic +53 -0
  42. package/test/logic/06.2-math-functions.sqllogic +82 -0
  43. package/test/logic/06.3-schema.sqllogic +48 -0
  44. package/test/logic/06.3.1-schema-all-schemas.sqllogic +39 -0
  45. package/test/logic/06.3.2-schema-foreign-keys.sqllogic +208 -0
  46. package/test/logic/06.3.3-introspection-tags.sqllogic +202 -0
  47. package/test/logic/06.3.3.1-introspection-tags-index.sqllogic +74 -0
  48. package/test/logic/06.3.4-view-info.sqllogic +378 -0
  49. package/test/logic/06.3.5-column-info.sqllogic +347 -0
  50. package/test/logic/06.3.6-schema-views.sqllogic +29 -0
  51. package/test/logic/06.4-schema-search-path.sqllogic +354 -0
  52. package/test/logic/06.4.1-schema-case-insensitive.sqllogic +83 -0
  53. package/test/logic/06.4.2-collation-extras.sqllogic +472 -0
  54. package/test/logic/06.4.2.1-collation-index-access-paths.sqllogic +140 -0
  55. package/test/logic/06.4.3-write-path-collation.sqllogic +99 -0
  56. package/test/logic/06.4.4-comparison-collation-precedence.sqllogic +342 -0
  57. package/test/logic/06.4.5-any-collate-declared-keys.sqllogic +92 -0
  58. package/test/logic/06.5-polymorphic-types.sqllogic +169 -0
  59. package/test/logic/06.5.1-conversion-functions.sqllogic +173 -0
  60. package/test/logic/06.5.2-scalar-minmax.sqllogic +16 -0
  61. package/test/logic/06.5.3-undeclared-return-type-comparison.sqllogic +244 -0
  62. package/test/logic/06.5.4-declared-return-type-builtins.sqllogic +288 -0
  63. package/test/logic/06.6-aggregate-extended.sqllogic +78 -0
  64. package/test/logic/06.7-json-extended.sqllogic +53 -0
  65. package/test/logic/06.8-json-path-operators.sqllogic +99 -0
  66. package/test/logic/06.9-json-canonical-key.sqllogic +65 -0
  67. package/test/logic/06.9.1-json-coerce-once.sqllogic +417 -0
  68. package/test/logic/06.9.1.1-json-coerce-once-index.sqllogic +39 -0
  69. package/test/logic/06.9.2-json-structural-equality.sqllogic +382 -0
  70. package/test/logic/06.9.2.1-json-structural-equality-index.sqllogic +76 -0
  71. package/test/logic/06.9.3-json-index-range-seek.sqllogic +205 -0
  72. package/test/logic/07-aggregates.sqllogic +193 -0
  73. package/test/logic/07.1-aggregate-filter-clause.sqllogic +12 -0
  74. package/test/logic/07.2-aggregate-order-by.sqllogic +11 -0
  75. package/test/logic/07.3-group-by-extras.sqllogic +602 -0
  76. package/test/logic/07.3.1-group-by-order-by-key.sqllogic +164 -0
  77. package/test/logic/07.3.2-grouped-select-list-shape.sqllogic +231 -0
  78. package/test/logic/07.4-group-by-filter-composite-pk.sqllogic +120 -0
  79. package/test/logic/07.5-sum-mixed-exact-and-float.sqllogic +151 -0
  80. package/test/logic/07.5-window.sqllogic +1941 -0
  81. package/test/logic/07.5.1-window-named.sqllogic +13 -0
  82. package/test/logic/07.5.2-window-nth-value.sqllogic +13 -0
  83. package/test/logic/07.6-subqueries.sqllogic +78 -0
  84. package/test/logic/07.6.1-subquery-extras.sqllogic +93 -0
  85. package/test/logic/07.7-and-or-short-circuit.sqllogic +58 -0
  86. package/test/logic/07.7-in-subquery-caching.sqllogic +174 -0
  87. package/test/logic/07.7-scalar-agg-decorrelation.sqllogic +197 -0
  88. package/test/logic/07.7.1-in-extras.sqllogic +158 -0
  89. package/test/logic/07.7.1-scalar-agg-decorrelation-filter.sqllogic +105 -0
  90. package/test/logic/07.7.2-scalar-agg-decorrelation-nested.sqllogic +115 -0
  91. package/test/logic/07.7.3-exists-in-select-decorrelation.sqllogic +107 -0
  92. package/test/logic/07.7.4-where-conjunct-ordering.sqllogic +121 -0
  93. package/test/logic/07.7.5-filter-lost-under-index-order.sqllogic +134 -0
  94. package/test/logic/07.7.6-correlated-predicate-scope.sqllogic +178 -0
  95. package/test/logic/07.7.7-join-source-scope-shadowing.sqllogic +137 -0
  96. package/test/logic/07.7.8-correlated-ref-to-computed-column.sqllogic +165 -0
  97. package/test/logic/07.7.9-conjunct-monotonicity.sqllogic +200 -0
  98. package/test/logic/07.8-correlated-subquery-edges.sqllogic +71 -0
  99. package/test/logic/07.8.1-correlated-in-decorrelation-gates.sqllogic +156 -0
  100. package/test/logic/07.9-in-value-list.sqllogic +154 -0
  101. package/test/logic/07.9.1-in-value-list-composite-index.sqllogic +38 -0
  102. package/test/logic/08-views.sqllogic +64 -0
  103. package/test/logic/08.1-semi-anti-join.sqllogic +191 -0
  104. package/test/logic/08.1-view-edge-cases.sqllogic +118 -0
  105. package/test/logic/08.1.1-uncorrelated-in-semijoin.sqllogic +251 -0
  106. package/test/logic/08.2-existence-flag-semijoin-recovery.sqllogic +197 -0
  107. package/test/logic/08.3-existence-flag-inner-recovery.sqllogic +102 -0
  108. package/test/logic/08.4-key-set-semi-join.sqllogic +447 -0
  109. package/test/logic/09-set_operations.sqllogic +244 -0
  110. package/test/logic/09.1-set-op-cross-collation.sqllogic +230 -0
  111. package/test/logic/10-distinct_datatypes.sqllogic +127 -0
  112. package/test/logic/10.1-ddl-lifecycle.sqllogic +203 -0
  113. package/test/logic/10.1.1-create-table-syntax-edges.sqllogic +47 -0
  114. package/test/logic/10.1.2-ddl-in-transaction.sqllogic +143 -0
  115. package/test/logic/10.1.2.1-add-constraint-in-transaction.sqllogic +59 -0
  116. package/test/logic/10.1.3-ddl-drop-in-transaction.sqllogic +187 -0
  117. package/test/logic/10.1.3.1-drop-constraint-in-transaction.sqllogic +45 -0
  118. package/test/logic/10.1.4-create-table-duplicate-constraint-names.sqllogic +149 -0
  119. package/test/logic/10.1.4-ddl-transaction-policy.sqllogic +314 -0
  120. package/test/logic/10.1.5-alter-add-constraint-minted-name-disambiguation.sqllogic +219 -0
  121. package/test/logic/10.1.5-create-index-lifecycle.sqllogic +72 -0
  122. package/test/logic/10.1.6-ddl-transaction-policy-index.sqllogic +143 -0
  123. package/test/logic/10.1.7-create-table-default-type-check.sqllogic +119 -0
  124. package/test/logic/10.1.8-alter-add-check-existing-rows.sqllogic +117 -0
  125. package/test/logic/10.2-column-features.sqllogic +365 -0
  126. package/test/logic/10.2.1-table-options-rejection.sqllogic +63 -0
  127. package/test/logic/10.2.2-default-collation-memory.sqllogic +30 -0
  128. package/test/logic/10.3-function-features.sqllogic +247 -0
  129. package/test/logic/10.4-schema-scale.sqllogic +168 -0
  130. package/test/logic/10.4.1-schema-scale-indexes.sqllogic +121 -0
  131. package/test/logic/10.5-indexes.sqllogic +164 -0
  132. package/test/logic/10.5.1-partial-indexes.sqllogic +526 -0
  133. package/test/logic/10.5.2-expression-indexes.sqllogic +34 -0
  134. package/test/logic/10.5.3-desc-index-ordering.sqllogic +130 -0
  135. package/test/logic/10.5.4-composite-pk-index-update-phantom.sqllogic +55 -0
  136. package/test/logic/10.5.5-index-name-uniqueness.sqllogic +76 -0
  137. package/test/logic/10.5.6-minmax-index-boundary.sqllogic +204 -0
  138. package/test/logic/10.5.7-implicit-unique-index-lifecycle.sqllogic +1216 -0
  139. package/test/logic/10.6-distinct-edge-cases.sqllogic +119 -0
  140. package/test/logic/100-predicate-normalization-edge-cases.sqllogic +238 -0
  141. package/test/logic/100.1-where-extras.sqllogic +163 -0
  142. package/test/logic/100.1.1-where-join-on-order-indexed.sqllogic +35 -0
  143. package/test/logic/101-builtin-mutation-kills.sqllogic +974 -0
  144. package/test/logic/101-transaction-edge-cases.sqllogic +395 -0
  145. package/test/logic/102-schema-catalog-edge-cases.sqllogic +252 -0
  146. package/test/logic/102-unique-constraints.sqllogic +145 -0
  147. package/test/logic/102.0.1-schema-catalog-indexed-table.sqllogic +32 -0
  148. package/test/logic/102.1-unique-edge-cases.sqllogic +111 -0
  149. package/test/logic/102.1.1-unique-index-creation-edge-cases.sqllogic +75 -0
  150. package/test/logic/102.2-unique-collation.sqllogic +181 -0
  151. package/test/logic/102.2.1-unique-collation-index-derived.sqllogic +305 -0
  152. package/test/logic/103-database-options-edge-cases.sqllogic +108 -0
  153. package/test/logic/103.1-pragma-boolean-values.sqllogic +126 -0
  154. package/test/logic/104-emit-mutation-kills.sqllogic +236 -0
  155. package/test/logic/105-vtab-memory-mutation-kills.sqllogic +754 -0
  156. package/test/logic/105.1-vtab-memory-index-mutation-kills.sqllogic +540 -0
  157. package/test/logic/106-constraint-extractor-mutation-kills.sqllogic +350 -0
  158. package/test/logic/107-temporal-arithmetic-mutation-kills.sqllogic +833 -0
  159. package/test/logic/108-cardinality-estimation.sqllogic +146 -0
  160. package/test/logic/108.1-analyze-name-resolution.sqllogic +102 -0
  161. package/test/logic/109-aggregate-physical-selection.sqllogic +103 -0
  162. package/test/logic/11-joins.sqllogic +86 -0
  163. package/test/logic/11.1-join-using.sqllogic +267 -0
  164. package/test/logic/11.2-comma-join.sqllogic +35 -0
  165. package/test/logic/11.3-index-nested-loop-join.sqllogic +305 -0
  166. package/test/logic/11.3-mismatched-collation-join.sqllogic +74 -0
  167. package/test/logic/11.4-hash-join-side-swap.sqllogic +118 -0
  168. package/test/logic/110-scan-emitter-mutation-kills.sqllogic +121 -0
  169. package/test/logic/110.1-scan-emitter-index-scan-kills.sqllogic +47 -0
  170. package/test/logic/12-empty-primary-key.sqllogic +124 -0
  171. package/test/logic/12-join_padding_order.sqllogic +58 -0
  172. package/test/logic/12.1-orderby-index-consumption.sqllogic +40 -0
  173. package/test/logic/13-cte.sqllogic +137 -0
  174. package/test/logic/13.1-cte-multiple-recursive.sqllogic +104 -0
  175. package/test/logic/13.10-cte-qualified-name.sqllogic +136 -0
  176. package/test/logic/13.11-unreferenced-dml-cte.sqllogic +414 -0
  177. package/test/logic/13.12-nested-dml-cte-rejected.sqllogic +280 -0
  178. package/test/logic/13.2-cte-bind-params.sqllogic +98 -0
  179. package/test/logic/13.3-cte-edge-cases.sqllogic +120 -0
  180. package/test/logic/13.4-cte-extras.sqllogic +98 -0
  181. package/test/logic/13.5-cte-join-order.sqllogic +166 -0
  182. package/test/logic/13.6-cte-dml-runs-once.sqllogic +318 -0
  183. package/test/logic/13.7-cte-sibling-visibility.sqllogic +227 -0
  184. package/test/logic/13.8-insert-with-clause-visibility.sqllogic +254 -0
  185. package/test/logic/13.9-schema-authored-cte-isolation.sqllogic +328 -0
  186. package/test/logic/13.9.1-schema-authored-schema-path-isolation.sqllogic +408 -0
  187. package/test/logic/14-utilities.sqllogic +168 -0
  188. package/test/logic/15-timespan.sqllogic +279 -0
  189. package/test/logic/15.1-semantic-ordering.sqllogic +960 -0
  190. package/test/logic/15.1.1-json-check-coercion.sqllogic +178 -0
  191. package/test/logic/15.1.2-semantic-ordering-index.sqllogic +41 -0
  192. package/test/logic/15.1.3-declared-form-write-contract.sqllogic +519 -0
  193. package/test/logic/16-epoch.sqllogic +187 -0
  194. package/test/logic/17-weekday-modifier.sqllogic +78 -0
  195. package/test/logic/18-json-string-escapes.sqllogic +86 -0
  196. package/test/logic/18-strftime-extended-formats.sqllogic +68 -0
  197. package/test/logic/20-empty-single-row.sqllogic +261 -0
  198. package/test/logic/21-null-edge-cases.sqllogic +227 -0
  199. package/test/logic/21.1-where-null-comparisons.sqllogic +151 -0
  200. package/test/logic/21.1.1-where-null-comparisons-secondary-index.sqllogic +35 -0
  201. package/test/logic/21.2-between-edges.sqllogic +157 -0
  202. package/test/logic/22-boundary-values.sqllogic +175 -0
  203. package/test/logic/23-self-joins-duplicates.sqllogic +74 -0
  204. package/test/logic/24-builtin-branches.sqllogic +611 -0
  205. package/test/logic/24.1-substr-extras.sqllogic +75 -0
  206. package/test/logic/24.2-random-extras.sqllogic +39 -0
  207. package/test/logic/25-aggregate-edge-cases.sqllogic +289 -0
  208. package/test/logic/25.1-nested-aggregates.sqllogic +74 -0
  209. package/test/logic/25.2-having-edge-cases.sqllogic +318 -0
  210. package/test/logic/25.3-aggregate-isnull-empty.sqllogic +16 -0
  211. package/test/logic/25.4-groupby-fd-constant-empty.sqllogic +55 -0
  212. package/test/logic/25.5-ungrouped-aggregate-column-free-select-item.sqllogic +196 -0
  213. package/test/logic/26-join-edge-cases.sqllogic +333 -0
  214. package/test/logic/26.1-left-join-isnull-on-notnull.sqllogic +26 -0
  215. package/test/logic/26.2-left-join-on-vs-where.sqllogic +67 -0
  216. package/test/logic/26.3-join-on-constants.sqllogic +61 -0
  217. package/test/logic/26.4-join-on-is-null-nullable.sqllogic +44 -0
  218. package/test/logic/27-window-edge-cases.sqllogic +206 -0
  219. package/test/logic/27.1-window-groups-frame.sqllogic +13 -0
  220. package/test/logic/27.2-window-exclude.sqllogic +13 -0
  221. package/test/logic/27.3-window-json-aggregation.sqllogic +66 -0
  222. package/test/logic/28-set-ops-sort-edge-cases.sqllogic +444 -0
  223. package/test/logic/28.1-compound-limit-offset.sqllogic +143 -0
  224. package/test/logic/28.2-orderby-expression-extras.sqllogic +698 -0
  225. package/test/logic/28.2-set-op-branch-types.sqllogic +217 -0
  226. package/test/logic/29-constraint-edge-cases.sqllogic +442 -0
  227. package/test/logic/29.1-column-level-conflict-clause.sqllogic +171 -0
  228. package/test/logic/29.2-table-level-pk-conflict-clause.sqllogic +113 -0
  229. package/test/logic/40-constraints.sqllogic +418 -0
  230. package/test/logic/40.1-pk-desc-direction.sqllogic +76 -0
  231. package/test/logic/40.2-check-extras.sqllogic +683 -0
  232. package/test/logic/41-alter-table.sqllogic +191 -0
  233. package/test/logic/41-fk-cascade-conflict-and-self-ref.sqllogic +263 -0
  234. package/test/logic/41-fk-cross-schema.sqllogic +155 -0
  235. package/test/logic/41-fk-extended-targets.sqllogic +173 -0
  236. package/test/logic/41-foreign-keys.sqllogic +1001 -0
  237. package/test/logic/41-generated-column-errors.sqllogic +225 -0
  238. package/test/logic/41-generated-column-extras.sqllogic +598 -0
  239. package/test/logic/41-generated-column-scope.sqllogic +329 -0
  240. package/test/logic/41-generated-columns.sqllogic +361 -0
  241. package/test/logic/41.1-alter-pk.sqllogic +230 -0
  242. package/test/logic/41.1-fk-collation-conflict.sqllogic +277 -0
  243. package/test/logic/41.10-alter-drop-column-foreign-key.sqllogic +274 -0
  244. package/test/logic/41.10.1-alter-drop-column-unique-index.sqllogic +169 -0
  245. package/test/logic/41.10.2-alter-drop-column-check-and-assertion.sqllogic +1616 -0
  246. package/test/logic/41.10.3-alter-drop-column-referencing-fk.sqllogic +292 -0
  247. package/test/logic/41.10.4-drop-object-expression-dependents.sqllogic +602 -0
  248. package/test/logic/41.11-deferred-fk-with-rename.sqllogic +232 -0
  249. package/test/logic/41.12-alter-default-coercion.sqllogic +200 -0
  250. package/test/logic/41.13-alter-add-column-generated-backfill.sqllogic +566 -0
  251. package/test/logic/41.14-alter-add-column-subquery-backfill.sqllogic +129 -0
  252. package/test/logic/41.15-alter-column-default-type-check.sqllogic +178 -0
  253. package/test/logic/41.16-fk-unenforceable.sqllogic +364 -0
  254. package/test/logic/41.2-alter-column.sqllogic +382 -0
  255. package/test/logic/41.2.1-alter-column-retype-deleted-row-memory.sqllogic +32 -0
  256. package/test/logic/41.2.2-alter-column-retype-index-rebuild.sqllogic +77 -0
  257. package/test/logic/41.2.3-alter-column-set-not-null-pk-backfill.sqllogic +310 -0
  258. package/test/logic/41.2.3.1-alter-column-set-not-null-pk-backfill-secondary-index.sqllogic +37 -0
  259. package/test/logic/41.3-alter-add-column-unique.sqllogic +184 -0
  260. package/test/logic/41.3-alter-rename-propagation.sqllogic +2352 -0
  261. package/test/logic/41.3.1-alter-rename-index-propagation.sqllogic +94 -0
  262. package/test/logic/41.4-alter-add-column-constraints.sqllogic +855 -0
  263. package/test/logic/41.5-alter-misc.sqllogic +48 -0
  264. package/test/logic/41.5-cross-schema-foreign-keys.sqllogic +253 -0
  265. package/test/logic/41.6-alter-drop-rename-constraint.sqllogic +354 -0
  266. package/test/logic/41.6.1-alter-drop-constraint-index-derived.sqllogic +22 -0
  267. package/test/logic/41.7-alter-column-collate.sqllogic +105 -0
  268. package/test/logic/41.7.1-alter-column-collate-unique.sqllogic +45 -0
  269. package/test/logic/41.7.2-alter-column-collate-unique-store.sqllogic +208 -0
  270. package/test/logic/41.7.2.1-alter-column-collate-unique-index-store.sqllogic +114 -0
  271. package/test/logic/41.7.3-alter-column-retype-unique.sqllogic +293 -0
  272. package/test/logic/41.7.3.1-alter-column-retype-staged-rows-memory.sqllogic +41 -0
  273. package/test/logic/41.7.3.2-alter-column-retype-unique-index.sqllogic +72 -0
  274. package/test/logic/41.7.4-alter-column-retype-semantic-memory.sqllogic +445 -0
  275. package/test/logic/41.7.4.1-alter-column-retype-semantic-index-memory.sqllogic +91 -0
  276. package/test/logic/41.7.5-alter-column-collate-pk-staged-delete-memory.sqllogic +106 -0
  277. package/test/logic/41.8-alter-add-constraint-unique-fk.sqllogic +275 -0
  278. package/test/logic/41.8-alter-savepoint-staged-rows.sqllogic +443 -0
  279. package/test/logic/41.8.1-alter-rename-savepoint-staged-rows.sqllogic +408 -0
  280. package/test/logic/41.9-alter-constraint-body-change.sqllogic +180 -0
  281. package/test/logic/41.9-fk-restrict-batched.sqllogic +290 -0
  282. package/test/logic/42-committed-snapshot.sqllogic +254 -0
  283. package/test/logic/42-returning.sqllogic +159 -0
  284. package/test/logic/42.1-returning-extras.sqllogic +232 -0
  285. package/test/logic/42.2-returning-stored-row.sqllogic +165 -0
  286. package/test/logic/43-default-nullability.sqllogic +131 -0
  287. package/test/logic/43-transition-constraints.sqllogic +341 -0
  288. package/test/logic/43.1-default-collation.sqllogic +140 -0
  289. package/test/logic/43.1-notnull-or-conflict.sqllogic +79 -0
  290. package/test/logic/43.2-deferred-check-new-on-delete.sqllogic +95 -0
  291. package/test/logic/43.3-nullable-primary-key.sqllogic +587 -0
  292. package/test/logic/44-determinism-validation.sqllogic +164 -0
  293. package/test/logic/44-orthogonality.sqllogic +146 -0
  294. package/test/logic/44.1-nondeterministic-schema.sqllogic +316 -0
  295. package/test/logic/45-udf-determinism.sqllogic +39 -0
  296. package/test/logic/46-mutation-context.sqllogic +595 -0
  297. package/test/logic/47-upsert.sqllogic +255 -0
  298. package/test/logic/47.1-upsert-conflict-targets.sqllogic +169 -0
  299. package/test/logic/47.2-replace-and-or-clauses.sqllogic +164 -0
  300. package/test/logic/47.2.1-pk-replace-secondary-unique.sqllogic +374 -0
  301. package/test/logic/47.3-engine-or-fail.sqllogic +122 -0
  302. package/test/logic/47.3-upsert-conflict-target-collation.sqllogic +139 -0
  303. package/test/logic/47.3.1-upsert-conflict-index-derived-collation.sqllogic +25 -0
  304. package/test/logic/47.4-upsert-conflict-target-affinity.sqllogic +59 -0
  305. package/test/logic/47.5-upsert-do-update-constraints.sqllogic +440 -0
  306. package/test/logic/47.6-upsert-do-update-decomposed.sqllogic +100 -0
  307. package/test/logic/49-reference-graph.sqllogic +84 -0
  308. package/test/logic/50-declarative-schema.sqllogic +2550 -0
  309. package/test/logic/50-metadata-tags.sqllogic +1033 -0
  310. package/test/logic/50.0.1-metadata-tags-index.sqllogic +141 -0
  311. package/test/logic/50.1-declare-schema-pk.sqllogic +150 -0
  312. package/test/logic/50.2-declare-schema-renames.sqllogic +949 -0
  313. package/test/logic/50.2.1-declare-schema-index-renames.sqllogic +173 -0
  314. package/test/logic/50.3-declare-schema-duplicate-names.sqllogic +280 -0
  315. package/test/logic/50.4-declare-schema-apply-restore.sqllogic +192 -0
  316. package/test/logic/51-lens-foundation.sqllogic +147 -0
  317. package/test/logic/51-materialized-views.sqllogic +376 -0
  318. package/test/logic/51.5-materialized-views-coarsened-key.sqllogic +198 -0
  319. package/test/logic/51.7-maintained-table-attach-detach.sqllogic +468 -0
  320. package/test/logic/51.8-maintained-table-declared-constraints.sqllogic +440 -0
  321. package/test/logic/51.85-maintained-table-parent-fk.sqllogic +103 -0
  322. package/test/logic/51.9-maintained-table-secondary-unique.sqllogic +237 -0
  323. package/test/logic/51.9.1-maintained-table-partial-unique.sqllogic +36 -0
  324. package/test/logic/52-lens-overrides.sqllogic +566 -0
  325. package/test/logic/53-materialized-views-rowtime.sqllogic +1601 -0
  326. package/test/logic/53-reserved-tags.sqllogic +252 -0
  327. package/test/logic/53.1-materialized-view-write-through.sqllogic +329 -0
  328. package/test/logic/53.2-materialized-view-rename-propagation.sqllogic +483 -0
  329. package/test/logic/53.3-materialized-view-constraint-only-ddl.sqllogic +409 -0
  330. package/test/logic/53.3.1-materialized-view-index-ddl-irrelevance.sqllogic +29 -0
  331. package/test/logic/53.4-materialized-view-structural-alter-restore.sqllogic +436 -0
  332. package/test/logic/54-covering-mv-enforcement.sqllogic +314 -0
  333. package/test/logic/54.1-covering-mv-partial-enforcement.sqllogic +34 -0
  334. package/test/logic/55-internal-eviction-reporting.sqllogic +89 -0
  335. package/test/logic/55-lens-prover.sqllogic +202 -0
  336. package/test/logic/55.1-eviction-restrict-fk.sqllogic +148 -0
  337. package/test/logic/55.5-lens-authored-inverse.sqllogic +1468 -0
  338. package/test/logic/80-grow-retrieve-pass.sqllogic +79 -0
  339. package/test/logic/81-quickpick.sqllogic +24 -0
  340. package/test/logic/82-bloom-join.sqllogic +185 -0
  341. package/test/logic/83-merge-join.sqllogic +280 -0
  342. package/test/logic/84-asof-scan.sqllogic +238 -0
  343. package/test/logic/84-key-cardinality.sqllogic +50 -0
  344. package/test/logic/85-relational-const-folding.sqllogic +51 -0
  345. package/test/logic/86-scalar-cse.sqllogic +42 -0
  346. package/test/logic/90-error_paths.sqllogic +114 -0
  347. package/test/logic/90.1-parse-errors.sqllogic +77 -0
  348. package/test/logic/90.2-alter-table-errors.sqllogic +53 -0
  349. package/test/logic/90.2.1-alter-extra-errors.sqllogic +51 -0
  350. package/test/logic/90.3-expression-errors.sqllogic +43 -0
  351. package/test/logic/90.4-dml-errors.sqllogic +47 -0
  352. package/test/logic/90.5-unsupported-join-types.sqllogic +37 -0
  353. package/test/logic/90.5.1-right-full-join-read.sqllogic +157 -0
  354. package/test/logic/90.6-select-error-paths.sqllogic +57 -0
  355. package/test/logic/91-merge-join-edge-cases.sqllogic +159 -0
  356. package/test/logic/92-hash-aggregate-edge-cases.sqllogic +139 -0
  357. package/test/logic/93-ddl-view-edge-cases.sqllogic +104 -0
  358. package/test/logic/93.1-view-error-paths.sqllogic +74 -0
  359. package/test/logic/93.2-view-mutation-pending.sqllogic +108 -0
  360. package/test/logic/93.3-view-mutation-or-clause.sqllogic +60 -0
  361. package/test/logic/93.4-view-mutation.sqllogic +4881 -0
  362. package/test/logic/93.4.1-view-mutation-partial-unique-cardinality.sqllogic +31 -0
  363. package/test/logic/93.5-authored-inverse.sqllogic +415 -0
  364. package/test/logic/93.6-set-op-flagless-write.sqllogic +862 -0
  365. package/test/logic/94-tvf-edge-cases.sqllogic +58 -0
  366. package/test/logic/94.1-limit-offset-edge-cases.sqllogic +109 -0
  367. package/test/logic/94.2-limit-offset-extras.sqllogic +98 -0
  368. package/test/logic/95-assertions.sqllogic +1417 -0
  369. package/test/logic/96-subquery-edge-cases.sqllogic +276 -0
  370. package/test/logic/97-json-function-edge-cases.sqllogic +633 -0
  371. package/test/logic/97.1-json-blob-and-special-values.sqllogic +92 -0
  372. package/test/logic/98-temporal-edge-cases.sqllogic +515 -0
  373. package/test/logic/99-conversion-edge-cases.sqllogic +325 -0
  374. package/test/logic/99.0.1-schema-index-listing.sqllogic +21 -0
  375. package/test/logic/99.1-cast-syntax-extras.sqllogic +167 -0
  376. package/test/logic/drop-unique-index.sqllogic +88 -0
  377. package/test/logic/pushdown-test.sqllogic +36 -0
@@ -0,0 +1,483 @@
1
+ -- 53.2-materialized-view-rename-propagation.sqllogic — ALTER TABLE/COLUMN RENAME
2
+ -- rewrites a dependent materialized view's body in place, exactly as it rewrites a
3
+ -- plain view's ("MV ≡ faster view"): sourceTables/bodyHash/DDL are re-keyed,
4
+ -- row-time maintenance re-registers against the renamed catalog, and the MV stays
5
+ -- LIVE — writes to the renamed source keep propagating and REFRESH keeps working.
6
+ -- A column rename additionally carries a shifted output name onto the backing
7
+ -- table (bare passthrough projections expose the NEW name, plain-view parity).
8
+ -- An MV the rename provably does NOT affect — an unreferenced column rename, a
9
+ -- constraint-only rewrite of another source, a `select *` pure name shift — is
10
+ -- restored after the statement rather than left silently stale (§10–§13).
11
+
12
+ -- ===================================
13
+ -- 1. RENAME TABLE: dependent MV stays live
14
+ -- ===================================
15
+
16
+ create table t (id integer primary key, v integer not null);
17
+ insert into t values (1, 10);
18
+ create materialized view mv1 as select id, v from t;
19
+
20
+ select * from mv1 order by id;
21
+ → [{"id":1,"v":10}]
22
+
23
+ alter table t rename to t2;
24
+
25
+ -- the MV still reads (body re-keyed to t2, backing untouched)
26
+ select * from mv1 order by id;
27
+ → [{"id":1,"v":10}]
28
+
29
+ -- row-time maintenance re-registered under the NEW base: writes propagate
30
+ insert into t2 values (2, 20);
31
+ select * from mv1 order by id;
32
+ → [{"id":1,"v":10},{"id":2,"v":20}]
33
+
34
+ update t2 set v = 21 where id = 2;
35
+ select * from mv1 order by id;
36
+ → [{"id":1,"v":10},{"id":2,"v":21}]
37
+
38
+ -- REFRESH resolves the new name (errored "Table 't' not found" before the fix)
39
+ refresh materialized view mv1;
40
+ select * from mv1 order by id;
41
+ → [{"id":1,"v":10},{"id":2,"v":21}]
42
+
43
+ drop materialized view mv1;
44
+ drop table t2;
45
+
46
+ -- ===================================
47
+ -- 2. RENAME COLUMN: MV stays live and exposes the NEW column name
48
+ -- ===================================
49
+
50
+ create table s (id integer primary key, v integer not null);
51
+ insert into s values (1, 10);
52
+ create materialized view mv2 as select id, v from s;
53
+
54
+ alter table s rename column v to w;
55
+
56
+ -- bare passthrough projection: the MV's exposed name follows the rename
57
+ select id, w from mv2 order by id;
58
+ → [{"id":1,"w":10}]
59
+
60
+ -- the old name is gone (plain-view parity)
61
+ select v from mv2;
62
+ -- error: column not found
63
+
64
+ -- still live: writes maintain under the new name
65
+ insert into s values (2, 20);
66
+ select id, w from mv2 order by id;
67
+ → [{"id":1,"w":10},{"id":2,"w":20}]
68
+
69
+ refresh materialized view mv2;
70
+ select id, w from mv2 order by id;
71
+ → [{"id":1,"w":10},{"id":2,"w":20}]
72
+
73
+ drop materialized view mv2;
74
+ drop table s;
75
+
76
+ -- ===================================
77
+ -- 3. RENAME COLUMN behind an explicit column list: output names pinned
78
+ -- ===================================
79
+
80
+ create table e (id integer primary key, v integer not null);
81
+ insert into e values (1, 1);
82
+ create materialized view mv3 (a, b) as select id, v from e;
83
+
84
+ alter table e rename column v to w;
85
+
86
+ -- declared interface unchanged; MV still live
87
+ select a, b from mv3 order by a;
88
+ → [{"a":1,"b":1}]
89
+
90
+ insert into e values (2, 2);
91
+ select a, b from mv3 order by a;
92
+ → [{"a":1,"b":1},{"a":2,"b":2}]
93
+
94
+ drop materialized view mv3;
95
+ drop table e;
96
+
97
+ -- ===================================
98
+ -- 4. RENAME COLUMN behind an expression alias: output name pinned
99
+ -- ===================================
100
+
101
+ create table f (id integer primary key, v integer not null);
102
+ insert into f values (1, 5);
103
+ create materialized view mv4 as select id, v * 2 as dbl from f;
104
+
105
+ alter table f rename column v to w;
106
+
107
+ select id, dbl from mv4 order by id;
108
+ → [{"id":1,"dbl":10}]
109
+
110
+ insert into f values (2, 7);
111
+ select id, dbl from mv4 order by id;
112
+ → [{"id":1,"dbl":10},{"id":2,"dbl":14}]
113
+
114
+ drop materialized view mv4;
115
+ drop table f;
116
+
117
+ -- ===================================
118
+ -- 5. MV-over-MV, base TABLE rename: both stay live, writes cascade
119
+ -- ===================================
120
+
121
+ create table b (id integer primary key, v integer not null);
122
+ insert into b values (1, 10);
123
+ create materialized view m1 as select id, v from b;
124
+ create materialized view m2 as select id, v from m1;
125
+
126
+ alter table b rename to b2;
127
+
128
+ select * from m2 order by id;
129
+ → [{"id":1,"v":10}]
130
+
131
+ -- write to the renamed base cascades m1 → m2 through the chain
132
+ insert into b2 values (2, 20);
133
+ select * from m1 order by id;
134
+ → [{"id":1,"v":10},{"id":2,"v":20}]
135
+ select * from m2 order by id;
136
+ → [{"id":1,"v":10},{"id":2,"v":20}]
137
+
138
+ drop materialized view m2;
139
+ drop materialized view m1;
140
+ drop table b2;
141
+
142
+ -- ===================================
143
+ -- 6. MV-over-MV, source COLUMN rename flowing into n1's exposed name:
144
+ -- the rename CASCADES — n1's shifted output name re-runs the propagation
145
+ -- with n1 as the target, so n2's body (which references the OLD output
146
+ -- name) is rewritten in a second round and BOTH stay live. (Before the
147
+ -- cascade n2 was left stale with the staleness diagnostic on read.)
148
+ -- ===================================
149
+
150
+ create table c (id integer primary key, v integer not null);
151
+ insert into c values (1, 10);
152
+ create materialized view n1 as select id, v from c;
153
+ create materialized view n2 as select id, v from n1;
154
+
155
+ alter table c rename column v to w;
156
+
157
+ -- n1 stays live under the new name
158
+ select id, w from n1 order by id;
159
+ → [{"id":1,"w":10}]
160
+ insert into c values (2, 20);
161
+ select id, w from n1 order by id;
162
+ → [{"id":1,"w":10},{"id":2,"w":20}]
163
+
164
+ -- n2 followed the shifted name: live, maintained through the chain
165
+ select id, w from n2 order by id;
166
+ → [{"id":1,"w":10},{"id":2,"w":20}]
167
+
168
+ -- REFRESH re-plans the rewritten body against n1's renamed backing
169
+ refresh materialized view n2;
170
+ select id, w from n2 order by id;
171
+ → [{"id":1,"w":10},{"id":2,"w":20}]
172
+
173
+ drop materialized view n2;
174
+ drop materialized view n1;
175
+ drop table c;
176
+
177
+ -- ===================================
178
+ -- 7. RENAME COLUMN rewrites an MV's `with defaults` clause (clause-only:
179
+ -- the body does not project the defaulted column)
180
+ -- ===================================
181
+ -- Pre-fix the propagation `continue`d when the body AST didn't change, so the
182
+ -- clause kept the old name and write-through errored
183
+ -- "'with defaults (created = …)' names column 'created'".
184
+
185
+ create table g (id integer primary key, name text, created integer not null);
186
+ create materialized view mv7 as select id, name from g with defaults (created = 55);
187
+
188
+ alter table g rename column created to created_at;
189
+
190
+ -- write-through resolves the rewritten clause target
191
+ insert into mv7 values (1, 'y');
192
+
193
+ select id, name, created_at from g;
194
+ → [{"id":1,"name":"y","created_at":55}]
195
+
196
+ -- the MV stayed live: the write landed in the backing too
197
+ select id, name from mv7 order by id;
198
+ → [{"id":1,"name":"y"}]
199
+
200
+ drop materialized view mv7;
201
+ drop table g;
202
+
203
+ -- ===================================
204
+ -- 8. RENAME COLUMN hitting both an MV's body and its `with defaults` clause
205
+ -- ===================================
206
+ -- The defaulted column is also a bare passthrough projection: the rename
207
+ -- shifts the backing output name (body change) AND rewrites the clause target.
208
+
209
+ create table h (id integer primary key, v integer not null);
210
+ create materialized view mv8 as select id, v from h with defaults (v = 9);
211
+
212
+ alter table h rename column v to w;
213
+
214
+ insert into mv8 (id) values (1);
215
+
216
+ select id, w from h;
217
+ → [{"id":1,"w":9}]
218
+
219
+ select id, w from mv8 order by id;
220
+ → [{"id":1,"w":9}]
221
+
222
+ drop materialized view mv8;
223
+ drop table h;
224
+
225
+ -- ===================================
226
+ -- 9. RENAME TO of a table referenced inside an MV's `with defaults` expr
227
+ -- subquery (clause-only: the body reads a different table)
228
+ -- ===================================
229
+
230
+ create table aud (c integer primary key);
231
+ insert into aud values (3);
232
+
233
+ create table k (id integer primary key, ts integer not null);
234
+ create materialized view mv9 as select id from k with defaults (ts = (select max(c) from aud));
235
+
236
+ alter table aud rename to aud2;
237
+
238
+ insert into mv9 values (4);
239
+
240
+ select id, ts from k;
241
+ → [{"id":4,"ts":3}]
242
+
243
+ select id from mv9 order by id;
244
+ → [{"id":4}]
245
+
246
+ drop materialized view mv9;
247
+ drop table k;
248
+ drop table aud2;
249
+
250
+ -- ===================================
251
+ -- 10. RENAME COLUMN the MV body never references: provably unaffected — the MV
252
+ -- is restored after the statement (writes keep propagating, REFRESH keeps
253
+ -- working). Pre-fix it was left silently stale: reads served the
254
+ -- unmaintained backing and the insert below never appeared.
255
+ -- ===================================
256
+
257
+ create table ru (id integer primary key, v integer not null, u integer not null);
258
+ insert into ru values (1, 10, 100);
259
+ create materialized view mv10 as select id, u from ru;
260
+
261
+ alter table ru rename column v to w;
262
+
263
+ -- still live: the write propagates
264
+ insert into ru values (2, 20, 200);
265
+ select id, u from mv10 order by id;
266
+ → [{"id":1,"u":100},{"id":2,"u":200}]
267
+
268
+ -- REFRESH keeps working after the restore
269
+ refresh materialized view mv10;
270
+ select id, u from mv10 order by id;
271
+ → [{"id":1,"u":100},{"id":2,"u":200}]
272
+
273
+ drop materialized view mv10;
274
+ drop table ru;
275
+
276
+ -- ===================================
277
+ -- 11. RENAME TABLE whose only effect on another source is a constraint rewrite
278
+ -- (FK `references` target): the other source's dependent MV is provably
279
+ -- unaffected and is restored. Pre-fix the FK rewrite's table_modified marked
280
+ -- it stale and the MV loop skipped it (AST unchanged, sourceTables lacks the
281
+ -- renamed base) → silently stale.
282
+ -- ===================================
283
+
284
+ create table rp (id integer primary key);
285
+ create table rc (id integer primary key, tid integer references rp (id));
286
+ create materialized view mv11 as select id, tid from rc;
287
+
288
+ alter table rp rename to rp2;
289
+
290
+ insert into rp2 values (1);
291
+ insert into rc values (2, 1);
292
+ select id from mv11;
293
+ → [{"id":2}]
294
+
295
+ refresh materialized view mv11;
296
+ select id, tid from mv11 order by id;
297
+ → [{"id":2,"tid":1}]
298
+
299
+ drop materialized view mv11;
300
+ drop table rc;
301
+ drop table rp2;
302
+
303
+ -- ===================================
304
+ -- 12. RENAME COLUMN under a `select *` body: the AST is unchanged but the body's
305
+ -- output is a pure name shift — the restoration pass carries the new name
306
+ -- onto the backing and the MV stays live. Pre-fix it was left silently stale
307
+ -- under the OLD column name.
308
+ -- ===================================
309
+
310
+ create table rs (id integer primary key, v integer not null);
311
+ insert into rs values (1, 10);
312
+ create materialized view mv12 as select * from rs;
313
+
314
+ alter table rs rename column v to w;
315
+
316
+ -- the exposed name follows the rename
317
+ select id, w from mv12 order by id;
318
+ → [{"id":1,"w":10}]
319
+
320
+ -- the old name is gone (plain-view parity)
321
+ select v from mv12;
322
+ -- error: column not found
323
+
324
+ -- still live: writes maintain under the new name
325
+ insert into rs values (2, 20);
326
+ select id, w from mv12 order by id;
327
+ → [{"id":1,"w":10},{"id":2,"w":20}]
328
+
329
+ refresh materialized view mv12;
330
+ select id, w from mv12 order by id;
331
+ → [{"id":1,"w":10},{"id":2,"w":20}]
332
+
333
+ drop materialized view mv12;
334
+ drop table rs;
335
+
336
+ -- ===================================
337
+ -- 13. Chained MVs under the restoration pass: the `select *` producer's restore
338
+ -- renames its backing column, whose table_modified re-marks the consumer
339
+ -- stale MID-pass; the consumer is examined after the producer (creation
340
+ -- order) and — referencing only the unshifted column — is itself restored.
341
+ -- The whole chain stays live.
342
+ -- ===================================
343
+
344
+ create table cs (id integer primary key, v integer not null);
345
+ insert into cs values (1, 10);
346
+ create materialized view mv13p as select * from cs;
347
+ create materialized view mv13c as select id from mv13p;
348
+
349
+ alter table cs rename column v to w;
350
+
351
+ -- both live: a write to the base cascades producer → consumer
352
+ insert into cs values (2, 20);
353
+ select id, w from mv13p order by id;
354
+ → [{"id":1,"w":10},{"id":2,"w":20}]
355
+ select id from mv13c order by id;
356
+ → [{"id":1},{"id":2}]
357
+
358
+ refresh materialized view mv13c;
359
+ select id from mv13c order by id;
360
+ → [{"id":1},{"id":2}]
361
+
362
+ drop materialized view mv13c;
363
+ drop materialized view mv13p;
364
+ drop table cs;
365
+
366
+ -- ===================================
367
+ -- 14. A materialized view in ANOTHER schema follows the rename and stays LIVE
368
+ -- ===================================
369
+ -- The MV loop used to run only while iterating the renamed table's own schema,
370
+ -- so an MV in `temp` over `main.t` was never re-keyed: its body kept naming the
371
+ -- vanished table, its `sourceTables` kept the old base, and the rename's
372
+ -- `table_modified` left it stale with row-time maintenance detached. Every
373
+ -- schema is walked now.
374
+
375
+ create table main.xsrc (id integer primary key, v integer not null);
376
+ insert into main.xsrc values (1, 10);
377
+ create materialized view temp.mv14 as select id, v from main.xsrc;
378
+
379
+ alter table main.xsrc rename to xsrc2;
380
+
381
+ -- Live, not stale: a write to the renamed base still cascades (a stale MV would
382
+ -- serve the unmaintained backing and never see row 2).
383
+ insert into main.xsrc2 values (2, 20);
384
+ select id, v from temp.mv14 order by id;
385
+ → [{"id":1,"v":10},{"id":2,"v":20}]
386
+
387
+ -- REFRESH re-plans the rewritten body against the renamed catalog.
388
+ refresh materialized view temp.mv14;
389
+ select id, v from temp.mv14 order by id;
390
+ → [{"id":1,"v":10},{"id":2,"v":20}]
391
+
392
+ -- Column verb, same cross-schema MV.
393
+ alter table main.xsrc2 rename column v to w;
394
+
395
+ insert into main.xsrc2 values (3, 30);
396
+ select id, w from temp.mv14 order by id;
397
+ → [{"id":1,"w":10},{"id":2,"w":20},{"id":3,"w":30}]
398
+
399
+ refresh materialized view temp.mv14;
400
+ select id, w from temp.mv14 order by id;
401
+ → [{"id":1,"w":10},{"id":2,"w":20},{"id":3,"w":30}]
402
+
403
+ drop materialized view temp.mv14;
404
+ drop table main.xsrc2;
405
+
406
+ -- ===================================
407
+ -- 15. The cascade reaches READERS of a materialized view whose names shifted
408
+ -- ===================================
409
+ -- A bare-passthrough MV republishes the renamed column under the new name
410
+ -- (its backing columns follow the body's output names), so a plain view
411
+ -- reading the MV is one level further out and must be rewritten too.
412
+
413
+ create table t15 (id integer primary key, x integer);
414
+ insert into t15 values (1, 4);
415
+ create materialized view mv15 as select id, x from t15;
416
+ create view v15 as select id, x from mv15;
417
+
418
+ alter table t15 rename column x to y;
419
+
420
+ select id, y from v15;
421
+ → [{"id":1,"y":4}]
422
+
423
+ -- the MV is still live: writes keep maintaining, through to the outer view
424
+ insert into t15 values (2, 6);
425
+ select id, y from v15 order by id;
426
+ → [{"id":1,"y":4},{"id":2,"y":6}]
427
+
428
+ refresh materialized view mv15;
429
+ select id, y from v15 order by id;
430
+ → [{"id":1,"y":4},{"id":2,"y":6}]
431
+
432
+ drop view v15;
433
+ drop materialized view mv15;
434
+ drop table t15;
435
+
436
+ -- ===================================
437
+ -- 16. An MV OVER a view whose published names shifted follows in round two
438
+ -- ===================================
439
+ -- Round 1 rewrites the plain view's body (x → y); the MV reads the VIEW, so
440
+ -- only the second round — with the view as the rename target — reaches its
441
+ -- body. Its backing column follows and it stays live.
442
+
443
+ create table t16 (id integer primary key, x integer);
444
+ insert into t16 values (1, 9);
445
+ create view v16 as select id, x from t16;
446
+ create materialized view mv16 as select id, x from v16;
447
+
448
+ alter table t16 rename column x to y;
449
+
450
+ select id, y from mv16;
451
+ → [{"id":1,"y":9}]
452
+
453
+ insert into t16 values (2, 11);
454
+ select id, y from mv16 order by id;
455
+ → [{"id":1,"y":9},{"id":2,"y":11}]
456
+
457
+ refresh materialized view mv16;
458
+ select id, y from mv16 order by id;
459
+ → [{"id":1,"y":9},{"id":2,"y":11}]
460
+
461
+ drop materialized view mv16;
462
+ drop view v16;
463
+ drop table t16;
464
+
465
+ -- ===================================
466
+ -- 17. Published-name collision on an MV refuses the rename up front
467
+ -- ===================================
468
+ -- Mirror of the plain-view refusal: the MV republishes the renamed column
469
+ -- bare AND already publishes its own `y`, so the rename is refused before any
470
+ -- side effect and everything keeps reading under the old names.
471
+
472
+ create table t17 (id integer primary key, x integer);
473
+ insert into t17 values (1, 3);
474
+ create materialized view mv17 as select id, x, id + 1 as y from t17;
475
+
476
+ alter table t17 rename column x to y;
477
+ -- error: already publishes a column named 'y'
478
+
479
+ select id, x, y from mv17;
480
+ → [{"id":1,"x":3,"y":2}]
481
+
482
+ drop materialized view mv17;
483
+ drop table t17;