@quereus/quereus 0.7.3 → 0.7.5

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 (568) hide show
  1. package/dist/src/schema/manager.d.ts.map +1 -1
  2. package/dist/src/schema/manager.js +19 -18
  3. package/package.json +3 -3
  4. package/dist/src/common/constants.js.map +0 -1
  5. package/dist/src/common/datatype.js.map +0 -1
  6. package/dist/src/common/errors.js.map +0 -1
  7. package/dist/src/common/json-types.js.map +0 -1
  8. package/dist/src/common/logger.js.map +0 -1
  9. package/dist/src/common/type-inference.js.map +0 -1
  10. package/dist/src/common/types.js.map +0 -1
  11. package/dist/src/core/database-options.js.map +0 -1
  12. package/dist/src/core/database.js.map +0 -1
  13. package/dist/src/core/param.js.map +0 -1
  14. package/dist/src/core/statement.js.map +0 -1
  15. package/dist/src/func/builtins/aggregate.js.map +0 -1
  16. package/dist/src/func/builtins/builtin-window-functions.js.map +0 -1
  17. package/dist/src/func/builtins/conversion.js.map +0 -1
  18. package/dist/src/func/builtins/datetime.js.map +0 -1
  19. package/dist/src/func/builtins/explain.js.map +0 -1
  20. package/dist/src/func/builtins/generation.js.map +0 -1
  21. package/dist/src/func/builtins/index.js.map +0 -1
  22. package/dist/src/func/builtins/json-helpers.js.map +0 -1
  23. package/dist/src/func/builtins/json-tvf.js.map +0 -1
  24. package/dist/src/func/builtins/json.js.map +0 -1
  25. package/dist/src/func/builtins/scalar.js.map +0 -1
  26. package/dist/src/func/builtins/schema.js.map +0 -1
  27. package/dist/src/func/builtins/string.js.map +0 -1
  28. package/dist/src/func/builtins/timespan.js.map +0 -1
  29. package/dist/src/func/context.js.map +0 -1
  30. package/dist/src/func/registration.js.map +0 -1
  31. package/dist/src/index.js.map +0 -1
  32. package/dist/src/parser/ast.js.map +0 -1
  33. package/dist/src/parser/index.js.map +0 -1
  34. package/dist/src/parser/lexer.js.map +0 -1
  35. package/dist/src/parser/parser.js.map +0 -1
  36. package/dist/src/parser/utils.js.map +0 -1
  37. package/dist/src/parser/visitor.js.map +0 -1
  38. package/dist/src/planner/analysis/binding-collector.js.map +0 -1
  39. package/dist/src/planner/analysis/const-evaluator.js.map +0 -1
  40. package/dist/src/planner/analysis/const-pass.js.map +0 -1
  41. package/dist/src/planner/analysis/constraint-extractor.js.map +0 -1
  42. package/dist/src/planner/analysis/predicate-normalizer.js.map +0 -1
  43. package/dist/src/planner/building/alter-table.js.map +0 -1
  44. package/dist/src/planner/building/block.js.map +0 -1
  45. package/dist/src/planner/building/constraint-builder.js.map +0 -1
  46. package/dist/src/planner/building/create-assertion.js.map +0 -1
  47. package/dist/src/planner/building/create-view.js.map +0 -1
  48. package/dist/src/planner/building/ddl.js.map +0 -1
  49. package/dist/src/planner/building/declare-schema.js.map +0 -1
  50. package/dist/src/planner/building/delete.js.map +0 -1
  51. package/dist/src/planner/building/drop-assertion.js.map +0 -1
  52. package/dist/src/planner/building/drop-table.js.map +0 -1
  53. package/dist/src/planner/building/drop-view.js.map +0 -1
  54. package/dist/src/planner/building/expression.js.map +0 -1
  55. package/dist/src/planner/building/function-call.js.map +0 -1
  56. package/dist/src/planner/building/insert.js.map +0 -1
  57. package/dist/src/planner/building/pragma.js.map +0 -1
  58. package/dist/src/planner/building/schema-resolution.js.map +0 -1
  59. package/dist/src/planner/building/select-aggregates.js.map +0 -1
  60. package/dist/src/planner/building/select-compound.js.map +0 -1
  61. package/dist/src/planner/building/select-context.js.map +0 -1
  62. package/dist/src/planner/building/select-modifiers.js.map +0 -1
  63. package/dist/src/planner/building/select-projections.js.map +0 -1
  64. package/dist/src/planner/building/select-window.js.map +0 -1
  65. package/dist/src/planner/building/select.js.map +0 -1
  66. package/dist/src/planner/building/table-function.js.map +0 -1
  67. package/dist/src/planner/building/table.js.map +0 -1
  68. package/dist/src/planner/building/transaction.js.map +0 -1
  69. package/dist/src/planner/building/update.js.map +0 -1
  70. package/dist/src/planner/building/with.js.map +0 -1
  71. package/dist/src/planner/cache/correlation-detector.js.map +0 -1
  72. package/dist/src/planner/cache/materialization-advisory.js.map +0 -1
  73. package/dist/src/planner/cache/reference-graph.js.map +0 -1
  74. package/dist/src/planner/cost/index.js.map +0 -1
  75. package/dist/src/planner/debug/logger-utils.js.map +0 -1
  76. package/dist/src/planner/debug.js.map +0 -1
  77. package/dist/src/planner/framework/characteristics.js.map +0 -1
  78. package/dist/src/planner/framework/context.js.map +0 -1
  79. package/dist/src/planner/framework/pass.js.map +0 -1
  80. package/dist/src/planner/framework/physical-utils.js.map +0 -1
  81. package/dist/src/planner/framework/registry.js.map +0 -1
  82. package/dist/src/planner/framework/trace.js.map +0 -1
  83. package/dist/src/planner/nodes/add-constraint-node.js.map +0 -1
  84. package/dist/src/planner/nodes/aggregate-function.js.map +0 -1
  85. package/dist/src/planner/nodes/aggregate-node.js.map +0 -1
  86. package/dist/src/planner/nodes/array-index-node.js.map +0 -1
  87. package/dist/src/planner/nodes/block.js.map +0 -1
  88. package/dist/src/planner/nodes/cache-node.js.map +0 -1
  89. package/dist/src/planner/nodes/constraint-check-node.js.map +0 -1
  90. package/dist/src/planner/nodes/create-assertion-node.js.map +0 -1
  91. package/dist/src/planner/nodes/create-index-node.js.map +0 -1
  92. package/dist/src/planner/nodes/create-table-node.js.map +0 -1
  93. package/dist/src/planner/nodes/create-view-node.js.map +0 -1
  94. package/dist/src/planner/nodes/cte-node.js.map +0 -1
  95. package/dist/src/planner/nodes/cte-reference-node.js.map +0 -1
  96. package/dist/src/planner/nodes/declarative-schema.js.map +0 -1
  97. package/dist/src/planner/nodes/delete-node.js.map +0 -1
  98. package/dist/src/planner/nodes/distinct-node.js.map +0 -1
  99. package/dist/src/planner/nodes/dml-executor-node.js.map +0 -1
  100. package/dist/src/planner/nodes/drop-assertion-node.js.map +0 -1
  101. package/dist/src/planner/nodes/drop-table-node.js.map +0 -1
  102. package/dist/src/planner/nodes/drop-view-node.js.map +0 -1
  103. package/dist/src/planner/nodes/filter.js.map +0 -1
  104. package/dist/src/planner/nodes/function.js.map +0 -1
  105. package/dist/src/planner/nodes/insert-node.js.map +0 -1
  106. package/dist/src/planner/nodes/internal-recursive-cte-ref-node.js.map +0 -1
  107. package/dist/src/planner/nodes/join-node.js.map +0 -1
  108. package/dist/src/planner/nodes/limit-offset.js.map +0 -1
  109. package/dist/src/planner/nodes/plan-node-type.js.map +0 -1
  110. package/dist/src/planner/nodes/plan-node.js.map +0 -1
  111. package/dist/src/planner/nodes/pragma.js.map +0 -1
  112. package/dist/src/planner/nodes/project-node.js.map +0 -1
  113. package/dist/src/planner/nodes/recursive-cte-node.js.map +0 -1
  114. package/dist/src/planner/nodes/reference.js.map +0 -1
  115. package/dist/src/planner/nodes/remote-query-node.js.map +0 -1
  116. package/dist/src/planner/nodes/retrieve-node.js.map +0 -1
  117. package/dist/src/planner/nodes/returning-node.js.map +0 -1
  118. package/dist/src/planner/nodes/scalar.js.map +0 -1
  119. package/dist/src/planner/nodes/sequencing-node.js.map +0 -1
  120. package/dist/src/planner/nodes/set-operation-node.js.map +0 -1
  121. package/dist/src/planner/nodes/single-row.js.map +0 -1
  122. package/dist/src/planner/nodes/sink-node.js.map +0 -1
  123. package/dist/src/planner/nodes/sort.js.map +0 -1
  124. package/dist/src/planner/nodes/stream-aggregate.js.map +0 -1
  125. package/dist/src/planner/nodes/subquery.js.map +0 -1
  126. package/dist/src/planner/nodes/table-access-nodes.js.map +0 -1
  127. package/dist/src/planner/nodes/table-function-call.js.map +0 -1
  128. package/dist/src/planner/nodes/transaction-node.js.map +0 -1
  129. package/dist/src/planner/nodes/update-node.js.map +0 -1
  130. package/dist/src/planner/nodes/values-node.js.map +0 -1
  131. package/dist/src/planner/nodes/view-reference-node.js.map +0 -1
  132. package/dist/src/planner/nodes/window-function.js.map +0 -1
  133. package/dist/src/planner/nodes/window-node.js.map +0 -1
  134. package/dist/src/planner/optimizer-tuning.js.map +0 -1
  135. package/dist/src/planner/optimizer.js.map +0 -1
  136. package/dist/src/planner/planning-context.js.map +0 -1
  137. package/dist/src/planner/resolve.js.map +0 -1
  138. package/dist/src/planner/rules/access/rule-select-access-path.js.map +0 -1
  139. package/dist/src/planner/rules/aggregate/rule-aggregate-streaming.js.map +0 -1
  140. package/dist/src/planner/rules/cache/rule-cte-optimization.js.map +0 -1
  141. package/dist/src/planner/rules/cache/rule-materialization-advisory.js.map +0 -1
  142. package/dist/src/planner/rules/cache/rule-mutating-subquery-cache.js.map +0 -1
  143. package/dist/src/planner/rules/join/rule-join-greedy-commute.js.map +0 -1
  144. package/dist/src/planner/rules/join/rule-join-key-inference.js.map +0 -1
  145. package/dist/src/planner/rules/join/rule-quickpick-enumeration.js.map +0 -1
  146. package/dist/src/planner/rules/predicate/rule-predicate-pushdown.js.map +0 -1
  147. package/dist/src/planner/rules/retrieve/rule-grow-retrieve.js.map +0 -1
  148. package/dist/src/planner/scopes/aliased.js.map +0 -1
  149. package/dist/src/planner/scopes/base.js.map +0 -1
  150. package/dist/src/planner/scopes/empty.js.map +0 -1
  151. package/dist/src/planner/scopes/global.js.map +0 -1
  152. package/dist/src/planner/scopes/multi.js.map +0 -1
  153. package/dist/src/planner/scopes/param.js.map +0 -1
  154. package/dist/src/planner/scopes/registered.js.map +0 -1
  155. package/dist/src/planner/scopes/scope.js.map +0 -1
  156. package/dist/src/planner/stats/basic-estimates.js.map +0 -1
  157. package/dist/src/planner/stats/index.js.map +0 -1
  158. package/dist/src/planner/type-utils.js.map +0 -1
  159. package/dist/src/planner/util/key-utils.js.map +0 -1
  160. package/dist/src/planner/validation/determinism-validator.js.map +0 -1
  161. package/dist/src/planner/validation/plan-validator.js.map +0 -1
  162. package/dist/src/runtime/async-util.js.map +0 -1
  163. package/dist/src/runtime/cache/shared-cache.js.map +0 -1
  164. package/dist/src/runtime/context-helpers.js.map +0 -1
  165. package/dist/src/runtime/deferred-constraint-queue.js.map +0 -1
  166. package/dist/src/runtime/emission-context.js.map +0 -1
  167. package/dist/src/runtime/emit/add-constraint.js.map +0 -1
  168. package/dist/src/runtime/emit/aggregate.js.map +0 -1
  169. package/dist/src/runtime/emit/array-index.js.map +0 -1
  170. package/dist/src/runtime/emit/between.js.map +0 -1
  171. package/dist/src/runtime/emit/binary.js.map +0 -1
  172. package/dist/src/runtime/emit/block.js.map +0 -1
  173. package/dist/src/runtime/emit/cache.js.map +0 -1
  174. package/dist/src/runtime/emit/case.js.map +0 -1
  175. package/dist/src/runtime/emit/cast.js.map +0 -1
  176. package/dist/src/runtime/emit/collate.js.map +0 -1
  177. package/dist/src/runtime/emit/column-reference.js.map +0 -1
  178. package/dist/src/runtime/emit/constraint-check.js.map +0 -1
  179. package/dist/src/runtime/emit/create-assertion.js.map +0 -1
  180. package/dist/src/runtime/emit/create-index.js.map +0 -1
  181. package/dist/src/runtime/emit/create-table.js.map +0 -1
  182. package/dist/src/runtime/emit/create-view.js.map +0 -1
  183. package/dist/src/runtime/emit/cte-reference.js.map +0 -1
  184. package/dist/src/runtime/emit/cte.js.map +0 -1
  185. package/dist/src/runtime/emit/delete.js.map +0 -1
  186. package/dist/src/runtime/emit/distinct.js.map +0 -1
  187. package/dist/src/runtime/emit/dml-executor.js.map +0 -1
  188. package/dist/src/runtime/emit/drop-assertion.js.map +0 -1
  189. package/dist/src/runtime/emit/drop-table.js.map +0 -1
  190. package/dist/src/runtime/emit/drop-view.js.map +0 -1
  191. package/dist/src/runtime/emit/filter.js.map +0 -1
  192. package/dist/src/runtime/emit/insert.js.map +0 -1
  193. package/dist/src/runtime/emit/internal-recursive-cte-ref.js.map +0 -1
  194. package/dist/src/runtime/emit/join.js.map +0 -1
  195. package/dist/src/runtime/emit/limit-offset.js.map +0 -1
  196. package/dist/src/runtime/emit/literal.js.map +0 -1
  197. package/dist/src/runtime/emit/parameter.js.map +0 -1
  198. package/dist/src/runtime/emit/pragma.js.map +0 -1
  199. package/dist/src/runtime/emit/project.js.map +0 -1
  200. package/dist/src/runtime/emit/recursive-cte.js.map +0 -1
  201. package/dist/src/runtime/emit/remote-query.js.map +0 -1
  202. package/dist/src/runtime/emit/retrieve.js.map +0 -1
  203. package/dist/src/runtime/emit/returning.js.map +0 -1
  204. package/dist/src/runtime/emit/scalar-function.js.map +0 -1
  205. package/dist/src/runtime/emit/scan.js.map +0 -1
  206. package/dist/src/runtime/emit/schema-declarative.js.map +0 -1
  207. package/dist/src/runtime/emit/sequencing.js.map +0 -1
  208. package/dist/src/runtime/emit/set-operation.js.map +0 -1
  209. package/dist/src/runtime/emit/sink.js.map +0 -1
  210. package/dist/src/runtime/emit/sort.js.map +0 -1
  211. package/dist/src/runtime/emit/subquery.js.map +0 -1
  212. package/dist/src/runtime/emit/table-valued-function.js.map +0 -1
  213. package/dist/src/runtime/emit/temporal-arithmetic.js.map +0 -1
  214. package/dist/src/runtime/emit/transaction.js.map +0 -1
  215. package/dist/src/runtime/emit/unary.js.map +0 -1
  216. package/dist/src/runtime/emit/update.js.map +0 -1
  217. package/dist/src/runtime/emit/values.js.map +0 -1
  218. package/dist/src/runtime/emit/window-function.js.map +0 -1
  219. package/dist/src/runtime/emit/window.js.map +0 -1
  220. package/dist/src/runtime/emitters.js.map +0 -1
  221. package/dist/src/runtime/register.js.map +0 -1
  222. package/dist/src/runtime/scheduler.js.map +0 -1
  223. package/dist/src/runtime/types.js.map +0 -1
  224. package/dist/src/runtime/utils.js.map +0 -1
  225. package/dist/src/schema/assertion.js.map +0 -1
  226. package/dist/src/schema/catalog.js.map +0 -1
  227. package/dist/src/schema/change-events.js.map +0 -1
  228. package/dist/src/schema/column.js.map +0 -1
  229. package/dist/src/schema/declared-schema-manager.js.map +0 -1
  230. package/dist/src/schema/function.js.map +0 -1
  231. package/dist/src/schema/manager.js.map +0 -1
  232. package/dist/src/schema/schema-differ.js.map +0 -1
  233. package/dist/src/schema/schema-hasher.js.map +0 -1
  234. package/dist/src/schema/schema.js.map +0 -1
  235. package/dist/src/schema/table.js.map +0 -1
  236. package/dist/src/schema/view.js.map +0 -1
  237. package/dist/src/schema/window-function.js.map +0 -1
  238. package/dist/src/types/builtin-types.js.map +0 -1
  239. package/dist/src/types/index.js.map +0 -1
  240. package/dist/src/types/json-type.js.map +0 -1
  241. package/dist/src/types/logical-type.js.map +0 -1
  242. package/dist/src/types/plugin-interface.js.map +0 -1
  243. package/dist/src/types/registry.js.map +0 -1
  244. package/dist/src/types/temporal-types.js.map +0 -1
  245. package/dist/src/types/validation.js.map +0 -1
  246. package/dist/src/util/affinity.js.map +0 -1
  247. package/dist/src/util/ast-stringify.js.map +0 -1
  248. package/dist/src/util/cached.js.map +0 -1
  249. package/dist/src/util/coercion.js.map +0 -1
  250. package/dist/src/util/comparison.js.map +0 -1
  251. package/dist/src/util/environment.js.map +0 -1
  252. package/dist/src/util/hash.js.map +0 -1
  253. package/dist/src/util/latches.js.map +0 -1
  254. package/dist/src/util/mutation-statement.js.map +0 -1
  255. package/dist/src/util/patterns.js.map +0 -1
  256. package/dist/src/util/plan-formatter.js.map +0 -1
  257. package/dist/src/util/plugin-helper.js.map +0 -1
  258. package/dist/src/util/row-descriptor.js.map +0 -1
  259. package/dist/src/util/serialization.js.map +0 -1
  260. package/dist/src/util/sql-literal.js.map +0 -1
  261. package/dist/src/util/working-table-iterable.js.map +0 -1
  262. package/dist/src/vtab/best-access-plan.js.map +0 -1
  263. package/dist/src/vtab/connection.js.map +0 -1
  264. package/dist/src/vtab/filter-info.js.map +0 -1
  265. package/dist/src/vtab/index-info.js.map +0 -1
  266. package/dist/src/vtab/manifest.js.map +0 -1
  267. package/dist/src/vtab/memory/connection.js.map +0 -1
  268. package/dist/src/vtab/memory/index.js.map +0 -1
  269. package/dist/src/vtab/memory/layer/base-cursor.js.map +0 -1
  270. package/dist/src/vtab/memory/layer/base.js.map +0 -1
  271. package/dist/src/vtab/memory/layer/connection.js.map +0 -1
  272. package/dist/src/vtab/memory/layer/interface.js.map +0 -1
  273. package/dist/src/vtab/memory/layer/manager.js.map +0 -1
  274. package/dist/src/vtab/memory/layer/safe-iterate.js.map +0 -1
  275. package/dist/src/vtab/memory/layer/scan-plan.js.map +0 -1
  276. package/dist/src/vtab/memory/layer/transaction-cursor.js.map +0 -1
  277. package/dist/src/vtab/memory/layer/transaction.js.map +0 -1
  278. package/dist/src/vtab/memory/module.js.map +0 -1
  279. package/dist/src/vtab/memory/table.js.map +0 -1
  280. package/dist/src/vtab/memory/types.js.map +0 -1
  281. package/dist/src/vtab/memory/utils/logging.js.map +0 -1
  282. package/dist/src/vtab/memory/utils/primary-key.js.map +0 -1
  283. package/dist/src/vtab/module.js.map +0 -1
  284. package/dist/src/vtab/table.js.map +0 -1
  285. package/src/common/constants.ts +0 -60
  286. package/src/common/datatype.ts +0 -85
  287. package/src/common/errors.ts +0 -189
  288. package/src/common/json-types.ts +0 -16
  289. package/src/common/logger.ts +0 -97
  290. package/src/common/type-inference.ts +0 -39
  291. package/src/common/types.ts +0 -151
  292. package/src/core/database-options.ts +0 -258
  293. package/src/core/database.ts +0 -1461
  294. package/src/core/param.ts +0 -56
  295. package/src/core/statement.ts +0 -528
  296. package/src/func/builtins/aggregate.ts +0 -269
  297. package/src/func/builtins/builtin-window-functions.ts +0 -166
  298. package/src/func/builtins/conversion.ts +0 -226
  299. package/src/func/builtins/datetime.ts +0 -500
  300. package/src/func/builtins/explain.ts +0 -779
  301. package/src/func/builtins/generation.ts +0 -43
  302. package/src/func/builtins/index.ts +0 -167
  303. package/src/func/builtins/json-helpers.ts +0 -237
  304. package/src/func/builtins/json-tvf.ts +0 -224
  305. package/src/func/builtins/json.ts +0 -588
  306. package/src/func/builtins/scalar.ts +0 -423
  307. package/src/func/builtins/schema.ts +0 -213
  308. package/src/func/builtins/string.ts +0 -306
  309. package/src/func/builtins/timespan.ts +0 -179
  310. package/src/func/context.ts +0 -258
  311. package/src/func/registration.ts +0 -201
  312. package/src/index.ts +0 -172
  313. package/src/parser/ast.ts +0 -581
  314. package/src/parser/index.ts +0 -65
  315. package/src/parser/lexer.ts +0 -806
  316. package/src/parser/parser.ts +0 -3352
  317. package/src/parser/utils.ts +0 -10
  318. package/src/parser/visitor.ts +0 -188
  319. package/src/planner/analysis/README.md +0 -93
  320. package/src/planner/analysis/binding-collector.ts +0 -83
  321. package/src/planner/analysis/const-evaluator.ts +0 -63
  322. package/src/planner/analysis/const-pass.ts +0 -282
  323. package/src/planner/analysis/constraint-extractor.ts +0 -764
  324. package/src/planner/analysis/predicate-normalizer.ts +0 -237
  325. package/src/planner/building/alter-table.ts +0 -49
  326. package/src/planner/building/block.ts +0 -93
  327. package/src/planner/building/constraint-builder.ts +0 -178
  328. package/src/planner/building/create-assertion.ts +0 -7
  329. package/src/planner/building/create-view.ts +0 -29
  330. package/src/planner/building/ddl.ts +0 -24
  331. package/src/planner/building/declare-schema.ts +0 -22
  332. package/src/planner/building/delete.ts +0 -218
  333. package/src/planner/building/drop-assertion.ts +0 -11
  334. package/src/planner/building/drop-table.ts +0 -13
  335. package/src/planner/building/drop-view.ts +0 -19
  336. package/src/planner/building/expression.ts +0 -205
  337. package/src/planner/building/function-call.ts +0 -129
  338. package/src/planner/building/insert.ts +0 -435
  339. package/src/planner/building/pragma.ts +0 -34
  340. package/src/planner/building/schema-resolution.ts +0 -176
  341. package/src/planner/building/select-aggregates.ts +0 -318
  342. package/src/planner/building/select-compound.ts +0 -119
  343. package/src/planner/building/select-context.ts +0 -85
  344. package/src/planner/building/select-modifiers.ts +0 -236
  345. package/src/planner/building/select-projections.ts +0 -177
  346. package/src/planner/building/select-window.ts +0 -259
  347. package/src/planner/building/select.ts +0 -567
  348. package/src/planner/building/table-function.ts +0 -49
  349. package/src/planner/building/table.ts +0 -40
  350. package/src/planner/building/transaction.ts +0 -23
  351. package/src/planner/building/update.ts +0 -331
  352. package/src/planner/building/with.ts +0 -180
  353. package/src/planner/cache/correlation-detector.ts +0 -83
  354. package/src/planner/cache/materialization-advisory.ts +0 -265
  355. package/src/planner/cache/reference-graph.ts +0 -196
  356. package/src/planner/cost/index.ts +0 -169
  357. package/src/planner/debug/logger-utils.ts +0 -68
  358. package/src/planner/debug.ts +0 -480
  359. package/src/planner/framework/README.md +0 -132
  360. package/src/planner/framework/characteristics.ts +0 -503
  361. package/src/planner/framework/context.ts +0 -239
  362. package/src/planner/framework/pass.ts +0 -354
  363. package/src/planner/framework/physical-utils.ts +0 -210
  364. package/src/planner/framework/registry.ts +0 -261
  365. package/src/planner/framework/trace.ts +0 -259
  366. package/src/planner/nodes/add-constraint-node.ts +0 -62
  367. package/src/planner/nodes/aggregate-function.ts +0 -155
  368. package/src/planner/nodes/aggregate-node.ts +0 -267
  369. package/src/planner/nodes/array-index-node.ts +0 -50
  370. package/src/planner/nodes/block.ts +0 -80
  371. package/src/planner/nodes/cache-node.ts +0 -103
  372. package/src/planner/nodes/constraint-check-node.ts +0 -138
  373. package/src/planner/nodes/create-assertion-node.ts +0 -51
  374. package/src/planner/nodes/create-index-node.ts +0 -41
  375. package/src/planner/nodes/create-table-node.ts +0 -35
  376. package/src/planner/nodes/create-view-node.ts +0 -44
  377. package/src/planner/nodes/cte-node.ts +0 -168
  378. package/src/planner/nodes/cte-reference-node.ts +0 -125
  379. package/src/planner/nodes/declarative-schema.ts +0 -221
  380. package/src/planner/nodes/delete-node.ts +0 -102
  381. package/src/planner/nodes/distinct-node.ts +0 -107
  382. package/src/planner/nodes/dml-executor-node.ts +0 -104
  383. package/src/planner/nodes/drop-assertion-node.ts +0 -50
  384. package/src/planner/nodes/drop-table-node.ts +0 -36
  385. package/src/planner/nodes/drop-view-node.ts +0 -37
  386. package/src/planner/nodes/filter.ts +0 -144
  387. package/src/planner/nodes/function.ts +0 -98
  388. package/src/planner/nodes/insert-node.ts +0 -126
  389. package/src/planner/nodes/internal-recursive-cte-ref-node.ts +0 -61
  390. package/src/planner/nodes/join-node.ts +0 -336
  391. package/src/planner/nodes/limit-offset.ts +0 -144
  392. package/src/planner/nodes/plan-node-type.ts +0 -95
  393. package/src/planner/nodes/plan-node.ts +0 -503
  394. package/src/planner/nodes/pragma.ts +0 -98
  395. package/src/planner/nodes/project-node.ts +0 -337
  396. package/src/planner/nodes/recursive-cte-node.ts +0 -158
  397. package/src/planner/nodes/reference.ts +0 -334
  398. package/src/planner/nodes/remote-query-node.ts +0 -73
  399. package/src/planner/nodes/retrieve-node.ts +0 -86
  400. package/src/planner/nodes/returning-node.ts +0 -269
  401. package/src/planner/nodes/scalar.ts +0 -772
  402. package/src/planner/nodes/sequencing-node.ts +0 -113
  403. package/src/planner/nodes/set-operation-node.ts +0 -87
  404. package/src/planner/nodes/single-row.ts +0 -85
  405. package/src/planner/nodes/sink-node.ts +0 -61
  406. package/src/planner/nodes/sort.ts +0 -166
  407. package/src/planner/nodes/stream-aggregate.ts +0 -293
  408. package/src/planner/nodes/subquery.ts +0 -268
  409. package/src/planner/nodes/table-access-nodes.ts +0 -323
  410. package/src/planner/nodes/table-function-call.ts +0 -134
  411. package/src/planner/nodes/transaction-node.ts +0 -55
  412. package/src/planner/nodes/update-node.ts +0 -138
  413. package/src/planner/nodes/values-node.ts +0 -244
  414. package/src/planner/nodes/view-reference-node.ts +0 -97
  415. package/src/planner/nodes/window-function.ts +0 -73
  416. package/src/planner/nodes/window-node.ts +0 -199
  417. package/src/planner/optimizer-tuning.ts +0 -105
  418. package/src/planner/optimizer.ts +0 -332
  419. package/src/planner/planning-context.ts +0 -190
  420. package/src/planner/resolve.ts +0 -101
  421. package/src/planner/rules/README.md +0 -96
  422. package/src/planner/rules/access/rule-select-access-path.ts +0 -399
  423. package/src/planner/rules/aggregate/rule-aggregate-streaming.ts +0 -162
  424. package/src/planner/rules/cache/rule-cte-optimization.ts +0 -79
  425. package/src/planner/rules/cache/rule-materialization-advisory.ts +0 -77
  426. package/src/planner/rules/cache/rule-mutating-subquery-cache.ts +0 -104
  427. package/src/planner/rules/join/rule-join-greedy-commute.ts +0 -48
  428. package/src/planner/rules/join/rule-join-key-inference.ts +0 -35
  429. package/src/planner/rules/join/rule-quickpick-enumeration.ts +0 -267
  430. package/src/planner/rules/predicate/rule-predicate-pushdown.ts +0 -144
  431. package/src/planner/rules/retrieve/rule-grow-retrieve.ts +0 -337
  432. package/src/planner/scopes/aliased.ts +0 -50
  433. package/src/planner/scopes/base.ts +0 -10
  434. package/src/planner/scopes/empty.ts +0 -12
  435. package/src/planner/scopes/global.ts +0 -73
  436. package/src/planner/scopes/multi.ts +0 -40
  437. package/src/planner/scopes/param.ts +0 -95
  438. package/src/planner/scopes/registered.ts +0 -67
  439. package/src/planner/scopes/scope.ts +0 -16
  440. package/src/planner/stats/basic-estimates.ts +0 -107
  441. package/src/planner/stats/index.ts +0 -158
  442. package/src/planner/type-utils.ts +0 -87
  443. package/src/planner/util/key-utils.ts +0 -46
  444. package/src/planner/validation/determinism-validator.ts +0 -104
  445. package/src/planner/validation/plan-validator.ts +0 -335
  446. package/src/runtime/async-util.ts +0 -283
  447. package/src/runtime/cache/shared-cache.ts +0 -169
  448. package/src/runtime/context-helpers.ts +0 -191
  449. package/src/runtime/deferred-constraint-queue.ts +0 -196
  450. package/src/runtime/emission-context.ts +0 -319
  451. package/src/runtime/emit/add-constraint.ts +0 -78
  452. package/src/runtime/emit/aggregate.ts +0 -581
  453. package/src/runtime/emit/array-index.ts +0 -25
  454. package/src/runtime/emit/between.ts +0 -51
  455. package/src/runtime/emit/binary.ts +0 -357
  456. package/src/runtime/emit/block.ts +0 -23
  457. package/src/runtime/emit/cache.ts +0 -64
  458. package/src/runtime/emit/case.ts +0 -87
  459. package/src/runtime/emit/cast.ts +0 -151
  460. package/src/runtime/emit/collate.ts +0 -9
  461. package/src/runtime/emit/column-reference.ts +0 -17
  462. package/src/runtime/emit/constraint-check.ts +0 -290
  463. package/src/runtime/emit/create-assertion.ts +0 -82
  464. package/src/runtime/emit/create-index.ts +0 -15
  465. package/src/runtime/emit/create-table.ts +0 -15
  466. package/src/runtime/emit/create-view.ts +0 -52
  467. package/src/runtime/emit/cte-reference.ts +0 -38
  468. package/src/runtime/emit/cte.ts +0 -39
  469. package/src/runtime/emit/delete.ts +0 -24
  470. package/src/runtime/emit/distinct.ts +0 -40
  471. package/src/runtime/emit/dml-executor.ts +0 -198
  472. package/src/runtime/emit/drop-assertion.ts +0 -45
  473. package/src/runtime/emit/drop-table.ts +0 -27
  474. package/src/runtime/emit/drop-view.ts +0 -49
  475. package/src/runtime/emit/filter.ts +0 -30
  476. package/src/runtime/emit/insert.ts +0 -42
  477. package/src/runtime/emit/internal-recursive-cte-ref.ts +0 -37
  478. package/src/runtime/emit/join.ts +0 -148
  479. package/src/runtime/emit/limit-offset.ts +0 -73
  480. package/src/runtime/emit/literal.ts +0 -17
  481. package/src/runtime/emit/parameter.ts +0 -59
  482. package/src/runtime/emit/pragma.ts +0 -56
  483. package/src/runtime/emit/project.ts +0 -46
  484. package/src/runtime/emit/recursive-cte.ts +0 -111
  485. package/src/runtime/emit/remote-query.ts +0 -47
  486. package/src/runtime/emit/retrieve.ts +0 -15
  487. package/src/runtime/emit/returning.ts +0 -41
  488. package/src/runtime/emit/scalar-function.ts +0 -69
  489. package/src/runtime/emit/scan.ts +0 -106
  490. package/src/runtime/emit/schema-declarative.ts +0 -215
  491. package/src/runtime/emit/sequencing.ts +0 -24
  492. package/src/runtime/emit/set-operation.ts +0 -141
  493. package/src/runtime/emit/sink.ts +0 -27
  494. package/src/runtime/emit/sort.ts +0 -75
  495. package/src/runtime/emit/subquery.ts +0 -203
  496. package/src/runtime/emit/table-valued-function.ts +0 -106
  497. package/src/runtime/emit/temporal-arithmetic.ts +0 -302
  498. package/src/runtime/emit/transaction.ts +0 -205
  499. package/src/runtime/emit/unary.ts +0 -101
  500. package/src/runtime/emit/update.ts +0 -66
  501. package/src/runtime/emit/values.ts +0 -66
  502. package/src/runtime/emit/window-function.ts +0 -42
  503. package/src/runtime/emit/window.ts +0 -458
  504. package/src/runtime/emitters.ts +0 -183
  505. package/src/runtime/register.ts +0 -150
  506. package/src/runtime/scheduler.ts +0 -488
  507. package/src/runtime/types.ts +0 -242
  508. package/src/runtime/utils.ts +0 -177
  509. package/src/schema/assertion.ts +0 -21
  510. package/src/schema/catalog.ts +0 -269
  511. package/src/schema/change-events.ts +0 -80
  512. package/src/schema/column.ts +0 -51
  513. package/src/schema/declared-schema-manager.ts +0 -82
  514. package/src/schema/function.ts +0 -188
  515. package/src/schema/manager.ts +0 -1034
  516. package/src/schema/schema-differ.ts +0 -214
  517. package/src/schema/schema-hasher.ts +0 -26
  518. package/src/schema/schema.ts +0 -222
  519. package/src/schema/table.ts +0 -409
  520. package/src/schema/view.ts +0 -19
  521. package/src/schema/window-function.ts +0 -56
  522. package/src/types/builtin-types.ts +0 -350
  523. package/src/types/index.ts +0 -17
  524. package/src/types/json-type.ts +0 -152
  525. package/src/types/logical-type.ts +0 -91
  526. package/src/types/plugin-interface.ts +0 -10
  527. package/src/types/registry.ts +0 -204
  528. package/src/types/temporal-types.ts +0 -290
  529. package/src/types/validation.ts +0 -120
  530. package/src/util/affinity.ts +0 -151
  531. package/src/util/ast-stringify.ts +0 -887
  532. package/src/util/cached.ts +0 -25
  533. package/src/util/coercion.ts +0 -113
  534. package/src/util/comparison.ts +0 -510
  535. package/src/util/environment.ts +0 -52
  536. package/src/util/hash.ts +0 -90
  537. package/src/util/latches.ts +0 -47
  538. package/src/util/mutation-statement.ts +0 -135
  539. package/src/util/patterns.ts +0 -56
  540. package/src/util/plan-formatter.ts +0 -48
  541. package/src/util/plugin-helper.ts +0 -110
  542. package/src/util/row-descriptor.ts +0 -105
  543. package/src/util/serialization.ts +0 -47
  544. package/src/util/sql-literal.ts +0 -22
  545. package/src/util/working-table-iterable.ts +0 -38
  546. package/src/vtab/best-access-plan.ts +0 -244
  547. package/src/vtab/connection.ts +0 -36
  548. package/src/vtab/filter-info.ts +0 -23
  549. package/src/vtab/index-info.ts +0 -84
  550. package/src/vtab/manifest.ts +0 -86
  551. package/src/vtab/memory/connection.ts +0 -73
  552. package/src/vtab/memory/index.ts +0 -191
  553. package/src/vtab/memory/layer/base-cursor.ts +0 -124
  554. package/src/vtab/memory/layer/base.ts +0 -275
  555. package/src/vtab/memory/layer/connection.ts +0 -203
  556. package/src/vtab/memory/layer/interface.ts +0 -47
  557. package/src/vtab/memory/layer/manager.ts +0 -909
  558. package/src/vtab/memory/layer/safe-iterate.ts +0 -49
  559. package/src/vtab/memory/layer/scan-plan.ts +0 -84
  560. package/src/vtab/memory/layer/transaction-cursor.ts +0 -162
  561. package/src/vtab/memory/layer/transaction.ts +0 -229
  562. package/src/vtab/memory/module.ts +0 -667
  563. package/src/vtab/memory/table.ts +0 -251
  564. package/src/vtab/memory/types.ts +0 -23
  565. package/src/vtab/memory/utils/logging.ts +0 -36
  566. package/src/vtab/memory/utils/primary-key.ts +0 -163
  567. package/src/vtab/module.ts +0 -162
  568. package/src/vtab/table.ts +0 -177
