@quereus/quereus 0.7.2 → 0.7.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (566) hide show
  1. package/package.json +3 -3
  2. package/dist/src/common/constants.js.map +0 -1
  3. package/dist/src/common/datatype.js.map +0 -1
  4. package/dist/src/common/errors.js.map +0 -1
  5. package/dist/src/common/json-types.js.map +0 -1
  6. package/dist/src/common/logger.js.map +0 -1
  7. package/dist/src/common/type-inference.js.map +0 -1
  8. package/dist/src/common/types.js.map +0 -1
  9. package/dist/src/core/database-options.js.map +0 -1
  10. package/dist/src/core/database.js.map +0 -1
  11. package/dist/src/core/param.js.map +0 -1
  12. package/dist/src/core/statement.js.map +0 -1
  13. package/dist/src/func/builtins/aggregate.js.map +0 -1
  14. package/dist/src/func/builtins/builtin-window-functions.js.map +0 -1
  15. package/dist/src/func/builtins/conversion.js.map +0 -1
  16. package/dist/src/func/builtins/datetime.js.map +0 -1
  17. package/dist/src/func/builtins/explain.js.map +0 -1
  18. package/dist/src/func/builtins/generation.js.map +0 -1
  19. package/dist/src/func/builtins/index.js.map +0 -1
  20. package/dist/src/func/builtins/json-helpers.js.map +0 -1
  21. package/dist/src/func/builtins/json-tvf.js.map +0 -1
  22. package/dist/src/func/builtins/json.js.map +0 -1
  23. package/dist/src/func/builtins/scalar.js.map +0 -1
  24. package/dist/src/func/builtins/schema.js.map +0 -1
  25. package/dist/src/func/builtins/string.js.map +0 -1
  26. package/dist/src/func/builtins/timespan.js.map +0 -1
  27. package/dist/src/func/context.js.map +0 -1
  28. package/dist/src/func/registration.js.map +0 -1
  29. package/dist/src/index.js.map +0 -1
  30. package/dist/src/parser/ast.js.map +0 -1
  31. package/dist/src/parser/index.js.map +0 -1
  32. package/dist/src/parser/lexer.js.map +0 -1
  33. package/dist/src/parser/parser.js.map +0 -1
  34. package/dist/src/parser/utils.js.map +0 -1
  35. package/dist/src/parser/visitor.js.map +0 -1
  36. package/dist/src/planner/analysis/binding-collector.js.map +0 -1
  37. package/dist/src/planner/analysis/const-evaluator.js.map +0 -1
  38. package/dist/src/planner/analysis/const-pass.js.map +0 -1
  39. package/dist/src/planner/analysis/constraint-extractor.js.map +0 -1
  40. package/dist/src/planner/analysis/predicate-normalizer.js.map +0 -1
  41. package/dist/src/planner/building/alter-table.js.map +0 -1
  42. package/dist/src/planner/building/block.js.map +0 -1
  43. package/dist/src/planner/building/constraint-builder.js.map +0 -1
  44. package/dist/src/planner/building/create-assertion.js.map +0 -1
  45. package/dist/src/planner/building/create-view.js.map +0 -1
  46. package/dist/src/planner/building/ddl.js.map +0 -1
  47. package/dist/src/planner/building/declare-schema.js.map +0 -1
  48. package/dist/src/planner/building/delete.js.map +0 -1
  49. package/dist/src/planner/building/drop-assertion.js.map +0 -1
  50. package/dist/src/planner/building/drop-table.js.map +0 -1
  51. package/dist/src/planner/building/drop-view.js.map +0 -1
  52. package/dist/src/planner/building/expression.js.map +0 -1
  53. package/dist/src/planner/building/function-call.js.map +0 -1
  54. package/dist/src/planner/building/insert.js.map +0 -1
  55. package/dist/src/planner/building/pragma.js.map +0 -1
  56. package/dist/src/planner/building/schema-resolution.js.map +0 -1
  57. package/dist/src/planner/building/select-aggregates.js.map +0 -1
  58. package/dist/src/planner/building/select-compound.js.map +0 -1
  59. package/dist/src/planner/building/select-context.js.map +0 -1
  60. package/dist/src/planner/building/select-modifiers.js.map +0 -1
  61. package/dist/src/planner/building/select-projections.js.map +0 -1
  62. package/dist/src/planner/building/select-window.js.map +0 -1
  63. package/dist/src/planner/building/select.js.map +0 -1
  64. package/dist/src/planner/building/table-function.js.map +0 -1
  65. package/dist/src/planner/building/table.js.map +0 -1
  66. package/dist/src/planner/building/transaction.js.map +0 -1
  67. package/dist/src/planner/building/update.js.map +0 -1
  68. package/dist/src/planner/building/with.js.map +0 -1
  69. package/dist/src/planner/cache/correlation-detector.js.map +0 -1
  70. package/dist/src/planner/cache/materialization-advisory.js.map +0 -1
  71. package/dist/src/planner/cache/reference-graph.js.map +0 -1
  72. package/dist/src/planner/cost/index.js.map +0 -1
  73. package/dist/src/planner/debug/logger-utils.js.map +0 -1
  74. package/dist/src/planner/debug.js.map +0 -1
  75. package/dist/src/planner/framework/characteristics.js.map +0 -1
  76. package/dist/src/planner/framework/context.js.map +0 -1
  77. package/dist/src/planner/framework/pass.js.map +0 -1
  78. package/dist/src/planner/framework/physical-utils.js.map +0 -1
  79. package/dist/src/planner/framework/registry.js.map +0 -1
  80. package/dist/src/planner/framework/trace.js.map +0 -1
  81. package/dist/src/planner/nodes/add-constraint-node.js.map +0 -1
  82. package/dist/src/planner/nodes/aggregate-function.js.map +0 -1
  83. package/dist/src/planner/nodes/aggregate-node.js.map +0 -1
  84. package/dist/src/planner/nodes/array-index-node.js.map +0 -1
  85. package/dist/src/planner/nodes/block.js.map +0 -1
  86. package/dist/src/planner/nodes/cache-node.js.map +0 -1
  87. package/dist/src/planner/nodes/constraint-check-node.js.map +0 -1
  88. package/dist/src/planner/nodes/create-assertion-node.js.map +0 -1
  89. package/dist/src/planner/nodes/create-index-node.js.map +0 -1
  90. package/dist/src/planner/nodes/create-table-node.js.map +0 -1
  91. package/dist/src/planner/nodes/create-view-node.js.map +0 -1
  92. package/dist/src/planner/nodes/cte-node.js.map +0 -1
  93. package/dist/src/planner/nodes/cte-reference-node.js.map +0 -1
  94. package/dist/src/planner/nodes/declarative-schema.js.map +0 -1
  95. package/dist/src/planner/nodes/delete-node.js.map +0 -1
  96. package/dist/src/planner/nodes/distinct-node.js.map +0 -1
  97. package/dist/src/planner/nodes/dml-executor-node.js.map +0 -1
  98. package/dist/src/planner/nodes/drop-assertion-node.js.map +0 -1
  99. package/dist/src/planner/nodes/drop-table-node.js.map +0 -1
  100. package/dist/src/planner/nodes/drop-view-node.js.map +0 -1
  101. package/dist/src/planner/nodes/filter.js.map +0 -1
  102. package/dist/src/planner/nodes/function.js.map +0 -1
  103. package/dist/src/planner/nodes/insert-node.js.map +0 -1
  104. package/dist/src/planner/nodes/internal-recursive-cte-ref-node.js.map +0 -1
  105. package/dist/src/planner/nodes/join-node.js.map +0 -1
  106. package/dist/src/planner/nodes/limit-offset.js.map +0 -1
  107. package/dist/src/planner/nodes/plan-node-type.js.map +0 -1
  108. package/dist/src/planner/nodes/plan-node.js.map +0 -1
  109. package/dist/src/planner/nodes/pragma.js.map +0 -1
  110. package/dist/src/planner/nodes/project-node.js.map +0 -1
  111. package/dist/src/planner/nodes/recursive-cte-node.js.map +0 -1
  112. package/dist/src/planner/nodes/reference.js.map +0 -1
  113. package/dist/src/planner/nodes/remote-query-node.js.map +0 -1
  114. package/dist/src/planner/nodes/retrieve-node.js.map +0 -1
  115. package/dist/src/planner/nodes/returning-node.js.map +0 -1
  116. package/dist/src/planner/nodes/scalar.js.map +0 -1
  117. package/dist/src/planner/nodes/sequencing-node.js.map +0 -1
  118. package/dist/src/planner/nodes/set-operation-node.js.map +0 -1
  119. package/dist/src/planner/nodes/single-row.js.map +0 -1
  120. package/dist/src/planner/nodes/sink-node.js.map +0 -1
  121. package/dist/src/planner/nodes/sort.js.map +0 -1
  122. package/dist/src/planner/nodes/stream-aggregate.js.map +0 -1
  123. package/dist/src/planner/nodes/subquery.js.map +0 -1
  124. package/dist/src/planner/nodes/table-access-nodes.js.map +0 -1
  125. package/dist/src/planner/nodes/table-function-call.js.map +0 -1
  126. package/dist/src/planner/nodes/transaction-node.js.map +0 -1
  127. package/dist/src/planner/nodes/update-node.js.map +0 -1
  128. package/dist/src/planner/nodes/values-node.js.map +0 -1
  129. package/dist/src/planner/nodes/view-reference-node.js.map +0 -1
  130. package/dist/src/planner/nodes/window-function.js.map +0 -1
  131. package/dist/src/planner/nodes/window-node.js.map +0 -1
  132. package/dist/src/planner/optimizer-tuning.js.map +0 -1
  133. package/dist/src/planner/optimizer.js.map +0 -1
  134. package/dist/src/planner/planning-context.js.map +0 -1
  135. package/dist/src/planner/resolve.js.map +0 -1
  136. package/dist/src/planner/rules/access/rule-select-access-path.js.map +0 -1
  137. package/dist/src/planner/rules/aggregate/rule-aggregate-streaming.js.map +0 -1
  138. package/dist/src/planner/rules/cache/rule-cte-optimization.js.map +0 -1
  139. package/dist/src/planner/rules/cache/rule-materialization-advisory.js.map +0 -1
  140. package/dist/src/planner/rules/cache/rule-mutating-subquery-cache.js.map +0 -1
  141. package/dist/src/planner/rules/join/rule-join-greedy-commute.js.map +0 -1
  142. package/dist/src/planner/rules/join/rule-join-key-inference.js.map +0 -1
  143. package/dist/src/planner/rules/join/rule-quickpick-enumeration.js.map +0 -1
  144. package/dist/src/planner/rules/predicate/rule-predicate-pushdown.js.map +0 -1
  145. package/dist/src/planner/rules/retrieve/rule-grow-retrieve.js.map +0 -1
  146. package/dist/src/planner/scopes/aliased.js.map +0 -1
  147. package/dist/src/planner/scopes/base.js.map +0 -1
  148. package/dist/src/planner/scopes/empty.js.map +0 -1
  149. package/dist/src/planner/scopes/global.js.map +0 -1
  150. package/dist/src/planner/scopes/multi.js.map +0 -1
  151. package/dist/src/planner/scopes/param.js.map +0 -1
  152. package/dist/src/planner/scopes/registered.js.map +0 -1
  153. package/dist/src/planner/scopes/scope.js.map +0 -1
  154. package/dist/src/planner/stats/basic-estimates.js.map +0 -1
  155. package/dist/src/planner/stats/index.js.map +0 -1
  156. package/dist/src/planner/type-utils.js.map +0 -1
  157. package/dist/src/planner/util/key-utils.js.map +0 -1
  158. package/dist/src/planner/validation/determinism-validator.js.map +0 -1
  159. package/dist/src/planner/validation/plan-validator.js.map +0 -1
  160. package/dist/src/runtime/async-util.js.map +0 -1
  161. package/dist/src/runtime/cache/shared-cache.js.map +0 -1
  162. package/dist/src/runtime/context-helpers.js.map +0 -1
  163. package/dist/src/runtime/deferred-constraint-queue.js.map +0 -1
  164. package/dist/src/runtime/emission-context.js.map +0 -1
  165. package/dist/src/runtime/emit/add-constraint.js.map +0 -1
  166. package/dist/src/runtime/emit/aggregate.js.map +0 -1
  167. package/dist/src/runtime/emit/array-index.js.map +0 -1
  168. package/dist/src/runtime/emit/between.js.map +0 -1
  169. package/dist/src/runtime/emit/binary.js.map +0 -1
  170. package/dist/src/runtime/emit/block.js.map +0 -1
  171. package/dist/src/runtime/emit/cache.js.map +0 -1
  172. package/dist/src/runtime/emit/case.js.map +0 -1
  173. package/dist/src/runtime/emit/cast.js.map +0 -1
  174. package/dist/src/runtime/emit/collate.js.map +0 -1
  175. package/dist/src/runtime/emit/column-reference.js.map +0 -1
  176. package/dist/src/runtime/emit/constraint-check.js.map +0 -1
  177. package/dist/src/runtime/emit/create-assertion.js.map +0 -1
  178. package/dist/src/runtime/emit/create-index.js.map +0 -1
  179. package/dist/src/runtime/emit/create-table.js.map +0 -1
  180. package/dist/src/runtime/emit/create-view.js.map +0 -1
  181. package/dist/src/runtime/emit/cte-reference.js.map +0 -1
  182. package/dist/src/runtime/emit/cte.js.map +0 -1
  183. package/dist/src/runtime/emit/delete.js.map +0 -1
  184. package/dist/src/runtime/emit/distinct.js.map +0 -1
  185. package/dist/src/runtime/emit/dml-executor.js.map +0 -1
  186. package/dist/src/runtime/emit/drop-assertion.js.map +0 -1
  187. package/dist/src/runtime/emit/drop-table.js.map +0 -1
  188. package/dist/src/runtime/emit/drop-view.js.map +0 -1
  189. package/dist/src/runtime/emit/filter.js.map +0 -1
  190. package/dist/src/runtime/emit/insert.js.map +0 -1
  191. package/dist/src/runtime/emit/internal-recursive-cte-ref.js.map +0 -1
  192. package/dist/src/runtime/emit/join.js.map +0 -1
  193. package/dist/src/runtime/emit/limit-offset.js.map +0 -1
  194. package/dist/src/runtime/emit/literal.js.map +0 -1
  195. package/dist/src/runtime/emit/parameter.js.map +0 -1
  196. package/dist/src/runtime/emit/pragma.js.map +0 -1
  197. package/dist/src/runtime/emit/project.js.map +0 -1
  198. package/dist/src/runtime/emit/recursive-cte.js.map +0 -1
  199. package/dist/src/runtime/emit/remote-query.js.map +0 -1
  200. package/dist/src/runtime/emit/retrieve.js.map +0 -1
  201. package/dist/src/runtime/emit/returning.js.map +0 -1
  202. package/dist/src/runtime/emit/scalar-function.js.map +0 -1
  203. package/dist/src/runtime/emit/scan.js.map +0 -1
  204. package/dist/src/runtime/emit/schema-declarative.js.map +0 -1
  205. package/dist/src/runtime/emit/sequencing.js.map +0 -1
  206. package/dist/src/runtime/emit/set-operation.js.map +0 -1
  207. package/dist/src/runtime/emit/sink.js.map +0 -1
  208. package/dist/src/runtime/emit/sort.js.map +0 -1
  209. package/dist/src/runtime/emit/subquery.js.map +0 -1
  210. package/dist/src/runtime/emit/table-valued-function.js.map +0 -1
  211. package/dist/src/runtime/emit/temporal-arithmetic.js.map +0 -1
  212. package/dist/src/runtime/emit/transaction.js.map +0 -1
  213. package/dist/src/runtime/emit/unary.js.map +0 -1
  214. package/dist/src/runtime/emit/update.js.map +0 -1
  215. package/dist/src/runtime/emit/values.js.map +0 -1
  216. package/dist/src/runtime/emit/window-function.js.map +0 -1
  217. package/dist/src/runtime/emit/window.js.map +0 -1
  218. package/dist/src/runtime/emitters.js.map +0 -1
  219. package/dist/src/runtime/register.js.map +0 -1
  220. package/dist/src/runtime/scheduler.js.map +0 -1
  221. package/dist/src/runtime/types.js.map +0 -1
  222. package/dist/src/runtime/utils.js.map +0 -1
  223. package/dist/src/schema/assertion.js.map +0 -1
  224. package/dist/src/schema/catalog.js.map +0 -1
  225. package/dist/src/schema/change-events.js.map +0 -1
  226. package/dist/src/schema/column.js.map +0 -1
  227. package/dist/src/schema/declared-schema-manager.js.map +0 -1
  228. package/dist/src/schema/function.js.map +0 -1
  229. package/dist/src/schema/manager.js.map +0 -1
  230. package/dist/src/schema/schema-differ.js.map +0 -1
  231. package/dist/src/schema/schema-hasher.js.map +0 -1
  232. package/dist/src/schema/schema.js.map +0 -1
  233. package/dist/src/schema/table.js.map +0 -1
  234. package/dist/src/schema/view.js.map +0 -1
  235. package/dist/src/schema/window-function.js.map +0 -1
  236. package/dist/src/types/builtin-types.js.map +0 -1
  237. package/dist/src/types/index.js.map +0 -1
  238. package/dist/src/types/json-type.js.map +0 -1
  239. package/dist/src/types/logical-type.js.map +0 -1
  240. package/dist/src/types/plugin-interface.js.map +0 -1
  241. package/dist/src/types/registry.js.map +0 -1
  242. package/dist/src/types/temporal-types.js.map +0 -1
  243. package/dist/src/types/validation.js.map +0 -1
  244. package/dist/src/util/affinity.js.map +0 -1
  245. package/dist/src/util/ast-stringify.js.map +0 -1
  246. package/dist/src/util/cached.js.map +0 -1
  247. package/dist/src/util/coercion.js.map +0 -1
  248. package/dist/src/util/comparison.js.map +0 -1
  249. package/dist/src/util/environment.js.map +0 -1
  250. package/dist/src/util/hash.js.map +0 -1
  251. package/dist/src/util/latches.js.map +0 -1
  252. package/dist/src/util/mutation-statement.js.map +0 -1
  253. package/dist/src/util/patterns.js.map +0 -1
  254. package/dist/src/util/plan-formatter.js.map +0 -1
  255. package/dist/src/util/plugin-helper.js.map +0 -1
  256. package/dist/src/util/row-descriptor.js.map +0 -1
  257. package/dist/src/util/serialization.js.map +0 -1
  258. package/dist/src/util/sql-literal.js.map +0 -1
  259. package/dist/src/util/working-table-iterable.js.map +0 -1
  260. package/dist/src/vtab/best-access-plan.js.map +0 -1
  261. package/dist/src/vtab/connection.js.map +0 -1
  262. package/dist/src/vtab/filter-info.js.map +0 -1
  263. package/dist/src/vtab/index-info.js.map +0 -1
  264. package/dist/src/vtab/manifest.js.map +0 -1
  265. package/dist/src/vtab/memory/connection.js.map +0 -1
  266. package/dist/src/vtab/memory/index.js.map +0 -1
  267. package/dist/src/vtab/memory/layer/base-cursor.js.map +0 -1
  268. package/dist/src/vtab/memory/layer/base.js.map +0 -1
  269. package/dist/src/vtab/memory/layer/connection.js.map +0 -1
  270. package/dist/src/vtab/memory/layer/interface.js.map +0 -1
  271. package/dist/src/vtab/memory/layer/manager.js.map +0 -1
  272. package/dist/src/vtab/memory/layer/safe-iterate.js.map +0 -1
  273. package/dist/src/vtab/memory/layer/scan-plan.js.map +0 -1
  274. package/dist/src/vtab/memory/layer/transaction-cursor.js.map +0 -1
  275. package/dist/src/vtab/memory/layer/transaction.js.map +0 -1
  276. package/dist/src/vtab/memory/module.js.map +0 -1
  277. package/dist/src/vtab/memory/table.js.map +0 -1
  278. package/dist/src/vtab/memory/types.js.map +0 -1
  279. package/dist/src/vtab/memory/utils/logging.js.map +0 -1
  280. package/dist/src/vtab/memory/utils/primary-key.js.map +0 -1
  281. package/dist/src/vtab/module.js.map +0 -1
  282. package/dist/src/vtab/table.js.map +0 -1
  283. package/src/common/constants.ts +0 -60
  284. package/src/common/datatype.ts +0 -85
  285. package/src/common/errors.ts +0 -189
  286. package/src/common/json-types.ts +0 -16
  287. package/src/common/logger.ts +0 -97
  288. package/src/common/type-inference.ts +0 -39
  289. package/src/common/types.ts +0 -151
  290. package/src/core/database-options.ts +0 -258
  291. package/src/core/database.ts +0 -1461
  292. package/src/core/param.ts +0 -56
  293. package/src/core/statement.ts +0 -528
  294. package/src/func/builtins/aggregate.ts +0 -269
  295. package/src/func/builtins/builtin-window-functions.ts +0 -166
  296. package/src/func/builtins/conversion.ts +0 -226
  297. package/src/func/builtins/datetime.ts +0 -500
  298. package/src/func/builtins/explain.ts +0 -779
  299. package/src/func/builtins/generation.ts +0 -43
  300. package/src/func/builtins/index.ts +0 -167
  301. package/src/func/builtins/json-helpers.ts +0 -237
  302. package/src/func/builtins/json-tvf.ts +0 -224
  303. package/src/func/builtins/json.ts +0 -588
  304. package/src/func/builtins/scalar.ts +0 -423
  305. package/src/func/builtins/schema.ts +0 -213
  306. package/src/func/builtins/string.ts +0 -306
  307. package/src/func/builtins/timespan.ts +0 -179
  308. package/src/func/context.ts +0 -258
  309. package/src/func/registration.ts +0 -201
  310. package/src/index.ts +0 -172
  311. package/src/parser/ast.ts +0 -581
  312. package/src/parser/index.ts +0 -65
  313. package/src/parser/lexer.ts +0 -806
  314. package/src/parser/parser.ts +0 -3352
  315. package/src/parser/utils.ts +0 -10
  316. package/src/parser/visitor.ts +0 -188
  317. package/src/planner/analysis/README.md +0 -93
  318. package/src/planner/analysis/binding-collector.ts +0 -83
  319. package/src/planner/analysis/const-evaluator.ts +0 -63
  320. package/src/planner/analysis/const-pass.ts +0 -282
  321. package/src/planner/analysis/constraint-extractor.ts +0 -764
  322. package/src/planner/analysis/predicate-normalizer.ts +0 -237
  323. package/src/planner/building/alter-table.ts +0 -49
  324. package/src/planner/building/block.ts +0 -93
  325. package/src/planner/building/constraint-builder.ts +0 -178
  326. package/src/planner/building/create-assertion.ts +0 -7
  327. package/src/planner/building/create-view.ts +0 -29
  328. package/src/planner/building/ddl.ts +0 -24
  329. package/src/planner/building/declare-schema.ts +0 -22
  330. package/src/planner/building/delete.ts +0 -218
  331. package/src/planner/building/drop-assertion.ts +0 -11
  332. package/src/planner/building/drop-table.ts +0 -13
  333. package/src/planner/building/drop-view.ts +0 -19
  334. package/src/planner/building/expression.ts +0 -205
  335. package/src/planner/building/function-call.ts +0 -129
  336. package/src/planner/building/insert.ts +0 -435
  337. package/src/planner/building/pragma.ts +0 -34
  338. package/src/planner/building/schema-resolution.ts +0 -176
  339. package/src/planner/building/select-aggregates.ts +0 -318
  340. package/src/planner/building/select-compound.ts +0 -119
  341. package/src/planner/building/select-context.ts +0 -85
  342. package/src/planner/building/select-modifiers.ts +0 -236
  343. package/src/planner/building/select-projections.ts +0 -177
  344. package/src/planner/building/select-window.ts +0 -259
  345. package/src/planner/building/select.ts +0 -567
  346. package/src/planner/building/table-function.ts +0 -49
  347. package/src/planner/building/table.ts +0 -40
  348. package/src/planner/building/transaction.ts +0 -23
  349. package/src/planner/building/update.ts +0 -331
  350. package/src/planner/building/with.ts +0 -180
  351. package/src/planner/cache/correlation-detector.ts +0 -83
  352. package/src/planner/cache/materialization-advisory.ts +0 -265
  353. package/src/planner/cache/reference-graph.ts +0 -196
  354. package/src/planner/cost/index.ts +0 -169
  355. package/src/planner/debug/logger-utils.ts +0 -68
  356. package/src/planner/debug.ts +0 -480
  357. package/src/planner/framework/README.md +0 -132
  358. package/src/planner/framework/characteristics.ts +0 -503
  359. package/src/planner/framework/context.ts +0 -239
  360. package/src/planner/framework/pass.ts +0 -354
  361. package/src/planner/framework/physical-utils.ts +0 -210
  362. package/src/planner/framework/registry.ts +0 -261
  363. package/src/planner/framework/trace.ts +0 -259
  364. package/src/planner/nodes/add-constraint-node.ts +0 -62
  365. package/src/planner/nodes/aggregate-function.ts +0 -155
  366. package/src/planner/nodes/aggregate-node.ts +0 -267
  367. package/src/planner/nodes/array-index-node.ts +0 -50
  368. package/src/planner/nodes/block.ts +0 -80
  369. package/src/planner/nodes/cache-node.ts +0 -103
  370. package/src/planner/nodes/constraint-check-node.ts +0 -138
  371. package/src/planner/nodes/create-assertion-node.ts +0 -51
  372. package/src/planner/nodes/create-index-node.ts +0 -41
  373. package/src/planner/nodes/create-table-node.ts +0 -35
  374. package/src/planner/nodes/create-view-node.ts +0 -44
  375. package/src/planner/nodes/cte-node.ts +0 -168
  376. package/src/planner/nodes/cte-reference-node.ts +0 -125
  377. package/src/planner/nodes/declarative-schema.ts +0 -221
  378. package/src/planner/nodes/delete-node.ts +0 -102
  379. package/src/planner/nodes/distinct-node.ts +0 -107
  380. package/src/planner/nodes/dml-executor-node.ts +0 -104
  381. package/src/planner/nodes/drop-assertion-node.ts +0 -50
  382. package/src/planner/nodes/drop-table-node.ts +0 -36
  383. package/src/planner/nodes/drop-view-node.ts +0 -37
  384. package/src/planner/nodes/filter.ts +0 -144
  385. package/src/planner/nodes/function.ts +0 -98
  386. package/src/planner/nodes/insert-node.ts +0 -126
  387. package/src/planner/nodes/internal-recursive-cte-ref-node.ts +0 -61
  388. package/src/planner/nodes/join-node.ts +0 -336
  389. package/src/planner/nodes/limit-offset.ts +0 -144
  390. package/src/planner/nodes/plan-node-type.ts +0 -95
  391. package/src/planner/nodes/plan-node.ts +0 -503
  392. package/src/planner/nodes/pragma.ts +0 -98
  393. package/src/planner/nodes/project-node.ts +0 -337
  394. package/src/planner/nodes/recursive-cte-node.ts +0 -158
  395. package/src/planner/nodes/reference.ts +0 -334
  396. package/src/planner/nodes/remote-query-node.ts +0 -73
  397. package/src/planner/nodes/retrieve-node.ts +0 -86
  398. package/src/planner/nodes/returning-node.ts +0 -269
  399. package/src/planner/nodes/scalar.ts +0 -772
  400. package/src/planner/nodes/sequencing-node.ts +0 -113
  401. package/src/planner/nodes/set-operation-node.ts +0 -87
  402. package/src/planner/nodes/single-row.ts +0 -85
  403. package/src/planner/nodes/sink-node.ts +0 -61
  404. package/src/planner/nodes/sort.ts +0 -166
  405. package/src/planner/nodes/stream-aggregate.ts +0 -293
  406. package/src/planner/nodes/subquery.ts +0 -268
  407. package/src/planner/nodes/table-access-nodes.ts +0 -323
  408. package/src/planner/nodes/table-function-call.ts +0 -134
  409. package/src/planner/nodes/transaction-node.ts +0 -55
  410. package/src/planner/nodes/update-node.ts +0 -138
  411. package/src/planner/nodes/values-node.ts +0 -244
  412. package/src/planner/nodes/view-reference-node.ts +0 -97
  413. package/src/planner/nodes/window-function.ts +0 -73
  414. package/src/planner/nodes/window-node.ts +0 -199
  415. package/src/planner/optimizer-tuning.ts +0 -105
  416. package/src/planner/optimizer.ts +0 -332
  417. package/src/planner/planning-context.ts +0 -190
  418. package/src/planner/resolve.ts +0 -101
  419. package/src/planner/rules/README.md +0 -96
  420. package/src/planner/rules/access/rule-select-access-path.ts +0 -399
  421. package/src/planner/rules/aggregate/rule-aggregate-streaming.ts +0 -162
  422. package/src/planner/rules/cache/rule-cte-optimization.ts +0 -79
  423. package/src/planner/rules/cache/rule-materialization-advisory.ts +0 -77
  424. package/src/planner/rules/cache/rule-mutating-subquery-cache.ts +0 -104
  425. package/src/planner/rules/join/rule-join-greedy-commute.ts +0 -48
  426. package/src/planner/rules/join/rule-join-key-inference.ts +0 -35
  427. package/src/planner/rules/join/rule-quickpick-enumeration.ts +0 -267
  428. package/src/planner/rules/predicate/rule-predicate-pushdown.ts +0 -144
  429. package/src/planner/rules/retrieve/rule-grow-retrieve.ts +0 -337
  430. package/src/planner/scopes/aliased.ts +0 -50
  431. package/src/planner/scopes/base.ts +0 -10
  432. package/src/planner/scopes/empty.ts +0 -12
  433. package/src/planner/scopes/global.ts +0 -73
  434. package/src/planner/scopes/multi.ts +0 -40
  435. package/src/planner/scopes/param.ts +0 -95
  436. package/src/planner/scopes/registered.ts +0 -67
  437. package/src/planner/scopes/scope.ts +0 -16
  438. package/src/planner/stats/basic-estimates.ts +0 -107
  439. package/src/planner/stats/index.ts +0 -158
  440. package/src/planner/type-utils.ts +0 -87
  441. package/src/planner/util/key-utils.ts +0 -46
  442. package/src/planner/validation/determinism-validator.ts +0 -104
  443. package/src/planner/validation/plan-validator.ts +0 -335
  444. package/src/runtime/async-util.ts +0 -283
  445. package/src/runtime/cache/shared-cache.ts +0 -169
  446. package/src/runtime/context-helpers.ts +0 -191
  447. package/src/runtime/deferred-constraint-queue.ts +0 -196
  448. package/src/runtime/emission-context.ts +0 -319
  449. package/src/runtime/emit/add-constraint.ts +0 -78
  450. package/src/runtime/emit/aggregate.ts +0 -581
  451. package/src/runtime/emit/array-index.ts +0 -25
  452. package/src/runtime/emit/between.ts +0 -51
  453. package/src/runtime/emit/binary.ts +0 -357
  454. package/src/runtime/emit/block.ts +0 -23
  455. package/src/runtime/emit/cache.ts +0 -64
  456. package/src/runtime/emit/case.ts +0 -87
  457. package/src/runtime/emit/cast.ts +0 -151
  458. package/src/runtime/emit/collate.ts +0 -9
  459. package/src/runtime/emit/column-reference.ts +0 -17
  460. package/src/runtime/emit/constraint-check.ts +0 -290
  461. package/src/runtime/emit/create-assertion.ts +0 -82
  462. package/src/runtime/emit/create-index.ts +0 -15
  463. package/src/runtime/emit/create-table.ts +0 -15
  464. package/src/runtime/emit/create-view.ts +0 -52
  465. package/src/runtime/emit/cte-reference.ts +0 -38
  466. package/src/runtime/emit/cte.ts +0 -39
  467. package/src/runtime/emit/delete.ts +0 -24
  468. package/src/runtime/emit/distinct.ts +0 -40
  469. package/src/runtime/emit/dml-executor.ts +0 -198
  470. package/src/runtime/emit/drop-assertion.ts +0 -45
  471. package/src/runtime/emit/drop-table.ts +0 -27
  472. package/src/runtime/emit/drop-view.ts +0 -49
  473. package/src/runtime/emit/filter.ts +0 -30
  474. package/src/runtime/emit/insert.ts +0 -42
  475. package/src/runtime/emit/internal-recursive-cte-ref.ts +0 -37
  476. package/src/runtime/emit/join.ts +0 -148
  477. package/src/runtime/emit/limit-offset.ts +0 -73
  478. package/src/runtime/emit/literal.ts +0 -17
  479. package/src/runtime/emit/parameter.ts +0 -59
  480. package/src/runtime/emit/pragma.ts +0 -56
  481. package/src/runtime/emit/project.ts +0 -46
  482. package/src/runtime/emit/recursive-cte.ts +0 -111
  483. package/src/runtime/emit/remote-query.ts +0 -47
  484. package/src/runtime/emit/retrieve.ts +0 -15
  485. package/src/runtime/emit/returning.ts +0 -41
  486. package/src/runtime/emit/scalar-function.ts +0 -69
  487. package/src/runtime/emit/scan.ts +0 -106
  488. package/src/runtime/emit/schema-declarative.ts +0 -215
  489. package/src/runtime/emit/sequencing.ts +0 -24
  490. package/src/runtime/emit/set-operation.ts +0 -141
  491. package/src/runtime/emit/sink.ts +0 -27
  492. package/src/runtime/emit/sort.ts +0 -75
  493. package/src/runtime/emit/subquery.ts +0 -203
  494. package/src/runtime/emit/table-valued-function.ts +0 -106
  495. package/src/runtime/emit/temporal-arithmetic.ts +0 -302
  496. package/src/runtime/emit/transaction.ts +0 -205
  497. package/src/runtime/emit/unary.ts +0 -101
  498. package/src/runtime/emit/update.ts +0 -66
  499. package/src/runtime/emit/values.ts +0 -66
  500. package/src/runtime/emit/window-function.ts +0 -42
  501. package/src/runtime/emit/window.ts +0 -458
  502. package/src/runtime/emitters.ts +0 -183
  503. package/src/runtime/register.ts +0 -150
  504. package/src/runtime/scheduler.ts +0 -488
  505. package/src/runtime/types.ts +0 -242
  506. package/src/runtime/utils.ts +0 -177
  507. package/src/schema/assertion.ts +0 -21
  508. package/src/schema/catalog.ts +0 -269
  509. package/src/schema/change-events.ts +0 -80
  510. package/src/schema/column.ts +0 -51
  511. package/src/schema/declared-schema-manager.ts +0 -82
  512. package/src/schema/function.ts +0 -188
  513. package/src/schema/manager.ts +0 -1034
  514. package/src/schema/schema-differ.ts +0 -214
  515. package/src/schema/schema-hasher.ts +0 -26
  516. package/src/schema/schema.ts +0 -222
  517. package/src/schema/table.ts +0 -409
  518. package/src/schema/view.ts +0 -19
  519. package/src/schema/window-function.ts +0 -56
  520. package/src/types/builtin-types.ts +0 -350
  521. package/src/types/index.ts +0 -17
  522. package/src/types/json-type.ts +0 -152
  523. package/src/types/logical-type.ts +0 -91
  524. package/src/types/plugin-interface.ts +0 -10
  525. package/src/types/registry.ts +0 -204
  526. package/src/types/temporal-types.ts +0 -290
  527. package/src/types/validation.ts +0 -120
  528. package/src/util/affinity.ts +0 -151
  529. package/src/util/ast-stringify.ts +0 -887
  530. package/src/util/cached.ts +0 -25
  531. package/src/util/coercion.ts +0 -113
  532. package/src/util/comparison.ts +0 -510
  533. package/src/util/environment.ts +0 -52
  534. package/src/util/hash.ts +0 -90
  535. package/src/util/latches.ts +0 -47
  536. package/src/util/mutation-statement.ts +0 -135
  537. package/src/util/patterns.ts +0 -56
  538. package/src/util/plan-formatter.ts +0 -48
  539. package/src/util/plugin-helper.ts +0 -110
  540. package/src/util/row-descriptor.ts +0 -105
  541. package/src/util/serialization.ts +0 -47
  542. package/src/util/sql-literal.ts +0 -22
  543. package/src/util/working-table-iterable.ts +0 -38
  544. package/src/vtab/best-access-plan.ts +0 -244
  545. package/src/vtab/connection.ts +0 -36
  546. package/src/vtab/filter-info.ts +0 -23
  547. package/src/vtab/index-info.ts +0 -84
  548. package/src/vtab/manifest.ts +0 -86
  549. package/src/vtab/memory/connection.ts +0 -73
  550. package/src/vtab/memory/index.ts +0 -191
  551. package/src/vtab/memory/layer/base-cursor.ts +0 -124
  552. package/src/vtab/memory/layer/base.ts +0 -275
  553. package/src/vtab/memory/layer/connection.ts +0 -203
  554. package/src/vtab/memory/layer/interface.ts +0 -47
  555. package/src/vtab/memory/layer/manager.ts +0 -909
  556. package/src/vtab/memory/layer/safe-iterate.ts +0 -49
  557. package/src/vtab/memory/layer/scan-plan.ts +0 -84
  558. package/src/vtab/memory/layer/transaction-cursor.ts +0 -162
  559. package/src/vtab/memory/layer/transaction.ts +0 -229
  560. package/src/vtab/memory/module.ts +0 -667
  561. package/src/vtab/memory/table.ts +0 -251
  562. package/src/vtab/memory/types.ts +0 -23
  563. package/src/vtab/memory/utils/logging.ts +0 -36
  564. package/src/vtab/memory/utils/primary-key.ts +0 -163
  565. package/src/vtab/module.ts +0 -162
  566. package/src/vtab/table.ts +0 -177
