@quereus/quereus 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1198) hide show
  1. package/README.md +228 -0
  2. package/dist/src/common/constants.d.ts +49 -0
  3. package/dist/src/common/constants.d.ts.map +1 -0
  4. package/dist/src/common/constants.js +62 -0
  5. package/dist/src/common/constants.js.map +1 -0
  6. package/dist/src/common/datatype.d.ts +72 -0
  7. package/dist/src/common/datatype.d.ts.map +1 -0
  8. package/dist/src/common/datatype.js +10 -0
  9. package/dist/src/common/datatype.js.map +1 -0
  10. package/dist/src/common/errors.d.ts +90 -0
  11. package/dist/src/common/errors.d.ts.map +1 -0
  12. package/dist/src/common/errors.js +142 -0
  13. package/dist/src/common/errors.js.map +1 -0
  14. package/dist/src/common/logger.d.ts +18 -0
  15. package/dist/src/common/logger.d.ts.map +1 -0
  16. package/dist/src/common/logger.js +22 -0
  17. package/dist/src/common/logger.js.map +1 -0
  18. package/dist/src/common/type-inference.d.ts +11 -0
  19. package/dist/src/common/type-inference.d.ts.map +1 -0
  20. package/dist/src/common/type-inference.js +44 -0
  21. package/dist/src/common/type-inference.js.map +1 -0
  22. package/dist/src/common/types.d.ts +131 -0
  23. package/dist/src/common/types.d.ts.map +1 -0
  24. package/dist/src/common/types.js +53 -0
  25. package/dist/src/common/types.js.map +1 -0
  26. package/dist/src/core/database-options.d.ts +67 -0
  27. package/dist/src/core/database-options.d.ts.map +1 -0
  28. package/dist/src/core/database-options.js +211 -0
  29. package/dist/src/core/database-options.js.map +1 -0
  30. package/dist/src/core/database.d.ts +214 -0
  31. package/dist/src/core/database.d.ts.map +1 -0
  32. package/dist/src/core/database.js +750 -0
  33. package/dist/src/core/database.js.map +1 -0
  34. package/dist/src/core/param.d.ts +4 -0
  35. package/dist/src/core/param.d.ts.map +1 -0
  36. package/dist/src/core/param.js +46 -0
  37. package/dist/src/core/param.js.map +1 -0
  38. package/dist/src/core/statement.d.ts +94 -0
  39. package/dist/src/core/statement.d.ts.map +1 -0
  40. package/dist/src/core/statement.js +482 -0
  41. package/dist/src/core/statement.js.map +1 -0
  42. package/dist/src/func/builtins/aggregate.d.ts +13 -0
  43. package/dist/src/func/builtins/aggregate.d.ts.map +1 -0
  44. package/dist/src/func/builtins/aggregate.js +190 -0
  45. package/dist/src/func/builtins/aggregate.js.map +1 -0
  46. package/dist/src/func/builtins/builtin-window-functions.d.ts +2 -0
  47. package/dist/src/func/builtins/builtin-window-functions.d.ts.map +1 -0
  48. package/dist/src/func/builtins/builtin-window-functions.js +161 -0
  49. package/dist/src/func/builtins/builtin-window-functions.js.map +1 -0
  50. package/dist/src/func/builtins/datetime.d.ts +6 -0
  51. package/dist/src/func/builtins/datetime.d.ts.map +1 -0
  52. package/dist/src/func/builtins/datetime.js +417 -0
  53. package/dist/src/func/builtins/datetime.js.map +1 -0
  54. package/dist/src/func/builtins/explain.d.ts +7 -0
  55. package/dist/src/func/builtins/explain.d.ts.map +1 -0
  56. package/dist/src/func/builtins/explain.js +570 -0
  57. package/dist/src/func/builtins/explain.js.map +1 -0
  58. package/dist/src/func/builtins/generation.d.ts +2 -0
  59. package/dist/src/func/builtins/generation.d.ts.map +1 -0
  60. package/dist/src/func/builtins/generation.js +36 -0
  61. package/dist/src/func/builtins/generation.js.map +1 -0
  62. package/dist/src/func/builtins/index.d.ts +4 -0
  63. package/dist/src/func/builtins/index.d.ts.map +1 -0
  64. package/dist/src/func/builtins/index.js +106 -0
  65. package/dist/src/func/builtins/index.js.map +1 -0
  66. package/dist/src/func/builtins/json-helpers.d.ts +64 -0
  67. package/dist/src/func/builtins/json-helpers.d.ts.map +1 -0
  68. package/dist/src/func/builtins/json-helpers.js +237 -0
  69. package/dist/src/func/builtins/json-helpers.js.map +1 -0
  70. package/dist/src/func/builtins/json-tvf.d.ts +3 -0
  71. package/dist/src/func/builtins/json-tvf.d.ts.map +1 -0
  72. package/dist/src/func/builtins/json-tvf.js +199 -0
  73. package/dist/src/func/builtins/json-tvf.js.map +1 -0
  74. package/dist/src/func/builtins/json.d.ts +15 -0
  75. package/dist/src/func/builtins/json.d.ts.map +1 -0
  76. package/dist/src/func/builtins/json.js +417 -0
  77. package/dist/src/func/builtins/json.js.map +1 -0
  78. package/dist/src/func/builtins/scalar.d.ts +19 -0
  79. package/dist/src/func/builtins/scalar.d.ts.map +1 -0
  80. package/dist/src/func/builtins/scalar.js +176 -0
  81. package/dist/src/func/builtins/scalar.js.map +1 -0
  82. package/dist/src/func/builtins/schema.d.ts +4 -0
  83. package/dist/src/func/builtins/schema.d.ts.map +1 -0
  84. package/dist/src/func/builtins/schema.js +167 -0
  85. package/dist/src/func/builtins/schema.js.map +1 -0
  86. package/dist/src/func/builtins/string.d.ts +18 -0
  87. package/dist/src/func/builtins/string.d.ts.map +1 -0
  88. package/dist/src/func/builtins/string.js +233 -0
  89. package/dist/src/func/builtins/string.js.map +1 -0
  90. package/dist/src/func/context.d.ts +102 -0
  91. package/dist/src/func/context.d.ts.map +1 -0
  92. package/dist/src/func/context.js +130 -0
  93. package/dist/src/func/context.js.map +1 -0
  94. package/dist/src/func/registration.d.ts +89 -0
  95. package/dist/src/func/registration.d.ts.map +1 -0
  96. package/dist/src/func/registration.js +103 -0
  97. package/dist/src/func/registration.js.map +1 -0
  98. package/dist/src/index.d.ts +34 -0
  99. package/dist/src/index.d.ts.map +1 -0
  100. package/dist/src/index.js +35 -0
  101. package/dist/src/index.js.map +1 -0
  102. package/dist/src/parser/ast.d.ts +376 -0
  103. package/dist/src/parser/ast.d.ts.map +1 -0
  104. package/dist/src/parser/ast.js +2 -0
  105. package/dist/src/parser/ast.js.map +1 -0
  106. package/dist/src/parser/index.d.ts +29 -0
  107. package/dist/src/parser/index.d.ts.map +1 -0
  108. package/dist/src/parser/index.js +50 -0
  109. package/dist/src/parser/index.js.map +1 -0
  110. package/dist/src/parser/lexer.d.ts +197 -0
  111. package/dist/src/parser/lexer.d.ts.map +1 -0
  112. package/dist/src/parser/lexer.js +762 -0
  113. package/dist/src/parser/lexer.js.map +1 -0
  114. package/dist/src/parser/parser.d.ts +216 -0
  115. package/dist/src/parser/parser.d.ts.map +1 -0
  116. package/dist/src/parser/parser.js +2619 -0
  117. package/dist/src/parser/parser.js.map +1 -0
  118. package/dist/src/parser/utils.d.ts +4 -0
  119. package/dist/src/parser/utils.d.ts.map +1 -0
  120. package/dist/src/parser/utils.js +8 -0
  121. package/dist/src/parser/utils.js.map +1 -0
  122. package/dist/src/parser/visitor.d.ts +38 -0
  123. package/dist/src/parser/visitor.d.ts.map +1 -0
  124. package/dist/src/parser/visitor.js +153 -0
  125. package/dist/src/parser/visitor.js.map +1 -0
  126. package/dist/src/planner/analysis/const-evaluator.d.ts +14 -0
  127. package/dist/src/planner/analysis/const-evaluator.d.ts.map +1 -0
  128. package/dist/src/planner/analysis/const-evaluator.js +50 -0
  129. package/dist/src/planner/analysis/const-evaluator.js.map +1 -0
  130. package/dist/src/planner/analysis/const-pass.d.ts +51 -0
  131. package/dist/src/planner/analysis/const-pass.d.ts.map +1 -0
  132. package/dist/src/planner/analysis/const-pass.js +200 -0
  133. package/dist/src/planner/analysis/const-pass.js.map +1 -0
  134. package/dist/src/planner/analysis/constraint-extractor.d.ts +57 -0
  135. package/dist/src/planner/analysis/constraint-extractor.d.ts.map +1 -0
  136. package/dist/src/planner/analysis/constraint-extractor.js +193 -0
  137. package/dist/src/planner/analysis/constraint-extractor.js.map +1 -0
  138. package/dist/src/planner/building/alter-table.d.ts +5 -0
  139. package/dist/src/planner/building/alter-table.d.ts.map +1 -0
  140. package/dist/src/planner/building/alter-table.js +26 -0
  141. package/dist/src/planner/building/alter-table.js.map +1 -0
  142. package/dist/src/planner/building/block.d.ts +5 -0
  143. package/dist/src/planner/building/block.d.ts.map +1 -0
  144. package/dist/src/planner/building/block.js +68 -0
  145. package/dist/src/planner/building/block.js.map +1 -0
  146. package/dist/src/planner/building/create-view.d.ts +8 -0
  147. package/dist/src/planner/building/create-view.d.ts.map +1 -0
  148. package/dist/src/planner/building/create-view.js +37 -0
  149. package/dist/src/planner/building/create-view.js.map +1 -0
  150. package/dist/src/planner/building/ddl.d.ts +7 -0
  151. package/dist/src/planner/building/ddl.d.ts.map +1 -0
  152. package/dist/src/planner/building/ddl.js +9 -0
  153. package/dist/src/planner/building/ddl.js.map +1 -0
  154. package/dist/src/planner/building/delete.d.ts +5 -0
  155. package/dist/src/planner/building/delete.d.ts.map +1 -0
  156. package/dist/src/planner/building/delete.js +105 -0
  157. package/dist/src/planner/building/delete.js.map +1 -0
  158. package/dist/src/planner/building/drop-table.d.ts +5 -0
  159. package/dist/src/planner/building/drop-table.d.ts.map +1 -0
  160. package/dist/src/planner/building/drop-table.js +5 -0
  161. package/dist/src/planner/building/drop-table.js.map +1 -0
  162. package/dist/src/planner/building/drop-view.d.ts +8 -0
  163. package/dist/src/planner/building/drop-view.d.ts.map +1 -0
  164. package/dist/src/planner/building/drop-view.js +11 -0
  165. package/dist/src/planner/building/drop-view.js.map +1 -0
  166. package/dist/src/planner/building/expression.d.ts +5 -0
  167. package/dist/src/planner/building/expression.d.ts.map +1 -0
  168. package/dist/src/planner/building/expression.js +147 -0
  169. package/dist/src/planner/building/expression.js.map +1 -0
  170. package/dist/src/planner/building/function-call.d.ts +5 -0
  171. package/dist/src/planner/building/function-call.d.ts.map +1 -0
  172. package/dist/src/planner/building/function-call.js +70 -0
  173. package/dist/src/planner/building/function-call.js.map +1 -0
  174. package/dist/src/planner/building/insert.d.ts +5 -0
  175. package/dist/src/planner/building/insert.d.ts.map +1 -0
  176. package/dist/src/planner/building/insert.js +261 -0
  177. package/dist/src/planner/building/insert.js.map +1 -0
  178. package/dist/src/planner/building/pragma.d.ts +5 -0
  179. package/dist/src/planner/building/pragma.d.ts.map +1 -0
  180. package/dist/src/planner/building/pragma.js +28 -0
  181. package/dist/src/planner/building/pragma.js.map +1 -0
  182. package/dist/src/planner/building/schema-resolution.d.ts +25 -0
  183. package/dist/src/planner/building/schema-resolution.d.ts.map +1 -0
  184. package/dist/src/planner/building/schema-resolution.js +119 -0
  185. package/dist/src/planner/building/schema-resolution.js.map +1 -0
  186. package/dist/src/planner/building/select-aggregates.d.ts +22 -0
  187. package/dist/src/planner/building/select-aggregates.d.ts.map +1 -0
  188. package/dist/src/planner/building/select-aggregates.js +164 -0
  189. package/dist/src/planner/building/select-aggregates.js.map +1 -0
  190. package/dist/src/planner/building/select-compound.d.ts +9 -0
  191. package/dist/src/planner/building/select-compound.d.ts.map +1 -0
  192. package/dist/src/planner/building/select-compound.js +78 -0
  193. package/dist/src/planner/building/select-compound.js.map +1 -0
  194. package/dist/src/planner/building/select-context.d.ts +18 -0
  195. package/dist/src/planner/building/select-context.d.ts.map +1 -0
  196. package/dist/src/planner/building/select-context.js +54 -0
  197. package/dist/src/planner/building/select-context.js.map +1 -0
  198. package/dist/src/planner/building/select-modifiers.d.ts +25 -0
  199. package/dist/src/planner/building/select-modifiers.d.ts.map +1 -0
  200. package/dist/src/planner/building/select-modifiers.js +120 -0
  201. package/dist/src/planner/building/select-modifiers.js.map +1 -0
  202. package/dist/src/planner/building/select-projections.d.ts +37 -0
  203. package/dist/src/planner/building/select-projections.d.ts.map +1 -0
  204. package/dist/src/planner/building/select-projections.js +132 -0
  205. package/dist/src/planner/building/select-projections.js.map +1 -0
  206. package/dist/src/planner/building/select-window.d.ts +12 -0
  207. package/dist/src/planner/building/select-window.d.ts.map +1 -0
  208. package/dist/src/planner/building/select-window.js +159 -0
  209. package/dist/src/planner/building/select-window.js.map +1 -0
  210. package/dist/src/planner/building/select.d.ts +28 -0
  211. package/dist/src/planner/building/select.d.ts.map +1 -0
  212. package/dist/src/planner/building/select.js +307 -0
  213. package/dist/src/planner/building/select.js.map +1 -0
  214. package/dist/src/planner/building/table-function.d.ts +5 -0
  215. package/dist/src/planner/building/table-function.d.ts.map +1 -0
  216. package/dist/src/planner/building/table-function.js +21 -0
  217. package/dist/src/planner/building/table-function.js.map +1 -0
  218. package/dist/src/planner/building/table.d.ts +23 -0
  219. package/dist/src/planner/building/table.d.ts.map +1 -0
  220. package/dist/src/planner/building/table.js +57 -0
  221. package/dist/src/planner/building/table.js.map +1 -0
  222. package/dist/src/planner/building/transaction.d.ts +9 -0
  223. package/dist/src/planner/building/transaction.d.ts.map +1 -0
  224. package/dist/src/planner/building/transaction.js +17 -0
  225. package/dist/src/planner/building/transaction.js.map +1 -0
  226. package/dist/src/planner/building/update.d.ts +5 -0
  227. package/dist/src/planner/building/update.d.ts.map +1 -0
  228. package/dist/src/planner/building/update.js +152 -0
  229. package/dist/src/planner/building/update.js.map +1 -0
  230. package/dist/src/planner/building/with.d.ts +13 -0
  231. package/dist/src/planner/building/with.d.ts.map +1 -0
  232. package/dist/src/planner/building/with.js +112 -0
  233. package/dist/src/planner/building/with.js.map +1 -0
  234. package/dist/src/planner/cache/materialization-advisory.d.ts +66 -0
  235. package/dist/src/planner/cache/materialization-advisory.d.ts.map +1 -0
  236. package/dist/src/planner/cache/materialization-advisory.js +187 -0
  237. package/dist/src/planner/cache/materialization-advisory.js.map +1 -0
  238. package/dist/src/planner/cache/reference-graph.d.ts +53 -0
  239. package/dist/src/planner/cache/reference-graph.d.ts.map +1 -0
  240. package/dist/src/planner/cache/reference-graph.js +139 -0
  241. package/dist/src/planner/cache/reference-graph.js.map +1 -0
  242. package/dist/src/planner/cost/index.d.ts +106 -0
  243. package/dist/src/planner/cost/index.d.ts.map +1 -0
  244. package/dist/src/planner/cost/index.js +143 -0
  245. package/dist/src/planner/cost/index.js.map +1 -0
  246. package/dist/src/planner/debug/logger-utils.d.ts +44 -0
  247. package/dist/src/planner/debug/logger-utils.d.ts.map +1 -0
  248. package/dist/src/planner/debug/logger-utils.js +58 -0
  249. package/dist/src/planner/debug/logger-utils.js.map +1 -0
  250. package/dist/src/planner/debug.d.ts +53 -0
  251. package/dist/src/planner/debug.d.ts.map +1 -0
  252. package/dist/src/planner/debug.js +228 -0
  253. package/dist/src/planner/debug.js.map +1 -0
  254. package/dist/src/planner/framework/context.d.ts +86 -0
  255. package/dist/src/planner/framework/context.d.ts.map +1 -0
  256. package/dist/src/planner/framework/context.js +117 -0
  257. package/dist/src/planner/framework/context.js.map +1 -0
  258. package/dist/src/planner/framework/physical-utils.d.ts +62 -0
  259. package/dist/src/planner/framework/physical-utils.d.ts.map +1 -0
  260. package/dist/src/planner/framework/physical-utils.js +149 -0
  261. package/dist/src/planner/framework/physical-utils.js.map +1 -0
  262. package/dist/src/planner/framework/registry.d.ts +75 -0
  263. package/dist/src/planner/framework/registry.d.ts.map +1 -0
  264. package/dist/src/planner/framework/registry.js +203 -0
  265. package/dist/src/planner/framework/registry.js.map +1 -0
  266. package/dist/src/planner/framework/trace.d.ts +84 -0
  267. package/dist/src/planner/framework/trace.d.ts.map +1 -0
  268. package/dist/src/planner/framework/trace.js +198 -0
  269. package/dist/src/planner/framework/trace.js.map +1 -0
  270. package/dist/src/planner/nodes/add-constraint-node.d.ts +23 -0
  271. package/dist/src/planner/nodes/add-constraint-node.d.ts.map +1 -0
  272. package/dist/src/planner/nodes/add-constraint-node.js +47 -0
  273. package/dist/src/planner/nodes/add-constraint-node.js.map +1 -0
  274. package/dist/src/planner/nodes/aggregate-function.d.ts +34 -0
  275. package/dist/src/planner/nodes/aggregate-function.d.ts.map +1 -0
  276. package/dist/src/planner/nodes/aggregate-function.js +119 -0
  277. package/dist/src/planner/nodes/aggregate-function.js.map +1 -0
  278. package/dist/src/planner/nodes/aggregate-node.d.ts +35 -0
  279. package/dist/src/planner/nodes/aggregate-node.d.ts.map +1 -0
  280. package/dist/src/planner/nodes/aggregate-node.js +176 -0
  281. package/dist/src/planner/nodes/aggregate-node.js.map +1 -0
  282. package/dist/src/planner/nodes/array-index-node.d.ts +22 -0
  283. package/dist/src/planner/nodes/array-index-node.d.ts.map +1 -0
  284. package/dist/src/planner/nodes/array-index-node.js +41 -0
  285. package/dist/src/planner/nodes/array-index-node.js.map +1 -0
  286. package/dist/src/planner/nodes/block.d.ts +26 -0
  287. package/dist/src/planner/nodes/block.d.ts.map +1 -0
  288. package/dist/src/planner/nodes/block.js +58 -0
  289. package/dist/src/planner/nodes/block.js.map +1 -0
  290. package/dist/src/planner/nodes/cache-node.d.ts +29 -0
  291. package/dist/src/planner/nodes/cache-node.d.ts.map +1 -0
  292. package/dist/src/planner/nodes/cache-node.js +73 -0
  293. package/dist/src/planner/nodes/cache-node.js.map +1 -0
  294. package/dist/src/planner/nodes/constraint-check-node.d.ts +28 -0
  295. package/dist/src/planner/nodes/constraint-check-node.d.ts.map +1 -0
  296. package/dist/src/planner/nodes/constraint-check-node.js +73 -0
  297. package/dist/src/planner/nodes/constraint-check-node.js.map +1 -0
  298. package/dist/src/planner/nodes/create-index-node.d.ts +15 -0
  299. package/dist/src/planner/nodes/create-index-node.d.ts.map +1 -0
  300. package/dist/src/planner/nodes/create-index-node.js +31 -0
  301. package/dist/src/planner/nodes/create-index-node.js.map +1 -0
  302. package/dist/src/planner/nodes/create-table-node.d.ts +15 -0
  303. package/dist/src/planner/nodes/create-table-node.d.ts.map +1 -0
  304. package/dist/src/planner/nodes/create-table-node.js +25 -0
  305. package/dist/src/planner/nodes/create-table-node.js.map +1 -0
  306. package/dist/src/planner/nodes/create-view-node.d.ts +21 -0
  307. package/dist/src/planner/nodes/create-view-node.d.ts.map +1 -0
  308. package/dist/src/planner/nodes/create-view-node.js +39 -0
  309. package/dist/src/planner/nodes/create-view-node.js.map +1 -0
  310. package/dist/src/planner/nodes/cte-node.d.ts +40 -0
  311. package/dist/src/planner/nodes/cte-node.d.ts.map +1 -0
  312. package/dist/src/planner/nodes/cte-node.js +88 -0
  313. package/dist/src/planner/nodes/cte-node.js.map +1 -0
  314. package/dist/src/planner/nodes/cte-reference-node.d.ts +27 -0
  315. package/dist/src/planner/nodes/cte-reference-node.d.ts.map +1 -0
  316. package/dist/src/planner/nodes/cte-reference-node.js +75 -0
  317. package/dist/src/planner/nodes/cte-reference-node.js.map +1 -0
  318. package/dist/src/planner/nodes/delete-node.d.ts +27 -0
  319. package/dist/src/planner/nodes/delete-node.d.ts.map +1 -0
  320. package/dist/src/planner/nodes/delete-node.js +62 -0
  321. package/dist/src/planner/nodes/delete-node.js.map +1 -0
  322. package/dist/src/planner/nodes/distinct-node.d.ts +22 -0
  323. package/dist/src/planner/nodes/distinct-node.d.ts.map +1 -0
  324. package/dist/src/planner/nodes/distinct-node.js +74 -0
  325. package/dist/src/planner/nodes/distinct-node.js.map +1 -0
  326. package/dist/src/planner/nodes/dml-executor-node.d.ts +30 -0
  327. package/dist/src/planner/nodes/dml-executor-node.d.ts.map +1 -0
  328. package/dist/src/planner/nodes/dml-executor-node.js +73 -0
  329. package/dist/src/planner/nodes/dml-executor-node.js.map +1 -0
  330. package/dist/src/planner/nodes/drop-table-node.d.ts +15 -0
  331. package/dist/src/planner/nodes/drop-table-node.d.ts.map +1 -0
  332. package/dist/src/planner/nodes/drop-table-node.js +25 -0
  333. package/dist/src/planner/nodes/drop-table-node.js.map +1 -0
  334. package/dist/src/planner/nodes/drop-view-node.d.ts +17 -0
  335. package/dist/src/planner/nodes/drop-view-node.d.ts.map +1 -0
  336. package/dist/src/planner/nodes/drop-view-node.js +30 -0
  337. package/dist/src/planner/nodes/drop-view-node.js.map +1 -0
  338. package/dist/src/planner/nodes/filter.d.ts +24 -0
  339. package/dist/src/planner/nodes/filter.d.ts.map +1 -0
  340. package/dist/src/planner/nodes/filter.js +72 -0
  341. package/dist/src/planner/nodes/filter.js.map +1 -0
  342. package/dist/src/planner/nodes/function.d.ts +21 -0
  343. package/dist/src/planner/nodes/function.d.ts.map +1 -0
  344. package/dist/src/planner/nodes/function.js +70 -0
  345. package/dist/src/planner/nodes/function.js.map +1 -0
  346. package/dist/src/planner/nodes/insert-node.d.ts +26 -0
  347. package/dist/src/planner/nodes/insert-node.d.ts.map +1 -0
  348. package/dist/src/planner/nodes/insert-node.js +82 -0
  349. package/dist/src/planner/nodes/insert-node.js.map +1 -0
  350. package/dist/src/planner/nodes/join-node.d.ts +30 -0
  351. package/dist/src/planner/nodes/join-node.d.ts.map +1 -0
  352. package/dist/src/planner/nodes/join-node.js +177 -0
  353. package/dist/src/planner/nodes/join-node.js.map +1 -0
  354. package/dist/src/planner/nodes/limit-offset.d.ts +24 -0
  355. package/dist/src/planner/nodes/limit-offset.d.ts.map +1 -0
  356. package/dist/src/planner/nodes/limit-offset.js +103 -0
  357. package/dist/src/planner/nodes/limit-offset.js.map +1 -0
  358. package/dist/src/planner/nodes/physical-access-nodes.d.ts +83 -0
  359. package/dist/src/planner/nodes/physical-access-nodes.d.ts.map +1 -0
  360. package/dist/src/planner/nodes/physical-access-nodes.js +226 -0
  361. package/dist/src/planner/nodes/physical-access-nodes.js.map +1 -0
  362. package/dist/src/planner/nodes/plan-node-type.d.ts +71 -0
  363. package/dist/src/planner/nodes/plan-node-type.d.ts.map +1 -0
  364. package/dist/src/planner/nodes/plan-node-type.js +81 -0
  365. package/dist/src/planner/nodes/plan-node-type.js.map +1 -0
  366. package/dist/src/planner/nodes/plan-node.d.ts +297 -0
  367. package/dist/src/planner/nodes/plan-node.d.ts.map +1 -0
  368. package/dist/src/planner/nodes/plan-node.js +198 -0
  369. package/dist/src/planner/nodes/plan-node.js.map +1 -0
  370. package/dist/src/planner/nodes/pragma.d.ts +21 -0
  371. package/dist/src/planner/nodes/pragma.d.ts.map +1 -0
  372. package/dist/src/planner/nodes/pragma.js +80 -0
  373. package/dist/src/planner/nodes/pragma.js.map +1 -0
  374. package/dist/src/planner/nodes/project-node.d.ts +34 -0
  375. package/dist/src/planner/nodes/project-node.d.ts.map +1 -0
  376. package/dist/src/planner/nodes/project-node.js +181 -0
  377. package/dist/src/planner/nodes/project-node.js.map +1 -0
  378. package/dist/src/planner/nodes/recursive-cte-node.d.ts +41 -0
  379. package/dist/src/planner/nodes/recursive-cte-node.d.ts.map +1 -0
  380. package/dist/src/planner/nodes/recursive-cte-node.js +114 -0
  381. package/dist/src/planner/nodes/recursive-cte-node.js.map +1 -0
  382. package/dist/src/planner/nodes/reference.d.ts +92 -0
  383. package/dist/src/planner/nodes/reference.d.ts.map +1 -0
  384. package/dist/src/planner/nodes/reference.js +258 -0
  385. package/dist/src/planner/nodes/reference.js.map +1 -0
  386. package/dist/src/planner/nodes/returning-node.d.ts +37 -0
  387. package/dist/src/planner/nodes/returning-node.d.ts.map +1 -0
  388. package/dist/src/planner/nodes/returning-node.js +183 -0
  389. package/dist/src/planner/nodes/returning-node.js.map +1 -0
  390. package/dist/src/planner/nodes/scalar.d.ts +106 -0
  391. package/dist/src/planner/nodes/scalar.d.ts.map +1 -0
  392. package/dist/src/planner/nodes/scalar.js +618 -0
  393. package/dist/src/planner/nodes/scalar.js.map +1 -0
  394. package/dist/src/planner/nodes/scan.d.ts +27 -0
  395. package/dist/src/planner/nodes/scan.d.ts.map +1 -0
  396. package/dist/src/planner/nodes/scan.js +78 -0
  397. package/dist/src/planner/nodes/scan.js.map +1 -0
  398. package/dist/src/planner/nodes/sequencing-node.d.ts +25 -0
  399. package/dist/src/planner/nodes/sequencing-node.d.ts.map +1 -0
  400. package/dist/src/planner/nodes/sequencing-node.js +88 -0
  401. package/dist/src/planner/nodes/sequencing-node.js.map +1 -0
  402. package/dist/src/planner/nodes/set-operation-node.d.ts +21 -0
  403. package/dist/src/planner/nodes/set-operation-node.d.ts.map +1 -0
  404. package/dist/src/planner/nodes/set-operation-node.js +68 -0
  405. package/dist/src/planner/nodes/set-operation-node.js.map +1 -0
  406. package/dist/src/planner/nodes/single-row.d.ts +24 -0
  407. package/dist/src/planner/nodes/single-row.d.ts.map +1 -0
  408. package/dist/src/planner/nodes/single-row.js +65 -0
  409. package/dist/src/planner/nodes/single-row.js.map +1 -0
  410. package/dist/src/planner/nodes/sink-node.d.ts +25 -0
  411. package/dist/src/planner/nodes/sink-node.d.ts.map +1 -0
  412. package/dist/src/planner/nodes/sink-node.js +52 -0
  413. package/dist/src/planner/nodes/sink-node.js.map +1 -0
  414. package/dist/src/planner/nodes/sort.d.ts +37 -0
  415. package/dist/src/planner/nodes/sort.d.ts.map +1 -0
  416. package/dist/src/planner/nodes/sort.js +97 -0
  417. package/dist/src/planner/nodes/sort.js.map +1 -0
  418. package/dist/src/planner/nodes/stream-aggregate.d.ts +35 -0
  419. package/dist/src/planner/nodes/stream-aggregate.d.ts.map +1 -0
  420. package/dist/src/planner/nodes/stream-aggregate.js +186 -0
  421. package/dist/src/planner/nodes/stream-aggregate.js.map +1 -0
  422. package/dist/src/planner/nodes/subquery.d.ts +54 -0
  423. package/dist/src/planner/nodes/subquery.d.ts.map +1 -0
  424. package/dist/src/planner/nodes/subquery.js +181 -0
  425. package/dist/src/planner/nodes/subquery.js.map +1 -0
  426. package/dist/src/planner/nodes/table-function-call.d.ts +27 -0
  427. package/dist/src/planner/nodes/table-function-call.d.ts.map +1 -0
  428. package/dist/src/planner/nodes/table-function-call.js +101 -0
  429. package/dist/src/planner/nodes/table-function-call.js.map +1 -0
  430. package/dist/src/planner/nodes/transaction-node.d.ts +22 -0
  431. package/dist/src/planner/nodes/transaction-node.d.ts.map +1 -0
  432. package/dist/src/planner/nodes/transaction-node.js +47 -0
  433. package/dist/src/planner/nodes/transaction-node.js.map +1 -0
  434. package/dist/src/planner/nodes/update-executor-node.d.ts +24 -0
  435. package/dist/src/planner/nodes/update-executor-node.d.ts.map +1 -0
  436. package/dist/src/planner/nodes/update-executor-node.js +57 -0
  437. package/dist/src/planner/nodes/update-executor-node.js.map +1 -0
  438. package/dist/src/planner/nodes/update-node.d.ts +38 -0
  439. package/dist/src/planner/nodes/update-node.d.ts.map +1 -0
  440. package/dist/src/planner/nodes/update-node.js +88 -0
  441. package/dist/src/planner/nodes/update-node.js.map +1 -0
  442. package/dist/src/planner/nodes/values-node.d.ts +49 -0
  443. package/dist/src/planner/nodes/values-node.d.ts.map +1 -0
  444. package/dist/src/planner/nodes/values-node.js +204 -0
  445. package/dist/src/planner/nodes/values-node.js.map +1 -0
  446. package/dist/src/planner/nodes/view-reference-node.d.ts +27 -0
  447. package/dist/src/planner/nodes/view-reference-node.d.ts.map +1 -0
  448. package/dist/src/planner/nodes/view-reference-node.js +83 -0
  449. package/dist/src/planner/nodes/view-reference-node.js.map +1 -0
  450. package/dist/src/planner/nodes/window-function.d.ts +25 -0
  451. package/dist/src/planner/nodes/window-function.d.ts.map +1 -0
  452. package/dist/src/planner/nodes/window-function.js +62 -0
  453. package/dist/src/planner/nodes/window-function.js.map +1 -0
  454. package/dist/src/planner/nodes/window-node.d.ts +40 -0
  455. package/dist/src/planner/nodes/window-node.d.ts.map +1 -0
  456. package/dist/src/planner/nodes/window-node.js +156 -0
  457. package/dist/src/planner/nodes/window-node.js.map +1 -0
  458. package/dist/src/planner/optimizer-tuning.d.ts +55 -0
  459. package/dist/src/planner/optimizer-tuning.d.ts.map +1 -0
  460. package/dist/src/planner/optimizer-tuning.js +31 -0
  461. package/dist/src/planner/optimizer-tuning.js.map +1 -0
  462. package/dist/src/planner/optimizer.d.ts +34 -0
  463. package/dist/src/planner/optimizer.d.ts.map +1 -0
  464. package/dist/src/planner/optimizer.js +194 -0
  465. package/dist/src/planner/optimizer.js.map +1 -0
  466. package/dist/src/planner/physical-utils.d.ts +36 -0
  467. package/dist/src/planner/physical-utils.d.ts.map +1 -0
  468. package/dist/src/planner/physical-utils.js +122 -0
  469. package/dist/src/planner/physical-utils.js.map +1 -0
  470. package/dist/src/planner/planning-context.d.ts +111 -0
  471. package/dist/src/planner/planning-context.d.ts.map +1 -0
  472. package/dist/src/planner/planning-context.js +75 -0
  473. package/dist/src/planner/planning-context.js.map +1 -0
  474. package/dist/src/planner/resolve.d.ts +8 -0
  475. package/dist/src/planner/resolve.d.ts.map +1 -0
  476. package/dist/src/planner/resolve.js +91 -0
  477. package/dist/src/planner/resolve.js.map +1 -0
  478. package/dist/src/planner/rules/access/rule-select-access-path.d.ts +11 -0
  479. package/dist/src/planner/rules/access/rule-select-access-path.d.ts.map +1 -0
  480. package/dist/src/planner/rules/access/rule-select-access-path.js +133 -0
  481. package/dist/src/planner/rules/access/rule-select-access-path.js.map +1 -0
  482. package/dist/src/planner/rules/aggregate/rule-aggregate-streaming.d.ts +11 -0
  483. package/dist/src/planner/rules/aggregate/rule-aggregate-streaming.d.ts.map +1 -0
  484. package/dist/src/planner/rules/aggregate/rule-aggregate-streaming.js +53 -0
  485. package/dist/src/planner/rules/aggregate/rule-aggregate-streaming.js.map +1 -0
  486. package/dist/src/planner/rules/cache/rule-cte-optimization.d.ts +11 -0
  487. package/dist/src/planner/rules/cache/rule-cte-optimization.d.ts.map +1 -0
  488. package/dist/src/planner/rules/cache/rule-cte-optimization.js +38 -0
  489. package/dist/src/planner/rules/cache/rule-cte-optimization.js.map +1 -0
  490. package/dist/src/planner/rules/cache/rule-materialization-advisory.d.ts +11 -0
  491. package/dist/src/planner/rules/cache/rule-materialization-advisory.d.ts.map +1 -0
  492. package/dist/src/planner/rules/cache/rule-materialization-advisory.js +51 -0
  493. package/dist/src/planner/rules/cache/rule-materialization-advisory.js.map +1 -0
  494. package/dist/src/planner/rules/cache/rule-mutating-subquery-cache.d.ts +11 -0
  495. package/dist/src/planner/rules/cache/rule-mutating-subquery-cache.d.ts.map +1 -0
  496. package/dist/src/planner/rules/cache/rule-mutating-subquery-cache.js +79 -0
  497. package/dist/src/planner/rules/cache/rule-mutating-subquery-cache.js.map +1 -0
  498. package/dist/src/planner/rules/physical/rule-filter-optimization.d.ts +11 -0
  499. package/dist/src/planner/rules/physical/rule-filter-optimization.d.ts.map +1 -0
  500. package/dist/src/planner/rules/physical/rule-filter-optimization.js +49 -0
  501. package/dist/src/planner/rules/physical/rule-filter-optimization.js.map +1 -0
  502. package/dist/src/planner/rules/physical/rule-mark-physical.d.ts +11 -0
  503. package/dist/src/planner/rules/physical/rule-mark-physical.d.ts.map +1 -0
  504. package/dist/src/planner/rules/physical/rule-mark-physical.js +29 -0
  505. package/dist/src/planner/rules/physical/rule-mark-physical.js.map +1 -0
  506. package/dist/src/planner/rules/physical/rule-project-optimization.d.ts +11 -0
  507. package/dist/src/planner/rules/physical/rule-project-optimization.d.ts.map +1 -0
  508. package/dist/src/planner/rules/physical/rule-project-optimization.js +44 -0
  509. package/dist/src/planner/rules/physical/rule-project-optimization.js.map +1 -0
  510. package/dist/src/planner/rules/physical/rule-sort-optimization.d.ts +11 -0
  511. package/dist/src/planner/rules/physical/rule-sort-optimization.d.ts.map +1 -0
  512. package/dist/src/planner/rules/physical/rule-sort-optimization.js +53 -0
  513. package/dist/src/planner/rules/physical/rule-sort-optimization.js.map +1 -0
  514. package/dist/src/planner/rules/rewrite/rule-constant-folding.d.ts +11 -0
  515. package/dist/src/planner/rules/rewrite/rule-constant-folding.d.ts.map +1 -0
  516. package/dist/src/planner/rules/rewrite/rule-constant-folding.js +59 -0
  517. package/dist/src/planner/rules/rewrite/rule-constant-folding.js.map +1 -0
  518. package/dist/src/planner/scopes/aliased.d.ts +18 -0
  519. package/dist/src/planner/scopes/aliased.d.ts.map +1 -0
  520. package/dist/src/planner/scopes/aliased.js +41 -0
  521. package/dist/src/planner/scopes/aliased.js.map +1 -0
  522. package/dist/src/planner/scopes/base.d.ts +20 -0
  523. package/dist/src/planner/scopes/base.d.ts.map +1 -0
  524. package/dist/src/planner/scopes/base.js +20 -0
  525. package/dist/src/planner/scopes/base.js.map +1 -0
  526. package/dist/src/planner/scopes/empty.d.ts +11 -0
  527. package/dist/src/planner/scopes/empty.d.ts.map +1 -0
  528. package/dist/src/planner/scopes/empty.js +16 -0
  529. package/dist/src/planner/scopes/empty.js.map +1 -0
  530. package/dist/src/planner/scopes/global.d.ts +12 -0
  531. package/dist/src/planner/scopes/global.d.ts.map +1 -0
  532. package/dist/src/planner/scopes/global.js +65 -0
  533. package/dist/src/planner/scopes/global.js.map +1 -0
  534. package/dist/src/planner/scopes/multi.d.ts +17 -0
  535. package/dist/src/planner/scopes/multi.d.ts.map +1 -0
  536. package/dist/src/planner/scopes/multi.js +35 -0
  537. package/dist/src/planner/scopes/multi.js.map +1 -0
  538. package/dist/src/planner/scopes/param.d.ts +23 -0
  539. package/dist/src/planner/scopes/param.d.ts.map +1 -0
  540. package/dist/src/planner/scopes/param.js +78 -0
  541. package/dist/src/planner/scopes/param.js.map +1 -0
  542. package/dist/src/planner/scopes/registered.d.ts +47 -0
  543. package/dist/src/planner/scopes/registered.d.ts.map +1 -0
  544. package/dist/src/planner/scopes/registered.js +70 -0
  545. package/dist/src/planner/scopes/registered.js.map +1 -0
  546. package/dist/src/planner/scopes/scope.d.ts +21 -0
  547. package/dist/src/planner/scopes/scope.d.ts.map +1 -0
  548. package/dist/src/planner/scopes/scope.js +3 -0
  549. package/dist/src/planner/scopes/scope.js.map +1 -0
  550. package/dist/src/planner/stats/basic-estimates.d.ts +47 -0
  551. package/dist/src/planner/stats/basic-estimates.d.ts.map +1 -0
  552. package/dist/src/planner/stats/basic-estimates.js +99 -0
  553. package/dist/src/planner/stats/basic-estimates.js.map +1 -0
  554. package/dist/src/planner/stats/index.d.ts +88 -0
  555. package/dist/src/planner/stats/index.d.ts.map +1 -0
  556. package/dist/src/planner/stats/index.js +152 -0
  557. package/dist/src/planner/stats/index.js.map +1 -0
  558. package/dist/src/planner/type-utils.d.ts +30 -0
  559. package/dist/src/planner/type-utils.d.ts.map +1 -0
  560. package/dist/src/planner/type-utils.js +91 -0
  561. package/dist/src/planner/type-utils.js.map +1 -0
  562. package/dist/src/planner/validation/plan-validator.d.ts +29 -0
  563. package/dist/src/planner/validation/plan-validator.d.ts.map +1 -0
  564. package/dist/src/planner/validation/plan-validator.js +238 -0
  565. package/dist/src/planner/validation/plan-validator.js.map +1 -0
  566. package/dist/src/runtime/async-util.d.ts +53 -0
  567. package/dist/src/runtime/async-util.d.ts.map +1 -0
  568. package/dist/src/runtime/async-util.js +238 -0
  569. package/dist/src/runtime/async-util.js.map +1 -0
  570. package/dist/src/runtime/cache/shared-cache.d.ts +68 -0
  571. package/dist/src/runtime/cache/shared-cache.d.ts.map +1 -0
  572. package/dist/src/runtime/cache/shared-cache.js +107 -0
  573. package/dist/src/runtime/cache/shared-cache.js.map +1 -0
  574. package/dist/src/runtime/emission-context.d.ts +121 -0
  575. package/dist/src/runtime/emission-context.d.ts.map +1 -0
  576. package/dist/src/runtime/emission-context.js +258 -0
  577. package/dist/src/runtime/emission-context.js.map +1 -0
  578. package/dist/src/runtime/emit/add-constraint.d.ts +5 -0
  579. package/dist/src/runtime/emit/add-constraint.d.ts.map +1 -0
  580. package/dist/src/runtime/emit/add-constraint.js +35 -0
  581. package/dist/src/runtime/emit/add-constraint.js.map +1 -0
  582. package/dist/src/runtime/emit/aggregate.d.ts +6 -0
  583. package/dist/src/runtime/emit/aggregate.d.ts.map +1 -0
  584. package/dist/src/runtime/emit/aggregate.js +465 -0
  585. package/dist/src/runtime/emit/aggregate.js.map +1 -0
  586. package/dist/src/runtime/emit/array-index.d.ts +5 -0
  587. package/dist/src/runtime/emit/array-index.d.ts.map +1 -0
  588. package/dist/src/runtime/emit/array-index.js +20 -0
  589. package/dist/src/runtime/emit/array-index.js.map +1 -0
  590. package/dist/src/runtime/emit/binary.d.ts +11 -0
  591. package/dist/src/runtime/emit/binary.d.ts.map +1 -0
  592. package/dist/src/runtime/emit/binary.js +310 -0
  593. package/dist/src/runtime/emit/binary.js.map +1 -0
  594. package/dist/src/runtime/emit/block.d.ts +5 -0
  595. package/dist/src/runtime/emit/block.d.ts.map +1 -0
  596. package/dist/src/runtime/emit/block.js +16 -0
  597. package/dist/src/runtime/emit/block.js.map +1 -0
  598. package/dist/src/runtime/emit/cache.d.ts +25 -0
  599. package/dist/src/runtime/emit/cache.d.ts.map +1 -0
  600. package/dist/src/runtime/emit/cache.js +52 -0
  601. package/dist/src/runtime/emit/cache.js.map +1 -0
  602. package/dist/src/runtime/emit/case.d.ts +5 -0
  603. package/dist/src/runtime/emit/case.d.ts.map +1 -0
  604. package/dist/src/runtime/emit/case.js +65 -0
  605. package/dist/src/runtime/emit/case.js.map +1 -0
  606. package/dist/src/runtime/emit/cast.d.ts +5 -0
  607. package/dist/src/runtime/emit/cast.d.ts.map +1 -0
  608. package/dist/src/runtime/emit/cast.js +132 -0
  609. package/dist/src/runtime/emit/cast.js.map +1 -0
  610. package/dist/src/runtime/emit/collate.d.ts +5 -0
  611. package/dist/src/runtime/emit/collate.d.ts.map +1 -0
  612. package/dist/src/runtime/emit/collate.js +6 -0
  613. package/dist/src/runtime/emit/collate.js.map +1 -0
  614. package/dist/src/runtime/emit/column-reference.d.ts +5 -0
  615. package/dist/src/runtime/emit/column-reference.d.ts.map +1 -0
  616. package/dist/src/runtime/emit/column-reference.js +36 -0
  617. package/dist/src/runtime/emit/column-reference.js.map +1 -0
  618. package/dist/src/runtime/emit/constraint-check.d.ts +5 -0
  619. package/dist/src/runtime/emit/constraint-check.d.ts.map +1 -0
  620. package/dist/src/runtime/emit/constraint-check.js +211 -0
  621. package/dist/src/runtime/emit/constraint-check.js.map +1 -0
  622. package/dist/src/runtime/emit/create-index.d.ts +5 -0
  623. package/dist/src/runtime/emit/create-index.d.ts.map +1 -0
  624. package/dist/src/runtime/emit/create-index.js +9 -0
  625. package/dist/src/runtime/emit/create-index.js.map +1 -0
  626. package/dist/src/runtime/emit/create-table.d.ts +5 -0
  627. package/dist/src/runtime/emit/create-table.d.ts.map +1 -0
  628. package/dist/src/runtime/emit/create-table.js +9 -0
  629. package/dist/src/runtime/emit/create-table.js.map +1 -0
  630. package/dist/src/runtime/emit/create-view.d.ts +5 -0
  631. package/dist/src/runtime/emit/create-view.d.ts.map +1 -0
  632. package/dist/src/runtime/emit/create-view.js +36 -0
  633. package/dist/src/runtime/emit/create-view.js.map +1 -0
  634. package/dist/src/runtime/emit/cte-reference.d.ts +5 -0
  635. package/dist/src/runtime/emit/cte-reference.d.ts.map +1 -0
  636. package/dist/src/runtime/emit/cte-reference.js +56 -0
  637. package/dist/src/runtime/emit/cte-reference.js.map +1 -0
  638. package/dist/src/runtime/emit/cte.d.ts +5 -0
  639. package/dist/src/runtime/emit/cte.d.ts.map +1 -0
  640. package/dist/src/runtime/emit/cte.js +34 -0
  641. package/dist/src/runtime/emit/cte.js.map +1 -0
  642. package/dist/src/runtime/emit/delete.d.ts +5 -0
  643. package/dist/src/runtime/emit/delete.d.ts.map +1 -0
  644. package/dist/src/runtime/emit/delete.js +18 -0
  645. package/dist/src/runtime/emit/delete.js.map +1 -0
  646. package/dist/src/runtime/emit/distinct.d.ts +5 -0
  647. package/dist/src/runtime/emit/distinct.d.ts.map +1 -0
  648. package/dist/src/runtime/emit/distinct.js +35 -0
  649. package/dist/src/runtime/emit/distinct.js.map +1 -0
  650. package/dist/src/runtime/emit/dml-executor.d.ts +5 -0
  651. package/dist/src/runtime/emit/dml-executor.d.ts.map +1 -0
  652. package/dist/src/runtime/emit/dml-executor.js +90 -0
  653. package/dist/src/runtime/emit/dml-executor.js.map +1 -0
  654. package/dist/src/runtime/emit/drop-table.d.ts +5 -0
  655. package/dist/src/runtime/emit/drop-table.d.ts.map +1 -0
  656. package/dist/src/runtime/emit/drop-table.js +19 -0
  657. package/dist/src/runtime/emit/drop-table.js.map +1 -0
  658. package/dist/src/runtime/emit/drop-view.d.ts +5 -0
  659. package/dist/src/runtime/emit/drop-view.d.ts.map +1 -0
  660. package/dist/src/runtime/emit/drop-view.js +31 -0
  661. package/dist/src/runtime/emit/drop-view.js.map +1 -0
  662. package/dist/src/runtime/emit/filter.d.ts +5 -0
  663. package/dist/src/runtime/emit/filter.d.ts.map +1 -0
  664. package/dist/src/runtime/emit/filter.js +30 -0
  665. package/dist/src/runtime/emit/filter.js.map +1 -0
  666. package/dist/src/runtime/emit/insert.d.ts +5 -0
  667. package/dist/src/runtime/emit/insert.d.ts.map +1 -0
  668. package/dist/src/runtime/emit/insert.js +52 -0
  669. package/dist/src/runtime/emit/insert.js.map +1 -0
  670. package/dist/src/runtime/emit/join.d.ts +9 -0
  671. package/dist/src/runtime/emit/join.d.ts.map +1 -0
  672. package/dist/src/runtime/emit/join.js +116 -0
  673. package/dist/src/runtime/emit/join.js.map +1 -0
  674. package/dist/src/runtime/emit/limit-offset.d.ts +5 -0
  675. package/dist/src/runtime/emit/limit-offset.d.ts.map +1 -0
  676. package/dist/src/runtime/emit/limit-offset.js +56 -0
  677. package/dist/src/runtime/emit/limit-offset.js.map +1 -0
  678. package/dist/src/runtime/emit/literal.d.ts +5 -0
  679. package/dist/src/runtime/emit/literal.d.ts.map +1 -0
  680. package/dist/src/runtime/emit/literal.js +12 -0
  681. package/dist/src/runtime/emit/literal.js.map +1 -0
  682. package/dist/src/runtime/emit/parameter.d.ts +5 -0
  683. package/dist/src/runtime/emit/parameter.d.ts.map +1 -0
  684. package/dist/src/runtime/emit/parameter.js +57 -0
  685. package/dist/src/runtime/emit/parameter.js.map +1 -0
  686. package/dist/src/runtime/emit/pragma.d.ts +5 -0
  687. package/dist/src/runtime/emit/pragma.d.ts.map +1 -0
  688. package/dist/src/runtime/emit/pragma.js +44 -0
  689. package/dist/src/runtime/emit/pragma.js.map +1 -0
  690. package/dist/src/runtime/emit/project.d.ts +5 -0
  691. package/dist/src/runtime/emit/project.d.ts.map +1 -0
  692. package/dist/src/runtime/emit/project.js +32 -0
  693. package/dist/src/runtime/emit/project.js.map +1 -0
  694. package/dist/src/runtime/emit/recursive-cte.d.ts +5 -0
  695. package/dist/src/runtime/emit/recursive-cte.d.ts.map +1 -0
  696. package/dist/src/runtime/emit/recursive-cte.js +92 -0
  697. package/dist/src/runtime/emit/recursive-cte.js.map +1 -0
  698. package/dist/src/runtime/emit/returning.d.ts +5 -0
  699. package/dist/src/runtime/emit/returning.d.ts.map +1 -0
  700. package/dist/src/runtime/emit/returning.js +34 -0
  701. package/dist/src/runtime/emit/returning.js.map +1 -0
  702. package/dist/src/runtime/emit/scalar-function.d.ts +5 -0
  703. package/dist/src/runtime/emit/scalar-function.d.ts.map +1 -0
  704. package/dist/src/runtime/emit/scalar-function.js +29 -0
  705. package/dist/src/runtime/emit/scalar-function.js.map +1 -0
  706. package/dist/src/runtime/emit/scan.d.ts +5 -0
  707. package/dist/src/runtime/emit/scan.d.ts.map +1 -0
  708. package/dist/src/runtime/emit/scan.js +63 -0
  709. package/dist/src/runtime/emit/scan.js.map +1 -0
  710. package/dist/src/runtime/emit/sequencing.d.ts +5 -0
  711. package/dist/src/runtime/emit/sequencing.d.ts.map +1 -0
  712. package/dist/src/runtime/emit/sequencing.js +17 -0
  713. package/dist/src/runtime/emit/sequencing.js.map +1 -0
  714. package/dist/src/runtime/emit/set-operation.d.ts +5 -0
  715. package/dist/src/runtime/emit/set-operation.d.ts.map +1 -0
  716. package/dist/src/runtime/emit/set-operation.js +99 -0
  717. package/dist/src/runtime/emit/set-operation.js.map +1 -0
  718. package/dist/src/runtime/emit/sink.d.ts +5 -0
  719. package/dist/src/runtime/emit/sink.d.ts.map +1 -0
  720. package/dist/src/runtime/emit/sink.js +19 -0
  721. package/dist/src/runtime/emit/sink.js.map +1 -0
  722. package/dist/src/runtime/emit/sort.d.ts +5 -0
  723. package/dist/src/runtime/emit/sort.d.ts.map +1 -0
  724. package/dist/src/runtime/emit/sort.js +59 -0
  725. package/dist/src/runtime/emit/sort.js.map +1 -0
  726. package/dist/src/runtime/emit/subquery.d.ts +7 -0
  727. package/dist/src/runtime/emit/subquery.d.ts.map +1 -0
  728. package/dist/src/runtime/emit/subquery.js +114 -0
  729. package/dist/src/runtime/emit/subquery.js.map +1 -0
  730. package/dist/src/runtime/emit/table-reference.d.ts +5 -0
  731. package/dist/src/runtime/emit/table-reference.d.ts.map +1 -0
  732. package/dist/src/runtime/emit/table-reference.js +67 -0
  733. package/dist/src/runtime/emit/table-reference.js.map +1 -0
  734. package/dist/src/runtime/emit/table-valued-function.d.ts +5 -0
  735. package/dist/src/runtime/emit/table-valued-function.d.ts.map +1 -0
  736. package/dist/src/runtime/emit/table-valued-function.js +98 -0
  737. package/dist/src/runtime/emit/table-valued-function.js.map +1 -0
  738. package/dist/src/runtime/emit/transaction.d.ts +5 -0
  739. package/dist/src/runtime/emit/transaction.d.ts.map +1 -0
  740. package/dist/src/runtime/emit/transaction.js +153 -0
  741. package/dist/src/runtime/emit/transaction.js.map +1 -0
  742. package/dist/src/runtime/emit/unary.d.ts +5 -0
  743. package/dist/src/runtime/emit/unary.d.ts.map +1 -0
  744. package/dist/src/runtime/emit/unary.js +81 -0
  745. package/dist/src/runtime/emit/unary.js.map +1 -0
  746. package/dist/src/runtime/emit/update-executor.d.ts +5 -0
  747. package/dist/src/runtime/emit/update-executor.d.ts.map +1 -0
  748. package/dist/src/runtime/emit/update-executor.js +54 -0
  749. package/dist/src/runtime/emit/update-executor.js.map +1 -0
  750. package/dist/src/runtime/emit/update.d.ts +5 -0
  751. package/dist/src/runtime/emit/update.d.ts.map +1 -0
  752. package/dist/src/runtime/emit/update.js +58 -0
  753. package/dist/src/runtime/emit/update.js.map +1 -0
  754. package/dist/src/runtime/emit/values.d.ts +9 -0
  755. package/dist/src/runtime/emit/values.d.ts.map +1 -0
  756. package/dist/src/runtime/emit/values.js +51 -0
  757. package/dist/src/runtime/emit/values.js.map +1 -0
  758. package/dist/src/runtime/emit/window-function.d.ts +5 -0
  759. package/dist/src/runtime/emit/window-function.d.ts.map +1 -0
  760. package/dist/src/runtime/emit/window-function.js +31 -0
  761. package/dist/src/runtime/emit/window-function.js.map +1 -0
  762. package/dist/src/runtime/emit/window.d.ts +5 -0
  763. package/dist/src/runtime/emit/window.d.ts.map +1 -0
  764. package/dist/src/runtime/emit/window.js +328 -0
  765. package/dist/src/runtime/emit/window.js.map +1 -0
  766. package/dist/src/runtime/emitters.d.ts +48 -0
  767. package/dist/src/runtime/emitters.d.ts.map +1 -0
  768. package/dist/src/runtime/emitters.js +73 -0
  769. package/dist/src/runtime/emitters.js.map +1 -0
  770. package/dist/src/runtime/register.d.ts +2 -0
  771. package/dist/src/runtime/register.d.ts.map +1 -0
  772. package/dist/src/runtime/register.js +122 -0
  773. package/dist/src/runtime/register.js.map +1 -0
  774. package/dist/src/runtime/scheduler.d.ts +27 -0
  775. package/dist/src/runtime/scheduler.d.ts.map +1 -0
  776. package/dist/src/runtime/scheduler.js +385 -0
  777. package/dist/src/runtime/scheduler.js.map +1 -0
  778. package/dist/src/runtime/types.d.ts +109 -0
  779. package/dist/src/runtime/types.d.ts.map +1 -0
  780. package/dist/src/runtime/types.js +90 -0
  781. package/dist/src/runtime/types.js.map +1 -0
  782. package/dist/src/runtime/utils.d.ts +32 -0
  783. package/dist/src/runtime/utils.d.ts.map +1 -0
  784. package/dist/src/runtime/utils.js +117 -0
  785. package/dist/src/runtime/utils.js.map +1 -0
  786. package/dist/src/schema/change-events.d.ts +42 -0
  787. package/dist/src/schema/change-events.d.ts.map +1 -0
  788. package/dist/src/schema/change-events.js +55 -0
  789. package/dist/src/schema/change-events.js.map +1 -0
  790. package/dist/src/schema/column.d.ts +33 -0
  791. package/dist/src/schema/column.d.ts.map +1 -0
  792. package/dist/src/schema/column.js +22 -0
  793. package/dist/src/schema/column.js.map +1 -0
  794. package/dist/src/schema/function.d.ts +109 -0
  795. package/dist/src/schema/function.d.ts.map +1 -0
  796. package/dist/src/schema/function.js +26 -0
  797. package/dist/src/schema/function.js.map +1 -0
  798. package/dist/src/schema/manager.d.ts +222 -0
  799. package/dist/src/schema/manager.d.ts.map +1 -0
  800. package/dist/src/schema/manager.js +608 -0
  801. package/dist/src/schema/manager.js.map +1 -0
  802. package/dist/src/schema/schema.d.ts +110 -0
  803. package/dist/src/schema/schema.d.ts.map +1 -0
  804. package/dist/src/schema/schema.js +179 -0
  805. package/dist/src/schema/schema.js.map +1 -0
  806. package/dist/src/schema/table.d.ts +143 -0
  807. package/dist/src/schema/table.d.ts.map +1 -0
  808. package/dist/src/schema/table.js +245 -0
  809. package/dist/src/schema/table.js.map +1 -0
  810. package/dist/src/schema/view.d.ts +18 -0
  811. package/dist/src/schema/view.d.ts.map +1 -0
  812. package/dist/src/schema/view.js +2 -0
  813. package/dist/src/schema/view.js.map +1 -0
  814. package/dist/src/schema/window-function.d.ts +26 -0
  815. package/dist/src/schema/window-function.d.ts.map +1 -0
  816. package/dist/src/schema/window-function.js +34 -0
  817. package/dist/src/schema/window-function.js.map +1 -0
  818. package/dist/src/util/affinity.d.ts +34 -0
  819. package/dist/src/util/affinity.d.ts.map +1 -0
  820. package/dist/src/util/affinity.js +153 -0
  821. package/dist/src/util/affinity.js.map +1 -0
  822. package/dist/src/util/ast-stringify.d.ts +23 -0
  823. package/dist/src/util/ast-stringify.d.ts.map +1 -0
  824. package/dist/src/util/ast-stringify.js +683 -0
  825. package/dist/src/util/ast-stringify.js.map +1 -0
  826. package/dist/src/util/cached.d.ts +11 -0
  827. package/dist/src/util/cached.d.ts.map +1 -0
  828. package/dist/src/util/cached.js +24 -0
  829. package/dist/src/util/cached.js.map +1 -0
  830. package/dist/src/util/coercion.d.ts +34 -0
  831. package/dist/src/util/coercion.d.ts.map +1 -0
  832. package/dist/src/util/coercion.js +106 -0
  833. package/dist/src/util/coercion.js.map +1 -0
  834. package/dist/src/util/comparison.d.ts +153 -0
  835. package/dist/src/util/comparison.d.ts.map +1 -0
  836. package/dist/src/util/comparison.js +397 -0
  837. package/dist/src/util/comparison.js.map +1 -0
  838. package/dist/src/util/environment.d.ts +28 -0
  839. package/dist/src/util/environment.d.ts.map +1 -0
  840. package/dist/src/util/environment.js +47 -0
  841. package/dist/src/util/environment.js.map +1 -0
  842. package/dist/src/util/latches.d.ts +16 -0
  843. package/dist/src/util/latches.d.ts.map +1 -0
  844. package/dist/src/util/latches.js +41 -0
  845. package/dist/src/util/latches.js.map +1 -0
  846. package/dist/src/util/patterns.d.ts +23 -0
  847. package/dist/src/util/patterns.d.ts.map +1 -0
  848. package/dist/src/util/patterns.js +54 -0
  849. package/dist/src/util/patterns.js.map +1 -0
  850. package/dist/src/util/plan-formatter.d.ts +23 -0
  851. package/dist/src/util/plan-formatter.d.ts.map +1 -0
  852. package/dist/src/util/plan-formatter.js +41 -0
  853. package/dist/src/util/plan-formatter.js.map +1 -0
  854. package/dist/src/util/plugin-loader.d.ts +20 -0
  855. package/dist/src/util/plugin-loader.d.ts.map +1 -0
  856. package/dist/src/util/plugin-loader.js +57 -0
  857. package/dist/src/util/plugin-loader.js.map +1 -0
  858. package/dist/src/util/row-descriptor.d.ts +35 -0
  859. package/dist/src/util/row-descriptor.d.ts.map +1 -0
  860. package/dist/src/util/row-descriptor.js +85 -0
  861. package/dist/src/util/row-descriptor.js.map +1 -0
  862. package/dist/src/util/serialization.d.ts +11 -0
  863. package/dist/src/util/serialization.d.ts.map +1 -0
  864. package/dist/src/util/serialization.js +41 -0
  865. package/dist/src/util/serialization.js.map +1 -0
  866. package/dist/src/util/working-table-iterable.d.ts +17 -0
  867. package/dist/src/util/working-table-iterable.d.ts.map +1 -0
  868. package/dist/src/util/working-table-iterable.js +30 -0
  869. package/dist/src/util/working-table-iterable.js.map +1 -0
  870. package/dist/src/vtab/best-access-plan.d.ts +144 -0
  871. package/dist/src/vtab/best-access-plan.d.ts.map +1 -0
  872. package/dist/src/vtab/best-access-plan.js +156 -0
  873. package/dist/src/vtab/best-access-plan.js.map +1 -0
  874. package/dist/src/vtab/connection.d.ts +27 -0
  875. package/dist/src/vtab/connection.d.ts.map +1 -0
  876. package/dist/src/vtab/connection.js +2 -0
  877. package/dist/src/vtab/connection.js.map +1 -0
  878. package/dist/src/vtab/filter-info.d.ts +26 -0
  879. package/dist/src/vtab/filter-info.d.ts.map +1 -0
  880. package/dist/src/vtab/filter-info.js +2 -0
  881. package/dist/src/vtab/filter-info.js.map +1 -0
  882. package/dist/src/vtab/index-info.d.ts +69 -0
  883. package/dist/src/vtab/index-info.d.ts.map +1 -0
  884. package/dist/src/vtab/index-info.js +7 -0
  885. package/dist/src/vtab/index-info.js.map +1 -0
  886. package/dist/src/vtab/manifest.d.ts +35 -0
  887. package/dist/src/vtab/manifest.d.ts.map +1 -0
  888. package/dist/src/vtab/manifest.js +2 -0
  889. package/dist/src/vtab/manifest.js.map +1 -0
  890. package/dist/src/vtab/memory/connection.d.ts +29 -0
  891. package/dist/src/vtab/memory/connection.d.ts.map +1 -0
  892. package/dist/src/vtab/memory/connection.js +61 -0
  893. package/dist/src/vtab/memory/connection.js.map +1 -0
  894. package/dist/src/vtab/memory/index.d.ts +38 -0
  895. package/dist/src/vtab/memory/index.d.ts.map +1 -0
  896. package/dist/src/vtab/memory/index.js +132 -0
  897. package/dist/src/vtab/memory/index.js.map +1 -0
  898. package/dist/src/vtab/memory/layer/base-cursor.d.ts +5 -0
  899. package/dist/src/vtab/memory/layer/base-cursor.d.ts.map +1 -0
  900. package/dist/src/vtab/memory/layer/base-cursor.js +111 -0
  901. package/dist/src/vtab/memory/layer/base-cursor.js.map +1 -0
  902. package/dist/src/vtab/memory/layer/base.d.ts +51 -0
  903. package/dist/src/vtab/memory/layer/base.d.ts.map +1 -0
  904. package/dist/src/vtab/memory/layer/base.js +199 -0
  905. package/dist/src/vtab/memory/layer/base.js.map +1 -0
  906. package/dist/src/vtab/memory/layer/connection.d.ts +38 -0
  907. package/dist/src/vtab/memory/layer/connection.d.ts.map +1 -0
  908. package/dist/src/vtab/memory/layer/connection.js +170 -0
  909. package/dist/src/vtab/memory/layer/connection.js.map +1 -0
  910. package/dist/src/vtab/memory/layer/interface.d.ts +41 -0
  911. package/dist/src/vtab/memory/layer/interface.d.ts.map +1 -0
  912. package/dist/src/vtab/memory/layer/interface.js +2 -0
  913. package/dist/src/vtab/memory/layer/interface.js.map +1 -0
  914. package/dist/src/vtab/memory/layer/manager.d.ts +68 -0
  915. package/dist/src/vtab/memory/layer/manager.d.ts.map +1 -0
  916. package/dist/src/vtab/memory/layer/manager.js +752 -0
  917. package/dist/src/vtab/memory/layer/manager.js.map +1 -0
  918. package/dist/src/vtab/memory/layer/safe-iterate.d.ts +9 -0
  919. package/dist/src/vtab/memory/layer/safe-iterate.d.ts.map +1 -0
  920. package/dist/src/vtab/memory/layer/safe-iterate.js +47 -0
  921. package/dist/src/vtab/memory/layer/safe-iterate.js.map +1 -0
  922. package/dist/src/vtab/memory/layer/scan-plan.d.ts +37 -0
  923. package/dist/src/vtab/memory/layer/scan-plan.d.ts.map +1 -0
  924. package/dist/src/vtab/memory/layer/scan-plan.js +87 -0
  925. package/dist/src/vtab/memory/layer/scan-plan.js.map +1 -0
  926. package/dist/src/vtab/memory/layer/transaction-cursor.d.ts +5 -0
  927. package/dist/src/vtab/memory/layer/transaction-cursor.d.ts.map +1 -0
  928. package/dist/src/vtab/memory/layer/transaction-cursor.js +149 -0
  929. package/dist/src/vtab/memory/layer/transaction-cursor.js.map +1 -0
  930. package/dist/src/vtab/memory/layer/transaction.d.ts +44 -0
  931. package/dist/src/vtab/memory/layer/transaction.d.ts.map +1 -0
  932. package/dist/src/vtab/memory/layer/transaction.js +183 -0
  933. package/dist/src/vtab/memory/layer/transaction.js.map +1 -0
  934. package/dist/src/vtab/memory/module.d.ts +89 -0
  935. package/dist/src/vtab/memory/module.d.ts.map +1 -0
  936. package/dist/src/vtab/memory/module.js +533 -0
  937. package/dist/src/vtab/memory/module.js.map +1 -0
  938. package/dist/src/vtab/memory/table.d.ts +49 -0
  939. package/dist/src/vtab/memory/table.d.ts.map +1 -0
  940. package/dist/src/vtab/memory/table.js +209 -0
  941. package/dist/src/vtab/memory/table.js.map +1 -0
  942. package/dist/src/vtab/memory/types.d.ts +19 -0
  943. package/dist/src/vtab/memory/types.d.ts.map +1 -0
  944. package/dist/src/vtab/memory/types.js +2 -0
  945. package/dist/src/vtab/memory/types.js.map +1 -0
  946. package/dist/src/vtab/memory/utils/logging.d.ts +13 -0
  947. package/dist/src/vtab/memory/utils/logging.d.ts.map +1 -0
  948. package/dist/src/vtab/memory/utils/logging.js +28 -0
  949. package/dist/src/vtab/memory/utils/logging.js.map +1 -0
  950. package/dist/src/vtab/memory/utils/primary-key.d.ts +21 -0
  951. package/dist/src/vtab/memory/utils/primary-key.d.ts.map +1 -0
  952. package/dist/src/vtab/memory/utils/primary-key.js +107 -0
  953. package/dist/src/vtab/memory/utils/primary-key.js.map +1 -0
  954. package/dist/src/vtab/module.d.ts +111 -0
  955. package/dist/src/vtab/module.d.ts.map +1 -0
  956. package/dist/src/vtab/module.js +2 -0
  957. package/dist/src/vtab/module.js.map +1 -0
  958. package/dist/src/vtab/table.d.ts +114 -0
  959. package/dist/src/vtab/table.d.ts.map +1 -0
  960. package/dist/src/vtab/table.js +26 -0
  961. package/dist/src/vtab/table.js.map +1 -0
  962. package/package.json +61 -0
  963. package/src/common/constants.ts +60 -0
  964. package/src/common/datatype.ts +86 -0
  965. package/src/common/errors.ts +189 -0
  966. package/src/common/logger.ts +23 -0
  967. package/src/common/type-inference.ts +40 -0
  968. package/src/common/types.ts +148 -0
  969. package/src/core/database-options.ts +258 -0
  970. package/src/core/database.ts +875 -0
  971. package/src/core/param.ts +41 -0
  972. package/src/core/statement.ts +490 -0
  973. package/src/func/builtins/aggregate.ts +247 -0
  974. package/src/func/builtins/builtin-window-functions.ts +165 -0
  975. package/src/func/builtins/datetime.ts +453 -0
  976. package/src/func/builtins/explain.ts +648 -0
  977. package/src/func/builtins/generation.ts +43 -0
  978. package/src/func/builtins/index.ts +126 -0
  979. package/src/func/builtins/json-helpers.ts +237 -0
  980. package/src/func/builtins/json-tvf.ts +225 -0
  981. package/src/func/builtins/json.ts +466 -0
  982. package/src/func/builtins/scalar.ts +232 -0
  983. package/src/func/builtins/schema.ts +193 -0
  984. package/src/func/builtins/string.ts +293 -0
  985. package/src/func/context.ts +251 -0
  986. package/src/func/registration.ts +167 -0
  987. package/src/index.ts +67 -0
  988. package/src/parser/ast.ts +475 -0
  989. package/src/parser/index.ts +65 -0
  990. package/src/parser/lexer.ts +767 -0
  991. package/src/parser/parser.ts +2783 -0
  992. package/src/parser/utils.ts +10 -0
  993. package/src/parser/visitor.ts +187 -0
  994. package/src/planner/analysis/README.md +93 -0
  995. package/src/planner/analysis/const-evaluator.ts +63 -0
  996. package/src/planner/analysis/const-pass.ts +270 -0
  997. package/src/planner/analysis/constraint-extractor.ts +277 -0
  998. package/src/planner/building/alter-table.ts +47 -0
  999. package/src/planner/building/block.ts +78 -0
  1000. package/src/planner/building/create-view.ts +56 -0
  1001. package/src/planner/building/ddl.ts +24 -0
  1002. package/src/planner/building/delete.ts +158 -0
  1003. package/src/planner/building/drop-table.ts +13 -0
  1004. package/src/planner/building/drop-view.ts +19 -0
  1005. package/src/planner/building/expression.ts +176 -0
  1006. package/src/planner/building/function-call.ts +87 -0
  1007. package/src/planner/building/insert.ts +336 -0
  1008. package/src/planner/building/pragma.ts +33 -0
  1009. package/src/planner/building/schema-resolution.ts +176 -0
  1010. package/src/planner/building/select-aggregates.ts +245 -0
  1011. package/src/planner/building/select-compound.ts +110 -0
  1012. package/src/planner/building/select-context.ts +75 -0
  1013. package/src/planner/building/select-modifiers.ts +170 -0
  1014. package/src/planner/building/select-projections.ts +177 -0
  1015. package/src/planner/building/select-window.ts +248 -0
  1016. package/src/planner/building/select.ts +388 -0
  1017. package/src/planner/building/table-function.ts +48 -0
  1018. package/src/planner/building/table.ts +73 -0
  1019. package/src/planner/building/transaction.ts +23 -0
  1020. package/src/planner/building/update.ts +255 -0
  1021. package/src/planner/building/with.ts +181 -0
  1022. package/src/planner/cache/materialization-advisory.ts +244 -0
  1023. package/src/planner/cache/reference-graph.ts +172 -0
  1024. package/src/planner/cost/index.ts +169 -0
  1025. package/src/planner/debug/logger-utils.ts +68 -0
  1026. package/src/planner/debug.ts +316 -0
  1027. package/src/planner/framework/README.md +132 -0
  1028. package/src/planner/framework/context.ts +188 -0
  1029. package/src/planner/framework/physical-utils.ts +210 -0
  1030. package/src/planner/framework/registry.ts +274 -0
  1031. package/src/planner/framework/trace.ts +259 -0
  1032. package/src/planner/nodes/add-constraint-node.ts +58 -0
  1033. package/src/planner/nodes/aggregate-function.ts +145 -0
  1034. package/src/planner/nodes/aggregate-node.ts +220 -0
  1035. package/src/planner/nodes/array-index-node.ts +50 -0
  1036. package/src/planner/nodes/block.ts +80 -0
  1037. package/src/planner/nodes/cache-node.ts +94 -0
  1038. package/src/planner/nodes/constraint-check-node.ts +95 -0
  1039. package/src/planner/nodes/create-index-node.ts +37 -0
  1040. package/src/planner/nodes/create-table-node.ts +31 -0
  1041. package/src/planner/nodes/create-view-node.ts +40 -0
  1042. package/src/planner/nodes/cte-node.ts +111 -0
  1043. package/src/planner/nodes/cte-reference-node.ts +89 -0
  1044. package/src/planner/nodes/delete-node.ts +72 -0
  1045. package/src/planner/nodes/distinct-node.ts +93 -0
  1046. package/src/planner/nodes/dml-executor-node.ts +98 -0
  1047. package/src/planner/nodes/drop-table-node.ts +31 -0
  1048. package/src/planner/nodes/drop-view-node.ts +33 -0
  1049. package/src/planner/nodes/filter.ts +91 -0
  1050. package/src/planner/nodes/function.ts +93 -0
  1051. package/src/planner/nodes/insert-node.ts +97 -0
  1052. package/src/planner/nodes/join-node.ts +213 -0
  1053. package/src/planner/nodes/limit-offset.ts +125 -0
  1054. package/src/planner/nodes/physical-access-nodes.ts +298 -0
  1055. package/src/planner/nodes/plan-node-type.ts +87 -0
  1056. package/src/planner/nodes/plan-node.ts +466 -0
  1057. package/src/planner/nodes/pragma.ts +94 -0
  1058. package/src/planner/nodes/project-node.ts +223 -0
  1059. package/src/planner/nodes/recursive-cte-node.ts +130 -0
  1060. package/src/planner/nodes/reference.ts +310 -0
  1061. package/src/planner/nodes/returning-node.ts +215 -0
  1062. package/src/planner/nodes/scalar.ts +736 -0
  1063. package/src/planner/nodes/scan.ts +103 -0
  1064. package/src/planner/nodes/sequencing-node.ts +113 -0
  1065. package/src/planner/nodes/set-operation-node.ts +87 -0
  1066. package/src/planner/nodes/single-row.ts +80 -0
  1067. package/src/planner/nodes/sink-node.ts +61 -0
  1068. package/src/planner/nodes/sort.ts +137 -0
  1069. package/src/planner/nodes/stream-aggregate.ts +225 -0
  1070. package/src/planner/nodes/subquery.ts +207 -0
  1071. package/src/planner/nodes/table-function-call.ts +127 -0
  1072. package/src/planner/nodes/transaction-node.ts +61 -0
  1073. package/src/planner/nodes/update-node.ts +114 -0
  1074. package/src/planner/nodes/values-node.ts +244 -0
  1075. package/src/planner/nodes/view-reference-node.ts +97 -0
  1076. package/src/planner/nodes/window-function.ts +73 -0
  1077. package/src/planner/nodes/window-node.ts +193 -0
  1078. package/src/planner/optimizer-tuning.ts +87 -0
  1079. package/src/planner/optimizer.ts +263 -0
  1080. package/src/planner/planning-context.ts +168 -0
  1081. package/src/planner/resolve.ts +100 -0
  1082. package/src/planner/rules/README.md +96 -0
  1083. package/src/planner/rules/access/rule-select-access-path.ts +180 -0
  1084. package/src/planner/rules/aggregate/rule-aggregate-streaming.ts +76 -0
  1085. package/src/planner/rules/cache/rule-cte-optimization.ts +66 -0
  1086. package/src/planner/rules/cache/rule-materialization-advisory.ts +66 -0
  1087. package/src/planner/rules/cache/rule-mutating-subquery-cache.ts +110 -0
  1088. package/src/planner/rules/physical/rule-mark-physical.ts +37 -0
  1089. package/src/planner/scopes/aliased.ts +50 -0
  1090. package/src/planner/scopes/base.ts +27 -0
  1091. package/src/planner/scopes/empty.ts +22 -0
  1092. package/src/planner/scopes/global.ts +73 -0
  1093. package/src/planner/scopes/multi.ts +41 -0
  1094. package/src/planner/scopes/param.ts +96 -0
  1095. package/src/planner/scopes/registered.ts +78 -0
  1096. package/src/planner/scopes/scope.ts +28 -0
  1097. package/src/planner/stats/basic-estimates.ts +107 -0
  1098. package/src/planner/stats/index.ts +223 -0
  1099. package/src/planner/type-utils.ts +95 -0
  1100. package/src/planner/validation/plan-validator.ts +340 -0
  1101. package/src/runtime/async-util.ts +282 -0
  1102. package/src/runtime/cache/shared-cache.ts +169 -0
  1103. package/src/runtime/emission-context.ts +310 -0
  1104. package/src/runtime/emit/add-constraint.ts +54 -0
  1105. package/src/runtime/emit/aggregate.ts +533 -0
  1106. package/src/runtime/emit/array-index.ts +25 -0
  1107. package/src/runtime/emit/binary.ts +335 -0
  1108. package/src/runtime/emit/block.ts +23 -0
  1109. package/src/runtime/emit/cache.ts +64 -0
  1110. package/src/runtime/emit/case.ts +87 -0
  1111. package/src/runtime/emit/cast.ts +151 -0
  1112. package/src/runtime/emit/collate.ts +9 -0
  1113. package/src/runtime/emit/column-reference.ts +50 -0
  1114. package/src/runtime/emit/constraint-check.ts +285 -0
  1115. package/src/runtime/emit/create-index.ts +15 -0
  1116. package/src/runtime/emit/create-table.ts +15 -0
  1117. package/src/runtime/emit/create-view.ts +52 -0
  1118. package/src/runtime/emit/cte-reference.ts +75 -0
  1119. package/src/runtime/emit/cte.ts +39 -0
  1120. package/src/runtime/emit/delete.ts +24 -0
  1121. package/src/runtime/emit/distinct.ts +45 -0
  1122. package/src/runtime/emit/dml-executor.ts +94 -0
  1123. package/src/runtime/emit/drop-table.ts +27 -0
  1124. package/src/runtime/emit/drop-view.ts +49 -0
  1125. package/src/runtime/emit/filter.ts +37 -0
  1126. package/src/runtime/emit/insert.ts +54 -0
  1127. package/src/runtime/emit/join.ts +145 -0
  1128. package/src/runtime/emit/limit-offset.ts +73 -0
  1129. package/src/runtime/emit/literal.ts +17 -0
  1130. package/src/runtime/emit/parameter.ts +59 -0
  1131. package/src/runtime/emit/pragma.ts +56 -0
  1132. package/src/runtime/emit/project.ts +40 -0
  1133. package/src/runtime/emit/recursive-cte.ts +120 -0
  1134. package/src/runtime/emit/returning.ts +48 -0
  1135. package/src/runtime/emit/scalar-function.ts +43 -0
  1136. package/src/runtime/emit/scan.ts +88 -0
  1137. package/src/runtime/emit/sequencing.ts +24 -0
  1138. package/src/runtime/emit/set-operation.ts +111 -0
  1139. package/src/runtime/emit/sink.ts +27 -0
  1140. package/src/runtime/emit/sort.ts +78 -0
  1141. package/src/runtime/emit/subquery.ts +143 -0
  1142. package/src/runtime/emit/table-reference.ts +92 -0
  1143. package/src/runtime/emit/table-valued-function.ts +119 -0
  1144. package/src/runtime/emit/transaction.ts +167 -0
  1145. package/src/runtime/emit/unary.ts +85 -0
  1146. package/src/runtime/emit/update.ts +73 -0
  1147. package/src/runtime/emit/values.ts +66 -0
  1148. package/src/runtime/emit/window-function.ts +42 -0
  1149. package/src/runtime/emit/window.ts +472 -0
  1150. package/src/runtime/emitters.ts +130 -0
  1151. package/src/runtime/register.ts +134 -0
  1152. package/src/runtime/scheduler.ts +488 -0
  1153. package/src/runtime/types.ts +191 -0
  1154. package/src/runtime/utils.ts +136 -0
  1155. package/src/schema/change-events.ts +80 -0
  1156. package/src/schema/column.ts +45 -0
  1157. package/src/schema/function.ts +139 -0
  1158. package/src/schema/manager.ts +694 -0
  1159. package/src/schema/schema.ts +199 -0
  1160. package/src/schema/table.ts +364 -0
  1161. package/src/schema/view.ts +19 -0
  1162. package/src/schema/window-function.ts +54 -0
  1163. package/src/util/affinity.ts +151 -0
  1164. package/src/util/ast-stringify.ts +764 -0
  1165. package/src/util/cached.ts +25 -0
  1166. package/src/util/coercion.ts +113 -0
  1167. package/src/util/comparison.ts +437 -0
  1168. package/src/util/environment.ts +52 -0
  1169. package/src/util/latches.ts +47 -0
  1170. package/src/util/patterns.ts +56 -0
  1171. package/src/util/plan-formatter.ts +51 -0
  1172. package/src/util/plugin-loader.ts +69 -0
  1173. package/src/util/row-descriptor.ts +105 -0
  1174. package/src/util/serialization.ts +45 -0
  1175. package/src/util/working-table-iterable.ts +30 -0
  1176. package/src/vtab/best-access-plan.ts +270 -0
  1177. package/src/vtab/connection.ts +36 -0
  1178. package/src/vtab/filter-info.ts +23 -0
  1179. package/src/vtab/index-info.ts +84 -0
  1180. package/src/vtab/manifest.ts +37 -0
  1181. package/src/vtab/memory/connection.ts +73 -0
  1182. package/src/vtab/memory/index.ts +178 -0
  1183. package/src/vtab/memory/layer/base-cursor.ts +124 -0
  1184. package/src/vtab/memory/layer/base.ts +273 -0
  1185. package/src/vtab/memory/layer/connection.ts +203 -0
  1186. package/src/vtab/memory/layer/interface.ts +47 -0
  1187. package/src/vtab/memory/layer/manager.ts +861 -0
  1188. package/src/vtab/memory/layer/safe-iterate.ts +49 -0
  1189. package/src/vtab/memory/layer/scan-plan.ts +84 -0
  1190. package/src/vtab/memory/layer/transaction-cursor.ts +162 -0
  1191. package/src/vtab/memory/layer/transaction.ts +229 -0
  1192. package/src/vtab/memory/module.ts +673 -0
  1193. package/src/vtab/memory/table.ts +253 -0
  1194. package/src/vtab/memory/types.ts +23 -0
  1195. package/src/vtab/memory/utils/logging.ts +33 -0
  1196. package/src/vtab/memory/utils/primary-key.ts +158 -0
  1197. package/src/vtab/module.ts +140 -0
  1198. package/src/vtab/table.ts +143 -0
