@quereus/quereus 4.3.2 → 4.4.1

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 (396) hide show
  1. package/README.md +5 -0
  2. package/dist/src/common/types.d.ts +9 -0
  3. package/dist/src/common/types.d.ts.map +1 -1
  4. package/dist/src/common/types.js.map +1 -1
  5. package/dist/src/core/database-events.d.ts +49 -0
  6. package/dist/src/core/database-events.d.ts.map +1 -1
  7. package/dist/src/core/database-events.js +148 -0
  8. package/dist/src/core/database-events.js.map +1 -1
  9. package/dist/src/core/database-external-changes.d.ts +2 -2
  10. package/dist/src/core/database-external-changes.d.ts.map +1 -1
  11. package/dist/src/core/database-external-changes.js +12 -9
  12. package/dist/src/core/database-external-changes.js.map +1 -1
  13. package/dist/src/core/database-materialized-views-apply.d.ts +156 -14
  14. package/dist/src/core/database-materialized-views-apply.d.ts.map +1 -1
  15. package/dist/src/core/database-materialized-views-apply.js +370 -65
  16. package/dist/src/core/database-materialized-views-apply.js.map +1 -1
  17. package/dist/src/core/database-materialized-views-plan-builders.d.ts +66 -1
  18. package/dist/src/core/database-materialized-views-plan-builders.d.ts.map +1 -1
  19. package/dist/src/core/database-materialized-views-plan-builders.js +368 -8
  20. package/dist/src/core/database-materialized-views-plan-builders.js.map +1 -1
  21. package/dist/src/core/database-materialized-views-plans.d.ts +257 -30
  22. package/dist/src/core/database-materialized-views-plans.d.ts.map +1 -1
  23. package/dist/src/core/database-materialized-views.d.ts +99 -42
  24. package/dist/src/core/database-materialized-views.d.ts.map +1 -1
  25. package/dist/src/core/database-materialized-views.js +198 -121
  26. package/dist/src/core/database-materialized-views.js.map +1 -1
  27. package/dist/src/core/database.d.ts +5 -0
  28. package/dist/src/core/database.d.ts.map +1 -1
  29. package/dist/src/core/database.js +41 -18
  30. package/dist/src/core/database.js.map +1 -1
  31. package/dist/src/core/internal-statement-cache.d.ts +18 -0
  32. package/dist/src/core/internal-statement-cache.d.ts.map +1 -0
  33. package/dist/src/core/internal-statement-cache.js +211 -0
  34. package/dist/src/core/internal-statement-cache.js.map +1 -0
  35. package/dist/src/func/builtins/aggregate.d.ts +13 -12
  36. package/dist/src/func/builtins/aggregate.d.ts.map +1 -1
  37. package/dist/src/func/builtins/aggregate.js +146 -62
  38. package/dist/src/func/builtins/aggregate.js.map +1 -1
  39. package/dist/src/func/builtins/builtin-window-functions.d.ts.map +1 -1
  40. package/dist/src/func/builtins/builtin-window-functions.js +63 -48
  41. package/dist/src/func/builtins/builtin-window-functions.js.map +1 -1
  42. package/dist/src/func/registration.d.ts +19 -1
  43. package/dist/src/func/registration.d.ts.map +1 -1
  44. package/dist/src/func/registration.js +41 -0
  45. package/dist/src/func/registration.js.map +1 -1
  46. package/dist/src/index.d.ts +8 -8
  47. package/dist/src/index.d.ts.map +1 -1
  48. package/dist/src/index.js +12 -11
  49. package/dist/src/index.js.map +1 -1
  50. package/dist/src/parser/parser.d.ts +6 -0
  51. package/dist/src/parser/parser.d.ts.map +1 -1
  52. package/dist/src/parser/parser.js +45 -34
  53. package/dist/src/parser/parser.js.map +1 -1
  54. package/dist/src/planner/analysis/comparison-collation.d.ts +2 -0
  55. package/dist/src/planner/analysis/comparison-collation.d.ts.map +1 -1
  56. package/dist/src/planner/analysis/comparison-collation.js +1 -1
  57. package/dist/src/planner/analysis/comparison-collation.js.map +1 -1
  58. package/dist/src/planner/analysis/equi-correlation.d.ts +26 -0
  59. package/dist/src/planner/analysis/equi-correlation.d.ts.map +1 -0
  60. package/dist/src/planner/analysis/equi-correlation.js +62 -0
  61. package/dist/src/planner/analysis/equi-correlation.js.map +1 -0
  62. package/dist/src/planner/analysis/expression-fingerprint.d.ts.map +1 -1
  63. package/dist/src/planner/analysis/expression-fingerprint.js +29 -0
  64. package/dist/src/planner/analysis/expression-fingerprint.js.map +1 -1
  65. package/dist/src/planner/analysis/query-rewrite-matcher.d.ts +60 -18
  66. package/dist/src/planner/analysis/query-rewrite-matcher.d.ts.map +1 -1
  67. package/dist/src/planner/analysis/query-rewrite-matcher.js +95 -42
  68. package/dist/src/planner/analysis/query-rewrite-matcher.js.map +1 -1
  69. package/dist/src/planner/analysis/sat-checker.d.ts.map +1 -1
  70. package/dist/src/planner/analysis/sat-checker.js +43 -4
  71. package/dist/src/planner/analysis/sat-checker.js.map +1 -1
  72. package/dist/src/planner/analysis/scalar-subqueries.d.ts +28 -0
  73. package/dist/src/planner/analysis/scalar-subqueries.d.ts.map +1 -0
  74. package/dist/src/planner/analysis/scalar-subqueries.js +60 -0
  75. package/dist/src/planner/analysis/scalar-subqueries.js.map +1 -0
  76. package/dist/src/planner/building/delete.d.ts.map +1 -1
  77. package/dist/src/planner/building/delete.js +10 -3
  78. package/dist/src/planner/building/delete.js.map +1 -1
  79. package/dist/src/planner/building/expression.d.ts.map +1 -1
  80. package/dist/src/planner/building/expression.js +87 -6
  81. package/dist/src/planner/building/expression.js.map +1 -1
  82. package/dist/src/planner/building/foreign-key-builder.d.ts +44 -1
  83. package/dist/src/planner/building/foreign-key-builder.d.ts.map +1 -1
  84. package/dist/src/planner/building/foreign-key-builder.js +54 -0
  85. package/dist/src/planner/building/foreign-key-builder.js.map +1 -1
  86. package/dist/src/planner/building/insert.d.ts.map +1 -1
  87. package/dist/src/planner/building/insert.js +9 -12
  88. package/dist/src/planner/building/insert.js.map +1 -1
  89. package/dist/src/planner/building/select.d.ts.map +1 -1
  90. package/dist/src/planner/building/select.js +15 -1
  91. package/dist/src/planner/building/select.js.map +1 -1
  92. package/dist/src/planner/building/update.d.ts.map +1 -1
  93. package/dist/src/planner/building/update.js +13 -4
  94. package/dist/src/planner/building/update.js.map +1 -1
  95. package/dist/src/planner/building/with.d.ts.map +1 -1
  96. package/dist/src/planner/building/with.js +5 -8
  97. package/dist/src/planner/building/with.js.map +1 -1
  98. package/dist/src/planner/cache/materialization-advisory.d.ts +33 -0
  99. package/dist/src/planner/cache/materialization-advisory.d.ts.map +1 -1
  100. package/dist/src/planner/cache/materialization-advisory.js +164 -28
  101. package/dist/src/planner/cache/materialization-advisory.js.map +1 -1
  102. package/dist/src/planner/cache/reference-graph.d.ts +0 -4
  103. package/dist/src/planner/cache/reference-graph.d.ts.map +1 -1
  104. package/dist/src/planner/cache/reference-graph.js +5 -13
  105. package/dist/src/planner/cache/reference-graph.js.map +1 -1
  106. package/dist/src/planner/cost/index.d.ts +28 -7
  107. package/dist/src/planner/cost/index.d.ts.map +1 -1
  108. package/dist/src/planner/cost/index.js +26 -0
  109. package/dist/src/planner/cost/index.js.map +1 -1
  110. package/dist/src/planner/framework/pass.js +3 -3
  111. package/dist/src/planner/nodes/cache-node.d.ts +18 -2
  112. package/dist/src/planner/nodes/cache-node.d.ts.map +1 -1
  113. package/dist/src/planner/nodes/cache-node.js +42 -3
  114. package/dist/src/planner/nodes/cache-node.js.map +1 -1
  115. package/dist/src/planner/nodes/cte-node.d.ts +15 -1
  116. package/dist/src/planner/nodes/cte-node.d.ts.map +1 -1
  117. package/dist/src/planner/nodes/cte-node.js +12 -2
  118. package/dist/src/planner/nodes/cte-node.js.map +1 -1
  119. package/dist/src/planner/nodes/dml-executor-node.d.ts +0 -9
  120. package/dist/src/planner/nodes/dml-executor-node.d.ts.map +1 -1
  121. package/dist/src/planner/nodes/dml-executor-node.js.map +1 -1
  122. package/dist/src/planner/nodes/recursive-cte-node.d.ts +30 -1
  123. package/dist/src/planner/nodes/recursive-cte-node.d.ts.map +1 -1
  124. package/dist/src/planner/nodes/recursive-cte-node.js +30 -3
  125. package/dist/src/planner/nodes/recursive-cte-node.js.map +1 -1
  126. package/dist/src/planner/nodes/scalar.d.ts.map +1 -1
  127. package/dist/src/planner/nodes/scalar.js +26 -3
  128. package/dist/src/planner/nodes/scalar.js.map +1 -1
  129. package/dist/src/planner/optimizer.d.ts.map +1 -1
  130. package/dist/src/planner/optimizer.js +129 -8
  131. package/dist/src/planner/optimizer.js.map +1 -1
  132. package/dist/src/planner/rules/access/rule-select-access-path.d.ts.map +1 -1
  133. package/dist/src/planner/rules/access/rule-select-access-path.js +43 -18
  134. package/dist/src/planner/rules/access/rule-select-access-path.js.map +1 -1
  135. package/dist/src/planner/rules/cache/rule-cte-optimization.d.ts.map +1 -1
  136. package/dist/src/planner/rules/cache/rule-cte-optimization.js +8 -1
  137. package/dist/src/planner/rules/cache/rule-cte-optimization.js.map +1 -1
  138. package/dist/src/planner/rules/cache/rule-materialized-view-rewrite.d.ts.map +1 -1
  139. package/dist/src/planner/rules/cache/rule-materialized-view-rewrite.js +72 -54
  140. package/dist/src/planner/rules/cache/rule-materialized-view-rewrite.js.map +1 -1
  141. package/dist/src/planner/rules/cache/rule-mutating-subquery-cache.d.ts.map +1 -1
  142. package/dist/src/planner/rules/cache/rule-mutating-subquery-cache.js +6 -0
  143. package/dist/src/planner/rules/cache/rule-mutating-subquery-cache.js.map +1 -1
  144. package/dist/src/planner/rules/cache/rule-nested-loop-right-cache.d.ts +25 -0
  145. package/dist/src/planner/rules/cache/rule-nested-loop-right-cache.d.ts.map +1 -0
  146. package/dist/src/planner/rules/cache/rule-nested-loop-right-cache.js +176 -0
  147. package/dist/src/planner/rules/cache/rule-nested-loop-right-cache.js.map +1 -0
  148. package/dist/src/planner/rules/cache/rule-scalar-subquery-cache.d.ts +31 -0
  149. package/dist/src/planner/rules/cache/rule-scalar-subquery-cache.d.ts.map +1 -0
  150. package/dist/src/planner/rules/cache/rule-scalar-subquery-cache.js +68 -0
  151. package/dist/src/planner/rules/cache/rule-scalar-subquery-cache.js.map +1 -0
  152. package/dist/src/planner/rules/join/rule-fanout-lookup-join.d.ts.map +1 -1
  153. package/dist/src/planner/rules/join/rule-fanout-lookup-join.js +1 -54
  154. package/dist/src/planner/rules/join/rule-fanout-lookup-join.js.map +1 -1
  155. package/dist/src/planner/rules/predicate/rule-predicate-inference-equivalence.js +8 -1
  156. package/dist/src/planner/rules/predicate/rule-predicate-inference-equivalence.js.map +1 -1
  157. package/dist/src/planner/rules/subquery/rule-scalar-agg-decorrelation.d.ts +191 -0
  158. package/dist/src/planner/rules/subquery/rule-scalar-agg-decorrelation.d.ts.map +1 -0
  159. package/dist/src/planner/rules/subquery/rule-scalar-agg-decorrelation.js +627 -0
  160. package/dist/src/planner/rules/subquery/rule-scalar-agg-decorrelation.js.map +1 -0
  161. package/dist/src/planner/rules/subquery/rule-subquery-decorrelation.d.ts +10 -1
  162. package/dist/src/planner/rules/subquery/rule-subquery-decorrelation.d.ts.map +1 -1
  163. package/dist/src/planner/rules/subquery/rule-subquery-decorrelation.js +242 -51
  164. package/dist/src/planner/rules/subquery/rule-subquery-decorrelation.js.map +1 -1
  165. package/dist/src/runtime/cache/shared-cache.d.ts +7 -0
  166. package/dist/src/runtime/cache/shared-cache.d.ts.map +1 -1
  167. package/dist/src/runtime/cache/shared-cache.js +34 -1
  168. package/dist/src/runtime/cache/shared-cache.js.map +1 -1
  169. package/dist/src/runtime/deferred-constraint-queue.d.ts.map +1 -1
  170. package/dist/src/runtime/deferred-constraint-queue.js +10 -0
  171. package/dist/src/runtime/deferred-constraint-queue.js.map +1 -1
  172. package/dist/src/runtime/emit/aggregate-setup.d.ts +49 -0
  173. package/dist/src/runtime/emit/aggregate-setup.d.ts.map +1 -0
  174. package/dist/src/runtime/emit/aggregate-setup.js +99 -0
  175. package/dist/src/runtime/emit/aggregate-setup.js.map +1 -0
  176. package/dist/src/runtime/emit/aggregate.d.ts +2 -3
  177. package/dist/src/runtime/emit/aggregate.d.ts.map +1 -1
  178. package/dist/src/runtime/emit/aggregate.js +10 -84
  179. package/dist/src/runtime/emit/aggregate.js.map +1 -1
  180. package/dist/src/runtime/emit/alter-table.d.ts.map +1 -1
  181. package/dist/src/runtime/emit/alter-table.js +348 -165
  182. package/dist/src/runtime/emit/alter-table.js.map +1 -1
  183. package/dist/src/runtime/emit/asof-scan.d.ts.map +1 -1
  184. package/dist/src/runtime/emit/asof-scan.js +6 -0
  185. package/dist/src/runtime/emit/asof-scan.js.map +1 -1
  186. package/dist/src/runtime/emit/between.d.ts.map +1 -1
  187. package/dist/src/runtime/emit/between.js +32 -3
  188. package/dist/src/runtime/emit/between.js.map +1 -1
  189. package/dist/src/runtime/emit/binary.d.ts.map +1 -1
  190. package/dist/src/runtime/emit/binary.js +22 -2
  191. package/dist/src/runtime/emit/binary.js.map +1 -1
  192. package/dist/src/runtime/emit/bloom-join.d.ts.map +1 -1
  193. package/dist/src/runtime/emit/bloom-join.js +24 -3
  194. package/dist/src/runtime/emit/bloom-join.js.map +1 -1
  195. package/dist/src/runtime/emit/cache.d.ts +7 -3
  196. package/dist/src/runtime/emit/cache.d.ts.map +1 -1
  197. package/dist/src/runtime/emit/cache.js +23 -6
  198. package/dist/src/runtime/emit/cache.js.map +1 -1
  199. package/dist/src/runtime/emit/cast.d.ts.map +1 -1
  200. package/dist/src/runtime/emit/cast.js +10 -23
  201. package/dist/src/runtime/emit/cast.js.map +1 -1
  202. package/dist/src/runtime/emit/constraint-check.d.ts.map +1 -1
  203. package/dist/src/runtime/emit/constraint-check.js +41 -44
  204. package/dist/src/runtime/emit/constraint-check.js.map +1 -1
  205. package/dist/src/runtime/emit/create-view.d.ts.map +1 -1
  206. package/dist/src/runtime/emit/create-view.js +6 -0
  207. package/dist/src/runtime/emit/create-view.js.map +1 -1
  208. package/dist/src/runtime/emit/cte.d.ts.map +1 -1
  209. package/dist/src/runtime/emit/cte.js +43 -20
  210. package/dist/src/runtime/emit/cte.js.map +1 -1
  211. package/dist/src/runtime/emit/distinct.d.ts.map +1 -1
  212. package/dist/src/runtime/emit/distinct.js +6 -3
  213. package/dist/src/runtime/emit/distinct.js.map +1 -1
  214. package/dist/src/runtime/emit/dml-executor.d.ts.map +1 -1
  215. package/dist/src/runtime/emit/dml-executor.js +241 -115
  216. package/dist/src/runtime/emit/dml-executor.js.map +1 -1
  217. package/dist/src/runtime/emit/hash-aggregate.d.ts.map +1 -1
  218. package/dist/src/runtime/emit/hash-aggregate.js +16 -65
  219. package/dist/src/runtime/emit/hash-aggregate.js.map +1 -1
  220. package/dist/src/runtime/emit/insert.d.ts.map +1 -1
  221. package/dist/src/runtime/emit/insert.js +18 -7
  222. package/dist/src/runtime/emit/insert.js.map +1 -1
  223. package/dist/src/runtime/emit/join.js +5 -0
  224. package/dist/src/runtime/emit/join.js.map +1 -1
  225. package/dist/src/runtime/emit/materialized-view-helpers.d.ts +14 -1
  226. package/dist/src/runtime/emit/materialized-view-helpers.d.ts.map +1 -1
  227. package/dist/src/runtime/emit/materialized-view-helpers.js +38 -7
  228. package/dist/src/runtime/emit/materialized-view-helpers.js.map +1 -1
  229. package/dist/src/runtime/emit/materialized-view.d.ts.map +1 -1
  230. package/dist/src/runtime/emit/materialized-view.js +47 -6
  231. package/dist/src/runtime/emit/materialized-view.js.map +1 -1
  232. package/dist/src/runtime/emit/merge-join.d.ts.map +1 -1
  233. package/dist/src/runtime/emit/merge-join.js +18 -8
  234. package/dist/src/runtime/emit/merge-join.js.map +1 -1
  235. package/dist/src/runtime/emit/recursive-cte.d.ts.map +1 -1
  236. package/dist/src/runtime/emit/recursive-cte.js +59 -1
  237. package/dist/src/runtime/emit/recursive-cte.js.map +1 -1
  238. package/dist/src/runtime/emit/set-object-tags.d.ts +8 -0
  239. package/dist/src/runtime/emit/set-object-tags.d.ts.map +1 -1
  240. package/dist/src/runtime/emit/set-object-tags.js +8 -0
  241. package/dist/src/runtime/emit/set-object-tags.js.map +1 -1
  242. package/dist/src/runtime/emit/set-operation.d.ts.map +1 -1
  243. package/dist/src/runtime/emit/set-operation.js +7 -4
  244. package/dist/src/runtime/emit/set-operation.js.map +1 -1
  245. package/dist/src/runtime/emit/sort.d.ts.map +1 -1
  246. package/dist/src/runtime/emit/sort.js +5 -2
  247. package/dist/src/runtime/emit/sort.js.map +1 -1
  248. package/dist/src/runtime/emit/subquery.d.ts.map +1 -1
  249. package/dist/src/runtime/emit/subquery.js +113 -13
  250. package/dist/src/runtime/emit/subquery.js.map +1 -1
  251. package/dist/src/runtime/emit/temporal-arithmetic.d.ts +7 -0
  252. package/dist/src/runtime/emit/temporal-arithmetic.d.ts.map +1 -1
  253. package/dist/src/runtime/emit/temporal-arithmetic.js +15 -7
  254. package/dist/src/runtime/emit/temporal-arithmetic.js.map +1 -1
  255. package/dist/src/runtime/emit/update.d.ts.map +1 -1
  256. package/dist/src/runtime/emit/update.js +44 -3
  257. package/dist/src/runtime/emit/update.js.map +1 -1
  258. package/dist/src/runtime/emit/window.d.ts.map +1 -1
  259. package/dist/src/runtime/emit/window.js +72 -55
  260. package/dist/src/runtime/emit/window.js.map +1 -1
  261. package/dist/src/runtime/foreign-key-actions.d.ts +36 -1
  262. package/dist/src/runtime/foreign-key-actions.d.ts.map +1 -1
  263. package/dist/src/runtime/foreign-key-actions.js +238 -116
  264. package/dist/src/runtime/foreign-key-actions.js.map +1 -1
  265. package/dist/src/runtime/parallel-driver.d.ts +20 -1
  266. package/dist/src/runtime/parallel-driver.d.ts.map +1 -1
  267. package/dist/src/runtime/parallel-driver.js +23 -1
  268. package/dist/src/runtime/parallel-driver.js.map +1 -1
  269. package/dist/src/runtime/types.d.ts +54 -0
  270. package/dist/src/runtime/types.d.ts.map +1 -1
  271. package/dist/src/runtime/types.js.map +1 -1
  272. package/dist/src/schema/catalog-persistability.d.ts +58 -0
  273. package/dist/src/schema/catalog-persistability.d.ts.map +1 -0
  274. package/dist/src/schema/catalog-persistability.js +87 -0
  275. package/dist/src/schema/catalog-persistability.js.map +1 -0
  276. package/dist/src/schema/catalog.d.ts +17 -1
  277. package/dist/src/schema/catalog.d.ts.map +1 -1
  278. package/dist/src/schema/catalog.js +25 -3
  279. package/dist/src/schema/catalog.js.map +1 -1
  280. package/dist/src/schema/constraint-builder.d.ts +20 -22
  281. package/dist/src/schema/constraint-builder.d.ts.map +1 -1
  282. package/dist/src/schema/constraint-builder.js +43 -36
  283. package/dist/src/schema/constraint-builder.js.map +1 -1
  284. package/dist/src/schema/ddl-generator.d.ts +23 -0
  285. package/dist/src/schema/ddl-generator.d.ts.map +1 -1
  286. package/dist/src/schema/ddl-generator.js +27 -0
  287. package/dist/src/schema/ddl-generator.js.map +1 -1
  288. package/dist/src/schema/function.d.ts +109 -1
  289. package/dist/src/schema/function.d.ts.map +1 -1
  290. package/dist/src/schema/function.js.map +1 -1
  291. package/dist/src/schema/manager.d.ts +28 -0
  292. package/dist/src/schema/manager.d.ts.map +1 -1
  293. package/dist/src/schema/manager.js +82 -14
  294. package/dist/src/schema/manager.js.map +1 -1
  295. package/dist/src/schema/schema-differ.d.ts.map +1 -1
  296. package/dist/src/schema/schema-differ.js +51 -12
  297. package/dist/src/schema/schema-differ.js.map +1 -1
  298. package/dist/src/schema/unique-enforcement.d.ts +31 -0
  299. package/dist/src/schema/unique-enforcement.d.ts.map +1 -1
  300. package/dist/src/schema/unique-enforcement.js +37 -1
  301. package/dist/src/schema/unique-enforcement.js.map +1 -1
  302. package/dist/src/schema/window-function.d.ts +30 -10
  303. package/dist/src/schema/window-function.d.ts.map +1 -1
  304. package/dist/src/schema/window-function.js +20 -16
  305. package/dist/src/schema/window-function.js.map +1 -1
  306. package/dist/src/types/cast-semantics.d.ts +43 -0
  307. package/dist/src/types/cast-semantics.d.ts.map +1 -0
  308. package/dist/src/types/cast-semantics.js +59 -0
  309. package/dist/src/types/cast-semantics.js.map +1 -0
  310. package/dist/src/types/index.d.ts +1 -1
  311. package/dist/src/types/index.d.ts.map +1 -1
  312. package/dist/src/types/index.js +1 -1
  313. package/dist/src/types/index.js.map +1 -1
  314. package/dist/src/types/json-type.d.ts.map +1 -1
  315. package/dist/src/types/json-type.js +31 -10
  316. package/dist/src/types/json-type.js.map +1 -1
  317. package/dist/src/types/logical-type.d.ts +22 -0
  318. package/dist/src/types/logical-type.d.ts.map +1 -1
  319. package/dist/src/types/logical-type.js.map +1 -1
  320. package/dist/src/types/temporal-types.d.ts.map +1 -1
  321. package/dist/src/types/temporal-types.js +33 -11
  322. package/dist/src/types/temporal-types.js.map +1 -1
  323. package/dist/src/types/validation.d.ts +39 -1
  324. package/dist/src/types/validation.d.ts.map +1 -1
  325. package/dist/src/types/validation.js +60 -0
  326. package/dist/src/types/validation.js.map +1 -1
  327. package/dist/src/util/ast-spine-clone.d.ts +23 -0
  328. package/dist/src/util/ast-spine-clone.d.ts.map +1 -0
  329. package/dist/src/util/ast-spine-clone.js +41 -0
  330. package/dist/src/util/ast-spine-clone.js.map +1 -0
  331. package/dist/src/util/coercion.d.ts +13 -0
  332. package/dist/src/util/coercion.d.ts.map +1 -1
  333. package/dist/src/util/coercion.js +10 -1
  334. package/dist/src/util/coercion.js.map +1 -1
  335. package/dist/src/util/comparison.d.ts +89 -0
  336. package/dist/src/util/comparison.d.ts.map +1 -1
  337. package/dist/src/util/comparison.js +156 -27
  338. package/dist/src/util/comparison.js.map +1 -1
  339. package/dist/src/vtab/manifest.d.ts +7 -0
  340. package/dist/src/vtab/manifest.d.ts.map +1 -1
  341. package/dist/src/vtab/memory/connection.d.ts +14 -1
  342. package/dist/src/vtab/memory/connection.d.ts.map +1 -1
  343. package/dist/src/vtab/memory/connection.js +20 -2
  344. package/dist/src/vtab/memory/connection.js.map +1 -1
  345. package/dist/src/vtab/memory/layer/base.d.ts +6 -1
  346. package/dist/src/vtab/memory/layer/base.d.ts.map +1 -1
  347. package/dist/src/vtab/memory/layer/base.js +14 -5
  348. package/dist/src/vtab/memory/layer/base.js.map +1 -1
  349. package/dist/src/vtab/memory/layer/connection.d.ts +17 -0
  350. package/dist/src/vtab/memory/layer/connection.d.ts.map +1 -1
  351. package/dist/src/vtab/memory/layer/connection.js +26 -0
  352. package/dist/src/vtab/memory/layer/connection.js.map +1 -1
  353. package/dist/src/vtab/memory/layer/manager.d.ts +96 -13
  354. package/dist/src/vtab/memory/layer/manager.d.ts.map +1 -1
  355. package/dist/src/vtab/memory/layer/manager.js +595 -119
  356. package/dist/src/vtab/memory/layer/manager.js.map +1 -1
  357. package/dist/src/vtab/memory/layer/plan-filter.d.ts +41 -20
  358. package/dist/src/vtab/memory/layer/plan-filter.d.ts.map +1 -1
  359. package/dist/src/vtab/memory/layer/plan-filter.js +57 -27
  360. package/dist/src/vtab/memory/layer/plan-filter.js.map +1 -1
  361. package/dist/src/vtab/memory/layer/row-convert.d.ts +21 -0
  362. package/dist/src/vtab/memory/layer/row-convert.d.ts.map +1 -0
  363. package/dist/src/vtab/memory/layer/row-convert.js +30 -0
  364. package/dist/src/vtab/memory/layer/row-convert.js.map +1 -0
  365. package/dist/src/vtab/memory/layer/scan-layer.d.ts +6 -3
  366. package/dist/src/vtab/memory/layer/scan-layer.d.ts.map +1 -1
  367. package/dist/src/vtab/memory/layer/scan-layer.js +69 -36
  368. package/dist/src/vtab/memory/layer/scan-layer.js.map +1 -1
  369. package/dist/src/vtab/memory/layer/transaction.d.ts +127 -13
  370. package/dist/src/vtab/memory/layer/transaction.d.ts.map +1 -1
  371. package/dist/src/vtab/memory/layer/transaction.js +214 -65
  372. package/dist/src/vtab/memory/layer/transaction.js.map +1 -1
  373. package/dist/src/vtab/memory/module.d.ts.map +1 -1
  374. package/dist/src/vtab/memory/module.js +9 -2
  375. package/dist/src/vtab/memory/module.js.map +1 -1
  376. package/dist/src/vtab/memory/table.d.ts.map +1 -1
  377. package/dist/src/vtab/memory/table.js +3 -2
  378. package/dist/src/vtab/memory/table.js.map +1 -1
  379. package/dist/src/vtab/memory/types.d.ts +27 -1
  380. package/dist/src/vtab/memory/types.d.ts.map +1 -1
  381. package/dist/src/vtab/memory/types.js +16 -1
  382. package/dist/src/vtab/memory/types.js.map +1 -1
  383. package/dist/src/vtab/memory/utils/primary-key.d.ts +9 -0
  384. package/dist/src/vtab/memory/utils/primary-key.d.ts.map +1 -1
  385. package/dist/src/vtab/memory/utils/primary-key.js +11 -0
  386. package/dist/src/vtab/memory/utils/primary-key.js.map +1 -1
  387. package/dist/src/vtab/module.d.ts +63 -0
  388. package/dist/src/vtab/module.d.ts.map +1 -1
  389. package/dist/src/vtab/table.d.ts +24 -6
  390. package/dist/src/vtab/table.d.ts.map +1 -1
  391. package/dist/src/vtab/table.js.map +1 -1
  392. package/package.json +3 -3
  393. package/dist/src/planner/rules/cache/rule-in-subquery-cache.d.ts +0 -19
  394. package/dist/src/planner/rules/cache/rule-in-subquery-cache.d.ts.map +0 -1
  395. package/dist/src/planner/rules/cache/rule-in-subquery-cache.js +0 -53
  396. package/dist/src/planner/rules/cache/rule-in-subquery-cache.js.map +0 -1