@@ -1,218 +0,0 @@
1
- import type * as AST from '../../parser/ast.js';
2
- import type { PlanningContext } from '../planning-context.js';
3
- import { DeleteNode } from '../nodes/delete-node.js';
4
- import { buildTableReference } from './table.js';
5
- import { buildExpression } from './expression.js';
6
- import { PlanNode, type RelationalPlanNode, type ScalarPlanNode, type Attribute, type RowDescriptor } from '../nodes/plan-node.js';
7
- import { FilterNode } from '../nodes/filter.js';
8
- import { QuereusError } from '../../common/errors.js';
9
- import { StatusCode } from '../../common/types.js';
10
- import { RegisteredScope } from '../scopes/registered.js';
11
- import { ColumnReferenceNode } from '../nodes/reference.js';
12
- import { SinkNode } from '../nodes/sink-node.js';
13
- import { ConstraintCheckNode } from '../nodes/constraint-check-node.js';
14
- import { RowOpFlag } from '../../schema/table.js';
15
- import { ReturningNode } from '../nodes/returning-node.js';
16
- import { buildOldNewRowDescriptors } from '../../util/row-descriptor.js';
17
- import { DmlExecutorNode } from '../nodes/dml-executor-node.js';
18
- import { buildConstraintChecks } from './constraint-builder.js';
19
-
20
- export function buildDeleteStmt(
21
- ctx: PlanningContext,
22
- stmt: AST.DeleteStmt,
23
- ): PlanNode {
24
- const tableRetrieve = buildTableReference({ type: 'table', table: stmt.table }, ctx);
25
- const tableReference = tableRetrieve.tableRef; // Extract the actual TableReferenceNode
26
-
27
- // Process mutation context assignments if present
28
- const mutationContextValues = new Map<string, ScalarPlanNode>();
29
- const contextAttributes: Attribute[] = [];
30
-
31
- if (stmt.contextValues && tableReference.tableSchema.mutationContext) {
32
- // Create context attributes
33
- tableReference.tableSchema.mutationContext.forEach((contextVar) => {
34
- contextAttributes.push({
35
- id: PlanNode.nextAttrId(),
36
- name: contextVar.name,
37
- type: {
38
- typeClass: 'scalar' as const,
39
- logicalType: contextVar.logicalType,
40
- nullable: !contextVar.notNull,
41
- isReadOnly: true
42
- },
43
- sourceRelation: `context.${tableReference.tableSchema.name}`
44
- });
45
- });
46
-
47
- // Build context value expressions (evaluated in the base scope, before table scope)
48
- stmt.contextValues.forEach((assignment) => {
49
- const valueExpr = buildExpression(ctx, assignment.value) as ScalarPlanNode;
50
- mutationContextValues.set(assignment.name, valueExpr);
51
- });
52
- }
53
-
54
- // Plan the source of rows to delete. This is typically the table itself, potentially filtered.
55
- let sourceNode: RelationalPlanNode = tableRetrieve; // Use the RetrieveNode as source
56
-
57
- // Create a new scope with the table columns registered for column resolution
58
- const tableScope = new RegisteredScope(ctx.scope);
59
- const sourceAttributes = sourceNode.getAttributes();
60
- sourceNode.getType().columns.forEach((c, i) => {
61
- const attr = sourceAttributes[i];
62
- tableScope.registerSymbol(c.name.toLowerCase(), (exp, s) =>
63
- new ColumnReferenceNode(s, exp as AST.ColumnExpr, c.type, attr.id, i));
64
- });
65
-
66
- // Create a new planning context with the updated scope for WHERE clause resolution
67
- const deleteCtx = { ...ctx, scope: tableScope };
68
-
69
- if (stmt.where) {
70
- const filterExpression = buildExpression(deleteCtx, stmt.where);
71
- sourceNode = new FilterNode(deleteCtx.scope, sourceNode, filterExpression);
72
- }
73
-
74
- // Create OLD/NEW attributes for DELETE (OLD = actual values being deleted, NEW = all NULL)
75
- const oldAttributes = tableReference.tableSchema.columns.map((col: any) => ({
76
- id: PlanNode.nextAttrId(),
77
- name: col.name,
78
- type: {
79
- typeClass: 'scalar' as const,
80
- logicalType: col.logicalType,
81
- nullable: !col.notNull,
82
- isReadOnly: false
83
- },
84
- sourceRelation: `OLD.${tableReference.tableSchema.name}`
85
- }));
86
-
87
- const newAttributes = tableReference.tableSchema.columns.map((col: any) => ({
88
- id: PlanNode.nextAttrId(),
89
- name: col.name,
90
- type: {
91
- typeClass: 'scalar' as const,
92
- logicalType: col.logicalType,
93
- nullable: true, // NEW values are always NULL for DELETE
94
- isReadOnly: false
95
- },
96
- sourceRelation: `NEW.${tableReference.tableSchema.name}`
97
- }));
98
-
99
- const { oldRowDescriptor, newRowDescriptor, flatRowDescriptor } = buildOldNewRowDescriptors(oldAttributes, newAttributes);
100
-
101
- // Build context descriptor if we have context attributes
102
- const contextDescriptor: RowDescriptor = contextAttributes.length > 0 ? [] : undefined as any;
103
- if (contextDescriptor) {
104
- contextAttributes.forEach((attr, index) => {
105
- contextDescriptor[attr.id] = index;
106
- });
107
- }
108
-
109
- // Build constraint checks at plan time
110
- const constraintChecks = buildConstraintChecks(
111
- deleteCtx,
112
- tableReference.tableSchema,
113
- RowOpFlag.DELETE,
114
- oldAttributes,
115
- newAttributes,
116
- flatRowDescriptor,
117
- contextAttributes
118
- );
119
-
120
- // Always inject ConstraintCheckNode for DELETE operations
121
- const constraintCheckNode = new ConstraintCheckNode(
122
- deleteCtx.scope,
123
- sourceNode,
124
- tableReference,
125
- RowOpFlag.DELETE,
126
- oldRowDescriptor,
127
- newRowDescriptor,
128
- flatRowDescriptor,
129
- constraintChecks,
130
- mutationContextValues.size > 0 ? mutationContextValues : undefined,
131
- contextAttributes.length > 0 ? contextAttributes : undefined,
132
- contextDescriptor
133
- );
134
-
135
- const deleteNode = new DeleteNode(
136
- deleteCtx.scope,
137
- tableReference,
138
- constraintCheckNode,
139
- oldRowDescriptor,
140
- flatRowDescriptor,
141
- mutationContextValues.size > 0 ? mutationContextValues : undefined,
142
- contextAttributes.length > 0 ? contextAttributes : undefined,
143
- contextDescriptor
144
- );
145
-
146
- // Add DML executor node to perform the actual database delete operations
147
- const dmlExecutorNode = new DmlExecutorNode(
148
- deleteCtx.scope,
149
- deleteNode,
150
- tableReference,
151
- 'delete',
152
- undefined, // onConflict not used for DELETE
153
- mutationContextValues.size > 0 ? mutationContextValues : undefined,
154
- contextAttributes.length > 0 ? contextAttributes : undefined,
155
- contextDescriptor
156
- );
157
-
158
- const resultNode: RelationalPlanNode = dmlExecutorNode;
159
-
160
- if (stmt.returning && stmt.returning.length > 0) {
161
- // Create returning scope with OLD/NEW attribute access
162
- const returningScope = new RegisteredScope(deleteCtx.scope);
163
-
164
- // Register OLD.* symbols (actual values being deleted)
165
- oldAttributes.forEach((attr: any, columnIndex: any) => {
166
- const tableColumn = tableReference.tableSchema.columns[columnIndex];
167
- returningScope.registerSymbol(`old.${tableColumn.name.toLowerCase()}`, (exp, s) =>
168
- new ColumnReferenceNode(s, exp as AST.ColumnExpr, attr.type, attr.id, columnIndex)
169
- );
170
- });
171
-
172
- // Register NEW.* symbols (always NULL for DELETE) and unqualified column names (default to OLD for DELETE)
173
- newAttributes.forEach((attr: any, columnIndex: any) => {
174
- const tableColumn = tableReference.tableSchema.columns[columnIndex];
175
-
176
- // NEW.column (always NULL for DELETE)
177
- returningScope.registerSymbol(`new.${tableColumn.name.toLowerCase()}`, (exp, s) =>
178
- new ColumnReferenceNode(s, exp as AST.ColumnExpr, attr.type, attr.id, columnIndex)
179
- );
180
-
181
- // Unqualified column (defaults to OLD for DELETE)
182
- const oldAttr = oldAttributes[columnIndex];
183
- returningScope.registerSymbol(tableColumn.name.toLowerCase(), (exp, s) =>
184
- new ColumnReferenceNode(s, exp as AST.ColumnExpr, oldAttr.type, oldAttr.id, columnIndex)
185
- );
186
-
187
- // Table-qualified form (table.column -> OLD for DELETE)
188
- const tblQualified = `${tableReference.tableSchema.name.toLowerCase()}.${tableColumn.name.toLowerCase()}`;
189
- returningScope.registerSymbol(tblQualified, (exp, s) =>
190
- new ColumnReferenceNode(s, exp as AST.ColumnExpr, oldAttr.type, oldAttr.id, columnIndex)
191
- );
192
- });
193
-
194
- // Build RETURNING projections in the OLD/NEW context
195
- const returningProjections = stmt.returning.map(rc => {
196
- // TODO: Support RETURNING *
197
- if (rc.type === 'all') throw new QuereusError('RETURNING * not yet supported', StatusCode.UNSUPPORTED);
198
-
199
- // Infer alias from column name if not explicitly provided
200
- let alias = rc.alias;
201
- if (!alias && rc.expr.type === 'column') {
202
- // For qualified column references like OLD.id, normalize to lowercase
203
- alias = rc.expr.table
204
- ? `${rc.expr.table.toLowerCase()}.${rc.expr.name.toLowerCase()}`
205
- : rc.expr.name.toLowerCase();
206
- }
207
-
208
- return {
209
- node: buildExpression({ ...deleteCtx, scope: returningScope }, rc.expr) as ScalarPlanNode,
210
- alias: alias
211
- };
212
- });
213
-
214
- return new ReturningNode(deleteCtx.scope, dmlExecutorNode, returningProjections);
215
- }
216
-
217
- return new SinkNode(deleteCtx.scope, resultNode, 'delete');
218
- }
@@ -1,11 +0,0 @@
1
- import type { PlanningContext } from '../planning-context.js';
2
- import type * as AST from '../../parser/ast.js';
3
- import { DropAssertionNode } from '../nodes/drop-assertion-node.js';
4
-
5
- export function buildDropAssertionStmt(ctx: PlanningContext, stmt: AST.DropStmt): DropAssertionNode {
6
- if (stmt.objectType !== 'assertion') {
7
- throw new Error('Expected DROP ASSERTION statement');
8
- }
9
-
10
- return new DropAssertionNode(ctx.scope, stmt.name.name, stmt.ifExists);
11
- }
@@ -1,13 +0,0 @@
1
- import type * as AST from '../../parser/ast.js';
2
- import type { PlanningContext } from '../planning-context.js';
3
- import { DropTableNode } from '../nodes/drop-table-node.js';
4
-
5
- export function buildDropTableStmt(
6
- ctx: PlanningContext,
7
- stmt: AST.DropStmt,
8
- ): DropTableNode {
9
- return new DropTableNode(
10
- ctx.scope,
11
- stmt,
12
- );
13
- }
@@ -1,19 +0,0 @@
1
- import type * as AST from '../../parser/ast.js';
2
- import type { PlanningContext } from '../planning-context.js';
3
- import { DropViewNode } from '../nodes/drop-view-node.js';
4
-
5
- /**
6
- * Builds a plan node for DROP VIEW statements.
7
- */
8
- export function buildDropViewStmt(ctx: PlanningContext, stmt: AST.DropStmt): DropViewNode {
9
- // Extract schema and view name
10
- const schemaName = stmt.name.schema || 'main';
11
- const viewName = stmt.name.name;
12
-
13
- return new DropViewNode(
14
- ctx.scope,
15
- viewName,
16
- schemaName,
17
- stmt.ifExists
18
- );
19
- }
@@ -1,205 +0,0 @@
1
- import type * as AST from '../../parser/ast.js';
2
- import type { PlanningContext } from '../planning-context.js';
3
- import { LiteralNode, BinaryOpNode, UnaryOpNode, CaseExprNode, CastNode, CollateNode, BetweenNode } from '../nodes/scalar.js';
4
- import { ScalarSubqueryNode, InNode, ExistsNode } from '../nodes/subquery.js';
5
- import { WindowFunctionCallNode } from '../nodes/window-function.js';
6
- import type { ScalarPlanNode, RelationalPlanNode } from '../nodes/plan-node.js';
7
- import { QuereusError } from '../../common/errors.js';
8
- import { StatusCode } from '../../common/types.js';
9
- import type { RelationType } from '../../common/datatype.js';
10
- import { resolveColumn, resolveParameter } from '../resolve.js';
11
- import { Ambiguous } from '../scopes/scope.js';
12
- import { buildSelectStmt } from './select.js';
13
- import { resolveWindowFunction } from '../../schema/window-function.js';
14
- import { buildFunctionCall } from './function-call.js';
15
- import { createLogger } from '../../common/logger.js';
16
-
17
- const logger = createLogger('planner:expression');
18
-
19
- /**
20
- * Builds an expression plan node from an AST expression.
21
- */
22
- export function buildExpression(ctx: PlanningContext, expr: AST.Expression, allowAggregates: boolean = false): ScalarPlanNode {
23
- switch (expr.type) {
24
- case 'literal':
25
- return new LiteralNode(ctx.scope, expr);
26
-
27
- case 'column': {
28
- const colResolution = resolveColumn(ctx.scope, expr, ctx.db.schemaManager.getCurrentSchemaName());
29
-
30
- if (!colResolution || colResolution === Ambiguous) {
31
- throw new QuereusError(`Column not found: ${expr.name}`, StatusCode.ERROR, undefined, expr.loc?.start.line, expr.loc?.start.column);
32
- }
33
- return colResolution as ScalarPlanNode;
34
- }
35
-
36
- case 'parameter': {
37
- const paramResolution = resolveParameter(ctx.scope, expr);
38
- if (!paramResolution || paramResolution === Ambiguous) {
39
- throw new QuereusError(`Parameter not found: ${expr.name ?? expr.index}`, StatusCode.ERROR, undefined, expr.loc?.start.line, expr.loc?.start.column);
40
- }
41
- return paramResolution as ScalarPlanNode;
42
- }
43
-
44
- case 'unary': {
45
- // Optimization: fold unary minus over numeric literals into negative literals
46
- if (expr.operator === '-' && expr.expr.type === 'literal') {
47
- const literalExpr = expr.expr as AST.LiteralExpr;
48
- if (typeof literalExpr.value === 'number' || typeof literalExpr.value === 'bigint') {
49
- // Create a new literal expression with the negated value
50
- const negatedLiteral: AST.LiteralExpr = {
51
- type: 'literal',
52
- value: typeof literalExpr.value === 'bigint' ? -literalExpr.value : -literalExpr.value,
53
- lexeme: literalExpr.lexeme ? `-${literalExpr.lexeme}` : undefined,
54
- loc: expr.loc // Use the location of the entire unary expression
55
- };
56
- return new LiteralNode(ctx.scope, negatedLiteral);
57
- }
58
- }
59
-
60
- const operand = buildExpression(ctx, expr.expr, allowAggregates);
61
- return new UnaryOpNode(ctx.scope, expr, operand);
62
- }
63
-
64
- case 'binary': {
65
- const left = buildExpression(ctx, expr.left, allowAggregates);
66
- const right = buildExpression(ctx, expr.right, allowAggregates);
67
- return new BinaryOpNode(ctx.scope, expr, left, right);
68
- }
69
-
70
- case 'case': {
71
- // Build base expression if present
72
- const baseExpr = expr.baseExpr ? buildExpression(ctx, expr.baseExpr, allowAggregates) : undefined;
73
-
74
- // Build WHEN/THEN clauses
75
- const whenThenClauses = expr.whenThenClauses.map(clause => ({
76
- when: buildExpression(ctx, clause.when, allowAggregates),
77
- then: buildExpression(ctx, clause.then, allowAggregates)
78
- }));
79
-
80
- // Build ELSE expression if present
81
- const elseExpr = expr.elseExpr ? buildExpression(ctx, expr.elseExpr, allowAggregates) : undefined;
82
-
83
- return new CaseExprNode(ctx.scope, expr, baseExpr, whenThenClauses, elseExpr);
84
- }
85
-
86
- case 'cast': {
87
- const castOperand = buildExpression(ctx, expr.expr, allowAggregates);
88
- return new CastNode(ctx.scope, expr, castOperand);
89
- }
90
-
91
- case 'collate': {
92
- const collateOperand = buildExpression(ctx, expr.expr, allowAggregates);
93
- return new CollateNode(ctx.scope, expr, collateOperand);
94
- }
95
-
96
- case 'function': return buildFunctionCall(ctx, expr, allowAggregates);
97
-
98
- case 'subquery': {
99
- // For scalar subqueries, create a context that allows correlation
100
- // The buildSelectStmt will create the proper scope chain with subquery tables taking precedence
101
- // CRITICAL: Share the cteReferenceCache to ensure consistent attribute IDs across contexts
102
- logger(`Building scalar subquery - ctx.cteReferenceCache size: ${ctx.cteReferenceCache?.size ?? 'undefined'}`);
103
- const subqueryContext = {
104
- ...ctx,
105
- cteReferenceCache: ctx.cteReferenceCache || new Map()
106
- };
107
- // Preserve input columns in scalar subqueries to ensure correlated predicates
108
- // have access to all underlying attributes.
109
- const subqueryPlan = buildSelectStmt(subqueryContext, expr.query, ctx.cteNodes, true);
110
- logger(`Building scalar subquery with preserveInputColumns=true`);
111
- if (subqueryPlan.getType().typeClass !== 'relation') {
112
- throw new QuereusError('Subquery must produce a relation', StatusCode.ERROR, undefined, expr.loc?.start.line, expr.loc?.start.column);
113
- }
114
- // Validate that scalar subquery returns exactly one column
115
- const scalarSubqueryType = subqueryPlan.getType();
116
- if (scalarSubqueryType.typeClass === 'relation' && (scalarSubqueryType as RelationType).columns.length !== 1) {
117
- throw new QuereusError('Scalar subquery must return exactly one column', StatusCode.ERROR, undefined, expr.loc?.start.line, expr.loc?.start.column);
118
- }
119
- return new ScalarSubqueryNode(ctx.scope, expr, subqueryPlan as RelationalPlanNode);
120
- }
121
-
122
- case 'windowFunction': {
123
- // Window functions are handled by creating a WindowFunctionCallNode
124
- // First validate that this is a registered window function
125
- const windowSchema = resolveWindowFunction(expr.function.name);
126
- if (!windowSchema) {
127
- throw new QuereusError(`Unknown window function: ${expr.function.name}`, StatusCode.ERROR, undefined, expr.loc?.start.line, expr.loc?.start.column);
128
- }
129
-
130
- // Validate argument count (special case for COUNT(*))
131
- const isCountStar = expr.function.name.toLowerCase() === 'count' && expr.function.args.length === 0;
132
- if (windowSchema.argCount !== 'variadic' && expr.function.args.length !== windowSchema.argCount && !isCountStar) {
133
- throw new QuereusError(`Window function ${expr.function.name} expects ${windowSchema.argCount} arguments, got ${expr.function.args.length}`, StatusCode.ERROR, undefined, expr.loc?.start.line, expr.loc?.start.column);
134
- }
135
-
136
- // Validate ORDER BY requirement
137
- if (windowSchema.requiresOrderBy && (!expr.window?.orderBy || expr.window.orderBy.length === 0)) {
138
- throw new QuereusError(`Window function ${expr.function.name} requires ORDER BY clause`, StatusCode.ERROR, undefined, expr.loc?.start.line, expr.loc?.start.column);
139
- }
140
-
141
- return new WindowFunctionCallNode(
142
- ctx.scope,
143
- expr,
144
- expr.function.name,
145
- expr.function.distinct ?? false
146
- );
147
- }
148
-
149
- case 'in': {
150
- // Build the left expression
151
- const leftExpr = buildExpression(ctx, expr.expr, allowAggregates);
152
-
153
- if (expr.subquery) {
154
- // IN subquery: expr IN (SELECT ...)
155
- const inSubqueryContext = {
156
- ...ctx,
157
- cteReferenceCache: ctx.cteReferenceCache || new Map()
158
- };
159
- const inSubqueryPlan = buildSelectStmt(inSubqueryContext, expr.subquery, ctx.cteNodes, true);
160
- if (inSubqueryPlan.getType().typeClass !== 'relation') {
161
- throw new QuereusError('IN subquery must produce a relation', StatusCode.ERROR, undefined, expr.loc?.start.line, expr.loc?.start.column);
162
- }
163
- // Validate that subquery returns exactly one column
164
- const subqueryType = inSubqueryPlan.getType();
165
- if (subqueryType.typeClass === 'relation' && (subqueryType as RelationType).columns.length !== 1) {
166
- throw new QuereusError('IN subquery must return exactly one column', StatusCode.ERROR, undefined, expr.loc?.start.line, expr.loc?.start.column);
167
- }
168
- return new InNode(ctx.scope, expr, leftExpr, inSubqueryPlan as RelationalPlanNode);
169
- } else if (expr.values) {
170
- // IN value list: expr IN (value1, value2, ...)
171
- const valueExprs = expr.values.map(val => buildExpression(ctx, val, allowAggregates));
172
- // Create a special IN node for value lists
173
- // Import the InNode from subquery module
174
- return new InNode(ctx.scope, expr, leftExpr, undefined, valueExprs);
175
- } else {
176
- throw new QuereusError('IN expression must have either values or subquery', StatusCode.ERROR, undefined, expr.loc?.start.line, expr.loc?.start.column);
177
- }
178
- }
179
-
180
- case 'exists': {
181
- // Build the EXISTS subquery
182
- const existsSubqueryContext = {
183
- ...ctx,
184
- cteReferenceCache: ctx.cteReferenceCache || new Map()
185
- };
186
- const existsSubqueryPlan = buildSelectStmt(existsSubqueryContext, expr.subquery, ctx.cteNodes, true);
187
- if (existsSubqueryPlan.getType().typeClass !== 'relation') {
188
- throw new QuereusError('EXISTS subquery must produce a relation', StatusCode.ERROR, undefined, expr.loc?.start.line, expr.loc?.start.column);
189
- }
190
- return new ExistsNode(ctx.scope, expr, existsSubqueryPlan as RelationalPlanNode);
191
- }
192
-
193
- case 'between': {
194
- // Build the BETWEEN expression: expr BETWEEN lower AND upper
195
- const exprNode = buildExpression(ctx, expr.expr, allowAggregates);
196
- const lowerNode = buildExpression(ctx, expr.lower, allowAggregates);
197
- const upperNode = buildExpression(ctx, expr.upper, allowAggregates);
198
- return new BetweenNode(ctx.scope, expr, exprNode, lowerNode, upperNode);
199
- }
200
-
201
- default:
202
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
203
- throw new QuereusError(`Expression type '${(expr as any).type}' not yet supported in buildExpression.`, StatusCode.UNSUPPORTED, undefined, expr.loc?.start.line, expr.loc?.start.column);
204
- }
205
- }
@@ -1,129 +0,0 @@
1
- import { type PlanningContext } from "../planning-context.js";
2
- import { AggregateFunctionCallNode } from "../nodes/aggregate-function.js";
3
- import { ColumnReferenceNode } from "../nodes/reference.js";
4
- import { QuereusError } from "../../common/errors.js";
5
- import { StatusCode } from "../../common/types.js";
6
- import * as AST from "../../parser/ast.js";
7
- import { ScalarPlanNode } from "../nodes/plan-node.js";
8
- import { isAggregateFunctionSchema, isScalarFunctionSchema } from '../../schema/function.js';
9
- import { buildExpression } from "./expression.js";
10
- import { ScalarFunctionCallNode } from "../nodes/function.js";
11
- import { resolveFunctionSchema } from "./schema-resolution.js";
12
- import { CapabilityDetectors } from '../framework/characteristics.js';
13
- import type { ScalarType } from "../../common/datatype.js";
14
-
15
- export function buildFunctionCall(ctx: PlanningContext, expr: AST.FunctionExpr, allowAggregates: boolean): ScalarPlanNode {
16
- // In HAVING context, check if this function matches an existing aggregate
17
- if (ctx.aggregates && ctx.aggregates.length > 0) {
18
- // Try to find a matching aggregate
19
- for (const agg of ctx.aggregates) {
20
- if (CapabilityDetectors.isAggregateFunction(agg.expression)) {
21
- const aggFuncNode = agg.expression as AggregateFunctionCallNode;
22
- // Check if function name matches and argument count matches
23
- if (aggFuncNode.functionName.toLowerCase() === expr.name.toLowerCase() &&
24
- aggFuncNode.args.length === expr.args.length) {
25
- // Check if arguments match
26
- let argsMatch = true;
27
- for (let i = 0; i < expr.args.length; i++) {
28
- const exprArg = expr.args[i];
29
- const aggArg = aggFuncNode.args[i];
30
- // Simple check: if both are column references, check names match
31
- if (exprArg.type === 'column' && aggArg.expression?.type === 'column') {
32
- if (exprArg.name.toLowerCase() !== aggArg.expression.name.toLowerCase()) {
33
- argsMatch = false;
34
- break;
35
- }
36
- } else if (exprArg.type === 'literal' && aggArg.expression?.type === 'literal') {
37
- if (exprArg.value !== aggArg.expression.value) {
38
- argsMatch = false;
39
- break;
40
- }
41
- }
42
- // For other cases, we'd need more sophisticated comparison
43
- }
44
-
45
- if (argsMatch) {
46
- // Found matching aggregate - return a column reference to it
47
- const columnExpr: AST.ColumnExpr = {
48
- type: 'column',
49
- name: agg.alias
50
- };
51
- return new ColumnReferenceNode(
52
- ctx.scope,
53
- columnExpr,
54
- agg.expression.getType(),
55
- agg.attributeId,
56
- agg.columnIndex
57
- );
58
- }
59
- }
60
- }
61
- }
62
- }
63
-
64
- // Resolve function schema at build time
65
- const functionSchema = resolveFunctionSchema(ctx, expr.name, expr.args.length);
66
- if (functionSchema && isAggregateFunctionSchema(functionSchema)) {
67
- if (!allowAggregates) {
68
- throw new QuereusError(`Aggregate function ${expr.name} not allowed in this context`, StatusCode.ERROR, undefined, expr.loc?.start.line, expr.loc?.start.column);
69
- }
70
-
71
- // Build arguments for aggregate function
72
- const args = expr.args.map(arg => buildExpression(ctx, arg, false)); // Aggregates can't contain other aggregates
73
-
74
- // Perform type inference if available
75
- let inferredType: ScalarType | undefined;
76
- if (functionSchema.inferReturnType) {
77
- const argTypes = args.map(arg => arg.getType().logicalType);
78
-
79
- // Validate argument types if validator is provided
80
- if (functionSchema.validateArgTypes && !functionSchema.validateArgTypes(argTypes)) {
81
- throw new QuereusError(
82
- `Invalid argument types for aggregate function ${expr.name}`,
83
- StatusCode.MISMATCH,
84
- undefined,
85
- expr.loc?.start.line,
86
- expr.loc?.start.column
87
- );
88
- }
89
-
90
- inferredType = functionSchema.inferReturnType(argTypes);
91
- }
92
-
93
- return new AggregateFunctionCallNode(
94
- ctx.scope,
95
- expr,
96
- expr.name,
97
- functionSchema,
98
- args,
99
- expr.distinct ?? false, // Use the distinct field from the AST
100
- undefined, // orderBy - TODO: parse from expr
101
- undefined, // filter - TODO: parse from expr
102
- inferredType
103
- );
104
- } else {
105
- // Regular scalar function
106
- const args = expr.args.map(arg => buildExpression(ctx, arg, allowAggregates));
107
-
108
- // Perform type inference if available
109
- let inferredType: ScalarType | undefined;
110
- if (isScalarFunctionSchema(functionSchema) && functionSchema.inferReturnType) {
111
- const argTypes = args.map(arg => arg.getType().logicalType);
112
-
113
- // Validate argument types if validator is provided
114
- if (functionSchema.validateArgTypes && !functionSchema.validateArgTypes(argTypes)) {
115
- throw new QuereusError(
116
- `Invalid argument types for function ${expr.name}`,
117
- StatusCode.MISMATCH,
118
- undefined,
119
- expr.loc?.start.line,
120
- expr.loc?.start.column
121
- );
122
- }
123
-
124
- inferredType = functionSchema.inferReturnType(argTypes);
125
- }
126
-
127
- return new ScalarFunctionCallNode(ctx.scope, expr, functionSchema, args, inferredType);
128
- }
129
- }