@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
@@ -1,6 +1,11 @@
1
1
  import { createScalarFunction } from '../registration.js';
2
2
  import { compareSqlValues, getSqlDataTypeName } from '../../util/comparison.js';
3
- import { ANY_TYPE, INTEGER_TYPE, REAL_TYPE, TEXT_TYPE } from '../../types/builtin-types.js';
3
+ import { ANY_TYPE, INTEGER_TYPE, NULL_TYPE, REAL_TYPE, isNumericOrUnknownType } from '../../types/builtin-types.js';
4
+ import { asRun } from '../../runtime/types.js';
5
+ import { emitPlanNode } from '../../runtime/emitters.js';
6
+ import { BLOB_RETURN, INTEGER_RETURN_NOT_NULL, REAL_RETURN, TEXT_RETURN_NOT_NULL } from './return-types.js';
7
+ import { effectiveCollationOfTypes, effectiveGroupCollation } from '../../planner/analysis/comparison-collation.js';
8
+ import { makeComparisonGroup, makeGroupComparator, makeOperandComparator, formatOperandCollationNote } from '../../runtime/emit/operand-comparator.js';
4
9
  /**
5
10
  * Find the common type among multiple logical types.
6
11
  * This implements type promotion rules for polymorphic functions.
@@ -34,10 +39,17 @@ function findCommonType(types) {
34
39
  return INTEGER_TYPE;
35
40
  }
36
41
  // For non-numeric types, return the first type (conservative)
37
- // In a more sophisticated implementation, we could:
38
- // - Find a common supertype
39
- // - Return ANY_TYPE if types are incompatible
40
- // - Throw an error for incompatible types
42
+ // NOTE: this fallback is DISHONEST for a value-returning function over a
43
+ // mixed-category group — `coalesce(int_col, text_col)` advertises INTEGER while
44
+ // it can return the text. Benign today because the write path converts or
45
+ // rejects rather than storing the wrong storage class (`insert into int_col
46
+ // select coalesce(null, text_col)` converts; a VALUES insert of unconvertible
47
+ // text raises `Type conversion failed`), and no reader trusts the declared type
48
+ // over the runtime value. `greatest`/`least` opted out via `extremumReturnType`
49
+ // because their fix made the divergence newly *visible*. If a consumer ever
50
+ // starts trusting a declared type without re-checking the value — a storage
51
+ // encoder keyed off it, say — every caller here (coalesce, iif, choose) needs
52
+ // the same ANY_TYPE treatment.
41
53
  return firstType;
42
54
  }
43
55
  // --- abs(X) ---
@@ -52,8 +64,8 @@ export const absFunc = createScalarFunction({
52
64
  nullable: false,
53
65
  isReadOnly: true
54
66
  }),
55
- // Validate that the argument is numeric
56
- validateArgTypes: (argTypes) => argTypes[0].isNumeric === true
67
+ // Validate that the argument is numeric (or unclassifiable — see the helper)
68
+ validateArgTypes: (argTypes) => isNumericOrUnknownType(argTypes[0])
57
69
  }, (arg) => {
58
70
  if (arg === null)
59
71
  return null;
@@ -96,7 +108,7 @@ const roundSchemaBase = {
96
108
  nullable: false,
97
109
  isReadOnly: true
98
110
  }),
99
- validateArgTypes: (argTypes) => argTypes[0].isNumeric === true
111
+ validateArgTypes: (argTypes) => isNumericOrUnknownType(argTypes[0])
100
112
  };
101
113
  export const roundFunc1 = createScalarFunction({ ...roundSchemaBase, numArgs: 1 }, roundImpl);
102
114
  export const roundFunc2 = createScalarFunction({ ...roundSchemaBase, numArgs: 2 }, roundImpl);
@@ -121,21 +133,83 @@ export const coalesceFunc = createScalarFunction({
121
133
  return null;
122
134
  });
123
135
  // --- nullif(X, Y) ---
136
+ /**
137
+ * The call site's comparison group, with its cross-type coercion resolved at emit
138
+ * time. `nullif`/`greatest`/`least` declare `returnsArg`, so `buildFunctionCall`
139
+ * deliberately leaves their arguments un-rewritten (a plan-time cast would replace
140
+ * the RETURNED value); the group converts *copies* for the comparison instead. A
141
+ * schema that names no group yields an identity group — raw values, raw types.
142
+ */
143
+ function callComparisonGroup(plan) {
144
+ return makeComparisonGroup(plan.operands.map(op => op.getType()), plan.functionSchema.comparesArgs ?? []);
145
+ }
146
+ /**
147
+ * Emit `nullif(x, y)` deciding the match exactly as `x = y` would: the pair's
148
+ * cross-type coercion, collation (through the shared provenance lattice) and
149
+ * comparator routing (declared semantic-ordering type / storage class / runtime
150
+ * temporal check) are the ones `=`, BETWEEN and simple CASE share. All resolved
151
+ * ONCE at emit, never per row. A same-rank explicit/declared collation conflict
152
+ * between the two operands throws here, exactly as `x = y` throws for the same
153
+ * pair.
154
+ *
155
+ * The comparison runs over coerced KEYS while the returned value is the raw first
156
+ * argument — `nullif('abc', 1)` compares `0` against `1` (no match) and returns
157
+ * `'abc'`, not the `0` the conversion produced.
158
+ *
159
+ * NOTE: that throw happens at emit time, where `=` validates in
160
+ * `BinaryOpNode.generateType` — the same deferral simple CASE has (see the
161
+ * matching note in `runtime/emit/case.ts`). Both surface inside `db.prepare`
162
+ * today, since even a fully-constant call is emitted for the folder to evaluate.
163
+ * If a rule ever rewrites a `ScalarFunctionCallNode` away without emitting it,
164
+ * move the resolution into the node's `generateType` and read the cached result
165
+ * here. Applies to `emitExtremum` below identically.
166
+ */
167
+ function emitNullif(plan, ctx, _defaultEmit) {
168
+ const group = callComparisonGroup(plan);
169
+ const collationName = effectiveCollationOfTypes(group.types[0], group.types[1], plan.expression);
170
+ const comparator = makeOperandComparator(group.types[0].logicalType, group.types[1].logicalType, ctx.resolveCollation(collationName));
171
+ // Same shape as the unemitted default: every comparator route ranks NULL
172
+ // first (NULL/NULL → 0), so NULL handling is unchanged.
173
+ function run(_rctx, argX, argY) {
174
+ return comparator(group.key(0, argX), group.key(1, argY)) === 0 ? null : argX;
175
+ }
176
+ return {
177
+ params: plan.operands.map(op => emitPlanNode(op, ctx)),
178
+ run: asRun(run),
179
+ note: `${plan.expression.name}(${plan.operands.length})${formatOperandCollationNote([collationName])}`,
180
+ };
181
+ }
124
182
  export const nullifFunc = createScalarFunction({
125
183
  name: 'nullif',
126
184
  numArgs: 2,
127
185
  deterministic: true,
128
- // Type inference: return the type of the first argument (nullable)
186
+ comparesArgs: [0, 1],
187
+ returnsArg: true,
188
+ // Type inference: return the type of the first argument (nullable). Honest
189
+ // because `returnsArg` keeps the plan-time cast off that argument — the value
190
+ // handed back really is the first argument as written.
129
191
  inferReturnType: (argTypes) => ({
130
192
  typeClass: 'scalar',
131
193
  logicalType: argTypes[0],
132
194
  nullable: true, // nullif can always return null
133
195
  isReadOnly: true
134
196
  })
135
- }, (argX, argY) => {
197
+ },
198
+ // NOTE: BINARY and UNCOERCED — the plain fallback for any caller that reaches the
199
+ // implementation without emitting; the custom emitter binds the call site's
200
+ // cross-type coercion, collation and type routing. Unreachable today
201
+ // (`emitScalarFunctionCall` always prefers `customEmitter`), and it used to be
202
+ // coerced anyway because the plan-time cast rewrote the arguments before the
203
+ // implementation saw them. If a path ever DOES evaluate a comparison builtin
204
+ // without emitting — a folder that calls `implementation` directly, or a plugin
205
+ // that re-registers one of these names without the emitter — it will silently
206
+ // compare raw values; route it through the emitter instead of duplicating the
207
+ // coercion here. Same applies to `greatest`/`least` below.
208
+ (argX, argY) => {
136
209
  const comparison = compareSqlValues(argX, argY);
137
210
  return comparison === 0 ? null : argX;
138
211
  });
