@quereus/quereus 4.4.1 → 4.6.0

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 (593) hide show
  1. package/README.md +5 -4
  2. package/dist/src/core/database-events.d.ts +99 -1
  3. package/dist/src/core/database-events.d.ts.map +1 -1
  4. package/dist/src/core/database-events.js +219 -3
  5. package/dist/src/core/database-events.js.map +1 -1
  6. package/dist/src/core/database-materialized-views-analysis.d.ts.map +1 -1
  7. package/dist/src/core/database-materialized-views-analysis.js +1 -0
  8. package/dist/src/core/database-materialized-views-analysis.js.map +1 -1
  9. package/dist/src/core/database-materialized-views-plan-builders.d.ts.map +1 -1
  10. package/dist/src/core/database-materialized-views-plan-builders.js +29 -2
  11. package/dist/src/core/database-materialized-views-plan-builders.js.map +1 -1
  12. package/dist/src/core/database-transaction.d.ts +9 -0
  13. package/dist/src/core/database-transaction.d.ts.map +1 -1
  14. package/dist/src/core/database-transaction.js +9 -0
  15. package/dist/src/core/database-transaction.js.map +1 -1
  16. package/dist/src/core/database.d.ts +7 -1
  17. package/dist/src/core/database.d.ts.map +1 -1
  18. package/dist/src/core/database.js +20 -5
  19. package/dist/src/core/database.js.map +1 -1
  20. package/dist/src/func/builtins/aggregate.js +11 -11
  21. package/dist/src/func/builtins/aggregate.js.map +1 -1
  22. package/dist/src/func/builtins/builtin-window-functions.d.ts.map +1 -1
  23. package/dist/src/func/builtins/builtin-window-functions.js +15 -85
  24. package/dist/src/func/builtins/builtin-window-functions.js.map +1 -1
  25. package/dist/src/func/builtins/conversion.d.ts.map +1 -1
  26. package/dist/src/func/builtins/conversion.js +10 -9
  27. package/dist/src/func/builtins/conversion.js.map +1 -1
  28. package/dist/src/func/builtins/datetime.d.ts.map +1 -1
  29. package/dist/src/func/builtins/datetime.js +28 -10
  30. package/dist/src/func/builtins/datetime.js.map +1 -1
  31. package/dist/src/func/builtins/json.d.ts.map +1 -1
  32. package/dist/src/func/builtins/json.js +23 -17
  33. package/dist/src/func/builtins/json.js.map +1 -1
  34. package/dist/src/func/builtins/mutation.js +2 -2
  35. package/dist/src/func/builtins/mutation.js.map +1 -1
  36. package/dist/src/func/builtins/return-types.d.ts +327 -0
  37. package/dist/src/func/builtins/return-types.d.ts.map +1 -0
  38. package/dist/src/func/builtins/return-types.js +43 -0
  39. package/dist/src/func/builtins/return-types.js.map +1 -0
  40. package/dist/src/func/builtins/scalar.d.ts.map +1 -1
  41. package/dist/src/func/builtins/scalar.js +193 -37
  42. package/dist/src/func/builtins/scalar.js.map +1 -1
  43. package/dist/src/func/builtins/schema.d.ts.map +1 -1
  44. package/dist/src/func/builtins/schema.js +11 -3
  45. package/dist/src/func/builtins/schema.js.map +1 -1
  46. package/dist/src/func/builtins/string.d.ts.map +1 -1
  47. package/dist/src/func/builtins/string.js +4 -2
  48. package/dist/src/func/builtins/string.js.map +1 -1
  49. package/dist/src/func/builtins/timespan.d.ts +3 -0
  50. package/dist/src/func/builtins/timespan.d.ts.map +1 -1
  51. package/dist/src/func/builtins/timespan.js +15 -11
  52. package/dist/src/func/builtins/timespan.js.map +1 -1
  53. package/dist/src/func/registration.d.ts +39 -1
  54. package/dist/src/func/registration.d.ts.map +1 -1
  55. package/dist/src/func/registration.js +236 -41
  56. package/dist/src/func/registration.js.map +1 -1
  57. package/dist/src/index.d.ts +14 -7
  58. package/dist/src/index.d.ts.map +1 -1
  59. package/dist/src/index.js +14 -5
  60. package/dist/src/index.js.map +1 -1
  61. package/dist/src/parser/parser.d.ts +46 -0
  62. package/dist/src/parser/parser.d.ts.map +1 -1
  63. package/dist/src/parser/parser.js +160 -44
  64. package/dist/src/parser/parser.js.map +1 -1
  65. package/dist/src/planner/analysis/check-extraction.d.ts.map +1 -1
  66. package/dist/src/planner/analysis/check-extraction.js +37 -4
  67. package/dist/src/planner/analysis/check-extraction.js.map +1 -1
  68. package/dist/src/planner/analysis/coarsened-key.d.ts +4 -3
  69. package/dist/src/planner/analysis/coarsened-key.d.ts.map +1 -1
  70. package/dist/src/planner/analysis/coarsened-key.js +37 -3
  71. package/dist/src/planner/analysis/coarsened-key.js.map +1 -1
  72. package/dist/src/planner/analysis/comparison-collation.d.ts +41 -13
  73. package/dist/src/planner/analysis/comparison-collation.d.ts.map +1 -1
  74. package/dist/src/planner/analysis/comparison-collation.js +51 -14
  75. package/dist/src/planner/analysis/comparison-collation.js.map +1 -1
  76. package/dist/src/planner/analysis/constraint-extractor.d.ts +0 -7
  77. package/dist/src/planner/analysis/constraint-extractor.d.ts.map +1 -1
  78. package/dist/src/planner/analysis/constraint-extractor.js +59 -59
  79. package/dist/src/planner/analysis/constraint-extractor.js.map +1 -1
  80. package/dist/src/planner/analysis/coverage-prover.d.ts +13 -2
  81. package/dist/src/planner/analysis/coverage-prover.d.ts.map +1 -1
  82. package/dist/src/planner/analysis/coverage-prover.js +10 -14
  83. package/dist/src/planner/analysis/coverage-prover.js.map +1 -1
  84. package/dist/src/planner/analysis/predicate-conjuncts.d.ts +10 -4
  85. package/dist/src/planner/analysis/predicate-conjuncts.d.ts.map +1 -1
  86. package/dist/src/planner/analysis/predicate-conjuncts.js +28 -7
  87. package/dist/src/planner/analysis/predicate-conjuncts.js.map +1 -1
  88. package/dist/src/planner/analysis/query-rewrite-matcher.d.ts.map +1 -1
  89. package/dist/src/planner/analysis/query-rewrite-matcher.js +8 -27
  90. package/dist/src/planner/analysis/query-rewrite-matcher.js.map +1 -1
  91. package/dist/src/planner/analysis/scalar-subqueries.d.ts +22 -3
  92. package/dist/src/planner/analysis/scalar-subqueries.d.ts.map +1 -1
  93. package/dist/src/planner/analysis/scalar-subqueries.js +32 -3
  94. package/dist/src/planner/analysis/scalar-subqueries.js.map +1 -1
  95. package/dist/src/planner/analysis/set-op-type-merge.d.ts +64 -0
  96. package/dist/src/planner/analysis/set-op-type-merge.d.ts.map +1 -0
  97. package/dist/src/planner/analysis/set-op-type-merge.js +97 -0
  98. package/dist/src/planner/analysis/set-op-type-merge.js.map +1 -0
  99. package/dist/src/planner/building/alter-table.d.ts.map +1 -1
  100. package/dist/src/planner/building/alter-table.js +65 -27
  101. package/dist/src/planner/building/alter-table.js.map +1 -1
  102. package/dist/src/planner/building/coercion.d.ts +54 -0
  103. package/dist/src/planner/building/coercion.d.ts.map +1 -0
  104. package/dist/src/planner/building/coercion.js +88 -0
  105. package/dist/src/planner/building/coercion.js.map +1 -0
  106. package/dist/src/planner/building/constraint-builder.d.ts.map +1 -1
  107. package/dist/src/planner/building/constraint-builder.js +5 -18
  108. package/dist/src/planner/building/constraint-builder.js.map +1 -1
  109. package/dist/src/planner/building/expression.d.ts +17 -0
  110. package/dist/src/planner/building/expression.d.ts.map +1 -1
  111. package/dist/src/planner/building/expression.js +23 -115
  112. package/dist/src/planner/building/expression.js.map +1 -1
  113. package/dist/src/planner/building/function-call.d.ts.map +1 -1
  114. package/dist/src/planner/building/function-call.js +13 -0
  115. package/dist/src/planner/building/function-call.js.map +1 -1
  116. package/dist/src/planner/building/select-aggregates.d.ts +1 -1
  117. package/dist/src/planner/building/select-aggregates.d.ts.map +1 -1
  118. package/dist/src/planner/building/select-aggregates.js +53 -2
  119. package/dist/src/planner/building/select-aggregates.js.map +1 -1
  120. package/dist/src/planner/building/select-compound.d.ts.map +1 -1
  121. package/dist/src/planner/building/select-compound.js +10 -6
  122. package/dist/src/planner/building/select-compound.js.map +1 -1
  123. package/dist/src/planner/building/select-context.d.ts +7 -0
  124. package/dist/src/planner/building/select-context.d.ts.map +1 -1
  125. package/dist/src/planner/building/select-context.js +10 -40
  126. package/dist/src/planner/building/select-context.js.map +1 -1
  127. package/dist/src/planner/building/select.d.ts +37 -1
  128. package/dist/src/planner/building/select.d.ts.map +1 -1
  129. package/dist/src/planner/building/select.js +112 -51
  130. package/dist/src/planner/building/select.js.map +1 -1
  131. package/dist/src/planner/cost/conjunct-cost.d.ts +82 -0
  132. package/dist/src/planner/cost/conjunct-cost.d.ts.map +1 -0
  133. package/dist/src/planner/cost/conjunct-cost.js +107 -0
  134. package/dist/src/planner/cost/conjunct-cost.js.map +1 -0
  135. package/dist/src/planner/cost/index.d.ts +10 -0
  136. package/dist/src/planner/cost/index.d.ts.map +1 -1
  137. package/dist/src/planner/cost/index.js +15 -0
  138. package/dist/src/planner/cost/index.js.map +1 -1
  139. package/dist/src/planner/mutation/propagate.d.ts.map +1 -1
  140. package/dist/src/planner/mutation/propagate.js +1 -0
  141. package/dist/src/planner/mutation/propagate.js.map +1 -1
  142. package/dist/src/planner/nodes/aggregate-node.d.ts +6 -0
  143. package/dist/src/planner/nodes/aggregate-node.d.ts.map +1 -1
  144. package/dist/src/planner/nodes/aggregate-node.js +10 -2
  145. package/dist/src/planner/nodes/aggregate-node.js.map +1 -1
  146. package/dist/src/planner/nodes/alias-node.d.ts.map +1 -1
  147. package/dist/src/planner/nodes/alias-node.js +2 -1
  148. package/dist/src/planner/nodes/alias-node.js.map +1 -1
  149. package/dist/src/planner/nodes/alter-table-node.d.ts +24 -8
  150. package/dist/src/planner/nodes/alter-table-node.d.ts.map +1 -1
  151. package/dist/src/planner/nodes/alter-table-node.js.map +1 -1
  152. package/dist/src/planner/nodes/asof-scan-node.d.ts.map +1 -1
  153. package/dist/src/planner/nodes/asof-scan-node.js +4 -1
  154. package/dist/src/planner/nodes/asof-scan-node.js.map +1 -1
  155. package/dist/src/planner/nodes/asserted-keys-node.d.ts.map +1 -1
  156. package/dist/src/planner/nodes/asserted-keys-node.js +2 -1
  157. package/dist/src/planner/nodes/asserted-keys-node.js.map +1 -1
  158. package/dist/src/planner/nodes/async-gather-node.d.ts.map +1 -1
  159. package/dist/src/planner/nodes/async-gather-node.js +19 -8
  160. package/dist/src/planner/nodes/async-gather-node.js.map +1 -1
  161. package/dist/src/planner/nodes/bloom-join-node.d.ts +2 -0
  162. package/dist/src/planner/nodes/bloom-join-node.d.ts.map +1 -1
  163. package/dist/src/planner/nodes/bloom-join-node.js +17 -7
  164. package/dist/src/planner/nodes/bloom-join-node.js.map +1 -1
  165. package/dist/src/planner/nodes/cache-node.d.ts.map +1 -1
  166. package/dist/src/planner/nodes/cache-node.js +2 -1
  167. package/dist/src/planner/nodes/cache-node.js.map +1 -1
  168. package/dist/src/planner/nodes/distinct-node.d.ts +6 -0
  169. package/dist/src/planner/nodes/distinct-node.d.ts.map +1 -1
  170. package/dist/src/planner/nodes/distinct-node.js +10 -2
  171. package/dist/src/planner/nodes/distinct-node.js.map +1 -1
  172. package/dist/src/planner/nodes/eager-prefetch-node.d.ts.map +1 -1
  173. package/dist/src/planner/nodes/eager-prefetch-node.js +2 -1
  174. package/dist/src/planner/nodes/eager-prefetch-node.js.map +1 -1
  175. package/dist/src/planner/nodes/fanout-lookup-join-node.d.ts +5 -0
  176. package/dist/src/planner/nodes/fanout-lookup-join-node.d.ts.map +1 -1
  177. package/dist/src/planner/nodes/fanout-lookup-join-node.js +13 -6
  178. package/dist/src/planner/nodes/fanout-lookup-join-node.js.map +1 -1
  179. package/dist/src/planner/nodes/filter.d.ts.map +1 -1
  180. package/dist/src/planner/nodes/filter.js +12 -5
  181. package/dist/src/planner/nodes/filter.js.map +1 -1
  182. package/dist/src/planner/nodes/hash-aggregate.d.ts +6 -0
  183. package/dist/src/planner/nodes/hash-aggregate.d.ts.map +1 -1
  184. package/dist/src/planner/nodes/hash-aggregate.js +10 -2
  185. package/dist/src/planner/nodes/hash-aggregate.js.map +1 -1
  186. package/dist/src/planner/nodes/join-node.d.ts +25 -1
  187. package/dist/src/planner/nodes/join-node.d.ts.map +1 -1
  188. package/dist/src/planner/nodes/join-node.js +38 -10
  189. package/dist/src/planner/nodes/join-node.js.map +1 -1
  190. package/dist/src/planner/nodes/join-utils.d.ts +78 -0
  191. package/dist/src/planner/nodes/join-utils.d.ts.map +1 -1
  192. package/dist/src/planner/nodes/join-utils.js +73 -0
  193. package/dist/src/planner/nodes/join-utils.js.map +1 -1
  194. package/dist/src/planner/nodes/key-set-semi-join-node.d.ts +87 -0
  195. package/dist/src/planner/nodes/key-set-semi-join-node.d.ts.map +1 -0
  196. package/dist/src/planner/nodes/key-set-semi-join-node.js +141 -0
  197. package/dist/src/planner/nodes/key-set-semi-join-node.js.map +1 -0
  198. package/dist/src/planner/nodes/lens-auxiliary-access-node.d.ts.map +1 -1
  199. package/dist/src/planner/nodes/lens-auxiliary-access-node.js +2 -1
  200. package/dist/src/planner/nodes/lens-auxiliary-access-node.js.map +1 -1
  201. package/dist/src/planner/nodes/limit-offset.d.ts +6 -0
  202. package/dist/src/planner/nodes/limit-offset.d.ts.map +1 -1
  203. package/dist/src/planner/nodes/limit-offset.js +10 -2
  204. package/dist/src/planner/nodes/limit-offset.js.map +1 -1
  205. package/dist/src/planner/nodes/merge-join-node.d.ts +2 -0
  206. package/dist/src/planner/nodes/merge-join-node.d.ts.map +1 -1
  207. package/dist/src/planner/nodes/merge-join-node.js +21 -8
  208. package/dist/src/planner/nodes/merge-join-node.js.map +1 -1
  209. package/dist/src/planner/nodes/ordinal-slice-node.d.ts +5 -0
  210. package/dist/src/planner/nodes/ordinal-slice-node.d.ts.map +1 -1
  211. package/dist/src/planner/nodes/ordinal-slice-node.js +9 -2
  212. package/dist/src/planner/nodes/ordinal-slice-node.js.map +1 -1
  213. package/dist/src/planner/nodes/plan-node-type.d.ts +1 -0
  214. package/dist/src/planner/nodes/plan-node-type.d.ts.map +1 -1
  215. package/dist/src/planner/nodes/plan-node-type.js +1 -0
  216. package/dist/src/planner/nodes/plan-node-type.js.map +1 -1
  217. package/dist/src/planner/nodes/plan-node.d.ts +24 -0
  218. package/dist/src/planner/nodes/plan-node.d.ts.map +1 -1
  219. package/dist/src/planner/nodes/plan-node.js.map +1 -1
  220. package/dist/src/planner/nodes/project-node.d.ts.map +1 -1
  221. package/dist/src/planner/nodes/project-node.js +2 -1
  222. package/dist/src/planner/nodes/project-node.js.map +1 -1
  223. package/dist/src/planner/nodes/reference.d.ts.map +1 -1
  224. package/dist/src/planner/nodes/reference.js +3 -2
  225. package/dist/src/planner/nodes/reference.js.map +1 -1
  226. package/dist/src/planner/nodes/retrieve-node.d.ts.map +1 -1
  227. package/dist/src/planner/nodes/retrieve-node.js +2 -1
  228. package/dist/src/planner/nodes/retrieve-node.js.map +1 -1
  229. package/dist/src/planner/nodes/scalar.d.ts.map +1 -1
  230. package/dist/src/planner/nodes/scalar.js +5 -18
  231. package/dist/src/planner/nodes/scalar.js.map +1 -1
  232. package/dist/src/planner/nodes/set-operation-node.d.ts +68 -16
  233. package/dist/src/planner/nodes/set-operation-node.d.ts.map +1 -1
  234. package/dist/src/planner/nodes/set-operation-node.js +147 -26
  235. package/dist/src/planner/nodes/set-operation-node.js.map +1 -1
  236. package/dist/src/planner/nodes/sort.d.ts.map +1 -1
  237. package/dist/src/planner/nodes/sort.js +3 -1
  238. package/dist/src/planner/nodes/sort.js.map +1 -1
  239. package/dist/src/planner/nodes/stream-aggregate.d.ts +6 -0
  240. package/dist/src/planner/nodes/stream-aggregate.d.ts.map +1 -1
  241. package/dist/src/planner/nodes/stream-aggregate.js +10 -2
  242. package/dist/src/planner/nodes/stream-aggregate.js.map +1 -1
  243. package/dist/src/planner/nodes/table-access-nodes.d.ts +19 -1
  244. package/dist/src/planner/nodes/table-access-nodes.d.ts.map +1 -1
  245. package/dist/src/planner/nodes/table-access-nodes.js +18 -2
  246. package/dist/src/planner/nodes/table-access-nodes.js.map +1 -1
  247. package/dist/src/planner/nodes/window-function.d.ts.map +1 -1
  248. package/dist/src/planner/nodes/window-function.js +8 -0
  249. package/dist/src/planner/nodes/window-function.js.map +1 -1
  250. package/dist/src/planner/nodes/window-node.d.ts +1 -1
  251. package/dist/src/planner/nodes/window-node.d.ts.map +1 -1
  252. package/dist/src/planner/nodes/window-node.js +3 -1
  253. package/dist/src/planner/nodes/window-node.js.map +1 -1
  254. package/dist/src/planner/optimizer.d.ts +9 -1
  255. package/dist/src/planner/optimizer.d.ts.map +1 -1
  256. package/dist/src/planner/optimizer.js +126 -6
  257. package/dist/src/planner/optimizer.js.map +1 -1
  258. package/dist/src/planner/rules/access/rule-key-set-seek.d.ts +68 -0
  259. package/dist/src/planner/rules/access/rule-key-set-seek.d.ts.map +1 -0
  260. package/dist/src/planner/rules/access/rule-key-set-seek.js +343 -0
  261. package/dist/src/planner/rules/access/rule-key-set-seek.js.map +1 -0
  262. package/dist/src/planner/rules/access/rule-monotonic-range-access.d.ts.map +1 -1
  263. package/dist/src/planner/rules/access/rule-monotonic-range-access.js +2 -2
  264. package/dist/src/planner/rules/access/rule-monotonic-range-access.js.map +1 -1
  265. package/dist/src/planner/rules/access/rule-select-access-path.d.ts +46 -0
  266. package/dist/src/planner/rules/access/rule-select-access-path.d.ts.map +1 -1
  267. package/dist/src/planner/rules/access/rule-select-access-path.js +54 -13
  268. package/dist/src/planner/rules/access/rule-select-access-path.js.map +1 -1
  269. package/dist/src/planner/rules/cache/rule-cte-optimization.d.ts.map +1 -1
  270. package/dist/src/planner/rules/cache/rule-cte-optimization.js +9 -0
  271. package/dist/src/planner/rules/cache/rule-cte-optimization.js.map +1 -1
  272. package/dist/src/planner/rules/cache/rule-nested-loop-right-cache.d.ts.map +1 -1
  273. package/dist/src/planner/rules/cache/rule-nested-loop-right-cache.js +6 -4
  274. package/dist/src/planner/rules/cache/rule-nested-loop-right-cache.js.map +1 -1
  275. package/dist/src/planner/rules/join/equi-pair-extractor.d.ts +49 -49
  276. package/dist/src/planner/rules/join/equi-pair-extractor.d.ts.map +1 -1
  277. package/dist/src/planner/rules/join/equi-pair-extractor.js +54 -58
  278. package/dist/src/planner/rules/join/equi-pair-extractor.js.map +1 -1
  279. package/dist/src/planner/rules/join/index-nested-loop.d.ts +49 -0
  280. package/dist/src/planner/rules/join/index-nested-loop.d.ts.map +1 -0
  281. package/dist/src/planner/rules/join/index-nested-loop.js +285 -0
  282. package/dist/src/planner/rules/join/index-nested-loop.js.map +1 -0
  283. package/dist/src/planner/rules/join/rule-fanout-batched-outer.js +8 -8
  284. package/dist/src/planner/rules/join/rule-join-physical-selection.d.ts +10 -4
  285. package/dist/src/planner/rules/join/rule-join-physical-selection.d.ts.map +1 -1
  286. package/dist/src/planner/rules/join/rule-join-physical-selection.js +97 -29
  287. package/dist/src/planner/rules/join/rule-join-physical-selection.js.map +1 -1
  288. package/dist/src/planner/rules/join/rule-monotonic-merge-join.d.ts.map +1 -1
  289. package/dist/src/planner/rules/join/rule-monotonic-merge-join.js +15 -5
  290. package/dist/src/planner/rules/join/rule-monotonic-merge-join.js.map +1 -1
  291. package/dist/src/planner/rules/predicate/rule-empty-relation-folding.d.ts +1 -1
  292. package/dist/src/planner/rules/predicate/rule-empty-relation-folding.js +1 -1
  293. package/dist/src/planner/rules/predicate/rule-filter-conjunct-ordering.d.ts +43 -0
  294. package/dist/src/planner/rules/predicate/rule-filter-conjunct-ordering.d.ts.map +1 -0
  295. package/dist/src/planner/rules/predicate/rule-filter-conjunct-ordering.js +119 -0
  296. package/dist/src/planner/rules/predicate/rule-filter-conjunct-ordering.js.map +1 -0
  297. package/dist/src/planner/rules/predicate/rule-filter-selectivity.d.ts +44 -3
  298. package/dist/src/planner/rules/predicate/rule-filter-selectivity.d.ts.map +1 -1
  299. package/dist/src/planner/rules/predicate/rule-filter-selectivity.js +142 -18
  300. package/dist/src/planner/rules/predicate/rule-filter-selectivity.js.map +1 -1
  301. package/dist/src/planner/rules/predicate/rule-join-predicate-pushdown.d.ts +73 -0
  302. package/dist/src/planner/rules/predicate/rule-join-predicate-pushdown.d.ts.map +1 -0
  303. package/dist/src/planner/rules/predicate/rule-join-predicate-pushdown.js +205 -0
  304. package/dist/src/planner/rules/predicate/rule-join-predicate-pushdown.js.map +1 -0
  305. package/dist/src/planner/rules/predicate/rule-predicate-inference-equivalence.d.ts +14 -11
  306. package/dist/src/planner/rules/predicate/rule-predicate-inference-equivalence.d.ts.map +1 -1
  307. package/dist/src/planner/rules/predicate/rule-predicate-inference-equivalence.js +21 -85
  308. package/dist/src/planner/rules/predicate/rule-predicate-inference-equivalence.js.map +1 -1
  309. package/dist/src/planner/rules/predicate/rule-predicate-pushdown.d.ts +10 -2
  310. package/dist/src/planner/rules/predicate/rule-predicate-pushdown.d.ts.map +1 -1
  311. package/dist/src/planner/rules/predicate/rule-predicate-pushdown.js +20 -2
  312. package/dist/src/planner/rules/predicate/rule-predicate-pushdown.js.map +1 -1
  313. package/dist/src/planner/rules/retrieve/rule-grow-retrieve.d.ts.map +1 -1
  314. package/dist/src/planner/rules/retrieve/rule-grow-retrieve.js +18 -3
  315. package/dist/src/planner/rules/retrieve/rule-grow-retrieve.js.map +1 -1
  316. package/dist/src/planner/rules/shared/access-leaf.d.ts +39 -0
  317. package/dist/src/planner/rules/shared/access-leaf.d.ts.map +1 -0
  318. package/dist/src/planner/rules/shared/access-leaf.js +79 -0
  319. package/dist/src/planner/rules/shared/access-leaf.js.map +1 -0
  320. package/dist/src/planner/rules/shared/index-style-context.d.ts +17 -0
  321. package/dist/src/planner/rules/shared/index-style-context.d.ts.map +1 -1
  322. package/dist/src/planner/rules/shared/index-style-context.js +7 -0
  323. package/dist/src/planner/rules/shared/index-style-context.js.map +1 -1
  324. package/dist/src/planner/rules/subquery/rule-anti-join-fk-empty.d.ts.map +1 -1
  325. package/dist/src/planner/rules/subquery/rule-anti-join-fk-empty.js +18 -8
  326. package/dist/src/planner/rules/subquery/rule-anti-join-fk-empty.js.map +1 -1
  327. package/dist/src/planner/rules/subquery/rule-semi-join-fk-trivial.d.ts +3 -1
  328. package/dist/src/planner/rules/subquery/rule-semi-join-fk-trivial.d.ts.map +1 -1
  329. package/dist/src/planner/rules/subquery/rule-semi-join-fk-trivial.js +27 -10
  330. package/dist/src/planner/rules/subquery/rule-semi-join-fk-trivial.js.map +1 -1
  331. package/dist/src/planner/rules/subquery/rule-subquery-decorrelation.d.ts +24 -6
  332. package/dist/src/planner/rules/subquery/rule-subquery-decorrelation.d.ts.map +1 -1
  333. package/dist/src/planner/rules/subquery/rule-subquery-decorrelation.js +243 -70
  334. package/dist/src/planner/rules/subquery/rule-subquery-decorrelation.js.map +1 -1
  335. package/dist/src/planner/rules/window/rule-monotonic-window.d.ts +17 -7
  336. package/dist/src/planner/rules/window/rule-monotonic-window.d.ts.map +1 -1
  337. package/dist/src/planner/rules/window/rule-monotonic-window.js +124 -87
  338. package/dist/src/planner/rules/window/rule-monotonic-window.js.map +1 -1
  339. package/dist/src/planner/scopes/aliased.d.ts.map +1 -1
  340. package/dist/src/planner/scopes/aliased.js +6 -0
  341. package/dist/src/planner/scopes/aliased.js.map +1 -1
  342. package/dist/src/planner/stats/catalog-stats.d.ts +87 -4
  343. package/dist/src/planner/stats/catalog-stats.d.ts.map +1 -1
  344. package/dist/src/planner/stats/catalog-stats.js +250 -28
  345. package/dist/src/planner/stats/catalog-stats.js.map +1 -1
  346. package/dist/src/planner/stats/conjunct-selectivity.d.ts +48 -0
  347. package/dist/src/planner/stats/conjunct-selectivity.d.ts.map +1 -0
  348. package/dist/src/planner/stats/conjunct-selectivity.js +168 -0
  349. package/dist/src/planner/stats/conjunct-selectivity.js.map +1 -0
  350. package/dist/src/planner/stats/index.d.ts +36 -2
  351. package/dist/src/planner/stats/index.d.ts.map +1 -1
  352. package/dist/src/planner/stats/index.js.map +1 -1
  353. package/dist/src/planner/stats/selectivity-combine.d.ts +53 -0
  354. package/dist/src/planner/stats/selectivity-combine.d.ts.map +1 -0
  355. package/dist/src/planner/stats/selectivity-combine.js +75 -0
  356. package/dist/src/planner/stats/selectivity-combine.js.map +1 -0
  357. package/dist/src/planner/stats/table-cardinality.d.ts +28 -0
  358. package/dist/src/planner/stats/table-cardinality.d.ts.map +1 -0
  359. package/dist/src/planner/stats/table-cardinality.js +29 -0
  360. package/dist/src/planner/stats/table-cardinality.js.map +1 -0
  361. package/dist/src/planner/util/column-origins.d.ts +79 -0
  362. package/dist/src/planner/util/column-origins.d.ts.map +1 -0
  363. package/dist/src/planner/util/column-origins.js +150 -0
  364. package/dist/src/planner/util/column-origins.js.map +1 -0
  365. package/dist/src/planner/util/fd-utils.d.ts +32 -8
  366. package/dist/src/planner/util/fd-utils.d.ts.map +1 -1
  367. package/dist/src/planner/util/fd-utils.js +46 -9
  368. package/dist/src/planner/util/fd-utils.js.map +1 -1
  369. package/dist/src/planner/util/ind-utils.d.ts +56 -17
  370. package/dist/src/planner/util/ind-utils.d.ts.map +1 -1
  371. package/dist/src/planner/util/ind-utils.js +82 -21
  372. package/dist/src/planner/util/ind-utils.js.map +1 -1
  373. package/dist/src/planner/util/key-utils.d.ts +20 -2
  374. package/dist/src/planner/util/key-utils.d.ts.map +1 -1
  375. package/dist/src/planner/util/key-utils.js +37 -3
  376. package/dist/src/planner/util/key-utils.js.map +1 -1
  377. package/dist/src/planner/util/row-estimates.d.ts +28 -0
  378. package/dist/src/planner/util/row-estimates.d.ts.map +1 -0
  379. package/dist/src/planner/util/row-estimates.js +40 -0
  380. package/dist/src/planner/util/row-estimates.js.map +1 -0
  381. package/dist/src/planner/util/row-population.d.ts +42 -0
  382. package/dist/src/planner/util/row-population.d.ts.map +1 -0
  383. package/dist/src/planner/util/row-population.js +71 -0
  384. package/dist/src/planner/util/row-population.js.map +1 -0
  385. package/dist/src/runtime/deferred-constraint-queue.d.ts +40 -0
  386. package/dist/src/runtime/deferred-constraint-queue.d.ts.map +1 -1
  387. package/dist/src/runtime/deferred-constraint-queue.js +90 -9
  388. package/dist/src/runtime/deferred-constraint-queue.js.map +1 -1
  389. package/dist/src/runtime/emit/add-constraint.d.ts.map +1 -1
  390. package/dist/src/runtime/emit/add-constraint.js +39 -1
  391. package/dist/src/runtime/emit/add-constraint.js.map +1 -1
  392. package/dist/src/runtime/emit/aggregate.d.ts.map +1 -1
  393. package/dist/src/runtime/emit/aggregate.js +4 -4
  394. package/dist/src/runtime/emit/aggregate.js.map +1 -1
  395. package/dist/src/runtime/emit/alter-schema-event.d.ts +42 -0
  396. package/dist/src/runtime/emit/alter-schema-event.d.ts.map +1 -0
  397. package/dist/src/runtime/emit/alter-schema-event.js +28 -0
  398. package/dist/src/runtime/emit/alter-schema-event.js.map +1 -0
  399. package/dist/src/runtime/emit/alter-table.d.ts.map +1 -1
  400. package/dist/src/runtime/emit/alter-table.js +386 -154
  401. package/dist/src/runtime/emit/alter-table.js.map +1 -1
  402. package/dist/src/runtime/emit/analyze.d.ts.map +1 -1
  403. package/dist/src/runtime/emit/analyze.js +35 -3
  404. package/dist/src/runtime/emit/analyze.js.map +1 -1
  405. package/dist/src/runtime/emit/asof-scan.d.ts.map +1 -1
  406. package/dist/src/runtime/emit/asof-scan.js +8 -3
  407. package/dist/src/runtime/emit/asof-scan.js.map +1 -1
  408. package/dist/src/runtime/emit/between.d.ts.map +1 -1
  409. package/dist/src/runtime/emit/between.js +4 -38
  410. package/dist/src/runtime/emit/between.js.map +1 -1
  411. package/dist/src/runtime/emit/binary.d.ts.map +1 -1
  412. package/dist/src/runtime/emit/binary.js +2 -23
  413. package/dist/src/runtime/emit/binary.js.map +1 -1
  414. package/dist/src/runtime/emit/bloom-join.d.ts.map +1 -1
  415. package/dist/src/runtime/emit/bloom-join.js +6 -35
  416. package/dist/src/runtime/emit/bloom-join.js.map +1 -1
  417. package/dist/src/runtime/emit/case.d.ts.map +1 -1
  418. package/dist/src/runtime/emit/case.js +40 -6
  419. package/dist/src/runtime/emit/case.js.map +1 -1
  420. package/dist/src/runtime/emit/cast.d.ts.map +1 -1
  421. package/dist/src/runtime/emit/cast.js +4 -19
  422. package/dist/src/runtime/emit/cast.js.map +1 -1
  423. package/dist/src/runtime/emit/constraint-check.d.ts.map +1 -1
  424. package/dist/src/runtime/emit/constraint-check.js +32 -8
  425. package/dist/src/runtime/emit/constraint-check.js.map +1 -1
  426. package/dist/src/runtime/emit/dml-executor.d.ts.map +1 -1
  427. package/dist/src/runtime/emit/dml-executor.js +90 -50
  428. package/dist/src/runtime/emit/dml-executor.js.map +1 -1
  429. package/dist/src/runtime/emit/drop-index.d.ts.map +1 -1
  430. package/dist/src/runtime/emit/drop-index.js +4 -3
  431. package/dist/src/runtime/emit/drop-index.js.map +1 -1
  432. package/dist/src/runtime/emit/filter.d.ts +18 -0
  433. package/dist/src/runtime/emit/filter.d.ts.map +1 -1
  434. package/dist/src/runtime/emit/filter.js +52 -10
  435. package/dist/src/runtime/emit/filter.js.map +1 -1
  436. package/dist/src/runtime/emit/hash-aggregate.d.ts.map +1 -1
  437. package/dist/src/runtime/emit/hash-aggregate.js +2 -2
  438. package/dist/src/runtime/emit/hash-aggregate.js.map +1 -1
  439. package/dist/src/runtime/emit/join-key-extractor.d.ts +46 -0
  440. package/dist/src/runtime/emit/join-key-extractor.d.ts.map +1 -0
  441. package/dist/src/runtime/emit/join-key-extractor.js +60 -0
  442. package/dist/src/runtime/emit/join-key-extractor.js.map +1 -0
  443. package/dist/src/runtime/emit/join.d.ts.map +1 -1
  444. package/dist/src/runtime/emit/join.js +8 -46
  445. package/dist/src/runtime/emit/join.js.map +1 -1
  446. package/dist/src/runtime/emit/key-set-semi-join.d.ts +29 -0
  447. package/dist/src/runtime/emit/key-set-semi-join.d.ts.map +1 -0
  448. package/dist/src/runtime/emit/key-set-semi-join.js +149 -0
  449. package/dist/src/runtime/emit/key-set-semi-join.js.map +1 -0
  450. package/dist/src/runtime/emit/merge-join.d.ts.map +1 -1
  451. package/dist/src/runtime/emit/merge-join.js +15 -8
  452. package/dist/src/runtime/emit/merge-join.js.map +1 -1
  453. package/dist/src/runtime/emit/operand-comparator.d.ts +70 -0
  454. package/dist/src/runtime/emit/operand-comparator.d.ts.map +1 -0
  455. package/dist/src/runtime/emit/operand-comparator.js +93 -0
  456. package/dist/src/runtime/emit/operand-comparator.js.map +1 -0
  457. package/dist/src/runtime/emit/scan.d.ts.map +1 -1
  458. package/dist/src/runtime/emit/scan.js +11 -2
  459. package/dist/src/runtime/emit/scan.js.map +1 -1
  460. package/dist/src/runtime/emit/schema-declarative.d.ts.map +1 -1
  461. package/dist/src/runtime/emit/schema-declarative.js +30 -0
  462. package/dist/src/runtime/emit/schema-declarative.js.map +1 -1
  463. package/dist/src/runtime/emit/subquery.d.ts.map +1 -1
  464. package/dist/src/runtime/emit/subquery.js +153 -52
  465. package/dist/src/runtime/emit/subquery.js.map +1 -1
  466. package/dist/src/runtime/emit/window.js +36 -23
  467. package/dist/src/runtime/emit/window.js.map +1 -1
  468. package/dist/src/runtime/parallel-driver.d.ts +5 -2
  469. package/dist/src/runtime/parallel-driver.d.ts.map +1 -1
  470. package/dist/src/runtime/parallel-driver.js +6 -2
  471. package/dist/src/runtime/parallel-driver.js.map +1 -1
  472. package/dist/src/runtime/register.d.ts.map +1 -1
  473. package/dist/src/runtime/register.js +2 -0
  474. package/dist/src/runtime/register.js.map +1 -1
  475. package/dist/src/runtime/types.d.ts +7 -0
  476. package/dist/src/runtime/types.d.ts.map +1 -1
  477. package/dist/src/runtime/types.js.map +1 -1
  478. package/dist/src/schema/catalog-persistability.d.ts +19 -16
  479. package/dist/src/schema/catalog-persistability.d.ts.map +1 -1
  480. package/dist/src/schema/catalog-persistability.js +76 -20
  481. package/dist/src/schema/catalog-persistability.js.map +1 -1
  482. package/dist/src/schema/catalog.d.ts +67 -2
  483. package/dist/src/schema/catalog.d.ts.map +1 -1
  484. package/dist/src/schema/catalog.js +194 -3
  485. package/dist/src/schema/catalog.js.map +1 -1
  486. package/dist/src/schema/column.d.ts +26 -3
  487. package/dist/src/schema/column.d.ts.map +1 -1
  488. package/dist/src/schema/column.js.map +1 -1
  489. package/dist/src/schema/ddl-generator.d.ts.map +1 -1
  490. package/dist/src/schema/ddl-generator.js +19 -6
  491. package/dist/src/schema/ddl-generator.js.map +1 -1
  492. package/dist/src/schema/function.d.ts +40 -0
  493. package/dist/src/schema/function.d.ts.map +1 -1
  494. package/dist/src/schema/function.js +10 -2
  495. package/dist/src/schema/function.js.map +1 -1
  496. package/dist/src/schema/manager.d.ts +84 -7
  497. package/dist/src/schema/manager.d.ts.map +1 -1
  498. package/dist/src/schema/manager.js +153 -53
  499. package/dist/src/schema/manager.js.map +1 -1
  500. package/dist/src/schema/schema-differ.d.ts.map +1 -1
  501. package/dist/src/schema/schema-differ.js +104 -28
  502. package/dist/src/schema/schema-differ.js.map +1 -1
  503. package/dist/src/schema/table.d.ts +149 -1
  504. package/dist/src/schema/table.d.ts.map +1 -1
  505. package/dist/src/schema/table.js +248 -1
  506. package/dist/src/schema/table.js.map +1 -1
  507. package/dist/src/schema/unique-enforcement.d.ts +5 -3
  508. package/dist/src/schema/unique-enforcement.d.ts.map +1 -1
  509. package/dist/src/schema/unique-enforcement.js +5 -3
  510. package/dist/src/schema/unique-enforcement.js.map +1 -1
  511. package/dist/src/types/builtin-types.d.ts +16 -0
  512. package/dist/src/types/builtin-types.d.ts.map +1 -1
  513. package/dist/src/types/builtin-types.js +76 -12
  514. package/dist/src/types/builtin-types.js.map +1 -1
  515. package/dist/src/types/cast-semantics.d.ts +42 -0
  516. package/dist/src/types/cast-semantics.d.ts.map +1 -1
  517. package/dist/src/types/cast-semantics.js +64 -0
  518. package/dist/src/types/cast-semantics.js.map +1 -1
  519. package/dist/src/types/comparison-coercion.d.ts +101 -0
  520. package/dist/src/types/comparison-coercion.d.ts.map +1 -0
  521. package/dist/src/types/comparison-coercion.js +162 -0
  522. package/dist/src/types/comparison-coercion.js.map +1 -0
  523. package/dist/src/types/index.d.ts +2 -2
  524. package/dist/src/types/index.d.ts.map +1 -1
  525. package/dist/src/types/index.js +2 -2
  526. package/dist/src/types/index.js.map +1 -1
  527. package/dist/src/types/logical-type.d.ts +7 -0
  528. package/dist/src/types/logical-type.d.ts.map +1 -1
  529. package/dist/src/types/logical-type.js.map +1 -1
  530. package/dist/src/types/validation.d.ts +56 -0
  531. package/dist/src/types/validation.d.ts.map +1 -1
  532. package/dist/src/types/validation.js +68 -0
  533. package/dist/src/types/validation.js.map +1 -1
  534. package/dist/src/util/coercion.d.ts +8 -0
  535. package/dist/src/util/coercion.d.ts.map +1 -1
  536. package/dist/src/util/coercion.js +8 -0
  537. package/dist/src/util/coercion.js.map +1 -1
  538. package/dist/src/util/comparison.d.ts +41 -3
  539. package/dist/src/util/comparison.d.ts.map +1 -1
  540. package/dist/src/util/comparison.js +52 -5
  541. package/dist/src/util/comparison.js.map +1 -1
  542. package/dist/src/util/key-serializer.d.ts +46 -0
  543. package/dist/src/util/key-serializer.d.ts.map +1 -1
  544. package/dist/src/util/key-serializer.js +47 -0
  545. package/dist/src/util/key-serializer.js.map +1 -1
  546. package/dist/src/util/value-set.d.ts +21 -0
  547. package/dist/src/util/value-set.d.ts.map +1 -0
  548. package/dist/src/util/value-set.js +22 -0
  549. package/dist/src/util/value-set.js.map +1 -0
  550. package/dist/src/vtab/best-access-plan.d.ts +87 -0
  551. package/dist/src/vtab/best-access-plan.d.ts.map +1 -1
  552. package/dist/src/vtab/best-access-plan.js +87 -0
  553. package/dist/src/vtab/best-access-plan.js.map +1 -1
  554. package/dist/src/vtab/capabilities.d.ts +1 -1
  555. package/dist/src/vtab/events.d.ts +5 -1
  556. package/dist/src/vtab/events.d.ts.map +1 -1
  557. package/dist/src/vtab/events.js.map +1 -1
  558. package/dist/src/vtab/memory/layer/alter-column.d.ts +147 -0
  559. package/dist/src/vtab/memory/layer/alter-column.d.ts.map +1 -0
  560. package/dist/src/vtab/memory/layer/alter-column.js +214 -0
  561. package/dist/src/vtab/memory/layer/alter-column.js.map +1 -0
  562. package/dist/src/vtab/memory/layer/base.d.ts +6 -4
  563. package/dist/src/vtab/memory/layer/base.d.ts.map +1 -1
  564. package/dist/src/vtab/memory/layer/base.js +10 -7
  565. package/dist/src/vtab/memory/layer/base.js.map +1 -1
  566. package/dist/src/vtab/memory/layer/interface.d.ts +2 -2
  567. package/dist/src/vtab/memory/layer/interface.d.ts.map +1 -1
  568. package/dist/src/vtab/memory/layer/manager.d.ts +232 -39
  569. package/dist/src/vtab/memory/layer/manager.d.ts.map +1 -1
  570. package/dist/src/vtab/memory/layer/manager.js +657 -519
  571. package/dist/src/vtab/memory/layer/manager.js.map +1 -1
  572. package/dist/src/vtab/memory/layer/scan-layer.d.ts.map +1 -1
  573. package/dist/src/vtab/memory/layer/scan-layer.js +32 -5
  574. package/dist/src/vtab/memory/layer/scan-layer.js.map +1 -1
  575. package/dist/src/vtab/memory/layer/transaction.d.ts +111 -16
  576. package/dist/src/vtab/memory/layer/transaction.d.ts.map +1 -1
  577. package/dist/src/vtab/memory/layer/transaction.js +154 -51
  578. package/dist/src/vtab/memory/layer/transaction.js.map +1 -1
  579. package/dist/src/vtab/memory/module.d.ts +14 -2
  580. package/dist/src/vtab/memory/module.d.ts.map +1 -1
  581. package/dist/src/vtab/memory/module.js +53 -40
  582. package/dist/src/vtab/memory/module.js.map +1 -1
  583. package/dist/src/vtab/memory/table.d.ts +1 -1
  584. package/dist/src/vtab/memory/table.d.ts.map +1 -1
  585. package/dist/src/vtab/memory/table.js +15 -3
  586. package/dist/src/vtab/memory/table.js.map +1 -1
  587. package/dist/src/vtab/module.d.ts +51 -21
  588. package/dist/src/vtab/module.d.ts.map +1 -1
  589. package/dist/src/vtab/table.d.ts +10 -2
  590. package/dist/src/vtab/table.d.ts.map +1 -1
  591. package/dist/src/vtab/table.js +1 -1
  592. package/dist/src/vtab/table.js.map +1 -1
  593. package/package.json +3 -3
