@quereus/quereus 0.7.3 → 0.7.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (566) hide show
  1. package/package.json +3 -3
  2. package/dist/src/common/constants.js.map +0 -1
  3. package/dist/src/common/datatype.js.map +0 -1
  4. package/dist/src/common/errors.js.map +0 -1
  5. package/dist/src/common/json-types.js.map +0 -1
  6. package/dist/src/common/logger.js.map +0 -1
  7. package/dist/src/common/type-inference.js.map +0 -1
  8. package/dist/src/common/types.js.map +0 -1
  9. package/dist/src/core/database-options.js.map +0 -1
  10. package/dist/src/core/database.js.map +0 -1
  11. package/dist/src/core/param.js.map +0 -1
  12. package/dist/src/core/statement.js.map +0 -1
  13. package/dist/src/func/builtins/aggregate.js.map +0 -1
  14. package/dist/src/func/builtins/builtin-window-functions.js.map +0 -1
  15. package/dist/src/func/builtins/conversion.js.map +0 -1
  16. package/dist/src/func/builtins/datetime.js.map +0 -1
  17. package/dist/src/func/builtins/explain.js.map +0 -1
  18. package/dist/src/func/builtins/generation.js.map +0 -1
  19. package/dist/src/func/builtins/index.js.map +0 -1
  20. package/dist/src/func/builtins/json-helpers.js.map +0 -1
  21. package/dist/src/func/builtins/json-tvf.js.map +0 -1
  22. package/dist/src/func/builtins/json.js.map +0 -1
  23. package/dist/src/func/builtins/scalar.js.map +0 -1
  24. package/dist/src/func/builtins/schema.js.map +0 -1
  25. package/dist/src/func/builtins/string.js.map +0 -1
  26. package/dist/src/func/builtins/timespan.js.map +0 -1
  27. package/dist/src/func/context.js.map +0 -1
  28. package/dist/src/func/registration.js.map +0 -1
  29. package/dist/src/index.js.map +0 -1
  30. package/dist/src/parser/ast.js.map +0 -1
  31. package/dist/src/parser/index.js.map +0 -1
  32. package/dist/src/parser/lexer.js.map +0 -1
  33. package/dist/src/parser/parser.js.map +0 -1
  34. package/dist/src/parser/utils.js.map +0 -1
  35. package/dist/src/parser/visitor.js.map +0 -1
  36. package/dist/src/planner/analysis/binding-collector.js.map +0 -1
  37. package/dist/src/planner/analysis/const-evaluator.js.map +0 -1
  38. package/dist/src/planner/analysis/const-pass.js.map +0 -1
  39. package/dist/src/planner/analysis/constraint-extractor.js.map +0 -1
  40. package/dist/src/planner/analysis/predicate-normalizer.js.map +0 -1
  41. package/dist/src/planner/building/alter-table.js.map +0 -1
  42. package/dist/src/planner/building/block.js.map +0 -1
  43. package/dist/src/planner/building/constraint-builder.js.map +0 -1
  44. package/dist/src/planner/building/create-assertion.js.map +0 -1
  45. package/dist/src/planner/building/create-view.js.map +0 -1
  46. package/dist/src/planner/building/ddl.js.map +0 -1
  47. package/dist/src/planner/building/declare-schema.js.map +0 -1
  48. package/dist/src/planner/building/delete.js.map +0 -1
  49. package/dist/src/planner/building/drop-assertion.js.map +0 -1
  50. package/dist/src/planner/building/drop-table.js.map +0 -1
  51. package/dist/src/planner/building/drop-view.js.map +0 -1
  52. package/dist/src/planner/building/expression.js.map +0 -1
  53. package/dist/src/planner/building/function-call.js.map +0 -1
  54. package/dist/src/planner/building/insert.js.map +0 -1
  55. package/dist/src/planner/building/pragma.js.map +0 -1
  56. package/dist/src/planner/building/schema-resolution.js.map +0 -1
  57. package/dist/src/planner/building/select-aggregates.js.map +0 -1
  58. package/dist/src/planner/building/select-compound.js.map +0 -1
  59. package/dist/src/planner/building/select-context.js.map +0 -1
  60. package/dist/src/planner/building/select-modifiers.js.map +0 -1
  61. package/dist/src/planner/building/select-projections.js.map +0 -1
  62. package/dist/src/planner/building/select-window.js.map +0 -1
  63. package/dist/src/planner/building/select.js.map +0 -1
  64. package/dist/src/planner/building/table-function.js.map +0 -1
  65. package/dist/src/planner/building/table.js.map +0 -1
  66. package/dist/src/planner/building/transaction.js.map +0 -1
  67. package/dist/src/planner/building/update.js.map +0 -1
  68. package/dist/src/planner/building/with.js.map +0 -1
  69. package/dist/src/planner/cache/correlation-detector.js.map +0 -1
  70. package/dist/src/planner/cache/materialization-advisory.js.map +0 -1
  71. package/dist/src/planner/cache/reference-graph.js.map +0 -1
  72. package/dist/src/planner/cost/index.js.map +0 -1
  73. package/dist/src/planner/debug/logger-utils.js.map +0 -1
  74. package/dist/src/planner/debug.js.map +0 -1
  75. package/dist/src/planner/framework/characteristics.js.map +0 -1
  76. package/dist/src/planner/framework/context.js.map +0 -1
  77. package/dist/src/planner/framework/pass.js.map +0 -1
  78. package/dist/src/planner/framework/physical-utils.js.map +0 -1
  79. package/dist/src/planner/framework/registry.js.map +0 -1
  80. package/dist/src/planner/framework/trace.js.map +0 -1
  81. package/dist/src/planner/nodes/add-constraint-node.js.map +0 -1
  82. package/dist/src/planner/nodes/aggregate-function.js.map +0 -1
  83. package/dist/src/planner/nodes/aggregate-node.js.map +0 -1
  84. package/dist/src/planner/nodes/array-index-node.js.map +0 -1
  85. package/dist/src/planner/nodes/block.js.map +0 -1
  86. package/dist/src/planner/nodes/cache-node.js.map +0 -1
  87. package/dist/src/planner/nodes/constraint-check-node.js.map +0 -1
  88. package/dist/src/planner/nodes/create-assertion-node.js.map +0 -1
  89. package/dist/src/planner/nodes/create-index-node.js.map +0 -1
  90. package/dist/src/planner/nodes/create-table-node.js.map +0 -1
  91. package/dist/src/planner/nodes/create-view-node.js.map +0 -1
  92. package/dist/src/planner/nodes/cte-node.js.map +0 -1
  93. package/dist/src/planner/nodes/cte-reference-node.js.map +0 -1
  94. package/dist/src/planner/nodes/declarative-schema.js.map +0 -1
  95. package/dist/src/planner/nodes/delete-node.js.map +0 -1
  96. package/dist/src/planner/nodes/distinct-node.js.map +0 -1
  97. package/dist/src/planner/nodes/dml-executor-node.js.map +0 -1
  98. package/dist/src/planner/nodes/drop-assertion-node.js.map +0 -1
  99. package/dist/src/planner/nodes/drop-table-node.js.map +0 -1
  100. package/dist/src/planner/nodes/drop-view-node.js.map +0 -1
  101. package/dist/src/planner/nodes/filter.js.map +0 -1
  102. package/dist/src/planner/nodes/function.js.map +0 -1
  103. package/dist/src/planner/nodes/insert-node.js.map +0 -1
  104. package/dist/src/planner/nodes/internal-recursive-cte-ref-node.js.map +0 -1
  105. package/dist/src/planner/nodes/join-node.js.map +0 -1
  106. package/dist/src/planner/nodes/limit-offset.js.map +0 -1
  107. package/dist/src/planner/nodes/plan-node-type.js.map +0 -1
  108. package/dist/src/planner/nodes/plan-node.js.map +0 -1
  109. package/dist/src/planner/nodes/pragma.js.map +0 -1
  110. package/dist/src/planner/nodes/project-node.js.map +0 -1
  111. package/dist/src/planner/nodes/recursive-cte-node.js.map +0 -1
  112. package/dist/src/planner/nodes/reference.js.map +0 -1
  113. package/dist/src/planner/nodes/remote-query-node.js.map +0 -1
  114. package/dist/src/planner/nodes/retrieve-node.js.map +0 -1
  115. package/dist/src/planner/nodes/returning-node.js.map +0 -1
  116. package/dist/src/planner/nodes/scalar.js.map +0 -1
  117. package/dist/src/planner/nodes/sequencing-node.js.map +0 -1
  118. package/dist/src/planner/nodes/set-operation-node.js.map +0 -1
  119. package/dist/src/planner/nodes/single-row.js.map +0 -1
  120. package/dist/src/planner/nodes/sink-node.js.map +0 -1
  121. package/dist/src/planner/nodes/sort.js.map +0 -1
  122. package/dist/src/planner/nodes/stream-aggregate.js.map +0 -1
  123. package/dist/src/planner/nodes/subquery.js.map +0 -1
  124. package/dist/src/planner/nodes/table-access-nodes.js.map +0 -1
  125. package/dist/src/planner/nodes/table-function-call.js.map +0 -1
  126. package/dist/src/planner/nodes/transaction-node.js.map +0 -1
  127. package/dist/src/planner/nodes/update-node.js.map +0 -1
  128. package/dist/src/planner/nodes/values-node.js.map +0 -1
  129. package/dist/src/planner/nodes/view-reference-node.js.map +0 -1
  130. package/dist/src/planner/nodes/window-function.js.map +0 -1
  131. package/dist/src/planner/nodes/window-node.js.map +0 -1
  132. package/dist/src/planner/optimizer-tuning.js.map +0 -1
  133. package/dist/src/planner/optimizer.js.map +0 -1
  134. package/dist/src/planner/planning-context.js.map +0 -1
  135. package/dist/src/planner/resolve.js.map +0 -1
  136. package/dist/src/planner/rules/access/rule-select-access-path.js.map +0 -1
  137. package/dist/src/planner/rules/aggregate/rule-aggregate-streaming.js.map +0 -1
  138. package/dist/src/planner/rules/cache/rule-cte-optimization.js.map +0 -1
  139. package/dist/src/planner/rules/cache/rule-materialization-advisory.js.map +0 -1
  140. package/dist/src/planner/rules/cache/rule-mutating-subquery-cache.js.map +0 -1
  141. package/dist/src/planner/rules/join/rule-join-greedy-commute.js.map +0 -1
  142. package/dist/src/planner/rules/join/rule-join-key-inference.js.map +0 -1
  143. package/dist/src/planner/rules/join/rule-quickpick-enumeration.js.map +0 -1
  144. package/dist/src/planner/rules/predicate/rule-predicate-pushdown.js.map +0 -1
  145. package/dist/src/planner/rules/retrieve/rule-grow-retrieve.js.map +0 -1
  146. package/dist/src/planner/scopes/aliased.js.map +0 -1
  147. package/dist/src/planner/scopes/base.js.map +0 -1
  148. package/dist/src/planner/scopes/empty.js.map +0 -1
  149. package/dist/src/planner/scopes/global.js.map +0 -1
  150. package/dist/src/planner/scopes/multi.js.map +0 -1
  151. package/dist/src/planner/scopes/param.js.map +0 -1
  152. package/dist/src/planner/scopes/registered.js.map +0 -1
  153. package/dist/src/planner/scopes/scope.js.map +0 -1
  154. package/dist/src/planner/stats/basic-estimates.js.map +0 -1
  155. package/dist/src/planner/stats/index.js.map +0 -1
  156. package/dist/src/planner/type-utils.js.map +0 -1
  157. package/dist/src/planner/util/key-utils.js.map +0 -1
  158. package/dist/src/planner/validation/determinism-validator.js.map +0 -1
  159. package/dist/src/planner/validation/plan-validator.js.map +0 -1
  160. package/dist/src/runtime/async-util.js.map +0 -1
  161. package/dist/src/runtime/cache/shared-cache.js.map +0 -1
  162. package/dist/src/runtime/context-helpers.js.map +0 -1
  163. package/dist/src/runtime/deferred-constraint-queue.js.map +0 -1
  164. package/dist/src/runtime/emission-context.js.map +0 -1
  165. package/dist/src/runtime/emit/add-constraint.js.map +0 -1
  166. package/dist/src/runtime/emit/aggregate.js.map +0 -1
  167. package/dist/src/runtime/emit/array-index.js.map +0 -1
  168. package/dist/src/runtime/emit/between.js.map +0 -1
  169. package/dist/src/runtime/emit/binary.js.map +0 -1
  170. package/dist/src/runtime/emit/block.js.map +0 -1
  171. package/dist/src/runtime/emit/cache.js.map +0 -1
  172. package/dist/src/runtime/emit/case.js.map +0 -1
  173. package/dist/src/runtime/emit/cast.js.map +0 -1
  174. package/dist/src/runtime/emit/collate.js.map +0 -1
  175. package/dist/src/runtime/emit/column-reference.js.map +0 -1
  176. package/dist/src/runtime/emit/constraint-check.js.map +0 -1
  177. package/dist/src/runtime/emit/create-assertion.js.map +0 -1
  178. package/dist/src/runtime/emit/create-index.js.map +0 -1
  179. package/dist/src/runtime/emit/create-table.js.map +0 -1
  180. package/dist/src/runtime/emit/create-view.js.map +0 -1
  181. package/dist/src/runtime/emit/cte-reference.js.map +0 -1
  182. package/dist/src/runtime/emit/cte.js.map +0 -1
  183. package/dist/src/runtime/emit/delete.js.map +0 -1
  184. package/dist/src/runtime/emit/distinct.js.map +0 -1
  185. package/dist/src/runtime/emit/dml-executor.js.map +0 -1
  186. package/dist/src/runtime/emit/drop-assertion.js.map +0 -1
  187. package/dist/src/runtime/emit/drop-table.js.map +0 -1
  188. package/dist/src/runtime/emit/drop-view.js.map +0 -1
  189. package/dist/src/runtime/emit/filter.js.map +0 -1
  190. package/dist/src/runtime/emit/insert.js.map +0 -1
  191. package/dist/src/runtime/emit/internal-recursive-cte-ref.js.map +0 -1
  192. package/dist/src/runtime/emit/join.js.map +0 -1
  193. package/dist/src/runtime/emit/limit-offset.js.map +0 -1
  194. package/dist/src/runtime/emit/literal.js.map +0 -1
  195. package/dist/src/runtime/emit/parameter.js.map +0 -1
  196. package/dist/src/runtime/emit/pragma.js.map +0 -1
  197. package/dist/src/runtime/emit/project.js.map +0 -1
  198. package/dist/src/runtime/emit/recursive-cte.js.map +0 -1
  199. package/dist/src/runtime/emit/remote-query.js.map +0 -1
  200. package/dist/src/runtime/emit/retrieve.js.map +0 -1
  201. package/dist/src/runtime/emit/returning.js.map +0 -1
  202. package/dist/src/runtime/emit/scalar-function.js.map +0 -1
  203. package/dist/src/runtime/emit/scan.js.map +0 -1
  204. package/dist/src/runtime/emit/schema-declarative.js.map +0 -1
  205. package/dist/src/runtime/emit/sequencing.js.map +0 -1
  206. package/dist/src/runtime/emit/set-operation.js.map +0 -1
  207. package/dist/src/runtime/emit/sink.js.map +0 -1
  208. package/dist/src/runtime/emit/sort.js.map +0 -1
  209. package/dist/src/runtime/emit/subquery.js.map +0 -1
  210. package/dist/src/runtime/emit/table-valued-function.js.map +0 -1
  211. package/dist/src/runtime/emit/temporal-arithmetic.js.map +0 -1
  212. package/dist/src/runtime/emit/transaction.js.map +0 -1
  213. package/dist/src/runtime/emit/unary.js.map +0 -1
  214. package/dist/src/runtime/emit/update.js.map +0 -1
  215. package/dist/src/runtime/emit/values.js.map +0 -1
  216. package/dist/src/runtime/emit/window-function.js.map +0 -1
  217. package/dist/src/runtime/emit/window.js.map +0 -1
  218. package/dist/src/runtime/emitters.js.map +0 -1
  219. package/dist/src/runtime/register.js.map +0 -1
  220. package/dist/src/runtime/scheduler.js.map +0 -1
  221. package/dist/src/runtime/types.js.map +0 -1
  222. package/dist/src/runtime/utils.js.map +0 -1
  223. package/dist/src/schema/assertion.js.map +0 -1
  224. package/dist/src/schema/catalog.js.map +0 -1
  225. package/dist/src/schema/change-events.js.map +0 -1
  226. package/dist/src/schema/column.js.map +0 -1
  227. package/dist/src/schema/declared-schema-manager.js.map +0 -1
  228. package/dist/src/schema/function.js.map +0 -1
  229. package/dist/src/schema/manager.js.map +0 -1
  230. package/dist/src/schema/schema-differ.js.map +0 -1
  231. package/dist/src/schema/schema-hasher.js.map +0 -1
  232. package/dist/src/schema/schema.js.map +0 -1
  233. package/dist/src/schema/table.js.map +0 -1
  234. package/dist/src/schema/view.js.map +0 -1
  235. package/dist/src/schema/window-function.js.map +0 -1
  236. package/dist/src/types/builtin-types.js.map +0 -1
  237. package/dist/src/types/index.js.map +0 -1
  238. package/dist/src/types/json-type.js.map +0 -1
  239. package/dist/src/types/logical-type.js.map +0 -1
  240. package/dist/src/types/plugin-interface.js.map +0 -1
  241. package/dist/src/types/registry.js.map +0 -1
  242. package/dist/src/types/temporal-types.js.map +0 -1
  243. package/dist/src/types/validation.js.map +0 -1
  244. package/dist/src/util/affinity.js.map +0 -1
  245. package/dist/src/util/ast-stringify.js.map +0 -1
  246. package/dist/src/util/cached.js.map +0 -1
  247. package/dist/src/util/coercion.js.map +0 -1
  248. package/dist/src/util/comparison.js.map +0 -1
  249. package/dist/src/util/environment.js.map +0 -1
  250. package/dist/src/util/hash.js.map +0 -1
  251. package/dist/src/util/latches.js.map +0 -1
  252. package/dist/src/util/mutation-statement.js.map +0 -1
  253. package/dist/src/util/patterns.js.map +0 -1
  254. package/dist/src/util/plan-formatter.js.map +0 -1
  255. package/dist/src/util/plugin-helper.js.map +0 -1
  256. package/dist/src/util/row-descriptor.js.map +0 -1
  257. package/dist/src/util/serialization.js.map +0 -1
  258. package/dist/src/util/sql-literal.js.map +0 -1
  259. package/dist/src/util/working-table-iterable.js.map +0 -1
  260. package/dist/src/vtab/best-access-plan.js.map +0 -1
  261. package/dist/src/vtab/connection.js.map +0 -1
  262. package/dist/src/vtab/filter-info.js.map +0 -1
  263. package/dist/src/vtab/index-info.js.map +0 -1
  264. package/dist/src/vtab/manifest.js.map +0 -1
  265. package/dist/src/vtab/memory/connection.js.map +0 -1
  266. package/dist/src/vtab/memory/index.js.map +0 -1
  267. package/dist/src/vtab/memory/layer/base-cursor.js.map +0 -1
  268. package/dist/src/vtab/memory/layer/base.js.map +0 -1
  269. package/dist/src/vtab/memory/layer/connection.js.map +0 -1
  270. package/dist/src/vtab/memory/layer/interface.js.map +0 -1
  271. package/dist/src/vtab/memory/layer/manager.js.map +0 -1
  272. package/dist/src/vtab/memory/layer/safe-iterate.js.map +0 -1
  273. package/dist/src/vtab/memory/layer/scan-plan.js.map +0 -1
  274. package/dist/src/vtab/memory/layer/transaction-cursor.js.map +0 -1
  275. package/dist/src/vtab/memory/layer/transaction.js.map +0 -1
  276. package/dist/src/vtab/memory/module.js.map +0 -1
  277. package/dist/src/vtab/memory/table.js.map +0 -1
  278. package/dist/src/vtab/memory/types.js.map +0 -1
  279. package/dist/src/vtab/memory/utils/logging.js.map +0 -1
  280. package/dist/src/vtab/memory/utils/primary-key.js.map +0 -1
  281. package/dist/src/vtab/module.js.map +0 -1
  282. package/dist/src/vtab/table.js.map +0 -1
  283. package/src/common/constants.ts +0 -60
  284. package/src/common/datatype.ts +0 -85
  285. package/src/common/errors.ts +0 -189
  286. package/src/common/json-types.ts +0 -16
  287. package/src/common/logger.ts +0 -97
  288. package/src/common/type-inference.ts +0 -39
  289. package/src/common/types.ts +0 -151
  290. package/src/core/database-options.ts +0 -258
  291. package/src/core/database.ts +0 -1461
  292. package/src/core/param.ts +0 -56
  293. package/src/core/statement.ts +0 -528
  294. package/src/func/builtins/aggregate.ts +0 -269
  295. package/src/func/builtins/builtin-window-functions.ts +0 -166
  296. package/src/func/builtins/conversion.ts +0 -226
  297. package/src/func/builtins/datetime.ts +0 -500
  298. package/src/func/builtins/explain.ts +0 -779
  299. package/src/func/builtins/generation.ts +0 -43
  300. package/src/func/builtins/index.ts +0 -167
  301. package/src/func/builtins/json-helpers.ts +0 -237
  302. package/src/func/builtins/json-tvf.ts +0 -224
  303. package/src/func/builtins/json.ts +0 -588
  304. package/src/func/builtins/scalar.ts +0 -423
  305. package/src/func/builtins/schema.ts +0 -213
  306. package/src/func/builtins/string.ts +0 -306
  307. package/src/func/builtins/timespan.ts +0 -179
  308. package/src/func/context.ts +0 -258
  309. package/src/func/registration.ts +0 -201
  310. package/src/index.ts +0 -172
  311. package/src/parser/ast.ts +0 -581
  312. package/src/parser/index.ts +0 -65
  313. package/src/parser/lexer.ts +0 -806
  314. package/src/parser/parser.ts +0 -3352
  315. package/src/parser/utils.ts +0 -10
  316. package/src/parser/visitor.ts +0 -188
  317. package/src/planner/analysis/README.md +0 -93
  318. package/src/planner/analysis/binding-collector.ts +0 -83
  319. package/src/planner/analysis/const-evaluator.ts +0 -63
  320. package/src/planner/analysis/const-pass.ts +0 -282
  321. package/src/planner/analysis/constraint-extractor.ts +0 -764
  322. package/src/planner/analysis/predicate-normalizer.ts +0 -237
  323. package/src/planner/building/alter-table.ts +0 -49
  324. package/src/planner/building/block.ts +0 -93
  325. package/src/planner/building/constraint-builder.ts +0 -178
  326. package/src/planner/building/create-assertion.ts +0 -7
  327. package/src/planner/building/create-view.ts +0 -29
  328. package/src/planner/building/ddl.ts +0 -24
  329. package/src/planner/building/declare-schema.ts +0 -22
  330. package/src/planner/building/delete.ts +0 -218
  331. package/src/planner/building/drop-assertion.ts +0 -11
  332. package/src/planner/building/drop-table.ts +0 -13
  333. package/src/planner/building/drop-view.ts +0 -19
  334. package/src/planner/building/expression.ts +0 -205
  335. package/src/planner/building/function-call.ts +0 -129
  336. package/src/planner/building/insert.ts +0 -435
  337. package/src/planner/building/pragma.ts +0 -34
  338. package/src/planner/building/schema-resolution.ts +0 -176
  339. package/src/planner/building/select-aggregates.ts +0 -318
  340. package/src/planner/building/select-compound.ts +0 -119
  341. package/src/planner/building/select-context.ts +0 -85
  342. package/src/planner/building/select-modifiers.ts +0 -236
  343. package/src/planner/building/select-projections.ts +0 -177
  344. package/src/planner/building/select-window.ts +0 -259
  345. package/src/planner/building/select.ts +0 -567
  346. package/src/planner/building/table-function.ts +0 -49
  347. package/src/planner/building/table.ts +0 -40
  348. package/src/planner/building/transaction.ts +0 -23
  349. package/src/planner/building/update.ts +0 -331
  350. package/src/planner/building/with.ts +0 -180
  351. package/src/planner/cache/correlation-detector.ts +0 -83
  352. package/src/planner/cache/materialization-advisory.ts +0 -265
  353. package/src/planner/cache/reference-graph.ts +0 -196
  354. package/src/planner/cost/index.ts +0 -169
  355. package/src/planner/debug/logger-utils.ts +0 -68
  356. package/src/planner/debug.ts +0 -480
  357. package/src/planner/framework/README.md +0 -132
  358. package/src/planner/framework/characteristics.ts +0 -503
  359. package/src/planner/framework/context.ts +0 -239
  360. package/src/planner/framework/pass.ts +0 -354
  361. package/src/planner/framework/physical-utils.ts +0 -210
  362. package/src/planner/framework/registry.ts +0 -261
  363. package/src/planner/framework/trace.ts +0 -259
  364. package/src/planner/nodes/add-constraint-node.ts +0 -62
  365. package/src/planner/nodes/aggregate-function.ts +0 -155
  366. package/src/planner/nodes/aggregate-node.ts +0 -267
  367. package/src/planner/nodes/array-index-node.ts +0 -50
  368. package/src/planner/nodes/block.ts +0 -80
  369. package/src/planner/nodes/cache-node.ts +0 -103
  370. package/src/planner/nodes/constraint-check-node.ts +0 -138
  371. package/src/planner/nodes/create-assertion-node.ts +0 -51
  372. package/src/planner/nodes/create-index-node.ts +0 -41
  373. package/src/planner/nodes/create-table-node.ts +0 -35
  374. package/src/planner/nodes/create-view-node.ts +0 -44
  375. package/src/planner/nodes/cte-node.ts +0 -168
  376. package/src/planner/nodes/cte-reference-node.ts +0 -125
  377. package/src/planner/nodes/declarative-schema.ts +0 -221
  378. package/src/planner/nodes/delete-node.ts +0 -102
  379. package/src/planner/nodes/distinct-node.ts +0 -107
  380. package/src/planner/nodes/dml-executor-node.ts +0 -104
  381. package/src/planner/nodes/drop-assertion-node.ts +0 -50
  382. package/src/planner/nodes/drop-table-node.ts +0 -36
  383. package/src/planner/nodes/drop-view-node.ts +0 -37
  384. package/src/planner/nodes/filter.ts +0 -144
  385. package/src/planner/nodes/function.ts +0 -98
  386. package/src/planner/nodes/insert-node.ts +0 -126
  387. package/src/planner/nodes/internal-recursive-cte-ref-node.ts +0 -61
  388. package/src/planner/nodes/join-node.ts +0 -336
  389. package/src/planner/nodes/limit-offset.ts +0 -144
  390. package/src/planner/nodes/plan-node-type.ts +0 -95
  391. package/src/planner/nodes/plan-node.ts +0 -503
  392. package/src/planner/nodes/pragma.ts +0 -98
  393. package/src/planner/nodes/project-node.ts +0 -337
  394. package/src/planner/nodes/recursive-cte-node.ts +0 -158
  395. package/src/planner/nodes/reference.ts +0 -334
  396. package/src/planner/nodes/remote-query-node.ts +0 -73
  397. package/src/planner/nodes/retrieve-node.ts +0 -86
  398. package/src/planner/nodes/returning-node.ts +0 -269
  399. package/src/planner/nodes/scalar.ts +0 -772
  400. package/src/planner/nodes/sequencing-node.ts +0 -113
  401. package/src/planner/nodes/set-operation-node.ts +0 -87
  402. package/src/planner/nodes/single-row.ts +0 -85
  403. package/src/planner/nodes/sink-node.ts +0 -61
  404. package/src/planner/nodes/sort.ts +0 -166
  405. package/src/planner/nodes/stream-aggregate.ts +0 -293
  406. package/src/planner/nodes/subquery.ts +0 -268
  407. package/src/planner/nodes/table-access-nodes.ts +0 -323
  408. package/src/planner/nodes/table-function-call.ts +0 -134
  409. package/src/planner/nodes/transaction-node.ts +0 -55
  410. package/src/planner/nodes/update-node.ts +0 -138
  411. package/src/planner/nodes/values-node.ts +0 -244
  412. package/src/planner/nodes/view-reference-node.ts +0 -97
  413. package/src/planner/nodes/window-function.ts +0 -73
  414. package/src/planner/nodes/window-node.ts +0 -199
  415. package/src/planner/optimizer-tuning.ts +0 -105
  416. package/src/planner/optimizer.ts +0 -332
  417. package/src/planner/planning-context.ts +0 -190
  418. package/src/planner/resolve.ts +0 -101
  419. package/src/planner/rules/README.md +0 -96
  420. package/src/planner/rules/access/rule-select-access-path.ts +0 -399
  421. package/src/planner/rules/aggregate/rule-aggregate-streaming.ts +0 -162
  422. package/src/planner/rules/cache/rule-cte-optimization.ts +0 -79
  423. package/src/planner/rules/cache/rule-materialization-advisory.ts +0 -77
  424. package/src/planner/rules/cache/rule-mutating-subquery-cache.ts +0 -104
  425. package/src/planner/rules/join/rule-join-greedy-commute.ts +0 -48
  426. package/src/planner/rules/join/rule-join-key-inference.ts +0 -35
  427. package/src/planner/rules/join/rule-quickpick-enumeration.ts +0 -267
  428. package/src/planner/rules/predicate/rule-predicate-pushdown.ts +0 -144
  429. package/src/planner/rules/retrieve/rule-grow-retrieve.ts +0 -337
  430. package/src/planner/scopes/aliased.ts +0 -50
  431. package/src/planner/scopes/base.ts +0 -10
  432. package/src/planner/scopes/empty.ts +0 -12
  433. package/src/planner/scopes/global.ts +0 -73
  434. package/src/planner/scopes/multi.ts +0 -40
  435. package/src/planner/scopes/param.ts +0 -95
  436. package/src/planner/scopes/registered.ts +0 -67
  437. package/src/planner/scopes/scope.ts +0 -16
  438. package/src/planner/stats/basic-estimates.ts +0 -107
  439. package/src/planner/stats/index.ts +0 -158
  440. package/src/planner/type-utils.ts +0 -87
  441. package/src/planner/util/key-utils.ts +0 -46
  442. package/src/planner/validation/determinism-validator.ts +0 -104
  443. package/src/planner/validation/plan-validator.ts +0 -335
  444. package/src/runtime/async-util.ts +0 -283
  445. package/src/runtime/cache/shared-cache.ts +0 -169
  446. package/src/runtime/context-helpers.ts +0 -191
  447. package/src/runtime/deferred-constraint-queue.ts +0 -196
  448. package/src/runtime/emission-context.ts +0 -319
  449. package/src/runtime/emit/add-constraint.ts +0 -78
  450. package/src/runtime/emit/aggregate.ts +0 -581
  451. package/src/runtime/emit/array-index.ts +0 -25
  452. package/src/runtime/emit/between.ts +0 -51
  453. package/src/runtime/emit/binary.ts +0 -357
  454. package/src/runtime/emit/block.ts +0 -23
  455. package/src/runtime/emit/cache.ts +0 -64
  456. package/src/runtime/emit/case.ts +0 -87
  457. package/src/runtime/emit/cast.ts +0 -151
  458. package/src/runtime/emit/collate.ts +0 -9
  459. package/src/runtime/emit/column-reference.ts +0 -17
  460. package/src/runtime/emit/constraint-check.ts +0 -290
  461. package/src/runtime/emit/create-assertion.ts +0 -82
  462. package/src/runtime/emit/create-index.ts +0 -15
  463. package/src/runtime/emit/create-table.ts +0 -15
  464. package/src/runtime/emit/create-view.ts +0 -52
  465. package/src/runtime/emit/cte-reference.ts +0 -38
  466. package/src/runtime/emit/cte.ts +0 -39
  467. package/src/runtime/emit/delete.ts +0 -24
  468. package/src/runtime/emit/distinct.ts +0 -40
  469. package/src/runtime/emit/dml-executor.ts +0 -198
  470. package/src/runtime/emit/drop-assertion.ts +0 -45
  471. package/src/runtime/emit/drop-table.ts +0 -27
  472. package/src/runtime/emit/drop-view.ts +0 -49
  473. package/src/runtime/emit/filter.ts +0 -30
  474. package/src/runtime/emit/insert.ts +0 -42
  475. package/src/runtime/emit/internal-recursive-cte-ref.ts +0 -37
  476. package/src/runtime/emit/join.ts +0 -148
  477. package/src/runtime/emit/limit-offset.ts +0 -73
  478. package/src/runtime/emit/literal.ts +0 -17
  479. package/src/runtime/emit/parameter.ts +0 -59
  480. package/src/runtime/emit/pragma.ts +0 -56
  481. package/src/runtime/emit/project.ts +0 -46
  482. package/src/runtime/emit/recursive-cte.ts +0 -111
  483. package/src/runtime/emit/remote-query.ts +0 -47
  484. package/src/runtime/emit/retrieve.ts +0 -15
  485. package/src/runtime/emit/returning.ts +0 -41
  486. package/src/runtime/emit/scalar-function.ts +0 -69
  487. package/src/runtime/emit/scan.ts +0 -106
  488. package/src/runtime/emit/schema-declarative.ts +0 -215
  489. package/src/runtime/emit/sequencing.ts +0 -24
  490. package/src/runtime/emit/set-operation.ts +0 -141
  491. package/src/runtime/emit/sink.ts +0 -27
  492. package/src/runtime/emit/sort.ts +0 -75
  493. package/src/runtime/emit/subquery.ts +0 -203
  494. package/src/runtime/emit/table-valued-function.ts +0 -106
  495. package/src/runtime/emit/temporal-arithmetic.ts +0 -302
  496. package/src/runtime/emit/transaction.ts +0 -205
  497. package/src/runtime/emit/unary.ts +0 -101
  498. package/src/runtime/emit/update.ts +0 -66
  499. package/src/runtime/emit/values.ts +0 -66
  500. package/src/runtime/emit/window-function.ts +0 -42
  501. package/src/runtime/emit/window.ts +0 -458
  502. package/src/runtime/emitters.ts +0 -183
  503. package/src/runtime/register.ts +0 -150
  504. package/src/runtime/scheduler.ts +0 -488
  505. package/src/runtime/types.ts +0 -242
  506. package/src/runtime/utils.ts +0 -177
  507. package/src/schema/assertion.ts +0 -21
  508. package/src/schema/catalog.ts +0 -269
  509. package/src/schema/change-events.ts +0 -80
  510. package/src/schema/column.ts +0 -51
  511. package/src/schema/declared-schema-manager.ts +0 -82
  512. package/src/schema/function.ts +0 -188
  513. package/src/schema/manager.ts +0 -1034
  514. package/src/schema/schema-differ.ts +0 -214
  515. package/src/schema/schema-hasher.ts +0 -26
  516. package/src/schema/schema.ts +0 -222
  517. package/src/schema/table.ts +0 -409
  518. package/src/schema/view.ts +0 -19
  519. package/src/schema/window-function.ts +0 -56
  520. package/src/types/builtin-types.ts +0 -350
  521. package/src/types/index.ts +0 -17
  522. package/src/types/json-type.ts +0 -152
  523. package/src/types/logical-type.ts +0 -91
  524. package/src/types/plugin-interface.ts +0 -10
  525. package/src/types/registry.ts +0 -204
  526. package/src/types/temporal-types.ts +0 -290
  527. package/src/types/validation.ts +0 -120
  528. package/src/util/affinity.ts +0 -151
  529. package/src/util/ast-stringify.ts +0 -887
  530. package/src/util/cached.ts +0 -25
  531. package/src/util/coercion.ts +0 -113
  532. package/src/util/comparison.ts +0 -510
  533. package/src/util/environment.ts +0 -52
  534. package/src/util/hash.ts +0 -90
  535. package/src/util/latches.ts +0 -47
  536. package/src/util/mutation-statement.ts +0 -135
  537. package/src/util/patterns.ts +0 -56
  538. package/src/util/plan-formatter.ts +0 -48
  539. package/src/util/plugin-helper.ts +0 -110
  540. package/src/util/row-descriptor.ts +0 -105
  541. package/src/util/serialization.ts +0 -47
  542. package/src/util/sql-literal.ts +0 -22
  543. package/src/util/working-table-iterable.ts +0 -38
  544. package/src/vtab/best-access-plan.ts +0 -244
  545. package/src/vtab/connection.ts +0 -36
  546. package/src/vtab/filter-info.ts +0 -23
  547. package/src/vtab/index-info.ts +0 -84
  548. package/src/vtab/manifest.ts +0 -86
  549. package/src/vtab/memory/connection.ts +0 -73
  550. package/src/vtab/memory/index.ts +0 -191
  551. package/src/vtab/memory/layer/base-cursor.ts +0 -124
  552. package/src/vtab/memory/layer/base.ts +0 -275
  553. package/src/vtab/memory/layer/connection.ts +0 -203
  554. package/src/vtab/memory/layer/interface.ts +0 -47
  555. package/src/vtab/memory/layer/manager.ts +0 -909
  556. package/src/vtab/memory/layer/safe-iterate.ts +0 -49
  557. package/src/vtab/memory/layer/scan-plan.ts +0 -84
  558. package/src/vtab/memory/layer/transaction-cursor.ts +0 -162
  559. package/src/vtab/memory/layer/transaction.ts +0 -229
  560. package/src/vtab/memory/module.ts +0 -667
  561. package/src/vtab/memory/table.ts +0 -251
  562. package/src/vtab/memory/types.ts +0 -23
  563. package/src/vtab/memory/utils/logging.ts +0 -36
  564. package/src/vtab/memory/utils/primary-key.ts +0 -163
  565. package/src/vtab/module.ts +0 -162
  566. package/src/vtab/table.ts +0 -177