@@ -3,7 +3,8 @@ import { emitCallFromPlan, emitPlanNode } from '../emitters.js';
3
3
  import { createLogger } from '../../common/logger.js';
4
4
  import { buildRowDescriptor } from '../../util/row-descriptor.js';
5
5
  import { createRowSlot } from '../context-helpers.js';
6
- import { serializeRowKey } from '../../util/key-serializer.js';
6
+ import { serializeKey, serializeRowKey } from '../../util/key-serializer.js';
7
+ import { semanticKeyTransform } from '../../util/comparison.js';
7
8
  import { effectiveCollationOfTypes, hashKeyCollationName } from '../../planner/analysis/comparison-collation.js';
8
9
  import { joinOutputRow } from './join-output.js';
9
10
  const log = createLogger('runtime:emit:bloom-join');
@@ -44,6 +45,26 @@ export function emitBloomJoin(plan, ctx) {
44
45
  const collationName = effectiveCollationOfTypes(leftType, rightType);
45
46
  keyNormalizers.push(ctx.resolveKeyNormalizer(hashKeyCollationName(collationName, [leftType, rightType])));
46
47
  }
48
+ // Hash-key canonicalizers for semantic-ordering key types: the serialized key IS
49
+ // the join match (no re-verify), so values `=` treats as equal (TIMESPAN
50
+ // 'PT1H' ≡ 'PT60M') must serialize identically. Mirrors GROUP BY in
51
+ // hash-aggregate.ts; per equi-pair, active only when both sides declare the same
52
+ // semantic-ordering logical type with a groupKey hook.
53
+ const keyCanonicalizers = plan.equiPairs.map((_pair, i) => {
54
+ const leftLogical = leftAttributes[leftIndices[i]].type.logicalType;
55
+ const rightLogical = rightAttributes[rightIndices[i]].type.logicalType;
56
+ return leftLogical === rightLogical ? semanticKeyTransform(leftLogical) : undefined;
57
+ });
58
+ const hasKeyCanonicalizer = keyCanonicalizers.some(c => c !== undefined);
59
+ const extractKey = (row, indices) => {
60
+ if (!hasKeyCanonicalizer)
61
+ return serializeRowKey(row, indices, keyNormalizers);
62
+ const values = indices.map((idx, i) => {
63
+ const v = row[idx];
64
+ return keyCanonicalizers[i] ? keyCanonicalizers[i](v) : v;
65
+ });
66
+ return serializeKey(values, keyNormalizers);
67
+ };
47
68
  const rightColCount = rightAttributes.length;
