@quereus/quereus 0.7.3 → 0.7.4

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 (566) hide show
  1. package/package.json +3 -3
  2. package/dist/src/common/constants.js.map +0 -1
  3. package/dist/src/common/datatype.js.map +0 -1
  4. package/dist/src/common/errors.js.map +0 -1
  5. package/dist/src/common/json-types.js.map +0 -1
  6. package/dist/src/common/logger.js.map +0 -1
  7. package/dist/src/common/type-inference.js.map +0 -1
  8. package/dist/src/common/types.js.map +0 -1
  9. package/dist/src/core/database-options.js.map +0 -1
  10. package/dist/src/core/database.js.map +0 -1
  11. package/dist/src/core/param.js.map +0 -1
  12. package/dist/src/core/statement.js.map +0 -1
  13. package/dist/src/func/builtins/aggregate.js.map +0 -1
  14. package/dist/src/func/builtins/builtin-window-functions.js.map +0 -1
  15. package/dist/src/func/builtins/conversion.js.map +0 -1
  16. package/dist/src/func/builtins/datetime.js.map +0 -1
  17. package/dist/src/func/builtins/explain.js.map +0 -1
  18. package/dist/src/func/builtins/generation.js.map +0 -1
  19. package/dist/src/func/builtins/index.js.map +0 -1
  20. package/dist/src/func/builtins/json-helpers.js.map +0 -1
  21. package/dist/src/func/builtins/json-tvf.js.map +0 -1
  22. package/dist/src/func/builtins/json.js.map +0 -1
  23. package/dist/src/func/builtins/scalar.js.map +0 -1
  24. package/dist/src/func/builtins/schema.js.map +0 -1
  25. package/dist/src/func/builtins/string.js.map +0 -1
  26. package/dist/src/func/builtins/timespan.js.map +0 -1
  27. package/dist/src/func/context.js.map +0 -1
  28. package/dist/src/func/registration.js.map +0 -1
  29. package/dist/src/index.js.map +0 -1
  30. package/dist/src/parser/ast.js.map +0 -1
  31. package/dist/src/parser/index.js.map +0 -1
  32. package/dist/src/parser/lexer.js.map +0 -1
  33. package/dist/src/parser/parser.js.map +0 -1
  34. package/dist/src/parser/utils.js.map +0 -1
  35. package/dist/src/parser/visitor.js.map +0 -1
  36. package/dist/src/planner/analysis/binding-collector.js.map +0 -1
  37. package/dist/src/planner/analysis/const-evaluator.js.map +0 -1
  38. package/dist/src/planner/analysis/const-pass.js.map +0 -1
  39. package/dist/src/planner/analysis/constraint-extractor.js.map +0 -1
  40. package/dist/src/planner/analysis/predicate-normalizer.js.map +0 -1
  41. package/dist/src/planner/building/alter-table.js.map +0 -1
  42. package/dist/src/planner/building/block.js.map +0 -1
  43. package/dist/src/planner/building/constraint-builder.js.map +0 -1
  44. package/dist/src/planner/building/create-assertion.js.map +0 -1
  45. package/dist/src/planner/building/create-view.js.map +0 -1
  46. package/dist/src/planner/building/ddl.js.map +0 -1
  47. package/dist/src/planner/building/declare-schema.js.map +0 -1
  48. package/dist/src/planner/building/delete.js.map +0 -1
  49. package/dist/src/planner/building/drop-assertion.js.map +0 -1
  50. package/dist/src/planner/building/drop-table.js.map +0 -1
  51. package/dist/src/planner/building/drop-view.js.map +0 -1
  52. package/dist/src/planner/building/expression.js.map +0 -1
  53. package/dist/src/planner/building/function-call.js.map +0 -1
  54. package/dist/src/planner/building/insert.js.map +0 -1
  55. package/dist/src/planner/building/pragma.js.map +0 -1
  56. package/dist/src/planner/building/schema-resolution.js.map +0 -1
  57. package/dist/src/planner/building/select-aggregates.js.map +0 -1
  58. package/dist/src/planner/building/select-compound.js.map +0 -1
  59. package/dist/src/planner/building/select-context.js.map +0 -1
  60. package/dist/src/planner/building/select-modifiers.js.map +0 -1
  61. package/dist/src/planner/building/select-projections.js.map +0 -1
  62. package/dist/src/planner/building/select-window.js.map +0 -1
  63. package/dist/src/planner/building/select.js.map +0 -1
  64. package/dist/src/planner/building/table-function.js.map +0 -1
  65. package/dist/src/planner/building/table.js.map +0 -1
  66. package/dist/src/planner/building/transaction.js.map +0 -1
  67. package/dist/src/planner/building/update.js.map +0 -1
  68. package/dist/src/planner/building/with.js.map +0 -1
  69. package/dist/src/planner/cache/correlation-detector.js.map +0 -1
  70. package/dist/src/planner/cache/materialization-advisory.js.map +0 -1
  71. package/dist/src/planner/cache/reference-graph.js.map +0 -1
  72. package/dist/src/planner/cost/index.js.map +0 -1
  73. package/dist/src/planner/debug/logger-utils.js.map +0 -1
  74. package/dist/src/planner/debug.js.map +0 -1
  75. package/dist/src/planner/framework/characteristics.js.map +0 -1
  76. package/dist/src/planner/framework/context.js.map +0 -1
  77. package/dist/src/planner/framework/pass.js.map +0 -1
  78. package/dist/src/planner/framework/physical-utils.js.map +0 -1
  79. package/dist/src/planner/framework/registry.js.map +0 -1
  80. package/dist/src/planner/framework/trace.js.map +0 -1
  81. package/dist/src/planner/nodes/add-constraint-node.js.map +0 -1
  82. package/dist/src/planner/nodes/aggregate-function.js.map +0 -1
  83. package/dist/src/planner/nodes/aggregate-node.js.map +0 -1
  84. package/dist/src/planner/nodes/array-index-node.js.map +0 -1
  85. package/dist/src/planner/nodes/block.js.map +0 -1
  86. package/dist/src/planner/nodes/cache-node.js.map +0 -1
  87. package/dist/src/planner/nodes/constraint-check-node.js.map +0 -1
  88. package/dist/src/planner/nodes/create-assertion-node.js.map +0 -1
  89. package/dist/src/planner/nodes/create-index-node.js.map +0 -1
  90. package/dist/src/planner/nodes/create-table-node.js.map +0 -1
  91. package/dist/src/planner/nodes/create-view-node.js.map +0 -1
  92. package/dist/src/planner/nodes/cte-node.js.map +0 -1
  93. package/dist/src/planner/nodes/cte-reference-node.js.map +0 -1
  94. package/dist/src/planner/nodes/declarative-schema.js.map +0 -1
  95. package/dist/src/planner/nodes/delete-node.js.map +0 -1
  96. package/dist/src/planner/nodes/distinct-node.js.map +0 -1
  97. package/dist/src/planner/nodes/dml-executor-node.js.map +0 -1
  98. package/dist/src/planner/nodes/drop-assertion-node.js.map +0 -1
  99. package/dist/src/planner/nodes/drop-table-node.js.map +0 -1
  100. package/dist/src/planner/nodes/drop-view-node.js.map +0 -1
  101. package/dist/src/planner/nodes/filter.js.map +0 -1
  102. package/dist/src/planner/nodes/function.js.map +0 -1
  103. package/dist/src/planner/nodes/insert-node.js.map +0 -1
  104. package/dist/src/planner/nodes/internal-recursive-cte-ref-node.js.map +0 -1
  105. package/dist/src/planner/nodes/join-node.js.map +0 -1
  106. package/dist/src/planner/nodes/limit-offset.js.map +0 -1
  107. package/dist/src/planner/nodes/plan-node-type.js.map +0 -1
  108. package/dist/src/planner/nodes/plan-node.js.map +0 -1
  109. package/dist/src/planner/nodes/pragma.js.map +0 -1
  110. package/dist/src/planner/nodes/project-node.js.map +0 -1
  111. package/dist/src/planner/nodes/recursive-cte-node.js.map +0 -1
  112. package/dist/src/planner/nodes/reference.js.map +0 -1
  113. package/dist/src/planner/nodes/remote-query-node.js.map +0 -1
  114. package/dist/src/planner/nodes/retrieve-node.js.map +0 -1
  115. package/dist/src/planner/nodes/returning-node.js.map +0 -1
  116. package/dist/src/planner/nodes/scalar.js.map +0 -1
  117. package/dist/src/planner/nodes/sequencing-node.js.map +0 -1
  118. package/dist/src/planner/nodes/set-operation-node.js.map +0 -1
  119. package/dist/src/planner/nodes/single-row.js.map +0 -1
  120. package/dist/src/planner/nodes/sink-node.js.map +0 -1
  121. package/dist/src/planner/nodes/sort.js.map +0 -1
  122. package/dist/src/planner/nodes/stream-aggregate.js.map +0 -1
  123. package/dist/src/planner/nodes/subquery.js.map +0 -1
  124. package/dist/src/planner/nodes/table-access-nodes.js.map +0 -1
  125. package/dist/src/planner/nodes/table-function-call.js.map +0 -1
  126. package/dist/src/planner/nodes/transaction-node.js.map +0 -1
  127. package/dist/src/planner/nodes/update-node.js.map +0 -1
  128. package/dist/src/planner/nodes/values-node.js.map +0 -1
  129. package/dist/src/planner/nodes/view-reference-node.js.map +0 -1
  130. package/dist/src/planner/nodes/window-function.js.map +0 -1
  131. package/dist/src/planner/nodes/window-node.js.map +0 -1
  132. package/dist/src/planner/optimizer-tuning.js.map +0 -1
  133. package/dist/src/planner/optimizer.js.map +0 -1
  134. package/dist/src/planner/planning-context.js.map +0 -1
  135. package/dist/src/planner/resolve.js.map +0 -1
  136. package/dist/src/planner/rules/access/rule-select-access-path.js.map +0 -1
  137. package/dist/src/planner/rules/aggregate/rule-aggregate-streaming.js.map +0 -1
  138. package/dist/src/planner/rules/cache/rule-cte-optimization.js.map +0 -1
  139. package/dist/src/planner/rules/cache/rule-materialization-advisory.js.map +0 -1
  140. package/dist/src/planner/rules/cache/rule-mutating-subquery-cache.js.map +0 -1
  141. package/dist/src/planner/rules/join/rule-join-greedy-commute.js.map +0 -1
  142. package/dist/src/planner/rules/join/rule-join-key-inference.js.map +0 -1
  143. package/dist/src/planner/rules/join/rule-quickpick-enumeration.js.map +0 -1
  144. package/dist/src/planner/rules/predicate/rule-predicate-pushdown.js.map +0 -1
  145. package/dist/src/planner/rules/retrieve/rule-grow-retrieve.js.map +0 -1
  146. package/dist/src/planner/scopes/aliased.js.map +0 -1
  147. package/dist/src/planner/scopes/base.js.map +0 -1
  148. package/dist/src/planner/scopes/empty.js.map +0 -1
  149. package/dist/src/planner/scopes/global.js.map +0 -1
  150. package/dist/src/planner/scopes/multi.js.map +0 -1
  151. package/dist/src/planner/scopes/param.js.map +0 -1
  152. package/dist/src/planner/scopes/registered.js.map +0 -1
  153. package/dist/src/planner/scopes/scope.js.map +0 -1
  154. package/dist/src/planner/stats/basic-estimates.js.map +0 -1
  155. package/dist/src/planner/stats/index.js.map +0 -1
  156. package/dist/src/planner/type-utils.js.map +0 -1
  157. package/dist/src/planner/util/key-utils.js.map +0 -1
  158. package/dist/src/planner/validation/determinism-validator.js.map +0 -1
  159. package/dist/src/planner/validation/plan-validator.js.map +0 -1
  160. package/dist/src/runtime/async-util.js.map +0 -1
  161. package/dist/src/runtime/cache/shared-cache.js.map +0 -1
  162. package/dist/src/runtime/context-helpers.js.map +0 -1
  163. package/dist/src/runtime/deferred-constraint-queue.js.map +0 -1
  164. package/dist/src/runtime/emission-context.js.map +0 -1
  165. package/dist/src/runtime/emit/add-constraint.js.map +0 -1
  166. package/dist/src/runtime/emit/aggregate.js.map +0 -1
  167. package/dist/src/runtime/emit/array-index.js.map +0 -1
  168. package/dist/src/runtime/emit/between.js.map +0 -1
  169. package/dist/src/runtime/emit/binary.js.map +0 -1
  170. package/dist/src/runtime/emit/block.js.map +0 -1
  171. package/dist/src/runtime/emit/cache.js.map +0 -1
  172. package/dist/src/runtime/emit/case.js.map +0 -1
  173. package/dist/src/runtime/emit/cast.js.map +0 -1
  174. package/dist/src/runtime/emit/collate.js.map +0 -1
  175. package/dist/src/runtime/emit/column-reference.js.map +0 -1
  176. package/dist/src/runtime/emit/constraint-check.js.map +0 -1
  177. package/dist/src/runtime/emit/create-assertion.js.map +0 -1
  178. package/dist/src/runtime/emit/create-index.js.map +0 -1
  179. package/dist/src/runtime/emit/create-table.js.map +0 -1
  180. package/dist/src/runtime/emit/create-view.js.map +0 -1
  181. package/dist/src/runtime/emit/cte-reference.js.map +0 -1
  182. package/dist/src/runtime/emit/cte.js.map +0 -1
  183. package/dist/src/runtime/emit/delete.js.map +0 -1
  184. package/dist/src/runtime/emit/distinct.js.map +0 -1
  185. package/dist/src/runtime/emit/dml-executor.js.map +0 -1
  186. package/dist/src/runtime/emit/drop-assertion.js.map +0 -1
  187. package/dist/src/runtime/emit/drop-table.js.map +0 -1
  188. package/dist/src/runtime/emit/drop-view.js.map +0 -1
  189. package/dist/src/runtime/emit/filter.js.map +0 -1
  190. package/dist/src/runtime/emit/insert.js.map +0 -1
  191. package/dist/src/runtime/emit/internal-recursive-cte-ref.js.map +0 -1
  192. package/dist/src/runtime/emit/join.js.map +0 -1
  193. package/dist/src/runtime/emit/limit-offset.js.map +0 -1
  194. package/dist/src/runtime/emit/literal.js.map +0 -1
  195. package/dist/src/runtime/emit/parameter.js.map +0 -1
  196. package/dist/src/runtime/emit/pragma.js.map +0 -1
  197. package/dist/src/runtime/emit/project.js.map +0 -1
  198. package/dist/src/runtime/emit/recursive-cte.js.map +0 -1
  199. package/dist/src/runtime/emit/remote-query.js.map +0 -1
  200. package/dist/src/runtime/emit/retrieve.js.map +0 -1
  201. package/dist/src/runtime/emit/returning.js.map +0 -1
  202. package/dist/src/runtime/emit/scalar-function.js.map +0 -1
  203. package/dist/src/runtime/emit/scan.js.map +0 -1
  204. package/dist/src/runtime/emit/schema-declarative.js.map +0 -1
  205. package/dist/src/runtime/emit/sequencing.js.map +0 -1
  206. package/dist/src/runtime/emit/set-operation.js.map +0 -1
  207. package/dist/src/runtime/emit/sink.js.map +0 -1
  208. package/dist/src/runtime/emit/sort.js.map +0 -1
  209. package/dist/src/runtime/emit/subquery.js.map +0 -1
  210. package/dist/src/runtime/emit/table-valued-function.js.map +0 -1
  211. package/dist/src/runtime/emit/temporal-arithmetic.js.map +0 -1
  212. package/dist/src/runtime/emit/transaction.js.map +0 -1
  213. package/dist/src/runtime/emit/unary.js.map +0 -1
  214. package/dist/src/runtime/emit/update.js.map +0 -1
  215. package/dist/src/runtime/emit/values.js.map +0 -1
  216. package/dist/src/runtime/emit/window-function.js.map +0 -1
  217. package/dist/src/runtime/emit/window.js.map +0 -1
  218. package/dist/src/runtime/emitters.js.map +0 -1
  219. package/dist/src/runtime/register.js.map +0 -1
  220. package/dist/src/runtime/scheduler.js.map +0 -1
  221. package/dist/src/runtime/types.js.map +0 -1
  222. package/dist/src/runtime/utils.js.map +0 -1
  223. package/dist/src/schema/assertion.js.map +0 -1
  224. package/dist/src/schema/catalog.js.map +0 -1
  225. package/dist/src/schema/change-events.js.map +0 -1
  226. package/dist/src/schema/column.js.map +0 -1
  227. package/dist/src/schema/declared-schema-manager.js.map +0 -1
  228. package/dist/src/schema/function.js.map +0 -1
  229. package/dist/src/schema/manager.js.map +0 -1
  230. package/dist/src/schema/schema-differ.js.map +0 -1
  231. package/dist/src/schema/schema-hasher.js.map +0 -1
  232. package/dist/src/schema/schema.js.map +0 -1
  233. package/dist/src/schema/table.js.map +0 -1
  234. package/dist/src/schema/view.js.map +0 -1
  235. package/dist/src/schema/window-function.js.map +0 -1
  236. package/dist/src/types/builtin-types.js.map +0 -1
  237. package/dist/src/types/index.js.map +0 -1
  238. package/dist/src/types/json-type.js.map +0 -1
  239. package/dist/src/types/logical-type.js.map +0 -1
  240. package/dist/src/types/plugin-interface.js.map +0 -1
  241. package/dist/src/types/registry.js.map +0 -1
  242. package/dist/src/types/temporal-types.js.map +0 -1
  243. package/dist/src/types/validation.js.map +0 -1
  244. package/dist/src/util/affinity.js.map +0 -1
  245. package/dist/src/util/ast-stringify.js.map +0 -1
  246. package/dist/src/util/cached.js.map +0 -1
  247. package/dist/src/util/coercion.js.map +0 -1
  248. package/dist/src/util/comparison.js.map +0 -1
  249. package/dist/src/util/environment.js.map +0 -1
  250. package/dist/src/util/hash.js.map +0 -1
  251. package/dist/src/util/latches.js.map +0 -1
  252. package/dist/src/util/mutation-statement.js.map +0 -1
  253. package/dist/src/util/patterns.js.map +0 -1
  254. package/dist/src/util/plan-formatter.js.map +0 -1
  255. package/dist/src/util/plugin-helper.js.map +0 -1
  256. package/dist/src/util/row-descriptor.js.map +0 -1
  257. package/dist/src/util/serialization.js.map +0 -1
  258. package/dist/src/util/sql-literal.js.map +0 -1
  259. package/dist/src/util/working-table-iterable.js.map +0 -1
  260. package/dist/src/vtab/best-access-plan.js.map +0 -1
  261. package/dist/src/vtab/connection.js.map +0 -1
  262. package/dist/src/vtab/filter-info.js.map +0 -1
  263. package/dist/src/vtab/index-info.js.map +0 -1
  264. package/dist/src/vtab/manifest.js.map +0 -1
  265. package/dist/src/vtab/memory/connection.js.map +0 -1
  266. package/dist/src/vtab/memory/index.js.map +0 -1
  267. package/dist/src/vtab/memory/layer/base-cursor.js.map +0 -1
  268. package/dist/src/vtab/memory/layer/base.js.map +0 -1
  269. package/dist/src/vtab/memory/layer/connection.js.map +0 -1
  270. package/dist/src/vtab/memory/layer/interface.js.map +0 -1
  271. package/dist/src/vtab/memory/layer/manager.js.map +0 -1
  272. package/dist/src/vtab/memory/layer/safe-iterate.js.map +0 -1
  273. package/dist/src/vtab/memory/layer/scan-plan.js.map +0 -1
  274. package/dist/src/vtab/memory/layer/transaction-cursor.js.map +0 -1
  275. package/dist/src/vtab/memory/layer/transaction.js.map +0 -1
  276. package/dist/src/vtab/memory/module.js.map +0 -1
  277. package/dist/src/vtab/memory/table.js.map +0 -1
  278. package/dist/src/vtab/memory/types.js.map +0 -1
  279. package/dist/src/vtab/memory/utils/logging.js.map +0 -1
  280. package/dist/src/vtab/memory/utils/primary-key.js.map +0 -1
  281. package/dist/src/vtab/module.js.map +0 -1
  282. package/dist/src/vtab/table.js.map +0 -1
  283. package/src/common/constants.ts +0 -60
  284. package/src/common/datatype.ts +0 -85
  285. package/src/common/errors.ts +0 -189
  286. package/src/common/json-types.ts +0 -16
  287. package/src/common/logger.ts +0 -97
  288. package/src/common/type-inference.ts +0 -39
  289. package/src/common/types.ts +0 -151
  290. package/src/core/database-options.ts +0 -258
  291. package/src/core/database.ts +0 -1461
  292. package/src/core/param.ts +0 -56
  293. package/src/core/statement.ts +0 -528
  294. package/src/func/builtins/aggregate.ts +0 -269
  295. package/src/func/builtins/builtin-window-functions.ts +0 -166
  296. package/src/func/builtins/conversion.ts +0 -226
  297. package/src/func/builtins/datetime.ts +0 -500
  298. package/src/func/builtins/explain.ts +0 -779
  299. package/src/func/builtins/generation.ts +0 -43
  300. package/src/func/builtins/index.ts +0 -167
  301. package/src/func/builtins/json-helpers.ts +0 -237
  302. package/src/func/builtins/json-tvf.ts +0 -224
  303. package/src/func/builtins/json.ts +0 -588
  304. package/src/func/builtins/scalar.ts +0 -423
  305. package/src/func/builtins/schema.ts +0 -213
  306. package/src/func/builtins/string.ts +0 -306
  307. package/src/func/builtins/timespan.ts +0 -179
  308. package/src/func/context.ts +0 -258
  309. package/src/func/registration.ts +0 -201
  310. package/src/index.ts +0 -172
  311. package/src/parser/ast.ts +0 -581
  312. package/src/parser/index.ts +0 -65
  313. package/src/parser/lexer.ts +0 -806
  314. package/src/parser/parser.ts +0 -3352
  315. package/src/parser/utils.ts +0 -10
  316. package/src/parser/visitor.ts +0 -188
  317. package/src/planner/analysis/README.md +0 -93
  318. package/src/planner/analysis/binding-collector.ts +0 -83
  319. package/src/planner/analysis/const-evaluator.ts +0 -63
  320. package/src/planner/analysis/const-pass.ts +0 -282
  321. package/src/planner/analysis/constraint-extractor.ts +0 -764
  322. package/src/planner/analysis/predicate-normalizer.ts +0 -237
  323. package/src/planner/building/alter-table.ts +0 -49
  324. package/src/planner/building/block.ts +0 -93
  325. package/src/planner/building/constraint-builder.ts +0 -178
  326. package/src/planner/building/create-assertion.ts +0 -7
  327. package/src/planner/building/create-view.ts +0 -29
  328. package/src/planner/building/ddl.ts +0 -24
  329. package/src/planner/building/declare-schema.ts +0 -22
  330. package/src/planner/building/delete.ts +0 -218
  331. package/src/planner/building/drop-assertion.ts +0 -11
  332. package/src/planner/building/drop-table.ts +0 -13
  333. package/src/planner/building/drop-view.ts +0 -19
  334. package/src/planner/building/expression.ts +0 -205
  335. package/src/planner/building/function-call.ts +0 -129
  336. package/src/planner/building/insert.ts +0 -435
  337. package/src/planner/building/pragma.ts +0 -34
  338. package/src/planner/building/schema-resolution.ts +0 -176
  339. package/src/planner/building/select-aggregates.ts +0 -318
  340. package/src/planner/building/select-compound.ts +0 -119
  341. package/src/planner/building/select-context.ts +0 -85
  342. package/src/planner/building/select-modifiers.ts +0 -236
  343. package/src/planner/building/select-projections.ts +0 -177
  344. package/src/planner/building/select-window.ts +0 -259
  345. package/src/planner/building/select.ts +0 -567
  346. package/src/planner/building/table-function.ts +0 -49
  347. package/src/planner/building/table.ts +0 -40
  348. package/src/planner/building/transaction.ts +0 -23
  349. package/src/planner/building/update.ts +0 -331
  350. package/src/planner/building/with.ts +0 -180
  351. package/src/planner/cache/correlation-detector.ts +0 -83
  352. package/src/planner/cache/materialization-advisory.ts +0 -265
  353. package/src/planner/cache/reference-graph.ts +0 -196
  354. package/src/planner/cost/index.ts +0 -169
  355. package/src/planner/debug/logger-utils.ts +0 -68
  356. package/src/planner/debug.ts +0 -480
  357. package/src/planner/framework/README.md +0 -132
  358. package/src/planner/framework/characteristics.ts +0 -503
  359. package/src/planner/framework/context.ts +0 -239
  360. package/src/planner/framework/pass.ts +0 -354
  361. package/src/planner/framework/physical-utils.ts +0 -210
  362. package/src/planner/framework/registry.ts +0 -261
  363. package/src/planner/framework/trace.ts +0 -259
  364. package/src/planner/nodes/add-constraint-node.ts +0 -62
  365. package/src/planner/nodes/aggregate-function.ts +0 -155
  366. package/src/planner/nodes/aggregate-node.ts +0 -267
  367. package/src/planner/nodes/array-index-node.ts +0 -50
  368. package/src/planner/nodes/block.ts +0 -80
  369. package/src/planner/nodes/cache-node.ts +0 -103
  370. package/src/planner/nodes/constraint-check-node.ts +0 -138
  371. package/src/planner/nodes/create-assertion-node.ts +0 -51
  372. package/src/planner/nodes/create-index-node.ts +0 -41
  373. package/src/planner/nodes/create-table-node.ts +0 -35
  374. package/src/planner/nodes/create-view-node.ts +0 -44
  375. package/src/planner/nodes/cte-node.ts +0 -168
  376. package/src/planner/nodes/cte-reference-node.ts +0 -125
  377. package/src/planner/nodes/declarative-schema.ts +0 -221
  378. package/src/planner/nodes/delete-node.ts +0 -102
  379. package/src/planner/nodes/distinct-node.ts +0 -107
  380. package/src/planner/nodes/dml-executor-node.ts +0 -104
  381. package/src/planner/nodes/drop-assertion-node.ts +0 -50
  382. package/src/planner/nodes/drop-table-node.ts +0 -36
  383. package/src/planner/nodes/drop-view-node.ts +0 -37
  384. package/src/planner/nodes/filter.ts +0 -144
  385. package/src/planner/nodes/function.ts +0 -98
  386. package/src/planner/nodes/insert-node.ts +0 -126
  387. package/src/planner/nodes/internal-recursive-cte-ref-node.ts +0 -61
  388. package/src/planner/nodes/join-node.ts +0 -336
  389. package/src/planner/nodes/limit-offset.ts +0 -144
  390. package/src/planner/nodes/plan-node-type.ts +0 -95
  391. package/src/planner/nodes/plan-node.ts +0 -503
  392. package/src/planner/nodes/pragma.ts +0 -98
  393. package/src/planner/nodes/project-node.ts +0 -337
  394. package/src/planner/nodes/recursive-cte-node.ts +0 -158
  395. package/src/planner/nodes/reference.ts +0 -334
  396. package/src/planner/nodes/remote-query-node.ts +0 -73
  397. package/src/planner/nodes/retrieve-node.ts +0 -86
  398. package/src/planner/nodes/returning-node.ts +0 -269
  399. package/src/planner/nodes/scalar.ts +0 -772
  400. package/src/planner/nodes/sequencing-node.ts +0 -113
  401. package/src/planner/nodes/set-operation-node.ts +0 -87
  402. package/src/planner/nodes/single-row.ts +0 -85
  403. package/src/planner/nodes/sink-node.ts +0 -61
  404. package/src/planner/nodes/sort.ts +0 -166
  405. package/src/planner/nodes/stream-aggregate.ts +0 -293
  406. package/src/planner/nodes/subquery.ts +0 -268
  407. package/src/planner/nodes/table-access-nodes.ts +0 -323
  408. package/src/planner/nodes/table-function-call.ts +0 -134
  409. package/src/planner/nodes/transaction-node.ts +0 -55
  410. package/src/planner/nodes/update-node.ts +0 -138
  411. package/src/planner/nodes/values-node.ts +0 -244
  412. package/src/planner/nodes/view-reference-node.ts +0 -97
  413. package/src/planner/nodes/window-function.ts +0 -73
  414. package/src/planner/nodes/window-node.ts +0 -199
  415. package/src/planner/optimizer-tuning.ts +0 -105
  416. package/src/planner/optimizer.ts +0 -332
  417. package/src/planner/planning-context.ts +0 -190
  418. package/src/planner/resolve.ts +0 -101
  419. package/src/planner/rules/README.md +0 -96
  420. package/src/planner/rules/access/rule-select-access-path.ts +0 -399
  421. package/src/planner/rules/aggregate/rule-aggregate-streaming.ts +0 -162
  422. package/src/planner/rules/cache/rule-cte-optimization.ts +0 -79
  423. package/src/planner/rules/cache/rule-materialization-advisory.ts +0 -77
  424. package/src/planner/rules/cache/rule-mutating-subquery-cache.ts +0 -104
  425. package/src/planner/rules/join/rule-join-greedy-commute.ts +0 -48
  426. package/src/planner/rules/join/rule-join-key-inference.ts +0 -35
  427. package/src/planner/rules/join/rule-quickpick-enumeration.ts +0 -267
  428. package/src/planner/rules/predicate/rule-predicate-pushdown.ts +0 -144
  429. package/src/planner/rules/retrieve/rule-grow-retrieve.ts +0 -337
  430. package/src/planner/scopes/aliased.ts +0 -50
  431. package/src/planner/scopes/base.ts +0 -10
  432. package/src/planner/scopes/empty.ts +0 -12
  433. package/src/planner/scopes/global.ts +0 -73
  434. package/src/planner/scopes/multi.ts +0 -40
  435. package/src/planner/scopes/param.ts +0 -95
  436. package/src/planner/scopes/registered.ts +0 -67
  437. package/src/planner/scopes/scope.ts +0 -16
  438. package/src/planner/stats/basic-estimates.ts +0 -107
  439. package/src/planner/stats/index.ts +0 -158
  440. package/src/planner/type-utils.ts +0 -87
  441. package/src/planner/util/key-utils.ts +0 -46
  442. package/src/planner/validation/determinism-validator.ts +0 -104
  443. package/src/planner/validation/plan-validator.ts +0 -335
  444. package/src/runtime/async-util.ts +0 -283
  445. package/src/runtime/cache/shared-cache.ts +0 -169
  446. package/src/runtime/context-helpers.ts +0 -191
  447. package/src/runtime/deferred-constraint-queue.ts +0 -196
  448. package/src/runtime/emission-context.ts +0 -319
  449. package/src/runtime/emit/add-constraint.ts +0 -78
  450. package/src/runtime/emit/aggregate.ts +0 -581
  451. package/src/runtime/emit/array-index.ts +0 -25
  452. package/src/runtime/emit/between.ts +0 -51
  453. package/src/runtime/emit/binary.ts +0 -357
  454. package/src/runtime/emit/block.ts +0 -23
  455. package/src/runtime/emit/cache.ts +0 -64
  456. package/src/runtime/emit/case.ts +0 -87
  457. package/src/runtime/emit/cast.ts +0 -151
  458. package/src/runtime/emit/collate.ts +0 -9
  459. package/src/runtime/emit/column-reference.ts +0 -17
  460. package/src/runtime/emit/constraint-check.ts +0 -290
  461. package/src/runtime/emit/create-assertion.ts +0 -82
  462. package/src/runtime/emit/create-index.ts +0 -15
  463. package/src/runtime/emit/create-table.ts +0 -15
  464. package/src/runtime/emit/create-view.ts +0 -52
  465. package/src/runtime/emit/cte-reference.ts +0 -38
  466. package/src/runtime/emit/cte.ts +0 -39
  467. package/src/runtime/emit/delete.ts +0 -24
  468. package/src/runtime/emit/distinct.ts +0 -40
  469. package/src/runtime/emit/dml-executor.ts +0 -198
  470. package/src/runtime/emit/drop-assertion.ts +0 -45
  471. package/src/runtime/emit/drop-table.ts +0 -27
  472. package/src/runtime/emit/drop-view.ts +0 -49
  473. package/src/runtime/emit/filter.ts +0 -30
  474. package/src/runtime/emit/insert.ts +0 -42
  475. package/src/runtime/emit/internal-recursive-cte-ref.ts +0 -37
  476. package/src/runtime/emit/join.ts +0 -148
  477. package/src/runtime/emit/limit-offset.ts +0 -73
  478. package/src/runtime/emit/literal.ts +0 -17
  479. package/src/runtime/emit/parameter.ts +0 -59
  480. package/src/runtime/emit/pragma.ts +0 -56
  481. package/src/runtime/emit/project.ts +0 -46
  482. package/src/runtime/emit/recursive-cte.ts +0 -111
  483. package/src/runtime/emit/remote-query.ts +0 -47
  484. package/src/runtime/emit/retrieve.ts +0 -15
  485. package/src/runtime/emit/returning.ts +0 -41
  486. package/src/runtime/emit/scalar-function.ts +0 -69
  487. package/src/runtime/emit/scan.ts +0 -106
  488. package/src/runtime/emit/schema-declarative.ts +0 -215
  489. package/src/runtime/emit/sequencing.ts +0 -24
  490. package/src/runtime/emit/set-operation.ts +0 -141
  491. package/src/runtime/emit/sink.ts +0 -27
  492. package/src/runtime/emit/sort.ts +0 -75
  493. package/src/runtime/emit/subquery.ts +0 -203
  494. package/src/runtime/emit/table-valued-function.ts +0 -106
  495. package/src/runtime/emit/temporal-arithmetic.ts +0 -302
  496. package/src/runtime/emit/transaction.ts +0 -205
  497. package/src/runtime/emit/unary.ts +0 -101
  498. package/src/runtime/emit/update.ts +0 -66
  499. package/src/runtime/emit/values.ts +0 -66
  500. package/src/runtime/emit/window-function.ts +0 -42
  501. package/src/runtime/emit/window.ts +0 -458
  502. package/src/runtime/emitters.ts +0 -183
  503. package/src/runtime/register.ts +0 -150
  504. package/src/runtime/scheduler.ts +0 -488
  505. package/src/runtime/types.ts +0 -242
  506. package/src/runtime/utils.ts +0 -177
  507. package/src/schema/assertion.ts +0 -21
  508. package/src/schema/catalog.ts +0 -269
  509. package/src/schema/change-events.ts +0 -80
  510. package/src/schema/column.ts +0 -51
  511. package/src/schema/declared-schema-manager.ts +0 -82
  512. package/src/schema/function.ts +0 -188
  513. package/src/schema/manager.ts +0 -1034
  514. package/src/schema/schema-differ.ts +0 -214
  515. package/src/schema/schema-hasher.ts +0 -26
  516. package/src/schema/schema.ts +0 -222
  517. package/src/schema/table.ts +0 -409
  518. package/src/schema/view.ts +0 -19
  519. package/src/schema/window-function.ts +0 -56
  520. package/src/types/builtin-types.ts +0 -350
  521. package/src/types/index.ts +0 -17
  522. package/src/types/json-type.ts +0 -152
  523. package/src/types/logical-type.ts +0 -91
  524. package/src/types/plugin-interface.ts +0 -10
  525. package/src/types/registry.ts +0 -204
  526. package/src/types/temporal-types.ts +0 -290
  527. package/src/types/validation.ts +0 -120
  528. package/src/util/affinity.ts +0 -151
  529. package/src/util/ast-stringify.ts +0 -887
  530. package/src/util/cached.ts +0 -25
  531. package/src/util/coercion.ts +0 -113
  532. package/src/util/comparison.ts +0 -510
  533. package/src/util/environment.ts +0 -52
  534. package/src/util/hash.ts +0 -90
  535. package/src/util/latches.ts +0 -47
  536. package/src/util/mutation-statement.ts +0 -135
  537. package/src/util/patterns.ts +0 -56
  538. package/src/util/plan-formatter.ts +0 -48
  539. package/src/util/plugin-helper.ts +0 -110
  540. package/src/util/row-descriptor.ts +0 -105
  541. package/src/util/serialization.ts +0 -47
  542. package/src/util/sql-literal.ts +0 -22
  543. package/src/util/working-table-iterable.ts +0 -38
  544. package/src/vtab/best-access-plan.ts +0 -244
  545. package/src/vtab/connection.ts +0 -36
  546. package/src/vtab/filter-info.ts +0 -23
  547. package/src/vtab/index-info.ts +0 -84
  548. package/src/vtab/manifest.ts +0 -86
  549. package/src/vtab/memory/connection.ts +0 -73
  550. package/src/vtab/memory/index.ts +0 -191
  551. package/src/vtab/memory/layer/base-cursor.ts +0 -124
  552. package/src/vtab/memory/layer/base.ts +0 -275
  553. package/src/vtab/memory/layer/connection.ts +0 -203
  554. package/src/vtab/memory/layer/interface.ts +0 -47
  555. package/src/vtab/memory/layer/manager.ts +0 -909
  556. package/src/vtab/memory/layer/safe-iterate.ts +0 -49
  557. package/src/vtab/memory/layer/scan-plan.ts +0 -84
  558. package/src/vtab/memory/layer/transaction-cursor.ts +0 -162
  559. package/src/vtab/memory/layer/transaction.ts +0 -229
  560. package/src/vtab/memory/module.ts +0 -667
  561. package/src/vtab/memory/table.ts +0 -251
  562. package/src/vtab/memory/types.ts +0 -23
  563. package/src/vtab/memory/utils/logging.ts +0 -36
  564. package/src/vtab/memory/utils/primary-key.ts +0 -163
  565. package/src/vtab/module.ts +0 -162
  566. package/src/vtab/table.ts +0 -177
