@quereus/quereus 4.3.2 → 4.4.1

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 (396) hide show
  1. package/README.md +5 -0
  2. package/dist/src/common/types.d.ts +9 -0
  3. package/dist/src/common/types.d.ts.map +1 -1
  4. package/dist/src/common/types.js.map +1 -1
  5. package/dist/src/core/database-events.d.ts +49 -0
  6. package/dist/src/core/database-events.d.ts.map +1 -1
  7. package/dist/src/core/database-events.js +148 -0
  8. package/dist/src/core/database-events.js.map +1 -1
  9. package/dist/src/core/database-external-changes.d.ts +2 -2
  10. package/dist/src/core/database-external-changes.d.ts.map +1 -1
  11. package/dist/src/core/database-external-changes.js +12 -9
  12. package/dist/src/core/database-external-changes.js.map +1 -1
  13. package/dist/src/core/database-materialized-views-apply.d.ts +156 -14
  14. package/dist/src/core/database-materialized-views-apply.d.ts.map +1 -1
  15. package/dist/src/core/database-materialized-views-apply.js +370 -65
  16. package/dist/src/core/database-materialized-views-apply.js.map +1 -1
  17. package/dist/src/core/database-materialized-views-plan-builders.d.ts +66 -1
  18. package/dist/src/core/database-materialized-views-plan-builders.d.ts.map +1 -1
  19. package/dist/src/core/database-materialized-views-plan-builders.js +368 -8
  20. package/dist/src/core/database-materialized-views-plan-builders.js.map +1 -1
  21. package/dist/src/core/database-materialized-views-plans.d.ts +257 -30
  22. package/dist/src/core/database-materialized-views-plans.d.ts.map +1 -1
  23. package/dist/src/core/database-materialized-views.d.ts +99 -42
  24. package/dist/src/core/database-materialized-views.d.ts.map +1 -1
  25. package/dist/src/core/database-materialized-views.js +198 -121
  26. package/dist/src/core/database-materialized-views.js.map +1 -1
  27. package/dist/src/core/database.d.ts +5 -0
  28. package/dist/src/core/database.d.ts.map +1 -1
  29. package/dist/src/core/database.js +41 -18
  30. package/dist/src/core/database.js.map +1 -1
  31. package/dist/src/core/internal-statement-cache.d.ts +18 -0
  32. package/dist/src/core/internal-statement-cache.d.ts.map +1 -0
  33. package/dist/src/core/internal-statement-cache.js +211 -0
  34. package/dist/src/core/internal-statement-cache.js.map +1 -0
  35. package/dist/src/func/builtins/aggregate.d.ts +13 -12
  36. package/dist/src/func/builtins/aggregate.d.ts.map +1 -1
  37. package/dist/src/func/builtins/aggregate.js +146 -62
  38. package/dist/src/func/builtins/aggregate.js.map +1 -1
  39. package/dist/src/func/builtins/builtin-window-functions.d.ts.map +1 -1
  40. package/dist/src/func/builtins/builtin-window-functions.js +63 -48
  41. package/dist/src/func/builtins/builtin-window-functions.js.map +1 -1
  42. package/dist/src/func/registration.d.ts +19 -1
  43. package/dist/src/func/registration.d.ts.map +1 -1
  44. package/dist/src/func/registration.js +41 -0
  45. package/dist/src/func/registration.js.map +1 -1
  46. package/dist/src/index.d.ts +8 -8
  47. package/dist/src/index.d.ts.map +1 -1
  48. package/dist/src/index.js +12 -11
  49. package/dist/src/index.js.map +1 -1
  50. package/dist/src/parser/parser.d.ts +6 -0
  51. package/dist/src/parser/parser.d.ts.map +1 -1
  52. package/dist/src/parser/parser.js +45 -34
  53. package/dist/src/parser/parser.js.map +1 -1
  54. package/dist/src/planner/analysis/comparison-collation.d.ts +2 -0
  55. package/dist/src/planner/analysis/comparison-collation.d.ts.map +1 -1
  56. package/dist/src/planner/analysis/comparison-collation.js +1 -1
  57. package/dist/src/planner/analysis/comparison-collation.js.map +1 -1
  58. package/dist/src/planner/analysis/equi-correlation.d.ts +26 -0
  59. package/dist/src/planner/analysis/equi-correlation.d.ts.map +1 -0
  60. package/dist/src/planner/analysis/equi-correlation.js +62 -0
  61. package/dist/src/planner/analysis/equi-correlation.js.map +1 -0
  62. package/dist/src/planner/analysis/expression-fingerprint.d.ts.map +1 -1
  63. package/dist/src/planner/analysis/expression-fingerprint.js +29 -0
  64. package/dist/src/planner/analysis/expression-fingerprint.js.map +1 -1
  65. package/dist/src/planner/analysis/query-rewrite-matcher.d.ts +60 -18
  66. package/dist/src/planner/analysis/query-rewrite-matcher.d.ts.map +1 -1
  67. package/dist/src/planner/analysis/query-rewrite-matcher.js +95 -42
  68. package/dist/src/planner/analysis/query-rewrite-matcher.js.map +1 -1
  69. package/dist/src/planner/analysis/sat-checker.d.ts.map +1 -1
  70. package/dist/src/planner/analysis/sat-checker.js +43 -4
  71. package/dist/src/planner/analysis/sat-checker.js.map +1 -1
  72. package/dist/src/planner/analysis/scalar-subqueries.d.ts +28 -0
  73. package/dist/src/planner/analysis/scalar-subqueries.d.ts.map +1 -0
  74. package/dist/src/planner/analysis/scalar-subqueries.js +60 -0
  75. package/dist/src/planner/analysis/scalar-subqueries.js.map +1 -0
  76. package/dist/src/planner/building/delete.d.ts.map +1 -1
  77. package/dist/src/planner/building/delete.js +10 -3
  78. package/dist/src/planner/building/delete.js.map +1 -1
  79. package/dist/src/planner/building/expression.d.ts.map +1 -1
  80. package/dist/src/planner/building/expression.js +87 -6
  81. package/dist/src/planner/building/expression.js.map +1 -1
  82. package/dist/src/planner/building/foreign-key-builder.d.ts +44 -1
  83. package/dist/src/planner/building/foreign-key-builder.d.ts.map +1 -1
  84. package/dist/src/planner/building/foreign-key-builder.js +54 -0
  85. package/dist/src/planner/building/foreign-key-builder.js.map +1 -1
  86. package/dist/src/planner/building/insert.d.ts.map +1 -1
  87. package/dist/src/planner/building/insert.js +9 -12
  88. package/dist/src/planner/building/insert.js.map +1 -1
  89. package/dist/src/planner/building/select.d.ts.map +1 -1
  90. package/dist/src/planner/building/select.js +15 -1
  91. package/dist/src/planner/building/select.js.map +1 -1
  92. package/dist/src/planner/building/update.d.ts.map +1 -1
  93. package/dist/src/planner/building/update.js +13 -4
  94. package/dist/src/planner/building/update.js.map +1 -1
  95. package/dist/src/planner/building/with.d.ts.map +1 -1
  96. package/dist/src/planner/building/with.js +5 -8
  97. package/dist/src/planner/building/with.js.map +1 -1
  98. package/dist/src/planner/cache/materialization-advisory.d.ts +33 -0
  99. package/dist/src/planner/cache/materialization-advisory.d.ts.map +1 -1
  100. package/dist/src/planner/cache/materialization-advisory.js +164 -28
  101. package/dist/src/planner/cache/materialization-advisory.js.map +1 -1
  102. package/dist/src/planner/cache/reference-graph.d.ts +0 -4
  103. package/dist/src/planner/cache/reference-graph.d.ts.map +1 -1
  104. package/dist/src/planner/cache/reference-graph.js +5 -13
  105. package/dist/src/planner/cache/reference-graph.js.map +1 -1
  106. package/dist/src/planner/cost/index.d.ts +28 -7
  107. package/dist/src/planner/cost/index.d.ts.map +1 -1
  108. package/dist/src/planner/cost/index.js +26 -0
  109. package/dist/src/planner/cost/index.js.map +1 -1
  110. package/dist/src/planner/framework/pass.js +3 -3
  111. package/dist/src/planner/nodes/cache-node.d.ts +18 -2
  112. package/dist/src/planner/nodes/cache-node.d.ts.map +1 -1
  113. package/dist/src/planner/nodes/cache-node.js +42 -3
  114. package/dist/src/planner/nodes/cache-node.js.map +1 -1
  115. package/dist/src/planner/nodes/cte-node.d.ts +15 -1
  116. package/dist/src/planner/nodes/cte-node.d.ts.map +1 -1
  117. package/dist/src/planner/nodes/cte-node.js +12 -2
  118. package/dist/src/planner/nodes/cte-node.js.map +1 -1
  119. package/dist/src/planner/nodes/dml-executor-node.d.ts +0 -9
  120. package/dist/src/planner/nodes/dml-executor-node.d.ts.map +1 -1
  121. package/dist/src/planner/nodes/dml-executor-node.js.map +1 -1
  122. package/dist/src/planner/nodes/recursive-cte-node.d.ts +30 -1
  123. package/dist/src/planner/nodes/recursive-cte-node.d.ts.map +1 -1
  124. package/dist/src/planner/nodes/recursive-cte-node.js +30 -3
  125. package/dist/src/planner/nodes/recursive-cte-node.js.map +1 -1
  126. package/dist/src/planner/nodes/scalar.d.ts.map +1 -1
  127. package/dist/src/planner/nodes/scalar.js +26 -3
  128. package/dist/src/planner/nodes/scalar.js.map +1 -1
  129. package/dist/src/planner/optimizer.d.ts.map +1 -1
  130. package/dist/src/planner/optimizer.js +129 -8
  131. package/dist/src/planner/optimizer.js.map +1 -1
  132. package/dist/src/planner/rules/access/rule-select-access-path.d.ts.map +1 -1
  133. package/dist/src/planner/rules/access/rule-select-access-path.js +43 -18
  134. package/dist/src/planner/rules/access/rule-select-access-path.js.map +1 -1
  135. package/dist/src/planner/rules/cache/rule-cte-optimization.d.ts.map +1 -1
  136. package/dist/src/planner/rules/cache/rule-cte-optimization.js +8 -1
  137. package/dist/src/planner/rules/cache/rule-cte-optimization.js.map +1 -1
  138. package/dist/src/planner/rules/cache/rule-materialized-view-rewrite.d.ts.map +1 -1
  139. package/dist/src/planner/rules/cache/rule-materialized-view-rewrite.js +72 -54
  140. package/dist/src/planner/rules/cache/rule-materialized-view-rewrite.js.map +1 -1
  141. package/dist/src/planner/rules/cache/rule-mutating-subquery-cache.d.ts.map +1 -1
  142. package/dist/src/planner/rules/cache/rule-mutating-subquery-cache.js +6 -0
  143. package/dist/src/planner/rules/cache/rule-mutating-subquery-cache.js.map +1 -1
  144. package/dist/src/planner/rules/cache/rule-nested-loop-right-cache.d.ts +25 -0
  145. package/dist/src/planner/rules/cache/rule-nested-loop-right-cache.d.ts.map +1 -0
  146. package/dist/src/planner/rules/cache/rule-nested-loop-right-cache.js +176 -0
  147. package/dist/src/planner/rules/cache/rule-nested-loop-right-cache.js.map +1 -0
  148. package/dist/src/planner/rules/cache/rule-scalar-subquery-cache.d.ts +31 -0
  149. package/dist/src/planner/rules/cache/rule-scalar-subquery-cache.d.ts.map +1 -0
  150. package/dist/src/planner/rules/cache/rule-scalar-subquery-cache.js +68 -0
  151. package/dist/src/planner/rules/cache/rule-scalar-subquery-cache.js.map +1 -0
  152. package/dist/src/planner/rules/join/rule-fanout-lookup-join.d.ts.map +1 -1
  153. package/dist/src/planner/rules/join/rule-fanout-lookup-join.js +1 -54
  154. package/dist/src/planner/rules/join/rule-fanout-lookup-join.js.map +1 -1
  155. package/dist/src/planner/rules/predicate/rule-predicate-inference-equivalence.js +8 -1
  156. package/dist/src/planner/rules/predicate/rule-predicate-inference-equivalence.js.map +1 -1
  157. package/dist/src/planner/rules/subquery/rule-scalar-agg-decorrelation.d.ts +191 -0
  158. package/dist/src/planner/rules/subquery/rule-scalar-agg-decorrelation.d.ts.map +1 -0
  159. package/dist/src/planner/rules/subquery/rule-scalar-agg-decorrelation.js +627 -0
  160. package/dist/src/planner/rules/subquery/rule-scalar-agg-decorrelation.js.map +1 -0
  161. package/dist/src/planner/rules/subquery/rule-subquery-decorrelation.d.ts +10 -1
  162. package/dist/src/planner/rules/subquery/rule-subquery-decorrelation.d.ts.map +1 -1
  163. package/dist/src/planner/rules/subquery/rule-subquery-decorrelation.js +242 -51
  164. package/dist/src/planner/rules/subquery/rule-subquery-decorrelation.js.map +1 -1
  165. package/dist/src/runtime/cache/shared-cache.d.ts +7 -0
  166. package/dist/src/runtime/cache/shared-cache.d.ts.map +1 -1
  167. package/dist/src/runtime/cache/shared-cache.js +34 -1
  168. package/dist/src/runtime/cache/shared-cache.js.map +1 -1
  169. package/dist/src/runtime/deferred-constraint-queue.d.ts.map +1 -1
  170. package/dist/src/runtime/deferred-constraint-queue.js +10 -0
  171. package/dist/src/runtime/deferred-constraint-queue.js.map +1 -1
  172. package/dist/src/runtime/emit/aggregate-setup.d.ts +49 -0
  173. package/dist/src/runtime/emit/aggregate-setup.d.ts.map +1 -0
  174. package/dist/src/runtime/emit/aggregate-setup.js +99 -0
  175. package/dist/src/runtime/emit/aggregate-setup.js.map +1 -0
  176. package/dist/src/runtime/emit/aggregate.d.ts +2 -3
  177. package/dist/src/runtime/emit/aggregate.d.ts.map +1 -1
  178. package/dist/src/runtime/emit/aggregate.js +10 -84
  179. package/dist/src/runtime/emit/aggregate.js.map +1 -1
  180. package/dist/src/runtime/emit/alter-table.d.ts.map +1 -1
  181. package/dist/src/runtime/emit/alter-table.js +348 -165
  182. package/dist/src/runtime/emit/alter-table.js.map +1 -1
  183. package/dist/src/runtime/emit/asof-scan.d.ts.map +1 -1
  184. package/dist/src/runtime/emit/asof-scan.js +6 -0
  185. package/dist/src/runtime/emit/asof-scan.js.map +1 -1
  186. package/dist/src/runtime/emit/between.d.ts.map +1 -1
  187. package/dist/src/runtime/emit/between.js +32 -3
  188. package/dist/src/runtime/emit/between.js.map +1 -1
  189. package/dist/src/runtime/emit/binary.d.ts.map +1 -1
  190. package/dist/src/runtime/emit/binary.js +22 -2
  191. package/dist/src/runtime/emit/binary.js.map +1 -1
  192. package/dist/src/runtime/emit/bloom-join.d.ts.map +1 -1
  193. package/dist/src/runtime/emit/bloom-join.js +24 -3
  194. package/dist/src/runtime/emit/bloom-join.js.map +1 -1
  195. package/dist/src/runtime/emit/cache.d.ts +7 -3
  196. package/dist/src/runtime/emit/cache.d.ts.map +1 -1
  197. package/dist/src/runtime/emit/cache.js +23 -6
  198. package/dist/src/runtime/emit/cache.js.map +1 -1
  199. package/dist/src/runtime/emit/cast.d.ts.map +1 -1
  200. package/dist/src/runtime/emit/cast.js +10 -23
  201. package/dist/src/runtime/emit/cast.js.map +1 -1
  202. package/dist/src/runtime/emit/constraint-check.d.ts.map +1 -1
  203. package/dist/src/runtime/emit/constraint-check.js +41 -44
  204. package/dist/src/runtime/emit/constraint-check.js.map +1 -1
  205. package/dist/src/runtime/emit/create-view.d.ts.map +1 -1
  206. package/dist/src/runtime/emit/create-view.js +6 -0
  207. package/dist/src/runtime/emit/create-view.js.map +1 -1
  208. package/dist/src/runtime/emit/cte.d.ts.map +1 -1
  209. package/dist/src/runtime/emit/cte.js +43 -20
  210. package/dist/src/runtime/emit/cte.js.map +1 -1
  211. package/dist/src/runtime/emit/distinct.d.ts.map +1 -1
  212. package/dist/src/runtime/emit/distinct.js +6 -3
  213. package/dist/src/runtime/emit/distinct.js.map +1 -1
  214. package/dist/src/runtime/emit/dml-executor.d.ts.map +1 -1
  215. package/dist/src/runtime/emit/dml-executor.js +241 -115
  216. package/dist/src/runtime/emit/dml-executor.js.map +1 -1
  217. package/dist/src/runtime/emit/hash-aggregate.d.ts.map +1 -1
  218. package/dist/src/runtime/emit/hash-aggregate.js +16 -65
  219. package/dist/src/runtime/emit/hash-aggregate.js.map +1 -1
  220. package/dist/src/runtime/emit/insert.d.ts.map +1 -1
  221. package/dist/src/runtime/emit/insert.js +18 -7
  222. package/dist/src/runtime/emit/insert.js.map +1 -1
  223. package/dist/src/runtime/emit/join.js +5 -0
  224. package/dist/src/runtime/emit/join.js.map +1 -1
  225. package/dist/src/runtime/emit/materialized-view-helpers.d.ts +14 -1
  226. package/dist/src/runtime/emit/materialized-view-helpers.d.ts.map +1 -1
  227. package/dist/src/runtime/emit/materialized-view-helpers.js +38 -7
  228. package/dist/src/runtime/emit/materialized-view-helpers.js.map +1 -1
  229. package/dist/src/runtime/emit/materialized-view.d.ts.map +1 -1
  230. package/dist/src/runtime/emit/materialized-view.js +47 -6
  231. package/dist/src/runtime/emit/materialized-view.js.map +1 -1
  232. package/dist/src/runtime/emit/merge-join.d.ts.map +1 -1
  233. package/dist/src/runtime/emit/merge-join.js +18 -8
  234. package/dist/src/runtime/emit/merge-join.js.map +1 -1
  235. package/dist/src/runtime/emit/recursive-cte.d.ts.map +1 -1
  236. package/dist/src/runtime/emit/recursive-cte.js +59 -1
  237. package/dist/src/runtime/emit/recursive-cte.js.map +1 -1
  238. package/dist/src/runtime/emit/set-object-tags.d.ts +8 -0
  239. package/dist/src/runtime/emit/set-object-tags.d.ts.map +1 -1
  240. package/dist/src/runtime/emit/set-object-tags.js +8 -0
  241. package/dist/src/runtime/emit/set-object-tags.js.map +1 -1
  242. package/dist/src/runtime/emit/set-operation.d.ts.map +1 -1
  243. package/dist/src/runtime/emit/set-operation.js +7 -4
  244. package/dist/src/runtime/emit/set-operation.js.map +1 -1
  245. package/dist/src/runtime/emit/sort.d.ts.map +1 -1
  246. package/dist/src/runtime/emit/sort.js +5 -2
  247. package/dist/src/runtime/emit/sort.js.map +1 -1
  248. package/dist/src/runtime/emit/subquery.d.ts.map +1 -1
  249. package/dist/src/runtime/emit/subquery.js +113 -13
  250. package/dist/src/runtime/emit/subquery.js.map +1 -1
  251. package/dist/src/runtime/emit/temporal-arithmetic.d.ts +7 -0
  252. package/dist/src/runtime/emit/temporal-arithmetic.d.ts.map +1 -1
  253. package/dist/src/runtime/emit/temporal-arithmetic.js +15 -7
  254. package/dist/src/runtime/emit/temporal-arithmetic.js.map +1 -1
  255. package/dist/src/runtime/emit/update.d.ts.map +1 -1
  256. package/dist/src/runtime/emit/update.js +44 -3
  257. package/dist/src/runtime/emit/update.js.map +1 -1
  258. package/dist/src/runtime/emit/window.d.ts.map +1 -1
  259. package/dist/src/runtime/emit/window.js +72 -55
  260. package/dist/src/runtime/emit/window.js.map +1 -1
  261. package/dist/src/runtime/foreign-key-actions.d.ts +36 -1
  262. package/dist/src/runtime/foreign-key-actions.d.ts.map +1 -1
  263. package/dist/src/runtime/foreign-key-actions.js +238 -116
  264. package/dist/src/runtime/foreign-key-actions.js.map +1 -1
  265. package/dist/src/runtime/parallel-driver.d.ts +20 -1
  266. package/dist/src/runtime/parallel-driver.d.ts.map +1 -1
  267. package/dist/src/runtime/parallel-driver.js +23 -1
  268. package/dist/src/runtime/parallel-driver.js.map +1 -1
  269. package/dist/src/runtime/types.d.ts +54 -0
  270. package/dist/src/runtime/types.d.ts.map +1 -1
  271. package/dist/src/runtime/types.js.map +1 -1
  272. package/dist/src/schema/catalog-persistability.d.ts +58 -0
  273. package/dist/src/schema/catalog-persistability.d.ts.map +1 -0
  274. package/dist/src/schema/catalog-persistability.js +87 -0
  275. package/dist/src/schema/catalog-persistability.js.map +1 -0
  276. package/dist/src/schema/catalog.d.ts +17 -1
  277. package/dist/src/schema/catalog.d.ts.map +1 -1
  278. package/dist/src/schema/catalog.js +25 -3
  279. package/dist/src/schema/catalog.js.map +1 -1
  280. package/dist/src/schema/constraint-builder.d.ts +20 -22
  281. package/dist/src/schema/constraint-builder.d.ts.map +1 -1
  282. package/dist/src/schema/constraint-builder.js +43 -36
  283. package/dist/src/schema/constraint-builder.js.map +1 -1
  284. package/dist/src/schema/ddl-generator.d.ts +23 -0
  285. package/dist/src/schema/ddl-generator.d.ts.map +1 -1
  286. package/dist/src/schema/ddl-generator.js +27 -0
  287. package/dist/src/schema/ddl-generator.js.map +1 -1
  288. package/dist/src/schema/function.d.ts +109 -1
  289. package/dist/src/schema/function.d.ts.map +1 -1
  290. package/dist/src/schema/function.js.map +1 -1
  291. package/dist/src/schema/manager.d.ts +28 -0
  292. package/dist/src/schema/manager.d.ts.map +1 -1
  293. package/dist/src/schema/manager.js +82 -14
  294. package/dist/src/schema/manager.js.map +1 -1
  295. package/dist/src/schema/schema-differ.d.ts.map +1 -1
  296. package/dist/src/schema/schema-differ.js +51 -12
  297. package/dist/src/schema/schema-differ.js.map +1 -1
  298. package/dist/src/schema/unique-enforcement.d.ts +31 -0
  299. package/dist/src/schema/unique-enforcement.d.ts.map +1 -1
  300. package/dist/src/schema/unique-enforcement.js +37 -1
  301. package/dist/src/schema/unique-enforcement.js.map +1 -1
  302. package/dist/src/schema/window-function.d.ts +30 -10
  303. package/dist/src/schema/window-function.d.ts.map +1 -1
  304. package/dist/src/schema/window-function.js +20 -16
  305. package/dist/src/schema/window-function.js.map +1 -1
  306. package/dist/src/types/cast-semantics.d.ts +43 -0
  307. package/dist/src/types/cast-semantics.d.ts.map +1 -0
  308. package/dist/src/types/cast-semantics.js +59 -0
  309. package/dist/src/types/cast-semantics.js.map +1 -0
  310. package/dist/src/types/index.d.ts +1 -1
  311. package/dist/src/types/index.d.ts.map +1 -1
  312. package/dist/src/types/index.js +1 -1
  313. package/dist/src/types/index.js.map +1 -1
  314. package/dist/src/types/json-type.d.ts.map +1 -1
  315. package/dist/src/types/json-type.js +31 -10
  316. package/dist/src/types/json-type.js.map +1 -1
  317. package/dist/src/types/logical-type.d.ts +22 -0
  318. package/dist/src/types/logical-type.d.ts.map +1 -1
  319. package/dist/src/types/logical-type.js.map +1 -1
  320. package/dist/src/types/temporal-types.d.ts.map +1 -1
  321. package/dist/src/types/temporal-types.js +33 -11
  322. package/dist/src/types/temporal-types.js.map +1 -1
  323. package/dist/src/types/validation.d.ts +39 -1
  324. package/dist/src/types/validation.d.ts.map +1 -1
  325. package/dist/src/types/validation.js +60 -0
  326. package/dist/src/types/validation.js.map +1 -1
  327. package/dist/src/util/ast-spine-clone.d.ts +23 -0
  328. package/dist/src/util/ast-spine-clone.d.ts.map +1 -0
  329. package/dist/src/util/ast-spine-clone.js +41 -0
  330. package/dist/src/util/ast-spine-clone.js.map +1 -0
  331. package/dist/src/util/coercion.d.ts +13 -0
  332. package/dist/src/util/coercion.d.ts.map +1 -1
  333. package/dist/src/util/coercion.js +10 -1
  334. package/dist/src/util/coercion.js.map +1 -1
  335. package/dist/src/util/comparison.d.ts +89 -0
  336. package/dist/src/util/comparison.d.ts.map +1 -1
  337. package/dist/src/util/comparison.js +156 -27
  338. package/dist/src/util/comparison.js.map +1 -1
  339. package/dist/src/vtab/manifest.d.ts +7 -0
  340. package/dist/src/vtab/manifest.d.ts.map +1 -1
  341. package/dist/src/vtab/memory/connection.d.ts +14 -1
  342. package/dist/src/vtab/memory/connection.d.ts.map +1 -1
  343. package/dist/src/vtab/memory/connection.js +20 -2
  344. package/dist/src/vtab/memory/connection.js.map +1 -1
  345. package/dist/src/vtab/memory/layer/base.d.ts +6 -1
  346. package/dist/src/vtab/memory/layer/base.d.ts.map +1 -1
  347. package/dist/src/vtab/memory/layer/base.js +14 -5
  348. package/dist/src/vtab/memory/layer/base.js.map +1 -1
  349. package/dist/src/vtab/memory/layer/connection.d.ts +17 -0
  350. package/dist/src/vtab/memory/layer/connection.d.ts.map +1 -1
  351. package/dist/src/vtab/memory/layer/connection.js +26 -0
  352. package/dist/src/vtab/memory/layer/connection.js.map +1 -1
  353. package/dist/src/vtab/memory/layer/manager.d.ts +96 -13
  354. package/dist/src/vtab/memory/layer/manager.d.ts.map +1 -1
  355. package/dist/src/vtab/memory/layer/manager.js +595 -119
  356. package/dist/src/vtab/memory/layer/manager.js.map +1 -1
  357. package/dist/src/vtab/memory/layer/plan-filter.d.ts +41 -20
  358. package/dist/src/vtab/memory/layer/plan-filter.d.ts.map +1 -1
  359. package/dist/src/vtab/memory/layer/plan-filter.js +57 -27
  360. package/dist/src/vtab/memory/layer/plan-filter.js.map +1 -1
  361. package/dist/src/vtab/memory/layer/row-convert.d.ts +21 -0
  362. package/dist/src/vtab/memory/layer/row-convert.d.ts.map +1 -0
  363. package/dist/src/vtab/memory/layer/row-convert.js +30 -0
  364. package/dist/src/vtab/memory/layer/row-convert.js.map +1 -0
  365. package/dist/src/vtab/memory/layer/scan-layer.d.ts +6 -3
  366. package/dist/src/vtab/memory/layer/scan-layer.d.ts.map +1 -1
  367. package/dist/src/vtab/memory/layer/scan-layer.js +69 -36
  368. package/dist/src/vtab/memory/layer/scan-layer.js.map +1 -1
  369. package/dist/src/vtab/memory/layer/transaction.d.ts +127 -13
  370. package/dist/src/vtab/memory/layer/transaction.d.ts.map +1 -1
  371. package/dist/src/vtab/memory/layer/transaction.js +214 -65
  372. package/dist/src/vtab/memory/layer/transaction.js.map +1 -1
  373. package/dist/src/vtab/memory/module.d.ts.map +1 -1
  374. package/dist/src/vtab/memory/module.js +9 -2
  375. package/dist/src/vtab/memory/module.js.map +1 -1
  376. package/dist/src/vtab/memory/table.d.ts.map +1 -1
  377. package/dist/src/vtab/memory/table.js +3 -2
  378. package/dist/src/vtab/memory/table.js.map +1 -1
  379. package/dist/src/vtab/memory/types.d.ts +27 -1
  380. package/dist/src/vtab/memory/types.d.ts.map +1 -1
  381. package/dist/src/vtab/memory/types.js +16 -1
  382. package/dist/src/vtab/memory/types.js.map +1 -1
  383. package/dist/src/vtab/memory/utils/primary-key.d.ts +9 -0
  384. package/dist/src/vtab/memory/utils/primary-key.d.ts.map +1 -1
  385. package/dist/src/vtab/memory/utils/primary-key.js +11 -0
  386. package/dist/src/vtab/memory/utils/primary-key.js.map +1 -1
  387. package/dist/src/vtab/module.d.ts +63 -0
  388. package/dist/src/vtab/module.d.ts.map +1 -1
  389. package/dist/src/vtab/table.d.ts +24 -6
  390. package/dist/src/vtab/table.d.ts.map +1 -1
  391. package/dist/src/vtab/table.js.map +1 -1
  392. package/package.json +3 -3
  393. package/dist/src/planner/rules/cache/rule-in-subquery-cache.d.ts +0 -19
  394. package/dist/src/planner/rules/cache/rule-in-subquery-cache.d.ts.map +0 -1
  395. package/dist/src/planner/rules/cache/rule-in-subquery-cache.js +0 -53
  396. package/dist/src/planner/rules/cache/rule-in-subquery-cache.js.map +0 -1