@@ -0,0 +1,297 @@
1
+ import { PlanNodeType } from './plan-node-type.js';
2
+ import type { Scope } from '../scopes/scope.js';
3
+ import type { BaseType, RelationType, ScalarType } from '../../common/datatype.js';
4
+ import type { Expression } from '../../parser/ast.js';
5
+ import type { OutputValue, Row } from '../../common/types.js';
6
+ /**
7
+ * Physical properties that execution nodes can provide or require
8
+ */
9
+ export interface PhysicalProperties {
10
+ /** Ordering of rows. Each element is a column index, negative for DESC */
11
+ ordering?: {
12
+ column: number;
13
+ desc: boolean;
14
+ }[];
15
+ /** Estimated number of rows this node will produce */
16
+ estimatedRows?: number;
17
+ /**
18
+ * Column sets that are guaranteed unique in the output.
19
+ * Unlike logical keys which are schema-defined, these are derived from
20
+ * the operation (e.g., DISTINCT creates a unique key on all columns)
21
+ */
22
+ uniqueKeys?: number[][];
23
+ /**
24
+ * Whether this node is read-only (does not mutate external state).
25
+ * false = has side effects, true = pure/read-only
26
+ */
27
+ readonly?: boolean;
28
+ /**
29
+ * Whether this node is deterministic - same inputs always produce same outputs.
30
+ * Non-deterministic examples: random(), now(), sequence generators
31
+ */
32
+ deterministic?: boolean;
33
+ /**
34
+ * Whether this node is idempotent - calling twice in same transaction
35
+ * leaves state as if called once. Only meaningful for non-readonly nodes.
36
+ * Examples: INSERT with IGNORE, UPDATE with same values
37
+ */
38
+ idempotent?: boolean;
39
+ /**
40
+ * Whether this node directly produces a constant result (deterministic, readonly, and no dependencies).
41
+ * If this is true, the node should implement getValue() to return the constant value.
42
+ */
43
+ constant?: boolean;
44
+ }
45
+ /**
46
+ * Default physical properties for plan nodes
47
+ */
48
+ export declare const DEFAULT_PHYSICAL: PhysicalProperties;
49
+ /**
50
+ * Represents a column with a unique identifier that persists across plan transformations
51
+ */
52
+ export interface Attribute {
53
+ /** Globally unique identifier for this column */
54
+ id: number;
55
+ /** Human-readable name (may not be unique) */
56
+ name: string;
57
+ /** Data type information */
58
+ type: ScalarType;
59
+ /** Source relation that originally produced this column */
60
+ sourceRelation?: string;
61
+ }
62
+ /**
63
+ * Row descriptor that maps attribute IDs to column indices in a row array
64
+ */
65
+ export type RowDescriptor = number[];
66
+ /**
67
+ * Function that returns a row when called
68
+ */
69
+ export type RowGetter = () => Row;
70
+ export type TableDescriptor = {};
71
+ export type TableGetter = () => AsyncIterable<Row>;
72
+ /**
73
+ * Base class for all nodes in the logical query plan.
74
+ * PlanNodes are immutable once constructed.
75
+ */
76
+ export declare abstract class PlanNode {
77
+ /** The scope in which this node is planned. Note that this captures references made through it, so you can tell if a node has dependencies. */
78
+ readonly scope: Scope;
79
+ /** Estimated cost to execute this node itself (excluding its children). */
80
+ readonly estimatedCost: number;
81
+ private static nextId;
82
+ private static nextAttributeId;
83
+ readonly id: string;
84
+ abstract readonly nodeType: PlanNodeType;
85
+ /** Present if the node is a physical plan node */
86
+ private _physical?;
87
+ constructor(
88
+ /** The scope in which this node is planned. Note that this captures references made through it, so you can tell if a node has dependencies. */
89
+ scope: Scope,
90
+ /** Estimated cost to execute this node itself (excluding its children). */
91
+ estimatedCost?: number);
92
+ abstract getType(): BaseType;
93
+ abstract getChildren(): readonly PlanNode[];
94
+ /**
95
+ * Default implementation of getRelations() that filters getChildren()
96
+ * Can be overridden for performance if needed
97
+ */
98
+ getRelations(): readonly RelationalPlanNode[];
99
+ /**
100
+ * Return this node with its children replaced by newChildren.
101
+ * MUST keep attribute IDs stable unless the concrete node deliberately produces new columns.
102
+ *
103
+ * Implementations must:
104
+ * 1. Verify arity (throw if length mismatch)
105
+ * 2. Return `this` if nothing changed
106
+ * 3. Otherwise construct a new instance copying all immutable properties
107
+ */
108
+ abstract withChildren(newChildren: readonly PlanNode[]): PlanNode;
109
+ /**
110
+ * Compute physical property overrides for this node
111
+ * Called by the optimizer when converting logical to physical nodes.
112
+ * @param children Physical properties of optimized children
113
+ */
114
+ computePhysical?(children: readonly PhysicalProperties[]): Partial<PhysicalProperties>;
115
+ /**
116
+ * Get the attributes (columns) produced by this relational node
117
+ */
118
+ getAttributes?(): Attribute[];
119
+ /**
120
+ * Get map of attribute ID to producing scalar expression (for constant folding)
121
+ * Only relational nodes that synthesize columns from expressions need implement this
122
+ */
123
+ getProducingExprs?(): Map<number, ScalarPlanNode>;
124
+ getTotalCost(): number;
125
+ visit(visitor: PlanNodeVisitor): void;
126
+ toString(): string;
127
+ /**
128
+ * Get logical properties for this node.
129
+ * Override to provide node-specific logical information.
130
+ */
131
+ getLogicalAttributes(): Record<string, unknown>;
132
+ /** Infer and cache the physical properties of this node */
133
+ get physical(): PhysicalProperties;
134
+ /** Helper to generate unique attribute IDs */
135
+ static nextAttrId(): number;
136
+ /**
137
+ * Check if a node is functional (pure and deterministic), safe for constant folding
138
+ */
139
+ static isFunctional(physical: PhysicalProperties): boolean;
140
+ /**
141
+ * Check if a node has side effects (mutates external state)
142
+ */
143
+ static hasSideEffects(physical: PhysicalProperties): boolean;
144
+ }
145
+ export type PlanNodeVisitor = (node: PlanNode) => void;
146
+ /**
147
+ * Base class for PlanNodes that do not produce a relational or scalar output,
148
+ * typically used for DDL or other side-effecting operations.
149
+ */
150
+ export declare abstract class VoidNode extends PlanNode {
151
+ getType(): BaseType;
152
+ getChildren(): readonly PlanNode[];
153
+ withChildren(newChildren: readonly PlanNode[]): PlanNode;
154
+ getRelations(): readonly RelationalPlanNode[];
155
+ }
156
+ /**
157
+ * Base interface for PlanNodes that produce a relation (a set of rows).
158
+ * Note: this is an interface that concrete RelationalNode classes will implement.
159
+ */
160
+ export interface RelationalPlanNode extends PlanNode {
161
+ /** Estimated number of rows this node will output. */
162
+ readonly estimatedRows?: number;
163
+ getType(): RelationType;
164
+ /**
165
+ * Get the attributes (columns) produced by this relational node
166
+ * Each attribute has a unique ID that persists across plan transformations
167
+ */
168
+ getAttributes(): Attribute[];
169
+ }
170
+ /**
171
+ * Base interface for PlanNodes that produce a scalar value (Expression Nodes).
172
+ * Note: this is an interface that concrete ScalarNode classes will implement.
173
+ */
174
+ export interface ScalarPlanNode extends PlanNode {
175
+ readonly expression: Expression;
176
+ getType(): ScalarType;
177
+ }
178
+ /** A relational plan node that has no relational inputs (a leaf in the relational algebra tree).
179
+ * Will not have scalar inputs either - this is either TableDee or TableDum, projection can be used to compute columns
180
+ */
181
+ export interface ZeroAryRelationalNode extends RelationalPlanNode {
182
+ getRelations(): readonly [];
183
+ }
184
+ /** A relational plan node that operates on a single relational input. */
185
+ export interface UnaryRelationalNode extends RelationalPlanNode {
186
+ readonly source: RelationalPlanNode;
187
+ getRelations(): readonly [RelationalPlanNode];
188
+ }
189
+ /** A relational plan node that operates on two relational inputs. */
190
+ export interface BinaryRelationalNode extends RelationalPlanNode {
191
+ readonly left: RelationalPlanNode;
192
+ readonly right: RelationalPlanNode;
193
+ getRelations(): readonly [RelationalPlanNode, RelationalPlanNode];
194
+ }
195
+ /** A scalar plan node that has no scalar inputs (a leaf in an expression tree).
196
+ * May have relational input(s) e.g. EXISTS, IN, etc.
197
+ */
198
+ export interface ZeroAryScalarNode extends ScalarPlanNode {
199
+ getChildren(): readonly [];
200
+ }
201
+ /** A scalar plan node that operates on a single scalar input. */
202
+ export interface UnaryScalarNode extends ScalarPlanNode {
203
+ readonly operand: ScalarPlanNode;
204
+ getChildren(): readonly [ScalarPlanNode];
205
+ }
206
+ /** A scalar plan node that operates on two scalar inputs. */
207
+ export interface BinaryScalarNode extends ScalarPlanNode {
208
+ readonly left: ScalarPlanNode;
209
+ readonly right: ScalarPlanNode;
210
+ getChildren(): readonly [ScalarPlanNode, ScalarPlanNode];
211
+ }
212
+ /** A scalar plan node that operates on N scalar inputs. */
213
+ export interface NaryScalarNode extends ScalarPlanNode {
214
+ readonly operands: ReadonlyArray<ScalarPlanNode>;
215
+ getChildren(): readonly ScalarPlanNode[];
216
+ }
217
+ /**
218
+ * Base class for relational nodes with no relational inputs (leaf nodes)
219
+ */
220
+ export declare abstract class ZeroAryRelationalBase extends PlanNode implements ZeroAryRelationalNode {
221
+ abstract getType(): RelationType;
222
+ abstract getAttributes(): Attribute[];
223
+ getChildren(): readonly PlanNode[];
224
+ getRelations(): readonly [];
225
+ withChildren(newChildren: readonly PlanNode[]): PlanNode;
226
+ }
227
+ /**
228
+ * Base class for relational nodes with one relational input
229
+ */
230
+ export declare abstract class UnaryRelationalBase extends PlanNode implements UnaryRelationalNode {
231
+ abstract readonly source: RelationalPlanNode;
232
+ abstract getType(): RelationType;
233
+ abstract getAttributes(): Attribute[];
234
+ getChildren(): readonly PlanNode[];
235
+ getRelations(): readonly [RelationalPlanNode];
236
+ abstract withChildren(newChildren: readonly PlanNode[]): PlanNode;
237
+ }
238
+ /**
239
+ * Base class for relational nodes with two relational inputs
240
+ */
241
+ export declare abstract class BinaryRelationalBase extends PlanNode implements BinaryRelationalNode {
242
+ abstract readonly left: RelationalPlanNode;
243
+ abstract readonly right: RelationalPlanNode;
244
+ abstract getType(): RelationType;
245
+ abstract getAttributes(): Attribute[];
246
+ getChildren(): readonly PlanNode[];
247
+ getRelations(): readonly [RelationalPlanNode, RelationalPlanNode];
248
+ abstract withChildren(newChildren: readonly PlanNode[]): PlanNode;
249
+ }
250
+ /**
251
+ * Base class for scalar nodes with no scalar inputs (leaf expressions)
252
+ */
253
+ export declare abstract class ZeroAryScalarBase extends PlanNode implements ZeroAryScalarNode {
254
+ abstract readonly expression: Expression;
255
+ abstract getType(): ScalarType;
256
+ getChildren(): readonly [];
257
+ withChildren(newChildren: readonly PlanNode[]): PlanNode;
258
+ }
259
+ /**
260
+ * Base class for scalar nodes with one scalar input
261
+ */
262
+ export declare abstract class UnaryScalarBase extends PlanNode implements UnaryScalarNode {
263
+ abstract readonly operand: ScalarPlanNode;
264
+ abstract readonly expression: Expression;
265
+ abstract getType(): ScalarType;
266
+ getChildren(): readonly [ScalarPlanNode];
267
+ abstract withChildren(newChildren: readonly PlanNode[]): PlanNode;
268
+ }
269
+ /**
270
+ * Base class for scalar nodes with two scalar inputs
271
+ */
272
+ export declare abstract class BinaryScalarBase extends PlanNode implements BinaryScalarNode {
273
+ abstract readonly left: ScalarPlanNode;
274
+ abstract readonly right: ScalarPlanNode;
275
+ abstract readonly expression: Expression;
276
+ abstract getType(): ScalarType;
277
+ getChildren(): readonly [ScalarPlanNode, ScalarPlanNode];
278
+ abstract withChildren(newChildren: readonly PlanNode[]): PlanNode;
279
+ }
280
+ /**
281
+ * Base class for scalar nodes with N scalar inputs
282
+ */
283
+ export declare abstract class NaryScalarBase extends PlanNode implements NaryScalarNode {
284
+ abstract readonly operands: ReadonlyArray<ScalarPlanNode>;
285
+ abstract readonly expression: Expression;
286
+ abstract getType(): ScalarType;
287
+ getChildren(): readonly ScalarPlanNode[];
288
+ abstract withChildren(newChildren: readonly PlanNode[]): PlanNode;
289
+ }
290
+ /**
291
+ * A node that directly produces a constant result (deterministic, readonly, and no dependencies).
292
+ * If the node is constant (literal value), it should implement getValue() to return the constant value.
293
+ */
294
+ export interface ConstantNode extends PlanNode {
295
+ getValue(): OutputValue;
296
+ }
297
+ //# sourceMappingURL=plan-node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plan-node.d.ts","sourceRoot":"","sources":["../../../../src/planner/nodes/plan-node.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,198 @@
1
+ import { quereusError } from '../../common/errors.js';
2
+ // Derived properties (computed, not stored):
3
+ // functional = deterministic && readonly (safe for constant folding)
4
+ // sideEffects = !readonly (mutates external state)
5
+ /**
6
+ * Default physical properties for plan nodes
7
+ */
8
+ export const DEFAULT_PHYSICAL = {
9
+ deterministic: true,
10
+ readonly: true,
11
+ idempotent: true, // Default true for readonly nodes
12
+ constant: false,
13
+ };
14
+ /**
15
+ * Base class for all nodes in the logical query plan.
16
+ * PlanNodes are immutable once constructed.
17
+ */
18
+ export class PlanNode {
19
+ scope;
20
+ estimatedCost;
21
+ static nextId = 0;
22
+ static nextAttributeId = 0;
23
+ id;
24
+ /** Present if the node is a physical plan node */
25
+ _physical;
26
+ constructor(
27
+ /** The scope in which this node is planned. Note that this captures references made through it, so you can tell if a node has dependencies. */
28
+ scope,
29
+ /** Estimated cost to execute this node itself (excluding its children). */
30
+ estimatedCost = 0.01) {
31
+ this.scope = scope;
32
+ this.estimatedCost = estimatedCost;
33
+ this.id = `${PlanNode.nextId++}`;
34
+ }
35
+ /**
36
+ * Default implementation of getRelations() that filters getChildren()
37
+ * Can be overridden for performance if needed
38
+ */
39
+ getRelations() {
40
+ return this.getChildren()
41
+ .filter((c) => 'getAttributes' in c && typeof c.getAttributes === 'function');
42
+ }
43
+ getTotalCost() {
44
+ return (this.estimatedCost + this.getChildren().reduce((acc, child) => acc + child.getTotalCost(), 0))
45
+ * (this.getRelations().reduce((acc, relation) => acc + relation.getTotalCost(), 0) || 1);
46
+ }
47
+ visit(visitor) {
48
+ visitor(this);
49
+ this.getChildren().forEach(child => child.visit(visitor));
50
+ this.getRelations().forEach(relation => relation.visit(visitor));
51
+ }
52
+ toString() {
53
+ return `${this.nodeType} [${this.id}]`;
54
+ }
55
+ /**
56
+ * Get logical properties for this node.
57
+ * Override to provide node-specific logical information.
58
+ */
59
+ getLogicalAttributes() {
60
+ return {};
61
+ }
62
+ /** Infer and cache the physical properties of this node */
63
+ get physical() {
64
+ if (!this._physical) {
65
+ const childrenPhysical = this.getChildren().map(child => child.physical);
66
+ // Get the node-specific overrides
67
+ const propsOverride = this.computePhysical?.(childrenPhysical);
68
+ // Derive defaults from children if there are any, else leaf defaults
69
+ const defaults = childrenPhysical.length
70
+ ? {
71
+ deterministic: childrenPhysical.every(child => child.deterministic),
72
+ idempotent: childrenPhysical.every(child => child.idempotent),
73
+ readonly: childrenPhysical.every(child => child.readonly),
74
+ constant: childrenPhysical.every(child => child.constant),
75
+ }
76
+ : DEFAULT_PHYSICAL;
77
+ this._physical = { ...defaults, ...propsOverride };
78
+ }
79
+ return this._physical;
80
+ }
81
+ /** Helper to generate unique attribute IDs */
82
+ static nextAttrId() {
83
+ return PlanNode.nextAttributeId++;
84
+ }
85
+ /**
86
+ * Check if a node is functional (pure and deterministic), safe for constant folding
87
+ */
88
+ static isFunctional(physical) {
89
+ return (physical.deterministic !== false) && (physical.readonly !== false);
90
+ }
91
+ /**
92
+ * Check if a node has side effects (mutates external state)
93
+ */
94
+ static hasSideEffects(physical) {
95
+ return physical.readonly === false;
96
+ }
97
+ }
98
+ /**
99
+ * Base class for PlanNodes that do not produce a relational or scalar output,
100
+ * typically used for DDL or other side-effecting operations.
101
+ */
102
+ export class VoidNode extends PlanNode {
103
+ getType() {
104
+ // Indicates a non-relational, non-scalar result, e.g., status object or no output.
105
+ return { typeClass: 'void' };
106
+ }
107
+ getChildren() {
108
+ return []; // No direct child plan nodes in the execution sense
109
+ }
110
+ withChildren(newChildren) {
111
+ if (newChildren.length !== 0) {
112
+ quereusError(`${this.nodeType} expects 0 children, got ${newChildren.length}`);
113
+ }
114
+ return this; // No children, so no change
115
+ }
116
+ getRelations() {
117
+ return []; // Does not operate on input relations
118
+ }
119
+ }
120
+ // --- Concrete Arity-Based Base Classes ---
121
+ /**
122
+ * Base class for relational nodes with no relational inputs (leaf nodes)
123
+ */
124
+ export class ZeroAryRelationalBase extends PlanNode {
125
+ getChildren() {
126
+ return [];
127
+ }
128
+ getRelations() {
129
+ return [];
130
+ }
131
+ withChildren(newChildren) {
132
+ if (newChildren.length !== 0) {
133
+ quereusError(`${this.nodeType} expects 0 children, got ${newChildren.length}`);
134
+ }
135
+ return this;
136
+ }
137
+ }
138
+ /**
139
+ * Base class for relational nodes with one relational input
140
+ */
141
+ export class UnaryRelationalBase extends PlanNode {
142
+ getChildren() {
143
+ return [this.source];
144
+ }
145
+ getRelations() {
146
+ return [this.source];
147
+ }
148
+ }
149
+ /**
150
+ * Base class for relational nodes with two relational inputs
151
+ */
152
+ export class BinaryRelationalBase extends PlanNode {
153
+ getChildren() {
154
+ return [this.left, this.right];
155
+ }
156
+ getRelations() {
157
+ return [this.left, this.right];
158
+ }
159
+ }
160
+ /**
161
+ * Base class for scalar nodes with no scalar inputs (leaf expressions)
162
+ */
163
+ export class ZeroAryScalarBase extends PlanNode {
164
+ getChildren() {
165
+ return [];
166
+ }
167
+ withChildren(newChildren) {
168
+ if (newChildren.length !== 0) {
169
+ quereusError(`${this.nodeType} expects 0 children, got ${newChildren.length}`);
170
+ }
171
+ return this;
172
+ }
173
+ }
174
+ /**
175
+ * Base class for scalar nodes with one scalar input
176
+ */
177
+ export class UnaryScalarBase extends PlanNode {
178
+ getChildren() {
179
+ return [this.operand];
180
+ }
181
+ }
182
+ /**
183
+ * Base class for scalar nodes with two scalar inputs
184
+ */
185
+ export class BinaryScalarBase extends PlanNode {
186
+ getChildren() {
187
+ return [this.left, this.right];
188
+ }
189
+ }
190
+ /**
191
+ * Base class for scalar nodes with N scalar inputs
192
+ */
193
+ export class NaryScalarBase extends PlanNode {
194
+ getChildren() {
195
+ return this.operands;
196
+ }
197
+ }
198
+ //# sourceMappingURL=plan-node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plan-node.js","sourceRoot":"","sources":["../../../../src/planner/nodes/plan-node.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import { type SqlValue } from '../../common/types.js';
2
+ import * as AST from '../../parser/ast.js';
3
+ import { Attribute, type RelationalPlanNode } from './plan-node.js';
4
+ import { PlanNodeType } from './plan-node-type.js';
5
+ import { PlanNode } from './plan-node.js';
6
+ import { RelationType } from '../../common/datatype.js';
7
+ export declare class PragmaPlanNode extends PlanNode implements RelationalPlanNode {
8
+ readonly pragmaName: string;
9
+ readonly statementAst: AST.PragmaStmt;
10
+ readonly value?: SqlValue | undefined;
11
+ readonly nodeType = PlanNodeType.Pragma;
12
+ constructor(scope: any, pragmaName: string, statementAst: AST.PragmaStmt, value?: SqlValue | undefined);
13
+ getType(): RelationType;
14
+ get estimatedRows(): number | undefined;
15
+ getAttributes(): Attribute[];
16
+ getChildren(): PlanNode[];
17
+ withChildren(_newChildren: readonly PlanNode[]): PlanNode;
18
+ toString(): string;
19
+ getLogicalAttributes(): Record<string, unknown>;
20
+ }
21
+ //# sourceMappingURL=pragma.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pragma.d.ts","sourceRoot":"","sources":["../../../../src/planner/nodes/pragma.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACnE,OAAO,KAAK,GAAG,MAAM,qBAAqB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,KAAK,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAExD,qBAAa,cAAe,SAAQ,QAAS,YAAW,kBAAkB;aAKxD,UAAU,EAAE,MAAM;aAClB,YAAY,EAAE,GAAG,CAAC,UAAU;aAC5B,KAAK,CAAC,EAAE,QAAQ;IANjC,SAAkB,QAAQ,uBAAuB;gBAGhD,KAAK,EAAE,GAAG,EACM,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,GAAG,CAAC,UAAU,EAC5B,KAAK,CAAC,EAAE,QAAQ,YAAA;IAKjC,OAAO,IAAI,YAAY;IA+BvB,IAAI,aAAa,IAAI,MAAM,GAAG,SAAS,CAEtC;IAED,aAAa,IAAI,SAAS,EAAE;IAW5B,WAAW,IAAI,QAAQ,EAAE;IAIzB,YAAY,CAAC,YAAY,EAAE,SAAS,QAAQ,EAAE,GAAG,QAAQ;IAIhD,QAAQ,IAAI,MAAM;IAOlB,oBAAoB,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAYxD"}
@@ -0,0 +1,80 @@
1
+ import { SqlDataType } from '../../common/types.js';
2
+ import { PlanNodeType } from './plan-node-type.js';
3
+ import { expressionToString } from '../../util/ast-stringify.js';
4
+ import { PlanNode } from './plan-node.js';
5
+ export class PragmaPlanNode extends PlanNode {
6
+ pragmaName;
7
+ statementAst;
8
+ value;
9
+ nodeType = PlanNodeType.Pragma;
10
+ constructor(scope, pragmaName, statementAst, value) {
11
+ super(scope, 1); // PRAGMA operations have low cost
12
+ this.pragmaName = pragmaName;
13
+ this.statementAst = statementAst;
14
+ this.value = value;
15
+ }
16
+ getType() {
17
+ return {
18
+ typeClass: 'relation',
19
+ isReadOnly: true,
20
+ isSet: true,
21
+ columns: [
22
+ {
23
+ name: "name",
24
+ type: {
25
+ typeClass: 'scalar',
26
+ affinity: SqlDataType.TEXT,
27
+ nullable: false,
28
+ isReadOnly: true,
29
+ },
30
+ generated: true,
31
+ },
32
+ {
33
+ name: "value",
34
+ type: {
35
+ typeClass: 'scalar',
36
+ affinity: SqlDataType.TEXT,
37
+ nullable: false,
38
+ },
39
+ generated: true,
40
+ },
41
+ ],
42
+ keys: [[]],
43
+ rowConstraints: [],
44
+ };
45
+ }
46
+ get estimatedRows() {
47
+ return 1;
48
+ }
49
+ getAttributes() {
50
+ return this.getType().columns.map((column) => ({
51
+ id: PlanNode.nextAttrId(),
52
+ name: column.name, // Use the deduplicated name
53
+ type: column.type,
54
+ sourceRelation: `${this.nodeType}:${this.id}`
55
+ }));
56
+ }
57
+ getChildren() {
58
+ return [];
59
+ }
60
+ withChildren(_newChildren) {
61
+ return new PragmaPlanNode(this.scope, this.pragmaName, this.statementAst, this.value);
62
+ }
63
+ toString() {
64
+ if (this.value !== undefined) {
65
+ return `PRAGMA ${this.pragmaName} = ${this.value}`;
66
+ }
67
+ return `PRAGMA ${this.pragmaName}`;
68
+ }
69
+ getLogicalAttributes() {
70
+ const props = {
71
+ pragma: this.pragmaName,
72
+ statement: expressionToString(this.statementAst)
73
+ };
74
+ if (this.value !== undefined) {
75
+ props.value = this.value;
76
+ }
77
+ return props;
78
+ }
79
+ }
80
+ //# sourceMappingURL=pragma.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pragma.js","sourceRoot":"","sources":["../../../../src/planner/nodes/pragma.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAiB,MAAM,uBAAuB,CAAC;AAGnE,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG1C,MAAM,OAAO,cAAe,SAAQ,QAAQ;IAK1B;IACA;IACA;IANC,QAAQ,GAAG,YAAY,CAAC,MAAM,CAAC;IAEjD,YACC,KAAU,EACM,UAAkB,EAClB,YAA4B,EAC5B,KAAgB;QAEhC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,kCAAkC;QAJnC,eAAU,GAAV,UAAU,CAAQ;QAClB,iBAAY,GAAZ,YAAY,CAAgB;QAC5B,UAAK,GAAL,KAAK,CAAW;IAGjC,CAAC;IAED,OAAO;QACN,OAAO;YACN,SAAS,EAAE,UAAU;YACrB,UAAU,EAAE,IAAI;YAChB,KAAK,EAAE,IAAI;YACX,OAAO,EAAE;gBACR;oBACC,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE;wBACL,SAAS,EAAE,QAAQ;wBACnB,QAAQ,EAAE,WAAW,CAAC,IAAI;wBAC1B,QAAQ,EAAE,KAAK;wBACf,UAAU,EAAE,IAAI;qBAChB;oBACD,SAAS,EAAE,IAAI;iBACf;gBACD;oBACC,IAAI,EAAE,OAAO;oBACb,IAAI,EAAE;wBACL,SAAS,EAAE,QAAQ;wBACnB,QAAQ,EAAE,WAAW,CAAC,IAAI;wBAC1B,QAAQ,EAAE,KAAK;qBACf;oBACD,SAAS,EAAE,IAAI;iBACf;aACD;YACD,IAAI,EAAE,CAAC,EAAE,CAAC;YACV,cAAc,EAAE,EAAE;SAClB,CAAC;IACH,CAAC;IAED,IAAI,aAAa;QAChB,OAAO,CAAC,CAAC;IACV,CAAC;IAED,aAAa;QACZ,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAC7C;YACC,EAAE,EAAE,QAAQ,CAAC,UAAU,EAAE;YACzB,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,4BAA4B;YAC/C,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,cAAc,EAAE,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,EAAE,EAAE;SAE9C,CAAA,CAAC,CAAC;IACJ,CAAC;IAED,WAAW;QACV,OAAO,EAAE,CAAC;IACX,CAAC;IAED,YAAY,CAAC,YAAiC;QAC7C,OAAO,IAAI,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACvF,CAAC;IAEQ,QAAQ;QAChB,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAC9B,OAAO,UAAU,IAAI,CAAC,UAAU,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;QACpD,CAAC;QACD,OAAO,UAAU,IAAI,CAAC,UAAU,EAAE,CAAC;IACpC,CAAC;IAEQ,oBAAoB;QAC5B,MAAM,KAAK,GAA4B;YACtC,MAAM,EAAE,IAAI,CAAC,UAAU;YACvB,SAAS,EAAE,kBAAkB,CAAC,IAAI,CAAC,YAAmB,CAAC;SACvD,CAAC;QAEF,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAC9B,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QAC1B,CAAC;QAED,OAAO,KAAK,CAAC;IACd,CAAC;CACD"}
@@ -0,0 +1,34 @@
1
+ import { PlanNodeType } from './plan-node-type.js';
2
+ import { PlanNode, type RelationalPlanNode, type UnaryRelationalNode, type ScalarPlanNode, type Attribute } from './plan-node.js';
3
+ import type { RelationType } from '../../common/datatype.js';
4
+ import type { Scope } from '../scopes/scope.js';
5
+ export interface Projection {
6
+ node: ScalarPlanNode;
7
+ alias?: string;
8
+ /** Optional predefined attribute ID to preserve during optimization */
9
+ attributeId?: number;
10
+ }
11
+ /**
12
+ * Represents a projection operation (SELECT list) without DISTINCT.
13
+ * It takes an input relation and outputs a new relation with specified columns/expressions.
14
+ */
15
+ export declare class ProjectNode extends PlanNode implements UnaryRelationalNode {
16
+ readonly source: RelationalPlanNode;
17
+ readonly projections: ReadonlyArray<Projection>;
18
+ readonly nodeType = PlanNodeType.Project;
19
+ private outputTypeCache;
20
+ private attributesCache;
21
+ constructor(scope: Scope, source: RelationalPlanNode, projections: ReadonlyArray<Projection>, estimatedCostOverride?: number,
22
+ /** Optional predefined attributes for preserving IDs during optimization */
23
+ predefinedAttributes?: Attribute[]);
24
+ getType(): RelationType;
25
+ getAttributes(): Attribute[];
26
+ getProducingExprs(): Map<number, ScalarPlanNode>;
27
+ getChildren(): readonly PlanNode[];
28
+ getRelations(): readonly [RelationalPlanNode];
29
+ get estimatedRows(): number | undefined;
30
+ toString(): string;
31
+ getLogicalAttributes(): Record<string, unknown>;
32
+ withChildren(newChildren: readonly PlanNode[]): PlanNode;
33
+ }
34
+ //# sourceMappingURL=project-node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-node.d.ts","sourceRoot":"","sources":["../../../../src/planner/nodes/project-node.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,KAAK,kBAAkB,EAAE,KAAK,mBAAmB,EAAE,KAAK,cAAc,EAAE,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAClI,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAQhD,MAAM,WAAW,UAAU;IAC1B,IAAI,EAAE,cAAc,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uEAAuE;IACvE,WAAW,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;GAGG;AACH,qBAAa,WAAY,SAAQ,QAAS,YAAW,mBAAmB;aAQtD,MAAM,EAAE,kBAAkB;aAC1B,WAAW,EAAE,aAAa,CAAC,UAAU,CAAC;IARvD,SAAkB,QAAQ,wBAAwB;IAElD,OAAO,CAAC,eAAe,CAAuB;IAC9C,OAAO,CAAC,eAAe,CAAsB;gBAG5C,KAAK,EAAE,KAAK,EACI,MAAM,EAAE,kBAAkB,EAC1B,WAAW,EAAE,aAAa,CAAC,UAAU,CAAC,EACtD,qBAAqB,CAAC,EAAE,MAAM;IAC9B,4EAA4E;IAC5E,oBAAoB,CAAC,EAAE,SAAS,EAAE;IAkGnC,OAAO,IAAI,YAAY;IAIvB,aAAa,IAAI,SAAS,EAAE;IAI5B,iBAAiB,IAAI,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC;IAehD,WAAW,IAAI,SAAS,QAAQ,EAAE;IAIlC,YAAY,IAAI,SAAS,CAAC,kBAAkB,CAAC;IAI7C,IAAI,aAAa,IAAI,MAAM,GAAG,SAAS,CAEtC;IAEQ,QAAQ,IAAI,MAAM;IAOlB,oBAAoB,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IASxD,YAAY,CAAC,WAAW,EAAE,SAAS,QAAQ,EAAE,GAAG,QAAQ;CAuCxD"}