@@ -43,6 +43,57 @@ export function resolveNamedConstraintClass(tableSchema, constraintName) {
43
43
  }
44
44
  return inCheck ? 'check' : inUnique ? 'unique' : 'foreignKey';
45
45
  }
46
+ /**
47
+ * True when `name` addresses any named CHECK / UNIQUE / FOREIGN KEY constraint on
48
+ * the table. The existence-only sibling of {@link resolveNamedConstraintClass}
49
+ * (which resolves the class and throws on absent/ambiguous), matching names the
50
+ * same case-insensitive way.
51
+ *
52
+ * Lives here — not beside either caller — because two copies of a name-matching
53
+ * rule drift. Used by the ALTER write paths that must refuse a duplicate constraint
54
+ * name: `ADD CONSTRAINT`, an inline named constraint on `ADD COLUMN`, and
55
+ * `RENAME CONSTRAINT`'s collision check.
56
+ *
57
+ * Engine-synthesized names (`_uc_*` / `_check_*` / `_fk_*`) are not user identity,
58
+ * but they are stored in the same `name` fields, so a caller comparing a
59
+ * user-supplied name against them is comparing against a name the user cannot have
60
+ * typed — harmless, and not special-cased here.
61
+ */
62
+ export function namedConstraintExists(tableSchema, name) {
63
+ const lower = name.toLowerCase();
64
+ return (tableSchema.checkConstraints ?? []).some(c => c.name?.toLowerCase() === lower)
65
+ || (tableSchema.uniqueConstraints ?? []).some(c => c.name?.toLowerCase() === lower)
66
+ || (tableSchema.foreignKeys ?? []).some(c => c.name?.toLowerCase() === lower);
67
+ }
68
+ /**
69
+ * Refuses a *user-written* constraint name that is already taken — the within-table
70
+ * name-uniqueness rule shared by every ALTER path that adds a named constraint
71
+ * (`ADD CONSTRAINT`, and an inline named constraint on `ADD COLUMN`). Without it a
72
+ * table can hold two constraints under one name, after which DROP / RENAME CONSTRAINT
73
+ * hits every match (same class) or fails permanently as ambiguous (across classes).
74
+ *
75
+ * `alsoTaken` holds lowercased names claimed earlier in the SAME statement, none of
76
+ * which is on `tableSchema` yet — one `ADD COLUMN` can declare several inline
77
+ * constraints that collide with each other.
78
+ *
79
+ * Callers place this ahead of any module dispatch (a store-backed `alterTable`
80
+ * persists, so a later throw would leave the duplicate on disk to rehydrate on
81
+ * reopen) and ahead of `assertUniqueConstraintIndexNameFree`: the memory backend
82
+ * materializes an existing UNIQUE's hidden backing index into the table's index list
83
+ * and the store backend does not, so letting the index guard rule on a duplicate name
84
+ * first makes the two backends disagree — and names an index the user never created.
85
+ *
86
+ * Engine-synthesized names (`_uc_*` / `_check_*` / `_fk_*`) are not user identity and
87
+ * are never passed here; a name a user typed in that shape forfeits the guard, the
88
+ * same corner `isAutoConstraintName` already documents for declarative lifecycle.
89
+ *
90
+ * @throws QuereusError(CONSTRAINT) when the name is taken.
91
+ */
92
+ export function assertConstraintNameFree(tableSchema, name, alsoTaken) {
93
+ if (!alsoTaken?.has(name.toLowerCase()) && !namedConstraintExists(tableSchema, name))
94
+ return;
95
+ throw new QuereusError(`Cannot add constraint '${name}' to table '${tableSchema.name}': a constraint with that name already exists`, StatusCode.CONSTRAINT);
96
+ }
46
97
  /**
47
98
  * Builds a map from column names to their indices in the columns array
48
99
  *
@@ -153,7 +204,7 @@ export function validateCollationForType(collation, logicalType, columnName, isC
153
204
  * **Cross-backend divergence (intentional).** This function resolves the
154
205
  * *engine/memory* default only. The store module deliberately overrides an
155
206
  * implicit-default text PK column to its table-level key collation K (NOCASE by
156
- * default) via `reconcilePkCollations` (`quereus-store/store-module.ts`). So the
207
+ * default) via `reconcilePkCollations` (`quereus-store/store-module-schema-rewrite.ts`). So the
157
208
  * same DDL `create table t (x text primary key)` yields BINARY under the memory
158
209
  * module and NOCASE under the store. This is a deliberate backward-compatibility
159
210
  * choice, not a bug — see `docs/schema.md` §"Per-column PK key collation".
@@ -297,6 +348,145 @@ export function appendIndexToTableSchema(tableSchema, indexSchema) {
297
348
  }
298
349
  return result;
299
350
  }
351
+ /**
352
+ * The renumbered position-bearing fields of `schema` after column `colIndex` is dropped, to be
353
+ * spread over the schema alongside the caller's own new `columns` array — the DROP COLUMN mirror
354
+ * of `shiftSchemaIndicesForInsert` (`vtab/memory/layer/manager.ts`, the ADD-COLUMN-at-a-position
355
+ * equivalent). Shared by the memory module's `MemoryTableManager.dropColumn` and the store
356
+ * module's `StoreModule.alterDropColumn`, whose position-renumbering logic had drifted apart
357
+ * once already (the foreign-key pass was missing from both).
358
+ *
359
+ * A PRIMARY KEY member, UNIQUE constraint, or foreign key that names the dropped column is
360
+ * removed outright rather than narrowed — one missing a column is a different, stronger
361
+ * constraint, not a subset of the same one. A UNIQUE index is removed outright for the same
362
+ * reason: narrowing `unique (b, c)` to `unique (c)` invents a constraint the table never
363
+ * declared, and the matching `derivedFromIndex` UNIQUE constraint (the thing that actually
364
+ * enforces it, see {@link appendIndexToTableSchema}) is removed by the rule above — so a
365
+ * narrowed survivor would advertise uniqueness nothing checks — which the planner's
366
+ * at-most-one-partner-row proof (`planner/mutation/multi-source.ts`) reads, `index_info` reports,
367
+ * and `generateTableDDL` re-persists as a real `CREATE UNIQUE INDEX`. A plain index is narrowed
368
+ * (it constrains nothing), and one that loses every column is dropped. Every survivor has its
369
+ * column indices shifted down over the removed slot.
370
+ *
371
+ * `removedUniqueConstraints` (pre-shift, original column indices) is returned alongside so a
372
+ * caller that materializes a physical structure per UNIQUE constraint — the memory module's
373
+ * auto-built covering index, the store module's hidden `_uc_*` store — can tear down exactly the
374
+ * ones this drop removes. That teardown, and the naming convention it keys off
375
+ * (`uc.name ?? '_uc_<cols>'`), stays with each caller: neither structure is a `TableSchema` field,
376
+ * and the two backends materialize them differently (index array entry vs. separate physical
377
+ * store), so this function has no need to know it.
378
+ *
379
+ * `columnIndexMap` is rebuilt from the new column list by the caller, not returned here, matching
380
+ * every other schema-mutation site. `checkConstraints` and each backend's own name/AST-keyed
381
+ * bookkeeping need no shift. `generatedColumnDependencies` / `generatedColumnTopoOrder` are
382
+ * likewise left to the caller: the engine recomputes them from column names right after DROP
383
+ * COLUMN returns (`withGeneratedColumnGraph` in `runDropColumn`), so only a caller driving a
384
+ * module's API directly ever observes a stale map — mirroring the same carve-out on the insert
385
+ * side. `referencedColumns` on a foreign key is not touched, for the same reason as on the insert
386
+ * side: enforcement resolves the parent indices on demand from `referencedColumnNames` against
387
+ * the parent's CURRENT schema.
388
+ */
389
+ export function shiftSchemaIndicesForDrop(schema, colIndex) {
390
+ if (colIndex < 0 || colIndex >= schema.columns.length) {
391
+ // Reachable only from a caller that skipped its own name lookup. Out of range, every
392
+ // shift below is a silent no-op and the schema keeps a column the module has removed.
393
+ quereusError(`shiftSchemaIndicesForDrop: column index ${colIndex} out of range for table '${schema.name}' `
394
+ + `(${schema.columns.length} columns)`, StatusCode.INTERNAL);
395
+ }
396
+ const shift = (index) => index > colIndex ? index - 1 : index;
397
+ const columns = Object.freeze(schema.columns.filter((_, idx) => idx !== colIndex));
398
+ const primaryKeyDefinition = Object.freeze(schema.primaryKeyDefinition
399
+ .filter(def => def.index !== colIndex)
400
+ .map(def => ({ ...def, index: shift(def.index) })));
401
+ const oldUniqueConstraints = schema.uniqueConstraints ?? [];
402
+ const removedUniqueConstraints = Object.freeze(oldUniqueConstraints.filter(uc => uc.columns.includes(colIndex)));
403
+ const remainingUniqueConstraints = oldUniqueConstraints
404
+ .filter(uc => !uc.columns.includes(colIndex))
405
+ .map(uc => ({ ...uc, columns: Object.freeze(uc.columns.map(shift)) }));
406
+ const indexes = (schema.indexes ?? [])
407
+ .filter(idx => !(idx.unique && idx.columns.some(ic => ic.index === colIndex)))
408
+ .map(idx => ({
409
+ ...idx,
410
+ columns: idx.columns
411
+ .filter(ic => ic.index !== colIndex)
412
+ .map(ic => ({ ...ic, index: shift(ic.index) })),
413
+ }))
414
+ .filter(idx => idx.columns.length > 0);
415
+ const remainingForeignKeys = (schema.foreignKeys ?? [])
416
+ .filter(fk => !fk.columns.includes(colIndex))
417
+ .map(fk => ({ ...fk, columns: Object.freeze(fk.columns.map(shift)) }));
418
+ return {
419
+ columns,
420
+ primaryKeyDefinition,
421
+ indexes: Object.freeze(indexes),
422
+ uniqueConstraints: remainingUniqueConstraints.length > 0 ? Object.freeze(remainingUniqueConstraints) : undefined,
423
+ foreignKeys: remainingForeignKeys.length > 0 ? Object.freeze(remainingForeignKeys) : undefined,
424
+ removedUniqueConstraints,
425
+ };
426
+ }
427
+ /**
428
+ * `schema` re-keyed to `newPkColumns` — a frozen copy whose `primaryKeyDefinition` AND
429
+ * per-column `primaryKey` / `pkOrder` flags both describe the NEW key. The
430
+ * `ALTER TABLE … ALTER PRIMARY KEY` sibling of {@link shiftSchemaIndicesForDrop} (same
431
+ * role: one schema mutation shared by both built-in modules — the memory module's
432
+ * `MemoryTableManager.buildRekeyedPrimaryKeySchema` and the store module's
433
+ * `StoreModuleAlter.alterPrimaryKeyChange`).
434
+ *
435
+ * A table records its key twice: `primaryKeyDefinition` (authoritative — what
436
+ * `table_info`, key extraction and the DDL generator read) and the per-column flags (a
437
+ * CREATE-time mirror feeding the planner's uniqueness hints and the `ColumnDef` AST
438
+ * that `RENAME COLUMN` reconstructs). Swapping only the definition leaves the flags
439
+ * naming the retired key, so this helper rebuilds both together and is the only way
440
+ * a module should re-key.
441
+ *
442
+ * Each member's `collation` is carried from its column (as `create table`'s PK builder
443
+ * records it) — dropping it would silently re-key a NOCASE column's structures under
444
+ * BINARY. `pkDirection` is deliberately NOT written: only an *inline*
445
+ * `a integer primary key desc` populates it at CREATE time (a table-level
446
+ * `primary key (a desc)` leaves it `undefined`), so direction is not a field this mirror
447
+ * is expected to carry. It lives in `primaryKeyDefinition.desc`, which is what the DDL
448
+ * generator reads. See the NOTE on {@link ColumnSchema.pkDirection}.
449
+ *
450
+ * The incoming `columns` are never mutated — a fresh array of fresh `ColumnSchema`
451
+ * objects is built. The pre-ALTER schema is handed onward as `oldObject` on the
452
+ * `table_modified` notification and kept by the memory manager as its rollback
453
+ * snapshot, and `ColumnSchema` objects are not frozen, so in-place mutation would
454
+ * silently corrupt both with nothing to catch it.
455
+ *
456
+ * User-level validation stays with the callers: the memory manager pre-checks by index and
457
+ * the engine emitter (`runAlterPrimaryKey`) validates by column name before dispatch, so
458
+ * NOT NULL membership is not re-checked here. What IS asserted — as {@link
459
+ * shiftSchemaIndicesForDrop} asserts its column index — are the two inputs that would
460
+ * otherwise yield a SELF-INCONSISTENT schema rather than a rejected statement: an
461
+ * out-of-range index (a definition member addressing no column) and a repeated index (a
462
+ * definition with more members than the mirror can order). Both mean a caller skipped its
463
+ * own resolution, hence `INTERNAL`.
464
+ */
465
+ export function rekeySchemaPrimaryKey(schema, newPkColumns) {
466
+ // 1-based position in the new key, 0 for a non-member.
467
+ const pkOrderByIndex = new Map();
468
+ for (const [position, pk] of newPkColumns.entries()) {
469
+ if (pk.index < 0 || pk.index >= schema.columns.length) {
470
+ quereusError(`rekeySchemaPrimaryKey: primary key column index ${pk.index} out of range for table `
471
+ + `'${schema.name}' (${schema.columns.length} columns)`, StatusCode.INTERNAL);
472
+ }
473
+ if (pkOrderByIndex.has(pk.index)) {
474
+ quereusError(`rekeySchemaPrimaryKey: column '${schema.columns[pk.index].name}' repeated in the new `
475
+ + `primary key for table '${schema.name}'`, StatusCode.INTERNAL);
476
+ }
477
+ pkOrderByIndex.set(pk.index, position + 1);
478
+ }
479
+ const primaryKeyDefinition = Object.freeze(newPkColumns.map(pk => ({
480
+ index: pk.index,
481
+ desc: pk.desc ?? false,
482
+ collation: schema.columns[pk.index].collation || 'BINARY',
483
+ })));
484
+ const columns = Object.freeze(schema.columns.map((col, index) => {
485
+ const pkOrder = pkOrderByIndex.get(index) ?? 0;
486
+ return { ...col, primaryKey: pkOrder > 0, pkOrder };
487
+ }));
488
+ return Object.freeze({ ...schema, columns, primaryKeyDefinition });
489
+ }
300
490
  /**
301
491
  * Creates a basic TableSchema with minimal configuration
302
492
  *
@@ -727,6 +917,63 @@ export function extractGeneratedColumnDependencies(columns, tableName) {
727
917
  });
728
918
  return result;
729
919
  }
920
+ /**
921
+ * Pre-flight for `ALTER TABLE ADD COLUMN … GENERATED ALWAYS AS (<expr>)`, run at
922
+ * plan-build BEFORE the expression is compiled against a scope holding only the
923
+ * table's existing columns. Without it, a reference the table cannot satisfy surfaces
924
+ * as the generic `Column not found: <name>` from expression resolution — and for a
925
+ * self-reference (`add column g … generated always as (g + 1)`) that names the very
926
+ * column the statement is declaring, which reads as nonsense.
927
+ *
928
+ * Raises the same two errors the equivalent `CREATE TABLE` raises — from
929
+ * {@link extractGeneratedColumnDependencies} and {@link topoSortGeneratedColumns},
930
+ * which still run in the emitter afterwards — so the two authoring surfaces report a
931
+ * bad generated expression identically. It only moves those rejections EARLIER; it
932
+ * cannot reject anything they would accept.
933
+ *
934
+ * A self-reference is the only cycle ADD COLUMN can create: an existing column's
935
+ * expression cannot name a column that does not exist yet.
936
+ */
937
+ export function validateAddColumnGeneratedRefs(expr, newColumnName, existingColumns, tableName) {
938
+ const columnIndexMap = buildColumnIndexMap(existingColumns);
939
+ const tableNameLower = tableName.toLowerCase();
940
+ const newColLower = newColumnName.toLowerCase();
941
+ // `add column v … generated always as (v * 2)` where `v` ALREADY exists is a duplicate
942
+ // column, not a cycle; the reference resolves to the existing sibling. Leave the
943
+ // rejection to `runAddColumn`'s duplicate check so the message names the real problem.
944
+ const newColumnIsDuplicate = columnIndexMap.has(newColLower);
945
+ traverseAst(expr, {
946
+ enterNode: (node) => {
947
+ // Same ref shapes and same skip rules as extractGeneratedColumnDependencies:
948
+ // a ref qualified to another table belongs to an outer scope, and a bare
949
+ // `identifier` may legitimately resolve to something that is not a column of
950
+ // this table — so only the unambiguous `column` shape yields "not found".
951
+ let name;
952
+ if (node.type === 'column') {
953
+ const ref = node;
954
+ if (ref.table && ref.table.toLowerCase() !== tableNameLower)
955
+ return;
956
+ name = ref.name;
957
+ }
958
+ else if (node.type === 'identifier') {
959
+ const ref = node;
960
+ if (ref.schema)
961
+ return;
962
+ name = ref.name;
963
+ }
964
+ else {
965
+ return;
966
+ }
967
+ const lower = name.toLowerCase();
968
+ if (lower === newColLower && !newColumnIsDuplicate) {
969
+ throw new QuereusError(`Cyclic dependency in generated columns: '${newColumnName}'`, StatusCode.ERROR);
970
+ }
971
+ if (node.type === 'column' && !columnIndexMap.has(lower)) {
972
+ throw new QuereusError(`Column '${name}' referenced by generated column '${newColumnName}' not found in table '${tableName}'`, StatusCode.ERROR);
973
+ }
974
+ },
975
+ });
976
+ }
730
977
  /**
731
978
  * Topologically sorts generated columns so a generated column's dependencies
732
979
  * come before it. Throws on any cycle (including self-edges).
@@ -1 +1 @@
1
- {"version":3,"file":"table.js","sourceRoot":"","sources":["../../../src/schema/table.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAI7D,OAAO,EAAS,UAAU,EAAiB,MAAM,oBAAoB,CAAC;AAEtE,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAGnD,MAAM,GAAG,GAAG,YAAY,CAAC,cAAc,CAAC,CAAC;AACzC,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AA0FnC;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAkB;IACnD,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;QACvB,YAAY,CACX,UAAU,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,IAAI,4EAA4E,EACpH,UAAU,CAAC,QAAQ,CACnB,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC,UAAU,CAAC;AACzB,CAAC;AAQD;;;;;;;;GAQG;AACH,MAAM,UAAU,2BAA2B,CAAC,WAAwB,EAAE,cAAsB;IAC3F,MAAM,KAAK,GAAG,cAAc,CAAC,WAAW,EAAE,CAAC;IAC3C,MAAM,OAAO,GAAG,CAAC,WAAW,CAAC,gBAAgB,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,KAAK,CAAC,CAAC;IAChG,MAAM,QAAQ,GAAG,CAAC,WAAW,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,KAAK,CAAC,CAAC;IAClG,MAAM,IAAI,GAAG,CAAC,WAAW,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,KAAK,CAAC,CAAC;IACxF,MAAM,UAAU,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;IACpE,IAAI,UAAU,KAAK,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,YAAY,CAAC,qBAAqB,cAAc,yBAAyB,WAAW,CAAC,IAAI,GAAG,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;IAC9H,CAAC;IACD,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;QACpB,MAAM,IAAI,YAAY,CACrB,oBAAoB,cAAc,4BAA4B,WAAW,CAAC,IAAI,8DAA8D,EAC5I,UAAU,CAAC,KAAK,CAChB,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC;AAC/D,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAAoC;IACvE,MAAM,GAAG,GAAG,IAAI,GAAG,EAAkB,CAAC;IACtC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;QAC9B,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,KAAK,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IACH,OAAO,GAAG,CAAC;AACZ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,KAAgD;IACpF,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AACnD,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,MAAM,UAAU,wBAAwB,CACvC,SAAiB,EACjB,WAAwB,EACxB,UAAkB,EAClB,qBAAiD;IAEjD,MAAM,UAAU,GAAG,sBAAsB,CAAC,SAAS,CAAC,CAAC;IACrD,IAAI,UAAU,KAAK,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAE7C,MAAM,IAAI,GAAG,WAAW,CAAC,mBAAmB,CAAC;IAE7C,iEAAiE;IACjE,IAAI,qBAAqB,KAAK,SAAS,EAAE,CAAC;QACzC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YACxC,MAAM,IAAI,YAAY,CACrB,sBAAsB,SAAS,eAAe,WAAW,CAAC,IAAI,gBAAgB,UAAU,uBAAuB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EACjI,UAAU,CAAC,KAAK,CAChB,CAAC;QACH,CAAC;QACD,OAAO,UAAU,CAAC;IACnB,CAAC;IAED,yBAAyB;IACzB,IAAI,IAAI,EAAE,QAAQ,CAAC,UAAU,CAAC;QAAE,OAAO,UAAU,CAAC;IAElD,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,MAAM,IAAI,YAAY,CACrB,sBAAsB,SAAS,eAAe,WAAW,CAAC,IAAI,gBAAgB,UAAU,kDAAkD,EAC1I,UAAU,CAAC,KAAK,CAChB,CAAC;IACH,CAAC;IAED,IAAI,qBAAqB,CAAC,UAAU,CAAC;QAAE,OAAO,UAAU,CAAC;IAEzD,6EAA6E;IAC7E,yEAAyE;IACzE,mBAAmB;IACnB,MAAM,MAAM,GAAG,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;QACrC,CAAC,CAAC,qBAAqB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,8BAA8B;QACpE,CAAC,CAAC,8BAA8B,CAAC;IAClC,MAAM,IAAI,YAAY,CACrB,sBAAsB,SAAS,eAAe,WAAW,CAAC,IAAI,gBAAgB,UAAU,KAAK,MAAM,EAAE,EACrG,UAAU,CAAC,KAAK,CAChB,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,UAAU,uBAAuB,CAAC,WAAwB,EAAE,gBAAwB;IACzF,MAAM,UAAU,GAAG,sBAAsB,CAAC,gBAAgB,CAAC,CAAC;IAC5D,IAAI,UAAU,KAAK,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAC7C,IAAI,WAAW,CAAC,mBAAmB,EAAE,QAAQ,CAAC,UAAU,CAAC;QAAE,OAAO,UAAU,CAAC;IAC7E,OAAO,QAAQ,CAAC;AACjB,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,iBAAiB,CAChC,GAAc,EACd,iBAA0B,IAAI,EAC9B,mBAA2B,QAAQ,EACnC,qBAAiD;IAEjD,iDAAiD;IACjD,MAAM,WAAW,GAAG,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAE5C,MAAM,MAAM,GAAiB;QAC5B,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,WAAW,EAAE,WAAW;QACxB,OAAO,EAAE,cAAc;QACvB,UAAU,EAAE,KAAK;QACjB,OAAO,EAAE,CAAC;QACV,YAAY,EAAE,IAAI;QAClB,SAAS,EAAE,uBAAuB,CAAC,WAAW,EAAE,gBAAgB,CAAC;QACjE,SAAS,EAAE,KAAK;QAChB,YAAY,EAAE,GAAG,CAAC,QAAQ;KAC1B,CAAC;IAEF,KAAK,MAAM,UAAU,IAAI,GAAG,CAAC,WAAW,IAAI,EAAE,EAAE,CAAC;QAChD,QAAQ,UAAU,CAAC,IAAI,EAAE,CAAC;YACzB,KAAK,YAAY;gBAChB,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC;gBACzB,MAAM,CAAC,WAAW,GAAG,UAAU,CAAC,SAAS,CAAC;gBAC1C,IAAI,UAAU,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;oBACzC,MAAM,CAAC,eAAe,GAAG,UAAU,CAAC,UAAU,CAAC;gBAChD,CAAC;gBACD,MAAM;YACP,KAAK,SAAS;gBACb,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;gBACtB,IAAI,UAAU,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;oBACzC,MAAM,CAAC,eAAe,GAAG,UAAU,CAAC,UAAU,CAAC;gBAChD,CAAC;gBACD,MAAM;YACP,KAAK,MAAM;gBACV,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC;gBACvB,IAAI,UAAU,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;oBACzC,MAAM,CAAC,eAAe,GAAG,UAAU,CAAC,UAAU,CAAC;gBAChD,CAAC;gBACD,MAAM;YACP,KAAK,QAAQ;gBACZ,MAAM;YACP,KAAK,SAAS;gBACb,MAAM,CAAC,YAAY,GAAG,UAAU,CAAC,IAAI,IAAI,IAAI,CAAC;gBAC9C,MAAM;YACP,KAAK,SAAS,CAAC,CAAC,CAAC;gBAChB,MAAM,CAAC,SAAS,GAAG,UAAU,CAAC,SAAS;oBACtC,CAAC,CAAC,wBAAwB,CAAC,UAAU,CAAC,SAAS,EAAE,WAAW,EAAE,GAAG,CAAC,IAAI,EAAE,qBAAqB,CAAC;oBAC9F,CAAC,CAAC,QAAQ,CAAC;gBACZ,sEAAsE;gBACtE,uEAAuE;gBACvE,MAAM,CAAC,iBAAiB,GAAG,IAAI,CAAC;gBAChC,MAAM;YACP,CAAC;YACD,KAAK,WAAW;gBACf,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC;gBACxB,IAAI,UAAU,CAAC,SAAS,EAAE,CAAC;oBAC1B,MAAM,CAAC,aAAa,GAAG,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC;oBACjD,MAAM,CAAC,eAAe,GAAG,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC;gBACtD,CAAC;gBACD,MAAM;QACR,CAAC;IACF,CAAC;IAED,IAAI,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,YAAY,KAAK,IAAI,EAAE,CAAC;QACtD,MAAM,IAAI,YAAY,CACrB,WAAW,GAAG,CAAC,IAAI,oDAAoD,EACvE,UAAU,CAAC,KAAK,CAChB,CAAC;IACH,CAAC;IAED,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QACvB,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;IACvB,CAAC;IAED,IAAI,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,OAAO,KAAK,CAAC,EAAE,CAAC;QAC/C,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC;IACpB,CAAC;IAED,2BAA2B;IAC3B,IAAI,GAAG,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClD,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;IAC9C,CAAC;IAED,OAAO,MAAM,CAAC;AACf,CAAC;AAcD;;;;;;GAMG;AACH,MAAM,UAAU,0BAA0B,CAAC,MAA8B,EAAE,iBAA0B,IAAI;IACxG,OAAO;QACN,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,WAAW,EAAE,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC;QACvC,OAAO,EAAE,MAAM,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc;KACvE,CAAC;AACH,CAAC;AAgCD;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,wBAAwB,CAAC,WAAwB,EAAE,WAAwB;IAC1F,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC;IACpF,MAAM,MAAM,GAAgB,EAAE,GAAG,WAAW,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC;IACxE,IAAI,WAAW,CAAC,MAAM,EAAE,CAAC;QACxB,MAAM,iBAAiB,GAA2B;YACjD,IAAI,EAAE,WAAW,CAAC,IAAI;YACtB,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YAC7D,SAAS,EAAE,WAAW,CAAC,SAAS;YAChC,gBAAgB,EAAE,WAAW,CAAC,IAAI;SAClC,CAAC;QACF,MAAM,CAAC,iBAAiB,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,iBAAiB,IAAI,EAAE,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC;IACzG,CAAC;IACD,OAAO,MAAM,CAAC;AACf,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAY,EAAE,OAAyC,EAAE,UAAqB,EAAE,iBAA0B,IAAI;IAC/I,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,iBAAiB,CAAC;QACxD,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,QAAQ,EAAE,CAAC,CAAC,IAAI;QAChB,WAAW,EAAE,EAAE;KACf,EAAE,cAAc,CAAC,CAAC,CAAC;IACpB,MAAM,cAAc,GAAG,mBAAmB,CAAC,aAAa,CAAC,CAAC;IAC1D,MAAM,KAAK,GAAG,UAAU;QACvB,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;YACzB,MAAM,GAAG,GAAG,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;YACrD,IAAI,GAAG,KAAK,SAAS;gBAAE,YAAY,CAAC,aAAa,MAAM,YAAY,CAAC,CAAC;YACrE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;QACpC,CAAC,CAAC;QACF,CAAC,CAAC,EAAE,CAAC;IAEN,MAAM,mBAAmB,GAAG,IAAI,iBAAiB,EAAE,CAAC;IAEpD,OAAO,MAAM,CAAC,MAAM,CAAC;QACpB,IAAI,EAAE,IAAI;QACV,UAAU,EAAE,MAAM;QAClB,OAAO,EAAE,aAAa;QACtB,cAAc,EAAE,cAAc;QAC9B,oBAAoB,EAAE,KAAK;QAC3B,gBAAgB,EAAE,EAA2B;QAC7C,OAAO,EAAE,EAAE;QACX,UAAU,EAAE,mBAAmB;QAC/B,WAAW,EAAE,IAAI;QACjB,QAAQ,EAAE,EAAE;QACZ,cAAc,EAAE,QAAQ;QACxB,MAAM,EAAE,KAAK;QACb,WAAW,EAAE,SAAS;QACtB,cAAc,EAAE,SAAS;QACzB,gBAAgB,EAAE,EAAE;KACpB,CAAC,CAAC;AACJ,CAAC;AAED,iCAAiC;AACjC,MAAM,CAAN,IAAkB,SAIjB;AAJD,WAAkB,SAAS;IAC1B,6CAAU,CAAA;IACV,6CAAU,CAAA;IACV,6CAAU,CAAA;AACX,CAAC,EAJiB,SAAS,KAAT,SAAS,QAI1B;AAED,MAAM,CAAC,MAAM,kBAAkB,GAAG,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;AAEtE;;;;;GAKG;AACH,MAAM,UAAU,SAAS,CAAC,IAAc;IACvC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChC,OAAO,kBAAkB,CAAC;IAC3B,CAAC;IACD,IAAI,IAAI,GAAc,CAAc,CAAC;IACrC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;QACjB,QAAQ,EAAE,EAAE,CAAC;YACZ,KAAK,QAAQ;gBAAE,IAAI,IAAI,SAAS,CAAC,MAAM,CAAC;gBAAC,MAAM;YAC/C,KAAK,QAAQ;gBAAE,IAAI,IAAI,SAAS,CAAC,MAAM,CAAC;gBAAC,MAAM;YAC/C,KAAK,QAAQ;gBAAE,IAAI,IAAI,SAAS,CAAC,MAAM,CAAC;gBAAC,MAAM;QAChD,CAAC;IACF,CAAC,CAAC,CAAC;IACH,OAAO,IAAI,CAAC;AACb,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,SAAS,CAAC,IAAe;IACxC,MAAM,GAAG,GAAY,EAAE,CAAC;IACxB,IAAI,IAAI,GAAG,SAAS,CAAC,MAAM;QAAE,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAChD,IAAI,IAAI,GAAG,SAAS,CAAC,MAAM;QAAE,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAChD,IAAI,IAAI,GAAG,SAAS,CAAC,MAAM;QAAE,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAChD,OAAO,GAAG,CAAC;AACZ,CAAC;AAoED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,2BAA2B,CAAC,MAAc,EAAE,KAAa;IACxE,OAAO,eAAe,MAAM,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;AACtE,CAAC;AAsCD;;;GAGG;AACH,MAAM,UAAU,wBAAwB,CACvC,EAA8B,EAC9B,YAAyB;IAEzB,MAAM,WAAW,GAAG,EAAE,CAAC,qBAAqB,CAAC;IAE7C,IAAI,WAAW,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3C,OAAO,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;YAC7B,MAAM,GAAG,GAAG,YAAY,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;YAChE,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;gBACvB,MAAM,IAAI,YAAY,CACrB,sBAAsB,IAAI,yBAAyB,YAAY,CAAC,IAAI,GAAG,EACvE,UAAU,CAAC,KAAK,CAChB,CAAC;YACH,CAAC;YACD,OAAO,GAAG,CAAC;QACZ,CAAC,CAAC,CAAC;IACJ,CAAC;IAED,iCAAiC;IACjC,OAAO,YAAY,CAAC,oBAAoB,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;AAC9D,CAAC;AA4DD;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,gBAAgB,CAC/B,OAAoC,EACpC,WAA2D;IAM3D,MAAM,QAAQ,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAC;IACjD,MAAM,YAAY,GAAG,0BAA0B,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IAEtE,IAAI,YAAY,IAAI,QAAQ,EAAE,CAAC;QAC9B,MAAM,IAAI,YAAY,CAAC,8DAA8D,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC;IAC/G,CAAC;IAED,MAAM,aAAa,GAClB,YAAY,EAAE,KAAK,IAAI,QAAQ,CAAC;IAEjC,IAAI,aAAa,EAAE,CAAC;QACnB,OAAO;YACN,KAAK,EAAE,aAAa;YACpB,eAAe,EAAE,YAAY,EAAE,eAAe;YAC9C,WAAW,EAAE,KAAK;SAClB,CAAC;IACH,CAAC;IAED,4GAA4G;IAC5G,yFAAyF;IACzF,8GAA8G;IAC9G,OAAO,CAAC,0EAA0E,CAAC,CAAC;IACpF,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,CACrC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QAC5B,KAAK;QACL,IAAI,EAAE,KAAK;QACX,SAAS,EAAE,GAAG,CAAC,SAAS,IAAI,QAAQ;KACpC,CAAC,CAAC,CACH,CAAC;IAEF,8EAA8E;IAC9E,6EAA6E;IAC7E,+EAA+E;IAC/E,8EAA8E;IAC9E,oEAAoE;IACpE,iDAAiD;IACjD,OAAO;QACN,KAAK,EAAE,gBAAgB;QACvB,eAAe,EAAE,SAAS;QAC1B,WAAW,EAAE,IAAI;KACjB,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,0BAA0B,CAAC,WAAwB;IAClE,MAAM,EAAE,GAAG,WAAW,CAAC,oBAAoB,CAAC;IAC5C,MAAM,CAAC,GAAG,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC;IACrC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAC7C,IAAI,WAAW,CAAC,yBAAyB,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IACtE,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC3D,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,wBAAwB,CAAC,MAAmB;IAC3D,IAAI,MAAM,CAAC,yBAAyB,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC,yBAAyB,CAAC;IAC5F,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,oBAAoB,EAAE,CAAC;QAC/C,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACtC,IAAI,GAAG,EAAE,eAAe,KAAK,SAAS;YAAE,OAAO,GAAG,CAAC,eAAe,CAAC;IACpE,CAAC;IACD,OAAO,SAAS,CAAC;AAClB,CAAC;AAcD;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,eAAe,CAAC,KAAkB,EAAE,OAA0B;IAC7E,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;IAC9B,MAAM,EAAE,GAAG,CAAC,IAAuB,EAAW,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3G,MAAM,EAAE,GAAG,KAAK,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IACxD,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;IAC3D,KAAK,MAAM,EAAE,IAAI,KAAK,CAAC,iBAAiB,IAAI,EAAE,EAAE,CAAC;QAChD,IAAI,EAAE,CAAC,SAAS,KAAK,SAAS;YAAE,SAAS,CAAC,0CAA0C;QACpF,IAAI,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC;YAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;IAC/D,CAAC;IACD,OAAO,SAAS,CAAC;AAClB,CAAC;AAED;yFACyF;AACzF,MAAM,UAAU,sBAAsB,CAAC,KAAkB,EAAE,OAA0B;IACpF,OAAO,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,SAAS,CAAC;AACtD,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,UAAU,sBAAsB,CAAC,KAAkB,EAAE,OAA0B;IACpF,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;IAC9B,MAAM,MAAM,GAAG,CAAC,IAAuB,EAAW,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACrG,MAAM,OAAO,GAAuB,EAAE,CAAC;IACvC,MAAM,EAAE,GAAG,KAAK,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IACxD,IAAI,MAAM,CAAC,EAAE,CAAC;QAAE,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;IACrD,KAAK,MAAM,EAAE,IAAI,KAAK,CAAC,iBAAiB,IAAI,EAAE,EAAE,CAAC;QAChD,IAAI,EAAE,CAAC,SAAS,KAAK,SAAS;YAAE,SAAS,CAAC,+CAA+C;QACzF,IAAI,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC;YAAE,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CAAC;IAC1E,CAAC;IACD,OAAO,OAAO,CAAC;AAChB,CAAC;AAED,SAAS,0BAA0B,CAClC,OAAgC,EAChC,WAAmD;IAKnD,MAAM,MAAM,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAC5C,IAAI,MAGS,CAAC;IAEd,IAAI,WAAW,EAAE,CAAC;QACjB,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;YACtC,IAAI,UAAU,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;gBACtC,IAAI,MAAM,EAAE,CAAC;oBACZ,MAAM,IAAI,YAAY,CAAC,sDAAsD,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC;gBACvG,CAAC;gBACD,IAAI,KAAmC,CAAC;gBACxC,IAAI,CAAC,UAAU,CAAC,OAAO,IAAI,UAAU,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC5D,8DAA8D;oBAC9D,KAAK,GAAG,EAAE,CAAC;gBACZ,CAAC;qBAAM,CAAC;oBACP,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;wBACxC,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;wBACxD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;4BAC5B,MAAM,IAAI,YAAY,CAAC,uBAAuB,OAAO,CAAC,IAAI,iCAAiC,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;wBAChH,CAAC;wBACD,OAAO;4BACN,KAAK,EAAE,QAAQ;4BACf,IAAI,EAAE,OAAO,CAAC,SAAS,KAAK,MAAM;4BAClC,SAAS,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,SAAS,IAAI,QAAQ;yBAClD,CAAC;oBACH,CAAC,CAAC,CAAC;gBACJ,CAAC;gBACD,MAAM,GAAG,EAAE,KAAK,EAAE,eAAe,EAAE,UAAU,CAAC,UAAU,EAAE,CAAC;YAC5D,CAAC;QACF,CAAC;IACF,CAAC;IACD,OAAO,MAAM,CAAC;AACf,CAAC;AAED,SAAS,sBAAsB,CAAC,OAAoC;IACnE,MAAM,MAAM,GAAG,OAAO;SACpB,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC;SACvD,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC;SAC7B,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC;IAExC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,CAAC,EAAE,CAAC;QAChE,OAAO,CAAC,6HAA6H,CAAC,CAAC;IACxI,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO,CAAC,mFAAmF,CAAC,CAAC;IAC9F,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,SAAS,CAAC;IAClB,CAAC;IAED,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACvC,KAAK,EAAE,GAAG,CAAC,aAAa;QACxB,IAAI,EAAE,GAAG,CAAC,WAAW,KAAK,MAAM;QAChC,SAAS,EAAE,GAAG,CAAC,SAAS,IAAI,QAAQ;KACpC,CAAC,CAAC,CAAC,CAAC;AACN,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,wBAAwB,CAAC,WAAwB;IAChE,MAAM,OAAO,GAAG,kCAAkC,CAAC,WAAW,CAAC,OAAO,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;IAC1F,IAAI,OAAO,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,MAAM,CAAC,MAAM,CAAC;YACpB,GAAG,WAAW;YACd,2BAA2B,EAAE,SAAS;YACtC,wBAAwB,EAAE,SAAS;SACnC,CAAC,CAAC;IACJ,CAAC;IACD,MAAM,SAAS,GAAG,wBAAwB,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACzE,MAAM,UAAU,GAAG,IAAI,GAAG,EAAiC,CAAC;IAC5D,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,OAAO;QAAE,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAClE,OAAO,MAAM,CAAC,MAAM,CAAC;QACpB,GAAG,WAAW;QACd,2BAA2B,EAAE,UAAU;QACvC,wBAAwB,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC;KAClD,CAAC,CAAC;AACJ,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,kCAAkC,CACjD,OAAoC,EACpC,SAAiB;IAEjB,MAAM,cAAc,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;IACpD,MAAM,cAAc,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC;IAC/C,MAAM,MAAM,GAAG,IAAI,GAAG,EAAoB,CAAC;IAE3C,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;QAC/B,IAAI,CAAC,GAAG,CAAC,SAAS,IAAI,CAAC,GAAG,CAAC,aAAa;YAAE,OAAO;QAEjD,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;QAC/B,WAAW,CAAC,GAAG,CAAC,aAA4B,EAAE;YAC7C,SAAS,EAAE,CAAC,IAAiB,EAAE,EAAE;gBAChC,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;oBAC5B,MAAM,GAAG,GAAG,IAAsB,CAAC;oBACnC,IAAI,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,cAAc;wBAAE,OAAO;oBACpE,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;oBAC1D,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;wBAC1B,MAAM,IAAI,YAAY,CACrB,WAAW,GAAG,CAAC,IAAI,qCAAqC,GAAG,CAAC,IAAI,yBAAyB,SAAS,GAAG,EACrG,UAAU,CAAC,KAAK,CAChB,CAAC;oBACH,CAAC;oBACD,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBAClB,CAAC;qBAAM,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;oBACvC,MAAM,GAAG,GAAG,IAA0B,CAAC;oBACvC,IAAI,GAAG,CAAC,MAAM;wBAAE,OAAO;oBACvB,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;oBAC1D,IAAI,MAAM,KAAK,SAAS;wBAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBAC5C,CAAC;YACF,CAAC;SACD,CAAC,CAAC;QAEH,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AACf,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,wBAAwB,CACvC,OAAoC,EACpC,IAAgD;IAEhD,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;IACrC,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE;QAAE,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAEnD,0CAA0C;IAC1C,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC3C,MAAM,SAAS,GAAG,IAAI,GAAG,EAAoB,CAAC;IAC9C,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAC9B,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACrB,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACxB,CAAC;IACD,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC;QACtC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC9B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC;gBAAE,SAAS;YACtC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACpC,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACvD,CAAC;IACF,CAAC;IAED,mBAAmB;IACnB,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,QAAQ,EAAE,CAAC;QACnC,IAAI,GAAG,KAAK,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,oDAAoD;IAEjF,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,EAAG,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChB,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC;YAC7C,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAE,GAAG,CAAC,CAAC;YACvC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAC3B,IAAI,MAAM,KAAK,CAAC,EAAE,CAAC;gBAClB,4DAA4D;gBAC5D,IAAI,QAAQ,GAAG,KAAK,CAAC;gBACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBACvC,IAAI,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC;wBACrB,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;wBACzB,QAAQ,GAAG,IAAI,CAAC;wBAChB,MAAM;oBACP,CAAC;gBACF,CAAC;gBACD,IAAI,CAAC,QAAQ;oBAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjC,CAAC;QACF,CAAC;IACF,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC;QACpC,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC;aACtC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;aAC/B,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;aAChC,IAAI,CAAC,IAAI,CAAC,CAAC;QACb,MAAM,IAAI,YAAY,CACrB,2CAA2C,SAAS,EAAE,EACtD,UAAU,CAAC,KAAK,CAChB,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACd,CAAC"}
1
+ {"version":3,"file":"table.js","sourceRoot":"","sources":["../../../src/schema/table.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@
2
2
  * Shared UNIQUE-enforcement collation helpers. {@link uniqueEnforcementCollations}
3
3
  * is the single source of truth across packages — it is re-exported from the
4
4
  * package index (`@quereus/quereus`) and reached by the store and isolation
5
- * re-validators (`quereus-store/store-table.ts`,
5
+ * re-validators (`quereus-store/store-table-constraints.ts`,
6
6
  * `quereus-isolation/isolated-table.ts`) through
7
7
  * {@link resolveUniqueEnforcementCollations}, which pairs it with the owning
8
8
  * database's collation resolver. Cross-package drift is eliminated by construction
@@ -99,8 +99,10 @@ export declare function resolveUniqueEnforcementCollations(schema: TableSchema,
99
99
  * PK member still names the same row.
100
100
  *
101
101
  * Only semantic-ordering types are routed through `compare` ({@link hasSemanticOrdering}
102
- * is the gate): a TEXT/ANY column's declared `compare` is not collation-aware, so
103
- * consulting it would break NOCASE/RTRIM enforcement.
102
+ * is the gate): a TEXT/ANY column's declared `compare` honors the collation it is
103
+ * handed and is equivalent to the generic storage-class + collation path, so the
104
+ * cheaper generic comparator is used for them — only types whose order genuinely
105
+ * diverges from that path need their own `compare` consulted.
104
106
  *
105
107
  * Takes PRE-RESOLVED collations rather than `(schema, uc, resolver)` because the call
106
108
  * sites do not share one collation resolution. Memory's `checkUniqueViaIndex`
@@ -1 +1 @@
1
- {"version":3,"file":"unique-enforcement.d.ts","sourceRoot":"","sources":["../../../src/schema/unique-enforcement.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDG;AAGH,OAAO,KAAK,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AACrF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAEnF;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,GAAG,OAAO,CAQ1F;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,2BAA2B,CAC1C,MAAM,EAAE,WAAW,EACnB,EAAE,EAAE,sBAAsB,GACxB,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,CAKxB;AAED;;;;;;;;;GASG;AACH,wBAAgB,kCAAkC,CACjD,MAAM,EAAE,WAAW,EACnB,EAAE,EAAE,sBAAsB,EAC1B,QAAQ,EAAE,iBAAiB,GACzB,iBAAiB,EAAE,CAErB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,4BAA4B,CAC3C,OAAO,EAAE,SAAS,YAAY,EAAE,EAChC,SAAS,EAAE,SAAS,MAAM,EAAE,EAC5B,UAAU,EAAE,SAAS,iBAAiB,EAAE,GACtC,KAAK,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,KAAK,MAAM,CAAC,CAM7C;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,8BAA8B,CAC7C,MAAM,EAAE,WAAW,EACnB,EAAE,EAAE,sBAAsB,GACxB,OAAO,CAUT"}
1
+ {"version":3,"file":"unique-enforcement.d.ts","sourceRoot":"","sources":["../../../src/schema/unique-enforcement.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDG;AAGH,OAAO,KAAK,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AACrF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAEnF;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,GAAG,OAAO,CAQ1F;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,2BAA2B,CAC1C,MAAM,EAAE,WAAW,EACnB,EAAE,EAAE,sBAAsB,GACxB,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,CAKxB;AAED;;;;;;;;;GASG;AACH,wBAAgB,kCAAkC,CACjD,MAAM,EAAE,WAAW,EACnB,EAAE,EAAE,sBAAsB,EAC1B,QAAQ,EAAE,iBAAiB,GACzB,iBAAiB,EAAE,CAErB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,4BAA4B,CAC3C,OAAO,EAAE,SAAS,YAAY,EAAE,EAChC,SAAS,EAAE,SAAS,MAAM,EAAE,EAC5B,UAAU,EAAE,SAAS,iBAAiB,EAAE,GACtC,KAAK,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,KAAK,MAAM,CAAC,CAM7C;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,8BAA8B,CAC7C,MAAM,EAAE,WAAW,EACnB,EAAE,EAAE,sBAAsB,GACxB,OAAO,CAUT"}
@@ -2,7 +2,7 @@
2
2
  * Shared UNIQUE-enforcement collation helpers. {@link uniqueEnforcementCollations}
3
3
  * is the single source of truth across packages — it is re-exported from the
4
4
  * package index (`@quereus/quereus`) and reached by the store and isolation
5
- * re-validators (`quereus-store/store-table.ts`,
5
+ * re-validators (`quereus-store/store-table-constraints.ts`,
6
6
  * `quereus-isolation/isolated-table.ts`) through
7
7
  * {@link resolveUniqueEnforcementCollations}, which pairs it with the owning
8
8
  * database's collation resolver. Cross-package drift is eliminated by construction
@@ -111,8 +111,10 @@ export function resolveUniqueEnforcementCollations(schema, uc, resolver) {
111
111
  * PK member still names the same row.
112
112
  *
113
113
  * Only semantic-ordering types are routed through `compare` ({@link hasSemanticOrdering}
114
- * is the gate): a TEXT/ANY column's declared `compare` is not collation-aware, so
115
- * consulting it would break NOCASE/RTRIM enforcement.
114
+ * is the gate): a TEXT/ANY column's declared `compare` honors the collation it is
115
+ * handed and is equivalent to the generic storage-class + collation path, so the
116
+ * cheaper generic comparator is used for them — only types whose order genuinely
117
+ * diverges from that path need their own `compare` consulted.
116
118
  *
117
119
  * Takes PRE-RESOLVED collations rather than `(schema, uc, resolver)` because the call
118
120
  * sites do not share one collation resolution. Memory's `checkUniqueViaIndex`
@@ -1 +1 @@
1
- {"version":3,"file":"unique-enforcement.js","sourceRoot":"","sources":["../../../src/schema/unique-enforcement.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"unique-enforcement.js","sourceRoot":"","sources":["../../../src/schema/unique-enforcement.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import { type LogicalType } from './logical-type.js';
2
+ import type { DeepReadonly } from '../common/types.js';
2
3
  /**
3
4
  * NULL type - represents null values
4
5
  */
