@quereus/quereus 4.17.1 → 4.19.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (248) hide show
  1. package/dist/src/common/types.d.ts +17 -0
  2. package/dist/src/common/types.d.ts.map +1 -1
  3. package/dist/src/common/types.js.map +1 -1
  4. package/dist/src/core/database-assertions.d.ts.map +1 -1
  5. package/dist/src/core/database-assertions.js +2 -1
  6. package/dist/src/core/database-assertions.js.map +1 -1
  7. package/dist/src/core/database-auto-analyze.d.ts +3 -3
  8. package/dist/src/core/database-auto-analyze.d.ts.map +1 -1
  9. package/dist/src/core/database-auto-analyze.js +17 -11
  10. package/dist/src/core/database-auto-analyze.js.map +1 -1
  11. package/dist/src/core/database-materialized-views-plan-builders.d.ts +11 -2
  12. package/dist/src/core/database-materialized-views-plan-builders.d.ts.map +1 -1
  13. package/dist/src/core/database-materialized-views-plan-builders.js +15 -10
  14. package/dist/src/core/database-materialized-views-plan-builders.js.map +1 -1
  15. package/dist/src/core/database-watchers.d.ts.map +1 -1
  16. package/dist/src/core/database-watchers.js +2 -1
  17. package/dist/src/core/database-watchers.js.map +1 -1
  18. package/dist/src/core/database.d.ts.map +1 -1
  19. package/dist/src/core/database.js +18 -10
  20. package/dist/src/core/database.js.map +1 -1
  21. package/dist/src/func/builtins/explain.d.ts.map +1 -1
  22. package/dist/src/func/builtins/explain.js +38 -42
  23. package/dist/src/func/builtins/explain.js.map +1 -1
  24. package/dist/src/func/builtins/schema.d.ts.map +1 -1
  25. package/dist/src/func/builtins/schema.js +39 -64
  26. package/dist/src/func/builtins/schema.js.map +1 -1
  27. package/dist/src/planner/analysis/constraint-extractor.d.ts +9 -1
  28. package/dist/src/planner/analysis/constraint-extractor.d.ts.map +1 -1
  29. package/dist/src/planner/analysis/constraint-extractor.js +55 -26
  30. package/dist/src/planner/analysis/constraint-extractor.js.map +1 -1
  31. package/dist/src/planner/building/default-scope.d.ts +11 -1
  32. package/dist/src/planner/building/default-scope.d.ts.map +1 -1
  33. package/dist/src/planner/building/default-scope.js +13 -2
  34. package/dist/src/planner/building/default-scope.js.map +1 -1
  35. package/dist/src/planner/building/insert.d.ts.map +1 -1
  36. package/dist/src/planner/building/insert.js +161 -107
  37. package/dist/src/planner/building/insert.js.map +1 -1
  38. package/dist/src/planner/building/select-aggregates.d.ts +8 -0
  39. package/dist/src/planner/building/select-aggregates.d.ts.map +1 -1
  40. package/dist/src/planner/building/select-aggregates.js +30 -25
  41. package/dist/src/planner/building/select-aggregates.js.map +1 -1
  42. package/dist/src/planner/building/select.d.ts.map +1 -1
  43. package/dist/src/planner/building/select.js +15 -18
  44. package/dist/src/planner/building/select.js.map +1 -1
  45. package/dist/src/planner/cost/index.d.ts +9 -0
  46. package/dist/src/planner/cost/index.d.ts.map +1 -1
  47. package/dist/src/planner/cost/index.js +28 -0
  48. package/dist/src/planner/cost/index.js.map +1 -1
  49. package/dist/src/planner/debug.d.ts +5 -0
  50. package/dist/src/planner/debug.d.ts.map +1 -1
  51. package/dist/src/planner/debug.js +5 -0
  52. package/dist/src/planner/debug.js.map +1 -1
  53. package/dist/src/planner/framework/characteristics.d.ts +0 -22
  54. package/dist/src/planner/framework/characteristics.d.ts.map +1 -1
  55. package/dist/src/planner/framework/characteristics.js +0 -3
  56. package/dist/src/planner/framework/characteristics.js.map +1 -1
  57. package/dist/src/planner/framework/pass.js +3 -3
  58. package/dist/src/planner/nodes/async-gather-node.d.ts +13 -0
  59. package/dist/src/planner/nodes/async-gather-node.d.ts.map +1 -1
  60. package/dist/src/planner/nodes/async-gather-node.js +19 -29
  61. package/dist/src/planner/nodes/async-gather-node.js.map +1 -1
  62. package/dist/src/planner/nodes/constraint-check-node.d.ts +9 -0
  63. package/dist/src/planner/nodes/constraint-check-node.d.ts.map +1 -1
  64. package/dist/src/planner/nodes/constraint-check-node.js +13 -0
  65. package/dist/src/planner/nodes/constraint-check-node.js.map +1 -1
  66. package/dist/src/planner/nodes/cte-node.d.ts +8 -5
  67. package/dist/src/planner/nodes/cte-node.d.ts.map +1 -1
  68. package/dist/src/planner/nodes/cte-node.js +14 -4
  69. package/dist/src/planner/nodes/cte-node.js.map +1 -1
  70. package/dist/src/planner/nodes/cte-reference-node.d.ts +9 -1
  71. package/dist/src/planner/nodes/cte-reference-node.d.ts.map +1 -1
  72. package/dist/src/planner/nodes/cte-reference-node.js +13 -0
  73. package/dist/src/planner/nodes/cte-reference-node.js.map +1 -1
  74. package/dist/src/planner/nodes/delete-node.d.ts +7 -1
  75. package/dist/src/planner/nodes/delete-node.d.ts.map +1 -1
  76. package/dist/src/planner/nodes/delete-node.js +12 -2
  77. package/dist/src/planner/nodes/delete-node.js.map +1 -1
  78. package/dist/src/planner/nodes/dml-executor-node.d.ts +2 -1
  79. package/dist/src/planner/nodes/dml-executor-node.d.ts.map +1 -1
  80. package/dist/src/planner/nodes/dml-executor-node.js +8 -1
  81. package/dist/src/planner/nodes/dml-executor-node.js.map +1 -1
  82. package/dist/src/planner/nodes/insert-node.d.ts +8 -1
  83. package/dist/src/planner/nodes/insert-node.d.ts.map +1 -1
  84. package/dist/src/planner/nodes/insert-node.js +12 -1
  85. package/dist/src/planner/nodes/insert-node.js.map +1 -1
  86. package/dist/src/planner/nodes/join-node.d.ts.map +1 -1
  87. package/dist/src/planner/nodes/join-node.js +10 -0
  88. package/dist/src/planner/nodes/join-node.js.map +1 -1
  89. package/dist/src/planner/nodes/plan-node-type.d.ts +1 -0
  90. package/dist/src/planner/nodes/plan-node-type.d.ts.map +1 -1
  91. package/dist/src/planner/nodes/plan-node-type.js +1 -0
  92. package/dist/src/planner/nodes/plan-node-type.js.map +1 -1
  93. package/dist/src/planner/nodes/recursive-cte-node.d.ts.map +1 -1
  94. package/dist/src/planner/nodes/recursive-cte-node.js +7 -0
  95. package/dist/src/planner/nodes/recursive-cte-node.js.map +1 -1
  96. package/dist/src/planner/nodes/remote-query-node.d.ts +7 -1
  97. package/dist/src/planner/nodes/remote-query-node.d.ts.map +1 -1
  98. package/dist/src/planner/nodes/remote-query-node.js +11 -0
  99. package/dist/src/planner/nodes/remote-query-node.js.map +1 -1
  100. package/dist/src/planner/nodes/returning-node.d.ts +4 -0
  101. package/dist/src/planner/nodes/returning-node.d.ts.map +1 -1
  102. package/dist/src/planner/nodes/returning-node.js +8 -1
  103. package/dist/src/planner/nodes/returning-node.js.map +1 -1
  104. package/dist/src/planner/nodes/scalar.d.ts +39 -0
  105. package/dist/src/planner/nodes/scalar.d.ts.map +1 -1
  106. package/dist/src/planner/nodes/scalar.js +77 -0
  107. package/dist/src/planner/nodes/scalar.js.map +1 -1
  108. package/dist/src/planner/nodes/set-operation-node.d.ts +14 -1
  109. package/dist/src/planner/nodes/set-operation-node.d.ts.map +1 -1
  110. package/dist/src/planner/nodes/set-operation-node.js +22 -1
  111. package/dist/src/planner/nodes/set-operation-node.js.map +1 -1
  112. package/dist/src/planner/nodes/sink-node.d.ts +9 -1
  113. package/dist/src/planner/nodes/sink-node.d.ts.map +1 -1
  114. package/dist/src/planner/nodes/sink-node.js +12 -0
  115. package/dist/src/planner/nodes/sink-node.js.map +1 -1
  116. package/dist/src/planner/nodes/table-access-nodes.d.ts +21 -0
  117. package/dist/src/planner/nodes/table-access-nodes.d.ts.map +1 -1
  118. package/dist/src/planner/nodes/table-access-nodes.js +42 -3
  119. package/dist/src/planner/nodes/table-access-nodes.js.map +1 -1
  120. package/dist/src/planner/nodes/update-node.d.ts +7 -1
  121. package/dist/src/planner/nodes/update-node.d.ts.map +1 -1
  122. package/dist/src/planner/nodes/update-node.js +9 -1
  123. package/dist/src/planner/nodes/update-node.js.map +1 -1
  124. package/dist/src/planner/nodes/view-mutation-node.d.ts +13 -1
  125. package/dist/src/planner/nodes/view-mutation-node.d.ts.map +1 -1
  126. package/dist/src/planner/nodes/view-mutation-node.js +25 -1
  127. package/dist/src/planner/nodes/view-mutation-node.js.map +1 -1
  128. package/dist/src/planner/optimizer-tuning.d.ts +9 -9
  129. package/dist/src/planner/optimizer-tuning.d.ts.map +1 -1
  130. package/dist/src/planner/optimizer-tuning.js +0 -2
  131. package/dist/src/planner/optimizer-tuning.js.map +1 -1
  132. package/dist/src/planner/optimizer.d.ts.map +1 -1
  133. package/dist/src/planner/optimizer.js +9 -21
  134. package/dist/src/planner/optimizer.js.map +1 -1
  135. package/dist/src/planner/rules/access/rule-key-set-seek.d.ts.map +1 -1
  136. package/dist/src/planner/rules/access/rule-key-set-seek.js +19 -10
  137. package/dist/src/planner/rules/access/rule-key-set-seek.js.map +1 -1
  138. package/dist/src/planner/rules/access/rule-select-access-path.d.ts +1 -1
  139. package/dist/src/planner/rules/access/rule-select-access-path.d.ts.map +1 -1
  140. package/dist/src/planner/rules/access/rule-select-access-path.js +51 -28
  141. package/dist/src/planner/rules/access/rule-select-access-path.js.map +1 -1
  142. package/dist/src/planner/rules/aggregate/rule-minmax-index-boundary.d.ts.map +1 -1
  143. package/dist/src/planner/rules/aggregate/rule-minmax-index-boundary.js +14 -1
  144. package/dist/src/planner/rules/aggregate/rule-minmax-index-boundary.js.map +1 -1
  145. package/dist/src/planner/rules/cache/rule-nested-loop-right-cache.d.ts.map +1 -1
  146. package/dist/src/planner/rules/cache/rule-nested-loop-right-cache.js +6 -4
  147. package/dist/src/planner/rules/cache/rule-nested-loop-right-cache.js.map +1 -1
  148. package/dist/src/planner/rules/join/index-nested-loop.d.ts.map +1 -1
  149. package/dist/src/planner/rules/join/index-nested-loop.js +13 -10
  150. package/dist/src/planner/rules/join/index-nested-loop.js.map +1 -1
  151. package/dist/src/planner/rules/join/rule-join-greedy-commute.d.ts +2 -1
  152. package/dist/src/planner/rules/join/rule-join-greedy-commute.d.ts.map +1 -1
  153. package/dist/src/planner/rules/join/rule-join-greedy-commute.js +45 -17
  154. package/dist/src/planner/rules/join/rule-join-greedy-commute.js.map +1 -1
  155. package/dist/src/planner/rules/join/rule-join-physical-selection.d.ts.map +1 -1
  156. package/dist/src/planner/rules/join/rule-join-physical-selection.js +5 -3
  157. package/dist/src/planner/rules/join/rule-join-physical-selection.js.map +1 -1
  158. package/dist/src/planner/rules/join/rule-quickpick-enumeration.d.ts +19 -1
  159. package/dist/src/planner/rules/join/rule-quickpick-enumeration.d.ts.map +1 -1
  160. package/dist/src/planner/rules/join/rule-quickpick-enumeration.js +36 -3
  161. package/dist/src/planner/rules/join/rule-quickpick-enumeration.js.map +1 -1
  162. package/dist/src/planner/rules/predicate/rule-filter-selectivity.js +4 -3
  163. package/dist/src/planner/rules/predicate/rule-filter-selectivity.js.map +1 -1
  164. package/dist/src/planner/rules/retrieve/rule-grow-retrieve.d.ts +14 -1
  165. package/dist/src/planner/rules/retrieve/rule-grow-retrieve.d.ts.map +1 -1
  166. package/dist/src/planner/rules/retrieve/rule-grow-retrieve.js +200 -13
  167. package/dist/src/planner/rules/retrieve/rule-grow-retrieve.js.map +1 -1
  168. package/dist/src/planner/stats/catalog-stats.js +1 -1
  169. package/dist/src/planner/stats/catalog-stats.js.map +1 -1
  170. package/dist/src/planner/stats/index.d.ts.map +1 -1
  171. package/dist/src/planner/stats/index.js +3 -4
  172. package/dist/src/planner/stats/index.js.map +1 -1
  173. package/dist/src/planner/stats/table-cardinality.d.ts +6 -6
  174. package/dist/src/planner/stats/table-cardinality.js +7 -7
  175. package/dist/src/planner/stats/table-cardinality.js.map +1 -1
  176. package/dist/src/planner/util/column-refs.d.ts +17 -0
  177. package/dist/src/planner/util/column-refs.d.ts.map +1 -0
  178. package/dist/src/planner/util/column-refs.js +30 -0
  179. package/dist/src/planner/util/column-refs.js.map +1 -0
  180. package/dist/src/planner/util/row-estimates.d.ts +91 -0
  181. package/dist/src/planner/util/row-estimates.d.ts.map +1 -1
  182. package/dist/src/planner/util/row-estimates.js +134 -18
  183. package/dist/src/planner/util/row-estimates.js.map +1 -1
  184. package/dist/src/runtime/emit/alter-table.d.ts +25 -5
  185. package/dist/src/runtime/emit/alter-table.d.ts.map +1 -1
  186. package/dist/src/runtime/emit/alter-table.js +144 -62
  187. package/dist/src/runtime/emit/alter-table.js.map +1 -1
  188. package/dist/src/runtime/emit/dml-executor.d.ts.map +1 -1
  189. package/dist/src/runtime/emit/dml-executor.js +4 -6
  190. package/dist/src/runtime/emit/dml-executor.js.map +1 -1
  191. package/dist/src/runtime/emit/insert.d.ts.map +1 -1
  192. package/dist/src/runtime/emit/insert.js +7 -0
  193. package/dist/src/runtime/emit/insert.js.map +1 -1
  194. package/dist/src/runtime/emit/materialized-view-helpers.d.ts.map +1 -1
  195. package/dist/src/runtime/emit/materialized-view-helpers.js +3 -3
  196. package/dist/src/runtime/emit/materialized-view-helpers.js.map +1 -1
  197. package/dist/src/runtime/emit/update.d.ts.map +1 -1
  198. package/dist/src/runtime/emit/update.js +15 -10
  199. package/dist/src/runtime/emit/update.js.map +1 -1
  200. package/dist/src/runtime/emit/write-coercion.d.ts +7 -0
  201. package/dist/src/runtime/emit/write-coercion.d.ts.map +1 -0
  202. package/dist/src/runtime/emit/write-coercion.js +20 -0
  203. package/dist/src/runtime/emit/write-coercion.js.map +1 -0
  204. package/dist/src/runtime/register.d.ts.map +1 -1
  205. package/dist/src/runtime/register.js +2 -0
  206. package/dist/src/runtime/register.js.map +1 -1
  207. package/dist/src/runtime/scalar-fusion.d.ts.map +1 -1
  208. package/dist/src/runtime/scalar-fusion.js +4 -0
  209. package/dist/src/runtime/scalar-fusion.js.map +1 -1
  210. package/dist/src/runtime/scheduler.d.ts +47 -0
  211. package/dist/src/runtime/scheduler.d.ts.map +1 -1
  212. package/dist/src/runtime/scheduler.js +105 -11
  213. package/dist/src/runtime/scheduler.js.map +1 -1
  214. package/dist/src/runtime/types.d.ts +18 -3
  215. package/dist/src/runtime/types.d.ts.map +1 -1
  216. package/dist/src/runtime/types.js +7 -5
  217. package/dist/src/runtime/types.js.map +1 -1
  218. package/dist/src/schema/catalog.d.ts +99 -2
  219. package/dist/src/schema/catalog.d.ts.map +1 -1
  220. package/dist/src/schema/catalog.js +100 -26
  221. package/dist/src/schema/catalog.js.map +1 -1
  222. package/dist/src/schema/lens-prover.d.ts.map +1 -1
  223. package/dist/src/schema/lens-prover.js +2 -1
  224. package/dist/src/schema/lens-prover.js.map +1 -1
  225. package/dist/src/schema/manager.d.ts.map +1 -1
  226. package/dist/src/schema/manager.js +10 -3
  227. package/dist/src/schema/manager.js.map +1 -1
  228. package/dist/src/schema/table.d.ts +0 -2
  229. package/dist/src/schema/table.d.ts.map +1 -1
  230. package/dist/src/schema/table.js.map +1 -1
  231. package/dist/src/vtab/best-access-plan.d.ts +89 -4
  232. package/dist/src/vtab/best-access-plan.d.ts.map +1 -1
  233. package/dist/src/vtab/best-access-plan.js +76 -1
  234. package/dist/src/vtab/best-access-plan.js.map +1 -1
  235. package/dist/src/vtab/memory/module.d.ts.map +1 -1
  236. package/dist/src/vtab/memory/module.js +27 -11
  237. package/dist/src/vtab/memory/module.js.map +1 -1
  238. package/dist/src/vtab/module.d.ts +7 -0
  239. package/dist/src/vtab/module.d.ts.map +1 -1
  240. package/dist/src/vtab/test-support/committed-read-conformance.d.ts +5 -2
  241. package/dist/src/vtab/test-support/committed-read-conformance.d.ts.map +1 -1
  242. package/dist/src/vtab/test-support/committed-read-conformance.js +55 -9
  243. package/dist/src/vtab/test-support/committed-read-conformance.js.map +1 -1
  244. package/package.json +3 -3
  245. package/dist/src/planner/rules/cache/rule-cte-optimization.d.ts +0 -17
  246. package/dist/src/planner/rules/cache/rule-cte-optimization.d.ts.map +0 -1
  247. package/dist/src/planner/rules/cache/rule-cte-optimization.js +0 -69
  248. package/dist/src/planner/rules/cache/rule-cte-optimization.js.map +0 -1