@@ -1,13 +1,14 @@
1
- export declare const countStarFunc: import("../../schema/function.js").AggregateFunctionSchema;
2
- export declare const sumFunc: import("../../schema/function.js").AggregateFunctionSchema;
3
- export declare const avgFunc: import("../../schema/function.js").AggregateFunctionSchema;
4
- export declare const minFunc: import("../../schema/function.js").AggregateFunctionSchema;
5
- export declare const maxFunc: import("../../schema/function.js").AggregateFunctionSchema;
6
- export declare const countXFunc: import("../../schema/function.js").AggregateFunctionSchema;
7
- export declare const groupConcatFuncRev: import("../../schema/function.js").AggregateFunctionSchema;
8
- export declare const totalFunc: import("../../schema/function.js").AggregateFunctionSchema;
9
- export declare const varPopFunc: import("../../schema/function.js").AggregateFunctionSchema;
10
- export declare const varSampFunc: import("../../schema/function.js").AggregateFunctionSchema;
11
- export declare const stdDevPopFunc: import("../../schema/function.js").AggregateFunctionSchema;
12
- export declare const stdDevSampFunc: import("../../schema/function.js").AggregateFunctionSchema;
1
+ import type { AggregateFunctionSchema } from '../../schema/function.js';
2
+ export declare const countStarFunc: AggregateFunctionSchema;
3
+ export declare const sumFunc: AggregateFunctionSchema;
4
+ export declare const avgFunc: AggregateFunctionSchema;
5
+ export declare const minFunc: AggregateFunctionSchema;
6
+ export declare const maxFunc: AggregateFunctionSchema;
7
+ export declare const countXFunc: AggregateFunctionSchema;
8
+ export declare const groupConcatFuncRev: AggregateFunctionSchema;
9
+ export declare const totalFunc: AggregateFunctionSchema;
10
+ export declare const varPopFunc: AggregateFunctionSchema;
11
+ export declare const varSampFunc: AggregateFunctionSchema;
12
+ export declare const stdDevPopFunc: AggregateFunctionSchema;
13
+ export declare const stdDevSampFunc: AggregateFunctionSchema;
13
14
  //# sourceMappingURL=aggregate.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"aggregate.d.ts","sourceRoot":"","sources":["../../../../src/func/builtins/aggregate.ts"],"names":[],"mappings":"AAUA,eAAO,MAAM,aAAa,4DAIzB,CAAC;AAGF,eAAO,MAAM,OAAO,4DA0CnB,CAAC;AAIF,eAAO,MAAM,OAAO,4DAuBnB,CAAC;AAGF,eAAO,MAAM,OAAO,4DAqBnB,CAAC;AAGF,eAAO,MAAM,OAAO,4DAqBnB,CAAC;AAIF,eAAO,MAAM,UAAU,4DAOtB,CAAC;AAOF,eAAO,MAAM,kBAAkB,4DAmB9B,CAAC;AAGF,eAAO,MAAM,SAAS,4DAmBrB,CAAC;AA+BF,eAAO,MAAM,UAAU,4DAStB,CAAC;AAGF,eAAO,MAAM,WAAW,4DASvB,CAAC;AAGF,eAAO,MAAM,aAAa,4DASzB,CAAC;AAGF,eAAO,MAAM,cAAc,4DAQ1B,CAAC"}
