@quereus/quereus 2.6.0 → 2.8.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 (232) hide show
  1. package/README.md +222 -439
  2. package/dist/src/common/errors.d.ts +21 -0
  3. package/dist/src/common/errors.d.ts.map +1 -1
  4. package/dist/src/common/errors.js +29 -0
  5. package/dist/src/common/errors.js.map +1 -1
  6. package/dist/src/core/database.d.ts +10 -4
  7. package/dist/src/core/database.d.ts.map +1 -1
  8. package/dist/src/core/database.js +58 -18
  9. package/dist/src/core/database.js.map +1 -1
  10. package/dist/src/core/statement.d.ts.map +1 -1
  11. package/dist/src/core/statement.js +15 -5
  12. package/dist/src/core/statement.js.map +1 -1
  13. package/dist/src/emit/ast-stringify.d.ts.map +1 -1
  14. package/dist/src/emit/ast-stringify.js +0 -1
  15. package/dist/src/emit/ast-stringify.js.map +1 -1
  16. package/dist/src/func/builtins/explain.d.ts.map +1 -1
  17. package/dist/src/func/builtins/explain.js +39 -36
  18. package/dist/src/func/builtins/explain.js.map +1 -1
  19. package/dist/src/func/builtins/index.d.ts.map +1 -1
  20. package/dist/src/func/builtins/index.js +3 -2
  21. package/dist/src/func/builtins/index.js.map +1 -1
  22. package/dist/src/func/builtins/json-helpers.d.ts +1 -1
  23. package/dist/src/func/builtins/json-helpers.d.ts.map +1 -1
  24. package/dist/src/func/builtins/json-helpers.js.map +1 -1
  25. package/dist/src/func/builtins/json-tvf.js +2 -2
  26. package/dist/src/func/builtins/json-tvf.js.map +1 -1
  27. package/dist/src/func/builtins/json.d.ts.map +1 -1
  28. package/dist/src/func/builtins/json.js +5 -7
  29. package/dist/src/func/builtins/json.js.map +1 -1
  30. package/dist/src/func/builtins/scalar.d.ts +2 -1
  31. package/dist/src/func/builtins/scalar.d.ts.map +1 -1
  32. package/dist/src/func/builtins/scalar.js +33 -16
  33. package/dist/src/func/builtins/scalar.js.map +1 -1
  34. package/dist/src/func/builtins/schema.d.ts.map +1 -1
  35. package/dist/src/func/builtins/schema.js +14 -21
  36. package/dist/src/func/builtins/schema.js.map +1 -1
  37. package/dist/src/func/builtins/string.d.ts.map +1 -1
  38. package/dist/src/func/builtins/string.js +4 -2
  39. package/dist/src/func/builtins/string.js.map +1 -1
  40. package/dist/src/parser/ast.d.ts +1 -1
  41. package/dist/src/parser/ast.d.ts.map +1 -1
  42. package/dist/src/parser/lexer.d.ts.map +1 -1
  43. package/dist/src/parser/lexer.js +8 -48
  44. package/dist/src/parser/lexer.js.map +1 -1
  45. package/dist/src/parser/parser.d.ts.map +1 -1
  46. package/dist/src/parser/parser.js +30 -7
  47. package/dist/src/parser/parser.js.map +1 -1
  48. package/dist/src/parser/utils.d.ts +10 -1
  49. package/dist/src/parser/utils.d.ts.map +1 -1
  50. package/dist/src/parser/utils.js +23 -0
  51. package/dist/src/parser/utils.js.map +1 -1
  52. package/dist/src/planner/analysis/constraint-extractor.d.ts.map +1 -1
  53. package/dist/src/planner/analysis/constraint-extractor.js +0 -1
  54. package/dist/src/planner/analysis/constraint-extractor.js.map +1 -1
  55. package/dist/src/planner/building/constraint-builder.d.ts +12 -1
  56. package/dist/src/planner/building/constraint-builder.d.ts.map +1 -1
  57. package/dist/src/planner/building/constraint-builder.js +60 -1
  58. package/dist/src/planner/building/constraint-builder.js.map +1 -1
  59. package/dist/src/planner/building/create-view.d.ts.map +1 -1
  60. package/dist/src/planner/building/create-view.js +16 -0
  61. package/dist/src/planner/building/create-view.js.map +1 -1
  62. package/dist/src/planner/building/delete.d.ts.map +1 -1
  63. package/dist/src/planner/building/delete.js +17 -7
  64. package/dist/src/planner/building/delete.js.map +1 -1
  65. package/dist/src/planner/building/foreign-key-builder.d.ts.map +1 -1
  66. package/dist/src/planner/building/foreign-key-builder.js +24 -15
  67. package/dist/src/planner/building/foreign-key-builder.js.map +1 -1
  68. package/dist/src/planner/building/insert.d.ts.map +1 -1
  69. package/dist/src/planner/building/insert.js +55 -104
  70. package/dist/src/planner/building/insert.js.map +1 -1
  71. package/dist/src/planner/building/select-aggregates.d.ts +5 -2
  72. package/dist/src/planner/building/select-aggregates.d.ts.map +1 -1
  73. package/dist/src/planner/building/select-aggregates.js +184 -26
  74. package/dist/src/planner/building/select-aggregates.js.map +1 -1
  75. package/dist/src/planner/building/select-modifiers.d.ts +6 -2
  76. package/dist/src/planner/building/select-modifiers.d.ts.map +1 -1
  77. package/dist/src/planner/building/select-modifiers.js +20 -5
  78. package/dist/src/planner/building/select-modifiers.js.map +1 -1
  79. package/dist/src/planner/building/select-ordinal.d.ts +20 -0
  80. package/dist/src/planner/building/select-ordinal.d.ts.map +1 -0
  81. package/dist/src/planner/building/select-ordinal.js +62 -0
  82. package/dist/src/planner/building/select-ordinal.js.map +1 -0
  83. package/dist/src/planner/building/select.d.ts.map +1 -1
  84. package/dist/src/planner/building/select.js +64 -17
  85. package/dist/src/planner/building/select.js.map +1 -1
  86. package/dist/src/planner/building/update.d.ts.map +1 -1
  87. package/dist/src/planner/building/update.js +34 -27
  88. package/dist/src/planner/building/update.js.map +1 -1
  89. package/dist/src/planner/building/with.d.ts.map +1 -1
  90. package/dist/src/planner/building/with.js +25 -2
  91. package/dist/src/planner/building/with.js.map +1 -1
  92. package/dist/src/planner/nodes/constraint-check-node.d.ts +22 -1
  93. package/dist/src/planner/nodes/constraint-check-node.d.ts.map +1 -1
  94. package/dist/src/planner/nodes/constraint-check-node.js +36 -6
  95. package/dist/src/planner/nodes/constraint-check-node.js.map +1 -1
  96. package/dist/src/planner/nodes/filter.d.ts.map +1 -1
  97. package/dist/src/planner/nodes/filter.js +6 -2
  98. package/dist/src/planner/nodes/filter.js.map +1 -1
  99. package/dist/src/planner/nodes/recursive-cte-node.d.ts +5 -3
  100. package/dist/src/planner/nodes/recursive-cte-node.d.ts.map +1 -1
  101. package/dist/src/planner/nodes/recursive-cte-node.js +24 -8
  102. package/dist/src/planner/nodes/recursive-cte-node.js.map +1 -1
  103. package/dist/src/planner/nodes/returning-node.d.ts.map +1 -1
  104. package/dist/src/planner/nodes/returning-node.js +5 -12
  105. package/dist/src/planner/nodes/returning-node.js.map +1 -1
  106. package/dist/src/planner/rules/access/rule-select-access-path.d.ts.map +1 -1
  107. package/dist/src/planner/rules/access/rule-select-access-path.js +22 -26
  108. package/dist/src/planner/rules/access/rule-select-access-path.js.map +1 -1
  109. package/dist/src/planner/rules/join/rule-join-physical-selection.d.ts.map +1 -1
  110. package/dist/src/planner/rules/join/rule-join-physical-selection.js +2 -2
  111. package/dist/src/planner/rules/join/rule-join-physical-selection.js.map +1 -1
  112. package/dist/src/planner/rules/join/rule-quickpick-enumeration.d.ts.map +1 -1
  113. package/dist/src/planner/rules/join/rule-quickpick-enumeration.js +7 -3
  114. package/dist/src/planner/rules/join/rule-quickpick-enumeration.js.map +1 -1
  115. package/dist/src/planner/rules/predicate/rule-filter-merge.js.map +1 -1
  116. package/dist/src/planner/rules/predicate/rule-predicate-pushdown.js.map +1 -1
  117. package/dist/src/planner/rules/retrieve/rule-grow-retrieve.d.ts.map +1 -1
  118. package/dist/src/planner/rules/retrieve/rule-grow-retrieve.js +161 -9
  119. package/dist/src/planner/rules/retrieve/rule-grow-retrieve.js.map +1 -1
  120. package/dist/src/planner/rules/subquery/rule-subquery-decorrelation.d.ts.map +1 -1
  121. package/dist/src/planner/rules/subquery/rule-subquery-decorrelation.js +32 -2
  122. package/dist/src/planner/rules/subquery/rule-subquery-decorrelation.js.map +1 -1
  123. package/dist/src/planner/validation/returning-qualifier-validator.d.ts +8 -0
  124. package/dist/src/planner/validation/returning-qualifier-validator.d.ts.map +1 -0
  125. package/dist/src/planner/validation/returning-qualifier-validator.js +63 -0
  126. package/dist/src/planner/validation/returning-qualifier-validator.js.map +1 -0
  127. package/dist/src/runtime/deferred-constraint-queue.d.ts.map +1 -1
  128. package/dist/src/runtime/deferred-constraint-queue.js +3 -0
  129. package/dist/src/runtime/deferred-constraint-queue.js.map +1 -1
  130. package/dist/src/runtime/emit/alter-table.d.ts.map +1 -1
  131. package/dist/src/runtime/emit/alter-table.js +286 -7
  132. package/dist/src/runtime/emit/alter-table.js.map +1 -1
  133. package/dist/src/runtime/emit/binary.d.ts.map +1 -1
  134. package/dist/src/runtime/emit/binary.js +12 -7
  135. package/dist/src/runtime/emit/binary.js.map +1 -1
  136. package/dist/src/runtime/emit/constraint-check.d.ts.map +1 -1
  137. package/dist/src/runtime/emit/constraint-check.js +125 -62
  138. package/dist/src/runtime/emit/constraint-check.js.map +1 -1
  139. package/dist/src/runtime/emit/create-assertion.d.ts.map +1 -1
  140. package/dist/src/runtime/emit/create-assertion.js +6 -6
  141. package/dist/src/runtime/emit/create-assertion.js.map +1 -1
  142. package/dist/src/runtime/emit/dml-executor.d.ts.map +1 -1
  143. package/dist/src/runtime/emit/dml-executor.js +133 -76
  144. package/dist/src/runtime/emit/dml-executor.js.map +1 -1
  145. package/dist/src/runtime/emit/pragma.d.ts.map +1 -1
  146. package/dist/src/runtime/emit/pragma.js +3 -4
  147. package/dist/src/runtime/emit/pragma.js.map +1 -1
  148. package/dist/src/runtime/emit/recursive-cte.d.ts.map +1 -1
  149. package/dist/src/runtime/emit/recursive-cte.js +61 -10
  150. package/dist/src/runtime/emit/recursive-cte.js.map +1 -1
  151. package/dist/src/runtime/emit/scalar-function.d.ts.map +1 -1
  152. package/dist/src/runtime/emit/scalar-function.js +2 -1
  153. package/dist/src/runtime/emit/scalar-function.js.map +1 -1
  154. package/dist/src/runtime/emit/scan.d.ts.map +1 -1
  155. package/dist/src/runtime/emit/scan.js.map +1 -1
  156. package/dist/src/runtime/emit/table-valued-function.d.ts.map +1 -1
  157. package/dist/src/runtime/emit/table-valued-function.js +6 -4
  158. package/dist/src/runtime/emit/table-valued-function.js.map +1 -1
  159. package/dist/src/runtime/emit/update.d.ts.map +1 -1
  160. package/dist/src/runtime/emit/update.js +8 -5
  161. package/dist/src/runtime/emit/update.js.map +1 -1
  162. package/dist/src/runtime/foreign-key-actions.js +2 -2
  163. package/dist/src/runtime/foreign-key-actions.js.map +1 -1
  164. package/dist/src/schema/catalog.d.ts +2 -0
  165. package/dist/src/schema/catalog.d.ts.map +1 -1
  166. package/dist/src/schema/catalog.js +18 -0
  167. package/dist/src/schema/catalog.js.map +1 -1
  168. package/dist/src/schema/column.d.ts +7 -0
  169. package/dist/src/schema/column.d.ts.map +1 -1
  170. package/dist/src/schema/column.js.map +1 -1
  171. package/dist/src/schema/function.d.ts +4 -3
  172. package/dist/src/schema/function.d.ts.map +1 -1
  173. package/dist/src/schema/function.js.map +1 -1
  174. package/dist/src/schema/manager.d.ts +39 -3
  175. package/dist/src/schema/manager.d.ts.map +1 -1
  176. package/dist/src/schema/manager.js +219 -20
  177. package/dist/src/schema/manager.js.map +1 -1
  178. package/dist/src/schema/rename-rewriter.d.ts +4 -0
  179. package/dist/src/schema/rename-rewriter.d.ts.map +1 -0
  180. package/dist/src/schema/rename-rewriter.js +506 -0
  181. package/dist/src/schema/rename-rewriter.js.map +1 -0
  182. package/dist/src/schema/schema-differ.d.ts.map +1 -1
  183. package/dist/src/schema/schema-differ.js +41 -4
  184. package/dist/src/schema/schema-differ.js.map +1 -1
  185. package/dist/src/schema/table.d.ts +67 -2
  186. package/dist/src/schema/table.d.ts.map +1 -1
  187. package/dist/src/schema/table.js +144 -0
  188. package/dist/src/schema/table.js.map +1 -1
  189. package/dist/src/util/async-iterator.d.ts +2 -1
  190. package/dist/src/util/async-iterator.d.ts.map +1 -1
  191. package/dist/src/util/async-iterator.js +4 -4
  192. package/dist/src/util/async-iterator.js.map +1 -1
  193. package/dist/src/util/key-serializer.d.ts +3 -0
  194. package/dist/src/util/key-serializer.d.ts.map +1 -1
  195. package/dist/src/util/key-serializer.js +19 -2
  196. package/dist/src/util/key-serializer.js.map +1 -1
  197. package/dist/src/util/patterns.d.ts.map +1 -1
  198. package/dist/src/util/patterns.js +58 -10
  199. package/dist/src/util/patterns.js.map +1 -1
  200. package/dist/src/util/plugin-helper.js +1 -1
  201. package/dist/src/util/plugin-helper.js.map +1 -1
  202. package/dist/src/vtab/best-access-plan.d.ts +7 -0
  203. package/dist/src/vtab/best-access-plan.d.ts.map +1 -1
  204. package/dist/src/vtab/best-access-plan.js.map +1 -1
  205. package/dist/src/vtab/connection.d.ts +7 -0
  206. package/dist/src/vtab/connection.d.ts.map +1 -1
  207. package/dist/src/vtab/manifest.d.ts +4 -0
  208. package/dist/src/vtab/manifest.d.ts.map +1 -1
  209. package/dist/src/vtab/memory/index.d.ts +8 -0
  210. package/dist/src/vtab/memory/index.d.ts.map +1 -1
  211. package/dist/src/vtab/memory/index.js +11 -0
  212. package/dist/src/vtab/memory/index.js.map +1 -1
  213. package/dist/src/vtab/memory/layer/base.d.ts +8 -1
  214. package/dist/src/vtab/memory/layer/base.d.ts.map +1 -1
  215. package/dist/src/vtab/memory/layer/base.js +36 -2
  216. package/dist/src/vtab/memory/layer/base.js.map +1 -1
  217. package/dist/src/vtab/memory/layer/manager.d.ts +5 -1
  218. package/dist/src/vtab/memory/layer/manager.d.ts.map +1 -1
  219. package/dist/src/vtab/memory/layer/manager.js +77 -14
  220. package/dist/src/vtab/memory/layer/manager.js.map +1 -1
  221. package/dist/src/vtab/memory/layer/transaction.d.ts.map +1 -1
  222. package/dist/src/vtab/memory/layer/transaction.js +28 -3
  223. package/dist/src/vtab/memory/layer/transaction.js.map +1 -1
  224. package/dist/src/vtab/memory/module.d.ts +6 -1
  225. package/dist/src/vtab/memory/module.d.ts.map +1 -1
  226. package/dist/src/vtab/memory/module.js +93 -14
  227. package/dist/src/vtab/memory/module.js.map +1 -1
  228. package/dist/src/vtab/memory/utils/predicate.d.ts +27 -0
  229. package/dist/src/vtab/memory/utils/predicate.d.ts.map +1 -0
  230. package/dist/src/vtab/memory/utils/predicate.js +182 -0
  231. package/dist/src/vtab/memory/utils/predicate.js.map +1 -0
  232. package/package.json +3 -3