@@ -34,4 +35,19 @@ export declare const NUMERIC_TYPE: LogicalType;
34
35
  * Note: Uses NULL as physical type since it can represent any type
35
36
  */
36
37
  export declare const ANY_TYPE: LogicalType;
38
+ /**
39
+ * Plan-time argument gate for the numeric builtins (`abs`, `round`, `sqrt`, `floor`,
40
+ * `ceil`, `clamp`, …), for use from `validateArgTypes`. Accepts three things:
41
+ *
42
+ * - a numeric type — the intended case;
43
+ * - `ANY` — a type the planner cannot classify, e.g. a function registered without a
44
+ * declared `returnType`. Rejecting it at plan time would make `abs(my_udf(x))`
45
+ * unusable for no gain, so the decision defers to the implementation, which returns
46
+ * null for input it cannot use;
47
+ * - `NULL` — `abs(null)` is null in SQL, not an error, and every numeric builtin's
48
+ * implementation already short-circuits a null argument.
49
+ *
50
+ * Textual/blob/boolean arguments are still rejected at plan time, as before.
51
+ */
52
+ export declare function isNumericOrUnknownType(type: DeepReadonly<LogicalType>): boolean;
37
53
  //# sourceMappingURL=builtin-types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"builtin-types.d.ts","sourceRoot":"","sources":["../../../src/types/builtin-types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,WAAW,EAAgB,MAAM,mBAAmB,CAAC;AAGjF;;GAEG;AACH,eAAO,MAAM,SAAS,EAAE,WAOvB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,YAAY,EAAE,WAyC1B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,SAAS,EAAE,WAuCvB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,SAAS,EAAE,WAgCvB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,SAAS,EAAE,WAkDvB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,YAAY,EAAE,WA8B1B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,YAAY,EAAE,WAsC1B,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,QAAQ,EAAE,WAStB,CAAC"}