@@ -1,435 +0,0 @@
1
- import type * as AST from '../../parser/ast.js';
2
- import type { PlanningContext } from '../planning-context.js';
3
- import { InsertNode } from '../nodes/insert-node.js';
4
- import { buildTableReference } from './table.js';
5
- import { QuereusError } from '../../common/errors.js';
6
- import { StatusCode } from '../../common/types.js';
7
- import { buildSelectStmt } from './select.js';
8
- import { buildWithClause } from './with.js';
9
- import { ValuesNode } from '../nodes/values-node.js';
10
- import { PlanNode, type RelationalPlanNode, type ScalarPlanNode, type Attribute, type RowDescriptor } from '../nodes/plan-node.js';
11
- import { buildExpression } from './expression.js';
12
- import { checkColumnsAssignable, columnSchemaToDef } from '../type-utils.js';
13
- import type { ColumnDef } from '../../common/datatype.js';
14
- import type { CTEScopeNode } from '../nodes/cte-node.js';
15
- import { RegisteredScope } from '../scopes/registered.js';
16
- import { ColumnReferenceNode, TableReferenceNode } from '../nodes/reference.js';
17
- import { SinkNode } from '../nodes/sink-node.js';
18
- import { ConstraintCheckNode } from '../nodes/constraint-check-node.js';
19
- import { RowOpFlag } from '../../schema/table.js';
20
- import { ReturningNode } from '../nodes/returning-node.js';
21
- import { ProjectNode, type Projection } from '../nodes/project-node.js';
22
- import { buildOldNewRowDescriptors } from '../../util/row-descriptor.js';
23
- import { DmlExecutorNode } from '../nodes/dml-executor-node.js';
24
- import { buildConstraintChecks } from './constraint-builder.js';
25
- import { validateDeterministicDefault } from '../validation/determinism-validator.js';
26
-
27
- /**
28
- * Creates a uniform row expansion projection that maps any relational source
29
- * to the target table's column structure, filling in defaults for omitted columns.
30
- * This ensures INSERT works orthogonally with any relational source.
31
- */
32
- function createRowExpansionProjection(
33
- ctx: PlanningContext,
34
- sourceNode: RelationalPlanNode,
35
- targetColumns: ColumnDef[],
36
- tableReference: TableReferenceNode,
37
- contextScope?: RegisteredScope
38
- ): RelationalPlanNode {
39
- const tableSchema = tableReference.tableSchema;
40
-
41
- // If we're inserting into all columns in table order, no expansion needed
42
- if (targetColumns.length === tableSchema.columns.length) {
43
- const allColumnsMatch = targetColumns.every((tc, i) =>
44
- tc.name.toLowerCase() === tableSchema.columns[i].name.toLowerCase()
45
- );
46
- if (allColumnsMatch) {
47
- return sourceNode; // Source already matches table structure
48
- }
49
- }
50
-
51
- // Create projection expressions for each table column
52
- const projections: Projection[] = [];
53
- const sourceAttributes = sourceNode.getAttributes();
54
-
55
- // If we have a context scope, we need to also register source columns in it
56
- // so that defaults can reference them (e.g., DEFAULT base_price + markup)
57
- if (contextScope) {
58
- targetColumns.forEach((targetCol, index) => {
59
- if (index < sourceAttributes.length) {
60
- const sourceAttr = sourceAttributes[index];
61
- const colNameLower = targetCol.name.toLowerCase();
62
- contextScope.registerSymbol(colNameLower, (exp, s) =>
63
- new ColumnReferenceNode(s, exp as AST.ColumnExpr, sourceAttr.type, sourceAttr.id, index)
64
- );
65
- }
66
- });
67
- }
68
-
69
- tableSchema.columns.forEach((tableColumn) => {
70
- // Find if this table column is in the target columns
71
- const targetColIndex = targetColumns.findIndex(tc =>
72
- tc.name.toLowerCase() === tableColumn.name.toLowerCase()
73
- );
74
-
75
- if (targetColIndex >= 0) {
76
- // This column is provided by the source - reference the source column
77
- if (targetColIndex < sourceAttributes.length) {
78
- const sourceAttr = sourceAttributes[targetColIndex];
79
- // Create a column reference to the source attribute
80
- const columnRef = new ColumnReferenceNode(
81
- ctx.scope,
82
- { type: 'column', name: sourceAttr.name } satisfies AST.ColumnExpr,
83
- sourceAttr.type,
84
- sourceAttr.id,
85
- targetColIndex
86
- );
87
- projections.push({
88
- node: columnRef,
89
- alias: tableColumn.name
90
- });
91
- } else {
92
- throw new QuereusError(
93
- `Source has fewer columns than expected for INSERT target columns`,
94
- StatusCode.ERROR
95
- );
96
- }
97
- } else {
98
- // This column is omitted - use default value or NULL
99
- let defaultNode: ScalarPlanNode;
100
- // Use context scope for default evaluation if available
101
- const defaultCtx = contextScope ? { ...ctx, scope: contextScope } : ctx;
102
- if (tableColumn.defaultValue !== undefined) {
103
- // Use default value
104
- if (typeof tableColumn.defaultValue === 'object' && tableColumn.defaultValue !== null && 'type' in tableColumn.defaultValue) {
105
- // It's an AST.Expression - build it into a plan node with context scope
106
- defaultNode = buildExpression(defaultCtx, tableColumn.defaultValue as AST.Expression) as ScalarPlanNode;
107
-
108
- // Validate that the default expression is deterministic
109
- validateDeterministicDefault(defaultNode, tableColumn.name, tableSchema.name);
110
- } else {
111
- // Literal default value
112
- defaultNode = buildExpression(defaultCtx, { type: 'literal', value: tableColumn.defaultValue }) as ScalarPlanNode;
113
- }
114
- } else {
115
- // No default value - use NULL
116
- defaultNode = buildExpression(defaultCtx, { type: 'literal', value: null }) as ScalarPlanNode;
117
- }
118
- projections.push({
119
- node: defaultNode,
120
- alias: tableColumn.name
121
- });
122
- }
123
- });
124
-
125
- // Create projection node that expands source to table structure
126
- return new ProjectNode(ctx.scope, sourceNode, projections);
127
- }
128
-
129
- /**
130
- * Validates that RETURNING expressions use appropriate NEW/OLD qualifiers for the operation type
131
- */
132
- function validateReturningExpression(expr: AST.Expression, operationType: 'INSERT' | 'UPDATE' | 'DELETE'): void {
133
- function checkExpression(e: AST.Expression): void {
134
- if (e.type === 'column') {
135
- if (e.table?.toLowerCase() === 'old' && operationType === 'INSERT') {
136
- throw new QuereusError(
137
- 'OLD qualifier cannot be used in INSERT RETURNING clause',
138
- StatusCode.ERROR
139
- );
140
- }
141
- if (e.table?.toLowerCase() === 'new' && operationType === 'DELETE') {
142
- throw new QuereusError(
143
- 'NEW qualifier cannot be used in DELETE RETURNING clause',
144
- StatusCode.ERROR
145
- );
146
- }
147
- } else if (e.type === 'binary') {
148
- checkExpression(e.left);
149
- checkExpression(e.right);
150
- } else if (e.type === 'unary') {
151
- checkExpression(e.expr);
152
- } else if (e.type === 'function') {
153
- e.args.forEach(checkExpression);
154
- } else if (e.type === 'case') {
155
- if (e.baseExpr) checkExpression(e.baseExpr);
156
- e.whenThenClauses.forEach(clause => {
157
- checkExpression(clause.when);
158
- checkExpression(clause.then);
159
- });
160
- if (e.elseExpr) checkExpression(e.elseExpr);
161
- } else if (e.type === 'cast') {
162
- checkExpression(e.expr);
163
- } else if (e.type === 'collate') {
164
- checkExpression(e.expr);
165
- } else if (e.type === 'subquery') {
166
- // Subqueries in RETURNING are complex - for now, we'll skip validation
167
- // A full implementation would need to traverse the subquery's AST
168
- } else if (e.type === 'in') {
169
- checkExpression(e.expr);
170
- if (e.values) {
171
- e.values.forEach(checkExpression);
172
- }
173
- } else if (e.type === 'exists') {
174
- // EXISTS subqueries are complex - skip validation for now
175
- } else if (e.type === 'windowFunction') {
176
- checkExpression(e.function);
177
- }
178
- // Other expression types (literal, parameter) don't need validation
179
- }
180
-
181
- checkExpression(expr);
182
- }
183
-
184
- export function buildInsertStmt(
185
- ctx: PlanningContext,
186
- stmt: AST.InsertStmt,
187
- ): PlanNode {
188
- const tableRetrieve = buildTableReference({ type: 'table', table: stmt.table }, ctx);
189
- const tableReference = tableRetrieve.tableRef; // Extract the actual TableReferenceNode
190
-
191
- // Process mutation context assignments if present
192
- const mutationContextValues = new Map<string, ScalarPlanNode>();
193
- const contextAttributes: Attribute[] = [];
194
- let contextScope: RegisteredScope | undefined;
195
-
196
- if (stmt.contextValues && tableReference.tableSchema.mutationContext) {
197
- // Create context attributes
198
- tableReference.tableSchema.mutationContext.forEach((contextVar) => {
199
- contextAttributes.push({
200
- id: PlanNode.nextAttrId(),
201
- name: contextVar.name,
202
- type: {
203
- typeClass: 'scalar' as const,
204
- logicalType: contextVar.logicalType,
205
- nullable: !contextVar.notNull,
206
- isReadOnly: true
207
- },
208
- sourceRelation: `context.${tableReference.tableSchema.name}`
209
- });
210
- });
211
-
212
- // Create a new scope for mutation context
213
- contextScope = new RegisteredScope(ctx.scope);
214
-
215
- // Register mutation context variables in the scope (before evaluating expressions)
216
- contextAttributes.forEach((attr, index) => {
217
- const contextVar = tableReference.tableSchema.mutationContext![index];
218
- const varNameLower = contextVar.name.toLowerCase();
219
-
220
- // Register both unqualified and qualified names
221
- contextScope!.subscribeFactory(varNameLower, (exp, s) =>
222
- new ColumnReferenceNode(s, exp as AST.ColumnExpr, attr.type, attr.id, index)
223
- );
224
- contextScope!.subscribeFactory(`context.${varNameLower}`, (exp, s) =>
225
- new ColumnReferenceNode(s, exp as AST.ColumnExpr, attr.type, attr.id, index)
226
- );
227
- });
228
-
229
- // Build context value expressions using the context scope
230
- const contextWithScope = { ...ctx, scope: contextScope };
231
- stmt.contextValues.forEach((assignment) => {
232
- const valueExpr = buildExpression(contextWithScope, assignment.value) as ScalarPlanNode;
233
- mutationContextValues.set(assignment.name, valueExpr);
234
- });
235
- }
236
-
237
- let targetColumns: ColumnDef[] = [];
238
- if (stmt.columns && stmt.columns.length > 0) {
239
- // Explicit columns specified
240
- targetColumns = stmt.columns.map((colName, index) => columnSchemaToDef(colName, tableReference.tableSchema.columns[index]));
241
- } else {
242
- // No explicit columns - default to all table columns in order
243
- targetColumns = tableReference.tableSchema.columns.map(col => columnSchemaToDef(col.name, col));
244
- }
245
-
246
- let sourceNode: RelationalPlanNode;
247
-
248
- if (stmt.values) {
249
- // VALUES clause - build the VALUES node
250
- const rows = stmt.values.map(rowExprs =>
251
- rowExprs.map(expr => buildExpression(ctx, expr) as PlanNode as ScalarPlanNode)
252
- );
253
-
254
- // Check that there are the right number of columns in each row
255
- rows.forEach(row => {
256
- if (row.length !== targetColumns.length) {
257
- throw new QuereusError(`Column count mismatch in VALUES clause. Expected ${targetColumns.length} columns, got ${row.length}.`, StatusCode.ERROR, undefined, stmt.loc?.start.line, stmt.loc?.start.column);
258
- }
259
- });
260
-
261
- // Create VALUES node with target column names
262
- const targetColumnNames = targetColumns.map(col => col.name);
263
- sourceNode = new ValuesNode(ctx.scope, rows, targetColumnNames);
264
-
265
- } else if (stmt.select) {
266
- // SELECT clause - build the SELECT statement
267
- let parentCtes: Map<string, CTEScopeNode> = new Map();
268
- if (stmt.withClause) {
269
- parentCtes = buildWithClause(ctx, stmt.withClause);
270
- }
271
- const selectPlan = buildSelectStmt(ctx, stmt.select, parentCtes);
272
- if (selectPlan.getType().typeClass !== 'relation') {
273
- throw new QuereusError('SELECT statement in INSERT did not produce a relational plan.', StatusCode.INTERNAL, undefined, stmt.loc?.start.line, stmt.loc?.start.column);
274
- }
275
- sourceNode = selectPlan as RelationalPlanNode;
276
- checkColumnsAssignable(sourceNode.getType().columns, targetColumns, stmt);
277
-
278
- } else {
279
- throw new QuereusError('INSERT statement must have a VALUES clause or a SELECT query.', StatusCode.ERROR);
280
- }
281
-
282
- // ORTHOGONAL ROW EXPANSION: Apply uniform row expansion to map any source to table structure with defaults
283
- const expandedSourceNode = createRowExpansionProjection(ctx, sourceNode, targetColumns, tableReference, contextScope);
284
-
285
- // Update targetColumns to reflect all table columns since we've expanded the source
286
- const finalTargetColumns = tableReference.tableSchema.columns.map(col => columnSchemaToDef(col.name, col));
287
-
288
- // Create OLD/NEW attributes for INSERT (OLD = all NULL, NEW = actual values)
289
- const oldAttributes = tableReference.tableSchema.columns.map((col) => ({
290
- id: PlanNode.nextAttrId(),
291
- name: col.name,
292
- type: {
293
- typeClass: 'scalar' as const,
294
- logicalType: col.logicalType,
295
- nullable: true, // OLD values are always NULL for INSERT
296
- isReadOnly: false
297
- },
298
- sourceRelation: `OLD.${tableReference.tableSchema.name}`
299
- }));
300
-
301
- const newAttributes = tableReference.tableSchema.columns.map((col) => ({
302
- id: PlanNode.nextAttrId(),
303
- name: col.name,
304
- type: {
305
- typeClass: 'scalar' as const,
306
- logicalType: col.logicalType,
307
- nullable: !col.notNull,
308
- isReadOnly: false
309
- },
310
- sourceRelation: `NEW.${tableReference.tableSchema.name}`
311
- }));
312
-
313
- const { oldRowDescriptor, newRowDescriptor, flatRowDescriptor } = buildOldNewRowDescriptors(oldAttributes, newAttributes);
314
-
315
- // Build context descriptor if we have context attributes
316
- const contextDescriptor: RowDescriptor = contextAttributes.length > 0 ? [] : undefined as any;
317
- if (contextDescriptor) {
318
- contextAttributes.forEach((attr, index) => {
319
- contextDescriptor[attr.id] = index;
320
- });
321
- }
322
-
323
- // Build constraint checks at plan time
324
- const constraintChecks = buildConstraintChecks(
325
- ctx,
326
- tableReference.tableSchema,
327
- RowOpFlag.INSERT,
328
- oldAttributes,
329
- newAttributes,
330
- flatRowDescriptor,
331
- contextAttributes
332
- );
333
-
334
- const insertNode = new InsertNode(
335
- ctx.scope,
336
- tableReference,
337
- finalTargetColumns,
338
- expandedSourceNode,
339
- flatRowDescriptor,
340
- mutationContextValues.size > 0 ? mutationContextValues : undefined,
341
- contextAttributes.length > 0 ? contextAttributes : undefined,
342
- contextDescriptor
343
- );
344
-
345
- const constraintCheckNode = new ConstraintCheckNode(
346
- ctx.scope,
347
- insertNode,
348
- tableReference,
349
- RowOpFlag.INSERT,
350
- oldRowDescriptor,
351
- newRowDescriptor,
352
- flatRowDescriptor,
353
- constraintChecks,
354
- mutationContextValues.size > 0 ? mutationContextValues : undefined,
355
- contextAttributes.length > 0 ? contextAttributes : undefined,
356
- contextDescriptor
357
- );
358
-
359
- // Add DML executor node to perform the actual database insert operations
360
- const dmlExecutorNode = new DmlExecutorNode(
361
- ctx.scope,
362
- constraintCheckNode,
363
- tableReference,
364
- 'insert',
365
- stmt.onConflict,
366
- mutationContextValues.size > 0 ? mutationContextValues : undefined,
367
- contextAttributes.length > 0 ? contextAttributes : undefined,
368
- contextDescriptor
369
- );
370
-
371
- const resultNode: RelationalPlanNode = dmlExecutorNode;
372
-
373
- if (stmt.returning && stmt.returning.length > 0) {
374
- // Create returning scope with OLD/NEW attribute access
375
- const returningScope = new RegisteredScope(ctx.scope);
376
-
377
- // Register OLD.* symbols (always NULL for INSERT)
378
- oldAttributes.forEach((attr, columnIndex) => {
379
- const tableColumn = tableReference.tableSchema.columns[columnIndex];
380
- returningScope.registerSymbol(`old.${tableColumn.name.toLowerCase()}`, (exp, s) =>
381
- new ColumnReferenceNode(s, exp as AST.ColumnExpr, attr.type, attr.id, columnIndex)
382
- );
383
- });
384
-
385
- // Register NEW.* symbols and unqualified column names (default to NEW)
386
- newAttributes.forEach((attr, columnIndex) => {
387
- const tableColumn = tableReference.tableSchema.columns[columnIndex];
388
-
389
- // NEW.column
390
- returningScope.registerSymbol(`new.${tableColumn.name.toLowerCase()}`, (exp, s) =>
391
- new ColumnReferenceNode(s, exp as AST.ColumnExpr, attr.type, attr.id, columnIndex)
392
- );
393
-
394
- // Unqualified column (defaults to NEW)
395
- returningScope.registerSymbol(tableColumn.name.toLowerCase(), (exp, s) =>
396
- new ColumnReferenceNode(s, exp as AST.ColumnExpr, attr.type, attr.id, columnIndex)
397
- );
398
-
399
- // Table-qualified form (table.column -> NEW)
400
- const tblQualified = `${tableReference.tableSchema.name.toLowerCase()}.${tableColumn.name.toLowerCase()}`;
401
- returningScope.registerSymbol(tblQualified, (exp, s) =>
402
- new ColumnReferenceNode(s, exp as AST.ColumnExpr, attr.type, attr.id, columnIndex)
403
- );
404
- });
405
-
406
- // Build RETURNING projections in the OLD/NEW context
407
- const returningProjections = stmt.returning.map(rc => {
408
- // TODO: Support RETURNING *
409
- if (rc.type === 'all') throw new QuereusError('RETURNING * not yet supported', StatusCode.UNSUPPORTED);
410
-
411
- // Infer alias from column name if not explicitly provided
412
- let alias = rc.alias;
413
- if (!alias && rc.expr.type === 'column') {
414
- // For qualified column references like NEW.id, normalize to lowercase
415
- if (rc.expr.table) {
416
- alias = `${rc.expr.table.toLowerCase()}.${rc.expr.name.toLowerCase()}`;
417
- } else {
418
- alias = rc.expr.name.toLowerCase();
419
- }
420
- }
421
-
422
- // Validate that OLD references are not used in INSERT RETURNING
423
- validateReturningExpression(rc.expr, 'INSERT');
424
-
425
- return {
426
- node: buildExpression({ ...ctx, scope: returningScope }, rc.expr) as ScalarPlanNode,
427
- alias: alias
428
- };
429
- });
430
-
431
- return new ReturningNode(ctx.scope, dmlExecutorNode, returningProjections);
432
- }
433
-
434
- return new SinkNode(ctx.scope, resultNode, 'insert');
435
- }
@@ -1,34 +0,0 @@
1
- import type { PlanningContext } from '../planning-context.js';
2
- import * as AST from '../../parser/ast.js';
3
- import { QuereusError } from '../../common/errors.js';
4
- import { StatusCode, type SqlValue } from '../../common/types.js';
5
- import { PragmaPlanNode } from '../nodes/pragma.js';
6
- import { SinkNode } from '../nodes/sink-node.js';
7
- import { getSyncLiteral } from '../../parser/utils.js';
8
- import type { PlanNode } from '../nodes/plan-node.js';
9
-
10
- export function buildPragmaStmt(ctx: PlanningContext, stmt: AST.PragmaStmt): PlanNode {
11
- const pragmaName = stmt.name.toLowerCase();
12
-
13
- let value: SqlValue | undefined;
14
- if (stmt.value) {
15
- if (stmt.value.type === 'literal') {
16
- value = getSyncLiteral(stmt.value);
17
- } else if (stmt.value.type === 'identifier') {
18
- value = stmt.value.name;
19
- } else {
20
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
21
- throw new QuereusError(`Unsupported PRAGMA value type: ${(stmt.value as any).type}`, StatusCode.ERROR);
22
- }
23
- }
24
-
25
- const pragmaNode = new PragmaPlanNode(ctx.scope, pragmaName, stmt, value);
26
-
27
- // If this is a setting operation (has a value), wrap with SinkNode to ensure execution
28
- if (value !== undefined) {
29
- return new SinkNode(ctx.scope, pragmaNode, 'pragma-set');
30
- }
31
-
32
- // Reading operation - return the PRAGMA node directly
33
- return pragmaNode;
34
- }
@@ -1,176 +0,0 @@
1
- import type { PlanningContext, SchemaDependency } from '../planning-context.js';
2
- import type { TableSchema } from '../../schema/table.js';
3
- import type { FunctionSchema } from '../../schema/function.js';
4
- import type { AnyVirtualTableModule } from '../../vtab/module.js';
5
- import type { CollationFunction } from '../../util/comparison.js';
6
- import { QuereusError } from '../../common/errors.js';
7
- import { StatusCode } from '../../common/types.js';
8
- import { createLogger } from '../../common/logger.js';
9
-
10
- const log = createLogger('planner:schema-resolution');
11
-
12
- /**
13
- * Resolves a table schema at build time and records the dependency.
14
- */
15
- export function resolveTableSchema(
16
- ctx: PlanningContext,
17
- tableName: string,
18
- schemaName?: string
19
- ): TableSchema {
20
- const resolvedSchemaName = schemaName || ctx.db.schemaManager.getCurrentSchemaName();
21
- const cacheKey = `table:${resolvedSchemaName}:${tableName}`;
22
-
23
- // Check cache first
24
- const cached = ctx.schemaCache.get(cacheKey);
25
- if (cached) {
26
- log('Using cached table schema: %s.%s', resolvedSchemaName, tableName);
27
- return cached as TableSchema;
28
- }
29
-
30
- // Resolve table schema
31
- const tableSchema = ctx.schemaManager.findTable(tableName, resolvedSchemaName);
32
- if (!tableSchema) {
33
- throw new QuereusError(
34
- `Table not found: ${resolvedSchemaName}.${tableName}`,
35
- StatusCode.ERROR
36
- );
37
- }
38
-
39
- // Record dependency
40
- const dependency: SchemaDependency = {
41
- type: 'table',
42
- schemaName: tableSchema.schemaName,
43
- objectName: tableSchema.name
44
- };
45
- ctx.schemaDependencies.recordDependency(dependency, tableSchema);
46
-
47
- // Cache result
48
- ctx.schemaCache.set(cacheKey, tableSchema);
49
-
50
- log('Resolved table schema: %s.%s', tableSchema.schemaName, tableSchema.name);
51
- return tableSchema;
52
- }
53
-
54
- /**
55
- * Resolves a function schema at build time and records the dependency.
56
- */
57
- export function resolveFunctionSchema(
58
- ctx: PlanningContext,
59
- funcName: string,
60
- numArgs: number
61
- ): FunctionSchema {
62
- const cacheKey = `function:${funcName}/${numArgs}`;
63
-
64
- // Check cache first
65
- const cached = ctx.schemaCache.get(cacheKey);
66
- if (cached) {
67
- log('Using cached function schema: %s/%d', funcName, numArgs);
68
- return cached as FunctionSchema;
69
- }
70
-
71
- // Resolve function schema - try exact match first
72
- let functionSchema = ctx.schemaManager.findFunction(funcName, numArgs);
73
-
74
- // If not found, try variable argument function
75
- if (!functionSchema) {
76
- functionSchema = ctx.schemaManager.findFunction(funcName, -1);
77
- }
78
-
79
- if (!functionSchema) {
80
- throw new QuereusError(
81
- `Function not found: ${funcName}/${numArgs}`,
82
- StatusCode.ERROR
83
- );
84
- }
85
-
86
- // Record dependency using the actual function's numArgs
87
- const dependency: SchemaDependency = {
88
- type: 'function',
89
- objectName: `${functionSchema.name}/${functionSchema.numArgs}`
90
- };
91
- ctx.schemaDependencies.recordDependency(dependency, functionSchema);
92
-
93
- // Cache result with the requested key for future lookups
94
- ctx.schemaCache.set(cacheKey, functionSchema);
95
-
96
- log('Resolved function schema: %s/%d', functionSchema.name, functionSchema.numArgs);
97
- return functionSchema;
98
- }
99
-
100
- /**
101
- * Resolves a virtual table module at build time and records the dependency.
102
- */
103
- export function resolveVtabModule(
104
- ctx: PlanningContext,
105
- moduleName: string
106
- ): { module: AnyVirtualTableModule, auxData?: unknown } {
107
- const cacheKey = `vtab_module:${moduleName}`;
108
-
109
- // Check cache first
110
- const cached = ctx.schemaCache.get(cacheKey);
111
- if (cached) {
112
- log('Using cached vtab module: %s', moduleName);
113
- return cached;
114
- }
115
-
116
- // Resolve vtab module
117
- const moduleInfo = ctx.schemaManager.getModule(moduleName);
118
- if (!moduleInfo) {
119
- throw new QuereusError(
120
- `Virtual table module not found: ${moduleName}`,
121
- StatusCode.ERROR
122
- );
123
- }
124
-
125
- // Record dependency
126
- const dependency: SchemaDependency = {
127
- type: 'vtab_module',
128
- objectName: moduleName
129
- };
130
- ctx.schemaDependencies.recordDependency(dependency, moduleInfo);
131
-
132
- // Cache result
133
- ctx.schemaCache.set(cacheKey, moduleInfo);
134
-
135
- log('Resolved vtab module: %s', moduleName);
136
- return moduleInfo;
137
- }
138
-
139
- /**
140
- * Resolves a collation function at build time and records the dependency.
141
- */
142
- export function resolveCollation(
143
- ctx: PlanningContext,
144
- collationName: string
145
- ): CollationFunction {
146
- const cacheKey = `collation:${collationName}`;
147
-
148
- // Check cache first
149
- const cached = ctx.schemaCache.get(cacheKey);
150
- if (cached) {
151
- log('Using cached collation: %s', collationName);
152
- return cached as CollationFunction;
153
- }
154
-
155
- // Resolve collation
156
- const collation = ctx.db._getCollation(collationName);
157
- if (!collation) {
158
- throw new QuereusError(
159
- `Collation not found: ${collationName}`,
160
- StatusCode.ERROR
161
- );
162
- }
163
-
164
- // Record dependency
165
- const dependency: SchemaDependency = {
166
- type: 'collation',
167
- objectName: collationName
168
- };
169
- ctx.schemaDependencies.recordDependency(dependency, collation);
170
-
171
- // Cache result
172
- ctx.schemaCache.set(cacheKey, collation);
173
-
174
- log('Resolved collation: %s', collationName);
175
- return collation;
176
- }