@@ -1,423 +0,0 @@
1
- import type { SqlValue, DeepReadonly } from '../../common/types.js';
2
- import { createScalarFunction } from '../registration.js';
3
- import { compareSqlValues, getSqlDataTypeName } from '../../util/comparison.js';
4
- import type { LogicalType } from '../../types/logical-type.js';
5
- import { ANY_TYPE, INTEGER_TYPE, REAL_TYPE } from '../../types/builtin-types.js';
6
-
7
- /**
8
- * Find the common type among multiple logical types.
9
- * This implements type promotion rules for polymorphic functions.
10
- *
11
- * Rules:
12
- * 1. If all types are the same, return that type
13
- * 2. If mixing INTEGER and REAL, return REAL (numeric promotion)
14
- * 3. Otherwise, return the first type (conservative approach)
15
- *
16
- * @param types Array of logical types to find common type for
17
- * @returns The common logical type
18
- */
19
- function findCommonType(types: ReadonlyArray<DeepReadonly<LogicalType>>): DeepReadonly<LogicalType> {
20
- if (types.length === 0) return ANY_TYPE;
21
- if (types.length === 1) return types[0];
22
-
23
- // Check if all types are the same
24
- const firstType = types[0];
25
- const allSame = types.every(t => t.name === firstType.name);
26
- if (allSame) return firstType;
27
-
28
- // Check for numeric type promotion (INTEGER + REAL -> REAL)
29
- const allNumeric = types.every(t => t.isNumeric === true);
30
- if (allNumeric) {
31
- // If any type is REAL, return REAL
32
- const hasReal = types.some(t => t.name === 'REAL');
33
- if (hasReal) return REAL_TYPE;
34
- // All INTEGER
35
- return INTEGER_TYPE;
36
- }
37
-
38
- // For non-numeric types, return the first type (conservative)
39
- // In a more sophisticated implementation, we could:
40
- // - Find a common supertype
41
- // - Return ANY_TYPE if types are incompatible
42
- // - Throw an error for incompatible types
43
- return firstType;
44
- }
45
-
46
- // --- abs(X) ---
47
- export const absFunc = createScalarFunction(
48
- {
49
- name: 'abs',
50
- numArgs: 1,
51
- deterministic: true,
52
- // Type inference: return the same type as the input for numeric types
53
- inferReturnType: (argTypes) => ({
54
- typeClass: 'scalar',
55
- logicalType: argTypes[0],
56
- nullable: false,
57
- isReadOnly: true
58
- }),
59
- // Validate that the argument is numeric
60
- validateArgTypes: (argTypes) => argTypes[0].isNumeric === true
61
- },
62
- (arg: SqlValue): SqlValue => {
63
- if (arg === null) return null;
64
- if (typeof arg === 'bigint') return arg < 0n ? -arg : arg;
65
- const num = Number(arg);
66
- if (isNaN(num)) return null;
67
- return Math.abs(num);
68
- }
69
- );
70
-
71
- // --- round(X, Y?) ---
72
- export const roundFunc = createScalarFunction(
73
- {
74
- name: 'round',
75
- numArgs: -1,
76
- deterministic: true,
77
- // Type inference: return the same type as the input for numeric types
78
- inferReturnType: (argTypes) => ({
79
- typeClass: 'scalar',
80
- logicalType: argTypes[0],
81
- nullable: false,
82
- isReadOnly: true
83
- }),
84
- validateArgTypes: (argTypes) => argTypes[0].isNumeric === true
85
- },
86
- (numVal: SqlValue, placesVal?: SqlValue): SqlValue => {
87
- if (numVal === null) return null;
88
- const x = Number(numVal);
89
- if (isNaN(x)) return null;
90
-
91
- let y = 0;
92
- if (placesVal !== undefined && placesVal !== null) {
93
- const numY = Number(placesVal);
94
- if (isNaN(numY)) return null;
95
- y = Math.trunc(numY);
96
- }
97
-
98
- try {
99
- const factor = Math.pow(10, y);
100
- return Math.round(x * factor) / factor;
101
- } catch {
102
- return null;
103
- }
104
- }
105
- );
106
-
107
- // --- coalesce(...) ---
108
- export const coalesceFunc = createScalarFunction(
109
- {
110
- name: 'coalesce',
111
- numArgs: -1,
112
- deterministic: true,
113
- // Type inference: find the common type among all arguments
114
- inferReturnType: (argTypes) => ({
115
- typeClass: 'scalar',
116
- logicalType: findCommonType(argTypes),
117
- nullable: true, // coalesce can return null if all args are null
118
- isReadOnly: true
119
- })
120
- },
121
- (...args: SqlValue[]): SqlValue => {
122
- for (const arg of args) {
123
- if (arg !== null) {
124
- return arg;
125
- }
126
- }
127
- return null;
128
- }
129
- );
130
-
131
- // --- nullif(X, Y) ---
132
- export const nullifFunc = createScalarFunction(
133
- {
134
- name: 'nullif',
135
- numArgs: 2,
136
- deterministic: true,
137
- // Type inference: return the type of the first argument (nullable)
138
- inferReturnType: (argTypes) => ({
139
- typeClass: 'scalar',
140
- logicalType: argTypes[0],
141
- nullable: true, // nullif can always return null
142
- isReadOnly: true
143
- })
144
- },
145
- (argX: SqlValue, argY: SqlValue): SqlValue => {
146
- const comparison = compareSqlValues(argX, argY);
147
- return comparison === 0 ? null : argX;
148
- }
149
- );
150
-
151
- // --- typeof(X) ---
152
- export const typeofFunc = createScalarFunction(
153
- { name: 'typeof', numArgs: 1, deterministic: true },
154
- (arg: SqlValue): SqlValue => {
155
- return getSqlDataTypeName(arg);
156
- }
157
- );
158
-
159
- // --- random() ---
160
- export const randomFunc = createScalarFunction(
161
- { name: 'random', numArgs: 0, deterministic: false },
162
- (): SqlValue => {
163
- const randomInt = Math.floor(Math.random() * (Number.MAX_SAFE_INTEGER - Number.MIN_SAFE_INTEGER + 1)) + Number.MIN_SAFE_INTEGER;
164
- return BigInt(randomInt);
165
- }
166
- );
167
-
168
- // --- randomblob(N) ---
169
- export const randomblobFunc = createScalarFunction(
170
- { name: 'randomblob', numArgs: 1, deterministic: false },
171
- (nVal: SqlValue): SqlValue => {
172
- if (typeof nVal !== 'number' && typeof nVal !== 'bigint') return null;
173
- const n = Number(nVal);
174
- if (!Number.isInteger(n) || n <= 0) return new Uint8Array(0);
175
- const byteLength = Math.min(n, 1024 * 1024); // Cap at 1MB
176
-
177
- const buffer = new Uint8Array(byteLength);
178
- for (let i = 0; i < byteLength; i++) {
179
- buffer[i] = Math.floor(Math.random() * 256);
180
- }
181
- return buffer;
182
- }
183
- );
184
-
185
- // --- iif(X, Y, Z) ---
186
- export const iifFunc = createScalarFunction(
187
- {
188
- name: 'iif',
189
- numArgs: 3,
190
- deterministic: true,
191
- // Type inference: find the common type between the true and false values
192
- inferReturnType: (argTypes) => ({
193
- typeClass: 'scalar',
194
- logicalType: findCommonType([argTypes[1], argTypes[2]]), // Common type of Y and Z
195
- nullable: true, // Could return either Y or Z, so nullable if either is
196
- isReadOnly: true
197
- })
198
- },
199
- (condition: SqlValue, trueVal: SqlValue, falseVal: SqlValue): SqlValue => {
200
- let isTrue: boolean;
201
- if (condition === null) {
202
- isTrue = false;
203
- } else if (typeof condition === 'number') {
204
- isTrue = condition !== 0;
205
- } else if (typeof condition === 'bigint') {
206
- isTrue = condition !== 0n;
207
- } else if (typeof condition === 'string') {
208
- const num = Number(condition);
209
- isTrue = !isNaN(num) && num !== 0;
210
- } else {
211
- isTrue = Boolean(condition);
212
- }
213
-
214
- return isTrue ? trueVal : falseVal;
215
- }
216
- );
217
-
218
- // --- sqrt(X) ---
219
- export const sqrtFunc = createScalarFunction(
220
- {
221
- name: 'sqrt',
222
- numArgs: 1,
223
- deterministic: true,
224
- // Type inference: sqrt always returns REAL (even for INTEGER input)
225
- inferReturnType: (argTypes) => ({
226
- typeClass: 'scalar',
227
- logicalType: argTypes[0].name === 'INTEGER' ? argTypes[0] : argTypes[0], // Keep input type
228
- nullable: false,
229
- isReadOnly: true
230
- }),
231
- validateArgTypes: (argTypes) => argTypes[0].isNumeric === true
232
- },
233
- (arg: SqlValue): SqlValue => {
234
- if (arg === null) return null;
235
- const num = Number(arg);
236
- if (isNaN(num) || num < 0) return null;
237
- return Math.sqrt(num);
238
- }
239
- );
240
-
241
- // --- pow(X, Y) / power(X, Y) ---
242
-
243
- const pow = (base: SqlValue, exponent: SqlValue): SqlValue => {
244
- if (base === null || exponent === null) return null;
245
- const numBase = Number(base);
246
- const numExp = Number(exponent);
247
- if (isNaN(numBase) || isNaN(numExp)) return null;
248
- return Math.pow(numBase, numExp);
249
- };
250
-
251
- export const powFunc = createScalarFunction(
252
- { name: 'pow', numArgs: 2, deterministic: true },
253
- pow
254
- );
255
-
256
- export const powerFunc = createScalarFunction(
257
- { name: 'power', numArgs: 2, deterministic: true },
258
- pow
259
- );
260
-
261
- // --- floor(X) ---
262
- export const floorFunc = createScalarFunction(
263
- {
264
- name: 'floor',
265
- numArgs: 1,
266
- deterministic: true,
267
- // Type inference: preserve input type
268
- inferReturnType: (argTypes) => ({
269
- typeClass: 'scalar',
270
- logicalType: argTypes[0],
271
- nullable: false,
272
- isReadOnly: true
273
- }),
274
- validateArgTypes: (argTypes) => argTypes[0].isNumeric === true
275
- },
276
- (arg: SqlValue): SqlValue => {
277
- if (arg === null) return null;
278
- const num = Number(arg);
279
- if (isNaN(num)) return null;
280
- return Math.floor(num);
281
- }
282
- );
283
-
284
- // --- ceil(X) / ceiling(X) ---
285
-
286
- const ceil = (arg: SqlValue): SqlValue => {
287
- if (arg === null) return null;
288
- const num = Number(arg);
289
- if (isNaN(num)) return null;
290
- return Math.ceil(num);
291
- };
292
-
293
- const ceilTypeInference = {
294
- inferReturnType: (argTypes: ReadonlyArray<DeepReadonly<LogicalType>>) => ({
295
- typeClass: 'scalar' as const,
296
- logicalType: argTypes[0],
297
- nullable: false,
298
- isReadOnly: true
299
- }),
300
- validateArgTypes: (argTypes: ReadonlyArray<DeepReadonly<LogicalType>>) => argTypes[0].isNumeric === true
301
- };
302
-
303
- export const ceilFunc = createScalarFunction(
304
- { name: 'ceil', numArgs: 1, deterministic: true, ...ceilTypeInference },
305
- ceil
306
- );
307
-
308
- export const ceilingFunc = createScalarFunction(
309
- { name: 'ceiling', numArgs: 1, deterministic: true, ...ceilTypeInference },
310
- ceil
311
- );
312
-
313
- // Math clamp function
314
- export const clampFunc = createScalarFunction(
315
- {
316
- name: 'clamp',
317
- numArgs: 3,
318
- deterministic: true,
319
- // Type inference: return the type of the first argument (value)
320
- inferReturnType: (argTypes) => ({
321
- typeClass: 'scalar',
322
- logicalType: argTypes[0],
323
- nullable: true,
324
- isReadOnly: true
325
- }),
326
- validateArgTypes: (argTypes) => argTypes[0].isNumeric === true && argTypes[1].isNumeric === true && argTypes[2].isNumeric === true
327
- },
328
- (value: SqlValue, min: SqlValue, max: SqlValue): SqlValue => {
329
- const v = Number(value);
330
- const minVal = Number(min);
331
- const maxVal = Number(max);
332
-
333
- if (isNaN(v) || isNaN(minVal) || isNaN(maxVal)) return null;
334
- return Math.max(minVal, Math.min(maxVal, v));
335
- }
336
- );
337
-
338
- // Greatest-of function
339
- export const greatestFunc = createScalarFunction(
340
- {
341
- name: 'greatest',
342
- numArgs: -1,
343
- deterministic: true,
344
- // Type inference: find the common type among all arguments
345
- inferReturnType: (argTypes) => ({
346
- typeClass: 'scalar',
347
- logicalType: findCommonType(argTypes),
348
- nullable: true,
349
- isReadOnly: true
350
- })
351
- },
352
- (...args: SqlValue[]): SqlValue => {
353
- if (args.length === 0) return null;
354
- return args.reduce((max, current) => {
355
- if (max === null || compareSqlValues(current, max) > 0) {
356
- return current;
357
- }
358
- return max;
359
- }, args[0]);
360
- }
361
- );
362
-
363
- // Least-of function
364
- export const leastFunc = createScalarFunction(
365
- {
366
- name: 'least',
367
- numArgs: -1,
368
- deterministic: true,
369
- // Type inference: find the common type among all arguments
370
- inferReturnType: (argTypes) => ({
371
- typeClass: 'scalar',
372
- logicalType: findCommonType(argTypes),
373
- nullable: true,
374
- isReadOnly: true
375
- })
376
- },
377
- (...args: SqlValue[]): SqlValue => {
378
- if (args.length === 0) return null;
379
- return args.reduce((min, current) => {
380
- if (min === null || compareSqlValues(current, min) < 0) {
381
- return current;
382
- }
383
- return min;
384
- }, args[0]);
385
- }
386
- );
387
-
388
- // Choose function
389
- export const chooseFunc = createScalarFunction(
390
- {
391
- name: 'choose',
392
- numArgs: -1,
393
- deterministic: true,
394
- // Type inference: find the common type among all value arguments (skip index at position 0)
395
- inferReturnType: (argTypes) => {
396
- if (argTypes.length < 2) {
397
- // Need at least index and one value
398
- return {
399
- typeClass: 'scalar',
400
- logicalType: argTypes[0] || ANY_TYPE,
401
- nullable: true,
402
- isReadOnly: true
403
- };
404
- }
405
- // Find common type among all value arguments (skip the index at position 0)
406
- const valueTypes = argTypes.slice(1);
407
- return {
408
- typeClass: 'scalar',
409
- logicalType: findCommonType(valueTypes),
410
- nullable: true,
411
- isReadOnly: true
412
- };
413
- }
414
- },
415
- (...args: SqlValue[]): SqlValue => {
416
- if (args.length === 0) return null;
417
- const index = Number(args[0]);
418
- if (isNaN(index) || index < 1 || index >= args.length) return null;
419
- return args[index];
420
- }
421
- );
422
-
423
- // Greatest-of function
@@ -1,213 +0,0 @@
1
- import type { Row } from "../../common/types.js";
2
- import type { SqlValue } from "../../common/types.js";
3
- import { createIntegratedTableValuedFunction } from "../registration.js";
4
- import { QuereusError } from "../../common/errors.js";
5
- import { StatusCode } from "../../common/types.js";
6
- import type { Database } from "../../core/database.js";
7
- import type { FunctionSchema } from "../../schema/function.js";
8
- import { isScalarFunctionSchema, isTableValuedFunctionSchema, isAggregateFunctionSchema, isWindowFunctionSchema } from "../../schema/function.js";
9
- import { Schema } from "../../schema/schema.js";
10
- import { INTEGER_TYPE, TEXT_TYPE } from "../../types/builtin-types.js";
11
- import { ColumnSchema } from "../../schema/column.js";
12
-
13
- /**
14
- * Generates a function signature string for display
15
- */
16
- function stringifyCreateFunction(func: FunctionSchema): string {
17
- const argsString = func.numArgs === -1
18
- ? '...' // Indicate variable arguments
19
- : Array(func.numArgs).fill('?').join(', ');
20
- return `FUNCTION ${func.name}(${argsString})`;
21
- }
22
-
23
- // Schema introspection function (table-valued function)
24
- export const schemaFunc = createIntegratedTableValuedFunction(
25
- {
26
- name: 'schema',
27
- numArgs: 0,
28
- deterministic: false, // Schema can change
29
- returnType: {
30
- typeClass: 'relation',
31
- isReadOnly: true,
32
- isSet: false,
33
- columns: [
34
- { name: 'type', type: { typeClass: 'scalar', logicalType: TEXT_TYPE, nullable: false, isReadOnly: true }, generated: true },
35
- { name: 'name', type: { typeClass: 'scalar', logicalType: TEXT_TYPE, nullable: false, isReadOnly: true }, generated: true },
36
- { name: 'tbl_name', type: { typeClass: 'scalar', logicalType: TEXT_TYPE, nullable: false, isReadOnly: true }, generated: true },
37
- { name: 'sql', type: { typeClass: 'scalar', logicalType: TEXT_TYPE, nullable: true, isReadOnly: true }, generated: true }
38
- ],
39
- keys: [],
40
- rowConstraints: []
41
- }
42
- },
43
- async function* (db: Database): AsyncIterable<Row> {
44
- try {
45
- const schemaManager = db.schemaManager;
46
-
47
- const processSchemaInstance = function* (schemaInstance: Schema) {
48
- // Process Tables
49
- for (const tableSchema of schemaInstance.getAllTables()) {
50
- let createSql: string | null = null;
51
- try {
52
- const columnsStr = tableSchema.columns.map((c: ColumnSchema) => `"${c.name}" ${c.logicalType.name}`).join(', ');
53
- const argsStr = Object.entries(tableSchema.vtabArgs ?? {}).map(([key, value]) => `${key}=${value}`).join(', ');
54
- createSql = `create table "${tableSchema.name}" (${columnsStr}) using ${tableSchema.vtabModuleName}(${argsStr})`;
55
- } catch {
56
- createSql = null;
57
- }
58
-
59
- yield [
60
- tableSchema.isView ? 'view' : 'table',
61
- tableSchema.name,
62
- tableSchema.name,
63
- createSql
64
- ] as Row;
65
- }
66
-
67
- // Process Functions
68
- for (const funcSchema of schemaInstance._getAllFunctions()) {
69
- yield [
70
- 'function',
71
- funcSchema.name,
72
- funcSchema.name,
73
- stringifyCreateFunction(funcSchema)
74
- ] as Row;
75
- }
76
- };
77
-
78
- // Process main schema
79
- yield* processSchemaInstance(schemaManager.getMainSchema());
80
-
81
- // Process temp schema
82
- yield* processSchemaInstance(schemaManager.getTempSchema());
83
-
84
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
85
- } catch (error: any) {
86
- // If schema introspection fails, yield an error row
87
- yield ['error', 'schema_error', 'schema_error', `Failed to introspect schema: ${error.message}`];
88
- }
89
- }
90
- );
91
-
92
- // Table information function (table-valued function)
93
- export const tableInfoFunc = createIntegratedTableValuedFunction(
94
- {
95
- name: 'table_info',
96
- numArgs: 1,
97
- deterministic: false, // Table structure can change
98
- returnType: {
99
- typeClass: 'relation',
100
- isReadOnly: true,
101
- isSet: false,
102
- columns: [
103
- { name: 'cid', type: { typeClass: 'scalar', logicalType: INTEGER_TYPE, nullable: false, isReadOnly: true }, generated: true },
104
- { name: 'name', type: { typeClass: 'scalar', logicalType: TEXT_TYPE, nullable: false, isReadOnly: true }, generated: true },
105
- { name: 'type', type: { typeClass: 'scalar', logicalType: TEXT_TYPE, nullable: false, isReadOnly: true }, generated: true },
106
- { name: 'notnull', type: { typeClass: 'scalar', logicalType: INTEGER_TYPE, nullable: false, isReadOnly: true }, generated: true },
107
- { name: 'dflt_value', type: { typeClass: 'scalar', logicalType: TEXT_TYPE, nullable: true, isReadOnly: true }, generated: true },
108
- { name: 'pk', type: { typeClass: 'scalar', logicalType: INTEGER_TYPE, nullable: false, isReadOnly: true }, generated: true }
109
- ],
110
- keys: [],
111
- rowConstraints: []
112
- }
113
- },
114
- async function* (db: Database, tableName: SqlValue): AsyncIterable<Row> {
115
- if (typeof tableName !== 'string') {
116
- throw new QuereusError('table_info() requires a table name string argument', StatusCode.ERROR);
117
- }
118
-
119
- try {
120
- const table = db._findTable(tableName);
121
- if (!table) {
122
- throw new QuereusError(`Table '${tableName}' not found`, StatusCode.ERROR);
123
- }
124
-
125
- for (let i = 0; i < table.columns.length; i++) {
126
- const column = table.columns[i];
127
- const isPrimaryKey = table.primaryKeyDefinition.some(pk => pk.index === i);
128
-
129
- yield [
130
- i, // cid
131
- column.name, // name
132
- column.logicalType.name, // type
133
- column.notNull ? 1 : 0, // notnull
134
- column.defaultValue?.toString() || null, // dflt_value
135
- isPrimaryKey ? 1 : 0 // pk
136
- ];
137
- }
138
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
139
- } catch (error: any) {
140
- // If table info fails, yield an error row
141
- yield [0, 'error', 'error', 1, `Failed to get table info: ${error.message}`, 0];
142
- }
143
- }
144
- );
145
-
146
- // Function information function (table-valued function)
147
- export const functionInfoFunc = createIntegratedTableValuedFunction(
148
- {
149
- name: 'function_info',
150
- numArgs: 0,
151
- deterministic: false, // Functions can change
152
- returnType: {
153
- typeClass: 'relation',
154
- isReadOnly: true,
155
- isSet: false,
156
- columns: [
157
- { name: 'name', type: { typeClass: 'scalar', logicalType: TEXT_TYPE, nullable: false, isReadOnly: true }, generated: true },
158
- { name: 'num_args', type: { typeClass: 'scalar', logicalType: INTEGER_TYPE, nullable: false, isReadOnly: true }, generated: true },
159
- { name: 'type', type: { typeClass: 'scalar', logicalType: TEXT_TYPE, nullable: false, isReadOnly: true }, generated: true },
160
- { name: 'deterministic', type: { typeClass: 'scalar', logicalType: INTEGER_TYPE, nullable: false, isReadOnly: true }, generated: true },
161
- { name: 'flags', type: { typeClass: 'scalar', logicalType: INTEGER_TYPE, nullable: false, isReadOnly: true }, generated: true },
162
- { name: 'signature', type: { typeClass: 'scalar', logicalType: TEXT_TYPE, nullable: false, isReadOnly: true }, generated: true }
163
- ],
164
- keys: [],
165
- rowConstraints: []
166
- }
167
- },
168
- async function* (db: Database): AsyncIterable<Row> {
169
- try {
170
- const schemaManager = db.schemaManager;
171
-
172
- const processFunctions = function* (schemaInstance: Schema) {
173
- for (const funcSchema of schemaInstance._getAllFunctions()) {
174
- const isDeterministic = (funcSchema.flags & 0x800) !== 0; // FunctionFlags.DETERMINISTIC
175
-
176
- // Determine function type based on schema type guards
177
- let functionType: string;
178
- if (isScalarFunctionSchema(funcSchema)) {
179
- functionType = 'scalar';
180
- } else if (isTableValuedFunctionSchema(funcSchema)) {
181
- functionType = 'table';
182
- } else if (isAggregateFunctionSchema(funcSchema)) {
183
- functionType = 'aggregate';
184
- } else if (isWindowFunctionSchema(funcSchema)) {
185
- functionType = 'window';
186
- } else {
187
- functionType = 'unknown';
188
- }
189
-
190
- yield [
191
- funcSchema.name, // name
192
- funcSchema.numArgs, // num_args
193
- functionType, // type
194
- isDeterministic ? 1 : 0, // deterministic
195
- funcSchema.flags, // flags
196
- stringifyCreateFunction(funcSchema) // signature
197
- ] as Row;
198
- }
199
- };
200
-
201
- // Process main schema functions
202
- yield* processFunctions(schemaManager.getMainSchema());
203
-
204
- // Process temp schema functions
205
- yield* processFunctions(schemaManager.getTempSchema());
206
-
207
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
208
- } catch (error: any) {
209
- // If function info fails, yield an error row
210
- yield ['error', -1, 'error', 0, 0, `Failed to get function info: ${error.message}`];
211
- }
212
- }
213
- );