@quereus/quereus 2.8.0 → 2.9.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 (214) hide show
  1. package/dist/src/emit/ast-stringify.d.ts.map +1 -1
  2. package/dist/src/emit/ast-stringify.js +0 -3
  3. package/dist/src/emit/ast-stringify.js.map +1 -1
  4. package/dist/src/parser/ast.d.ts +3 -2
  5. package/dist/src/parser/ast.d.ts.map +1 -1
  6. package/dist/src/parser/parser.d.ts.map +1 -1
  7. package/dist/src/parser/parser.js +13 -4
  8. package/dist/src/parser/parser.js.map +1 -1
  9. package/dist/src/planner/building/foreign-key-builder.d.ts.map +1 -1
  10. package/dist/src/planner/building/foreign-key-builder.js +3 -2
  11. package/dist/src/planner/building/foreign-key-builder.js.map +1 -1
  12. package/dist/src/planner/building/select.js +14 -2
  13. package/dist/src/planner/building/select.js.map +1 -1
  14. package/dist/src/planner/building/update.d.ts.map +1 -1
  15. package/dist/src/planner/building/update.js +10 -6
  16. package/dist/src/planner/building/update.js.map +1 -1
  17. package/dist/src/planner/framework/characteristics.d.ts +3 -1
  18. package/dist/src/planner/framework/characteristics.d.ts.map +1 -1
  19. package/dist/src/planner/framework/characteristics.js +7 -0
  20. package/dist/src/planner/framework/characteristics.js.map +1 -1
  21. package/dist/src/planner/framework/physical-utils.d.ts +22 -1
  22. package/dist/src/planner/framework/physical-utils.d.ts.map +1 -1
  23. package/dist/src/planner/framework/physical-utils.js +47 -0
  24. package/dist/src/planner/framework/physical-utils.js.map +1 -1
  25. package/dist/src/planner/nodes/alias-node.d.ts.map +1 -1
  26. package/dist/src/planner/nodes/alias-node.js +2 -0
  27. package/dist/src/planner/nodes/alias-node.js.map +1 -1
  28. package/dist/src/planner/nodes/asof-scan-node.d.ts +137 -0
  29. package/dist/src/planner/nodes/asof-scan-node.d.ts.map +1 -0
  30. package/dist/src/planner/nodes/asof-scan-node.js +223 -0
  31. package/dist/src/planner/nodes/asof-scan-node.js.map +1 -0
  32. package/dist/src/planner/nodes/constraint-check-node.d.ts +3 -0
  33. package/dist/src/planner/nodes/constraint-check-node.d.ts.map +1 -1
  34. package/dist/src/planner/nodes/constraint-check-node.js.map +1 -1
  35. package/dist/src/planner/nodes/distinct-node.d.ts.map +1 -1
  36. package/dist/src/planner/nodes/distinct-node.js +7 -0
  37. package/dist/src/planner/nodes/distinct-node.js.map +1 -1
  38. package/dist/src/planner/nodes/filter.d.ts.map +1 -1
  39. package/dist/src/planner/nodes/filter.js +2 -0
  40. package/dist/src/planner/nodes/filter.js.map +1 -1
  41. package/dist/src/planner/nodes/function.d.ts +11 -1
  42. package/dist/src/planner/nodes/function.d.ts.map +1 -1
  43. package/dist/src/planner/nodes/function.js +94 -1
  44. package/dist/src/planner/nodes/function.js.map +1 -1
  45. package/dist/src/planner/nodes/hash-aggregate.d.ts.map +1 -1
  46. package/dist/src/planner/nodes/hash-aggregate.js +2 -0
  47. package/dist/src/planner/nodes/hash-aggregate.js.map +1 -1
  48. package/dist/src/planner/nodes/join-node.d.ts.map +1 -1
  49. package/dist/src/planner/nodes/join-node.js +10 -2
  50. package/dist/src/planner/nodes/join-node.js.map +1 -1
  51. package/dist/src/planner/nodes/join-utils.d.ts +19 -1
  52. package/dist/src/planner/nodes/join-utils.d.ts.map +1 -1
  53. package/dist/src/planner/nodes/join-utils.js +46 -0
  54. package/dist/src/planner/nodes/join-utils.js.map +1 -1
  55. package/dist/src/planner/nodes/limit-offset.d.ts.map +1 -1
  56. package/dist/src/planner/nodes/limit-offset.js +2 -0
  57. package/dist/src/planner/nodes/limit-offset.js.map +1 -1
  58. package/dist/src/planner/nodes/merge-join-node.d.ts.map +1 -1
  59. package/dist/src/planner/nodes/merge-join-node.js +4 -1
  60. package/dist/src/planner/nodes/merge-join-node.js.map +1 -1
  61. package/dist/src/planner/nodes/ordinal-slice-node.d.ts +50 -0
  62. package/dist/src/planner/nodes/ordinal-slice-node.d.ts.map +1 -0
  63. package/dist/src/planner/nodes/ordinal-slice-node.js +127 -0
  64. package/dist/src/planner/nodes/ordinal-slice-node.js.map +1 -0
  65. package/dist/src/planner/nodes/plan-node-type.d.ts +2 -0
  66. package/dist/src/planner/nodes/plan-node-type.d.ts.map +1 -1
  67. package/dist/src/planner/nodes/plan-node-type.js +2 -0
  68. package/dist/src/planner/nodes/plan-node-type.js.map +1 -1
  69. package/dist/src/planner/nodes/plan-node.d.ts +130 -1
  70. package/dist/src/planner/nodes/plan-node.d.ts.map +1 -1
  71. package/dist/src/planner/nodes/plan-node.js +49 -0
  72. package/dist/src/planner/nodes/plan-node.js.map +1 -1
  73. package/dist/src/planner/nodes/project-node.d.ts.map +1 -1
  74. package/dist/src/planner/nodes/project-node.js +6 -1
  75. package/dist/src/planner/nodes/project-node.js.map +1 -1
  76. package/dist/src/planner/nodes/reference.d.ts +4 -1
  77. package/dist/src/planner/nodes/reference.d.ts.map +1 -1
  78. package/dist/src/planner/nodes/reference.js +16 -0
  79. package/dist/src/planner/nodes/reference.js.map +1 -1
  80. package/dist/src/planner/nodes/scalar.d.ts +7 -1
  81. package/dist/src/planner/nodes/scalar.d.ts.map +1 -1
  82. package/dist/src/planner/nodes/scalar.js +100 -1
  83. package/dist/src/planner/nodes/scalar.js.map +1 -1
  84. package/dist/src/planner/nodes/set-operation-node.d.ts +2 -1
  85. package/dist/src/planner/nodes/set-operation-node.d.ts.map +1 -1
  86. package/dist/src/planner/nodes/set-operation-node.js +9 -0
  87. package/dist/src/planner/nodes/set-operation-node.js.map +1 -1
  88. package/dist/src/planner/nodes/sort.d.ts.map +1 -1
  89. package/dist/src/planner/nodes/sort.js +20 -0
  90. package/dist/src/planner/nodes/sort.js.map +1 -1
  91. package/dist/src/planner/nodes/stream-aggregate.d.ts.map +1 -1
  92. package/dist/src/planner/nodes/stream-aggregate.js +2 -0
  93. package/dist/src/planner/nodes/stream-aggregate.js.map +1 -1
  94. package/dist/src/planner/nodes/table-access-nodes.d.ts +37 -2
  95. package/dist/src/planner/nodes/table-access-nodes.d.ts.map +1 -1
  96. package/dist/src/planner/nodes/table-access-nodes.js +87 -10
  97. package/dist/src/planner/nodes/table-access-nodes.js.map +1 -1
  98. package/dist/src/planner/nodes/update-node.d.ts +1 -3
  99. package/dist/src/planner/nodes/update-node.d.ts.map +1 -1
  100. package/dist/src/planner/nodes/update-node.js +3 -9
  101. package/dist/src/planner/nodes/update-node.js.map +1 -1
  102. package/dist/src/planner/nodes/window-node.d.ts +61 -2
  103. package/dist/src/planner/nodes/window-node.d.ts.map +1 -1
  104. package/dist/src/planner/nodes/window-node.js +64 -3
  105. package/dist/src/planner/nodes/window-node.js.map +1 -1
  106. package/dist/src/planner/optimizer-tuning.d.ts +9 -0
  107. package/dist/src/planner/optimizer-tuning.d.ts.map +1 -1
  108. package/dist/src/planner/optimizer-tuning.js +3 -0
  109. package/dist/src/planner/optimizer-tuning.js.map +1 -1
  110. package/dist/src/planner/optimizer.d.ts.map +1 -1
  111. package/dist/src/planner/optimizer.js +91 -0
  112. package/dist/src/planner/optimizer.js.map +1 -1
  113. package/dist/src/planner/rules/access/rule-asof-strategy-select.d.ts +30 -0
  114. package/dist/src/planner/rules/access/rule-asof-strategy-select.d.ts.map +1 -0
  115. package/dist/src/planner/rules/access/rule-asof-strategy-select.js +112 -0
  116. package/dist/src/planner/rules/access/rule-asof-strategy-select.js.map +1 -0
  117. package/dist/src/planner/rules/access/rule-monotonic-limit-pushdown.d.ts +33 -0
  118. package/dist/src/planner/rules/access/rule-monotonic-limit-pushdown.d.ts.map +1 -0
  119. package/dist/src/planner/rules/access/rule-monotonic-limit-pushdown.js +162 -0
  120. package/dist/src/planner/rules/access/rule-monotonic-limit-pushdown.js.map +1 -0
  121. package/dist/src/planner/rules/access/rule-monotonic-range-access.d.ts +29 -0
  122. package/dist/src/planner/rules/access/rule-monotonic-range-access.d.ts.map +1 -0
  123. package/dist/src/planner/rules/access/rule-monotonic-range-access.js +175 -0
  124. package/dist/src/planner/rules/access/rule-monotonic-range-access.js.map +1 -0
  125. package/dist/src/planner/rules/access/rule-select-access-path.d.ts.map +1 -1
  126. package/dist/src/planner/rules/access/rule-select-access-path.js +31 -10
  127. package/dist/src/planner/rules/access/rule-select-access-path.js.map +1 -1
  128. package/dist/src/planner/rules/join/equi-pair-extractor.d.ts +61 -0
  129. package/dist/src/planner/rules/join/equi-pair-extractor.d.ts.map +1 -0
  130. package/dist/src/planner/rules/join/equi-pair-extractor.js +155 -0
  131. package/dist/src/planner/rules/join/equi-pair-extractor.js.map +1 -0
  132. package/dist/src/planner/rules/join/rule-join-physical-selection.d.ts.map +1 -1
  133. package/dist/src/planner/rules/join/rule-join-physical-selection.js +2 -122
  134. package/dist/src/planner/rules/join/rule-join-physical-selection.js.map +1 -1
  135. package/dist/src/planner/rules/join/rule-lateral-top1-asof.d.ts +21 -0
  136. package/dist/src/planner/rules/join/rule-lateral-top1-asof.d.ts.map +1 -0
  137. package/dist/src/planner/rules/join/rule-lateral-top1-asof.js +405 -0
  138. package/dist/src/planner/rules/join/rule-lateral-top1-asof.js.map +1 -0
  139. package/dist/src/planner/rules/join/rule-monotonic-merge-join.d.ts +31 -0
  140. package/dist/src/planner/rules/join/rule-monotonic-merge-join.d.ts.map +1 -0
  141. package/dist/src/planner/rules/join/rule-monotonic-merge-join.js +113 -0
  142. package/dist/src/planner/rules/join/rule-monotonic-merge-join.js.map +1 -0
  143. package/dist/src/planner/rules/window/rule-monotonic-window.d.ts +47 -0
  144. package/dist/src/planner/rules/window/rule-monotonic-window.d.ts.map +1 -0
  145. package/dist/src/planner/rules/window/rule-monotonic-window.js +341 -0
  146. package/dist/src/planner/rules/window/rule-monotonic-window.js.map +1 -0
  147. package/dist/src/runtime/context-helpers.d.ts +9 -0
  148. package/dist/src/runtime/context-helpers.d.ts.map +1 -1
  149. package/dist/src/runtime/context-helpers.js +5 -0
  150. package/dist/src/runtime/context-helpers.js.map +1 -1
  151. package/dist/src/runtime/emit/asof-scan.d.ts +10 -0
  152. package/dist/src/runtime/emit/asof-scan.d.ts.map +1 -0
  153. package/dist/src/runtime/emit/asof-scan.js +467 -0
  154. package/dist/src/runtime/emit/asof-scan.js.map +1 -0
  155. package/dist/src/runtime/emit/constraint-check.d.ts.map +1 -1
  156. package/dist/src/runtime/emit/constraint-check.js +20 -0
  157. package/dist/src/runtime/emit/constraint-check.js.map +1 -1
  158. package/dist/src/runtime/emit/ordinal-slice.d.ts +13 -0
  159. package/dist/src/runtime/emit/ordinal-slice.d.ts.map +1 -0
  160. package/dist/src/runtime/emit/ordinal-slice.js +89 -0
  161. package/dist/src/runtime/emit/ordinal-slice.js.map +1 -0
  162. package/dist/src/runtime/emit/returning.d.ts.map +1 -1
  163. package/dist/src/runtime/emit/returning.js +9 -4
  164. package/dist/src/runtime/emit/returning.js.map +1 -1
  165. package/dist/src/runtime/emit/scan.d.ts +19 -3
  166. package/dist/src/runtime/emit/scan.d.ts.map +1 -1
  167. package/dist/src/runtime/emit/scan.js +12 -8
  168. package/dist/src/runtime/emit/scan.js.map +1 -1
  169. package/dist/src/runtime/emit/schema-declarative.d.ts.map +1 -1
  170. package/dist/src/runtime/emit/schema-declarative.js +91 -14
  171. package/dist/src/runtime/emit/schema-declarative.js.map +1 -1
  172. package/dist/src/runtime/emit/window.d.ts.map +1 -1
  173. package/dist/src/runtime/emit/window.js +732 -37
  174. package/dist/src/runtime/emit/window.js.map +1 -1
  175. package/dist/src/runtime/foreign-key-actions.js +5 -4
  176. package/dist/src/runtime/foreign-key-actions.js.map +1 -1
  177. package/dist/src/runtime/register.d.ts.map +1 -1
  178. package/dist/src/runtime/register.js +4 -0
  179. package/dist/src/runtime/register.js.map +1 -1
  180. package/dist/src/schema/catalog.d.ts +10 -0
  181. package/dist/src/schema/catalog.d.ts.map +1 -1
  182. package/dist/src/schema/catalog.js +29 -6
  183. package/dist/src/schema/catalog.js.map +1 -1
  184. package/dist/src/schema/function.d.ts +24 -0
  185. package/dist/src/schema/function.d.ts.map +1 -1
  186. package/dist/src/schema/function.js.map +1 -1
  187. package/dist/src/schema/manager.d.ts +10 -0
  188. package/dist/src/schema/manager.d.ts.map +1 -1
  189. package/dist/src/schema/manager.js +10 -0
  190. package/dist/src/schema/manager.js.map +1 -1
  191. package/dist/src/schema/schema-differ.d.ts +18 -1
  192. package/dist/src/schema/schema-differ.d.ts.map +1 -1
  193. package/dist/src/schema/schema-differ.js +307 -42
  194. package/dist/src/schema/schema-differ.js.map +1 -1
  195. package/dist/src/types/logical-type.d.ts +11 -0
  196. package/dist/src/types/logical-type.d.ts.map +1 -1
  197. package/dist/src/types/logical-type.js.map +1 -1
  198. package/dist/src/util/ast-literal.d.ts +11 -0
  199. package/dist/src/util/ast-literal.d.ts.map +1 -0
  200. package/dist/src/util/ast-literal.js +26 -0
  201. package/dist/src/util/ast-literal.js.map +1 -0
  202. package/dist/src/vtab/best-access-plan.d.ts +41 -0
  203. package/dist/src/vtab/best-access-plan.d.ts.map +1 -1
  204. package/dist/src/vtab/best-access-plan.js +29 -0
  205. package/dist/src/vtab/best-access-plan.js.map +1 -1
  206. package/dist/src/vtab/filter-info.d.ts +14 -0
  207. package/dist/src/vtab/filter-info.d.ts.map +1 -1
  208. package/dist/src/vtab/memory/module.d.ts +39 -1
  209. package/dist/src/vtab/memory/module.d.ts.map +1 -1
  210. package/dist/src/vtab/memory/module.js +206 -44
  211. package/dist/src/vtab/memory/module.js.map +1 -1
  212. package/dist/src/vtab/module.d.ts +24 -0
  213. package/dist/src/vtab/module.d.ts.map +1 -1
  214. package/package.json +3 -3
