@quereus/quereus 2.7.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 (201) hide show
  1. package/dist/src/common/errors.d.ts +21 -0
  2. package/dist/src/common/errors.d.ts.map +1 -1
  3. package/dist/src/common/errors.js +29 -0
  4. package/dist/src/common/errors.js.map +1 -1
  5. package/dist/src/core/database.d.ts.map +1 -1
  6. package/dist/src/core/database.js +20 -7
  7. package/dist/src/core/database.js.map +1 -1
  8. package/dist/src/core/statement.d.ts.map +1 -1
  9. package/dist/src/core/statement.js +15 -5
  10. package/dist/src/core/statement.js.map +1 -1
  11. package/dist/src/emit/ast-stringify.d.ts.map +1 -1
  12. package/dist/src/emit/ast-stringify.js +0 -1
  13. package/dist/src/emit/ast-stringify.js.map +1 -1
  14. package/dist/src/func/builtins/explain.d.ts.map +1 -1
  15. package/dist/src/func/builtins/explain.js +39 -36
  16. package/dist/src/func/builtins/explain.js.map +1 -1
  17. package/dist/src/func/builtins/json-helpers.d.ts +1 -1
  18. package/dist/src/func/builtins/json-helpers.d.ts.map +1 -1
  19. package/dist/src/func/builtins/json-helpers.js.map +1 -1
  20. package/dist/src/func/builtins/json.d.ts.map +1 -1
  21. package/dist/src/func/builtins/json.js +5 -7
  22. package/dist/src/func/builtins/json.js.map +1 -1
  23. package/dist/src/func/builtins/scalar.d.ts.map +1 -1
  24. package/dist/src/func/builtins/scalar.js +17 -2
  25. package/dist/src/func/builtins/scalar.js.map +1 -1
  26. package/dist/src/func/builtins/string.d.ts.map +1 -1
  27. package/dist/src/func/builtins/string.js +4 -2
  28. package/dist/src/func/builtins/string.js.map +1 -1
  29. package/dist/src/parser/ast.d.ts +1 -1
  30. package/dist/src/parser/ast.d.ts.map +1 -1
  31. package/dist/src/parser/lexer.d.ts.map +1 -1
  32. package/dist/src/parser/lexer.js +8 -48
  33. package/dist/src/parser/lexer.js.map +1 -1
  34. package/dist/src/parser/parser.d.ts.map +1 -1
  35. package/dist/src/parser/parser.js +30 -7
  36. package/dist/src/parser/parser.js.map +1 -1
  37. package/dist/src/parser/utils.d.ts +10 -1
  38. package/dist/src/parser/utils.d.ts.map +1 -1
  39. package/dist/src/parser/utils.js +23 -0
  40. package/dist/src/parser/utils.js.map +1 -1
  41. package/dist/src/planner/analysis/constraint-extractor.d.ts.map +1 -1
  42. package/dist/src/planner/analysis/constraint-extractor.js +0 -1
  43. package/dist/src/planner/analysis/constraint-extractor.js.map +1 -1
  44. package/dist/src/planner/building/constraint-builder.d.ts +12 -1
  45. package/dist/src/planner/building/constraint-builder.d.ts.map +1 -1
  46. package/dist/src/planner/building/constraint-builder.js +60 -1
  47. package/dist/src/planner/building/constraint-builder.js.map +1 -1
  48. package/dist/src/planner/building/create-view.d.ts.map +1 -1
  49. package/dist/src/planner/building/create-view.js +16 -0
  50. package/dist/src/planner/building/create-view.js.map +1 -1
  51. package/dist/src/planner/building/delete.d.ts.map +1 -1
  52. package/dist/src/planner/building/delete.js +13 -7
  53. package/dist/src/planner/building/delete.js.map +1 -1
  54. package/dist/src/planner/building/foreign-key-builder.d.ts.map +1 -1
  55. package/dist/src/planner/building/foreign-key-builder.js +24 -15
  56. package/dist/src/planner/building/foreign-key-builder.js.map +1 -1
  57. package/dist/src/planner/building/insert.d.ts.map +1 -1
  58. package/dist/src/planner/building/insert.js +51 -43
  59. package/dist/src/planner/building/insert.js.map +1 -1
  60. package/dist/src/planner/building/select-aggregates.d.ts +4 -1
  61. package/dist/src/planner/building/select-aggregates.d.ts.map +1 -1
  62. package/dist/src/planner/building/select-aggregates.js +122 -21
  63. package/dist/src/planner/building/select-aggregates.js.map +1 -1
  64. package/dist/src/planner/building/select-modifiers.d.ts +6 -2
  65. package/dist/src/planner/building/select-modifiers.d.ts.map +1 -1
  66. package/dist/src/planner/building/select-modifiers.js +20 -5
  67. package/dist/src/planner/building/select-modifiers.js.map +1 -1
  68. package/dist/src/planner/building/select-ordinal.d.ts +20 -0
  69. package/dist/src/planner/building/select-ordinal.d.ts.map +1 -0
  70. package/dist/src/planner/building/select-ordinal.js +62 -0
  71. package/dist/src/planner/building/select-ordinal.js.map +1 -0
  72. package/dist/src/planner/building/select.d.ts.map +1 -1
  73. package/dist/src/planner/building/select.js +64 -17
  74. package/dist/src/planner/building/select.js.map +1 -1
  75. package/dist/src/planner/building/update.d.ts.map +1 -1
  76. package/dist/src/planner/building/update.js +34 -27
  77. package/dist/src/planner/building/update.js.map +1 -1
  78. package/dist/src/planner/building/with.d.ts.map +1 -1
  79. package/dist/src/planner/building/with.js +25 -2
  80. package/dist/src/planner/building/with.js.map +1 -1
  81. package/dist/src/planner/nodes/constraint-check-node.d.ts +22 -1
  82. package/dist/src/planner/nodes/constraint-check-node.d.ts.map +1 -1
  83. package/dist/src/planner/nodes/constraint-check-node.js +36 -6
  84. package/dist/src/planner/nodes/constraint-check-node.js.map +1 -1
  85. package/dist/src/planner/nodes/filter.d.ts.map +1 -1
  86. package/dist/src/planner/nodes/filter.js +6 -2
  87. package/dist/src/planner/nodes/filter.js.map +1 -1
  88. package/dist/src/planner/nodes/recursive-cte-node.d.ts +5 -3
  89. package/dist/src/planner/nodes/recursive-cte-node.d.ts.map +1 -1
  90. package/dist/src/planner/nodes/recursive-cte-node.js +24 -8
  91. package/dist/src/planner/nodes/recursive-cte-node.js.map +1 -1
  92. package/dist/src/planner/nodes/returning-node.d.ts.map +1 -1
  93. package/dist/src/planner/nodes/returning-node.js +5 -12
  94. package/dist/src/planner/nodes/returning-node.js.map +1 -1
  95. package/dist/src/planner/rules/access/rule-select-access-path.d.ts.map +1 -1
  96. package/dist/src/planner/rules/access/rule-select-access-path.js +22 -26
  97. package/dist/src/planner/rules/access/rule-select-access-path.js.map +1 -1
  98. package/dist/src/planner/rules/join/rule-join-physical-selection.d.ts.map +1 -1
  99. package/dist/src/planner/rules/join/rule-join-physical-selection.js +2 -2
  100. package/dist/src/planner/rules/join/rule-join-physical-selection.js.map +1 -1
  101. package/dist/src/planner/rules/join/rule-quickpick-enumeration.d.ts.map +1 -1
  102. package/dist/src/planner/rules/join/rule-quickpick-enumeration.js +7 -3
  103. package/dist/src/planner/rules/join/rule-quickpick-enumeration.js.map +1 -1
  104. package/dist/src/planner/rules/predicate/rule-filter-merge.js.map +1 -1
  105. package/dist/src/planner/rules/predicate/rule-predicate-pushdown.js.map +1 -1
  106. package/dist/src/planner/rules/retrieve/rule-grow-retrieve.d.ts.map +1 -1
  107. package/dist/src/planner/rules/retrieve/rule-grow-retrieve.js +161 -9
  108. package/dist/src/planner/rules/retrieve/rule-grow-retrieve.js.map +1 -1
  109. package/dist/src/planner/rules/subquery/rule-subquery-decorrelation.d.ts.map +1 -1
  110. package/dist/src/planner/rules/subquery/rule-subquery-decorrelation.js +2 -2
  111. package/dist/src/planner/rules/subquery/rule-subquery-decorrelation.js.map +1 -1
  112. package/dist/src/runtime/emit/alter-table.d.ts.map +1 -1
  113. package/dist/src/runtime/emit/alter-table.js +286 -7
  114. package/dist/src/runtime/emit/alter-table.js.map +1 -1
  115. package/dist/src/runtime/emit/binary.d.ts.map +1 -1
  116. package/dist/src/runtime/emit/binary.js +12 -7
  117. package/dist/src/runtime/emit/binary.js.map +1 -1
  118. package/dist/src/runtime/emit/constraint-check.d.ts.map +1 -1
  119. package/dist/src/runtime/emit/constraint-check.js +125 -62
  120. package/dist/src/runtime/emit/constraint-check.js.map +1 -1
  121. package/dist/src/runtime/emit/create-assertion.d.ts.map +1 -1
  122. package/dist/src/runtime/emit/create-assertion.js +6 -6
  123. package/dist/src/runtime/emit/create-assertion.js.map +1 -1
  124. package/dist/src/runtime/emit/dml-executor.d.ts.map +1 -1
  125. package/dist/src/runtime/emit/dml-executor.js +133 -76
  126. package/dist/src/runtime/emit/dml-executor.js.map +1 -1
  127. package/dist/src/runtime/emit/recursive-cte.d.ts.map +1 -1
  128. package/dist/src/runtime/emit/recursive-cte.js +61 -10
  129. package/dist/src/runtime/emit/recursive-cte.js.map +1 -1
  130. package/dist/src/runtime/emit/scalar-function.d.ts.map +1 -1
  131. package/dist/src/runtime/emit/scalar-function.js +2 -1
  132. package/dist/src/runtime/emit/scalar-function.js.map +1 -1
  133. package/dist/src/runtime/emit/scan.d.ts.map +1 -1
  134. package/dist/src/runtime/emit/scan.js.map +1 -1
  135. package/dist/src/runtime/emit/table-valued-function.d.ts.map +1 -1
  136. package/dist/src/runtime/emit/table-valued-function.js +4 -2
  137. package/dist/src/runtime/emit/table-valued-function.js.map +1 -1
  138. package/dist/src/runtime/emit/update.d.ts.map +1 -1
  139. package/dist/src/runtime/emit/update.js +8 -5
  140. package/dist/src/runtime/emit/update.js.map +1 -1
  141. package/dist/src/runtime/foreign-key-actions.js +2 -2
  142. package/dist/src/runtime/foreign-key-actions.js.map +1 -1
  143. package/dist/src/schema/catalog.d.ts +2 -0
  144. package/dist/src/schema/catalog.d.ts.map +1 -1
  145. package/dist/src/schema/catalog.js +18 -0
  146. package/dist/src/schema/catalog.js.map +1 -1
  147. package/dist/src/schema/column.d.ts +7 -0
  148. package/dist/src/schema/column.d.ts.map +1 -1
  149. package/dist/src/schema/column.js.map +1 -1
  150. package/dist/src/schema/function.d.ts +4 -3
  151. package/dist/src/schema/function.d.ts.map +1 -1
  152. package/dist/src/schema/function.js.map +1 -1
  153. package/dist/src/schema/manager.d.ts +32 -6
  154. package/dist/src/schema/manager.d.ts.map +1 -1
  155. package/dist/src/schema/manager.js +165 -23
  156. package/dist/src/schema/manager.js.map +1 -1
  157. package/dist/src/schema/rename-rewriter.d.ts +4 -0
  158. package/dist/src/schema/rename-rewriter.d.ts.map +1 -0
  159. package/dist/src/schema/rename-rewriter.js +506 -0
  160. package/dist/src/schema/rename-rewriter.js.map +1 -0
  161. package/dist/src/schema/schema-differ.d.ts.map +1 -1
  162. package/dist/src/schema/schema-differ.js +41 -4
  163. package/dist/src/schema/schema-differ.js.map +1 -1
  164. package/dist/src/schema/table.d.ts +65 -2
  165. package/dist/src/schema/table.d.ts.map +1 -1
  166. package/dist/src/schema/table.js +144 -0
  167. package/dist/src/schema/table.js.map +1 -1
  168. package/dist/src/util/async-iterator.d.ts +2 -1
  169. package/dist/src/util/async-iterator.d.ts.map +1 -1
  170. package/dist/src/util/async-iterator.js +4 -4
  171. package/dist/src/util/async-iterator.js.map +1 -1
  172. package/dist/src/util/patterns.d.ts.map +1 -1
  173. package/dist/src/util/patterns.js +58 -10
  174. package/dist/src/util/patterns.js.map +1 -1
  175. package/dist/src/vtab/best-access-plan.d.ts +7 -0
  176. package/dist/src/vtab/best-access-plan.d.ts.map +1 -1
  177. package/dist/src/vtab/best-access-plan.js.map +1 -1
  178. package/dist/src/vtab/memory/index.d.ts +8 -0
  179. package/dist/src/vtab/memory/index.d.ts.map +1 -1
  180. package/dist/src/vtab/memory/index.js +11 -0
  181. package/dist/src/vtab/memory/index.js.map +1 -1
  182. package/dist/src/vtab/memory/layer/base.d.ts +8 -1
  183. package/dist/src/vtab/memory/layer/base.d.ts.map +1 -1
  184. package/dist/src/vtab/memory/layer/base.js +36 -2
  185. package/dist/src/vtab/memory/layer/base.js.map +1 -1
  186. package/dist/src/vtab/memory/layer/manager.d.ts +5 -1
  187. package/dist/src/vtab/memory/layer/manager.d.ts.map +1 -1
  188. package/dist/src/vtab/memory/layer/manager.js +63 -13
  189. package/dist/src/vtab/memory/layer/manager.js.map +1 -1
  190. package/dist/src/vtab/memory/layer/transaction.d.ts.map +1 -1
  191. package/dist/src/vtab/memory/layer/transaction.js +21 -2
  192. package/dist/src/vtab/memory/layer/transaction.js.map +1 -1
  193. package/dist/src/vtab/memory/module.d.ts +6 -1
  194. package/dist/src/vtab/memory/module.d.ts.map +1 -1
  195. package/dist/src/vtab/memory/module.js +93 -14
  196. package/dist/src/vtab/memory/module.js.map +1 -1
  197. package/dist/src/vtab/memory/utils/predicate.d.ts +27 -0
  198. package/dist/src/vtab/memory/utils/predicate.d.ts.map +1 -0
  199. package/dist/src/vtab/memory/utils/predicate.js +182 -0
  200. package/dist/src/vtab/memory/utils/predicate.js.map +1 -0
  201. package/package.json +3 -3