1
+ {"version":3,"file":"aggregate.d.ts","sourceRoot":"","sources":["../../../../src/func/builtins/aggregate.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAwC,uBAAuB,EAAoB,MAAM,0BAA0B,CAAC;AAuBhI,eAAO,MAAM,aAAa,yBAczB,CAAC;AASF,eAAO,MAAM,OAAO,yBA+DnB,CAAC;AAIF,eAAO,MAAM,OAAO,yBA4CnB,CAAC;AAwEF,eAAO,MAAM,OAAO,yBAAgC,CAAC;AACrD,eAAO,MAAM,OAAO,yBAAgC,CAAC;AAIrD,eAAO,MAAM,UAAU,yBAiBtB,CAAC;AAOF,eAAO,MAAM,kBAAkB,yBAmB9B,CAAC;AAOF,eAAO,MAAM,SAAS,yBAmBrB,CAAC;AA+BF,eAAO,MAAM,UAAU,yBAStB,CAAC;AAGF,eAAO,MAAM,WAAW,yBASvB,CAAC;AAGF,eAAO,MAAM,aAAa,yBASzB,CAAC;AAGF,eAAO,MAAM,cAAc,yBAQ1B,CAAC"}
@@ -1,13 +1,65 @@
1
1
  import { createLogger } from '../../common/logger.js';
2
2
  import { createAggregateFunction } from '../registration.js';
3
- import { compareSqlValuesFast, BINARY_COLLATION } from '../../util/comparison.js';
3
+ import { compareSqlValuesFast, createSemanticValueComparator, BINARY_COLLATION } from '../../util/comparison.js';
4
4
  import { INTEGER_TYPE, REAL_TYPE, TEXT_TYPE } from '../../types/builtin-types.js';
5
5
  const log = createLogger('func:builtins:aggregate');
6
6
  const warnLog = log.extend('warn');
7
+ /** Add two accumulated numeric values, promoting to BigInt when either side is
8
+ * BigInt or the numeric sum would leave the safe-integer range — the same
9
+ * promotion the SUM step applies per value. */
10
+ function addWithPromotion(a, b) {
11
+ if (typeof a === 'bigint' || typeof b === 'bigint') {
12
+ return BigInt(a) + BigInt(b);
13
+ }
14
+ const sum = a + b;
15
+ if (sum > Number.MAX_SAFE_INTEGER || sum < Number.MIN_SAFE_INTEGER) {
16
+ return BigInt(a) + BigInt(b);
17
+ }
18
+ return sum;
19
+ }
7
20
  // --- count(*) ---
8
- export const countStarFunc = createAggregateFunction({ name: 'count', numArgs: 0, initialValue: 0, returnType: { typeClass: 'scalar', logicalType: INTEGER_TYPE, nullable: false, isReadOnly: true } }, (acc) => acc + 1, (acc) => acc);
9
- // --- SUM(X) ---
10
- export const sumFunc = createAggregateFunction({ name: 'sum', numArgs: 1, initialValue: null, returnType: { typeClass: 'scalar', logicalType: REAL_TYPE, nullable: true, isReadOnly: true } }, (acc, value) => {
21
+ export const countStarFunc = createAggregateFunction({
22
+ name: 'count', numArgs: 0, initialValue: 0,
23
+ returnType: { typeClass: 'scalar', logicalType: INTEGER_TYPE, nullable: false, isReadOnly: true },
24
+ algebra: {
25
+ merge: (a, b) => a + b,
26
+ negate: (a) => -a,
27
+ // finalize is identity — the stored count IS the accumulator
28
+ decode: (stored) => Number(stored),
29
+ decodeExact: true,
30
+ },
31
+ }, (acc) => acc + 1, (acc) => acc);
32
+ export const sumFunc = createAggregateFunction({
33
+ name: 'sum', numArgs: 1, initialValue: null,
34
+ returnType: { typeClass: 'scalar', logicalType: REAL_TYPE, nullable: true, isReadOnly: true },
35
+ // NOTE: declared unconditionally; exactness under retraction is a value-domain
36
+ // property (floats drift) the function cannot see, so the write-side delta arm
37
+ // gates on the argument's static type before exploiting negate.
38
+ algebra: {
39
+ merge: (a, b) => {
40
+ if (a === null)
41
+ return b;
42
+ if (b === null)
43
+ return a;
44
+ return { sum: addWithPromotion(a.sum, b.sum), count: a.count + b.count };
45
+ },
46
+ negate: (a) => a === null ? null : { sum: -a.sum, count: -a.count },
47
+ // Stored NULL (empty group) decodes to the empty accumulator, never a
48
+ // wrapped NULL. A stored value decodes with an ABSORBING count witness
49
+ // (Infinity): the stored sum cannot recover the true non-NULL contribution
50
+ // count, so the witness must (a) be non-zero (the group is non-empty) and
51
+ // (b) STAY non-zero under any finite retraction — a finite witness (e.g. 1)
52
+ // would collapse to 0 on the first retraction and finalize a spurious NULL
53
+ // while contributions remain. This is deliberately NOT `decodeExact`: the
54
+ // delta arm may retract through this decode only when it can prove the true
55
+ // count stays positive (NOT NULL argument + multiplicity witness), and
56
+ // otherwise re-derives the group from live source state.
57
+ // NOTE: type-trusts its input — a non-numeric stored value poisons the
58
+ // accumulator. Sound while the only caller is the delta arm reading back a
59
+ // value this same aggregate wrote.
60
+ decode: (stored) => stored === null ? null : { sum: stored, count: Number.POSITIVE_INFINITY },
61
+ },
62
+ }, (acc, value) => {
11
63
  if (value === null)
12
64
  return acc; // Ignore NULLs
13
65
  const currentSum = acc?.sum ?? 0; // Initialize sum to 0 if null
@@ -31,28 +83,42 @@ export const sumFunc = createAggregateFunction({ name: 'sum', numArgs: 1, initia
31
83
  else {
32
84
  return acc; // Ignore non-numeric types like Uint8Array
33
85
  }
34
- // Promote to BigInt if either is BigInt or if result might overflow Number
35
- if (typeof currentSum === 'bigint' || typeof numValue === 'bigint') {
36
- return { sum: BigInt(currentSum) + BigInt(numValue) };
37
- }
38
- else {
39
- // Check potential overflow before adding as numbers
40
- const potentialSum = currentSum + numValue;
41
- if (potentialSum > Number.MAX_SAFE_INTEGER || potentialSum < Number.MIN_SAFE_INTEGER) {
42
- return { sum: BigInt(currentSum) + BigInt(numValue) };
43
- }
44
- return { sum: potentialSum };
45
- }
86
+ return { sum: addWithPromotion(currentSum, numValue), count: (acc?.count ?? 0) + 1 };
46
87
  }
47
88
  catch (e) {
48
89
  warnLog("Error during SUM step coercion: %O", e);
49
90
  return acc; // Ignore value if coercion fails
50
91
  }
51
92
  }, (acc) => {
52
- // SQLite returns NULL for SUM of empty set, INTEGER or REAL result
53
- return acc?.sum ?? null;
93
+ // SQLite returns NULL for SUM of empty set, INTEGER or REAL result.
94
+ // count === 0 (all contributions retracted) is observationally the empty group.
95
+ if (acc === null || acc.count === 0)
96
+ return null;
97
+ return acc.sum;
54
98
  });
55
- export const avgFunc = createAggregateFunction({ name: 'avg', numArgs: 1, initialValue: { sum: 0, count: 0 }, returnType: { typeClass: 'scalar', logicalType: REAL_TYPE, nullable: true, isReadOnly: true } }, (acc, value) => {
99
+ export const avgFunc = createAggregateFunction({
100
+ name: 'avg', numArgs: 1, initialValue: { sum: 0, count: 0 },
101
+ returnType: { typeClass: 'scalar', logicalType: REAL_TYPE, nullable: true, isReadOnly: true },
102
+ // No decode — the stored quotient forgets the count and cannot reconstruct
103
+ // an accumulator. Maintained/rolled up via its decomposition instead.
104
+ algebra: {
105
+ merge: (a, b) => ({ sum: a.sum + b.sum, count: a.count + b.count }),
106
+ negate: (a) => ({ sum: -a.sum, count: -a.count }),
107
+ decompose: {
108
+ partials: [
109
+ { func: 'sum', arg: 'same-arg' },
110
+ { func: 'count', arg: 'same-arg' },
111
+ ],
112
+ // Real division, matching native avg; empty group (count 0 / NULL) ⇒ NULL.
113
+ combine: (partialValues) => {
114
+ const [sumV, countV] = partialValues;
115
+ if (countV === null || countV === undefined || Number(countV) === 0)
116
+ return null;
117
+ return Number(sumV) / Number(countV);
118
+ },
119
+ },
120
+ },
121
+ }, (acc, value) => {
56
122
  if (value === null)
57
123
  return acc; // Ignore NULLs
58
124
  let numValue = value;
@@ -75,51 +141,65 @@ export const avgFunc = createAggregateFunction({ name: 'avg', numArgs: 1, initia
75
141
  return null; // NULL for empty set
76
142
  return acc.sum / acc.count;
77
143
  });
78
- // --- MIN(X) ---
79
- export const minFunc = createAggregateFunction({
80
- name: 'min',
81
- numArgs: 1,
82
- initialValue: null,
83
- // Type inference: return the same type as the input argument
84
- inferReturnType: (argTypes) => ({
85
- typeClass: 'scalar',
86
- logicalType: argTypes[0],
87
- nullable: true, // MIN can return NULL if all values are NULL or no rows
88
- isReadOnly: true
89
- })
90
- }, (acc, value) => {
91
- if (value === null)
92
- return acc; // Ignore NULLs
93
- if (acc === null)
94
- return { min: value }; // First non-null value
95
- return compareSqlValuesFast(value, acc.min, BINARY_COLLATION) < 0 ? { min: value } : acc;
96
- }, (acc) => {
97
- return acc?.min ?? null;
98
- });
99
- // --- MAX(X) ---
100
- export const maxFunc = createAggregateFunction({
101
- name: 'max',
102
- numArgs: 1,
103
- initialValue: null,
104
- // Type inference: return the same type as the input argument
105
- inferReturnType: (argTypes) => ({
106
- typeClass: 'scalar',
107
- logicalType: argTypes[0],
108
- nullable: true, // MAX can return NULL if all values are NULL or no rows
109
- isReadOnly: true
110
- })
111
- }, (acc, value) => {
112
- if (value === null)
113
- return acc; // Ignore NULLs
114
- if (acc === null)
115
- return { max: value }; // First non-null value
116
- return compareSqlValuesFast(value, acc.max, BINARY_COLLATION) > 0 ? { max: value } : acc;
117
- }, (acc) => {
118
- return acc?.max ?? null;
119
- });
144
+ function extremumParts(direction, compare) {
145
+ const wins = direction === 'min'
146
+ ? (candidate, incumbent) => compare(candidate, incumbent) < 0
147
+ : (candidate, incumbent) => compare(candidate, incumbent) > 0;
148
+ return {
149
+ stepFunction: (acc, value) => {
150
+ if (value === null)
151
+ return acc; // Ignore NULLs
152
+ if (acc === null)
153
+ return { v: value }; // First non-null value
154
+ return wins(value, acc.v) ? { v: value } : acc;
155
+ },
156
+ // Tighten-only: merge but no negate (a retracted extremum cannot be undone locally).
157
+ algebra: {
158
+ merge: (a, b) => {
159
+ if (a === null)
160
+ return b;
161
+ if (b === null)
162
+ return a;
163
+ return wins(b.v, a.v) ? b : a;
164
+ },
165
+ // Stored NULL (empty group) decodes to the empty accumulator.
166
+ decode: (stored) => stored === null ? null : { v: stored },
167
+ },
168
+ finalizeFunction: (acc) => acc?.v ?? null,
169
+ };
170
+ }
171
+ function createExtremumFunction(direction) {
172
+ const defaults = extremumParts(direction, (a, b) => compareSqlValuesFast(a, b, BINARY_COLLATION));
173
+ return createAggregateFunction({
174
+ name: direction,
175
+ numArgs: 1,
176
+ initialValue: null,
177
+ // Type inference: return the same type as the input argument
178
+ inferReturnType: (argTypes) => ({
179
+ typeClass: 'scalar',
180
+ logicalType: argTypes[0],
181
+ nullable: true, // NULL if all values are NULL or no rows
182
+ isReadOnly: true
183
+ }),
184
+ algebra: defaults.algebra,
185
+ bindArgs: (args) => extremumParts(direction, createSemanticValueComparator(args[0]?.logicalType, args[0]?.collation)),
186
+ }, defaults.stepFunction, defaults.finalizeFunction);
187
+ }
188
+ export const minFunc = createExtremumFunction('min');
189
+ export const maxFunc = createExtremumFunction('max');
120
190
  // --- COUNT(X) ---
121
191
  // Counts non-NULL values of X
122
- export const countXFunc = createAggregateFunction({ name: 'count', numArgs: 1, initialValue: 0, returnType: { typeClass: 'scalar', logicalType: INTEGER_TYPE, nullable: false, isReadOnly: true } }, (acc, value) => {
192
+ export const countXFunc = createAggregateFunction({
193
+ name: 'count', numArgs: 1, initialValue: 0,
194
+ returnType: { typeClass: 'scalar', logicalType: INTEGER_TYPE, nullable: false, isReadOnly: true },
195
+ algebra: {
196
+ merge: (a, b) => a + b,
197
+ negate: (a) => -a,
198
+ // finalize is identity — the stored count IS the accumulator
199
+ decode: (stored) => Number(stored),
200
+ decodeExact: true,
201
+ },
202
+ }, (acc, value) => {
123
203
  if (value === null)
124
204
  return acc; // Do not count NULLs
125
205
  return acc + 1;
@@ -139,6 +219,10 @@ export const groupConcatFuncRev = createAggregateFunction({ name: 'group_concat'
139
219
  return acc.values.join(acc.separator);
140
220
  });
141
221
  // --- TOTAL(X) ---
222
+ // NOTE: deliberately declares no algebra — a float running sum drifts under
223
+ // retraction and would diverge byte-exactly from a fresh live re-sum, which the
224
+ // maintenance-equivalence oracle compares byte-exactly. Residual-only is correct,
225
+ // just not incremental. Same for group_concat / var_* / stddev_* below.
142
226
  export const totalFunc = createAggregateFunction({ name: 'total', numArgs: 1, initialValue: 0.0, returnType: { typeClass: 'scalar', logicalType: REAL_TYPE, nullable: false, isReadOnly: true } }, (acc, value) => {
143
227
  let numValue = 0.0;
144
228
  if (value !== null) {
@@ -1 +1 @@
1
- {"version":3,"file":"aggregate.js","sourceRoot":"","sources":["../../../../src/func/builtins/aggregate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"aggregate.js","sourceRoot":"","sources":["../../../../src/func/builtins/aggregate.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"builtin-window-functions.d.ts","sourceRoot":"","sources":["../../../../src/func/builtins/builtin-window-functions.ts"],"names":[],"mappings":"AAuBA,wBAAgB,8BAA8B,IAAI,IAAI,CAmQrD"}
1
+ {"version":3,"file":"builtin-window-functions.d.ts","sourceRoot":"","sources":["../../../../src/func/builtins/builtin-window-functions.ts"],"names":[],"mappings":"AAmFA,wBAAgB,8BAA8B,IAAI,IAAI,CA6NrD"}
@@ -1,5 +1,6 @@
1
1
  import { registerWindowFunction } from '../../schema/window-function.js';
2
2
  import { INTEGER_TYPE, REAL_TYPE } from '../../types/builtin-types.js';
3
+ import { BINARY_COLLATION, compareSqlValuesFast, createSemanticValueComparator } from '../../util/comparison.js';
3
4
  /**
4
5
  * Shared `inferReturnType` for pass-through window functions (MIN, MAX,
5
6
  * FIRST_VALUE, LAST_VALUE, LAG, LEAD): the result follows arg[0]'s logical
@@ -14,6 +15,59 @@ const passThroughArgType = (argTypes) => ({
14
15
  nullable: true,
15
16
  isReadOnly: true
16
17
  });
18
+ /**
19
+ * Window MIN/MAX step+final derived from ONE comparator — the window twin of
20
+ * `extremumParts` in func/builtins/aggregate.ts. A raw JS `<` would disagree with
21
+ * plain sorting for mixed storage classes (`5 < 'abc'` and `'abc' < 5` are both
22
+ * false, so whichever arrived first wins), and would ignore semantic ordering
23
+ * (TIMESPAN elapsed time, JSON structure) and collation entirely.
24
+ *
25
+ * Ties under a non-BINARY comparator ('a' vs 'A' under NOCASE, 'PT1H' vs 'PT60M'
26
+ * for TIMESPAN) compare equal, so which raw value survives is unspecified — the
27
+ * same latitude the MIN/MAX aggregate, DISTINCT, and GROUP BY take.
28
+ */
29
+ function extremumWindowParts(direction, compare) {
30
+ const wins = direction === 'min'
31
+ ? (candidate, incumbent) => compare(candidate, incumbent) < 0
32
+ : (candidate, incumbent) => compare(candidate, incumbent) > 0;
33
+ return {
34
+ step: (state, value) => {
35
+ if (value === null)
36
+ return state ?? null; // Ignore NULLs
37
+ if (state === null || state === undefined)
38
+ return value; // First non-null value
39
+ return wins(value, state) ? value : state;
40
+ },
41
+ final: (state) => state ?? null,
42
+ };
43
+ }
44
+ /**
45
+ * Register window MIN or MAX. The registered default ranks by storage class under
46
+ * BINARY — correct for untyped/ANY arguments and for any caller that never binds —
47
+ * and `bindArgs` re-derives both hooks over the call site's semantic comparator, so
48
+ * `min(x) over (…)` agrees with the `min(x)` aggregate and with `order by x limit 1`.
49
+ */
50
+ function registerExtremumWindowFunction(direction) {
51
+ const defaults = extremumWindowParts(direction, (a, b) => compareSqlValuesFast(a, b, BINARY_COLLATION));
52
+ registerWindowFunction({
53
+ name: direction.toUpperCase(),
54
+ argCount: 1,
55
+ returnType: {
56
+ typeClass: 'scalar',
57
+ logicalType: REAL_TYPE,
58
+ nullable: true,
59
+ isReadOnly: true
60
+ },
61
+ // MIN/MAX pass the argument value through unchanged, so the result follows
62
+ // the argument's logical type (mirrors the aggregate minFunc/maxFunc).
63
+ inferReturnType: passThroughArgType,
64
+ requiresOrderBy: false,
65
+ kind: 'aggregate',
66
+ step: defaults.step,
67
+ final: defaults.final,
68
+ bindArgs: (args) => extremumWindowParts(direction, createSemanticValueComparator(args[0]?.logicalType, args[0]?.collation)),
69
+ });
70
+ }
17
71
  // Built-in window function schemas
18
72
  export function registerBuiltinWindowFunctions() {
19
73
  // Ranking functions
@@ -172,6 +226,13 @@ export function registerBuiltinWindowFunctions() {
172
226
  },
173
227
  final: (state) => state || 0
174
228
  });
229
+ // NOTE: SUM/AVG coerce with `Number(value)` and take no type context — the same
230
+ // "no comparison/arithmetic context in the step" shape the MIN/MAX bindArgs hook
231
+ // below removes. Harmless today: over a logical type with no numeric meaning
232
+ // (TIMESPAN, JSON) both these and the plain aggregates yield NULL, so they agree.
233
+ // If a future logical type gains a meaningful `Number()` coercion, or the plain
234
+ // aggregates start summing one, give SUM/AVG a `bindArgs` too — and mirror it in
235
+ // `slidingStepNum`/`slidingScanSum` (runtime/emit/window.ts), which coerce again.
175
236
  registerWindowFunction({
176
237
  name: 'SUM',
177
238
  argCount: 1,
@@ -216,53 +277,7 @@ export function registerBuiltinWindowFunctions() {
216
277
  },
217
278
  final: (state) => state ? state.sum / state.count : null
218
279
  });
219
- registerWindowFunction({
220
- name: 'MIN',
221
- argCount: 1,
222
- returnType: {
223
- typeClass: 'scalar',
224
- logicalType: REAL_TYPE,
225
- nullable: true,
226
- isReadOnly: true
227
- },
228
- // MIN passes the argument value through unchanged, so the result follows
229
- // the argument's logical type (mirrors the aggregate minFunc).
230
- inferReturnType: passThroughArgType,
231
- requiresOrderBy: false,
232
- kind: 'aggregate',
233
- step: (state, value) => {
234
- if (value === null)
235
- return state;
236
- if (state === null || state === undefined) {
237
- return value;
238
- }
239
- return value < state ? value : state;
240
- },
241
- final: (state) => state
242
- });
243
- registerWindowFunction({
244
- name: 'MAX',
245
- argCount: 1,
246
- returnType: {
247
- typeClass: 'scalar',
248
- logicalType: REAL_TYPE,
249
- nullable: true,
250
- isReadOnly: true
251
- },
252
- // MAX passes the argument value through unchanged, so the result follows
253
- // the argument's logical type (mirrors the aggregate maxFunc).
254
- inferReturnType: passThroughArgType,
255
- requiresOrderBy: false,
256
- kind: 'aggregate',
257
- step: (state, value) => {
258
- if (value === null)
259
- return state;
260
- if (state === null || state === undefined) {
261
- return value;
262
- }
263
- return value > state ? value : state;
264
- },
265
- final: (state) => state
266
- });
280
+ registerExtremumWindowFunction('min');
281
+ registerExtremumWindowFunction('max');
267
282
  }
268
283
  //# sourceMappingURL=builtin-window-functions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"builtin-window-functions.js","sourceRoot":"","sources":["../../../../src/func/builtins/builtin-window-functions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"builtin-window-functions.js","sourceRoot":"","sources":["../../../../src/func/builtins/builtin-window-functions.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { AggregateFinalizer, AggregateReducer, IntegratedTableValuedFunc, ScalarFunc, TableValuedFunc, ScalarFunctionSchema, TableValuedFunctionSchema, AggregateFunctionSchema, TVFAdvertisement } from '../schema/function.js';
1
+ import type { AggregateFinalizer, AggregateReducer, IntegratedTableValuedFunc, ScalarFunc, TableValuedFunc, ScalarFunctionSchema, TableValuedFunctionSchema, AggregateFunctionSchema, AggregateAlgebra, AggregateArgBinding, TVFAdvertisement } from '../schema/function.js';
2
2
  import { FunctionFlags } from '../common/constants.js';
3
3
  import type { ScalarType, RelationType } from '../common/datatype.js';
4
4
  import type { LogicalType } from '../types/logical-type.js';
@@ -74,6 +74,8 @@ interface TableValuedFuncOptions {
74
74
  relationalAdvertisement?: TVFAdvertisement;
75
75
  }
76
76
  export type AggValue = any;
77
+ /** Clone an aggregate initial value so each group gets an independent accumulator. */
78
+ export declare function cloneInitialValue(initialValue: unknown): AggValue;
77
79
  /**
78
80
  * Configuration options for aggregate functions
79
81
  */
@@ -91,6 +93,12 @@ interface AggregateFuncOptions {
91
93
  replicable?: boolean;
92
94
  /** Initial accumulator value */
93
95
  initialValue?: AggValue;
96
+ /** Optional algebraic structure over the accumulator (merge/negate/decode/decompose).
97
+ * See {@link import('../schema/function.js').AggregateAlgebra} for the author contract. */
98
+ algebra?: AggregateAlgebra;
99
+ /** Optional per-call-site specialization to the arguments' comparison context.
100
+ * See {@link import('../schema/function.js').AggregateFunctionSchema.bindArgs}. */
101
+ bindArgs?: AggregateFunctionSchema['bindArgs'];
94
102
  /** Return type information */
95
103
  returnType?: ScalarType;
96
104
  /**
@@ -150,5 +158,15 @@ export declare function createIntegratedTableValuedFunction(options: TableValued
150
158
  * @returns A FunctionSchema ready for registration
151
159
  */
152
160
  export declare function createAggregateFunction(options: AggregateFuncOptions, stepFunc: AggregateReducer, finalizeFunc: AggregateFinalizer): AggregateFunctionSchema;
161
+ /**
162
+ * Specialize an aggregate schema to one call site's argument comparison context
163
+ * (declared logical types + resolved collations). A schema with no `bindArgs`
164
+ * hook — or a hook that declines — is returned unchanged. Idempotent: the bound
165
+ * schema keeps `bindArgs`, and rebinding with the same arguments yields an
166
+ * equivalent schema, so no call site has to track whether it already bound.
167
+ *
168
+ * Call once per call site at emit / plan-build time, never per row.
169
+ */
170
+ export declare function bindAggregateSchema(schema: AggregateFunctionSchema, args: readonly AggregateArgBinding[]): AggregateFunctionSchema;
153
171
  export {};
154
172
  //# sourceMappingURL=registration.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"registration.d.ts","sourceRoot":"","sources":["../../../src/func/registration.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"registration.d.ts","sourceRoot":"","sources":["../../../src/func/registration.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,20 @@
1
1
  import { FunctionFlags } from '../common/constants.js';
2
2
  import { REAL_TYPE } from '../types/builtin-types.js';
3
+ /** Clone an aggregate initial value so each group gets an independent accumulator. */
4
+ export function cloneInitialValue(initialValue) {
5
+ if (typeof initialValue === 'function') {
6
+ return initialValue();
7
+ }
8
+ else if (Array.isArray(initialValue)) {
9
+ return [...initialValue];
10
+ }
11
+ else if (initialValue && typeof initialValue === 'object') {
12
+ return { ...initialValue };
13
+ }
14
+ else {
15
+ return initialValue;
16
+ }
17
+ }
3
18
  /**
4
19
  * Creates a function schema for a scalar SQL function.
5
20
  * This is the primary way to register scalar functions in Quereus.
@@ -116,9 +131,35 @@ export function createAggregateFunction(options, stepFunc, finalizeFunc) {
116
131
  stepFunction: stepFunc,
117
132
  finalizeFunction: finalizeFunc,
118
133
  initialValue: options.initialValue,
134
+ algebra: options.algebra,
135
+ bindArgs: options.bindArgs,
119
136
  replicable: options.replicable,
120
137
  inferReturnType: options.inferReturnType,
121
138
  validateArgTypes: options.validateArgTypes
122
139
  };
123
140
  }
141
+ /**
142
+ * Specialize an aggregate schema to one call site's argument comparison context
143
+ * (declared logical types + resolved collations). A schema with no `bindArgs`
144
+ * hook — or a hook that declines — is returned unchanged. Idempotent: the bound
145
+ * schema keeps `bindArgs`, and rebinding with the same arguments yields an
146
+ * equivalent schema, so no call site has to track whether it already bound.
147
+ *
148
+ * Call once per call site at emit / plan-build time, never per row.
149
+ */
150
+ export function bindAggregateSchema(schema, args) {
151
+ const bound = schema.bindArgs?.(args);
152
+ if (!bound)
153
+ return schema;
154
+ // Merge field-by-field rather than spreading `bound`: an explicitly-`undefined`
155
+ // field must read as "keep the declared default", matching the documented
156
+ // contract. A spread would strip it instead — and a stripped `algebra` silently
157
+ // disables delta maintenance and rollup, whose gates read field presence.
158
+ return {
159
+ ...schema,
160
+ stepFunction: bound.stepFunction ?? schema.stepFunction,
161
+ finalizeFunction: bound.finalizeFunction ?? schema.finalizeFunction,
162
+ algebra: bound.algebra ?? schema.algebra,
163
+ };
164
+ }
124
165
  //# sourceMappingURL=registration.js.map