@@ -17,12 +17,23 @@ import { ColumnReferenceNode } from '../nodes/reference.js';
17
17
  * view-write envelope (`view-mutation-builder.ts`) so `new.<col>` resolves the same
18
18
  * way on both paths.
19
19
  */
20
- export function buildRowDefaultScope(parentScope, targetColumns, sourceAttributes, mutationContextVarNames) {
20
+ export function buildRowDefaultScope(parentScope, targetColumns, sourceAttributes, mutationContextVarNames,
21
+ /**
22
+ * Position to record on each reference, parallel to `targetColumns`. Defaults to
23
+ * the target-list position, which is where the column sits when the caller passes
24
+ * the source relation's own attributes. A caller whose attributes come from a row
25
+ * laid out differently — the INSERT row expansion, where a supplied column sits at
26
+ * its *table* position — passes the positions in that row instead, so the recorded
27
+ * index stays true for the planner analyses that read it (value lookup itself goes
28
+ * through the attribute id, not this field).
29
+ */
30
+ columnIndexes) {
21
31
  const scope = new RegisteredScope(parentScope);
22
32
  targetColumns.forEach((targetCol, index) => {
23
33
  if (index >= sourceAttributes.length)
24
34
  return;
25
35
  const sourceAttr = sourceAttributes[index];
36
+ const columnIndex = columnIndexes?.[index] ?? index;
26
37
  const colNameLower = targetCol.name.toLowerCase();
27
38
  // Resolve against the target column's *declared* type when available (it
28
39
  // carries the declared collation), so a DEFAULT comparing a supplied sibling
@@ -30,7 +41,7 @@ export function buildRowDefaultScope(parentScope, targetColumns, sourceAttribute
30
41
  // attribute's type reflects the supplied expression (e.g. a VALUES literal),
31
42
  // which is collation-blind.
32
43
  const refType = targetCol.type ?? sourceAttr.type;
33
- const makeRef = (exp, s) => new ColumnReferenceNode(s, exp, refType, sourceAttr.id, index);
44
+ const makeRef = (exp, s) => new ColumnReferenceNode(s, exp, refType, sourceAttr.id, columnIndex);
34
45
  scope.registerSymbol(`new.${colNameLower}`, makeRef);
35
46
  if (!mutationContextVarNames?.has(colNameLower)) {
36
47
  scope.registerSymbol(colNameLower, makeRef);
@@ -1 +1 @@
1
- {"version":3,"file":"default-scope.js","sourceRoot":"","sources":["../../../../src/planner/building/default-scope.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,oBAAoB,CACnC,WAAkB,EAClB,aAAmF,EACnF,gBAA0C,EAC1C,uBAA6C;IAE7C,MAAM,KAAK,GAAG,IAAI,eAAe,CAAC,WAAW,CAAC,CAAC;IAC/C,aAAa,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE;QAC1C,IAAI,KAAK,IAAI,gBAAgB,CAAC,MAAM;YAAE,OAAO;QAC7C,MAAM,UAAU,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAC3C,MAAM,YAAY,GAAG,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QAClD,yEAAyE;QACzE,6EAA6E;QAC7E,oEAAoE;QACpE,6EAA6E;QAC7E,4BAA4B;QAC5B,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,IAAI,UAAU,CAAC,IAAI,CAAC;QAClD,MAAM,OAAO,GAAsB,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAC7C,IAAI,mBAAmB,CAAC,CAAC,EAAE,GAAqB,EAAE,OAAO,EAAE,UAAU,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QAClF,KAAK,CAAC,cAAc,CAAC,OAAO,YAAY,EAAE,EAAE,OAAO,CAAC,CAAC;QACrD,IAAI,CAAC,uBAAuB,EAAE,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC;YACjD,KAAK,CAAC,cAAc,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QAC7C,CAAC;IACF,CAAC,CAAC,CAAC;IACH,OAAO,KAAK,CAAC;AACd,CAAC"}
1
+ {"version":3,"file":"default-scope.js","sourceRoot":"","sources":["../../../../src/planner/building/default-scope.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,oBAAoB,CACnC,WAAkB,EAClB,aAAmF,EACnF,gBAA0C,EAC1C,uBAA6C;AAC7C;;;;;;;;GAQG;AACH,aAAqC;IAErC,MAAM,KAAK,GAAG,IAAI,eAAe,CAAC,WAAW,CAAC,CAAC;IAC/C,aAAa,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE;QAC1C,IAAI,KAAK,IAAI,gBAAgB,CAAC,MAAM;YAAE,OAAO;QAC7C,MAAM,UAAU,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAC3C,MAAM,WAAW,GAAG,aAAa,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC;QACpD,MAAM,YAAY,GAAG,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QAClD,yEAAyE;QACzE,6EAA6E;QAC7E,oEAAoE;QACpE,6EAA6E;QAC7E,4BAA4B;QAC5B,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,IAAI,UAAU,CAAC,IAAI,CAAC;QAClD,MAAM,OAAO,GAAsB,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAC7C,IAAI,mBAAmB,CAAC,CAAC,EAAE,GAAqB,EAAE,OAAO,EAAE,UAAU,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;QACxF,KAAK,CAAC,cAAc,CAAC,OAAO,YAAY,EAAE,EAAE,OAAO,CAAC,CAAC;QACrD,IAAI,CAAC,uBAAuB,EAAE,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC;YACjD,KAAK,CAAC,cAAc,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QAC7C,CAAC;IACF,CAAC,CAAC,CAAC;IACH,OAAO,KAAK,CAAC;AACd,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"insert.d.ts","sourceRoot":"","sources":["../../../../src/planner/building/insert.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,GAAG,MAAM,qBAAqB,CAAC;AAChD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAU9D,OAAO,EAAE,QAAQ,EAAE,KAAK,kBAAkB,EAA2D,MAAM,uBAAuB,CAAC;AAKnI,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAMhD,OAAO,EAA+B,KAAK,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAkjB9F,wBAAgB,eAAe,CAC9B,GAAG,EAAE,eAAe,EACpB,IAAI,EAAE,GAAG,CAAC,UAAU;AACpB;;;;;;GAMG;AACH,gBAAgB,GAAE,aAAa,CAAC,mBAAmB,CAAM;AACzD;;;;;;;;;GASG;AACH,cAAc,CAAC,EAAE,kBAAkB;AACnC;;;;;;GAMG;AACH,UAAU,UAAQ;AAClB;;;;;;;;;;;;GAYG;AACH,sBAAsB,CAAC,EAAE,KAAK,GAC5B,QAAQ,CAuaV"}
1
+ {"version":3,"file":"insert.d.ts","sourceRoot":"","sources":["../../../../src/planner/building/insert.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,GAAG,MAAM,qBAAqB,CAAC;AAChD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAU9D,OAAO,EAAE,QAAQ,EAAE,KAAK,kBAAkB,EAA2D,MAAM,uBAAuB,CAAC;AAKnI,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAShD,OAAO,EAA+B,KAAK,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AA6oB9F,wBAAgB,eAAe,CAC9B,GAAG,EAAE,eAAe,EACpB,IAAI,EAAE,GAAG,CAAC,UAAU;AACpB;;;;;;GAMG;AACH,gBAAgB,GAAE,aAAa,CAAC,mBAAmB,CAAM;AACzD;;;;;;;;;GASG;AACH,cAAc,CAAC,EAAE,kBAAkB;AACnC;;;;;;GAMG;AACH,UAAU,UAAQ;AAClB;;;;;;;;;;;;GAYG;AACH,sBAAsB,CAAC,EAAE,KAAK,GAC5B,QAAQ,CAuaV"}
@@ -14,6 +14,8 @@ import { RegisteredScope } from '../scopes/registered.js';
14
14
  import { buildRowDefaultScope } from './default-scope.js';
15
15
  import { buildGeneratedColumnExpr } from './generated-column-scope.js';
16
16
  import { ColumnReferenceNode } from '../nodes/reference.js';
17
+ import { WriteCoercionNode } from '../nodes/scalar.js';
18
+ import { buildCellCoercion } from '../../types/validation.js';
17
19
  import { SinkNode } from '../nodes/sink-node.js';
18
20
  import { ConstraintCheckNode } from '../nodes/constraint-check-node.js';
19
21
  import { RowOpFlag } from '../../schema/table.js';
@@ -35,14 +37,153 @@ import { isViewSchema } from '../../schema/view.js';
35
37
  import { validateReservedTags } from '../../schema/reserved-tags.js';
36
38
  import { raiseStmtTagDiagnostics } from './tag-diagnostics.js';
37
39
  import { buildMutationContextAttributes, buildMutationContextValues, registerMutationContextSymbols } from './mutation-context.js';
40
+ /**
41
+ * Wrap a produced cell in a {@link WriteCoercionNode} converting it to `column`'s
42
+ * declared type — write-path semantics (`buildCellCoercion`: throws MISMATCH,
43
+ * identity-guards), applied inside the row-expansion projection chain so DEFAULT
44
+ * and generated expressions evaluated later in the chain read the DECLARED form.
45
+ * Skipped when provably inert, to keep untyped columns free of plan noise.
46
+ */
47
+ function coerceToDeclared(ctx, node, column) {
48
+ // A type imposing neither parse nor validate (e.g. ANY) — the converter could
49
+ // never change or reject a value.
50
+ if (!column.logicalType.parse && !column.logicalType.validate)
51
+ return node;
52
+ // Identity-matched source with no conformance guard — provably nothing to do.
53
+ if (buildCellCoercion(node.getType().logicalType, column.logicalType, column.name) === undefined)
54
+ return node;
55
+ return new WriteCoercionNode(ctx.scope, node, columnSchemaToScalarType(column), column.name);
56
+ }
57
+ /** A cell the expansion fills in at a later stage — NULL until then. */
58
+ function nullPlaceholder(ctx) {
59
+ return buildExpression(ctx, { type: 'literal', value: null });
60
+ }
61
+ /** Projection that re-reads the cell a previous stage already produced at `colIdx`. */
62
+ function passThroughCell(ctx, attr, colIdx, alias) {
63
+ return {
64
+ node: new ColumnReferenceNode(ctx.scope, { type: 'column', name: attr.name }, attr.type, attr.id, colIdx),
65
+ alias,
66
+ };
67
+ }
68
+ /** True when the column's DEFAULT is an AST expression rather than a literal value. */
69
+ function isExpressionDefault(dflt) {
70
+ return dflt !== undefined && typeof dflt === 'object' && dflt !== null && 'type' in dflt;
71
+ }
72
+ /** True when the source already produces exactly the table's columns, in table order. */
73
+ function sourceMatchesTableShape(targetColumns, tableSchema) {
74
+ return targetColumns.length === tableSchema.columns.length
75
+ && targetColumns.every((tc, i) => tc.name.toLowerCase() === tableSchema.columns[i].name.toLowerCase());
76
+ }
77
+ /**
78
+ * Projection A: expand the source to the table's column structure, converting each
79
+ * supplied or literal-default cell to its column's declared type in place. Expression
80
+ * defaults and generated columns get a NULL placeholder here; later stages replace them.
81
+ */
82
+ function buildBaseExpansion(ctx, sourceNode, targetColumns, tableSchema) {
83
+ const sourceAttributes = sourceNode.getAttributes();
84
+ const expressionDefaultCols = [];
85
+ const projections = tableSchema.columns.map((tableColumn, tableColIdx) => {
86
+ const targetColIndex = targetColumns.findIndex(tc => tc.name.toLowerCase() === tableColumn.name.toLowerCase());
87
+ if (tableColumn.generated) {
88
+ if (targetColIndex >= 0) {
89
+ throw new QuereusError(`Cannot INSERT into generated column '${tableColumn.name}'`, StatusCode.ERROR);
90
+ }
91
+ // Replaced by the generated-column chain.
92
+ return { node: nullPlaceholder(ctx), alias: tableColumn.name };
93
+ }
94
+ if (targetColIndex >= 0) {
95
+ if (targetColIndex >= sourceAttributes.length) {
96
+ throw new QuereusError(`Source has fewer columns than expected for INSERT target columns`, StatusCode.ERROR);
97
+ }
98
+ const sourceAttr = sourceAttributes[targetColIndex];
99
+ const columnRef = new ColumnReferenceNode(ctx.scope, { type: 'column', name: sourceAttr.name }, sourceAttr.type, sourceAttr.id, targetColIndex);
100
+ // NOTE: wrapping a supplied cell for conversion makes it a computed projection, so
101
+ // ProjectNode stops carrying the source's unique keys / functional dependencies
102
+ // through it. Correct conservatively — a conversion collapses spellings, so
103
+ // distinctness is not preserved in general. If an optimizer rule ever needs the
104
+ // expanded source's key set, teach the coercion node an injectivity claim for the
105
+ // conversions that provably preserve distinctness; do not drop the wrap.
106
+ return { node: coerceToDeclared(ctx, columnRef, tableColumn), alias: tableColumn.name };
107
+ }
108
+ const dflt = tableColumn.defaultValue;
109
+ if (isExpressionDefault(dflt)) {
110
+ // Computed by projection B against this projection's CONVERTED row, so a
111
+ // `new.<sibling>` read sees the declared form.
112
+ expressionDefaultCols.push(tableColIdx);
113
+ return { node: nullPlaceholder(ctx), alias: tableColumn.name };
114
+ }
115
+ if (dflt !== undefined) {
116
+ // Literal default — no row scope needed; convert to declared form.
117
+ return {
118
+ node: coerceToDeclared(ctx, buildExpression(ctx, { type: 'literal', value: dflt }), tableColumn),
119
+ alias: tableColumn.name
120
+ };
121
+ }
122
+ // Omitted, no default — NULL, nothing to convert.
123
+ return { node: nullPlaceholder(ctx), alias: tableColumn.name };
124
+ });
125
+ return { node: new ProjectNode(ctx.scope, sourceNode, projections), expressionDefaultCols };
126
+ }
127
+ /**
128
+ * Projection B: compute the omitted columns' *expression* defaults against projection
129
+ * A's converted row.
130
+ *
131
+ * A default can derive from a sibling the INSERT actually supplied, e.g.
132
+ * `slug text default (lower(new.title))`; the `new.`-qualified form is always
133
+ * available, and the bare form resolves too unless a same-named mutation-context
134
+ * variable shadows it (preserving the WITH CONTEXT precedence). Columns the INSERT
135
+ * omitted are intentionally NOT registered: they have no value yet in this same
136
+ * projection, so a default cannot depend on another column's default (which would
137
+ * impose an evaluation-order race).
138
+ */
139
+ function buildExpressionDefaultProjection(ctx, inputNode, expressionDefaultCols, targetColumns, tableSchema, defaultParentScope) {
140
+ const inputAttrs = inputNode.getAttributes();
141
+ // buildRowDefaultScope pairs targetColumns[i] with suppliedAttrs[i], so hand it
142
+ // projection A's output attributes AT THE SUPPLIED COLUMNS' TABLE POSITIONS: the
143
+ // supplied values now live in the expanded row (in declared form), no longer in
144
+ // the original source layout. Those same table positions are the ones the scope
145
+ // records on each reference.
146
+ const suppliedIndexes = targetColumns.map(tc => tableSchema.columnIndexMap.get(tc.name.toLowerCase()));
147
+ const suppliedAttrs = suppliedIndexes.map(idx => inputAttrs[idx]);
148
+ const contextVarNames = new Set((tableSchema.mutationContext ?? []).map(v => v.name.toLowerCase()));
149
+ const defaultScope = buildRowDefaultScope(defaultParentScope, targetColumns, suppliedAttrs, contextVarNames, suppliedIndexes);
150
+ const defaultCtx = { ...ctx, scope: defaultScope };
151
+ const exprDefaultSet = new Set(expressionDefaultCols);
152
+ const projections = tableSchema.columns.map((col, colIdx) => {
153
+ if (!exprDefaultSet.has(colIdx)) {
154
+ return passThroughCell(ctx, inputAttrs[colIdx], colIdx, col.name);
155
+ }
156
+ const defaultNode = buildExpression(defaultCtx, col.defaultValue);
157
+ // Validate that the default expression is deterministic — skip when the
158
+ // `nondeterministic_schema` option permits non-deterministic defaults.
159
+ if (!ctx.db.options.getBooleanOption('nondeterministic_schema')) {
160
+ validateDeterministicDefault(defaultNode, col.name, tableSchema.name);
161
+ }
162
+ return { node: coerceToDeclared(ctx, defaultNode, col), alias: col.name };
163
+ });
164
+ return new ProjectNode(ctx.scope, inputNode, projections);
165
+ }
38
166
  /**
39
167
  * Creates a uniform row expansion projection that maps any relational source
40
168
  * to the target table's column structure, filling in defaults for omitted columns.
41
169
  * This ensures INSERT works orthogonally with any relational source.
42
170
  *
43
- * Generated columns are handled in two stages:
44
- * 1. First projection expands source to table structure with NULLs for generated columns
45
- * 2. Second projection computes generated column values using the expanded row
171
+ * Every produced cell is converted to its column's DECLARED type in place
172
+ * (via {@link coerceToDeclared}), so anything evaluated later in the chain —
173
+ * an expression DEFAULT reading a supplied sibling via `new.<col>`, a generated
174
+ * column — sees the value in the form that will be stored, matching what the
175
+ * UPDATE and upsert DO UPDATE paths hand the same expressions. `emitInsert`'s
176
+ * row conversion then degrades to conformance guards (identity skip), keeping
177
+ * the convert-exactly-once discipline.
178
+ *
179
+ * The chain, each stage present only when needed:
180
+ * 1. {@link buildBaseExpansion} expands the source to table structure.
181
+ * 2. {@link buildExpressionDefaultProjection}, only when ≥1 omitted column carries
182
+ * an *expression* default — preserving the hot-path property that the common
183
+ * insert (every column supplied, or only literal/NULL defaults) allocates
184
+ * nothing here.
185
+ * 3. {@link createGeneratedColumnProjection} computes generated values, each
186
+ * converted before the next reads it.
46
187
  */
47
188
  function createRowExpansionProjection(ctx, sourceNode, targetColumns, tableReference, contextScope,
48
189
  /**
@@ -57,105 +198,19 @@ function createRowExpansionProjection(ctx, sourceNode, targetColumns, tableRefer
57
198
  defaultRowContextScope) {
58
199
  const tableSchema = tableReference.tableSchema;
59
200
  const hasGeneratedColumns = tableSchema.columns.some(col => col.generated);
60
- // If we're inserting into all columns in table order with no generated columns, no expansion needed
61
- if (!hasGeneratedColumns && targetColumns.length === tableSchema.columns.length) {
62
- const allColumnsMatch = targetColumns.every((tc, i) => tc.name.toLowerCase() === tableSchema.columns[i].name.toLowerCase());
63
- if (allColumnsMatch) {
64
- return sourceNode; // Source already matches table structure
65
- }
201
+ // Source already matches the table structure — no expansion needed.
202
+ if (!hasGeneratedColumns && sourceMatchesTableShape(targetColumns, tableSchema)) {
203
+ return sourceNode;
66
204
  }
67
- // Create projection expressions for each table column
68
- const projections = [];
69
- const sourceAttributes = sourceNode.getAttributes();
70
- // Expose the source-provided ("populated") columns to default expressions, built
71
- // lazily. A default can derive from a sibling the INSERT actually supplied, e.g.
72
- // `slug text default (lower(new.title))`; the `new.`-qualified form is always
73
- // available, and the bare form resolves too unless a same-named mutation-context
74
- // variable shadows it (preserving the WITH CONTEXT precedence). Columns the INSERT
75
- // omitted are intentionally NOT registered: they have no value yet in this same
76
- // projection, so a default cannot depend on another column's default (which would
77
- // impose an evaluation-order race). The scope is parented on contextScope so
78
- // mutation-context variables stay resolvable.
79
- //
80
- // INSERT is a hot path, so this is constructed only on demand — the first time an
81
- // omitted column carries an *expression* default. The common insert (every column
82
- // supplied, or only literal/NULL defaults) allocates nothing here.
83
- let rowScopedDefaultCtx;
84
- const defaultCtxFor = () => {
85
- if (rowScopedDefaultCtx)
86
- return rowScopedDefaultCtx;
87
- const contextVarNames = new Set((tableReference.tableSchema.mutationContext ?? []).map(v => v.name.toLowerCase()));
88
- const defaultScope = buildRowDefaultScope(contextScope ?? defaultRowContextScope ?? ctx.scope, targetColumns, sourceAttributes, contextVarNames);
89
- rowScopedDefaultCtx = { ...ctx, scope: defaultScope };
90
- return rowScopedDefaultCtx;
91
- };
92
- tableSchema.columns.forEach((tableColumn) => {
93
- // Find if this table column is in the target columns
94
- const targetColIndex = targetColumns.findIndex(tc => tc.name.toLowerCase() === tableColumn.name.toLowerCase());
95
- if (tableColumn.generated) {
96
- // Generated columns cannot be explicitly provided in INSERT
97
- if (targetColIndex >= 0) {
98
- throw new QuereusError(`Cannot INSERT into generated column '${tableColumn.name}'`, StatusCode.ERROR);
99
- }
100
- // Placeholder NULL — will be replaced in the second projection pass
101
- projections.push({
102
- node: buildExpression(ctx, { type: 'literal', value: null }),
103
- alias: tableColumn.name
104
- });
105
- }
106
- else if (targetColIndex >= 0) {
107
- // This column is provided by the source - reference the source column
108
- if (targetColIndex < sourceAttributes.length) {
109
- const sourceAttr = sourceAttributes[targetColIndex];
110
- // Create a column reference to the source attribute
111
- const columnRef = new ColumnReferenceNode(ctx.scope, { type: 'column', name: sourceAttr.name }, sourceAttr.type, sourceAttr.id, targetColIndex);
112
- projections.push({
113
- node: columnRef,
114
- alias: tableColumn.name
115
- });
116
- }
117
- else {
118
- throw new QuereusError(`Source has fewer columns than expected for INSERT target columns`, StatusCode.ERROR);
119
- }
120
- }
121
- else {
122
- // This column is omitted - use its default expression (which may read a
123
- // populated sibling via `new.`) or NULL.
124
- let defaultNode;
125
- if (tableColumn.defaultValue !== undefined) {
126
- // Use default value
127
- if (typeof tableColumn.defaultValue === 'object' && tableColumn.defaultValue !== null && 'type' in tableColumn.defaultValue) {
128
- // AST expression default — resolve against the row-scoped context that
129
- // exposes populated siblings as `new.<column>` (built lazily, on first use).
130
- defaultNode = buildExpression(defaultCtxFor(), tableColumn.defaultValue);
131
- // Validate that the default expression is deterministic — skip when the
132
- // `nondeterministic_schema` option permits non-deterministic defaults.
133
- if (!ctx.db.options.getBooleanOption('nondeterministic_schema')) {
134
- validateDeterministicDefault(defaultNode, tableColumn.name, tableSchema.name);
135
- }
136
- }
137
- else {
138
- // Literal default value — no row scope needed.
139
- defaultNode = buildExpression(ctx, { type: 'literal', value: tableColumn.defaultValue });
140
- }
141
- }
142
- else {
143
- // No default value - use NULL (no row scope needed).
144
- defaultNode = buildExpression(ctx, { type: 'literal', value: null });
145
- }
146
- projections.push({
147
- node: defaultNode,
148
- alias: tableColumn.name
149
- });
150
- }
151
- });
152
- // Create first projection node that expands source to table structure
153
- let resultNode = new ProjectNode(ctx.scope, sourceNode, projections);
154
- // Second pass: compute generated column values using the expanded row
155
- if (hasGeneratedColumns) {
156
- resultNode = createGeneratedColumnProjection(ctx, resultNode, tableSchema);
157
- }
158
- return resultNode;
205
+ const { node: expanded, expressionDefaultCols } = buildBaseExpansion(ctx, sourceNode, targetColumns, tableSchema);
206
+ const withDefaults = expressionDefaultCols.length === 0
207
+ ? expanded
208
+ : buildExpressionDefaultProjection(ctx, expanded, expressionDefaultCols, targetColumns, tableSchema,
209
+ // Parented on contextScope so mutation-context variables stay resolvable.
210
+ contextScope ?? defaultRowContextScope ?? ctx.scope);
211
+ return hasGeneratedColumns
212
+ ? createGeneratedColumnProjection(ctx, withDefaults, tableSchema)
213
+ : withDefaults;
159
214
  }
160
215
  /**
161
216
  * Creates a chain of projections that compute generated column values in
@@ -182,13 +237,12 @@ function createGeneratedColumnProjection(ctx, sourceNode, tableSchema) {
182
237
  const genProjections = tableSchema.columns.map((col, colIdx) => {
183
238
  if (colIdx === genColIdx) {
184
239
  const genNode = buildGeneratedColumnExpr(ctx, tableSchema, genColumn.name, genColumn.generatedExpr, inputAttributes);
185
- return { node: genNode, alias: col.name };
240
+ // Convert to declared form HERE, so a generated column reading another
241
+ // generated column sees the converted value — matching the per-cell
242
+ // order of the upsert DO UPDATE recompute (runtime/emit/dml-executor.ts).
243
+ return { node: coerceToDeclared(ctx, genNode, genColumn), alias: col.name };
186
244
  }
187
- const attr = inputAttributes[colIdx];
188
- return {
189
- node: new ColumnReferenceNode(ctx.scope, { type: 'column', name: attr.name }, attr.type, attr.id, colIdx),
190
- alias: col.name,
191
- };
245
+ return passThroughCell(ctx, inputAttributes[colIdx], colIdx, col.name);
192
246
  });
193
247
  currentNode = new ProjectNode(ctx.scope, currentNode, genProjections);
194
248
  }
@@ -1 +1 @@
1
- {"version":3,"file":"insert.js","sourceRoot":"","sources":["../../../../src/planner/building/insert.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"insert.js","sourceRoot":"","sources":["../../../../src/planner/building/insert.ts"],"names":[],"mappings":"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"}
@@ -13,6 +13,14 @@ export declare function buildAggregatePhase(input: RelationalPlanNode, stmt: AST
13
13
  alias: string;
14
14
  }[], hasAggregates: boolean, projections: Projection[], hasWrappedAggregates?: boolean, selectList?: readonly SelectListEntry[], starProjectionsByColumn?: ReadonlyMap<AST.ResultColumn, readonly Projection[]>): {
15
15
  output: RelationalPlanNode;
16
+ /**
17
+ * Whether this SELECT is an aggregate query — it names an aggregate function
18
+ * anywhere, has a GROUP BY, or has a HAVING (which makes one implicit group on its
19
+ * own). False means every field below is the early-out shape and `output` is the
20
+ * untouched input. Callers read this rather than re-deriving it: it is also what
21
+ * decides whether an ORDER BY may name an aggregate.
22
+ */
23
+ isAggregateQuery: boolean;
16
24
  aggregateScope?: RegisteredScope;
17
25
  needsFinalProjection: boolean;
18
26
  preAggregateSort: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"select-aggregates.d.ts","sourceRoot":"","sources":["../../../../src/planner/building/select-aggregates.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"select-aggregates.d.ts","sourceRoot":"","sources":["../../../../src/planner/building/select-aggregates.ts"],"names":[],"mappings":"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"}
@@ -43,24 +43,27 @@ export function buildAggregatePhase(input, stmt, selectContext, aggregates, hasA
43
43
  // later — so `hasOrderByOnlyAggregates` stays false for it.
44
44
  const needsPostAggregateSort = orderByNeedsPostAggregateSort(stmt.orderBy, selectContext, selectList);
45
45
  let hasOrderByOnlyAggregates = false;
46
- if (needsPostAggregateSort && (hasAggregates || hasGroupBy)) {
47
- const orderByAggs = collectOrderByAggregates(stmt.orderBy, selectContext, aggregates);
48
- if (orderByAggs.length > 0) {
49
- aggregates.push(...orderByAggs);
50
- hasAggregates = true;
51
- hasOrderByOnlyAggregates = true;
52
- }
53
- }
54
46
  // A `having` clause makes this an aggregate query on its own, exactly as SQLite and
55
47
  // PostgreSQL define it: with no `group by` the query has ONE implicit group over all
56
48
  // input rows, and `having` filters that single group. So a query with a `having` and
57
49
  // neither aggregates nor `group by` still goes through the aggregate pipeline below —
58
50
  // it builds an AggregateNode with no grouping keys and no aggregates, which yields
59
51
  // exactly one (empty) row, and every clause above it is subject to the usual coverage
60
- // rule. Returning early here instead is what silently dropped the predicate.
52
+ // rule. Returning early instead is what silently dropped the predicate. This is
53
+ // computed HERE, above the ORDER BY collection, because that collection asks the same
54
+ // question: `select 1 from t having 1 = 1 order by count(*)` is an aggregate query,
55
+ // so its ORDER BY aggregate is legal and must be collected.
61
56
  const isAggregateQuery = hasAggregates || hasGroupBy || Boolean(stmt.having);
57
+ if (needsPostAggregateSort && isAggregateQuery) {
58
+ const orderByAggs = collectOrderByAggregates(stmt.orderBy, selectContext, aggregates);
59
+ if (orderByAggs.length > 0) {
60
+ aggregates.push(...orderByAggs);
61
+ hasAggregates = true;
62
+ hasOrderByOnlyAggregates = true;
63
+ }
64
+ }
62
65
  if (!isAggregateQuery) {
63
- return { output: input, needsFinalProjection: false, preAggregateSort: false };
66
+ return { output: input, isAggregateQuery: false, needsFinalProjection: false, preAggregateSort: false };
64
67
  }
65
68
  let currentInput = input;
66
69
  // Handle pre-aggregate sorting for ORDER BY without GROUP BY. Skip when the
@@ -83,9 +86,9 @@ export function buildAggregatePhase(input, stmt, selectContext, aggregates, hasA
83
86
  // Build GROUP BY expressions, resolving 1-based positional references against the SELECT list.
84
87
  const groupByExpressions = stmt.groupBy ?
85
88
  stmt.groupBy.map(expr => buildOrdinalAwareExpression(selectContext, expr, selectList, 'GROUP BY', false)) : [];
86
- // Validate aggregate/non-aggregate mixing (must run after groupByExpressions are built
89
+ // Validate SELECT-list coverage (must run after groupByExpressions are built
87
90
  // so we can check column-coverage of SELECT projections against GROUP BY)
88
- validateAggregateProjections(projections, hasAggregates, !!hasGroupBy, groupByExpressions);
91
+ validateAggregateProjections(projections, groupByExpressions);
89
92
  // Create AggregateNode
90
93
  const aggregateNode = new AggregateNode(selectContext.scope, currentInput, groupByExpressions, aggregates);
91
94
  currentInput = aggregateNode;
@@ -150,6 +153,7 @@ export function buildAggregatePhase(input, stmt, selectContext, aggregates, hasA
150
153
  || !aggregateOutputIsSelectList(stmt, projections, aggregates, groupByExpressions, starProjectionsByColumn, selectContext);
151
154
  return {
152
155
  output: currentInput,
156
+ isAggregateQuery: true,
153
157
  aggregateScope: aggregateOutputScope,
154
158
  needsFinalProjection,
155
159
  preAggregateSort,
@@ -565,7 +569,7 @@ function findUngroupedPostAggregateRef(node, context, skipSubqueries = false, in
565
569
  return null;
566
570
  }
567
571
  /**
568
- * Validates that aggregate and non-aggregate projections don't mix inappropriately.
572
+ * Validates that every SELECT-list item is covered by this query's grouping.
569
573
  * Every non-aggregate column reference in the SELECT list must either (a) match a
570
574
  * GROUP BY column by attribute id, or (b) appear inside a subtree whose AST matches
571
575
  * a GROUP BY expression. This is intentionally stricter than full functional-dependency
@@ -574,22 +578,23 @@ function findUngroupedPostAggregateRef(node, context, skipSubqueries = false, in
574
578
  *
575
579
  * Only {@link buildAggregatePhase} calls this, and only from inside its
576
580
  * `isAggregateQuery` guard, so "no GROUP BY" here means "one implicit group with an
577
- * EMPTY set of grouping keys" — not "no grouping at all". The coverage walk therefore
578
- * runs for it too, and rejects every bare select-list column.
581
+ * EMPTY set of grouping keys" — not "no grouping at all". The coverage walk runs for
582
+ * that shape too, and the empty coverage set is exactly what makes it come out right:
583
+ * a bare column reference is rejected (the implicit group carries no base-table
584
+ * column), while an item that references no column of the query's input — a literal,
585
+ * a constant-folding expression, a scalar subquery, a `case` over an aggregate — has
586
+ * nothing for the walk to reject and is admitted. `select 'total', count(*) from t` is
587
+ * legal standard SQL; `select a, count(*) from t` is not, and the walk is what tells
588
+ * them apart.
579
589
  */
580
- function validateAggregateProjections(projections, hasAggregates, hasGroupBy, groupByExpressions) {
590
+ function validateAggregateProjections(projections, groupByExpressions) {
581
591
  if (projections.length === 0)
582
592
  return;
583
- if (hasAggregates && !hasGroupBy) {
584
- throw new QuereusError('Cannot mix aggregate and non-aggregate columns in SELECT list without GROUP BY', StatusCode.ERROR);
585
- }
586
593
  // The SELECT list is built against the pre-aggregate scope, so no aggregate
587
- // output attributes participate. With no GROUP BY the coverage set is empty, which
588
- // is exactly right for the one implicit group: it carries no base-table column, so
589
- // any bare column here is rejected. Skipping the walk for that shape is what let
590
- // `select * from t having 1 = 1` fall through to buildFinalAggregateProjections and
591
- // raise its internal-consistency assert ("Internal: SELECT * column 'id' is not a
592
- // GROUP BY key", StatusCode.INTERNAL) at the user instead of this message.
594
+ // output attributes participate. Skipping the walk for the ungrouped shape is what
595
+ // let `select * from t having 1 = 1` fall through to buildFinalAggregateProjections
596
+ // and raise its internal-consistency assert ("Internal: SELECT * column 'id' is not
597
+ // a GROUP BY key", StatusCode.INTERNAL) at the user instead of this message.
593
598
  const coverage = buildGroupByCoverage(groupByExpressions);
594
599
  for (const proj of projections) {
595
600
  assertGroupByCoverage(proj.node, coverage);