@@ -2172,8 +2172,20 @@ export class Parser {
2172
2172
  this.consume(TokenType.RPAREN, "Expected ')' after view column list.");
2173
2173
  }
2174
2174
  this.consumeKeyword('AS', "Expected 'AS' before SELECT statement for CREATE VIEW.");
2175
+ // CREATE VIEW body may optionally start with a WITH (CTE) clause; the WITH attaches to
2176
+ // the inner SELECT, not to the CREATE VIEW itself.
2177
+ let innerWith;
2178
+ if (this.check(TokenType.WITH)) {
2179
+ innerWith = this.tryParseWithClause();
2180
+ }
2175
2181
  const selectStartToken = this.consume(TokenType.SELECT, "Expected 'SELECT' after 'AS' in CREATE VIEW.");
2176
- const select = this.selectStatement(selectStartToken, withClause);
2182
+ const select = this.selectStatement(selectStartToken, innerWith ?? withClause);
2183
+ if (innerWith) {
2184
+ select.withClause = innerWith;
2185
+ if (innerWith.loc && select.loc) {
2186
+ select.loc.start = innerWith.loc.start;
2187
+ }
2188
+ }
2177
2189
  // Parse optional WITH TAGS
2178
2190
  let tags;
2179
2191
  if (this.matchKeyword('WITH')) {
@@ -2519,7 +2531,12 @@ export class Parser {
2519
2531
  }
2520
2532
  else if (this.peekKeyword('INDEX')) {
2521
2533
  this.advance();
2522
- items.push(this.declareIndexItem());
2534
+ items.push(this.declareIndexItem(false));
2535
+ }
2536
+ else if (this.peekKeyword('UNIQUE')) {
2537
+ this.advance();
2538
+ this.consumeKeyword('INDEX', "Expected 'INDEX' after 'UNIQUE'.");
2539
+ items.push(this.declareIndexItem(true));
2523
2540
  }
2524
2541
  else if (this.peekKeyword('VIEW')) {
2525
2542
  this.advance();
@@ -2645,7 +2662,7 @@ export class Parser {
2645
2662
  };
2646
2663
  return { type: 'declaredTable', tableStmt };
2647
2664
  }
2648
- declareIndexItem() {
2665
+ declareIndexItem(isUnique) {
2649
2666
  const indexName = this.consumeIdentifier('Expected index name.');
2650
2667
  this.consumeKeyword('ON', "Expected 'ON' after index name.");
2651
2668
  const tableName = this.consumeIdentifier('Expected table name after ON.');
@@ -2668,7 +2685,7 @@ export class Parser {
2668
2685
  table: { type: 'identifier', name: tableName },
2669
2686
  ifNotExists: false,
2670
2687
  columns,
2671
- isUnique: false,
2688
+ isUnique,
2672
2689
  tags
2673
2690
  };
2674
2691
  return { type: 'declaredIndex', indexStmt };
@@ -3241,7 +3258,10 @@ export class Parser {
3241
3258
  this.consume(TokenType.LPAREN, "Expected '(' after CHECK.");
3242
3259
  const expr = this.expression();
3243
3260
  endToken = this.consume(TokenType.RPAREN, "Expected ')' after CHECK expression.");
3244
- result = { type: 'check', name, expr, operations, loc: _createLoc(startToken, endToken) };
3261
+ const onConflict = this.parseConflictClause();
3262
+ if (onConflict)
3263
+ endToken = this.previous();
3264
+ result = { type: 'check', name, expr, operations, onConflict, loc: _createLoc(startToken, endToken) };
3245
3265
  }
3246
3266
  else if (this.match(TokenType.DEFAULT)) {
3247
3267
  const expr = this.expression();
@@ -3334,7 +3354,10 @@ export class Parser {
3334
3354
  this.consume(TokenType.LPAREN, "Expected '(' after CHECK.");
3335
3355
  const expr = this.expression();
3336
3356
  endToken = this.consume(TokenType.RPAREN, "Expected ')' after CHECK expression.");
3337
- result = { type: 'check', name, expr, operations, loc: _createLoc(startToken, endToken) };
3357
+ const onConflict = this.parseConflictClause();
3358
+ if (onConflict)
3359
+ endToken = this.previous();
3360
+ result = { type: 'check', name, expr, operations, onConflict, loc: _createLoc(startToken, endToken) };
3338
3361
  }
3339
3362
  else if (this.match(TokenType.FOREIGN)) {
3340
3363
  this.consume(TokenType.KEY, "Expected KEY after FOREIGN.");
@@ -3457,7 +3480,7 @@ export class Parser {
3457
3480
  }
3458
3481
  else if (this.match(TokenType.NO)) {
3459
3482
  this.consume(TokenType.ACTION, "Expected ACTION after NO.");
3460
- return 'ignore';
3483
+ return 'restrict';
3461
3484
  }
3462
3485
  throw this.error(this.peek(), "Expected foreign key action (SET NULL, SET DEFAULT, CASCADE, RESTRICT, NO ACTION).");
3463
3486
  }