@@ -1,10 +1,17 @@
1
1
  import { createTableToString, createViewToString, createIndexToString, createAssertionToString, columnDefToString, quoteIdentifier, expressionToString } from '../emit/ast-stringify.js';
2
2
  import { QuereusError } from '../common/errors.js';
3
3
  import { StatusCode } from '../common/types.js';
4
+ import { createLogger } from '../common/logger.js';
5
+ const log = createLogger('schema:differ');
6
+ const warnLog = log.extend('warn');
7
+ /** Reserved tag namespace prefix used for differ-recognized hints. */
8
+ const QUEREUS_TAG_PREFIX = 'quereus.';
9
+ /** Recognized tag keys under the `quereus.*` namespace. */
10
+ const KNOWN_QUEREUS_KEYS = new Set(['quereus.id', 'quereus.previous_name']);
4
11
  /**
5
12
  * Computes the difference between declared schema and actual catalog
6
13
  */
7
- export function computeSchemaDiff(declaredSchema, actualCatalog) {
14
+ export function computeSchemaDiff(declaredSchema, actualCatalog, policy = 'allow') {
8
15
  const diff = {
9
16
  tablesToCreate: [],
10
17
  tablesToDrop: [],
@@ -14,7 +21,8 @@ export function computeSchemaDiff(declaredSchema, actualCatalog) {
14
21
  indexesToCreate: [],
15
22
  indexesToDrop: [],
16
23
  assertionsToCreate: [],
17
- assertionsToDrop: []
24
+ assertionsToDrop: [],
25
+ renames: [],
18
26
  };
19
27
  const targetSchemaName = actualCatalog.schemaName;
20
28
  // Extract schema-level default module settings
@@ -29,12 +37,22 @@ export function computeSchemaDiff(declaredSchema, actualCatalog) {
29
37
  switch (item.type) {
30
38
  case 'declaredTable':
31
39
  declaredTables.set(item.tableStmt.table.name.toLowerCase(), item);
40
+ warnUnknownQuereusKeys(item.tableStmt.tags, 'table', item.tableStmt.table.name);
41
+ for (const col of item.tableStmt.columns) {
42
+ warnUnknownQuereusKeys(col.tags, 'column', `${item.tableStmt.table.name}.${col.name}`);
43
+ }
44
+ for (const c of item.tableStmt.constraints ?? []) {
45
+ if (c.name)
46
+ warnUnknownQuereusKeys(c.tags, 'constraint', c.name);
47
+ }
32
48
  break;
33
49
  case 'declaredView':
34
50
  declaredViews.set(item.viewStmt.view.name.toLowerCase(), item);
51
+ warnUnknownQuereusKeys(item.viewStmt.tags, 'view', item.viewStmt.view.name);
35
52
  break;
36
53
  case 'declaredIndex':
37
54
  declaredIndexes.set(item.indexStmt.index.name.toLowerCase(), item);
55
+ warnUnknownQuereusKeys(item.indexStmt.tags, 'index', item.indexStmt.index.name);
38
56
  break;
39
57
  case 'declaredAssertion':
40
58
  declaredAssertions.set(item.assertionStmt.name.toLowerCase(), item);
@@ -45,58 +63,111 @@ export function computeSchemaDiff(declaredSchema, actualCatalog) {
45
63
  const actualTables = new Map(actualCatalog.tables.map(t => [t.name.toLowerCase(), t]));
46
64
  const actualViews = new Map(actualCatalog.views.map(v => [v.name.toLowerCase(), v]));
47
65
  const actualIndexes = new Map(actualCatalog.indexes.map(i => [i.name.toLowerCase(), i]));
48
- // Find tables to create (in declared but not in actual)
66
+ // Resolve renames per-kind. Each call returns:
67
+ // - rename ops (oldName -> newName)
68
+ // - matched pairs (declaredKey -> actual): for the alter-diff loop later
69
+ // - consumedActuals: actuals that are now spoken-for by a rename and must
70
+ // not be dropped
71
+ const tableRenames = resolveRenames({
72
+ kind: 'table',
73
+ declared: declaredTables,
74
+ actual: actualTables,
75
+ getDeclaredName: d => d.tableStmt.table.name,
76
+ getActualName: a => a.name,
77
+ getDeclaredTags: d => d.tableStmt.tags,
78
+ getActualTags: a => a.tags,
79
+ policy,
80
+ });
81
+ diff.renames.push(...tableRenames.renames);
82
+ const viewRenames = resolveRenames({
83
+ kind: 'view',
84
+ declared: declaredViews,
85
+ actual: actualViews,
86
+ getDeclaredName: d => d.viewStmt.view.name,
87
+ getActualName: a => a.name,
88
+ getDeclaredTags: d => d.viewStmt.tags,
89
+ getActualTags: a => a.tags,
90
+ policy,
91
+ });
92
+ diff.renames.push(...viewRenames.renames);
93
+ const indexRenames = resolveRenames({
94
+ kind: 'index',
95
+ declared: declaredIndexes,
96
+ actual: actualIndexes,
97
+ getDeclaredName: d => d.indexStmt.index.name,
98
+ getActualName: a => a.name,
99
+ getDeclaredTags: d => d.indexStmt.tags,
100
+ getActualTags: a => a.tags,
101
+ policy,
102
+ });
103
+ diff.renames.push(...indexRenames.renames);
104
+ // Tables: creates / alters
49
105
  for (const [name, declaredTable] of declaredTables) {
50
- if (!actualTables.has(name)) {
51
- // Build the effective table statement, applying schema-level defaults
52
- const tableStmt = declaredTable.tableStmt;
53
- const effectiveStmt = applyTableDefaults(tableStmt, targetSchemaName, defaultVtabModule, defaultVtabArgs);
54
- diff.tablesToCreate.push(createTableToString(effectiveStmt));
55
- }
56
- else {
57
- // Table exists - check if it needs alteration
58
- const alterDiff = computeTableAlterDiff(declaredTable, actualTables.get(name));
59
- if (alterDiff.columnsToAdd.length > 0 || alterDiff.columnsToDrop.length > 0 || alterDiff.columnsToAlter.length > 0 || alterDiff.primaryKeyChange) {
106
+ const tableStmt = declaredTable.tableStmt;
107
+ const matchedActual = tableRenames.pairs.get(name);
108
+ if (matchedActual) {
109
+ // Either a rename match or a name-based match — compute alter diff against the matched actual.
110
+ const alterDiff = computeTableAlterDiff(declaredTable, matchedActual, policy);
111
+ // If this was a rename, set the alter target to the new name (post-rename)
112
+ if (matchedActual.name.toLowerCase() !== name) {
113
+ alterDiff.tableName = tableStmt.table.name;
114
+ }
115
+ if (alterDiff.columnsToAdd.length > 0
116
+ || alterDiff.columnsToDrop.length > 0
117
+ || alterDiff.columnsToAlter.length > 0
118
+ || alterDiff.columnsToRename.length > 0
119
+ || (alterDiff.constraintsToRename?.length ?? 0) > 0
120
+ || alterDiff.primaryKeyChange) {
60
121
  diff.tablesToAlter.push(alterDiff);
61
122
  }
62
123
  }
124
+ else {
125
+ const effectiveStmt = applyTableDefaults(tableStmt, targetSchemaName, defaultVtabModule, defaultVtabArgs);
126
+ diff.tablesToCreate.push(createTableToString(effectiveStmt));
127
+ }
63
128
  }
64
- // Find tables to drop (in actual but not in declared). Order matters under
65
- // FK enforcement: a child table must be dropped before its parent. Topo-sort
66
- // so any to-be-dropped table that FK-references another to-be-dropped table
67
- // comes first.
129
+ // Tables: drops (skip those consumed by a rename)
68
130
  const dropSet = new Set();
69
131
  for (const [name] of actualTables) {
132
+ if (tableRenames.consumedActuals.has(name))
133
+ continue;
70
134
  if (!declaredTables.has(name))
71
135
  dropSet.add(name);
72
136
  }
73
137
  diff.tablesToDrop = orderDropsByFKDependency(dropSet, actualTables);
74
- // Find views to create/drop
138
+ // Views: creates / drops
75
139
  for (const [name, declaredView] of declaredViews) {
76
- if (!actualViews.has(name)) {
77
- // Generate proper view DDL using AST stringifier
140
+ if (!viewRenames.pairs.has(name)) {
78
141
  diff.viewsToCreate.push(createViewToString(declaredView.viewStmt));
79
142
  }
80
143
  }
81
144
  for (const [name] of actualViews) {
82
- if (!declaredViews.has(name)) {
145
+ if (viewRenames.consumedActuals.has(name))
146
+ continue;
147
+ if (!declaredViews.has(name))
83
148
  diff.viewsToDrop.push(name);
84
- }
85
149
  }
86
- // Find indexes to create/drop
150
+ // Indexes: creates / drops
87
151
  for (const [name, declaredIndex] of declaredIndexes) {
88
- if (!actualIndexes.has(name)) {
89
- // Apply schema name to the index and its table reference
152
+ if (!indexRenames.pairs.has(name)) {
90
153
  const effectiveStmt = applyIndexDefaults(declaredIndex.indexStmt, targetSchemaName);
91
154
  diff.indexesToCreate.push(createIndexToString(effectiveStmt));
92
155
  }
93
156
  }
94
157
  for (const [name] of actualIndexes) {
95
- if (!declaredIndexes.has(name)) {
158
+ if (indexRenames.consumedActuals.has(name))
159
+ continue;
160
+ if (!declaredIndexes.has(name))
96
161
  diff.indexesToDrop.push(name);
97
- }
98
162
  }
99
- // Find assertions to create/drop
163
+ // Apply 'require-hint' policy: any unhinted name change is an error rather
164
+ // than a silent drop+create.
165
+ if (policy === 'require-hint') {
166
+ enforceRequireHint('table', diff.tablesToCreate.length, diff.tablesToDrop.length);
167
+ enforceRequireHint('view', diff.viewsToCreate.length, diff.viewsToDrop.length);
168
+ enforceRequireHint('index', diff.indexesToCreate.length, diff.indexesToDrop.length);
169
+ }
170
+ // Assertions (no rename support — names are explicitly part of the contract).
100
171
  const actualAssertions = new Map(actualCatalog.assertions.map(a => [a.name.toLowerCase(), a]));
101
172
  for (const [name, declaredAssertion] of declaredAssertions) {
102
173
  if (!actualAssertions.has(name)) {
@@ -110,6 +181,132 @@ export function computeSchemaDiff(declaredSchema, actualCatalog) {
110
181
  }
111
182
  return diff;
112
183
  }
184
+ /**
185
+ * Generic resolver: pair declared and actual objects by name first, then by
186
+ * `quereus.id` and `quereus.previous_name` tag hints to detect renames.
187
+ *
188
+ * Returns:
189
+ * - `renames`: ordered RenameOps to perform.
190
+ * - `pairs`: map from lowercased *declared* name to the matched actual,
191
+ * for use by alter-diff (covers both name-matched and rename-matched).
192
+ * - `consumedActuals`: lowercase actual names that are spoken-for by a rename
193
+ * (so the drop loop skips them).
194
+ */
195
+ function resolveRenames(args) {
196
+ const { kind, declared, actual, getDeclaredName, getActualName, getDeclaredTags, getActualTags, policy } = args;
197
+ const renames = [];
198
+ const pairs = new Map();
199
+ const consumedActuals = new Set();
200
+ // Under 'deny' policy, skip rename detection entirely — only name matches.
201
+ if (policy === 'deny') {
202
+ for (const [dn] of declared) {
203
+ const nameMatch = actual.get(dn);
204
+ if (nameMatch)
205
+ pairs.set(dn, nameMatch);
206
+ }
207
+ return { renames, pairs, consumedActuals };
208
+ }
209
+ // Build (id → actual) index for quick stable-id lookup.
210
+ const actualById = new Map();
211
+ for (const [, a] of actual) {
212
+ const id = readQuereusHint(getActualTags(a), 'id');
213
+ if (id) {
214
+ if (actualById.has(id)) {
215
+ throw new QuereusError(`Duplicate quereus.id '${id}' on ${kind}s in actual catalog`, StatusCode.ERROR);
216
+ }
217
+ actualById.set(id, a);
218
+ }
219
+ }
220
+ // Iterate declared in insertion order. For each declared:
221
+ // - hintMatch: actual resolved by quereus.id (preferred) or previous_name
222
+ // - nameMatch: actual sharing the declared's name
223
+ // If both exist and refer to *different* actuals → conflict (always error,
224
+ // independent of policy beyond 'deny').
225
+ for (const [dn, d] of declared) {
226
+ const tags = getDeclaredTags(d);
227
+ const declaredId = readQuereusHint(tags, 'id');
228
+ const prevNamesRaw = readQuereusHint(tags, 'previous_name');
229
+ let hintMatch;
230
+ let hintMatchKey;
231
+ if (declaredId) {
232
+ const byId = actualById.get(declaredId);
233
+ if (byId) {
234
+ hintMatch = byId;
235
+ hintMatchKey = getActualName(byId).toLowerCase();
236
+ }
237
+ }
238
+ if (!hintMatch && prevNamesRaw) {
239
+ const candidates = prevNamesRaw
240
+ .split(',')
241
+ .map(s => s.trim().toLowerCase())
242
+ .filter(s => s.length > 0);
243
+ for (const cand of candidates) {
244
+ if (cand === dn)
245
+ continue; // self-reference is never a rename source
246
+ const byPrev = actual.get(cand);
247
+ if (byPrev) {
248
+ hintMatch = byPrev;
249
+ hintMatchKey = cand;
250
+ break;
251
+ }
252
+ }
253
+ }
254
+ const nameMatch = actual.get(dn);
255
+ const hintIsSelf = hintMatch && hintMatchKey === dn;
256
+ // Conflict: declared name AND hint each resolve to *distinct* existing actuals.
257
+ if (nameMatch && hintMatch && !hintIsSelf) {
258
+ throw new QuereusError(`Rename conflict for ${kind} '${getDeclaredName(d)}': declared name and quereus.previous_name/id resolve to different existing objects ('${dn}' vs '${hintMatchKey}')`, StatusCode.ERROR);
259
+ }
260
+ if (nameMatch) {
261
+ pairs.set(dn, nameMatch);
262
+ continue;
263
+ }
264
+ if (hintMatch && !hintIsSelf) {
265
+ if (consumedActuals.has(hintMatchKey)) {
266
+ throw new QuereusError(`Rename conflict for ${kind} '${getDeclaredName(d)}': old object '${hintMatchKey}' already consumed by another rename`, StatusCode.ERROR);
267
+ }
268
+ renames.push({ kind, oldName: getActualName(hintMatch), newName: getDeclaredName(d) });
269
+ pairs.set(dn, hintMatch);
270
+ consumedActuals.add(hintMatchKey);
271
+ }
272
+ // Else: create path (caller emits CREATE)
273
+ }
274
+ return { renames, pairs, consumedActuals };
275
+ }
276
+ /**
277
+ * Read a `quereus.<key>` tag value as a string. Returns undefined if not present
278
+ * or non-string.
279
+ */
280
+ function readQuereusHint(tags, key) {
281
+ if (!tags)
282
+ return undefined;
283
+ const fullKey = QUEREUS_TAG_PREFIX + key;
284
+ const v = tags[fullKey];
285
+ if (typeof v !== 'string')
286
+ return undefined;
287
+ const trimmed = v.trim();
288
+ return trimmed.length > 0 ? trimmed : undefined;
289
+ }
290
+ /**
291
+ * Soft-warn on unrecognized `quereus.*` tag keys so future versions can add
292
+ * keys without breaking older parsers.
293
+ */
294
+ function warnUnknownQuereusKeys(tags, subject, subjectName) {
295
+ if (!tags)
296
+ return;
297
+ for (const key of Object.keys(tags)) {
298
+ if (!key.startsWith(QUEREUS_TAG_PREFIX))
299
+ continue;
300
+ if (KNOWN_QUEREUS_KEYS.has(key))
301
+ continue;
302
+ warnLog('Unknown reserved tag key %s on %s %s', key, subject, subjectName);
303
+ }
304
+ }
305
+ function enforceRequireHint(kind, creates, drops) {
306
+ if (creates > 0 && drops > 0) {
307
+ throw new QuereusError(`rename_policy = 'require-hint': ${kind} drops and creates both present (${drops} drop / ${creates} create); add 'quereus.previous_name' or 'quereus.id' to hint renames, or use 'allow' / 'deny'.`, StatusCode.ERROR);
308
+ }
309
+ }
113
310
  /**
114
311
  * Applies schema-level defaults (schema name, default vtab module) to a table statement
115
312
  */
@@ -174,43 +371,93 @@ function applyIndexDefaults(indexStmt, targetSchemaName) {
174
371
  }
175
372
  return result;
176
373
  }
177
- function computeTableAlterDiff(declaredTable, actualTable) {
374
+ function computeTableAlterDiff(declaredTable, actualTable, policy) {
178
375
  const diff = {
179
- tableName: declaredTable.tableStmt.table.name,
376
+ // Default to actual's name; caller may override to declared name when this is a rename target.
377
+ tableName: actualTable.name,
180
378
  columnsToAdd: [],
181
379
  columnsToDrop: [],
182
380
  columnsToAlter: [],
381
+ columnsToRename: [],
183
382
  };
184
- const declaredColumnsByName = new Map();
383
+ // Detect column renames first so subsequent add/drop/alter operate on the
384
+ // post-rename column set.
385
+ const declaredColumns = new Map();
185
386
  for (const col of declaredTable.tableStmt.columns) {
186
- declaredColumnsByName.set(col.name.toLowerCase(), col);
387
+ declaredColumns.set(col.name.toLowerCase(), col);
187
388
  }
188
- const actualColumnsByName = new Map();
389
+ const actualColumns = new Map();
189
390
  for (const col of actualTable.columns) {
190
- actualColumnsByName.set(col.name.toLowerCase(), col);
391
+ actualColumns.set(col.name.toLowerCase(), col);
392
+ }
393
+ const colRenames = resolveRenames({
394
+ kind: 'constraint', // unused for ColumnRenameOp; kind only flows into RenameOp not surfaced here
395
+ declared: declaredColumns,
396
+ actual: actualColumns,
397
+ getDeclaredName: d => d.name,
398
+ getActualName: a => a.name,
399
+ getDeclaredTags: d => d.tags,
400
+ getActualTags: a => a.tags,
401
+ policy,
402
+ });
403
+ for (const r of colRenames.renames) {
404
+ diff.columnsToRename.push({ oldName: r.oldName, newName: r.newName });
191
405
  }
192
406
  // Find columns to add (store full column definition for DDL generation)
193
407
  for (const col of declaredTable.tableStmt.columns) {
194
- if (!actualColumnsByName.has(col.name.toLowerCase())) {
408
+ if (!colRenames.pairs.has(col.name.toLowerCase())) {
195
409
  diff.columnsToAdd.push(columnDefToString(col));
196
410
  }
197
411
  }
198
- // Find columns to drop
412
+ // Find columns to drop (skip those consumed by a rename)
199
413
  for (const col of actualTable.columns) {
200
- if (!declaredColumnsByName.has(col.name.toLowerCase())) {
414
+ const ln = col.name.toLowerCase();
415
+ if (colRenames.consumedActuals.has(ln))
416
+ continue;
417
+ if (!declaredColumns.has(ln)) {
201
418
  diff.columnsToDrop.push(col.name);
202
419
  }
203
420
  }
204
- // Detect attribute changes for surviving columns (present in both declared + actual)
421
+ // Detect attribute changes for surviving columns (matched declared/actual pair)
205
422
  for (const col of declaredTable.tableStmt.columns) {
206
- const actual = actualColumnsByName.get(col.name.toLowerCase());
207
- if (!actual)
423
+ const matched = colRenames.pairs.get(col.name.toLowerCase());
424
+ if (!matched)
208
425
  continue;
209
- const change = computeColumnAttributeChange(col, actual);
426
+ const change = computeColumnAttributeChange(col, matched);
210
427
  if (change) {
211
428
  diff.columnsToAlter.push(change);
212
429
  }
213
430
  }
431
+ // Apply require-hint to columns within this table
432
+ if (policy === 'require-hint') {
433
+ enforceRequireHint(`column (${actualTable.name})`, diff.columnsToAdd.length, diff.columnsToDrop.length);
434
+ }
435
+ // Detect named-constraint renames (table-level only). We do not surface
436
+ // drops/creates of constraints here — the engine has no ALTER for those
437
+ // today; the caller would have to manage that out-of-band. For renames,
438
+ // when a primitive doesn't exist this becomes drop+recreate at DDL emit time.
439
+ const declaredNamedConstraints = new Map();
440
+ for (const c of declaredTable.tableStmt.constraints ?? []) {
441
+ if (c.name)
442
+ declaredNamedConstraints.set(c.name.toLowerCase(), c);
443
+ }
444
+ const actualNamedConstraints = new Map();
445
+ for (const c of actualTable.namedConstraints ?? []) {
446
+ actualNamedConstraints.set(c.name.toLowerCase(), c);
447
+ }
448
+ const constraintRenames = resolveRenames({
449
+ kind: 'constraint',
450
+ declared: declaredNamedConstraints,
451
+ actual: actualNamedConstraints,
452
+ getDeclaredName: d => d.name,
453
+ getActualName: a => a.name,
454
+ getDeclaredTags: d => d.tags,
455
+ getActualTags: a => a.tags,
456
+ policy,
457
+ });
458
+ if (constraintRenames.renames.length > 0) {
459
+ diff.constraintsToRename = constraintRenames.renames.map(r => ({ oldName: r.oldName, newName: r.newName }));
460
+ }
214
461
  // Detect PK changes
215
462
  const declaredPk = extractDeclaredPK(declaredTable);
216
463
  const actualPk = actualTable.primaryKey;
@@ -383,6 +630,20 @@ function orderDropsByFKDependency(dropSet, actualTables) {
383
630
  export function generateMigrationDDL(diff, schemaName) {
384
631
  const statements = [];
385
632
  const schemaPrefix = (schemaName && schemaName !== 'main') ? `${quoteIdentifier(schemaName)}.` : '';
633
+ // Renames first — they free old names for subsequent creates and re-target
634
+ // dependents (handled inside ALTER TABLE ... RENAME by the rename rewriter).
635
+ // Tables get a primitive ALTER TABLE RENAME; views/indexes/named constraints
636
+ // have no engine primitive yet — fall back to drop+recreate is left to the
637
+ // caller (we surface only the rename op here for tables and the alter-diff
638
+ // pipeline already drops+recreates non-table objects via diff.viewsToDrop /
639
+ // indexesToDrop when no rename hint is present).
640
+ for (const r of diff.renames) {
641
+ if (r.kind === 'table') {
642
+ statements.push(`ALTER TABLE ${schemaPrefix}${quoteIdentifier(r.oldName)} RENAME TO ${quoteIdentifier(r.newName)}`);
643
+ }
644
+ // View / index / constraint renames have no primitive — caller emits
645
+ // drop+recreate via the standard buckets.
646
+ }
386
647
  // Drop assertions first (they may reference tables)
387
648
  for (const name of diff.assertionsToDrop) {
388
649
  statements.push(`DROP ASSERTION IF EXISTS ${schemaPrefix}${quoteIdentifier(name)}`);
@@ -404,13 +665,17 @@ export function generateMigrationDDL(diff, schemaName) {
404
665
  statements.push(...diff.assertionsToCreate);
405
666
  // Alter existing tables.
406
667
  // Phase order within one table:
407
- // ADD COLUMN
668
+ // RENAME COLUMN (so subsequent phases see post-rename column names)
669
+ // → ADD COLUMN
408
670
  // → ALTER COLUMN (type, then default, then nullability — so SET NOT NULL
409
671
  // can rely on an already-populated DEFAULT for backfill)
410
672
  // → ALTER PRIMARY KEY
411
673
  // → DROP COLUMN (last, so NOT NULL relaxation never blocks subsequent drops)
412
674
  for (const alter of diff.tablesToAlter) {
413
675
  const quotedTable = `${schemaPrefix}${quoteIdentifier(alter.tableName)}`;
676
+ for (const r of alter.columnsToRename) {
677
+ statements.push(`ALTER TABLE ${quotedTable} RENAME COLUMN ${quoteIdentifier(r.oldName)} TO ${quoteIdentifier(r.newName)}`);
678
+ }
414
679
  for (const colDef of alter.columnsToAdd) {
415
680
  statements.push(`ALTER TABLE ${quotedTable} ADD COLUMN ${colDef}`);
416
681
  }
@@ -1 +1 @@
1
- {"version":3,"file":"schema-differ.js","sourceRoot":"","sources":["../../../src/schema/schema-differ.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schema-differ.js","sourceRoot":"","sources":["../../../src/schema/schema-differ.ts"],"names":[],"mappings":"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"}
@@ -44,6 +44,17 @@ export interface LogicalType {
44
44
  isTextual?: boolean;
45
45
  /** Is this a temporal type? */
46
46
  isTemporal?: boolean;
47
+ /**
48
+ * For monotone-but-lossy scalar transforms (e.g. date(ts) = D), compute the
49
+ * equivalent half-open range `[lowerInclusive, upperExclusive)` on the
50
+ * underlying input value. The `kind` is named by the function schema's
51
+ * `rangeRewriteOnArg` trait. Returns undefined when the kind is unsupported
52
+ * or the value is not bucketable for this type.
53
+ */
54
+ bucketBounds?(kind: string, value: SqlValue): {
55
+ lowerInclusive: SqlValue;
56
+ upperExclusive: SqlValue;
57
+ } | undefined;
47
58
  }
48
59
  /**
49
60
  * Get the physical type of a SqlValue at runtime.
@@ -1 +1 @@
1
- {"version":3,"file":"logical-type.d.ts","sourceRoot":"","sources":["../../../src/types/logical-type.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAEnD;;;GAGG;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;AAEjE;;;GAGG;AACH,oBAAY,YAAY;IACvB,IAAI,IAAI;IACR,OAAO,IAAI,CAAK,kBAAkB;IAClC,IAAI,IAAI,CAAQ,0BAA0B;IAC1C,IAAI,IAAI,CAAQ,SAAS;IACzB,IAAI,IAAI,CAAQ,aAAa;IAC7B,OAAO,IAAI,CAAK,UAAU;IAC1B,MAAM,IAAI;CACV;AAED;;;GAGG;AACH,MAAM,WAAW,WAAW;IAE3B,kDAAkD;IAClD,IAAI,EAAE,MAAM,CAAC;IACb,sCAAsC;IACtC,YAAY,EAAE,YAAY,CAAC;IAG3B,4CAA4C;IAC5C,QAAQ,CAAC,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC;IACpC,gDAAgD;IAChD,KAAK,CAAC,CAAC,KAAK,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAGlC,wCAAwC;IACxC,OAAO,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAE,iBAAiB,GAAG,MAAM,CAAC;IAC1E,0CAA0C;IAC1C,mBAAmB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAGxC,iCAAiC;IACjC,SAAS,CAAC,CAAC,KAAK,EAAE,QAAQ,GAAG,QAAQ,CAAC;IACtC,2BAA2B;IAC3B,WAAW,CAAC,CAAC,KAAK,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAGxC,8BAA8B;IAC9B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,8BAA8B;IAC9B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,+BAA+B;IAC/B,UAAU,CAAC,EAAE,OAAO,CAAC;CACrB;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,QAAQ,GAAG,YAAY,CAW7D;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,GAAG,MAAM,GAAG,SAAS,CAIzE;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,YAAY,EAAE,YAAY,GAAG,MAAM,CAWnE"}
1
+ {"version":3,"file":"logical-type.d.ts","sourceRoot":"","sources":["../../../src/types/logical-type.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAEnD;;;GAGG;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;AAEjE;;;GAGG;AACH,oBAAY,YAAY;IACvB,IAAI,IAAI;IACR,OAAO,IAAI,CAAK,kBAAkB;IAClC,IAAI,IAAI,CAAQ,0BAA0B;IAC1C,IAAI,IAAI,CAAQ,SAAS;IACzB,IAAI,IAAI,CAAQ,aAAa;IAC7B,OAAO,IAAI,CAAK,UAAU;IAC1B,MAAM,IAAI;CACV;AAED;;;GAGG;AACH,MAAM,WAAW,WAAW;IAE3B,kDAAkD;IAClD,IAAI,EAAE,MAAM,CAAC;IACb,sCAAsC;IACtC,YAAY,EAAE,YAAY,CAAC;IAG3B,4CAA4C;IAC5C,QAAQ,CAAC,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC;IACpC,gDAAgD;IAChD,KAAK,CAAC,CAAC,KAAK,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAGlC,wCAAwC;IACxC,OAAO,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAE,iBAAiB,GAAG,MAAM,CAAC;IAC1E,0CAA0C;IAC1C,mBAAmB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAGxC,iCAAiC;IACjC,SAAS,CAAC,CAAC,KAAK,EAAE,QAAQ,GAAG,QAAQ,CAAC;IACtC,2BAA2B;IAC3B,WAAW,CAAC,CAAC,KAAK,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAGxC,8BAA8B;IAC9B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,8BAA8B;IAC9B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,+BAA+B;IAC/B,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;;;;OAMG;IACH,YAAY,CAAC,CACZ,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,QAAQ,GACb;QAAE,cAAc,EAAE,QAAQ,CAAC;QAAC,cAAc,EAAE,QAAQ,CAAA;KAAE,GAAG,SAAS,CAAC;CACtE;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,QAAQ,GAAG,YAAY,CAW7D;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,GAAG,MAAM,GAAG,SAAS,CAIzE;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,YAAY,EAAE,YAAY,GAAG,MAAM,CAWnE"}
@@ -1 +1 @@
1
- {"version":3,"file":"logical-type.js","sourceRoot":"","sources":["../../../src/types/logical-type.ts"],"names":[],"mappings":"AAQA;;;GAGG;AACH,MAAM,CAAN,IAAY,YAQX;AARD,WAAY,YAAY;IACvB,+CAAQ,CAAA;IACR,qDAAW,CAAA;IACX,+CAAQ,CAAA;IACR,+CAAQ,CAAA;IACR,+CAAQ,CAAA;IACR,qDAAW,CAAA;IACX,mDAAU,CAAA;AACX,CAAC,EARW,YAAY,KAAZ,YAAY,QAQvB;AAwCD;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,KAAe;IAC9C,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,YAAY,CAAC,IAAI,CAAC;IAC7C,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC/B,OAAO,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC;IAC3E,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,YAAY,CAAC,OAAO,CAAC;IAC3D,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,YAAY,CAAC,IAAI,CAAC;IACxD,IAAI,OAAO,KAAK,KAAK,SAAS;QAAE,OAAO,YAAY,CAAC,OAAO,CAAC;IAC5D,IAAI,KAAK,YAAY,UAAU;QAAE,OAAO,YAAY,CAAC,IAAI,CAAC;IAC1D,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,YAAY,CAAC,MAAM,CAAC;IAC5E,OAAO,YAAY,CAAC,IAAI,CAAC;AAC1B,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,CAAW,EAAE,CAAW;IACpD,IAAI,CAAC,KAAK,IAAI;QAAE,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3C,IAAI,CAAC,KAAK,IAAI;QAAE,OAAO,CAAC,CAAC;IACzB,OAAO,SAAS,CAAC;AAClB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,YAA0B;IAC1D,QAAQ,YAAY,EAAE,CAAC;QACtB,KAAK,YAAY,CAAC,IAAI,CAAC,CAAC,OAAO,MAAM,CAAC;QACtC,KAAK,YAAY,CAAC,OAAO,CAAC,CAAC,OAAO,SAAS,CAAC;QAC5C,KAAK,YAAY,CAAC,IAAI,CAAC,CAAC,OAAO,MAAM,CAAC;QACtC,KAAK,YAAY,CAAC,IAAI,CAAC,CAAC,OAAO,MAAM,CAAC;QACtC,KAAK,YAAY,CAAC,IAAI,CAAC,CAAC,OAAO,MAAM,CAAC;QACtC,KAAK,YAAY,CAAC,OAAO,CAAC,CAAC,OAAO,SAAS,CAAC;QAC5C,KAAK,YAAY,CAAC,MAAM,CAAC,CAAC,OAAO,QAAQ,CAAC;QAC1C,OAAO,CAAC,CAAC,OAAO,SAAS,CAAC;IAC3B,CAAC;AACF,CAAC"}
1
+ {"version":3,"file":"logical-type.js","sourceRoot":"","sources":["../../../src/types/logical-type.ts"],"names":[],"mappings":"AAQA;;;GAGG;AACH,MAAM,CAAN,IAAY,YAQX;AARD,WAAY,YAAY;IACvB,+CAAQ,CAAA;IACR,qDAAW,CAAA;IACX,+CAAQ,CAAA;IACR,+CAAQ,CAAA;IACR,+CAAQ,CAAA;IACR,qDAAW,CAAA;IACX,mDAAU,CAAA;AACX,CAAC,EARW,YAAY,KAAZ,YAAY,QAQvB;AAoDD;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,KAAe;IAC9C,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,YAAY,CAAC,IAAI,CAAC;IAC7C,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC/B,OAAO,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC;IAC3E,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,YAAY,CAAC,OAAO,CAAC;IAC3D,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,YAAY,CAAC,IAAI,CAAC;IACxD,IAAI,OAAO,KAAK,KAAK,SAAS;QAAE,OAAO,YAAY,CAAC,OAAO,CAAC;IAC5D,IAAI,KAAK,YAAY,UAAU;QAAE,OAAO,YAAY,CAAC,IAAI,CAAC;IAC1D,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,YAAY,CAAC,MAAM,CAAC;IAC5E,OAAO,YAAY,CAAC,IAAI,CAAC;AAC1B,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,CAAW,EAAE,CAAW;IACpD,IAAI,CAAC,KAAK,IAAI;QAAE,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3C,IAAI,CAAC,KAAK,IAAI;QAAE,OAAO,CAAC,CAAC;IACzB,OAAO,SAAS,CAAC;AAClB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,YAA0B;IAC1D,QAAQ,YAAY,EAAE,CAAC;QACtB,KAAK,YAAY,CAAC,IAAI,CAAC,CAAC,OAAO,MAAM,CAAC;QACtC,KAAK,YAAY,CAAC,OAAO,CAAC,CAAC,OAAO,SAAS,CAAC;QAC5C,KAAK,YAAY,CAAC,IAAI,CAAC,CAAC,OAAO,MAAM,CAAC;QACtC,KAAK,YAAY,CAAC,IAAI,CAAC,CAAC,OAAO,MAAM,CAAC;QACtC,KAAK,YAAY,CAAC,IAAI,CAAC,CAAC,OAAO,MAAM,CAAC;QACtC,KAAK,YAAY,CAAC,OAAO,CAAC,CAAC,OAAO,SAAS,CAAC;QAC5C,KAAK,YAAY,CAAC,MAAM,CAAC,CAAC,OAAO,QAAQ,CAAC;QAC1C,OAAO,CAAC,CAAC,OAAO,SAAS,CAAC;IAC3B,CAAC;AACF,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type * as AST from '../parser/ast.js';
2
+ /**
3
+ * Extract a numeric value from a literal AST expression. Recognizes plain
4
+ * numeric/bigint literals and unary +/- on numeric literals.
5
+ *
6
+ * Returns `undefined` for anything else — column references, parameters,
7
+ * function calls, computed expressions. Used by both the runtime (frame offsets)
8
+ * and the optimizer (LAG/LEAD literal-offset recognition).
9
+ */
10
+ export declare function tryExtractNumericLiteral(expr: AST.Expression): number | undefined;
11
+ //# sourceMappingURL=ast-literal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ast-literal.d.ts","sourceRoot":"","sources":["../../../src/util/ast-literal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,GAAG,MAAM,kBAAkB,CAAC;AAE7C;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,GAAG,CAAC,UAAU,GAAG,MAAM,GAAG,SAAS,CAejF"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Extract a numeric value from a literal AST expression. Recognizes plain
3
+ * numeric/bigint literals and unary +/- on numeric literals.
4
+ *
5
+ * Returns `undefined` for anything else — column references, parameters,
6
+ * function calls, computed expressions. Used by both the runtime (frame offsets)
7
+ * and the optimizer (LAG/LEAD literal-offset recognition).
8
+ */
9
+ export function tryExtractNumericLiteral(expr) {
10
+ if (expr.type === 'literal') {
11
+ const v = expr.value;
12
+ if (typeof v === 'number')
13
+ return v;
14
+ if (typeof v === 'bigint')
15
+ return Number(v);
16
+ return undefined;
17
+ }
18
+ if (expr.type === 'unary' && (expr.operator === '+' || expr.operator === '-')) {
19
+ const inner = tryExtractNumericLiteral(expr.expr);
20
+ if (inner === undefined)
21
+ return undefined;
22
+ return expr.operator === '-' ? -inner : inner;
23
+ }
24
+ return undefined;
25
+ }
26
+ //# sourceMappingURL=ast-literal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ast-literal.js","sourceRoot":"","sources":["../../../src/util/ast-literal.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AACH,MAAM,UAAU,wBAAwB,CAAC,IAAoB;IAC5D,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC7B,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;QACrB,IAAI,OAAO,CAAC,KAAK,QAAQ;YAAE,OAAO,CAAC,CAAC;QACpC,IAAI,OAAO,CAAC,KAAK,QAAQ;YAAE,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;QAC5C,OAAO,SAAS,CAAC;IAClB,CAAC;IAED,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,KAAK,GAAG,IAAI,IAAI,CAAC,QAAQ,KAAK,GAAG,CAAC,EAAE,CAAC;QAC/E,MAAM,KAAK,GAAG,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClD,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO,SAAS,CAAC;QAC1C,OAAO,IAAI,CAAC,QAAQ,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;IAC/C,CAAC;IAED,OAAO,SAAS,CAAC;AAClB,CAAC"}