@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,106 +0,0 @@
1
- import type { Instruction, InstructionRun, RuntimeContext } from '../types.js';
2
- import { emitPlanNode, createValidatedInstruction } from '../emitters.js';
3
- import { QuereusError } from '../../common/errors.js';
4
- import { StatusCode, type SqlValue, type Row } from '../../common/types.js';
5
- import type { FunctionSchema, IntegratedTableValuedFunc, TableValuedFunc } from '../../schema/function.js';
6
- import { isTableValuedFunctionSchema } from '../../schema/function.js';
7
- import type { EmissionContext } from '../emission-context.js';
8
- import type { TableFunctionCallNode } from '../../planner/nodes/table-function-call.js';
9
- import { buildRowDescriptor } from '../../util/row-descriptor.js';
10
- import { withRowContextGenerator } from '../context-helpers.js';
11
-
12
- export function emitTableValuedFunctionCall(plan: TableFunctionCallNode, ctx: EmissionContext): Instruction {
13
- const functionName = plan.functionName.toLowerCase();
14
- const numArgs = plan.operands.length;
15
-
16
- // Create row descriptor for function output attributes
17
- const rowDescriptor = buildRowDescriptor(plan.getAttributes());
18
-
19
- // Look up the function during emission and record the dependency
20
- // First try exact argument count, then try variable argument function
21
- let functionSchema = ctx.findFunction(functionName, numArgs);
22
- if (!functionSchema) {
23
- functionSchema = ctx.findFunction(functionName, -1); // Try variable argument function
24
- }
25
- if (!functionSchema) {
26
- throw new QuereusError(`Unknown function: ${functionName}/${numArgs}`, StatusCode.ERROR);
27
- }
28
- if (!isTableValuedFunctionSchema(functionSchema)) {
29
- throw new QuereusError(`Function ${functionName}/${numArgs} is not a table-valued function`, StatusCode.ERROR);
30
- }
31
-
32
- // Capture the function key for runtime retrieval (use the actual function's numArgs)
33
- const functionKey = `function:${functionName}/${functionSchema.numArgs}`;
34
-
35
- async function* runIntegrated(innerCtx: RuntimeContext, ...args: Array<SqlValue>): AsyncIterable<Row> {
36
- // Use the captured function schema instead of doing a fresh lookup
37
- const capturedFunction = ctx.getCapturedSchemaObject<FunctionSchema>(functionKey);
38
- if (!capturedFunction) {
39
- throw new QuereusError(`Function ${functionName}/${numArgs} was not captured during emission`, StatusCode.INTERNAL);
40
- }
41
-
42
- if (!isTableValuedFunctionSchema(capturedFunction)) {
43
- throw new QuereusError(`Function ${functionName}/${numArgs} is not a table-valued function at runtime`, StatusCode.INTERNAL);
44
- }
45
-
46
- try {
47
- // Check if this is a database-aware function
48
- const result = (capturedFunction.implementation as IntegratedTableValuedFunc)!(innerCtx.db, ...args);
49
-
50
- // Handle both direct AsyncIterable and Promise<AsyncIterable>
51
- const iterable = result instanceof Promise ? await result : result;
52
-
53
- yield* withRowContextGenerator(innerCtx, rowDescriptor, iterable, async function* (row) {
54
- yield row;
55
- });
56
- } catch (error: any) {
57
- throw new QuereusError(`Table-valued function ${functionName} failed: ${error.message}`, StatusCode.ERROR, error);
58
- }
59
- }
60
-
61
- async function* run(innerCtx: RuntimeContext, ...args: Array<SqlValue>): AsyncIterable<Row> {
62
- // Use the captured function schema instead of doing a fresh lookup
63
- const capturedFunction = ctx.getCapturedSchemaObject<FunctionSchema>(functionKey);
64
- if (!capturedFunction) {
65
- throw new QuereusError(`Function ${functionName}/${functionSchema!.numArgs} was not captured during emission`, StatusCode.INTERNAL);
66
- }
67
-
68
- if (!isTableValuedFunctionSchema(capturedFunction)) {
69
- throw new QuereusError(`Function ${functionName}/${numArgs} is not a table-valued function at runtime`, StatusCode.INTERNAL);
70
- }
71
-
72
- // Validate argument count for variable argument functions
73
- if (capturedFunction.numArgs === -1) {
74
- // Special validation for known variable argument functions
75
- if (functionName === 'json_each' || functionName === 'json_tree') {
76
- if (args.length < 1 || args.length > 2) {
77
- throw new QuereusError(`${functionName} requires 1 or 2 arguments (jsonSource, [rootPath])`, StatusCode.ERROR);
78
- }
79
- }
80
- }
81
-
82
- try {
83
- // Check if this is a database-aware function
84
- const result = (capturedFunction.implementation as TableValuedFunc)!(...args);
85
-
86
- // Handle both direct AsyncIterable and Promise<AsyncIterable>
87
- const iterable = result instanceof Promise ? await result : result;
88
-
89
- yield* withRowContextGenerator(innerCtx, rowDescriptor, iterable, async function* (row) {
90
- yield row;
91
- });
92
- } catch (error: any) {
93
- throw new QuereusError(`Table-valued function ${functionName} failed: ${error.message}`, StatusCode.ERROR, error);
94
- }
95
- }
96
-
97
- const operandExprs = plan.operands.map(operand => emitPlanNode(operand, ctx));
98
- const runFunction = functionSchema.isIntegrated ? runIntegrated : run;
99
-
100
- return createValidatedInstruction(
101
- [...operandExprs],
102
- runFunction as InstructionRun,
103
- ctx,
104
- `TVF:${plan.functionName}(${plan.operands.length})`
105
- );
106
- }
@@ -1,302 +0,0 @@
1
- import { StatusCode } from "../../common/types.js";
2
- import { QuereusError } from "../../common/errors.js";
3
- import type { SqlValue } from "../../common/types.js";
4
- import type { Instruction, InstructionRun, RuntimeContext } from "../types.js";
5
- import type { BinaryOpNode } from "../../planner/nodes/scalar.js";
6
- import { emitPlanNode } from "../emitters.js";
7
- import type { EmissionContext } from "../emission-context.js";
8
- import { Temporal } from 'temporal-polyfill';
9
- import { TIMESPAN_TYPE } from "../../types/temporal-types.js";
10
-
11
- /**
12
- * Check if a value is a date string (YYYY-MM-DD format)
13
- */
14
- function isDateValue(v: SqlValue): boolean {
15
- if (typeof v !== 'string') return false;
16
- // Simple check for ISO 8601 date format
17
- return /^\d{4}-\d{2}-\d{2}$/.test(v);
18
- }
19
-
20
- /**
21
- * Check if a value is a time string (HH:MM:SS format)
22
- */
23
- function isTimeValue(v: SqlValue): boolean {
24
- if (typeof v !== 'string') return false;
25
- // Simple check for ISO 8601 time format
26
- return /^\d{2}:\d{2}:\d{2}/.test(v);
27
- }
28
-
29
- /**
30
- * Check if a value is a datetime string (ISO 8601 format)
31
- */
32
- function isDateTimeValue(v: SqlValue): boolean {
33
- if (typeof v !== 'string') return false;
34
- // Check for ISO 8601 datetime format (with T separator)
35
- return v.includes('T') && /^\d{4}-\d{2}-\d{2}T/.test(v);
36
- }
37
-
38
- /**
39
- * Check if a value is a timespan/duration string (ISO 8601 duration format)
40
- */
41
- function isTimespanValue(v: SqlValue): boolean {
42
- if (typeof v !== 'string') return false;
43
- // ISO 8601 duration starts with P (or -P for negative)
44
- return v.startsWith('P') || v.startsWith('-P');
45
- }
46
-
47
- /**
48
- * Try to perform temporal arithmetic on two values.
49
- * Returns the result if successful, or undefined if the values are not temporal types.
50
- * Throws QuereusError if the operation is invalid.
51
- */
52
- export function tryTemporalArithmetic(operator: string, v1: SqlValue, v2: SqlValue): SqlValue | undefined {
53
- if (v1 === null || v2 === null) return null;
54
-
55
- // Detect types at runtime
56
- const isV1Date = isDateValue(v1);
57
- const isV1Time = isTimeValue(v1);
58
- const isV1DateTime = isDateTimeValue(v1);
59
- const isV1Timespan = isTimespanValue(v1);
60
-
61
- const isV2Date = isDateValue(v2);
62
- const isV2Time = isTimeValue(v2);
63
- const isV2DateTime = isDateTimeValue(v2);
64
- const isV2Timespan = isTimespanValue(v2);
65
-
66
- // If neither operand is temporal, return undefined to signal non-temporal operation
67
- const isV1Temporal = isV1Date || isV1Time || isV1DateTime || isV1Timespan;
68
- const isV2Temporal = isV2Date || isV2Time || isV2DateTime || isV2Timespan;
69
- if (!isV1Temporal && !isV2Temporal) {
70
- return undefined;
71
- }
72
-
73
- try {
74
-
75
- // DATE/DATETIME - DATE/DATETIME → TIMESPAN
76
- if (operator === '-' &&
77
- (isV1Date || isV1DateTime) &&
78
- (isV2Date || isV2DateTime)) {
79
-
80
- // Parse both values as dates
81
- const date1 = isV1DateTime
82
- ? Temporal.PlainDateTime.from(v1 as string).toPlainDate()
83
- : Temporal.PlainDate.from(v1 as string);
84
- const date2 = isV2DateTime
85
- ? Temporal.PlainDateTime.from(v2 as string).toPlainDate()
86
- : Temporal.PlainDate.from(v2 as string);
87
-
88
- const duration = date1.since(date2);
89
- return duration.toString();
90
- }
91
-
92
- // TIME - TIME → TIMESPAN
93
- if (operator === '-' && isV1Time && isV2Time) {
94
- const time1 = Temporal.PlainTime.from(v1 as string);
95
- const time2 = Temporal.PlainTime.from(v2 as string);
96
- const duration = time1.since(time2);
97
- return duration.toString();
98
- }
99
-
100
- // DATE + TIMESPAN → DATE
101
- if (operator === '+' && isV1Date && isV2Timespan) {
102
- const date = Temporal.PlainDate.from(v1 as string);
103
- const duration = Temporal.Duration.from(v2 as string);
104
- const result = date.add(duration);
105
- return result.toString();
106
- }
107
-
108
- // TIMESPAN + DATE → DATE (commutative)
109
- if (operator === '+' && isV1Timespan && isV2Date) {
110
- const duration = Temporal.Duration.from(v1 as string);
111
- const date = Temporal.PlainDate.from(v2 as string);
112
- const result = date.add(duration);
113
- return result.toString();
114
- }
115
-
116
- // DATE - TIMESPAN → DATE
117
- if (operator === '-' && isV1Date && isV2Timespan) {
118
- const date = Temporal.PlainDate.from(v1 as string);
119
- const duration = Temporal.Duration.from(v2 as string);
120
- const result = date.subtract(duration);
121
- return result.toString();
122
- }
123
-
124
- // DATETIME + TIMESPAN → DATETIME
125
- if (operator === '+' && isV1DateTime && isV2Timespan) {
126
- const dt = Temporal.PlainDateTime.from(v1 as string);
127
- const duration = Temporal.Duration.from(v2 as string);
128
- const result = dt.add(duration);
129
- return result.toString();
130
- }
131
-
132
- // TIMESPAN + DATETIME → DATETIME (commutative)
133
- if (operator === '+' && isV1Timespan && isV2DateTime) {
134
- const duration = Temporal.Duration.from(v1 as string);
135
- const dt = Temporal.PlainDateTime.from(v2 as string);
136
- const result = dt.add(duration);
137
- return result.toString();
138
- }
139
-
140
- // DATETIME - TIMESPAN → DATETIME
141
- if (operator === '-' && isV1DateTime && isV2Timespan) {
142
- const dt = Temporal.PlainDateTime.from(v1 as string);
143
- const duration = Temporal.Duration.from(v2 as string);
144
- const result = dt.subtract(duration);
145
- return result.toString();
146
- }
147
-
148
- // TIME + TIMESPAN → TIME
149
- if (operator === '+' && isV1Time && isV2Timespan) {
150
- const time = Temporal.PlainTime.from(v1 as string);
151
- const duration = Temporal.Duration.from(v2 as string);
152
- const result = time.add(duration);
153
- return result.toString();
154
- }
155
-
156
- // TIMESPAN + TIME → TIME (commutative)
157
- if (operator === '+' && isV1Timespan && isV2Time) {
158
- const duration = Temporal.Duration.from(v1 as string);
159
- const time = Temporal.PlainTime.from(v2 as string);
160
- const result = time.add(duration);
161
- return result.toString();
162
- }
163
-
164
- // TIME - TIMESPAN → TIME
165
- if (operator === '-' && isV1Time && isV2Timespan) {
166
- const time = Temporal.PlainTime.from(v1 as string);
167
- const duration = Temporal.Duration.from(v2 as string);
168
- const result = time.subtract(duration);
169
- return result.toString();
170
- }
171
-
172
- // TIMESPAN + TIMESPAN → TIMESPAN
173
- if (operator === '+' && isV1Timespan && isV2Timespan) {
174
- const d1 = Temporal.Duration.from(v1 as string);
175
- const d2 = Temporal.Duration.from(v2 as string);
176
- const result = d1.add(d2);
177
- return result.toString();
178
- }
179
-
180
- // TIMESPAN - TIMESPAN → TIMESPAN
181
- if (operator === '-' && isV1Timespan && isV2Timespan) {
182
- const d1 = Temporal.Duration.from(v1 as string);
183
- const d2 = Temporal.Duration.from(v2 as string);
184
- const result = d1.subtract(d2);
185
- return result.toString();
186
- }
187
-
188
- // TIMESPAN * NUMBER → TIMESPAN
189
- if (operator === '*' && isV1Timespan && typeof v2 === 'number') {
190
- const duration = Temporal.Duration.from(v1 as string);
191
- // Convert to seconds, multiply, convert back
192
- const totalSeconds = duration.total({ unit: 'seconds' });
193
- const newDuration = Temporal.Duration.from({ seconds: totalSeconds * v2 });
194
- return newDuration.toString();
195
- }
196
-
197
- // NUMBER * TIMESPAN → TIMESPAN (commutative)
198
- if (operator === '*' && typeof v1 === 'number' && isV2Timespan) {
199
- const duration = Temporal.Duration.from(v2 as string);
200
- const totalSeconds = duration.total({ unit: 'seconds' });
201
- const newDuration = Temporal.Duration.from({ seconds: totalSeconds * v1 });
202
- return newDuration.toString();
203
- }
204
-
205
- // TIMESPAN / NUMBER → TIMESPAN
206
- if (operator === '/' && isV1Timespan && typeof v2 === 'number') {
207
- if (v2 === 0) return null;
208
- const duration = Temporal.Duration.from(v1 as string);
209
- const totalSeconds = duration.total({ unit: 'seconds' });
210
- const newDuration = Temporal.Duration.from({ seconds: totalSeconds / v2 });
211
- return newDuration.toString();
212
- }
213
-
214
- // TIMESPAN / TIMESPAN → NUMBER (ratio)
215
- if (operator === '/' && isV1Timespan && isV2Timespan) {
216
- const d1 = Temporal.Duration.from(v1 as string);
217
- const d2 = Temporal.Duration.from(v2 as string);
218
- const total1 = d1.total({ unit: 'seconds' });
219
- const total2 = d2.total({ unit: 'seconds' });
220
- if (total2 === 0) return null;
221
- return total1 / total2;
222
- }
223
-
224
- // If we get here, the operation is not supported
225
- throw new QuereusError(
226
- `Unsupported temporal operation`,
227
- StatusCode.UNSUPPORTED
228
- );
229
- } catch (e) {
230
- // Invalid temporal operation - return null
231
- if (e instanceof QuereusError) throw e;
232
- return null;
233
- }
234
- }
235
-
236
- /**
237
- * Emit temporal arithmetic operations
238
- * Handles operations between temporal types (DATE, TIME, DATETIME, TIMESPAN)
239
- */
240
- export function emitTemporalArithmetic(plan: BinaryOpNode, ctx: EmissionContext): Instruction {
241
- const operator = plan.expression.operator;
242
-
243
- function run(ctx: RuntimeContext, v1: SqlValue, v2: SqlValue): SqlValue {
244
- return tryTemporalArithmetic(operator, v1, v2) ?? null;
245
- }
246
-
247
- const leftExpr = emitPlanNode(plan.left, ctx);
248
- const rightExpr = emitPlanNode(plan.right, ctx);
249
-
250
- return {
251
- params: [leftExpr, rightExpr],
252
- run: run as InstructionRun,
253
- note: `${operator}(temporal)`
254
- };
255
- }
256
-
257
- /**
258
- * Attempts to perform temporal comparison. Returns undefined if not a temporal comparison.
259
- * This allows the caller to fall back to standard comparison logic.
260
- *
261
- * Temporal types that need special comparison logic (beyond lexicographic string comparison):
262
- * - TIMESPAN: Durations need to be compared semantically, not lexicographically
263
- * (e.g., "PT30M" > "PT1H" lexicographically, but 30 minutes < 1 hour semantically)
264
- *
265
- * Note: DATE, TIME, and DATETIME use ISO 8601 format which compares correctly lexicographically,
266
- * so they don't need special handling here.
267
- *
268
- * @param operator The comparison operator (=, !=, <, <=, >, >=)
269
- * @param v1 First value
270
- * @param v2 Second value
271
- * @returns Comparison result (boolean) if temporal comparison, undefined otherwise
272
- */
273
- export function tryTemporalComparison(operator: string, v1: SqlValue, v2: SqlValue): SqlValue | undefined {
274
- // Check if both values are timespans
275
- // Timespans are the only temporal type that needs special comparison logic
276
- // because ISO 8601 duration strings don't compare correctly lexicographically
277
- if (!isTimespanValue(v1) || !isTimespanValue(v2)) {
278
- return undefined;
279
- }
280
-
281
- // Use the TIMESPAN_TYPE's compare function
282
- const cmp = TIMESPAN_TYPE.compare!(v1, v2);
283
-
284
- switch (operator) {
285
- case '=':
286
- case '==':
287
- return cmp === 0;
288
- case '!=':
289
- case '<>':
290
- return cmp !== 0;
291
- case '<':
292
- return cmp < 0;
293
- case '<=':
294
- return cmp <= 0;
295
- case '>':
296
- return cmp > 0;
297
- case '>=':
298
- return cmp >= 0;
299
- default:
300
- return undefined;
301
- }
302
- }
@@ -1,205 +0,0 @@
1
- import type { EmissionContext } from '../emission-context.js';
2
- import type { TransactionNode } from '../../planner/nodes/transaction-node.js';
3
- import type { Instruction, RuntimeContext, InstructionRun } from '../types.js';
4
- import type { SqlValue } from '../../common/types.js';
5
- import { createLogger } from '../../common/logger.js';
6
- import { quereusError } from '../../common/errors.js';
7
- import { StatusCode } from '../../common/types.js';
8
-
9
- const log = createLogger('runtime:emit:transaction');
10
-
11
- // Simple hash function to convert savepoint names to indices
12
- function hashSavepointName(name: string): number {
13
- let hash = 0;
14
- for (let i = 0; i < name.length; i++) {
15
- const char = name.charCodeAt(i);
16
- hash = ((hash << 5) - hash) + char;
17
- hash = hash & hash; // Convert to 32-bit integer
18
- }
19
- return Math.abs(hash);
20
- }
21
-
22
- export function emitTransaction(plan: TransactionNode, _ctx: EmissionContext): Instruction {
23
- // Select the operation function at emit time
24
- let run: (ctx: RuntimeContext) => Promise<SqlValue | undefined>;
25
- let note: string;
26
-
27
- switch (plan.operation) {
28
- case 'begin': {
29
- run = async (rctx: RuntimeContext) => {
30
- const connections = rctx.db.getAllConnections();
31
- log(`BEGIN: Found ${connections.length} active connections`);
32
-
33
- for (const connection of connections) {
34
- try {
35
- await connection.begin();
36
- log(`BEGIN: Successfully called on connection ${connection.connectionId}`);
37
- } catch (error) {
38
- log(`BEGIN: Error on connection ${connection.connectionId}: %O`, error);
39
- throw error;
40
- }
41
- }
42
- // Reflect explicit transaction state in Database
43
- rctx.db.markExplicitTransactionStart();
44
- // Reset any prior change tracking at the start of an explicit transaction
45
- rctx.db._clearChangeLog();
46
- return null;
47
- };
48
- note = 'BEGIN';
49
- break;
50
- }
51
- case 'commit': {
52
- run = async (rctx: RuntimeContext) => {
53
- // Snapshot connections before evaluating deferred constraints
54
- // (constraint evaluation may open additional connections that shouldn't be committed)
55
- const connectionsToCommit = rctx.db.getAllConnections();
56
- log(`COMMIT: Found ${connectionsToCommit.length} active connections`);
57
-
58
- try {
59
- // Evaluate global assertions and deferred row-level constraints BEFORE committing connections.
60
- await rctx.db.runGlobalAssertions();
61
- await rctx.db.runDeferredRowConstraints();
62
-
63
- // Mark coordinated commit to relax layer validation for sibling layers
64
- rctx.db._beginCoordinatedCommit();
65
- try {
66
- // Commit sequentially to avoid race conditions with layer promotion
67
- for (const connection of connectionsToCommit) {
68
- try {
69
- await connection.commit();
70
- log(`COMMIT: Successfully called on connection ${connection.connectionId}`);
71
- } catch (error) {
72
- log(`COMMIT: Error on connection ${connection.connectionId}: %O`, error);
73
- throw error;
74
- }
75
- }
76
- } finally {
77
- rctx.db._endCoordinatedCommit();
78
- }
79
- } catch (e) {
80
- // If assertions fail (or a commit throws), rollback all connections
81
- await Promise.allSettled(rctx.db.getAllConnections().map(c => c.rollback()));
82
- throw e;
83
- } finally {
84
- // Always mark end of explicit transaction and clear change tracking
85
- rctx.db.markExplicitTransactionEnd();
86
- rctx.db._clearChangeLog();
87
- }
88
- return null;
89
- };
90
- note = 'COMMIT';
91
- break;
92
- }
93
-
94
- case 'rollback': {
95
- if (plan.savepoint) {
96
- const savepointIndex = hashSavepointName(plan.savepoint); // Convert name to index
97
- run = async (rctx: RuntimeContext) => {
98
- const connections = rctx.db.getAllConnections();
99
- log(`ROLLBACK TO SAVEPOINT ${savepointIndex}: Found ${connections.length} active connections`);
100
-
101
- for (const connection of connections) {
102
- try {
103
- await connection.rollbackToSavepoint(savepointIndex);
104
- log(`ROLLBACK TO SAVEPOINT ${savepointIndex}: Successfully called on connection ${connection.connectionId}`);
105
- } catch (error) {
106
- log(`ROLLBACK TO SAVEPOINT ${savepointIndex}: Error on connection ${connection.connectionId}: %O`, error);
107
- throw error;
108
- }
109
- }
110
- // Discard top change layer
111
- rctx.db._rollbackSavepointLayer();
112
- return null;
113
- };
114
- note = `ROLLBACK TO SAVEPOINT ${plan.savepoint}`;
115
- } else {
116
- run = async (rctx: RuntimeContext) => {
117
- const connections = rctx.db.getAllConnections();
118
- log(`ROLLBACK: Found ${connections.length} active connections`);
119
-
120
- for (const connection of connections) {
121
- try {
122
- await connection.rollback();
123
- log(`ROLLBACK: Successfully called on connection ${connection.connectionId}`);
124
- } catch (error) {
125
- log(`ROLLBACK: Error on connection ${connection.connectionId}: %O`, error);
126
- throw error;
127
- }
128
- }
129
- // Reflect explicit transaction end and clear change tracking
130
- rctx.db.markExplicitTransactionEnd();
131
- rctx.db._clearChangeLog();
132
- return null;
133
- };
134
- note = 'ROLLBACK';
135
- }
136
- break;
137
- }
138
-
139
- case 'savepoint': {
140
- if (!plan.savepoint) {
141
- quereusError('Savepoint name is required for SAVEPOINT operation', StatusCode.MISUSE);
142
- }
143
- const savepointIndex = hashSavepointName(plan.savepoint); // Convert name to index
144
- run = async (rctx: RuntimeContext) => {
145
- const connections = rctx.db.getAllConnections();
146
- log(`SAVEPOINT ${savepointIndex}: Found ${connections.length} active connections`);
147
-
148
- for (const connection of connections) {
149
- try {
150
- await connection.createSavepoint(savepointIndex);
151
- log(`SAVEPOINT ${savepointIndex}: Successfully called on connection ${connection.connectionId}`);
152
- } catch (error) {
153
- log(`SAVEPOINT ${savepointIndex}: Error on connection ${connection.connectionId}: %O`, error);
154
- throw error;
155
- }
156
- }
157
- // Mark database as in explicit transaction (savepoints require explicit transaction context)
158
- rctx.db.markExplicitTransactionStart();
159
- // Track change layer
160
- rctx.db._beginSavepointLayer();
161
- return null;
162
- };
163
- note = `SAVEPOINT ${plan.savepoint}`;
164
- break;
165
- }
166
-
167
- case 'release': {
168
- if (!plan.savepoint) {
169
- quereusError('Savepoint name is required for RELEASE operation', StatusCode.MISUSE);
170
- }
171
- const releaseSavepointIndex = hashSavepointName(plan.savepoint); // Convert name to index
172
- run = async (rctx: RuntimeContext) => {
173
- const connections = rctx.db.getAllConnections();
174
- log(`RELEASE SAVEPOINT ${releaseSavepointIndex}: Found ${connections.length} active connections`);
175
-
176
- for (const connection of connections) {
177
- try {
178
- await connection.releaseSavepoint(releaseSavepointIndex);
179
- log(`RELEASE SAVEPOINT ${releaseSavepointIndex}: Successfully called on connection ${connection.connectionId}`);
180
- } catch (error) {
181
- log(`RELEASE SAVEPOINT ${releaseSavepointIndex}: Error on connection ${connection.connectionId}: %O`, error);
182
- throw error;
183
- }
184
- }
185
- // Merge top change layer into below
186
- rctx.db._releaseSavepointLayer();
187
- return null;
188
- };
189
- note = `RELEASE SAVEPOINT ${plan.savepoint}`;
190
- break;
191
- }
192
-
193
- default:
194
- quereusError(
195
- `Unsupported transaction operation: ${plan.operation}`,
196
- StatusCode.UNSUPPORTED
197
- );
198
- }
199
-
200
- return {
201
- params: [],
202
- run: run as InstructionRun,
203
- note
204
- };
205
- }