212
+ nullifFunc.customEmitter = emitNullif;
139
213
  // --- typeof(X) ---
140
214
  // Pin the return type to TEXT so the planner does not insert an implicit
141
215
  // cast on the right-hand side of comparisons like `typeof(x) = 'integer'`.
@@ -146,22 +220,17 @@ export const typeofFunc = createScalarFunction({
146
220
  name: 'typeof',
147
221
  numArgs: 1,
148
222
  deterministic: true,
149
- returnType: {
150
- typeClass: 'scalar',
151
- logicalType: TEXT_TYPE,
152
- nullable: false,
153
- isReadOnly: true
154
- }
223
+ returnType: TEXT_RETURN_NOT_NULL
155
224
  }, (arg) => {
156
225
  return getSqlDataTypeName(arg);
157
226
  });
158
227
  // --- random() ---
159
- export const randomFunc = createScalarFunction({ name: 'random', numArgs: 0, deterministic: false }, () => {
228
+ export const randomFunc = createScalarFunction({ name: 'random', numArgs: 0, deterministic: false, returnType: INTEGER_RETURN_NOT_NULL }, () => {
160
229
  const randomInt = Math.floor(Math.random() * (Number.MAX_SAFE_INTEGER - Number.MIN_SAFE_INTEGER + 1)) + Number.MIN_SAFE_INTEGER;
161
230
  return BigInt(randomInt);
162
231
  });
163
232
  // --- randomblob(N) ---
164
- export const randomblobFunc = createScalarFunction({ name: 'randomblob', numArgs: 1, deterministic: false }, (nVal) => {
233
+ export const randomblobFunc = createScalarFunction({ name: 'randomblob', numArgs: 1, deterministic: false, returnType: BLOB_RETURN }, (nVal) => {
165
234
  if (typeof nVal !== 'number' && typeof nVal !== 'bigint')
166
235
  return null;
167
236
  const n = Number(nVal);
@@ -211,14 +280,13 @@ export const sqrtFunc = createScalarFunction({
211
280
  name: 'sqrt',
212
281
  numArgs: 1,
213
282
  deterministic: true,
214
- // Type inference: sqrt always returns REAL (even for INTEGER input)
215
- inferReturnType: (argTypes) => ({
216
- typeClass: 'scalar',
217
- logicalType: argTypes[0].name === 'INTEGER' ? argTypes[0] : argTypes[0], // Keep input type
218
- nullable: false,
219
- isReadOnly: true
220
- }),
221
- validateArgTypes: (argTypes) => argTypes[0].isNumeric === true
283
+ // REAL rather than inferred-from-input, for the same reason as pow/power below:
284
+ // Math.sqrt is not closed over the integers, so `sqrt(int_col)` claiming INTEGER
285
+ // is a lie the write path acts on — it would skip conversion and store
286
+ // 1.4142135623730951 in an INTEGER column. Nullable because a negative or NULL
287
+ // argument yields NULL.
288
+ returnType: REAL_RETURN,
289
+ validateArgTypes: (argTypes) => isNumericOrUnknownType(argTypes[0])
222
290
  }, (arg) => {
223
291
  if (arg === null)
224
292
  return null;
@@ -237,8 +305,10 @@ const pow = (base, exponent) => {
237
305
  return null;
238
306
  return Math.pow(numBase, numExp);
239
307
  };
240
- export const powFunc = createScalarFunction({ name: 'pow', numArgs: 2, deterministic: true }, pow);
241
- export const powerFunc = createScalarFunction({ name: 'power', numArgs: 2, deterministic: true }, pow);
308
+ // REAL rather than inferred-from-input: unlike abs/round/floor/ceil, Math.pow is not
309
+ // closed over the integers (`pow(2, -1)` is 0.5), so the input type is not the answer.
310
+ export const powFunc = createScalarFunction({ name: 'pow', numArgs: 2, deterministic: true, returnType: REAL_RETURN }, pow);
311
+ export const powerFunc = createScalarFunction({ name: 'power', numArgs: 2, deterministic: true, returnType: REAL_RETURN }, pow);
242
312
  // --- floor(X) ---
243
313
  export const floorFunc = createScalarFunction({
244
314
  name: 'floor',
@@ -251,7 +321,7 @@ export const floorFunc = createScalarFunction({
251
321
  nullable: false,
252
322
  isReadOnly: true
253
323
  }),
254
- validateArgTypes: (argTypes) => argTypes[0].isNumeric === true
324
+ validateArgTypes: (argTypes) => isNumericOrUnknownType(argTypes[0])
255
325
  }, (arg) => {
256
326
  if (arg === null)
257
327
  return null;
@@ -276,7 +346,7 @@ const ceilTypeInference = {
276
346
  nullable: false,
277
347
  isReadOnly: true
278
348
  }),
279
- validateArgTypes: (argTypes) => argTypes[0].isNumeric === true
349
+ validateArgTypes: (argTypes) => isNumericOrUnknownType(argTypes[0])
280
350
  };
281
351
  export const ceilFunc = createScalarFunction({ name: 'ceil', numArgs: 1, deterministic: true, ...ceilTypeInference }, ceil);
282
352
  export const ceilingFunc = createScalarFunction({ name: 'ceiling', numArgs: 1, deterministic: true, ...ceilTypeInference }, ceil);
@@ -292,8 +362,13 @@ export const clampFunc = createScalarFunction({
292
362
  nullable: true,
293
363
  isReadOnly: true
294
364
  }),
295
- validateArgTypes: (argTypes) => argTypes[0].isNumeric === true && argTypes[1].isNumeric === true && argTypes[2].isNumeric === true
365
+ validateArgTypes: (argTypes) => argTypes.every(isNumericOrUnknownType)
296
366
  }, (value, min, max) => {
367
+ // Unlike the other numeric builtins, clamp's arguments reach Number() together,
368
+ // so the null short-circuit has to be explicit: Number(null) is 0, which would
369
+ // make clamp(null, 1, 2) return 1 instead of null.
370
+ if (value === null || min === null || max === null)
371
+ return null;
297
372
  const v = Number(value);
298
373
  const minVal = Number(min);
299
374
  const maxVal = Number(max);
@@ -301,19 +376,94 @@ export const clampFunc = createScalarFunction({
301
376
  return null;
302
377
  return Math.max(minVal, Math.min(maxVal, v));
303
378
  });
379
+ // --- greatest(...) / least(...) ---
380
+ /**
381
+ * Emit `greatest`/`least` ranking the whole argument group the way `order by`
382
+ * would rank a column of the group's declared type and collation. The group's
383
+ * cross-type coercion, ONE collation (through the lattice's N-ary merge
384
+ * `effectiveGroupCollation` — a same-rank explicit/declared conflict among the
385
+ * arguments throws, matching `=`) and ONE comparator (`makeGroupComparator`, the
386
+ * N-ary form of the rule `=`, BETWEEN and simple CASE route through, so a TIMESPAN
387
+ * column ranked against a bare text literal still compares by elapsed time) all
388
+ * resolve once at emit. `direction` is +1 for greatest, -1 for least — sharing the
389
+ * comparator keeps the two directions mirror images.
390
+ *
391
+ * The fold ranks coerced KEYS but tracks the winning INDEX and returns the raw
392
+ * argument there, so `greatest(t, 1)` over the stored text `'3'` hands back `'3'`
393
+ * rather than the integer the conversion produced. The `best === null` test rides
394
+ * on the running key, exactly where it sat before this split (it used to read the
395
+ * cast operand, and `cast('' as integer)` is null from a non-null operand), so
396
+ * NULL handling is unchanged: `greatest` skips NULLs, `least`'s NULL wipes the
397
+ * running minimum. Ties under a non-BINARY comparator leave which argument
398
+ * survives unspecified (same latitude as the min/max aggregate, DISTINCT, and
399
+ * GROUP BY) — but it is always one of the arguments.
400
+ */
401
+ function emitExtremum(direction) {
402
+ return (plan, ctx, _defaultEmit) => {
403
+ const group = callComparisonGroup(plan);
404
+ const collationName = effectiveGroupCollation(group.types, plan.expression);
405
+ const compare = makeGroupComparator(group.types.map(t => t.logicalType), ctx.resolveCollation(collationName));
406
+ function run(_rctx, ...args) {
407
+ if (args.length === 0)
408
+ return null;
409
+ let bestIndex = 0;
410
+ let bestKey = group.key(0, args[0]);
411
+ for (let i = 1; i < args.length; i++) {
412
+ const currentKey = group.key(i, args[i]);
413
+ if (bestKey === null || compare(currentKey, bestKey) * direction > 0) {
414
+ bestIndex = i;
415
+ bestKey = currentKey;
416
+ }
417
+ }
418
+ return args[bestIndex];
419
+ }
420
+ return {
421
+ params: plan.operands.map(op => emitPlanNode(op, ctx)),
422
+ run: asRun(run),
423
+ note: `${plan.expression.name}(${plan.operands.length})${formatOperandCollationNote([collationName])}`,
424
+ };
425
+ };
426
+ }
427
+ /**
428
+ * Declared return type of `greatest`/`least`. The fold returns one of its
429
+ * arguments verbatim (`returnsArg`), so the declaration must cover every argument
430
+ * it could pick: only an all-same or an all-numeric group has a type that does.
431
+ * A mixed-category group (`greatest(int_col, '2')` can return the text `'2'`)
432
+ * declares ANY rather than {@link findCommonType}'s first-argument fallback, which
433
+ * would advertise INTEGER for a value that is text.
434
+ *
435
+ * A NULL-typed argument contributes no value the declaration has to cover — the
436
+ * only thing it can win with is NULL, which `nullable: true` already allows — so
437
+ * it is dropped before the test rather than dragged into a mixed-category ANY:
438
+ * `greatest(int_col, null)` stays INTEGER.
439
+ */
440
+ function extremumReturnType(argTypes) {
441
+ const valued = argTypes.filter(t => t.name !== NULL_TYPE.name);
442
+ // Nothing but NULLs (or no arguments at all) — findCommonType already answers
443
+ // NULL / ANY respectively.
444
+ if (valued.length === 0)
445
+ return findCommonType(argTypes);
446
+ const allSame = valued.every(t => t.name === valued[0].name);
447
+ const allNumeric = valued.every(t => t.isNumeric === true);
448
+ return allSame || allNumeric ? findCommonType(valued) : ANY_TYPE;
449
+ }
304
450
  // Greatest-of function
305
451
  export const greatestFunc = createScalarFunction({
306
452
  name: 'greatest',
307
453
  numArgs: -1,
308
454
  deterministic: true,
309
- // Type inference: find the common type among all arguments
455
+ comparesArgs: 'all',
456
+ returnsArg: true,
457
+ // Type inference: the common type when every argument shares one, else ANY
310
458
  inferReturnType: (argTypes) => ({
311
459
  typeClass: 'scalar',
312
- logicalType: findCommonType(argTypes),
460
+ logicalType: extremumReturnType(argTypes),
313
461
  nullable: true,
314
462
  isReadOnly: true
315
463
  })
316
- }, (...args) => {
464
+ },
465
+ // BINARY, uncoerced fallback — see the NOTE on `nullif`'s implementation above.
466
+ (...args) => {
317
467
  if (args.length === 0)
318
468
  return null;
319
469
  return args.reduce((max, current) => {
@@ -323,19 +473,24 @@ export const greatestFunc = createScalarFunction({
323
473
  return max;
324
474
  }, args[0]);
325
475
  });
476
+ greatestFunc.customEmitter = emitExtremum(1);
326
477
  // Least-of function
327
478
  export const leastFunc = createScalarFunction({
328
479
  name: 'least',
329
480
  numArgs: -1,
330
481
  deterministic: true,
331
- // Type inference: find the common type among all arguments
482
+ comparesArgs: 'all',
483
+ returnsArg: true,
484
+ // Type inference: the common type when every argument shares one, else ANY
332
485
  inferReturnType: (argTypes) => ({
333
486
  typeClass: 'scalar',
334
- logicalType: findCommonType(argTypes),
487
+ logicalType: extremumReturnType(argTypes),
335
488
  nullable: true,
336
489
  isReadOnly: true
337
490
  })
338
- }, (...args) => {
491
+ },
492
+ // BINARY, uncoerced fallback — see the NOTE on `nullif`'s implementation above.
493
+ (...args) => {
339
494
  if (args.length === 0)
340
495
  return null;
341
496
  return args.reduce((min, current) => {
@@ -345,6 +500,7 @@ export const leastFunc = createScalarFunction({
345
500
  return min;
346
501
  }, args[0]);
347
502
  });
503
+ leastFunc.customEmitter = emitExtremum(-1);
348
504
  // Choose function
349
505
  export const chooseFunc = createScalarFunction({
350
506
  name: 'choose',
@@ -1 +1 @@
1
- {"version":3,"file":"scalar.js","sourceRoot":"","sources":["../../../../src/func/builtins/scalar.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scalar.js","sourceRoot":"","sources":["../../../../src/func/builtins/scalar.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../../src/func/builtins/schema.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAwF/D,eAAO,MAAM,UAAU,8DAyHtB,CAAC;AAGF,eAAO,MAAM,aAAa,8DA4DzB,CAAC;AAGF,eAAO,MAAM,kBAAkB,8DAiF9B,CAAC;AAGF,eAAO,MAAM,aAAa,8DAoEzB,CAAC;AAGF,eAAO,MAAM,uBAAuB,8DAmDnC,CAAC;AAGF,eAAO,MAAM,wBAAwB,8DAwDpC,CAAC;AAGF,eAAO,MAAM,iBAAiB,8DAoC7B,CAAC;AAEF,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,cAAc,GAAG,MAAM,CAMnE;AAeD,eAAO,MAAM,gBAAgB,8DA4C5B,CAAC;AAmVF,eAAO,MAAM,YAAY,8DA0DxB,CAAC;AAiSF,eAAO,MAAM,cAAc,8DA4C1B,CAAC"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../../src/func/builtins/schema.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAwF/D,eAAO,MAAM,UAAU,8DAgItB,CAAC;AAGF,eAAO,MAAM,aAAa,8DA4DzB,CAAC;AAGF,eAAO,MAAM,kBAAkB,8DAiF9B,CAAC;AAGF,eAAO,MAAM,aAAa,8DAoEzB,CAAC;AAGF,eAAO,MAAM,uBAAuB,8DAmDnC,CAAC;AAGF,eAAO,MAAM,wBAAwB,8DAwDpC,CAAC;AAGF,eAAO,MAAM,iBAAiB,8DAoC7B,CAAC;AAEF,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,cAAc,GAAG,MAAM,CAMnE;AAeD,eAAO,MAAM,gBAAgB,8DA4C5B,CAAC;AAmVF,eAAO,MAAM,YAAY,8DA0DxB,CAAC;AAiSF,eAAO,MAAM,cAAc,8DA4C1B,CAAC"}
@@ -3,7 +3,7 @@ import { QuereusError } from "../../common/errors.js";
3
3
  import { StatusCode } from "../../common/types.js";
4
4
  import { isScalarFunctionSchema, isTableValuedFunctionSchema, isAggregateFunctionSchema } from "../../schema/function.js";
5
5
  import { isWindowFunction } from "../../schema/window-function.js";
6
- import { exposedImplicitIndexes } from "../../schema/catalog.js";
6
+ import { exposedImplicitIndexes, isHiddenImplicitIndex } from "../../schema/catalog.js";
7
7
  import { isMaintainedTable } from "../../schema/derivation.js";
8
8
  import { generateMaintainedTableDDL } from "../../schema/ddl-generator.js";
9
9
  import { INTEGER_TYPE, TEXT_TYPE } from "../../types/builtin-types.js";
@@ -132,9 +132,17 @@ export const schemaFunc = createIntegratedTableValuedFunction({
132
132
  createSql,
133
133
  tagsToJson(tableSchema.tags)
134
134
  ];
135
- // Process Indexes for this table
135
+ // Process Indexes for this table. A hidden implicit covering structure
136
+ // (a plain UNIQUE's auto-built index) is a backing detail, not a
137
+ // user-addressable index — same rule `collectSchemaCatalog` applies.
138
+ // NOTE: `isHiddenImplicitIndex` rebuilds the table's exposure map per
139
+ // call, so this is O(indexes × unique constraints) per table; if a
140
+ // table ever carries enough of both to matter, hoist the map the way
141
+ // `collectSchemaCatalog` does.
136
142
  if (tableSchema.indexes) {
137
143
  for (const indexSchema of tableSchema.indexes) {
144
+ if (isHiddenImplicitIndex(tableSchema, indexSchema.name))
145
+ continue;
138
146
  yield [
139
147
  schemaName,
140
148
  'index',
@@ -371,7 +379,7 @@ export const indexInfoFunc = createIntegratedTableValuedFunction({
371
379
  // matches across backends. Synthetic descriptors carry no `unique` flag —
372
380
  // UNIQUE enforcement routes through `uniqueConstraints` — so they report
373
381
  // `unique = 0`, mirroring the memory materialized entry.
374
- const realIndexes = table.indexes ?? [];
382
+ const realIndexes = (table.indexes ?? []).filter(idx => !isHiddenImplicitIndex(table, idx.name));
375
383
  const synthetic = exposedImplicitIndexes(table);
376
384
  if (realIndexes.length === 0 && synthetic.length === 0)
377
385
  return;