1
+ {"version":3,"file":"builtin-types.d.ts","sourceRoot":"","sources":["../../../src/types/builtin-types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,WAAW,EAAgB,MAAM,mBAAmB,CAAC;AAEjF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAcvD;;GAEG;AACH,eAAO,MAAM,SAAS,EAAE,WAOvB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,YAAY,EAAE,WA8C1B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,SAAS,EAAE,WAuCvB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,SAAS,EAAE,WAiCvB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,SAAS,EAAE,WAkDvB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,YAAY,EAAE,WA8B1B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,YAAY,EAAE,WA0D1B,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,QAAQ,EAAE,WActB,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,YAAY,CAAC,WAAW,CAAC,GAAG,OAAO,CAK/E"}
@@ -1,5 +1,16 @@
1
1
  import { PhysicalType, compareNulls } from './logical-type.js';
2
2
  import { compareSqlValuesFast, BINARY_COLLATION } from '../util/comparison.js';
3
+ /**
4
+ * Orders a non-null `number | bigint` pair. JS relational operators compare the two
5
+ * representations by exact mathematical value, so no precision is lost past 2^53
6
+ * (unlike converting the bigint side through `Number()`).
7
+ *
8
+ * Callers must handle NULL and NaN first: both `<` and `>` are false for a NaN operand,
9
+ * which would report "equal" here.
10
+ */
11
+ function compareNumericValues(a, b) {
12
+ return a < b ? -1 : a > b ? 1 : 0;
13
+ }
3
14
  /**
4
15
  * NULL type - represents null values
5
16
  */
@@ -42,11 +53,18 @@ export const INTEGER_TYPE = {
42
53
  const trimmed = v.trim();
43
54
  if (trimmed === '')
44
55
  return null;
45
- const parsed = parseInt(trimmed, 10);
46
- if (isNaN(parsed)) {
56
+ // Leading integer run only (mirrors parseInt's prefix leniency: '12abc' -> 12).
57
+ // Past 2^53 rebuild from the digit string, not the rounded number — same
58
+ // safe-integer boundary as the lexer's number() for INTEGER literals.
59
+ const m = /^[+-]?\d+/.exec(trimmed);
60
+ if (!m) {
47
61
  throw new TypeError(`Cannot convert '${v}' to INTEGER`);
48
62
  }
49
- return parsed;
63
+ const digits = m[0];
64
+ const parsed = Number(digits);
65
+ if (Number.isSafeInteger(parsed))
66
+ return parsed;
67
+ return BigInt(digits[0] === '+' ? digits.slice(1) : digits);
50
68
  }
51
69
  throw new TypeError(`Cannot convert ${typeof v} to INTEGER`);
52
70
  },
@@ -54,8 +72,7 @@ export const INTEGER_TYPE = {
54
72
  const nullCmp = compareNulls(a, b);
55
73
  if (nullCmp !== undefined)
56
74
  return nullCmp;
57
- // Use direct < / > which JS supports across number and bigint without precision loss
58
- return a < b ? -1 : a > b ? 1 : 0;
75
+ return compareNumericValues(a, b);
59
76
  },
60
77
  };
