@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,232 @@
1
+ -- Deferred FK checks queued before an `alter table ... rename to` in the SAME
2
+ -- transaction must still evaluate at commit, against the table's CURRENT name.
3
+ -- Regression for: a queued check whose evaluator was compiled against the
4
+ -- pre-rename name failed the COMMIT with an engine-level "connect failed"
5
+ -- (memory) or a false constraint violation (store) instead of passing.
6
+
7
+ pragma foreign_keys = true;
8
+
9
+ -- ===================================
10
+ -- 1. Renaming the PARENT after the deferred check is queued
11
+ -- ===================================
12
+
13
+ create table dr_p (id integer primary key);
14
+ create table dr_c (id integer primary key,
15
+ pid integer null references dr_p(id) deferrable initially deferred);
16
+
17
+ begin;
18
+ insert into dr_c values (10, 1); -- queues the deferred FK check against dr_p
19
+ alter table dr_p rename to dr_p2;
20
+ insert into dr_p2 values (1); -- the parent row the check needs
21
+ commit;
22
+
23
+ select id, pid from dr_c order by id;
24
+ → [{"id":10,"pid":1}]
25
+
26
+ select id from dr_p2 order by id;
27
+ → [{"id":1}]
28
+
29
+ -- ===================================
30
+ -- 2. Same shape, but the parent row never arrives — the check must still be
31
+ -- evaluated and must REPORT the violation (not an internal error).
32
+ -- ===================================
33
+
34
+ create table dr_p3 (id integer primary key);
35
+ create table dr_c3 (id integer primary key,
36
+ pid integer null references dr_p3(id) deferrable initially deferred);
37
+
38
+ begin;
39
+ insert into dr_c3 values (10, 1);
40
+ alter table dr_p3 rename to dr_p4;
41
+ commit;
42
+ -- error: constraint
43
+
44
+ select count(*) as cnt from dr_c3;
45
+ → [{"cnt":0}]
46
+
47
+ -- ===================================
48
+ -- 3. Self-referential deferred FK + rename (case 10 of
49
+ -- 41-fk-cascade-conflict-and-self-ref.sqllogic, plus a rename)
50
+ -- ===================================
51
+
52
+ create table dr_sd (id integer primary key,
53
+ pid integer null references dr_sd(id) deferrable initially deferred);
54
+
55
+ begin;
56
+ insert into dr_sd values (2, 1); -- forward reference: parent not there yet
57
+ alter table dr_sd rename to dr_sd2;
58
+ insert into dr_sd2 values (1, null);
59
+ commit;
60
+
61
+ select id, pid from dr_sd2 order by id;
62
+ → [{"id":1,"pid":null},{"id":2,"pid":1}]
63
+
64
+ -- ===================================
65
+ -- 4. Renaming only the CHILD (the table the queued row belongs to)
66
+ -- ===================================
67
+
68
+ create table dr_p5 (id integer primary key);
69
+ create table dr_c5 (id integer primary key,
70
+ pid integer null references dr_p5(id) deferrable initially deferred);
71
+
72
+ begin;
73
+ insert into dr_c5 values (10, 1);
74
+ alter table dr_c5 rename to dr_c6;
75
+ insert into dr_p5 values (1);
76
+ commit;
77
+
78
+ select id, pid from dr_c6 order by id;
79
+ → [{"id":10,"pid":1}]
80
+
81
+ -- ===================================
82
+ -- 5. Two renames of the same table in one transaction
83
+ -- ===================================
84
+
85
+ create table dr_p7 (id integer primary key);
86
+ create table dr_c7 (id integer primary key,
87
+ pid integer null references dr_p7(id) deferrable initially deferred);
88
+
89
+ begin;
90
+ insert into dr_c7 values (10, 1);
91
+ alter table dr_p7 rename to dr_p8;
92
+ alter table dr_p8 rename to dr_p9;
93
+ insert into dr_p9 values (1);
94
+ commit;
95
+
96
+ select id, pid from dr_c7 order by id;
97
+ → [{"id":10,"pid":1}]
98
+
99
+ -- ===================================
100
+ -- 6. Renaming a column the deferred check reads, on both sides
101
+ -- ===================================
102
+
103
+ create table dr_p10 (id integer primary key, tag text);
104
+ create table dr_c10 (id integer primary key,
105
+ pid integer null references dr_p10(id) deferrable initially deferred);
106
+
107
+ begin;
108
+ insert into dr_c10 values (10, 1);
109
+ alter table dr_p10 rename column id to key_id;
110
+ alter table dr_c10 rename column pid to parent_id;
111
+ insert into dr_p10 values (1, 'x');
112
+ commit;
113
+
114
+ select id, parent_id from dr_c10 order by id;
115
+ → [{"id":10,"parent_id":1}]
116
+
117
+ -- ===================================
118
+ -- 7. A freed name reused by a FRESH table in the same transaction must NOT be
119
+ -- redirected — this is why the remap is per queued entry, not database-wide.
120
+ -- ===================================
121
+
122
+ create table dr_p11 (id integer primary key);
123
+ create table dr_c11 (id integer primary key,
124
+ pid integer null references dr_p11(id) deferrable initially deferred);
125
+
126
+ begin;
127
+ insert into dr_c11 values (10, 1);
128
+ alter table dr_p11 rename to dr_p12; -- the FK now points at dr_p12
129
+ insert into dr_p12 values (1);
130
+ create table dr_p11 (id integer primary key); -- fresh, unrelated table
131
+ insert into dr_p11 values (99);
132
+ commit;
133
+
134
+ select id, pid from dr_c11 order by id;
135
+ → [{"id":10,"pid":1}]
136
+
137
+ select id from dr_p11 order by id;
138
+ → [{"id":99}]
139
+
140
+ -- ===================================
141
+ -- 8. …and renaming that reused name again must still not drag the parked check
142
+ -- along: the parked entry already knows where ITS table went.
143
+ -- ===================================
144
+
145
+ create table dr_p13 (id integer primary key);
146
+ create table dr_c13 (id integer primary key,
147
+ pid integer null references dr_p13(id) deferrable initially deferred);
148
+
149
+ begin;
150
+ insert into dr_c13 values (10, 1);
151
+ alter table dr_p13 rename to dr_p14; -- parked check now reads dr_p14
152
+ insert into dr_p14 values (1); -- the parent row it needs
153
+ create table dr_p13 (id integer primary key); -- fresh table takes the freed name
154
+ insert into dr_p13 values (99);
155
+ alter table dr_p13 rename to dr_p15; -- must NOT re-point the parked check
156
+ commit;
157
+
158
+ select id, pid from dr_c13 order by id;
159
+ → [{"id":10,"pid":1}]
160
+
161
+ select id from dr_p14 order by id;
162
+ → [{"id":1}]
163
+
164
+ select id from dr_p15 order by id;
165
+ → [{"id":99}]
166
+
167
+ -- ===================================
168
+ -- 9. Cross-schema: the remap keys are `<schema>.<name>`, so a rename in ONE
169
+ -- schema must never follow a same-named table in another. Here the parked
170
+ -- check reads `s2.dr_x`, which is renamed to `dr_x2`; renaming the unrelated
171
+ -- `main.dr_x2` afterwards must leave the parked check pointing at `s2.dr_x2`.
172
+ -- ===================================
173
+
174
+ declare schema s2 {}
175
+ apply schema s2;
176
+ -- run
177
+
178
+ create table s2.dr_x (id integer primary key);
179
+ create table dr_x2 (id integer primary key); -- main, colliding bare name
180
+ create table dr_cx (id integer primary key,
181
+ pid integer null references s2.dr_x(id) deferrable initially deferred);
182
+
183
+ begin;
184
+ insert into dr_cx values (10, 1);
185
+ alter table s2.dr_x rename to dr_x2; -- parked check now reads s2.dr_x2
186
+ insert into s2.dr_x2 values (1); -- the parent row it needs
187
+ alter table dr_x2 rename to dr_x3; -- main.dr_x2 — must NOT drag the check along
188
+ commit;
189
+
190
+ select id, pid from dr_cx order by id;
191
+ → [{"id":10,"pid":1}]
192
+
193
+ select id from s2.dr_x2 order by id;
194
+ → [{"id":1}]
195
+
196
+ -- ===================================
197
+ -- 10. The other deferred shape: a CHECK containing a subquery is auto-deferred
198
+ -- (constraint-builder's `needsDeferred`), so this parks a check that reads
199
+ -- `dr_lookup` — a table neither side of any FK — and then renames it.
200
+ --
201
+ -- The value the check needs is inserted into the RENAMED table, after the
202
+ -- rename and before commit. This discriminates the remap for real: the
203
+ -- check is genuinely deferred to COMMIT and re-reads the live table there
204
+ -- (`bug-deferred-subquery-check-reads-stale-state`), so a broken
205
+ -- `notifyTableRename` remap — or a regression back to immediate
206
+ -- evaluation — would read the wrong table state and reject 'z', which
207
+ -- only exists under the table's post-rename name.
208
+ -- ===================================
209
+
210
+ create table dr_lookup (code text primary key);
211
+ insert into dr_lookup values ('a'), ('b');
212
+ create table dr_ck (id integer primary key, code text,
213
+ constraint dr_ck_code check (code in (select code from dr_lookup)));
214
+
215
+ begin;
216
+ insert into dr_ck values (1, 'z');
217
+ alter table dr_lookup rename to dr_lookup2;
218
+ insert into dr_lookup2 values ('z');
219
+ commit;
220
+
221
+ select id, code from dr_ck order by id;
222
+ → [{"id":1,"code":"z"}]
223
+
224
+ -- …and the violation is still REPORTED as a constraint failure across a rename.
225
+ begin;
226
+ insert into dr_ck values (2, 'zzz');
227
+ alter table dr_lookup2 rename to dr_lookup3;
228
+ commit;
229
+ -- error: constraint
230
+
231
+ select count(*) as cnt from dr_ck;
232
+ → [{"cnt":1}]
@@ -0,0 +1,200 @@
1
+ -- ALTER backfill DEFAULTs are converted to the column's declared type.
2
+ --
3
+ -- A backfilled cell must be indistinguishable from the cell a fresh INSERT under
4
+ -- the same DEFAULT would produce — same value, same typeof — for the literal
5
+ -- ADD COLUMN path, the per-row `new.<col>` evaluator path, and the SET NOT NULL
6
+ -- backfill. Runs under both the memory module (`yarn test`) and the store module
7
+ -- (`yarn test:store`); `typeof(...)` reads the stored value, so it is
8
+ -- module-agnostic.
9
+
10
+ -- ============================================================
11
+ -- 1. ADD COLUMN, literal default whose type differs from the column's
12
+ -- ============================================================
13
+
14
+ create table t_lit (a integer primary key, b integer);
15
+ insert into t_lit values (1, 10);
16
+ -- run
17
+
18
+ alter table t_lit add column n integer default '7';
19
+ -- run
20
+
21
+ -- Row 2 is inserted AFTER the ALTER, so the same DEFAULT applies through the
22
+ -- ordinary write path. Both rows must agree on value and on typeof.
23
+ insert into t_lit (a, b) values (2, 20);
24
+ -- run
25
+
26
+ select a, n, typeof(n) as t from t_lit order by a;
27
+ → [{"a":1,"n":7,"t":"integer"},{"a":2,"n":7,"t":"integer"}]
28
+
29
+ drop table t_lit;
30
+ -- run
31
+
32
+ -- Signed numeric default (a UnaryExpr, not a bare literal) on a REAL column.
33
+ create table t_neg (a integer primary key, b integer);
34
+ insert into t_neg values (1, 10);
35
+ -- run
36
+
37
+ alter table t_neg add column n real default -123.0;
38
+ -- run
39
+
40
+ insert into t_neg (a, b) values (2, 20);
41
+ -- run
42
+
43
+ -- `typeof` reports the stored VALUE's storage class, and an integral REAL reads back
44
+ -- as 'integer' — on both rows, which is the point: backfill and insert agree.
45
+ select a, n, typeof(n) as t from t_neg order by a;
46
+ → [{"a":1,"n":-123,"t":"integer"},{"a":2,"n":-123,"t":"integer"}]
47
+
48
+ drop table t_neg;
49
+ -- run
50
+
51
+ -- ============================================================
52
+ -- 2. ADD COLUMN, literal default on a JSON column
53
+ --
54
+ -- The DEFAULT's raw source text ('"abc"') is not the stored form any write path
55
+ -- produces — the stored form is the parsed JSON scalar (abc).
56
+ -- ============================================================
57
+
58
+ create table t_json (a integer primary key, b integer);
59
+ insert into t_json values (1, 10);
60
+ -- run
61
+
62
+ alter table t_json add column n json default '"abc"';
63
+ -- run
64
+
65
+ insert into t_json (a, b) values (2, 20);
66
+ -- run
67
+
68
+ select a, n from t_json order by a;
69
+ → [{"a":1,"n":"abc"},{"a":2,"n":"abc"}]
70
+
71
+ drop table t_json;
72
+ -- run
73
+
74
+ -- ============================================================
75
+ -- 2b. ADD COLUMN, literal default on temporal columns
76
+ --
77
+ -- A temporal type's parse CANONICALIZES, so the backfilled cell must hold the
78
+ -- canonical spelling (the one `set data type` rewrites to and an INSERT stores),
79
+ -- not the DEFAULT's raw source text.
80
+ -- ============================================================
81
+
82
+ create table t_temporal (a integer primary key, b integer);
83
+ insert into t_temporal values (1, 10);
84
+ -- run
85
+
86
+ alter table t_temporal add column d date default '2024-06-05T00:00:00Z';
87
+ -- run
88
+
89
+ alter table t_temporal add column sp timespan default '1 hour';
90
+ -- run
91
+
92
+ insert into t_temporal (a, b) values (2, 20);
93
+ -- run
94
+
95
+ select a, d, sp from t_temporal order by a;
96
+ → [{"a":1,"d":"2024-06-05","sp":"PT1H"},{"a":2,"d":"2024-06-05","sp":"PT1H"}]
97
+
98
+ drop table t_temporal;
99
+ -- run
100
+
101
+ -- ============================================================
102
+ -- 3. ADD COLUMN, per-row `new.<col>` evaluator default across types
103
+ -- ============================================================
104
+
105
+ create table t_eval (a integer primary key, b text);
106
+ insert into t_eval values (1, '7');
107
+ -- run
108
+
109
+ alter table t_eval add column n integer default (new.b);
110
+ -- run
111
+
112
+ insert into t_eval (a, b) values (2, '20');
113
+ -- run
114
+
115
+ select a, n, typeof(n) as t from t_eval order by a;
116
+ → [{"a":1,"n":7,"t":"integer"},{"a":2,"n":20,"t":"integer"}]
117
+
118
+ drop table t_eval;
119
+ -- run
120
+
121
+ -- ============================================================
122
+ -- 4. Regression guard: identity case must NOT be re-converted
123
+ --
124
+ -- When the default expression's static type already IS the new column's type,
125
+ -- the evaluated value is ALREADY in stored form and must be copied verbatim.
126
+ -- JSON's parse reads a plain JS string as JSON *source*, so a blanket coercion
127
+ -- would turn the stored text `9` into the number 9 and throw on stored `abc`.
128
+ -- ============================================================
129
+
130
+ create table t_ident (a integer primary key, j json);
131
+ insert into t_ident values (1, '"abc"'), (2, '9');
132
+ -- run
133
+
134
+ select a, j from t_ident order by a;
135
+ → [{"a":1,"j":"abc"},{"a":2,"j":9}]
136
+
137
+ alter table t_ident add column k json default (new.j);
138
+ -- run
139
+
140
+ select a, k from t_ident order by a;
141
+ → [{"a":1,"k":"abc"},{"a":2,"k":9}]
142
+
143
+ drop table t_ident;
144
+ -- run
145
+
146
+ -- ============================================================
147
+ -- 5. ALTER COLUMN ... SET NOT NULL backfills the converted DEFAULT
148
+ -- ============================================================
149
+
150
+ create table t_snn (a integer primary key, b integer null default '5');
151
+ insert into t_snn (a, b) values (1, null);
152
+ -- run
153
+
154
+ alter table t_snn alter column b set not null;
155
+ -- run
156
+
157
+ select a, b, typeof(b) as t from t_snn order by a;
158
+ → [{"a":1,"b":5,"t":"integer"}]
159
+
160
+ -- The backfilled cell matches what an INSERT letting the DEFAULT apply stores.
161
+ insert into t_snn (a) values (2);
162
+ -- run
163
+
164
+ select a, b, typeof(b) as t from t_snn order by a;
165
+ → [{"a":1,"b":5,"t":"integer"},{"a":2,"b":5,"t":"integer"}]
166
+
167
+ drop table t_snn;
168
+ -- run
169
+
170
+ -- ============================================================
171
+ -- 6. An unconvertible literal default rejects the ALTER
172
+ --
173
+ -- Same MISMATCH the equivalent INSERT raises, and — deliberately — regardless of
174
+ -- how many rows the table happens to hold, so DDL acceptance does not depend on
175
+ -- the data.
176
+ -- ============================================================
177
+
178
+ create table t_bad (a integer primary key);
179
+ insert into t_bad values (1);
180
+ -- run
181
+
182
+ alter table t_bad add column n integer default 'abc';
183
+ -- error: Type conversion failed
184
+
185
+ -- The column was not added.
186
+ select * from t_bad order by a;
187
+ → [{"a":1}]
188
+
189
+ drop table t_bad;
190
+ -- run
191
+
192
+ -- Empty table: same rejection.
193
+ create table t_bad_empty (a integer primary key);
194
+ -- run
195
+
196
+ alter table t_bad_empty add column n integer default 'abc';
197
+ -- error: Type conversion failed
198
+
199
+ drop table t_bad_empty;
200
+ -- run