@@ -1,269 +0,0 @@
1
- import { createLogger } from '../../common/logger.js';
2
- import type { SqlValue } from '../../common/types.js';
3
- import { createAggregateFunction } from '../registration.js';
4
- import { compareSqlValuesFast, BINARY_COLLATION } from '../../util/comparison.js';
5
-
6
- const log = createLogger('func:builtins:aggregate');
7
- const warnLog = log.extend('warn');
8
-
9
- // --- count(*) ---
10
- export const countStarFunc = createAggregateFunction(
11
- { name: 'count', numArgs: 0, initialValue: 0 },
12
- (acc: number): number => acc + 1,
13
- (acc: number): number => acc
14
- );
15
-
16
- // --- SUM(X) ---
17
- export const sumFunc = createAggregateFunction(
18
- { name: 'sum', numArgs: 1, initialValue: null },
19
- (acc: { sum: number | bigint } | null, value: SqlValue): { sum: number | bigint } | null => {
20
- if (value === null) return acc; // Ignore NULLs
21
- const currentSum = acc?.sum ?? 0; // Initialize sum to 0 if null
22
- let numValue: number | bigint;
23
-
24
- try {
25
- if (typeof value === 'bigint') {
26
- numValue = value;
27
- } else if (typeof value === 'number') {
28
- numValue = value;
29
- } else if (typeof value === 'string') {
30
- const parsed = Number(value);
31
- if (isNaN(parsed)) return acc;
32
- numValue = parsed;
33
- } else if (typeof value === 'boolean') {
34
- numValue = value ? 1 : 0;
35
- } else {
36
- return acc; // Ignore non-numeric types like Uint8Array
37
- }
38
-
39
- // Promote to BigInt if either is BigInt or if result might overflow Number
40
- if (typeof currentSum === 'bigint' || typeof numValue === 'bigint') {
41
- return { sum: BigInt(currentSum) + BigInt(numValue) };
42
- } else {
43
- // Check potential overflow before adding as numbers
44
- const potentialSum = (currentSum as number) + (numValue as number);
45
- if (potentialSum > Number.MAX_SAFE_INTEGER || potentialSum < Number.MIN_SAFE_INTEGER) {
46
- return { sum: BigInt(currentSum) + BigInt(numValue) };
47
- }
48
- return { sum: potentialSum };
49
- }
50
- } catch (e) {
51
- warnLog("Error during SUM step coercion: %O", e);
52
- return acc; // Ignore value if coercion fails
53
- }
54
- },
55
- (acc: { sum: number | bigint } | null): number | bigint | null => {
56
- // SQLite returns NULL for SUM of empty set, INTEGER or REAL result
57
- return acc?.sum ?? null;
58
- }
59
- );
60
-
61
- // --- AVG(X) ---
62
- interface AvgAccumulator { sum: number; count: number }
63
- export const avgFunc = createAggregateFunction(
64
- { name: 'avg', numArgs: 1, initialValue: { sum: 0, count: 0 } },
65
- (acc: AvgAccumulator, value: SqlValue): AvgAccumulator => {
66
- if (value === null) return acc; // Ignore NULLs
67
- let numValue = value;
68
- try {
69
- if (typeof value !== 'bigint') {
70
- numValue = Number(value);
71
- if (isNaN(numValue as number)) return acc; // Ignore non-numeric
72
- }
73
-
74
- // Use floating point for sum in AVG to avoid potential BigInt division issues
75
- const newSum = acc.sum + Number(numValue);
76
- return { sum: newSum, count: acc.count + 1 };
77
- } catch (e) {
78
- warnLog("Error during AVG step coercion: %O", e);
79
- return acc;
80
- }
81
- },
82
- (acc: AvgAccumulator): number | null => {
83
- if (acc.count === 0) return null; // NULL for empty set
84
- return acc.sum / acc.count;
85
- }
86
- );
87
-
88
- // --- MIN(X) ---
89
- export const minFunc = createAggregateFunction(
90
- {
91
- name: 'min',
92
- numArgs: 1,
93
- initialValue: null,
94
- // Type inference: return the same type as the input argument
95
- inferReturnType: (argTypes) => ({
96
- typeClass: 'scalar',
97
- logicalType: argTypes[0],
98
- nullable: true, // MIN can return NULL if all values are NULL or no rows
99
- isReadOnly: true
100
- })
101
- },
102
- (acc: { min: SqlValue } | null, value: SqlValue): { min: SqlValue } | null => {
103
- if (value === null) return acc; // Ignore NULLs
104
- if (acc === null) return { min: value }; // First non-null value
105
- return compareSqlValuesFast(value, acc.min, BINARY_COLLATION) < 0 ? { min: value } : acc;
106
- },
107
- (acc: { min: SqlValue } | null): SqlValue | null => {
108
- return acc?.min ?? null;
109
- }
110
- );
111
-
112
- // --- MAX(X) ---
113
- export const maxFunc = createAggregateFunction(
114
- {
115
- name: 'max',
116
- numArgs: 1,
117
- initialValue: null,
118
- // Type inference: return the same type as the input argument
119
- inferReturnType: (argTypes) => ({
120
- typeClass: 'scalar',
121
- logicalType: argTypes[0],
122
- nullable: true, // MAX can return NULL if all values are NULL or no rows
123
- isReadOnly: true
124
- })
125
- },
126
- (acc: { max: SqlValue } | null, value: SqlValue): { max: SqlValue } | null => {
127
- if (value === null) return acc; // Ignore NULLs
128
- if (acc === null) return { max: value }; // First non-null value
129
- return compareSqlValuesFast(value, acc.max, BINARY_COLLATION) > 0 ? { max: value } : acc;
130
- },
131
- (acc: { max: SqlValue } | null): SqlValue | null => {
132
- return acc?.max ?? null;
133
- }
134
- );
135
-
136
- // --- COUNT(X) ---
137
- // Counts non-NULL values of X
138
- export const countXFunc = createAggregateFunction(
139
- { name: 'count', numArgs: 1, initialValue: 0 },
140
- (acc: number, value: SqlValue): number => {
141
- if (value === null) return acc; // Do not count NULLs
142
- return acc + 1;
143
- },
144
- (acc: number): number => acc
145
- );
146
-
147
- // --- GROUP_CONCAT(X, Y?) ---
148
- interface GroupConcatAccumulator {
149
- values: string[];
150
- separator: string;
151
- }
152
- export const groupConcatFuncRev = createAggregateFunction(
153
- { name: 'group_concat', numArgs: -1, initialValue: { values: [], separator: ',' } },
154
- (acc: GroupConcatAccumulator, value: SqlValue, separator: SqlValue = ','): GroupConcatAccumulator => {
155
- const currentSeparator = (separator === undefined || separator === null) ? acc.separator : String(separator);
156
-
157
- if (value === null) {
158
- // Update separator even if value is NULL
159
- return { ...acc, separator: currentSeparator };
160
- }
161
-
162
- const strValue = String(value);
163
- // Create a new array instead of mutating the existing one
164
- return { values: [...acc.values, strValue], separator: currentSeparator };
165
- },
166
- (acc: GroupConcatAccumulator): string | null => {
167
- if (acc.values.length === 0) {
168
- return null;
169
- }
170
- return acc.values.join(acc.separator);
171
- }
172
- );
173
-
174
- // --- TOTAL(X) ---
175
- export const totalFunc = createAggregateFunction(
176
- { name: 'total', numArgs: 1, initialValue: 0.0 },
177
- (acc: number, value: SqlValue): number => {
178
- let numValue = 0.0;
179
- if (value !== null) {
180
- try {
181
- // Attempt numeric conversion, default to 0.0 if not possible
182
- numValue = Number(value);
183
- if (isNaN(numValue)) {
184
- numValue = 0.0;
185
- }
186
- } catch {
187
- numValue = 0.0;
188
- }
189
- }
190
- // Always use floating-point arithmetic
191
- return acc + numValue;
192
- },
193
- (acc: number): number => acc // Returns 0.0 for empty set or only NULL inputs
194
- );
195
-
196
- // --- Statistical Aggregates (Variance, Standard Deviation) ---
197
- interface StatAccumulator {
198
- count: number;
199
- sum: number;
200
- sumSq: number;
201
- }
202
-
203
- const statReducer = (acc: StatAccumulator, value: SqlValue): StatAccumulator => {
204
- if (value === null) {
205
- return acc; // Ignore NULLs
206
- }
207
- try {
208
- const numValue = Number(value);
209
- if (isNaN(numValue)) {
210
- return acc; // Ignore non-numeric
211
- }
212
- // Use floating-point for calculations
213
- return {
214
- count: acc.count + 1,
215
- sum: acc.sum + numValue,
216
- sumSq: acc.sumSq + (numValue * numValue),
217
- };
218
- } catch (e) {
219
- warnLog("Error during statistical aggregate step coercion: %O", e);
220
- return acc;
221
- }
222
- };
223
-
224
- // Population Variance (VAR_POP)
225
- export const varPopFunc = createAggregateFunction(
226
- { name: 'var_pop', numArgs: 1, initialValue: { count: 0, sum: 0, sumSq: 0 } },
227
- statReducer,
228
- (acc: StatAccumulator): number | null => {
229
- if (acc.count === 0) return null; // NULL for empty set
230
- const avg = acc.sum / acc.count;
231
- const variance = (acc.sumSq / acc.count) - (avg * avg);
232
- return variance;
233
- }
234
- );
235
-
236
- // Sample Variance (VAR_SAMP)
237
- export const varSampFunc = createAggregateFunction(
238
- { name: 'var_samp', numArgs: 1, initialValue: { count: 0, sum: 0, sumSq: 0 } },
239
- statReducer,
240
- (acc: StatAccumulator): number | null => {
241
- if (acc.count <= 1) return null; // NULL if count is 0 or 1
242
- // Sample variance: (sumSq - n*avg^2) / (n-1) == (sumSq - sum*sum/n) / (n-1)
243
- const variance = (acc.sumSq - (acc.sum * acc.sum) / acc.count) / (acc.count - 1);
244
- return variance;
245
- }
246
- );
247
-
248
- // Population Standard Deviation (STDDEV_POP)
249
- export const stdDevPopFunc = createAggregateFunction(
250
- { name: 'stddev_pop', numArgs: 1, initialValue: { count: 0, sum: 0, sumSq: 0 } },
251
- statReducer,
252
- (acc: StatAccumulator): number | null => {
253
- if (acc.count === 0) return null;
254
- const avg = acc.sum / acc.count;
255
- const variance = (acc.sumSq / acc.count) - (avg * avg);
256
- return variance < 0 ? null : Math.sqrt(variance);
257
- }
258
- );
259
-
260
- // Sample Standard Deviation (STDDEV_SAMP)
261
- export const stdDevSampFunc = createAggregateFunction(
262
- { name: 'stddev_samp', numArgs: 1, initialValue: { count: 0, sum: 0, sumSq: 0 } },
263
- statReducer,
264
- (acc: StatAccumulator): number | null => {
265
- if (acc.count <= 1) return null;
266
- const variance = (acc.sumSq - (acc.sum * acc.sum) / acc.count) / (acc.count - 1);
267
- return variance < 0 ? null : Math.sqrt(variance);
268
- }
269
- );
@@ -1,166 +0,0 @@
1
- import { registerWindowFunction } from '../../schema/window-function.js';
2
- import { AggValue } from '../registration.js';
3
- import { INTEGER_TYPE, REAL_TYPE } from '../../types/builtin-types.js';
4
-
5
- // Built-in window function schemas
6
- export function registerBuiltinWindowFunctions(): void {
7
- // Ranking functions
8
- registerWindowFunction({
9
- name: 'ROW_NUMBER',
10
- argCount: 0,
11
- returnType: {
12
- typeClass: 'scalar',
13
- logicalType: INTEGER_TYPE,
14
- nullable: false,
15
- isReadOnly: true
16
- },
17
- requiresOrderBy: true,
18
- kind: 'ranking'
19
- });
20
-
21
- registerWindowFunction({
22
- name: 'RANK',
23
- argCount: 0,
24
- returnType: {
25
- typeClass: 'scalar',
26
- logicalType: INTEGER_TYPE,
27
- nullable: false,
28
- isReadOnly: true
29
- },
30
- requiresOrderBy: true,
31
- kind: 'ranking'
32
- });
33
-
34
- registerWindowFunction({
35
- name: 'DENSE_RANK',
36
- argCount: 0,
37
- returnType: {
38
- typeClass: 'scalar',
39
- logicalType: INTEGER_TYPE,
40
- nullable: false,
41
- isReadOnly: true
42
- },
43
- requiresOrderBy: true,
44
- kind: 'ranking'
45
- });
46
-
47
- registerWindowFunction({
48
- name: 'NTILE',
49
- argCount: 1,
50
- returnType: {
51
- typeClass: 'scalar',
52
- logicalType: INTEGER_TYPE,
53
- nullable: false,
54
- isReadOnly: true
55
- },
56
- requiresOrderBy: true,
57
- kind: 'ranking'
58
- });
59
-
60
- // Aggregate functions as window functions
61
- registerWindowFunction({
62
- name: 'COUNT',
63
- argCount: 1,
64
- returnType: {
65
- typeClass: 'scalar',
66
- logicalType: INTEGER_TYPE,
67
- nullable: false,
68
- isReadOnly: true
69
- },
70
- requiresOrderBy: false,
71
- kind: 'aggregate',
72
- step: (state: AggValue, value: AggValue) => {
73
- if (state === null || state === undefined) {
74
- state = 0;
75
- }
76
- return value !== null ? state + 1 : state;
77
- },
78
- final: (state: AggValue) => state || 0
79
- });
80
-
81
- registerWindowFunction({
82
- name: 'SUM',
83
- argCount: 1,
84
- returnType: {
85
- typeClass: 'scalar',
86
- logicalType: REAL_TYPE,
87
- nullable: true,
88
- isReadOnly: true
89
- },
90
- requiresOrderBy: false,
91
- kind: 'aggregate',
92
- step: (state: AggValue, value: AggValue) => {
93
- if (value === null) return state;
94
- if (state === null || state === undefined) {
95
- return Number(value);
96
- }
97
- return state + Number(value);
98
- },
99
- final: (state: AggValue) => state
100
- });
101
-
102
- registerWindowFunction({
103
- name: 'AVG',
104
- argCount: 1,
105
- returnType: {
106
- typeClass: 'scalar',
107
- logicalType: REAL_TYPE,
108
- nullable: true,
109
- isReadOnly: true
110
- },
111
- requiresOrderBy: false,
112
- kind: 'aggregate',
113
- step: (state: AggValue, value: AggValue) => {
114
- if (value === null) return state;
115
- if (!state) {
116
- state = { sum: 0, count: 0 };
117
- }
118
- state.sum += Number(value);
119
- state.count += 1;
120
- return state;
121
- },
122
- final: (state: AggValue) => state ? state.sum / state.count : null
123
- });
124
-
125
- registerWindowFunction({
126
- name: 'MIN',
127
- argCount: 1,
128
- returnType: {
129
- typeClass: 'scalar',
130
- logicalType: REAL_TYPE,
131
- nullable: true,
132
- isReadOnly: true
133
- },
134
- requiresOrderBy: false,
135
- kind: 'aggregate',
136
- step: (state: AggValue, value: AggValue) => {
137
- if (value === null) return state;
138
- if (state === null || state === undefined) {
139
- return value;
140
- }
141
- return value < state ? value : state;
142
- },
143
- final: (state: AggValue) => state
144
- });
145
-
146
- registerWindowFunction({
147
- name: 'MAX',
148
- argCount: 1,
149
- returnType: {
150
- typeClass: 'scalar',
151
- logicalType: REAL_TYPE,
152
- nullable: true,
153
- isReadOnly: true
154
- },
155
- requiresOrderBy: false,
156
- kind: 'aggregate',
157
- step: (state: AggValue, value: AggValue) => {
158
- if (value === null) return state;
159
- if (state === null || state === undefined) {
160
- return value;
161
- }
162
- return value > state ? value : state;
163
- },
164
- final: (state: AggValue) => state
165
- });
166
- }
@@ -1,226 +0,0 @@
1
- import type { SqlValue } from '../../common/types.js';
2
- import { createScalarFunction } from '../registration.js';
3
- import { QuereusError } from '../../common/errors.js';
4
- import { StatusCode } from '../../common/types.js';
5
- import { INTEGER_TYPE, REAL_TYPE, TEXT_TYPE, BOOLEAN_TYPE } from '../../types/builtin-types.js';
6
- import { DATE_TYPE, TIME_TYPE, DATETIME_TYPE, TIMESPAN_TYPE } from '../../types/temporal-types.js';
7
- import { JSON_TYPE } from '../../types/json-type.js';
8
-
9
- /**
10
- * integer() - Convert value to INTEGER
11
- * Usage: integer(value)
12
- */
13
- export const INTEGER_FUNC = createScalarFunction(
14
- { name: 'integer', numArgs: 1, deterministic: true },
15
- (value: SqlValue): SqlValue => {
16
- if (value === null) return null;
17
-
18
- try {
19
- return INTEGER_TYPE.parse!(value);
20
- } catch (e) {
21
- throw new QuereusError(
22
- `Cannot convert to INTEGER: ${e instanceof Error ? e.message : String(e)}`,
23
- StatusCode.MISMATCH
24
- );
25
- }
26
- }
27
- );
28
-
29
- /**
30
- * real() - Convert value to REAL
31
- * Usage: real(value)
32
- */
33
- export const REAL_FUNC = createScalarFunction(
34
- { name: 'real', numArgs: 1, deterministic: true },
35
- (value: SqlValue): SqlValue => {
36
- if (value === null) return null;
37
-
38
- try {
39
- return REAL_TYPE.parse!(value);
40
- } catch (e) {
41
- throw new QuereusError(
42
- `Cannot convert to REAL: ${e instanceof Error ? e.message : String(e)}`,
43
- StatusCode.MISMATCH
44
- );
45
- }
46
- }
47
- );
48
-
49
- /**
50
- * text() - Convert value to TEXT
51
- * Usage: text(value)
52
- */
53
- export const TEXT_FUNC = createScalarFunction(
54
- { name: 'text', numArgs: 1, deterministic: true },
55
- (value: SqlValue): SqlValue => {
56
- if (value === null) return null;
57
-
58
- try {
59
- return TEXT_TYPE.parse!(value);
60
- } catch (e) {
61
- throw new QuereusError(
62
- `Cannot convert to TEXT: ${e instanceof Error ? e.message : String(e)}`,
63
- StatusCode.MISMATCH
64
- );
65
- }
66
- }
67
- );
68
-
69
- /**
70
- * boolean() - Convert value to BOOLEAN
71
- * Usage: boolean(value)
72
- */
73
- export const BOOLEAN_FUNC = createScalarFunction(
74
- { name: 'boolean', numArgs: 1, deterministic: true },
75
- (value: SqlValue): SqlValue => {
76
- if (value === null) return null;
77
-
78
- try {
79
- return BOOLEAN_TYPE.parse!(value);
80
- } catch (e) {
81
- throw new QuereusError(
82
- `Cannot convert to BOOLEAN: ${e instanceof Error ? e.message : String(e)}`,
83
- StatusCode.MISMATCH
84
- );
85
- }
86
- }
87
- );
88
-
89
- /**
90
- * date() - Convert value to DATE
91
- * Usage: date(value)
92
- *
93
- * Note: This replaces the existing date() function in datetime.ts
94
- * The old date() function will be renamed to date_now() or similar
95
- */
96
- export const DATE_FUNC = createScalarFunction(
97
- { name: 'date', numArgs: 1, deterministic: false }, // 'now' is non-deterministic
98
- (value: SqlValue): SqlValue => {
99
- if (value === null) return null;
100
-
101
- // Special case: 'now' returns current date
102
- if (value === 'now') {
103
- const now = new Date();
104
- const year = now.getUTCFullYear();
105
- const month = String(now.getUTCMonth() + 1).padStart(2, '0');
106
- const day = String(now.getUTCDate()).padStart(2, '0');
107
- return `${year}-${month}-${day}`;
108
- }
109
-
110
- try {
111
- return DATE_TYPE.parse!(value);
112
- } catch (e) {
113
- throw new QuereusError(
114
- `Cannot convert to DATE: ${e instanceof Error ? e.message : String(e)}`,
115
- StatusCode.MISMATCH
116
- );
117
- }
118
- }
119
- );
120
-
121
- /**
122
- * time() - Convert value to TIME
123
- * Usage: time(value)
124
- *
125
- * Note: This replaces the existing time() function in datetime.ts
126
- */
127
- export const TIME_FUNC = createScalarFunction(
128
- { name: 'time', numArgs: 1, deterministic: false }, // 'now' is non-deterministic
129
- (value: SqlValue): SqlValue => {
130
- if (value === null) return null;
131
-
132
- // Special case: 'now' returns current time
133
- if (value === 'now') {
134
- const now = new Date();
135
- const hours = String(now.getUTCHours()).padStart(2, '0');
136
- const minutes = String(now.getUTCMinutes()).padStart(2, '0');
137
- const seconds = String(now.getUTCSeconds()).padStart(2, '0');
138
- return `${hours}:${minutes}:${seconds}`;
139
- }
140
-
141
- try {
142
- return TIME_TYPE.parse!(value);
143
- } catch (e) {
144
- throw new QuereusError(
145
- `Cannot convert to TIME: ${e instanceof Error ? e.message : String(e)}`,
146
- StatusCode.MISMATCH
147
- );
148
- }
149
- }
150
- );
151
-
152
- /**
153
- * datetime() - Convert value to DATETIME
154
- * Usage: datetime(value)
155
- *
156
- * Note: This replaces the existing datetime() function in datetime.ts
157
- */
158
- export const DATETIME_FUNC = createScalarFunction(
159
- { name: 'datetime', numArgs: 1, deterministic: false }, // 'now' is non-deterministic
160
- (value: SqlValue): SqlValue => {
161
- if (value === null) return null;
162
-
163
- // Special case: 'now' returns current datetime
164
- if (value === 'now') {
165
- return new Date().toISOString();
166
- }
167
-
168
- try {
169
- return DATETIME_TYPE.parse!(value);
170
- } catch (e) {
171
- throw new QuereusError(
172
- `Cannot convert to DATETIME: ${e instanceof Error ? e.message : String(e)}`,
173
- StatusCode.MISMATCH
174
- );
175
- }
176
- }
177
- );
178
-
179
- /**
180
- * json() - Convert value to JSON
181
- * Usage: json(value)
182
- *
183
- * Converts a value to a JSON string. If the value is already a valid JSON string,
184
- * it normalizes it. Otherwise, it converts the value to JSON representation.
185
- */
186
- export const JSON_FUNC = createScalarFunction(
187
- { name: 'json', numArgs: 1, deterministic: true },
188
- (value: SqlValue): SqlValue => {
189
- if (value === null) return 'null';
190
-
191
- try {
192
- return JSON_TYPE.parse!(value);
193
- } catch (e) {
194
- throw new QuereusError(
195
- `Cannot convert to JSON: ${e instanceof Error ? e.message : String(e)}`,
196
- StatusCode.MISMATCH
197
- );
198
- }
199
- }
200
- );
201
-
202
- /**
203
- * timespan() - Convert value to TIMESPAN
204
- * Usage: timespan(value)
205
- *
206
- * Accepts:
207
- * - ISO 8601 duration strings: 'PT1H30M', 'P1D', 'P1Y2M3D'
208
- * - Human-readable strings: '1 hour', '30 minutes', '2 days 3 hours'
209
- * - Numeric values (interpreted as seconds): 3600, 86400
210
- */
211
- export const TIMESPAN_FUNC = createScalarFunction(
212
- { name: 'timespan', numArgs: 1, deterministic: true },
213
- (value: SqlValue): SqlValue => {
214
- if (value === null) return null;
215
-
216
- try {
217
- return TIMESPAN_TYPE.parse!(value);
218
- } catch (e) {
219
- throw new QuereusError(
220
- `Cannot convert to TIMESPAN: ${e instanceof Error ? e.message : String(e)}`,
221
- StatusCode.MISMATCH
222
- );
223
- }
224
- }
225
- );
226
-