@@ -51,7 +51,7 @@ function splitConjuncts(pred) {
51
51
  function combineConjuncts(conjuncts) {
52
52
  if (conjuncts.length === 0)
53
53
  return null;
54
- return conjuncts.reduce((acc, cur) => new BinaryOpNode(cur.scope, { type: 'binary', operator: 'AND' }, acc, cur));
54
+ return conjuncts.reduce((acc, cur) => new BinaryOpNode(cur.scope, { type: 'binary', operator: 'AND', left: acc.expression, right: cur.expression }, acc, cur));
55
55
  }
56
56
  /**
57
57
  * Identify a decorrelation candidate from a single conjunct.
@@ -101,6 +101,21 @@ function collectDefinedAttrIds(node) {
101
101
  walk(node);
102
102
  return ids;
103
103
  }
104
+ /**
105
+ * Returns true if the plan tree contains any column reference to an
106
+ * attribute id in `attrIds`. Used to detect leftover correlation in
107
+ * residual inner-only predicates (which may include nested subqueries).
108
+ */
109
+ function referencesAnyAttr(node, attrIds) {
110
+ if (node instanceof ColumnReferenceNode && attrIds.has(node.attributeId)) {
111
+ return true;
112
+ }
113
+ for (const child of node.getChildren()) {
114
+ if (referencesAnyAttr(child, attrIds))
115
+ return true;
116
+ }
117
+ return false;
118
+ }
104
119
  /**
105
120
  * For an EXISTS subquery, extract the inner relational source and separate
106
121
  * the correlation predicate from inner-only predicates.
@@ -149,6 +164,15 @@ function extractExistsCorrelation(subqueryRoot, outerAttrIds) {
149
164
  // No simple equi-correlation found
150
165
  return null;
151
166
  }
167
+ // Safety: residual inner-only conjuncts must not still reference outer
168
+ // attributes. If they do (e.g. a correlated predicate that didn't match
169
+ // the strict equi-pattern, such as `outer.x = cast(inner.y as real)` or
170
+ // `outer.x > inner.y`), decorrelation cannot be safely applied without
171
+ // preserving the correlation, so abort.
172
+ for (const conj of innerOnlyConjuncts) {
173
+ if (referencesAnyAttr(conj, outerAttrIds))
174
+ return null;
175
+ }
152
176
  const correlationCondition = combineConjuncts(correlationConjuncts);
153
177
  const residualInnerFilter = combineConjuncts(innerOnlyConjuncts);
154
178
  return { innerSource, correlationCondition, residualInnerFilter };
@@ -200,7 +224,7 @@ function extractInCorrelation(inNode, outerAttrIds) {
200
224
  const innerColRef = new ColumnReferenceNode(outerColRef.scope, outerColRef.expression, // reuse expression for formatting
201
225
  innerFirstAttr.type, innerFirstAttr.id, 0 // column index in the inner relation
202
226
  );
203
- const equiCondition = new BinaryOpNode(outerColRef.scope, { type: 'binary', operator: '=' }, outerColRef, innerColRef);
227
+ const equiCondition = new BinaryOpNode(outerColRef.scope, { type: 'binary', operator: '=', left: outerColRef.expression, right: innerColRef.expression }, outerColRef, innerColRef);
204
228
  // Walk through the subquery to find any additional correlation filters
205
229
  let current = subqueryRoot;
206
230
  // Skip Project and Alias nodes
@@ -225,6 +249,12 @@ function extractInCorrelation(inNode, outerAttrIds) {
225
249
  innerOnly.push(conj);
226
250
  }
227
251
  }
252
+ // Safety: residual inner-only conjuncts must not still reference outer
253
+ // attributes. See note in extractExistsCorrelation.
254
+ for (const conj of innerOnly) {
255
+ if (referencesAnyAttr(conj, outerAttrIds))
256
+ return null;
257
+ }
228
258
  const allCorrelation = [equiCondition, ...additionalCorrelation];
229
259
  const correlationCondition = combineConjuncts(allCorrelation);
230
260
  const residualInnerFilter = combineConjuncts(innerOnly);
@@ -1 +1 @@
1
- {"version":3,"file":"rule-subquery-decorrelation.js","sourceRoot":"","sources":["../../../../../src/planner/rules/subquery/rule-subquery-decorrelation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rule-subquery-decorrelation.js","sourceRoot":"","sources":["../../../../../src/planner/rules/subquery/rule-subquery-decorrelation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAE5D,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAiB,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAE7D,MAAM,GAAG,GAAG,YAAY,CAAC,uCAAuC,CAAC,CAAC;AAWlE;;GAEG;AACH,SAAS,cAAc,CAAC,IAAoB;IAC3C,MAAM,MAAM,GAAqB,EAAE,CAAC;IACpC,MAAM,KAAK,GAAqB,CAAC,IAAI,CAAC,CAAC;IACvC,OAAO,KAAK,CAAC,MAAM,EAAE,CAAC;QACrB,MAAM,CAAC,GAAG,KAAK,CAAC,GAAG,EAAG,CAAC;QACvB,IAAI,CAAC,YAAY,YAAY,IAAI,CAAC,CAAC,UAAU,CAAC,QAAQ,KAAK,KAAK,EAAE,CAAC;YAClE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;QAC7B,CAAC;aAAM,CAAC;YACP,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAChB,CAAC;IACF,CAAC;IACD,OAAO,MAAM,CAAC;AACf,CAAC;AAED;;GAEG;AACH,SAAS,gBAAgB,CAAC,SAA2B;IACpD,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACxC,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CACpC,IAAI,YAAY,CACf,GAAG,CAAC,KAAK,EACT,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,CAAC,UAAU,EAAE,KAAK,EAAE,GAAG,CAAC,UAAU,EAAE,EAChF,GAAG,EACH,GAAG,CACH,CACD,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,iBAAiB,CAAC,IAAoB;IAC9C,mBAAmB;IACnB,IAAI,IAAI,YAAY,UAAU,EAAE,CAAC;QAChC,IAAI,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YACzC,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;QACtE,CAAC;QACD,OAAO,IAAI,CAAC;IACb,CAAC;IAED,uBAAuB;IACvB,IAAI,IAAI,YAAY,WAAW,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,KAAK,KAAK,EAAE,CAAC;QACvE,IAAI,IAAI,CAAC,OAAO,YAAY,UAAU,EAAE,CAAC;YACxC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;YAC5B,IAAI,oBAAoB,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;YACxE,CAAC;QACF,CAAC;QACD,OAAO,IAAI,CAAC;IACb,CAAC;IAED,+BAA+B;IAC/B,IAAI,IAAI,YAAY,MAAM,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;QAC3D,IAAI,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACvC,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;QACtE,CAAC;QACD,OAAO,IAAI,CAAC;IACb,CAAC;IAED,OAAO,IAAI,CAAC;AACb,CAAC;AAED;;GAEG;AACH,SAAS,qBAAqB,CAAC,IAAc;IAC5C,MAAM,GAAG,GAAG,IAAI,GAAG,EAAU,CAAC;IAC9B,SAAS,IAAI,CAAC,CAAW;QACxB,IAAI,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC;YACzB,KAAK,MAAM,IAAI,IAAI,CAAC,CAAC,aAAa,EAAE,EAAE,CAAC;gBACtC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAClB,CAAC;QACF,CAAC;QACD,KAAK,MAAM,KAAK,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;YACrC,IAAI,CAAC,KAAK,CAAC,CAAC;QACb,CAAC;IACF,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,CAAC;IACX,OAAO,GAAG,CAAC;AACZ,CAAC;AAED;;;;GAIG;AACH,SAAS,iBAAiB,CAAC,IAAc,EAAE,OAAoB;IAC9D,IAAI,IAAI,YAAY,mBAAmB,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;QAC1E,OAAO,IAAI,CAAC;IACb,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;QACxC,IAAI,iBAAiB,CAAC,KAAK,EAAE,OAAO,CAAC;YAAE,OAAO,IAAI,CAAC;IACpD,CAAC;IACD,OAAO,KAAK,CAAC;AACd,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,SAAS,wBAAwB,CAChC,YAAgC,EAChC,YAAyB;IAMzB,uDAAuD;IACvD,IAAI,OAAO,GAAuB,YAAY,CAAC;IAE/C,kFAAkF;IAClF,OAAO,OAAO,CAAC,QAAQ,KAAK,YAAY,CAAC,OAAO,IAAI,OAAO,CAAC,QAAQ,KAAK,YAAY,CAAC,KAAK,EAAE,CAAC;QAC7F,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;QACvC,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC3B,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC;YAAE,MAAM;QACrC,OAAO,GAAG,MAAM,CAAC;IAClB,CAAC;IAED,4DAA4D;IAC5D,IAAI,CAAC,CAAC,OAAO,YAAY,UAAU,CAAC,EAAE,CAAC;QACtC,8EAA8E;QAC9E,OAAO,IAAI,CAAC;IACb,CAAC;IAED,MAAM,MAAM,GAAG,OAAO,CAAC;IACvB,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC;IAClC,MAAM,YAAY,GAAG,qBAAqB,CAAC,WAAW,CAAC,CAAC;IAExD,mDAAmD;IACnD,MAAM,SAAS,GAAG,cAAc,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACnD,MAAM,oBAAoB,GAAqB,EAAE,CAAC;IAClD,MAAM,kBAAkB,GAAqB,EAAE,CAAC;IAEhD,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;QAC9B,IAAI,iBAAiB,CAAC,IAAI,EAAE,YAAY,EAAE,YAAY,CAAC,EAAE,CAAC;YACzD,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjC,CAAC;aAAM,CAAC;YACP,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/B,CAAC;IACF,CAAC;IAED,IAAI,oBAAoB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvC,mCAAmC;QACnC,OAAO,IAAI,CAAC;IACb,CAAC;IAED,uEAAuE;IACvE,wEAAwE;IACxE,wEAAwE;IACxE,uEAAuE;IACvE,wCAAwC;IACxC,KAAK,MAAM,IAAI,IAAI,kBAAkB,EAAE,CAAC;QACvC,IAAI,iBAAiB,CAAC,IAAI,EAAE,YAAY,CAAC;YAAE,OAAO,IAAI,CAAC;IACxD,CAAC;IAED,MAAM,oBAAoB,GAAG,gBAAgB,CAAC,oBAAoB,CAAE,CAAC;IACrE,MAAM,mBAAmB,GAAG,gBAAgB,CAAC,kBAAkB,CAAC,CAAC;IAEjE,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,CAAC;AACnE,CAAC;AAED;;;GAGG;AACH,SAAS,iBAAiB,CACzB,IAAoB,EACpB,YAAyB,EACzB,YAAyB;IAEzB,IAAI,CAAC,CAAC,IAAI,YAAY,YAAY,CAAC;QAAE,OAAO,KAAK,CAAC;IAClD,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,KAAK,GAAG;QAAE,OAAO,KAAK,CAAC;IACnD,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,YAAY,mBAAmB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,YAAY,mBAAmB,CAAC;QAAE,OAAO,KAAK,CAAC;IAE9G,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;IACrC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;IAEvC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC1D,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;AAC7D,CAAC;AAED;;;;GAIG;AACH,SAAS,oBAAoB,CAC5B,MAAc,EACd,YAAyB;IAMzB,IAAI,CAAC,MAAM,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAEhC,4DAA4D;IAC5D,4DAA4D;IAC5D,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC;IAEnC,gEAAgE;IAChE,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,YAAY,mBAAmB,CAAC,EAAE,CAAC;QACxD,0DAA0D;QAC1D,OAAO,IAAI,CAAC;IACb,CAAC;IAED,MAAM,WAAW,GAAG,MAAM,CAAC,SAAS,CAAC;IACrC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,CAAC;QAChD,kEAAkE;QAClE,OAAO,IAAI,CAAC;IACb,CAAC;IAED,6DAA6D;IAC7D,MAAM,UAAU,GAAG,YAAY,CAAC,aAAa,EAAE,CAAC;IAChD,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACzC,MAAM,cAAc,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;IAErC,4DAA4D;IAC5D,qFAAqF;IACrF,MAAM,WAAW,GAAG,IAAI,mBAAmB,CAC1C,WAAW,CAAC,KAAK,EACjB,WAAW,CAAC,UAAU,EAAG,kCAAkC;IAC3D,cAAc,CAAC,IAAI,EACnB,cAAc,CAAC,EAAE,EACjB,CAAC,CAAC,qCAAqC;KACvC,CAAC;IAEF,MAAM,aAAa,GAAG,IAAI,YAAY,CACrC,WAAW,CAAC,KAAK,EACjB,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,WAAW,CAAC,UAAU,EAAE,KAAK,EAAE,WAAW,CAAC,UAAU,EAAE,EAC9F,WAAW,EACX,WAAW,CACX,CAAC;IAEF,uEAAuE;IACvE,IAAI,OAAO,GAAuB,YAAY,CAAC;IAE/C,+BAA+B;IAC/B,OAAO,OAAO,CAAC,QAAQ,KAAK,YAAY,CAAC,OAAO,IAAI,OAAO,CAAC,QAAQ,KAAK,YAAY,CAAC,KAAK,EAAE,CAAC;QAC7F,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;QACvC,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC3B,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC;YAAE,MAAM;QACrC,OAAO,GAAG,MAAM,CAAC;IAClB,CAAC;IAED,8DAA8D;IAC9D,IAAI,OAAO,YAAY,UAAU,EAAE,CAAC;QACnC,MAAM,YAAY,GAAG,qBAAqB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC3D,MAAM,SAAS,GAAG,cAAc,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACpD,MAAM,qBAAqB,GAAqB,EAAE,CAAC;QACnD,MAAM,SAAS,GAAqB,EAAE,CAAC;QAEvC,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;YAC9B,IAAI,iBAAiB,CAAC,IAAI,EAAE,YAAY,EAAE,YAAY,CAAC,EAAE,CAAC;gBACzD,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClC,CAAC;iBAAM,CAAC;gBACP,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtB,CAAC;QACF,CAAC;QAED,uEAAuE;QACvE,oDAAoD;QACpD,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;YAC9B,IAAI,iBAAiB,CAAC,IAAI,EAAE,YAAY,CAAC;gBAAE,OAAO,IAAI,CAAC;QACxD,CAAC;QAED,MAAM,cAAc,GAAG,CAAC,aAAa,EAAE,GAAG,qBAAqB,CAAC,CAAC;QACjE,MAAM,oBAAoB,GAAG,gBAAgB,CAAC,cAAc,CAAE,CAAC;QAC/D,MAAM,mBAAmB,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;QAExD,OAAO;YACN,WAAW,EAAE,OAAO,CAAC,MAAM;YAC3B,oBAAoB;YACpB,mBAAmB;SACnB,CAAC;IACH,CAAC;IAED,oEAAoE;IACpE,OAAO;QACN,WAAW,EAAE,OAAO;QACpB,oBAAoB,EAAE,aAAa;QACnC,mBAAmB,EAAE,IAAI;KACzB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,IAAc,EAAE,QAAoB;IAC7E,IAAI,CAAC,CAAC,IAAI,YAAY,UAAU,CAAC;QAAE,OAAO,IAAI,CAAC;IAE/C,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC;IAChC,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAEzE,4CAA4C;IAC5C,MAAM,SAAS,GAAG,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAEjD,yCAAyC;IACzC,IAAI,cAAc,GAAG,CAAC,CAAC,CAAC;IACxB,IAAI,SAAS,GAAkC,IAAI,CAAC;IAEpD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3C,SAAS,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5C,IAAI,SAAS,EAAE,CAAC;YACf,cAAc,GAAG,CAAC,CAAC;YACnB,MAAM;QACP,CAAC;IACF,CAAC;IAED,IAAI,CAAC,SAAS,IAAI,cAAc,KAAK,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAErD,GAAG,CAAC,sDAAsD,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC;IAEhF,kDAAkD;IAClD,IAAI,UAAU,GAIH,IAAI,CAAC;IAEhB,IAAI,SAAS,CAAC,YAAY,YAAY,UAAU,EAAE,CAAC;QAClD,UAAU,GAAG,wBAAwB,CAAC,SAAS,CAAC,YAAY,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IACtF,CAAC;SAAM,IAAI,SAAS,CAAC,YAAY,YAAY,MAAM,EAAE,CAAC;QACrD,UAAU,GAAG,oBAAoB,CAAC,SAAS,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;IACzE,CAAC;IAED,IAAI,CAAC,UAAU,EAAE,CAAC;QACjB,GAAG,CAAC,mEAAmE,CAAC,CAAC;QACzE,OAAO,IAAI,CAAC;IACb,CAAC;IAED,MAAM,EAAE,WAAW,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,GAAG,UAAU,CAAC;IAE9E,wFAAwF;IACxF,IAAI,SAAS,GAAuB,WAAW,CAAC;IAChD,IAAI,mBAAmB,EAAE,CAAC;QACzB,SAAS,GAAG,IAAI,UAAU,CAAC,WAAW,CAAC,KAAK,EAAE,WAAW,EAAE,mBAAmB,CAAC,CAAC;IACjF,CAAC;IAED,2BAA2B;IAC3B,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAC5B,WAAW,CAAC,KAAK,EACjB,WAAW,EACX,SAAS,EACT,SAAS,CAAC,QAAQ,EAClB,oBAAoB,CACpB,CAAC;IAEF,GAAG,CAAC,uCAAuC,EAAE,SAAS,CAAC,YAAY,CAAC,QAAQ,EAAE,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;IAEhH,oFAAoF;IACpF,MAAM,kBAAkB,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,cAAc,CAAC,CAAC;IAC5E,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnC,MAAM,iBAAiB,GAAG,gBAAgB,CAAC,kBAAkB,CAAE,CAAC;QAChE,OAAO,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,iBAAiB,CAAC,CAAC;IAChE,CAAC;IAED,OAAO,QAAQ,CAAC;AACjB,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type * as AST from '../../parser/ast.js';
2
+ /**
3
+ * Validates that RETURNING expressions use appropriate NEW/OLD qualifiers
4
+ * for the operation type. Operates on the AST so it can run before column
5
+ * resolution — otherwise resolution failures would mask the qualifier guard.
6
+ */
7
+ export declare function validateReturningQualifiers(expr: AST.Expression, operationType: 'INSERT' | 'UPDATE' | 'DELETE'): void;
8
+ //# sourceMappingURL=returning-qualifier-validator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"returning-qualifier-validator.d.ts","sourceRoot":"","sources":["../../../../src/planner/validation/returning-qualifier-validator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,GAAG,MAAM,qBAAqB,CAAC;AAIhD;;;;GAIG;AACH,wBAAgB,2BAA2B,CAC1C,IAAI,EAAE,GAAG,CAAC,UAAU,EACpB,aAAa,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAC3C,IAAI,CAiDN"}
@@ -0,0 +1,63 @@
1
+ import { QuereusError } from '../../common/errors.js';
2
+ import { StatusCode } from '../../common/types.js';
3
+ /**
4
+ * Validates that RETURNING expressions use appropriate NEW/OLD qualifiers
5
+ * for the operation type. Operates on the AST so it can run before column
6
+ * resolution — otherwise resolution failures would mask the qualifier guard.
7
+ */
8
+ export function validateReturningQualifiers(expr, operationType) {
9
+ function check(e) {
10
+ if (e.type === 'column') {
11
+ const tbl = e.table?.toLowerCase();
12
+ if (tbl === 'old' && operationType === 'INSERT') {
13
+ throw new QuereusError('OLD qualifier cannot be used in INSERT RETURNING clause', StatusCode.ERROR);
14
+ }
15
+ if (tbl === 'new' && operationType === 'DELETE') {
16
+ throw new QuereusError('NEW qualifier cannot be used in DELETE RETURNING clause', StatusCode.ERROR);
17
+ }
18
+ }
19
+ else if (e.type === 'binary') {
20
+ check(e.left);
21
+ check(e.right);
22
+ }
23
+ else if (e.type === 'unary') {
24
+ check(e.expr);
25
+ }
26
+ else if (e.type === 'function') {
27
+ e.args.forEach(check);
28
+ }
29
+ else if (e.type === 'case') {
30
+ if (e.baseExpr)
31
+ check(e.baseExpr);
32
+ e.whenThenClauses.forEach(clause => {
33
+ check(clause.when);
34
+ check(clause.then);
35
+ });
36
+ if (e.elseExpr)
37
+ check(e.elseExpr);
38
+ }
39
+ else if (e.type === 'cast') {
40
+ check(e.expr);
41
+ }
42
+ else if (e.type === 'collate') {
43
+ check(e.expr);
44
+ }
45
+ else if (e.type === 'in') {
46
+ check(e.expr);
47
+ if (e.values)
48
+ e.values.forEach(check);
49
+ }
50
+ else if (e.type === 'between') {
51
+ check(e.expr);
52
+ check(e.lower);
53
+ check(e.upper);
54
+ }
55
+ else if (e.type === 'windowFunction') {
56
+ check(e.function);
57
+ }
58
+ // Subquery / EXISTS expressions are not traversed here — qualifier
59
+ // scoping inside a subquery is independent of the outer DML operation.
60
+ }
61
+ check(expr);
62
+ }
63
+ //# sourceMappingURL=returning-qualifier-validator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"returning-qualifier-validator.js","sourceRoot":"","sources":["../../../../src/planner/validation/returning-qualifier-validator.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEnD;;;;GAIG;AACH,MAAM,UAAU,2BAA2B,CAC1C,IAAoB,EACpB,aAA6C;IAE7C,SAAS,KAAK,CAAC,CAAiB;QAC/B,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACzB,MAAM,GAAG,GAAG,CAAC,CAAC,KAAK,EAAE,WAAW,EAAE,CAAC;YACnC,IAAI,GAAG,KAAK,KAAK,IAAI,aAAa,KAAK,QAAQ,EAAE,CAAC;gBACjD,MAAM,IAAI,YAAY,CACrB,yDAAyD,EACzD,UAAU,CAAC,KAAK,CAChB,CAAC;YACH,CAAC;YACD,IAAI,GAAG,KAAK,KAAK,IAAI,aAAa,KAAK,QAAQ,EAAE,CAAC;gBACjD,MAAM,IAAI,YAAY,CACrB,yDAAyD,EACzD,UAAU,CAAC,KAAK,CAChB,CAAC;YACH,CAAC;QACF,CAAC;aAAM,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAChC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACd,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAChB,CAAC;aAAM,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YAC/B,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACf,CAAC;aAAM,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YAClC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC;aAAM,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC9B,IAAI,CAAC,CAAC,QAAQ;gBAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;YAClC,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;gBAClC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBACnB,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACpB,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,CAAC,QAAQ;gBAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QACnC,CAAC;aAAM,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC9B,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACf,CAAC;aAAM,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YACjC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACf,CAAC;aAAM,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YAC5B,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACd,IAAI,CAAC,CAAC,MAAM;gBAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACvC,CAAC;aAAM,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YACjC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACd,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YACf,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAChB,CAAC;aAAM,IAAI,CAAC,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;YACxC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QACnB,CAAC;QACD,mEAAmE;QACnE,uEAAuE;IACxE,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,CAAC;AACb,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"deferred-constraint-queue.d.ts","sourceRoot":"","sources":["../../../src/runtime/deferred-constraint-queue.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAY,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACrE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAOpD,MAAM,WAAW,qBAAqB;IACrC,GAAG,EAAE,GAAG,CAAC;IACT,UAAU,EAAE,aAAa,CAAC;IAC1B,SAAS,EAAE,CAAC,GAAG,EAAE,cAAc,KAAK,WAAW,CAAC;IAChD,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,GAAG,CAAC;IACjB,iBAAiB,CAAC,EAAE,aAAa,CAAC;CAClC;AAID,qBAAa,uBAAuB;IAIvB,OAAO,CAAC,QAAQ,CAAC,EAAE;IAH/B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAwC;IAChE,OAAO,CAAC,MAAM,CAAmC;gBAEpB,EAAE,EAAE,QAAQ;IAEzC,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,UAAU,EAAE,aAAa,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,cAAc,KAAK,WAAW,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,GAAG,EAAE,iBAAiB,CAAC,EAAE,aAAa,GAAG,IAAI;IAiB1N,UAAU,IAAI,IAAI;IAIlB,aAAa,IAAI,IAAI;IAIrB,YAAY,IAAI,IAAI;IAOpB,KAAK,IAAI,IAAI;IAKP,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;YAyBxB,aAAa;IAoB3B,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,UAAU;IAKlB,OAAO,CAAC,QAAQ;IA2BhB,OAAO,CAAC,KAAK;IAYb,OAAO,CAAC,cAAc;CAyBtB"}
1
+ {"version":3,"file":"deferred-constraint-queue.d.ts","sourceRoot":"","sources":["../../../src/runtime/deferred-constraint-queue.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAY,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACrE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAOpD,MAAM,WAAW,qBAAqB;IACrC,GAAG,EAAE,GAAG,CAAC;IACT,UAAU,EAAE,aAAa,CAAC;IAC1B,SAAS,EAAE,CAAC,GAAG,EAAE,cAAc,KAAK,WAAW,CAAC;IAChD,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,GAAG,CAAC;IACjB,iBAAiB,CAAC,EAAE,aAAa,CAAC;CAClC;AAID,qBAAa,uBAAuB;IAIvB,OAAO,CAAC,QAAQ,CAAC,EAAE;IAH/B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAwC;IAChE,OAAO,CAAC,MAAM,CAAmC;gBAEpB,EAAE,EAAE,QAAQ;IAEzC,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,UAAU,EAAE,aAAa,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,cAAc,KAAK,WAAW,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,GAAG,EAAE,iBAAiB,CAAC,EAAE,aAAa,GAAG,IAAI;IAiB1N,UAAU,IAAI,IAAI;IAIlB,aAAa,IAAI,IAAI;IAIrB,YAAY,IAAI,IAAI;IAOpB,KAAK,IAAI,IAAI;IAKP,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;YAyBxB,aAAa;IAoB3B,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,UAAU;IAKlB,OAAO,CAAC,QAAQ;IA2BhB,OAAO,CAAC,KAAK;IAYb,OAAO,CAAC,cAAc;CA2BtB"}
@@ -151,6 +151,9 @@ export class DeferredConstraintQueue {
151
151
  return connName === normalized || connName === simple;
152
152
  });
153
153
  if (matches.length > 1) {
154
+ const covering = matches.filter(c => c.isCovering);
155
+ if (covering.length === 1)
156
+ return covering[0];
154
157
  throw new QuereusError(`Deferred constraint execution found multiple candidate connections for table ${tableKey}`, StatusCode.INTERNAL);
155
158
  }
156
159
  return matches[0];
@@ -1 +1 @@
1
- {"version":3,"file":"deferred-constraint-queue.js","sourceRoot":"","sources":["../../../src/runtime/deferred-constraint-queue.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAEpE,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAcpE,MAAM,OAAO,uBAAuB;IAIN;IAHZ,OAAO,GAA8B,IAAI,GAAG,EAAE,CAAC;IACxD,MAAM,GAAgC,EAAE,CAAC;IAEjD,YAA6B,EAAY;QAAZ,OAAE,GAAF,EAAE,CAAU;IAAI,CAAC;IAE9C,OAAO,CAAC,SAAiB,EAAE,cAAsB,EAAE,GAAQ,EAAE,UAAyB,EAAE,SAA+C,EAAE,YAAqB,EAAE,UAAgB,EAAE,iBAAiC;QAClN,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QACpC,MAAM,QAAQ,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC;QACzC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC;YAAE,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;QACzD,MAAM,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAE,CAAC;QACzC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,cAAc,CAAC;YAAE,WAAW,CAAC,GAAG,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;QAC1E,WAAW,CAAC,GAAG,CAAC,cAAc,CAAE,CAAC,IAAI,CAAC;YACrC,GAAG,EAAE,GAAG,CAAC,KAAK,EAAS;YACvB,UAAU;YACV,SAAS;YACT,cAAc;YACd,YAAY;YACZ,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,EAAS,CAAC,CAAC,CAAC,SAAS;YAC9D,iBAAiB;SACjB,CAAC,CAAC;IACJ,CAAC;IAED,UAAU;QACT,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC;IAC7B,CAAC;IAED,aAAa;QACZ,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;IACnB,CAAC;IAED,YAAY;QACX,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;QAC9B,IAAI,CAAC,GAAG;YAAE,OAAO;QACjB,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QACrC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACzB,CAAC;IAED,KAAK;QACJ,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,eAAe;QACpB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YAAE,OAAO;QAC/B,MAAM,iBAAiB,GAAG,IAAI,CAAC,EAAE,CAAC,iBAAiB,EAAE,CAAC;QACtD,MAAM,UAAU,GAAmB;YAClC,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,IAAI,EAAE,SAAS;YACf,MAAM,EAAE,EAAE;YACV,OAAO,EAAE,IAAI,aAAa,EAAE;YAC5B,aAAa,EAAE,IAAI,GAAG,EAAE;YACxB,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,oBAAoB,EAAE;YACtC,aAAa,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,eAAe,CAAC;SAChE,CAAC;QACF,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC9B,KAAK,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,IAAI,KAAK,EAAE,CAAC;YAC1C,KAAK,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,WAAW,EAAE,CAAC;gBACrC,KAAK,MAAM,KAAK,IAAI,IAAI,EAAE,CAAC;oBAC1B,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,iBAAiB,EAAE,KAAK,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;oBACrF,UAAU,CAAC,gBAAgB,GAAG,UAAU,CAAC;oBACzC,MAAM,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;gBAC7C,CAAC;YACF,CAAC;QACF,CAAC;QACD,IAAI,CAAC,KAAK,EAAE,CAAC;IACd,CAAC;IAEO,KAAK,CAAC,aAAa,CAAC,UAA0B,EAAE,KAA4B;QACnF,8DAA8D;QAC9D,MAAM,aAAa,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,UAAU,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;QACzF,MAAM,oBAAoB,GAAG,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,iBAAiB;YACvE,CAAC,CAAC,yBAAyB,CAAC,KAAK,CAAC,iBAAiB,EAAE,KAAK,CAAC,UAAU,CAAC;YACtE,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC;QAGpB,MAAM,IAAI,GAAG,aAAa,CAAC,UAAU,EAAE,oBAAoB,CAAC,CAAC;QAC7D,IAAI,CAAC;YACJ,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;YACxB,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,SAAS,CAAC,UAAU,CAAa,CAAC;YAC5D,IAAI,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;gBACpC,MAAM,IAAI,YAAY,CAAC,4BAA4B,KAAK,CAAC,cAAc,EAAE,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC;YACnG,CAAC;QACF,CAAC;gBAAS,CAAC;YACV,IAAI,CAAC,KAAK,EAAE,CAAC;QACd,CAAC;IACF,CAAC;IAEO,cAAc;QACrB,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;IACpF,CAAC;IAEO,UAAU;QACjB,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;QACvC,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;IAClD,CAAC;IAEO,QAAQ;QACf,MAAM,KAAK,GAA8B,IAAI,GAAG,EAAE,CAAC;QACnD,MAAM,MAAM,GAAG,CAAC,MAAiC,EAAE,EAAE;YACpD,KAAK,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,IAAI,MAAM,EAAE,CAAC;gBAC3C,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;gBACvC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC;oBAAE,KAAK,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;gBAC7D,MAAM,iBAAiB,GAAG,KAAK,CAAC,GAAG,CAAC,UAAU,CAAE,CAAC;gBACjD,KAAK,MAAM,CAAC,cAAc,EAAE,IAAI,CAAC,IAAI,WAAW,EAAE,CAAC;oBAClD,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,cAAc,CAAC;wBAAE,iBAAiB,CAAC,GAAG,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;oBACtF,iBAAiB,CAAC,GAAG,CAAC,cAAc,CAAE,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;wBACjE,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,KAAK,EAAS;wBAC7B,UAAU,EAAE,KAAK,CAAC,UAAU;wBAC5B,SAAS,EAAE,KAAK,CAAC,SAAS;wBAC1B,cAAc,EAAE,KAAK,CAAC,cAAc;wBACpC,YAAY,EAAE,KAAK,CAAC,YAAY;wBAChC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,EAAS,CAAC,CAAC,CAAC,SAAS;wBAC1E,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;qBAC1C,CAAC,CAAC,CAAC,CAAC;gBACN,CAAC;YACF,CAAC;QACF,CAAC,CAAC;QAEF,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACrB,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM;YAAE,MAAM,CAAC,KAAK,CAAC,CAAC;QAC/C,OAAO,KAAK,CAAC;IACd,CAAC;IAEO,KAAK,CAAC,MAAiC,EAAE,MAAiC;QACjF,KAAK,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,IAAI,MAAM,EAAE,CAAC;YAC3C,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;YACvC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC;gBAAE,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;YAC/D,MAAM,eAAe,GAAG,MAAM,CAAC,GAAG,CAAC,UAAU,CAAE,CAAC;YAChD,KAAK,MAAM,CAAC,cAAc,EAAE,IAAI,CAAC,IAAI,WAAW,EAAE,CAAC;gBAClD,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,cAAc,CAAC;oBAAE,eAAe,CAAC,GAAG,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;gBAClF,eAAe,CAAC,GAAG,CAAC,cAAc,CAAE,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;YACpD,CAAC;QACF,CAAC;IACF,CAAC;IAEO,cAAc,CAAC,WAAqC,EAAE,QAAgB,EAAE,WAAoB;QACnG,IAAI,WAAW,EAAE,CAAC;YACjB,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,YAAY,KAAK,WAAW,CAAC,CAAC;YAC3E,IAAI,MAAM,EAAE,CAAC;gBACZ,OAAO,MAAM,CAAC;YACf,CAAC;YACD,MAAM,IAAI,YAAY,CACrB,6DAA6D,WAAW,cAAc,QAAQ,EAAE,EAChG,UAAU,CAAC,QAAQ,CACnB,CAAC;QACH,CAAC;QACD,MAAM,UAAU,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;QAC1C,MAAM,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;QAC7G,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;YACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;YAC9C,OAAO,QAAQ,KAAK,UAAU,IAAI,QAAQ,KAAK,MAAM,CAAC;QACvD,CAAC,CAAC,CAAC;QACH,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,MAAM,IAAI,YAAY,CACrB,gFAAgF,QAAQ,EAAE,EAC1F,UAAU,CAAC,QAAQ,CACnB,CAAC;QACH,CAAC;QACD,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC;IACnB,CAAC;CACD"}
1
+ {"version":3,"file":"deferred-constraint-queue.js","sourceRoot":"","sources":["../../../src/runtime/deferred-constraint-queue.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"alter-table.d.ts","sourceRoot":"","sources":["../../../../src/runtime/emit/alter-table.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AAC9E,OAAO,KAAK,EAAE,WAAW,EAAkC,MAAM,aAAa,CAAC;AAC/E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAI9D,OAAO,KAAK,EAAE,WAAW,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AAQrF,wBAAgB,cAAc,CAAC,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,eAAe,GAAG,WAAW,CA2CvF;AAwcD;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAClC,WAAW,EAAE,WAAW,EACxB,UAAU,EAAE,MAAM,EAClB,gBAAgB,EAAE,MAAM,EAAE,EAC1B,QAAQ,EAAE,0BAA0B,EAAE,GACpC,MAAM,CA4CR"}
1
+ {"version":3,"file":"alter-table.d.ts","sourceRoot":"","sources":["../../../../src/runtime/emit/alter-table.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AAC9E,OAAO,KAAK,EAAE,WAAW,EAAkC,MAAM,aAAa,CAAC;AAC/E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAI9D,OAAO,KAAK,EAAE,WAAW,EAAE,0BAA0B,EAAmD,MAAM,uBAAuB,CAAC;AAUtI,wBAAgB,cAAc,CAAC,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,eAAe,GAAG,WAAW,CA2CvF;AA2mBD;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAClC,WAAW,EAAE,WAAW,EACxB,UAAU,EAAE,MAAM,EAClB,gBAAgB,EAAE,MAAM,EAAE,EAC1B,QAAQ,EAAE,0BAA0B,EAAE,GACpC,MAAM,CA4CR"}
@@ -1,9 +1,10 @@
1
1
  import { QuereusError } from '../../common/errors.js';
2
2
  import { StatusCode } from '../../common/types.js';
3
3
  import { createLogger } from '../../common/logger.js';
4
- import { buildColumnIndexMap } from '../../schema/table.js';
4
+ import { buildColumnIndexMap, opsToMask, withGeneratedColumnGraph } from '../../schema/table.js';
5
5
  import { MemoryTableModule } from '../../vtab/memory/module.js';
6
- import { quoteIdentifier, expressionToString } from '../../emit/ast-stringify.js';
6
+ import { quoteIdentifier, expressionToString, selectToString } from '../../emit/ast-stringify.js';
7
+ import { renameTableInAst, renameColumnInAst } from '../../schema/rename-rewriter.js';
7
8
  const log = createLogger('runtime:emit:alter-table');
8
9
  export function emitAlterTable(plan, _ctx) {
9
10
  const tableSchema = plan.table.tableSchema;
@@ -74,6 +75,10 @@ async function runRenameTable(rctx, tableSchema, schema, newName) {
74
75
  oldObject: tableSchema,
75
76
  newObject: updatedTableSchema,
76
77
  });
78
+ // Propagate the rename into dependent objects (CHECK / FK in this and other
79
+ // tables, view bodies). Best-effort AST rewrite — there is no global
80
+ // dependency tracker yet, so we walk the catalog and patch in-place.
81
+ propagateTableRename(rctx, tableSchema.schemaName, oldName, newName);
77
82
  log('Renamed table %s.%s to %s', tableSchema.schemaName, oldName, newName);
78
83
  return null;
79
84
  }
@@ -122,6 +127,9 @@ async function runRenameColumn(rctx, tableSchema, schema, oldName, newName) {
122
127
  oldObject: tableSchema,
123
128
  newObject: updatedTableSchema,
124
129
  });
130
+ // Propagate the rename into dependent objects (CHECK / FK in this and other
131
+ // tables, view bodies).
132
+ propagateColumnRename(rctx, tableSchema.schemaName, tableSchema.name, oldName, newName);
125
133
  log('Renamed column %s.%s.%s to %s', tableSchema.schemaName, tableSchema.name, oldName, newName);
126
134
  return null;
127
135
  }
@@ -139,22 +147,140 @@ async function runAddColumn(rctx, tableSchema, schema, columnDef) {
139
147
  if (!module.alterTable) {
140
148
  throw new QuereusError(`Module for table '${tableSchema.name}' does not support ALTER TABLE ADD COLUMN`, StatusCode.UNSUPPORTED);
141
149
  }
150
+ // Extract column-level CHECK / FK constraints. Column-level UNIQUE is not enforced via
151
+ // table-level constraints; the existing rejection path in the manager handles it.
152
+ const newCheckConstraints = extractColumnLevelCheckConstraints(columnDef);
153
+ const newForeignKeys = extractColumnLevelForeignKeys(columnDef, tableSchema.schemaName);
142
154
  const updatedTableSchema = await module.alterTable(rctx.db, tableSchema.schemaName, tableSchema.name, {
143
155
  type: 'addColumn',
144
156
  columnDef,
145
157
  });
146
- // Update the schema catalog
147
- schema.addTable(updatedTableSchema);
158
+ // Resolve the new child column index in the freshly returned schema for any FK constraints.
159
+ const newColIdx = updatedTableSchema.columnIndexMap.get(columnDef.name.toLowerCase());
160
+ const resolvedForeignKeys = newColIdx !== undefined
161
+ ? newForeignKeys.map(fk => ({ ...fk, columns: Object.freeze([newColIdx]) }))
162
+ : newForeignKeys;
163
+ // Merge new column-level CHECK / FK into the table-level constraint sets so the
164
+ // existing constraint-builder picks them up for INSERT/UPDATE enforcement.
165
+ const mergedChecks = newCheckConstraints.length > 0
166
+ ? Object.freeze([...updatedTableSchema.checkConstraints, ...newCheckConstraints])
167
+ : updatedTableSchema.checkConstraints;
168
+ const mergedForeignKeys = resolvedForeignKeys.length > 0
169
+ ? Object.freeze([...(updatedTableSchema.foreignKeys ?? []), ...resolvedForeignKeys])
170
+ : updatedTableSchema.foreignKeys;
171
+ const enhancedBase = {
172
+ ...updatedTableSchema,
173
+ checkConstraints: mergedChecks,
174
+ foreignKeys: mergedForeignKeys,
175
+ };
176
+ // Recompute the generated-column dependency graph. If the added column is
177
+ // generated and its expression references an unknown column, or any new
178
+ // generated-column edges form a cycle, this throws before we register the
179
+ // new schema in the catalog.
180
+ const enhancedTableSchema = withGeneratedColumnGraph(enhancedBase);
181
+ // Register the enhanced schema BEFORE backfill validation so that SQL bound
182
+ // during validation can resolve the new column.
183
+ schema.addTable(enhancedTableSchema);
184
+ if (newCheckConstraints.length > 0) {
185
+ try {
186
+ await validateBackfillAgainstChecks(rctx, enhancedTableSchema, newCheckConstraints);
187
+ }
188
+ catch (err) {
189
+ // Revert: drop the column and restore the original catalog entry.
190
+ try {
191
+ await module.alterTable(rctx.db, tableSchema.schemaName, tableSchema.name, {
192
+ type: 'dropColumn',
193
+ columnName: columnDef.name,
194
+ });
195
+ }
196
+ catch (revertErr) {
197
+ log('Failed to revert ADD COLUMN after CHECK violation: %s', revertErr.message);
198
+ }
199
+ schema.addTable(tableSchema);
200
+ throw err;
201
+ }
202
+ }
148
203
  rctx.db.schemaManager.getChangeNotifier().notifyChange({
149
204
  type: 'table_modified',
150
205
  schemaName: tableSchema.schemaName,
151
206
  objectName: tableSchema.name,
152
207
  oldObject: tableSchema,
153
- newObject: updatedTableSchema,
208
+ newObject: enhancedTableSchema,
154
209
  });
155
210
  log('Added column %s to table %s.%s', columnDef.name, tableSchema.schemaName, tableSchema.name);
156
211
  return null;
157
212
  }
213
+ function extractColumnLevelCheckConstraints(columnDef) {
214
+ const result = [];
215
+ for (const con of columnDef.constraints ?? []) {
216
+ if (con.type !== 'check' || !con.expr)
217
+ continue;
218
+ result.push({
219
+ name: con.name ?? `_check_${columnDef.name}`,
220
+ expr: con.expr,
221
+ operations: opsToMask(con.operations),
222
+ deferrable: con.deferrable,
223
+ initiallyDeferred: con.initiallyDeferred,
224
+ tags: con.tags && Object.keys(con.tags).length > 0 ? Object.freeze({ ...con.tags }) : undefined,
225
+ });
226
+ }
227
+ return result;
228
+ }
229
+ function extractColumnLevelForeignKeys(columnDef, defaultSchemaName) {
230
+ const result = [];
231
+ for (const con of columnDef.constraints ?? []) {
232
+ if (con.type !== 'foreignKey' || !con.foreignKey)
233
+ continue;
234
+ const fk = con.foreignKey;
235
+ // child column index gets resolved by caller after module.alterTable returns
236
+ // the updated schema with the new column appended.
237
+ if (fk.columns && fk.columns.length !== 1) {
238
+ throw new QuereusError(`FK constraint '${con.name ?? `_fk_${columnDef.name}`}' on ADD COLUMN '${columnDef.name}': child column count (1) does not match parent column count (${fk.columns.length})`, StatusCode.ERROR);
239
+ }
240
+ result.push({
241
+ name: con.name ?? `_fk_${columnDef.name}`,
242
+ columns: Object.freeze([]),
243
+ referencedTable: fk.table,
244
+ referencedSchema: defaultSchemaName,
245
+ referencedColumns: Object.freeze([]),
246
+ referencedColumnNames: fk.columns,
247
+ onDelete: fk.onDelete ?? 'restrict',
248
+ onUpdate: fk.onUpdate ?? 'restrict',
249
+ deferred: fk.initiallyDeferred ?? false,
250
+ tags: con.tags && Object.keys(con.tags).length > 0 ? Object.freeze({ ...con.tags }) : undefined,
251
+ });
252
+ }
253
+ return result;
254
+ }
255
+ /**
256
+ * Runs each new CHECK against existing rows. We rely on the just-registered
257
+ * enhanced schema so SQL can resolve the new column. Any row matching
258
+ * `not (<check_expr>)` is a violation and aborts the ALTER.
259
+ */
260
+ async function validateBackfillAgainstChecks(rctx, enhancedTableSchema, newCheckConstraints) {
261
+ const schemaPrefix = (enhancedTableSchema.schemaName && enhancedTableSchema.schemaName.toLowerCase() !== 'main')
262
+ ? `${quoteIdentifier(enhancedTableSchema.schemaName)}.`
263
+ : '';
264
+ const qualifiedTable = `${schemaPrefix}${quoteIdentifier(enhancedTableSchema.name)}`;
265
+ for (const cc of newCheckConstraints) {
266
+ const checkSql = expressionToString(cc.expr);
267
+ const sql = `select 1 from ${qualifiedTable} where not (${checkSql}) limit 1`;
268
+ const stmt = rctx.db.prepare(sql);
269
+ try {
270
+ let violated = false;
271
+ for await (const _row of stmt._iterateRowsRaw()) {
272
+ violated = true;
273
+ break;
274
+ }
275
+ if (violated) {
276
+ throw new QuereusError(`CHECK constraint ${cc.name ? `'${cc.name}' ` : ''}violated by backfilled rows in ALTER TABLE ADD COLUMN on '${enhancedTableSchema.name}'`, StatusCode.CONSTRAINT);
277
+ }
278
+ }
279
+ finally {
280
+ await stmt.finalize();
281
+ }
282
+ }
283
+ }
158
284
  async function runDropColumn(rctx, tableSchema, schema, columnName) {
159
285
  const colIndex = tableSchema.columnIndexMap.get(columnName.toLowerCase());
160
286
  if (colIndex === undefined) {
@@ -168,6 +294,17 @@ async function runDropColumn(rctx, tableSchema, schema, columnName) {
168
294
  if (tableSchema.columns.length <= 1) {
169
295
  throw new QuereusError(`Cannot drop the last column of table '${tableSchema.name}'`, StatusCode.ERROR);
170
296
  }
297
+ // Validate: can't drop a column that any generated column's expression depends on
298
+ if (tableSchema.generatedColumnDependencies) {
299
+ for (const [genIdx, depIndices] of tableSchema.generatedColumnDependencies) {
300
+ if (genIdx === colIndex)
301
+ continue; // Dropping the gen column itself is allowed
302
+ if (depIndices.includes(colIndex)) {
303
+ const genName = tableSchema.columns[genIdx].name;
304
+ throw new QuereusError(`Cannot drop column '${columnName}' from '${tableSchema.name}': it is referenced by generated column '${genName}'`, StatusCode.CONSTRAINT);
305
+ }
306
+ }
307
+ }
171
308
  // Call module.alterTable for data + schema update
172
309
  const module = tableSchema.vtabModule;
173
310
  if (!module.alterTable) {
@@ -177,14 +314,17 @@ async function runDropColumn(rctx, tableSchema, schema, columnName) {
177
314
  type: 'dropColumn',
178
315
  columnName,
179
316
  });
317
+ // Recompute the generated-column dependency graph against the post-drop
318
+ // column array — old indices in the previous map are invalid.
319
+ const finalSchema = withGeneratedColumnGraph(updatedTableSchema);
180
320
  // Update the schema catalog
181
- schema.addTable(updatedTableSchema);
321
+ schema.addTable(finalSchema);
182
322
  rctx.db.schemaManager.getChangeNotifier().notifyChange({
183
323
  type: 'table_modified',
184
324
  schemaName: tableSchema.schemaName,
185
325
  objectName: tableSchema.name,
186
326
  oldObject: tableSchema,
187
- newObject: updatedTableSchema,
327
+ newObject: finalSchema,
188
328
  });
189
329
  log('Dropped column %s from table %s.%s', columnName, tableSchema.schemaName, tableSchema.name);
190
330
  return null;
@@ -457,6 +597,145 @@ async function rebuildViaShadowTable(rctx, tableSchema, schema, survivingColumns
457
597
  throw e;
458
598
  }
459
599
  }
600
+ /**
601
+ * Propagates a table rename into every dependent schema object the catalog
602
+ * knows about: CHECK expressions, FK references, and view bodies. Walks every
603
+ * schema (not just the renamed table's home schema) so cross-schema FK
604
+ * references are picked up. View `selectAst` is mutated in place because the
605
+ * planner re-walks it on every reference.
606
+ */
607
+ function propagateTableRename(rctx, renamedSchemaName, oldName, newName) {
608
+ const notifier = rctx.db.schemaManager.getChangeNotifier();
609
+ for (const schema of rctx.db.schemaManager._getAllSchemas()) {
610
+ propagateTableRenameInSchema(schema, renamedSchemaName, oldName, newName, notifier);
611
+ }
612
+ }
613
+ function propagateTableRenameInSchema(schema, renamedSchemaName, oldName, newName, notifier) {
614
+ const renamedSchemaLower = renamedSchemaName.toLowerCase();
615
+ for (const table of Array.from(schema.getAllTables())) {
616
+ // Skip the just-renamed table when iterating the home schema; the FK
617
+ // `referencedTable` field on its own FKs (if any self-reference) is
618
+ // still pointing at the old name and needs rewriting too.
619
+ const updated = rewriteTableForTableRename(table, renamedSchemaLower, oldName, newName);
620
+ if (updated !== table) {
621
+ schema.addTable(updated);
622
+ notifier.notifyChange({
623
+ type: 'table_modified',
624
+ schemaName: schema.name,
625
+ objectName: updated.name,
626
+ oldObject: table,
627
+ newObject: updated,
628
+ });
629
+ }
630
+ }
631
+ if (schema.name.toLowerCase() === renamedSchemaLower) {
632
+ for (const view of Array.from(schema.getAllViews())) {
633
+ const changed = renameTableInAst(view.selectAst, oldName, newName, renamedSchemaName);
634
+ if (changed) {
635
+ const updatedView = { ...view, sql: selectToString(view.selectAst) };
636
+ schema.addView(updatedView);
637
+ }
638
+ }
639
+ }
640
+ }
641
+ function rewriteTableForTableRename(table, renamedSchemaLower, oldName, newName) {
642
+ const oldLower = oldName.toLowerCase();
643
+ let changed = false;
644
+ const newChecks = table.checkConstraints.map(cc => {
645
+ const rewrote = renameTableInAst(cc.expr, oldName, newName, renamedSchemaLower);
646
+ if (!rewrote)
647
+ return cc;
648
+ changed = true;
649
+ return { ...cc };
650
+ });
651
+ const newFks = (table.foreignKeys ?? []).map(fk => {
652
+ const fkSchemaLower = (fk.referencedSchema ?? table.schemaName).toLowerCase();
653
+ if (fkSchemaLower !== renamedSchemaLower)
654
+ return fk;
655
+ if (fk.referencedTable.toLowerCase() !== oldLower)
656
+ return fk;
657
+ changed = true;
658
+ return { ...fk, referencedTable: newName };
659
+ });
660
+ if (!changed)
661
+ return table;
662
+ return Object.freeze({
663
+ ...table,
664
+ checkConstraints: Object.freeze(newChecks),
665
+ foreignKeys: table.foreignKeys ? Object.freeze(newFks) : table.foreignKeys,
666
+ });
667
+ }
668
+ function propagateColumnRename(rctx, renamedSchemaName, tableName, oldCol, newCol) {
669
+ const notifier = rctx.db.schemaManager.getChangeNotifier();
670
+ for (const schema of rctx.db.schemaManager._getAllSchemas()) {
671
+ propagateColumnRenameInSchema(schema, renamedSchemaName, tableName, oldCol, newCol, notifier);
672
+ }
673
+ }
674
+ function propagateColumnRenameInSchema(schema, renamedSchemaName, tableName, oldCol, newCol, notifier) {
675
+ const renamedSchemaLower = renamedSchemaName.toLowerCase();
676
+ for (const table of Array.from(schema.getAllTables())) {
677
+ const updated = rewriteTableForColumnRename(table, renamedSchemaLower, tableName, oldCol, newCol);
678
+ if (updated !== table) {
679
+ schema.addTable(updated);
680
+ notifier.notifyChange({
681
+ type: 'table_modified',
682
+ schemaName: schema.name,
683
+ objectName: updated.name,
684
+ oldObject: table,
685
+ newObject: updated,
686
+ });
687
+ }
688
+ }
689
+ if (schema.name.toLowerCase() === renamedSchemaLower) {
690
+ for (const view of Array.from(schema.getAllViews())) {
691
+ const changed = renameColumnInAst(view.selectAst, tableName, oldCol, newCol, renamedSchemaName);
692
+ if (changed) {
693
+ const updatedView = { ...view, sql: selectToString(view.selectAst) };
694
+ schema.addView(updatedView);
695
+ }
696
+ }
697
+ }
698
+ }
699
+ function rewriteTableForColumnRename(table, renamedSchemaLower, tableName, oldCol, newCol) {
700
+ const oldColLower = oldCol.toLowerCase();
701
+ const tableLower = tableName.toLowerCase();
702
+ let changed = false;
703
+ const newChecks = table.checkConstraints.map(cc => {
704
+ const rewrote = renameColumnInAst(cc.expr, tableName, oldCol, newCol, renamedSchemaLower);
705
+ if (!rewrote)
706
+ return cc;
707
+ changed = true;
708
+ return { ...cc };
709
+ });
710
+ const newFks = (table.foreignKeys ?? []).map(fk => {
711
+ const fkSchemaLower = (fk.referencedSchema ?? table.schemaName).toLowerCase();
712
+ if (fkSchemaLower !== renamedSchemaLower)
713
+ return fk;
714
+ if (fk.referencedTable.toLowerCase() !== tableLower)
715
+ return fk;
716
+ if (!fk.referencedColumnNames || fk.referencedColumnNames.length === 0)
717
+ return fk;
718
+ let touched = false;
719
+ const newRefNames = fk.referencedColumnNames.map(n => {
720
+ if (n.toLowerCase() === oldColLower) {
721
+ touched = true;
722
+ return newCol;
723
+ }
724
+ return n;
725
+ });
726
+ if (!touched)
727
+ return fk;
728
+ changed = true;
729
+ return { ...fk, referencedColumnNames: Object.freeze(newRefNames) };
730
+ });
731
+ if (!changed)
732
+ return table;
733
+ return Object.freeze({
734
+ ...table,
735
+ checkConstraints: Object.freeze(newChecks),
736
+ foreignKeys: table.foreignKeys ? Object.freeze(newFks) : table.foreignKeys,
737
+ });
738
+ }
460
739
  /**
461
740
  * Build a minimal constraints array from an existing ColumnSchema
462
741
  * so that the ColumnDef AST accurately represents the column.