48
69
  // The residual sub-program is a param only when `plan.residualCondition` is set,
49
70
  // so `run` is called with two or three args. Declared as a trailing rest tuple
@@ -68,7 +89,7 @@ export function emitBloomJoin(plan, ctx) {
68
89
  // === Build phase: materialize right side into hash map ===
69
90
  const hashMap = new Map();
70
91
  for await (const rightRow of rightSource) {
71
- const key = serializeRowKey(rightRow, rightIndices, keyNormalizers);
92
+ const key = extractKey(rightRow, rightIndices);
72
93
  if (key === null)
73
94
  continue; // null keys can't match
74
95
  const bucket = hashMap.get(key);
@@ -87,7 +108,7 @@ export function emitBloomJoin(plan, ctx) {
87
108
  break;
88
109
  const leftRow = next.value;
89
110
  leftSlot.set(leftRow);
90
- const key = serializeRowKey(leftRow, leftIndices, keyNormalizers);
111
+ const key = extractKey(leftRow, leftIndices);
91
112
  let matched = false;
92
113
  if (key !== null) {
93
114
  const bucket = hashMap.get(key);
@@ -1 +1 @@
1
- {"version":3,"file":"bloom-join.js","sourceRoot":"","sources":["../../../../src/runtime/emit/bloom-join.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bloom-join.js","sourceRoot":"","sources":["../../../../src/runtime/emit/bloom-join.ts"],"names":[],"mappings":"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"}
@@ -7,11 +7,15 @@ import type { EmissionContext } from '../emission-context.js';
7
7
  * ```typescript
8
8
  * import { streamWithCache, createCacheState } from '../cache/shared-cache.js';
9
9
  *
10
- * // In your emitter:
11
- * const cacheState = createCacheState();
10
+ * // In your emitter closure — mint a stable per-emit-site key, NOT the CacheState:
11
+ * const cacheKey = Symbol(`nlj-inner:${plan.id}`);
12
12
  * const config = { threshold: 10000, strategy: 'memory', name: 'NLJ-inner' };
13
13
  *
14
- * // In your run function:
14
+ * // In your run function — get-or-create the state on the per-execution context so
15
+ * // it resets between prepared-statement runs (never build CacheState at emit time —
16
+ * // the closure outlives one execution and would replay stale rows). See emitCache below.
17
+ * const states = (rctx.cacheStates ??= new Map<symbol, CacheState>());
18
+ * const cacheState = states.get(cacheKey) ?? states.set(cacheKey, createCacheState()).get(cacheKey)!;
15
19
  * yield* streamWithCache(sourceIterable, config, cacheState);
16
20
  * ```
17
21
  */
@@ -1 +1 @@
1
- {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../../../src/runtime/emit/cache.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAC;AACnE,OAAO,KAAK,EAAE,WAAW,EAAkB,MAAM,aAAa,CAAC;AAG/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAM9D;;;;;;;;;;;;;GAaG;AAEH;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,eAAe,GAAG,WAAW,CAiC5E"}
1
+ {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../../../src/runtime/emit/cache.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAC;AACnE,OAAO,KAAK,EAAE,WAAW,EAAkB,MAAM,aAAa,CAAC;AAG/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAM9D;;;;;;;;;;;;;;;;;GAiBG;AAEH;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,eAAe,GAAG,WAAW,CAgD5E"}
@@ -9,11 +9,15 @@ import { isLoggingEnabled } from '../../common/logger.js';
9
9
  * ```typescript
10
10
  * import { streamWithCache, createCacheState } from '../cache/shared-cache.js';
11
11
  *
12
- * // In your emitter:
13
- * const cacheState = createCacheState();
12
+ * // In your emitter closure — mint a stable per-emit-site key, NOT the CacheState:
13
+ * const cacheKey = Symbol(`nlj-inner:${plan.id}`);
14
14
  * const config = { threshold: 10000, strategy: 'memory', name: 'NLJ-inner' };
15
15
  *
16
- * // In your run function:
16
+ * // In your run function — get-or-create the state on the per-execution context so
17
+ * // it resets between prepared-statement runs (never build CacheState at emit time —
18
+ * // the closure outlives one execution and would replay stale rows). See emitCache below.
19
+ * const states = (rctx.cacheStates ??= new Map<symbol, CacheState>());
20
+ * const cacheState = states.get(cacheKey) ?? states.set(cacheKey, createCacheState()).get(cacheKey)!;
17
21
  * yield* streamWithCache(sourceIterable, config, cacheState);
18
22
  * ```
19
23
  */
@@ -24,14 +28,27 @@ import { isLoggingEnabled } from '../../common/logger.js';
24
28
  * Now uses the shared cache utility to avoid code duplication.
25
29
  */
26
30
  export function emitCache(plan, ctx) {
27
- // Create cache state using shared utility
28
- const cacheState = createCacheState();
29
31
  const config = {
30
32
  threshold: plan.threshold,
31
33
  strategy: plan.strategy,
32
- name: `CacheNode-${plan.id}`
34
+ name: `CacheNode-${plan.id}`,
35
+ eager: plan.eager
33
36
  };
37
+ // Stable per-emit-site key for the per-execution cache state
38
+ // (RuntimeContext.cacheStates). Minted once here in the emitter closure, so it
39
+ // is identical across every re-drive of THIS cache within one execution (the
40
+ // instruction tree is cached and reused on the prepared Statement), yet a fresh
41
+ // RuntimeContext per execution means a re-executed statement gets a fresh
42
+ // CacheState and re-drives its source instead of replaying stale rows. Mirrors
43
+ // the executionMemo/scanConnections symbol pattern.
44
+ const cacheKey = Symbol(`cache:${plan.id}`);
34
45
  async function* run(rctx, sourceCallback) {
46
+ const cacheStates = (rctx.cacheStates ??= new Map());
47
+ let cacheState = cacheStates.get(cacheKey);
48
+ if (!cacheState) {
49
+ cacheState = createCacheState();
50
+ cacheStates.set(cacheKey, cacheState);
51
+ }
35
52
  let sourceIterable = sourceCallback(rctx);
36
53
  // Optional: Add buffering for large threshold caches to improve performance
37
54
  if (plan.threshold > 50000) {
@@ -1 +1 @@
1
- {"version":3,"file":"cache.js","sourceRoot":"","sources":["../../../../src/runtime/emit/cache.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAGpC,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAA0B,MAAM,0BAA0B,CAAC;AACrG,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D;;;;;;;;;;;;;GAaG;AAEH;;;;;GAKG;AACH,MAAM,UAAU,SAAS,CAAC,IAAe,EAAE,GAAoB;IAC9D,0CAA0C;IAC1C,MAAM,UAAU,GAAG,gBAAgB,EAAE,CAAC;IACtC,MAAM,MAAM,GAAsB;QACjC,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,IAAI,EAAE,aAAa,IAAI,CAAC,EAAE,EAAE;KAC5B,CAAC;IAEF,KAAK,SAAS,CAAC,CAAC,GAAG,CAAC,IAAoB,EAAE,cAAgE;QACzG,IAAI,cAAc,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;QAE1C,4EAA4E;QAC5E,IAAI,IAAI,CAAC,SAAS,GAAG,KAAK,EAAE,CAAC;YAC5B,cAAc,GAAG,QAAQ,CAAC,cAAc,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC;QAChF,CAAC;QAED,sCAAsC;QACtC,IAAI,gBAAgB,CAAC,eAAe,CAAC,EAAE,CAAC;YACvC,cAAc,GAAG,MAAM,CAAC,cAAc,EAAE,SAAS,IAAI,CAAC,EAAE,EAAE,EACzD,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,OAAO,KAAK,MAAM,GAAG,CAAC,MAAM,WAAW,CAAC,CAAC;QAC3D,CAAC;QAED,KAAK,CAAC,CAAC,eAAe,CAAC,cAAc,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;IAC5D,CAAC;IAED,MAAM,iBAAiB,GAAG,gBAAgB,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAE7D,OAAO;QACN,MAAM,EAAE,CAAC,iBAAiB,CAAC;QAC3B,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC;QACf,IAAI,EAAE,SAAS,IAAI,CAAC,QAAQ,eAAe,IAAI,CAAC,SAAS,GAAG;KAC5D,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"cache.js","sourceRoot":"","sources":["../../../../src/runtime/emit/cache.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAGpC,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAA2C,MAAM,0BAA0B,CAAC;AACtH,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D;;;;;;;;;;;;;;;;;GAiBG;AAEH;;;;;GAKG;AACH,MAAM,UAAU,SAAS,CAAC,IAAe,EAAE,GAAoB;IAC9D,MAAM,MAAM,GAAsB;QACjC,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,IAAI,EAAE,aAAa,IAAI,CAAC,EAAE,EAAE;QAC5B,KAAK,EAAE,IAAI,CAAC,KAAK;KACjB,CAAC;IAEF,6DAA6D;IAC7D,+EAA+E;IAC/E,6EAA6E;IAC7E,gFAAgF;IAChF,0EAA0E;IAC1E,+EAA+E;IAC/E,oDAAoD;IACpD,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;IAE5C,KAAK,SAAS,CAAC,CAAC,GAAG,CAAC,IAAoB,EAAE,cAAgE;QACzG,MAAM,WAAW,GAAG,CAAC,IAAI,CAAC,WAAW,KAAK,IAAI,GAAG,EAAsB,CAAC,CAAC;QACzE,IAAI,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC3C,IAAI,CAAC,UAAU,EAAE,CAAC;YACjB,UAAU,GAAG,gBAAgB,EAAE,CAAC;YAChC,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QACvC,CAAC;QAED,IAAI,cAAc,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;QAE1C,4EAA4E;QAC5E,IAAI,IAAI,CAAC,SAAS,GAAG,KAAK,EAAE,CAAC;YAC5B,cAAc,GAAG,QAAQ,CAAC,cAAc,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC;QAChF,CAAC;QAED,sCAAsC;QACtC,IAAI,gBAAgB,CAAC,eAAe,CAAC,EAAE,CAAC;YACvC,cAAc,GAAG,MAAM,CAAC,cAAc,EAAE,SAAS,IAAI,CAAC,EAAE,EAAE,EACzD,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,OAAO,KAAK,MAAM,GAAG,CAAC,MAAM,WAAW,CAAC,CAAC;QAC3D,CAAC;QAED,KAAK,CAAC,CAAC,eAAe,CAAC,cAAc,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;IAC5D,CAAC;IAED,MAAM,iBAAiB,GAAG,gBAAgB,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAE7D,OAAO;QACN,MAAM,EAAE,CAAC,iBAAiB,CAAC;QAC3B,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC;QACf,IAAI,EAAE,SAAS,IAAI,CAAC,QAAQ,eAAe,IAAI,CAAC,SAAS,GAAG;KAC5D,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"cast.d.ts","sourceRoot":"","sources":["../../../../src/runtime/emit/cast.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAkB,MAAM,aAAa,CAAC;AAI/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAG9D,wBAAgB,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,eAAe,GAAG,WAAW,CA2B1E"}
1
+ {"version":3,"file":"cast.d.ts","sourceRoot":"","sources":["../../../../src/runtime/emit/cast.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAkB,MAAM,aAAa,CAAC;AAI/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAG9D,wBAAgB,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,eAAe,GAAG,WAAW,CAkC1E"}
@@ -1,8 +1,10 @@
1
1
  import { asRun } from '../types.js';
2
2
  import { emitPlanNode } from '../emitters.js';
3
- import { inferType } from '../../types/registry.js';
3
+ import { castFallback } from '../../types/cast-semantics.js';
4
4
  export function emitCast(plan, ctx) {
5
- const logicalType = inferType(plan.expression.targetType);
5
+ // The node's own resolved target type — never re-resolve the name here, or the
6
+ // plan can advertise a type the emitter does not produce.
7
+ const logicalType = plan.getType().logicalType;
6
8
  function run(_runtimeCtx, operandValue) {
7
9
  if (operandValue === null)
8
10
  return null;
@@ -13,9 +15,14 @@ export function emitCast(plan, ctx) {
13
15
  catch {
14
16
  // CAST failures in SQL return 0 for numeric targets, '' for text, etc.
15
17
  // This matches SQLite's lenient CAST behavior.
16
- return castFallback(operandValue, logicalType.name);
18
+ return castFallback(operandValue, logicalType);
17
19
  }
18
20
  }
21
+ // NOTE: a type with no `parse` defines no conversion, so the operand passes
22
+ // through while the cast still advertises the target type — the very shape
23
+ // castFallback exists to prevent. Unreachable today: NULL is the only builtin
24
+ // without `parse`, and the parser rejects it as a CAST target. If a plugin
25
+ // ever registers a parse-less type, validate here too.
19
26
  return operandValue;
20
27
  }
21
28
  return {
@@ -24,24 +31,4 @@ export function emitCast(plan, ctx) {
24
31
  note: `cast(${plan.expression.targetType})`
25
32
  };
26
33
  }
27
- /**
28
- * Fallback for when LogicalType.parse throws on invalid input.
29
- * CAST in SQL is lenient: non-numeric strings cast to integer yield 0, etc.
30
- */
31
- function castFallback(value, typeName) {
32
- switch (typeName) {
33
- case 'INTEGER':
34
- return 0;
35
- case 'REAL':
36
- return 0.0;
37
- case 'NUMERIC':
38
- return 0;
39
- case 'TEXT':
40
- return String(value);
41
- case 'BLOB':
42
- return new TextEncoder().encode(String(value));
43
- default:
44
- return value;
45
- }
46
- }
47
34
  //# sourceMappingURL=cast.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cast.js","sourceRoot":"","sources":["../../../../src/runtime/emit/cast.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAG9C,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEpD,MAAM,UAAU,QAAQ,CAAC,IAAc,EAAE,GAAoB;IAC5D,MAAM,WAAW,GAAG,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;IAE1D,SAAS,GAAG,CACX,WAA2B,EAC3B,YAAsB;QAEtB,IAAI,YAAY,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC;QAEvC,IAAI,WAAW,CAAC,KAAK,EAAE,CAAC;YACvB,IAAI,CAAC;gBACJ,OAAO,WAAW,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;YACxC,CAAC;YAAC,MAAM,CAAC;gBACR,uEAAuE;gBACvE,+CAA+C;gBAC/C,OAAO,YAAY,CAAC,YAAY,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;YACrD,CAAC;QACF,CAAC;QAED,OAAO,YAAY,CAAC;IACrB,CAAC;IAED,OAAO;QACN,MAAM,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QACzC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC;QACf,IAAI,EAAE,QAAQ,IAAI,CAAC,UAAU,CAAC,UAAU,GAAG;KAC3C,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAS,YAAY,CAAC,KAAe,EAAE,QAAgB;IACtD,QAAQ,QAAQ,EAAE,CAAC;QAClB,KAAK,SAAS;YACb,OAAO,CAAC,CAAC;QACV,KAAK,MAAM;YACV,OAAO,GAAG,CAAC;QACZ,KAAK,SAAS;YACb,OAAO,CAAC,CAAC;QACV,KAAK,MAAM;YACV,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;QACtB,KAAK,MAAM;YACV,OAAO,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAChD;YACC,OAAO,KAAK,CAAC;IACf,CAAC;AACF,CAAC"}
1
+ {"version":3,"file":"cast.js","sourceRoot":"","sources":["../../../../src/runtime/emit/cast.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAG9C,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAE7D,MAAM,UAAU,QAAQ,CAAC,IAAc,EAAE,GAAoB;IAC5D,+EAA+E;IAC/E,0DAA0D;IAC1D,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,WAAW,CAAC;IAE/C,SAAS,GAAG,CACX,WAA2B,EAC3B,YAAsB;QAEtB,IAAI,YAAY,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC;QAEvC,IAAI,WAAW,CAAC,KAAK,EAAE,CAAC;YACvB,IAAI,CAAC;gBACJ,OAAO,WAAW,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;YACxC,CAAC;YAAC,MAAM,CAAC;gBACR,uEAAuE;gBACvE,+CAA+C;gBAC/C,OAAO,YAAY,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;YAChD,CAAC;QACF,CAAC;QAED,4EAA4E;QAC5E,2EAA2E;QAC3E,8EAA8E;QAC9E,2EAA2E;QAC3E,uDAAuD;QACvD,OAAO,YAAY,CAAC;IACrB,CAAC;IAED,OAAO;QACN,MAAM,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QACzC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC;QACf,IAAI,EAAE,QAAQ,IAAI,CAAC,UAAU,CAAC,UAAU,GAAG;KAC3C,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"constraint-check.d.ts","sourceRoot":"","sources":["../../../../src/runtime/emit/constraint-check.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAuC,MAAM,8CAA8C,CAAC;AAC7H,OAAO,KAAK,EAAE,WAAW,EAAkB,MAAM,aAAa,CAAC;AAG/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AA8D9D,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,mBAAmB,EAAE,GAAG,EAAE,eAAe,GAAG,WAAW,CA4IhG"}
1
+ {"version":3,"file":"constraint-check.d.ts","sourceRoot":"","sources":["../../../../src/runtime/emit/constraint-check.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAuC,MAAM,8CAA8C,CAAC;AAC7H,OAAO,KAAK,EAAE,WAAW,EAAkB,MAAM,aAAa,CAAC;AAG/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAuE9D,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,mBAAmB,EAAE,GAAG,EAAE,eAAe,GAAG,WAAW,CAiKhG"}
@@ -56,6 +56,11 @@ export function emitConstraintCheck(plan, ctx) {
56
56
  // Emit evaluators for NOT NULL DEFAULT substitution (used by REPLACE).
57
57
  const notNullDefaultPlans = plan.notNullDefaults ?? [];
58
58
  const notNullDefaultInstructions = notNullDefaultPlans.map(d => emitCallFromPlan(d.defaultNode, ctx));
59
+ // Which substitutions need conversion — the emitters' static-type rule
60
+ // applied to the DEFAULT expression (see NotNullDefaultRuntime.coerceColumn).
61
+ const notNullDefaultCoercions = notNullDefaultPlans.map(d => d.defaultNode.getType().logicalType !== tableSchema.columns[d.columnIndex].logicalType
62
+ ? tableSchema.columns[d.columnIndex]
63
+ : undefined);
59
64
  const constraintMetadata = plan.constraintChecks.map((check, idx) => {
60
65
  const evaluatorInstruction = checkEvaluators[idx];
61
66
  const constraintName = check.constraint.name ?? generateDefaultConstraintName(tableSchema, check.constraint);
@@ -105,6 +110,7 @@ export function emitConstraintCheck(plan, ctx) {
105
110
  const defaultsRuntime = notNullDefaultPlans.map((d, i) => ({
106
111
  columnIndex: d.columnIndex,
107
112
  evaluator: defaultEvalFunctions[i],
113
+ coerceColumn: notNullDefaultCoercions[i],
108
114
  }));
109
115
  // Pre-compute the combined descriptor (constant across rows)
110
116
  const combinedDescriptor = contextDescriptor && contextRow
@@ -113,9 +119,15 @@ export function emitConstraintCheck(plan, ctx) {
113
119
  try {
114
120
  for await (const inputRow of inputRows) {
115
121
  let flatRow = inputRow;
116
- const evaluation = await withAsyncRowContext(rctx, combinedDescriptor, () => contextRow ? [...contextRow, ...flatRow] : flatRow, async () => {
117
- return await checkConstraints(rctx, plan, tableSchema, flatRow, constraintMetadata, constraintEvalFunctions, stmtOR, defaultsRuntime);
118
- });
122
+ // The row expressions see through `combinedDescriptor`. The getter is
123
+ // called lazily per lookup, so checkConstraints can swap it mid-row:
124
+ // after a REPLACE NOT NULL DEFAULT substitution, CHECK / FK must read
125
+ // the row AS SUBSTITUTED. The row arrives already converted to declared
126
+ // column types (the DML emitters convert the NEW section up front), so
127
+ // no separate coerced view exists — the substituted row IS what flows
128
+ // downstream.
129
+ let visibleRow = flatRow;
130
+ const evaluation = await withAsyncRowContext(rctx, combinedDescriptor, () => contextRow ? [...contextRow, ...visibleRow] : visibleRow, () => checkConstraints(rctx, plan, tableSchema, flatRow, constraintMetadata, constraintEvalFunctions, stmtOR, defaultsRuntime, row => { visibleRow = row; }));
119
131
  if (evaluation.skip)
120
132
  continue;
121
133
  if (evaluation.replacedRow) {
@@ -138,15 +150,21 @@ export function emitConstraintCheck(plan, ctx) {
138
150
  note: `constraintCheck(${plan.operation}, ${contextEvaluatorInstructions.length} ctx, ${plan.constraintChecks.length} checks, ${notNullDefaultInstructions.length} defaults)`
139
151
  };
140
152
  }
141
- async function checkConstraints(rctx, plan, tableSchema, row, constraintMetadata, evaluatorFunctions, stmtOR, notNullDefaults) {
142
- // NOT NULL constraints with possible REPLACE-DEFAULT substitution.
153
+ async function checkConstraints(rctx, plan, tableSchema, row, constraintMetadata, evaluatorFunctions, stmtOR, notNullDefaults, showRow) {
154
+ // The row arrives with its NEW section already converted to declared column
155
+ // types (the DML emitters convert up front, driven by static types), so both
156
+ // passes read declared-form values. NOT NULL runs first: under OR REPLACE it
157
+ // may substitute a column's DEFAULT (converting that one injected value —
158
+ // see NotNullDefaultRuntime.coerceColumn), and CHECK / FK then read the row
159
+ // AS FINALLY SUBSTITUTED, which is also what flows on downstream.
143
160
  const nnResult = await checkNotNullConstraints(rctx, plan, tableSchema, row, stmtOR, notNullDefaults);
144
161
  if (nnResult.skip)
145
162
  return { skip: true };
146
163
  if (nnResult.replacedRow)
147
164
  row = nnResult.replacedRow;
165
+ showRow(row);
148
166
  // CHECK constraints (and synthetic FK existence checks built as RowConstraintSchema).
149
- const ckResult = await checkCheckConstraints(rctx, plan, tableSchema, row, constraintMetadata, evaluatorFunctions, stmtOR);
167
+ const ckResult = await checkCheckConstraints(rctx, plan, tableSchema, constraintMetadata, evaluatorFunctions, stmtOR, row);
150
168
  if (ckResult.skip)
151
169
  return { skip: true };
152
170
  return { skip: false, replacedRow: nnResult.replacedRow };
@@ -186,11 +204,21 @@ async function checkNotNullConstraints(rctx, plan, tableSchema, flatRow, stmtOR,
186
204
  // No DEFAULT available — REPLACE cannot recover.
187
205
  throw new ConstraintError(message);
188
206
  }
189
- const defaultValue = await defaultEntry.evaluator(rctx);
207
+ let defaultValue = await defaultEntry.evaluator(rctx);
190
208
  if (defaultValue === null || defaultValue === undefined) {
191
209
  // DEFAULT itself is NULL — substitution does not satisfy NOT NULL.
192
210
  throw new ConstraintError(message);
193
211
  }
212
+ if (defaultEntry.coerceColumn) {
213
+ // The substituted value is injected AFTER the emitters' conversion
214
+ // pass, so convert it here by the same static-type rule. Conversion
215
+ // itself can produce NULL (JSON's text 'null'), which still violates
216
+ // NOT NULL.
217
+ defaultValue = validateAndParse(defaultValue, defaultEntry.coerceColumn.logicalType, defaultEntry.coerceColumn.name);
218
+ if (defaultValue === null) {
219
+ throw new ConstraintError(message);
220
+ }
221
+ }
194
222
  if (!mutableRow)
195
223
  mutableRow = [...flatRow];
196
224
  mutableRow[newValueIndex] = defaultValue;
@@ -201,7 +229,7 @@ async function checkNotNullConstraints(rctx, plan, tableSchema, flatRow, stmtOR,
201
229
  }
202
230
  return { skip: false, replacedRow: mutableRow };
203
231
  }
204
- async function checkCheckConstraints(rctx, plan, tableSchema, row, constraintMetadata, evaluatorFunctions, stmtOR) {
232
+ async function checkCheckConstraints(rctx, plan, tableSchema, constraintMetadata, evaluatorFunctions, stmtOR, flatRow) {
205
233
  for (let i = 0; i < constraintMetadata.length; i++) {
206
234
  const metadata = constraintMetadata[i];
207
235
  const evaluator = evaluatorFunctions[i] ?? metadata.evaluator;
@@ -219,11 +247,13 @@ async function checkCheckConstraints(rctx, plan, tableSchema, row, constraintMet
219
247
  if (plan.operation === RowOpFlag.UPDATE &&
220
248
  metadata.kind === 'fk-parent' &&
221
249
  metadata.referencedColumnIndices) {
250
+ // Both halves are in stored (declared) form: OLD comes from the scan, NEW
251
+ // was converted by the DML emitter — so plain identity is the right test.
222
252
  const numCols = tableSchema.columns.length;
223
253
  let anyChanged = false;
224
254
  for (const colIdx of metadata.referencedColumnIndices) {
225
- const oldVal = row[colIdx]; // OLD section: 0..n-1
226
- const newVal = row[numCols + colIdx]; // NEW section: n..2n-1
255
+ const oldVal = flatRow[colIdx]; // OLD section: 0..n-1
256
+ const newVal = flatRow[numCols + colIdx]; // NEW section: n..2n-1
227
257
  if (!sqlValueIdentical(oldVal, newVal)) {
228
258
  anyChanged = true;
229
259
  break;
@@ -238,7 +268,7 @@ async function checkCheckConstraints(rctx, plan, tableSchema, row, constraintMet
238
268
  const mustEvaluateNow = effectiveAction !== ConflictResolution.ABORT;
239
269
  if (metadata.shouldDefer && !mustEvaluateNow) {
240
270
  const activeConnectionId = rctx.activeConnection?.connectionId;
241
- rctx.db._queueDeferredConstraintRow(metadata.baseTable, metadata.constraintName, coerceNewSection(row, tableSchema), metadata.flatRowDescriptor, evaluator, activeConnectionId, metadata.contextRow, metadata.contextDescriptor);
271
+ rctx.db._queueDeferredConstraintRow(metadata.baseTable, metadata.constraintName, flatRow, metadata.flatRowDescriptor, evaluator, activeConnectionId, metadata.contextRow, metadata.contextDescriptor);
242
272
  continue;
243
273
  }
244
274
  // Resolve without a per-row microtask hop (see runtime/async-util.ts).
@@ -266,39 +296,6 @@ async function checkCheckConstraints(rctx, plan, tableSchema, row, constraintMet
266
296
  }
267
297
  return { skip: false };
268
298
  }
269
- /**
270
- * Snapshot the flat OLD/NEW row for deferred evaluation, coercing the NEW
271
- * section (indices n..2n-1) to the declared column logical types.
272
- *
273
- * The insert pipeline defers type conversion to the storage layer's
274
- * validateAndParse, so the row reaching this node still holds raw NEW values.
275
- * Deferred CHECK subqueries compare these against already-coerced stored rows
276
- * in other tables, so we coerce NEW here to keep coerced-vs-coerced equality at
277
- * commit time (GitHub #25).
278
- *
279
- * OLD values (0..n-1) are NULL on INSERT or read from already-coerced stored
280
- * rows on UPDATE, so they are left untouched. A per-cell parse failure falls
281
- * back to the raw value, preserving the existing error semantics — the row's
282
- * own performInsert remains the authoritative place that throws MISMATCH.
283
- */
284
- function coerceNewSection(row, tableSchema) {
285
- const numCols = tableSchema.columns.length;
286
- const snapshot = row.slice();
287
- for (let i = 0; i < numCols; i++) {
288
- const newIndex = numCols + i;
289
- if (newIndex >= snapshot.length)
290
- break;
291
- const column = tableSchema.columns[i];
292
- const value = snapshot[newIndex];
293
- try {
294
- snapshot[newIndex] = validateAndParse(value, column.logicalType, column.name);
295
- }
296
- catch {
297
- // Keep the raw value; downstream performInsert reports the error as today.
298
- }
299
- }
300
- return snapshot;
301
- }
302
299
  function generateDefaultConstraintName(tableSchema, constraint) {
303
300
  // Find the index of this constraint in the original array to get the correct constraint number
304
301
  const originalIndex = tableSchema.checkConstraints.findIndex((c) => c === constraint);
@@ -1 +1 @@
1
- {"version":3,"file":"constraint-check.js","sourceRoot":"","sources":["../../../../src/runtime/emit/constraint-check.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"constraint-check.js","sourceRoot":"","sources":["../../../../src/runtime/emit/constraint-check.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"create-view.d.ts","sourceRoot":"","sources":["../../../../src/runtime/emit/create-view.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AAC9E,OAAO,KAAK,EAAE,WAAW,EAAkB,MAAM,aAAa,CAAC;AAC/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAK9D,wBAAgB,cAAc,CAAC,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,eAAe,GAAG,WAAW,CAgEvF"}
1
+ {"version":3,"file":"create-view.d.ts","sourceRoot":"","sources":["../../../../src/runtime/emit/create-view.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AAC9E,OAAO,KAAK,EAAE,WAAW,EAAkB,MAAM,aAAa,CAAC;AAC/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAM9D,wBAAgB,cAAc,CAAC,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,eAAe,GAAG,WAAW,CAsEvF"}
@@ -1,5 +1,6 @@
1
1
  import { QuereusError } from '../../common/errors.js';
2
2
  import { StatusCode } from '../../common/types.js';
3
+ import { assertCatalogObjectPersistable } from '../../schema/catalog-persistability.js';
3
4
  export function emitCreateView(plan, _ctx) {
4
5
  async function run(rctx) {
5
6
  // Ensure we're in a transaction before DDL (lazy/JIT transaction start)
@@ -28,6 +29,11 @@ export function emitCreateView(plan, _ctx) {
28
29
  if (!schema) {
29
30
  throw new QuereusError(`Schema '${plan.schemaName}' does not exist`, StatusCode.ERROR);
30
31
  }
32
+ // Refuse up front if a registered module could not durably persist this
33
+ // definition — the persistence itself is fire-and-forget (see
34
+ // assertCatalogObjectPersistable), so this is the only place the failure can
35
+ // reach the statement. Nothing has been mutated yet, so a throw is a clean no-op.
36
+ assertCatalogObjectPersistable(rctx.db, 'view', viewSchema);
31
37
  schema.addView(viewSchema);
32
38
  // Fire view_added so a store-backed catalog can persist this view. Fired
33
39
  // here (not from Schema.addView) so only user/declarative DDL views are
@@ -1 +1 @@
1
- {"version":3,"file":"create-view.js","sourceRoot":"","sources":["../../../../src/runtime/emit/create-view.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAiB,MAAM,uBAAuB,CAAC;AAGlE,MAAM,UAAU,cAAc,CAAC,IAAoB,EAAE,IAAqB;IACzE,KAAK,UAAU,GAAG,CAAC,IAAoB;QACtC,wEAAwE;QACxE,MAAM,IAAI,CAAC,EAAE,CAAC,kBAAkB,EAAE,CAAC;QAEnC,+BAA+B;QAC/B,MAAM,YAAY,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAEnF,IAAI,YAAY,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACvC,MAAM,IAAI,YAAY,CACrB,SAAS,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,QAAQ,kBAAkB,EAC3D,UAAU,CAAC,KAAK,CAChB,CAAC;QACH,CAAC;QAED,IAAI,YAAY,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACtC,kEAAkE;YAClE,OAAO,IAAI,CAAC;QACb,CAAC;QAED,+DAA+D;QAC/D,0EAA0E;QAC1E,MAAM,UAAU,GAAe;YAC9B,IAAI,EAAE,IAAI,CAAC,QAAQ;YACnB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,SAAS,EAAE,IAAI,CAAC,UAAU;YAC1B,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,IAAI,EAAE,IAAI,CAAC,IAAI;SACf,CAAC;QAEF,qCAAqC;QACrC,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAChE,IAAI,CAAC,MAAM,EAAE,CAAC;YACb,MAAM,IAAI,YAAY,CACrB,WAAW,IAAI,CAAC,UAAU,kBAAkB,EAC5C,UAAU,CAAC,KAAK,CAChB,CAAC;QACH,CAAC;QAED,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAE3B,yEAAyE;QACzE,wEAAwE;QACxE,4EAA4E;QAC5E,2EAA2E;QAC3E,eAAe;QACf,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,iBAAiB,EAAE,CAAC,YAAY,CAAC;YACtD,IAAI,EAAE,YAAY;YAClB,kDAAkD;YAClD,0EAA0E;YAC1E,4EAA4E;YAC5E,UAAU,EAAE,UAAU,CAAC,UAAU;YACjC,UAAU,EAAE,UAAU,CAAC,IAAI;YAC3B,SAAS,EAAE,UAAU;SACrB,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,CAAC,wDAAwD;IACtE,CAAC;IAED,OAAO;QACN,MAAM,EAAE,EAAE;QACV,GAAG;QACH,IAAI,EAAE,cAAc,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,QAAQ,GAAG;KACvD,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"create-view.js","sourceRoot":"","sources":["../../../../src/runtime/emit/create-view.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAiB,MAAM,uBAAuB,CAAC;AAElE,OAAO,EAAE,8BAA8B,EAAE,MAAM,wCAAwC,CAAC;AAExF,MAAM,UAAU,cAAc,CAAC,IAAoB,EAAE,IAAqB;IACzE,KAAK,UAAU,GAAG,CAAC,IAAoB;QACtC,wEAAwE;QACxE,MAAM,IAAI,CAAC,EAAE,CAAC,kBAAkB,EAAE,CAAC;QAEnC,+BAA+B;QAC/B,MAAM,YAAY,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAEnF,IAAI,YAAY,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACvC,MAAM,IAAI,YAAY,CACrB,SAAS,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,QAAQ,kBAAkB,EAC3D,UAAU,CAAC,KAAK,CAChB,CAAC;QACH,CAAC;QAED,IAAI,YAAY,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACtC,kEAAkE;YAClE,OAAO,IAAI,CAAC;QACb,CAAC;QAED,+DAA+D;QAC/D,0EAA0E;QAC1E,MAAM,UAAU,GAAe;YAC9B,IAAI,EAAE,IAAI,CAAC,QAAQ;YACnB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,SAAS,EAAE,IAAI,CAAC,UAAU;YAC1B,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,IAAI,EAAE,IAAI,CAAC,IAAI;SACf,CAAC;QAEF,qCAAqC;QACrC,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAChE,IAAI,CAAC,MAAM,EAAE,CAAC;YACb,MAAM,IAAI,YAAY,CACrB,WAAW,IAAI,CAAC,UAAU,kBAAkB,EAC5C,UAAU,CAAC,KAAK,CAChB,CAAC;QACH,CAAC;QAED,wEAAwE;QACxE,8DAA8D;QAC9D,6EAA6E;QAC7E,kFAAkF;QAClF,8BAA8B,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;QAE5D,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAE3B,yEAAyE;QACzE,wEAAwE;QACxE,4EAA4E;QAC5E,2EAA2E;QAC3E,eAAe;QACf,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,iBAAiB,EAAE,CAAC,YAAY,CAAC;YACtD,IAAI,EAAE,YAAY;YAClB,kDAAkD;YAClD,0EAA0E;YAC1E,4EAA4E;YAC5E,UAAU,EAAE,UAAU,CAAC,UAAU;YACjC,UAAU,EAAE,UAAU,CAAC,IAAI;YAC3B,SAAS,EAAE,UAAU;SACrB,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,CAAC,wDAAwD;IACtE,CAAC;IAED,OAAO;QACN,MAAM,EAAE,EAAE;QACV,GAAG;QACH,IAAI,EAAE,cAAc,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,QAAQ,GAAG;KACvD,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"cte.d.ts","sourceRoot":"","sources":["../../../../src/runtime/emit/cte.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,KAAK,EAAE,WAAW,EAAkB,MAAM,aAAa,CAAC;AAE/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAI9D,wBAAgB,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,eAAe,GAAG,WAAW,CAgCxE"}
1
+ {"version":3,"file":"cte.d.ts","sourceRoot":"","sources":["../../../../src/runtime/emit/cte.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,KAAK,EAAE,WAAW,EAAkB,MAAM,aAAa,CAAC;AAE/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAI9D,wBAAgB,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,eAAe,GAAG,WAAW,CA0DxE"}
@@ -3,33 +3,56 @@ import { emitPlanNode } from '../emitters.js';
3
3
  export function emitCTE(plan, ctx) {
4
4
  // Emit the underlying query
5
5
  const queryInstruction = emitPlanNode(plan.source, ctx);
6
- // For now, we'll implement CTEs as simply executing the underlying query
7
- // In a full implementation, this would handle materialization based on the hint
8
6
  async function* run(rctx, queryResult) {
9
- // If materialization is explicitly requested or beneficial,
10
- // we could materialize the result here
11
- if (plan.materializationHint === 'materialized') {
12
- // Materialize the CTE result
13
- const materializedRows = [];
14
- for await (const row of queryResult) {
15
- materializedRows.push(row);
16
- }
17
- // Yield all materialized rows
18
- for (const row of materializedRows) {
19
- yield row;
20
- }
7
+ if (!plan.materialize) {
8
+ // Streaming path: single-reference, un-hinted (or NOT MATERIALIZED)
9
+ // CTE — pass rows through so early exit (e.g. LIMIT) never drains
10
+ // the source.
11
+ yield* queryResult;
12
+ return;
21
13
  }
22
- else {
23
- // Stream the results directly
24
- for await (const row of queryResult) {
25
- yield row;
26
- }
14
+ // Shared materialization: every reference to this CTE shares one
15
+ // per-execution buffer keyed by the CTENode's plan id (all references
16
+ // point at the same CTENode instance, so each reference's separately
17
+ // emitted closure agrees on the key). Each reference emits its own copy
18
+ // of the source subtree; only the buffer owner ever iterates one.
19
+ const buffers = (rctx.cteMaterializations ??= new Map());
20
+ let bufferPromise = buffers.get(plan.id);
21
+ if (!bufferPromise) {
22
+ // First reference to run owns the single source drive. Create and
23
+ // store the promise SYNCHRONOUSLY (before any await) so a second
24
+ // reference interleaving under a nested-loop join finds it and
25
+ // awaits instead of driving its own source subtree.
26
+ // NOTE: the drive runs detached — if every consumer is torn down early
27
+ // (e.g. LIMIT above the join), the drain still runs to completion in
28
+ // the background. Bounded by the CTE's row count; if a materialized
29
+ // CTE source ever becomes expensive enough for abandoned drains to
30
+ // matter, thread the statement's abort signal into this loop.
31
+ bufferPromise = (async () => {
32
+ const rows = [];
33
+ for await (const row of queryResult) {
34
+ rows.push([...row]);
35
+ }
36
+ return rows;
37
+ })();
38
+ // Pre-attach a no-op rejection handler: if the drive fails after every
39
+ // awaiting reference has detached (early teardown), the stored promise
40
+ // would otherwise surface an unhandled rejection. References that are
41
+ // still awaiting observe the rejection through their own await.
42
+ bufferPromise.catch(() => { });
43
+ buffers.set(plan.id, bufferPromise);
44
+ }
45
+ const rows = await bufferPromise;
46
+ for (const row of rows) {
47
+ // Copy per consumer so a downstream mutator cannot corrupt another
48
+ // reference's (or a replay's) view of the buffer.
49
+ yield [...row];
27
50
  }
28
51
  }
29
52
  return {
30
53
  params: [queryInstruction],
31
54
  run: asRun(run),
32
- note: `cte(${plan.cteName})`
55
+ note: `cte(${plan.cteName}${plan.materialize ? ', materialized' : ''})`
33
56
  };
34
57
  }
35
58
  //# sourceMappingURL=cte.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cte.js","sourceRoot":"","sources":["../../../../src/runtime/emit/cte.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEpC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAG9C,MAAM,UAAU,OAAO,CAAC,IAAa,EAAE,GAAoB;IAC1D,4BAA4B;IAC5B,MAAM,gBAAgB,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAExD,yEAAyE;IACzE,gFAAgF;IAChF,KAAK,SAAS,CAAC,CAAC,GAAG,CAAC,IAAoB,EAAE,WAA+B;QACxE,4DAA4D;QAC5D,uCAAuC;QACvC,IAAI,IAAI,CAAC,mBAAmB,KAAK,cAAc,EAAE,CAAC;YACjD,6BAA6B;YAC7B,MAAM,gBAAgB,GAAU,EAAE,CAAC;YACnC,IAAI,KAAK,EAAE,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;gBACrC,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC5B,CAAC;YACD,8BAA8B;YAC9B,KAAK,MAAM,GAAG,IAAI,gBAAgB,EAAE,CAAC;gBACpC,MAAM,GAAG,CAAC;YACX,CAAC;QACF,CAAC;aAAM,CAAC;YACP,8BAA8B;YAC9B,IAAI,KAAK,EAAE,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;gBACrC,MAAM,GAAG,CAAC;YACX,CAAC;QACF,CAAC;IACF,CAAC;IAED,OAAO;QACN,MAAM,EAAE,CAAC,gBAAgB,CAAC;QAC1B,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC;QACf,IAAI,EAAE,OAAO,IAAI,CAAC,OAAO,GAAG;KAC5B,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"cte.js","sourceRoot":"","sources":["../../../../src/runtime/emit/cte.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEpC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAG9C,MAAM,UAAU,OAAO,CAAC,IAAa,EAAE,GAAoB;IAC1D,4BAA4B;IAC5B,MAAM,gBAAgB,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAExD,KAAK,SAAS,CAAC,CAAC,GAAG,CAAC,IAAoB,EAAE,WAA+B;QACxE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACvB,oEAAoE;YACpE,kEAAkE;YAClE,cAAc;YACd,KAAK,CAAC,CAAC,WAAW,CAAC;YACnB,OAAO;QACR,CAAC;QAED,iEAAiE;QACjE,sEAAsE;QACtE,qEAAqE;QACrE,wEAAwE;QACxE,kEAAkE;QAClE,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,mBAAmB,KAAK,IAAI,GAAG,EAA0B,CAAC,CAAC;QACjF,IAAI,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACzC,IAAI,CAAC,aAAa,EAAE,CAAC;YACpB,kEAAkE;YAClE,iEAAiE;YACjE,+DAA+D;YAC/D,oDAAoD;YACpD,uEAAuE;YACvE,qEAAqE;YACrE,oEAAoE;YACpE,mEAAmE;YACnE,8DAA8D;YAC9D,aAAa,GAAG,CAAC,KAAK,IAAI,EAAE;gBAC3B,MAAM,IAAI,GAAU,EAAE,CAAC;gBACvB,IAAI,KAAK,EAAE,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;oBACrC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAQ,CAAC,CAAC;gBAC5B,CAAC;gBACD,OAAO,IAAI,CAAC;YACb,CAAC,CAAC,EAAE,CAAC;YACL,uEAAuE;YACvE,uEAAuE;YACvE,sEAAsE;YACtE,gEAAgE;YAChE,aAAa,CAAC,KAAK,CAAC,GAAG,EAAE,GAAyC,CAAC,CAAC,CAAC;YACrE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC;QACrC,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC;QACjC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACxB,mEAAmE;YACnE,kDAAkD;YAClD,MAAM,CAAC,GAAG,GAAG,CAAQ,CAAC;QACvB,CAAC;IACF,CAAC;IAED,OAAO;QACN,MAAM,EAAE,CAAC,gBAAgB,CAAC;QAC1B,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC;QACf,IAAI,EAAE,OAAO,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,GAAG;KACvE,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"distinct.d.ts","sourceRoot":"","sources":["../../../../src/runtime/emit/distinct.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AACzE,OAAO,KAAK,EAAE,WAAW,EAAkB,MAAM,aAAa,CAAC;AAI/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAM9D,wBAAgB,YAAY,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,eAAe,GAAG,WAAW,CAyClF"}
1
+ {"version":3,"file":"distinct.d.ts","sourceRoot":"","sources":["../../../../src/runtime/emit/distinct.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AACzE,OAAO,KAAK,EAAE,WAAW,EAAkB,MAAM,aAAa,CAAC;AAI/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAM9D,wBAAgB,YAAY,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,eAAe,GAAG,WAAW,CA6ClF"}