61
78
  /**
@@ -111,6 +128,7 @@ export const TEXT_TYPE = {
111
128
  name: 'TEXT',
112
129
  physicalType: PhysicalType.TEXT,
113
130
  isTextual: true,
131
+ collationAware: true,
114
132
  supportedCollations: ['BINARY', 'NOCASE', 'RTRIM'],
115
133
  validate: (v) => {
116
134
  if (v === null)
@@ -236,6 +254,12 @@ export const BOOLEAN_TYPE = {
236
254
  */
237
255
  export const NUMERIC_TYPE = {
238
256
  name: 'NUMERIC',
257
+ // NOTE: labelled REAL although the value space includes bigint. Harmless today —
258
+ // nothing encodes or rounds by physicalType (the store keys off the JS value type).
259
+ // If a storage/encoding path ever switches on physicalType, a bigint-holding NUMERIC
260
+ // would be mislabelled here and lose precision on the way out. Set-op type merging
261
+ // now routes every mixed builtin-numeric pair through NUMERIC, so plain
262
+ // `select 1 union all select 2.5` reaches this — the blast radius is no longer niche.
239
263
  physicalType: PhysicalType.REAL,
240
264
  isNumeric: true,
241
265
  validate: (v) => {
@@ -254,11 +278,16 @@ export const NUMERIC_TYPE = {
254
278
  const trimmed = v.trim();
255
279
  if (trimmed === '')
256
280
  return null;
257
- // Try integer first
258
- if (/^-?\d+$/.test(trimmed)) {
259
- const parsed = parseInt(trimmed, 10);
260
- if (!isNaN(parsed))
281
+ // Try integer first. Past 2^53 rebuild from the digit string, not the
282
+ // rounded number — same safe-integer boundary as the lexer's number()
283
+ // for INTEGER literals. An explicit '+' is accepted here so this arm
284
+ // agrees with INTEGER_TYPE.parse, but stripped before BigInt(), which
285
+ // rejects the sign that Number() accepts.
286
+ if (/^[+-]?\d+$/.test(trimmed)) {
287
+ const parsed = Number(trimmed);
288
+ if (Number.isSafeInteger(parsed))
261
289
  return parsed;
290
+ return BigInt(trimmed[0] === '+' ? trimmed.slice(1) : trimmed);
262
291
  }
263
292
  // Fall back to real
264
293
  const parsed = parseFloat(trimmed);
@@ -270,8 +299,18 @@ export const NUMERIC_TYPE = {
270
299
  throw new TypeError(`Cannot convert ${typeof v} to NUMERIC`);
271
300
  },
272
301
  compare: (a, b) => {
273
- // Use REAL comparison
274
- return REAL_TYPE.compare(a, b);
302
+ const nullCmp = compareNulls(a, b);
303
+ if (nullCmp !== undefined)
304
+ return nullCmp;
305
+ // NUMERIC's value space is number | bigint (unlike REAL, which is number-only),
306
+ // so we can't delegate to REAL_TYPE.compare: isNaN() throws on a bigint operand.
307
+ const aIsNaN = typeof a === 'number' && isNaN(a);
308
+ const bIsNaN = typeof b === 'number' && isNaN(b);
309
+ if (aIsNaN)
310
+ return bIsNaN ? 0 : -1;
311
+ if (bIsNaN)
312
+ return 1;
313
+ return compareNumericValues(a, b);
275
314
  },
276
315
  };
277
316
  /**
@@ -282,8 +321,33 @@ export const NUMERIC_TYPE = {
282
321
  export const ANY_TYPE = {
283
322
  name: 'ANY',
284
323
  physicalType: PhysicalType.NULL,
324
+ collationAware: true,
285
325
  validate: () => true, // Accept any value
286
326
  parse: (v) => v, // No conversion, store as-is
287
- compare: (a, b) => compareSqlValuesFast(a, b, BINARY_COLLATION),
327
+ // `compareSqlValuesFast` consults the collation only for a TEXT/TEXT pair and
328
+ // ranks mixed storage classes by class, so honoring the handed collation is
329
+ // total over ANY's whole value space — declared-key BTrees (memory PK/index)
330
+ // agree with the generic operator path on a `v any collate nocase` column.
331
+ compare: (a, b, collation) => compareSqlValuesFast(a, b, collation ?? BINARY_COLLATION),
288
332
  };
333
+ /**
334
+ * Plan-time argument gate for the numeric builtins (`abs`, `round`, `sqrt`, `floor`,
335
+ * `ceil`, `clamp`, …), for use from `validateArgTypes`. Accepts three things:
336
+ *
337
+ * - a numeric type — the intended case;
338
+ * - `ANY` — a type the planner cannot classify, e.g. a function registered without a
339
+ * declared `returnType`. Rejecting it at plan time would make `abs(my_udf(x))`
340
+ * unusable for no gain, so the decision defers to the implementation, which returns
341
+ * null for input it cannot use;
342
+ * - `NULL` — `abs(null)` is null in SQL, not an error, and every numeric builtin's
343
+ * implementation already short-circuits a null argument.
344
+ *
345
+ * Textual/blob/boolean arguments are still rejected at plan time, as before.
346
+ */
347
+ export function isNumericOrUnknownType(type) {
348
+ // NOTE: identity against the singletons, matching how coercion.ts tests NULL_TYPE.
349
+ // If a plugin ever registers its own distinct type object named 'ANY' or 'NULL'
350
+ // (types/registry.ts), this stops recognizing it — switch to a `name` comparison then.
351
+ return type.isNumeric === true || type === ANY_TYPE || type === NULL_TYPE;
352
+ }
289
353
  //# sourceMappingURL=builtin-types.js.map