rawsql-ts 0.24.4 → 0.25.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 (66) hide show
  1. package/dist/esm/index.d.ts +6 -0
  2. package/dist/esm/index.js +6 -0
  3. package/dist/esm/index.js.map +1 -1
  4. package/dist/esm/index.min.js +5 -5
  5. package/dist/esm/index.min.js.map +4 -4
  6. package/dist/esm/parsers/FunctionExpressionParser.d.ts +3 -0
  7. package/dist/esm/parsers/FunctionExpressionParser.js +50 -2
  8. package/dist/esm/parsers/FunctionExpressionParser.js.map +1 -1
  9. package/dist/esm/parsers/SqlPrintTokenParser.d.ts +1 -0
  10. package/dist/esm/parsers/SqlPrintTokenParser.js +11 -1
  11. package/dist/esm/parsers/SqlPrintTokenParser.js.map +1 -1
  12. package/dist/esm/transformers/AstCommentAttachmentExtractor.d.ts +61 -0
  13. package/dist/esm/transformers/AstCommentAttachmentExtractor.js +221 -0
  14. package/dist/esm/transformers/AstCommentAttachmentExtractor.js.map +1 -0
  15. package/dist/esm/transformers/ClauseScopedColumnReferenceCollector.d.ts +47 -0
  16. package/dist/esm/transformers/ClauseScopedColumnReferenceCollector.js +235 -0
  17. package/dist/esm/transformers/ClauseScopedColumnReferenceCollector.js.map +1 -0
  18. package/dist/esm/transformers/NamedQueryDefinitionExtractor.d.ts +53 -0
  19. package/dist/esm/transformers/NamedQueryDefinitionExtractor.js +370 -0
  20. package/dist/esm/transformers/NamedQueryDefinitionExtractor.js.map +1 -0
  21. package/dist/esm/transformers/SelectBodyExtractor.d.ts +21 -0
  22. package/dist/esm/transformers/SelectBodyExtractor.js +137 -0
  23. package/dist/esm/transformers/SelectBodyExtractor.js.map +1 -0
  24. package/dist/esm/transformers/SelectOutputCollector.d.ts +47 -0
  25. package/dist/esm/transformers/SelectOutputCollector.js +281 -0
  26. package/dist/esm/transformers/SelectOutputCollector.js.map +1 -0
  27. package/dist/esm/transformers/SelectValueCollector.d.ts +9 -1
  28. package/dist/esm/transformers/SelectValueCollector.js +83 -58
  29. package/dist/esm/transformers/SelectValueCollector.js.map +1 -1
  30. package/dist/esm/transformers/WildcardColumnInferenceCollector.d.ts +129 -0
  31. package/dist/esm/transformers/WildcardColumnInferenceCollector.js +373 -0
  32. package/dist/esm/transformers/WildcardColumnInferenceCollector.js.map +1 -0
  33. package/dist/index.js +6 -0
  34. package/dist/index.js.map +1 -1
  35. package/dist/index.min.js +5 -5
  36. package/dist/index.min.js.map +4 -4
  37. package/dist/parsers/FunctionExpressionParser.js +49 -1
  38. package/dist/parsers/FunctionExpressionParser.js.map +1 -1
  39. package/dist/parsers/SqlPrintTokenParser.js +11 -1
  40. package/dist/parsers/SqlPrintTokenParser.js.map +1 -1
  41. package/dist/src/index.d.ts +6 -0
  42. package/dist/src/parsers/FunctionExpressionParser.d.ts +3 -0
  43. package/dist/src/parsers/SqlPrintTokenParser.d.ts +1 -0
  44. package/dist/src/transformers/AstCommentAttachmentExtractor.d.ts +61 -0
  45. package/dist/src/transformers/ClauseScopedColumnReferenceCollector.d.ts +47 -0
  46. package/dist/src/transformers/NamedQueryDefinitionExtractor.d.ts +53 -0
  47. package/dist/src/transformers/SelectBodyExtractor.d.ts +21 -0
  48. package/dist/src/transformers/SelectOutputCollector.d.ts +47 -0
  49. package/dist/src/transformers/SelectValueCollector.d.ts +9 -1
  50. package/dist/src/transformers/WildcardColumnInferenceCollector.d.ts +129 -0
  51. package/dist/transformers/AstCommentAttachmentExtractor.js +231 -0
  52. package/dist/transformers/AstCommentAttachmentExtractor.js.map +1 -0
  53. package/dist/transformers/ClauseScopedColumnReferenceCollector.js +239 -0
  54. package/dist/transformers/ClauseScopedColumnReferenceCollector.js.map +1 -0
  55. package/dist/transformers/NamedQueryDefinitionExtractor.js +374 -0
  56. package/dist/transformers/NamedQueryDefinitionExtractor.js.map +1 -0
  57. package/dist/transformers/SelectBodyExtractor.js +141 -0
  58. package/dist/transformers/SelectBodyExtractor.js.map +1 -0
  59. package/dist/transformers/SelectOutputCollector.js +291 -0
  60. package/dist/transformers/SelectOutputCollector.js.map +1 -0
  61. package/dist/transformers/SelectValueCollector.js +83 -58
  62. package/dist/transformers/SelectValueCollector.js.map +1 -1
  63. package/dist/transformers/WildcardColumnInferenceCollector.js +377 -0
  64. package/dist/transformers/WildcardColumnInferenceCollector.js.map +1 -0
  65. package/dist/tsconfig.browser.tsbuildinfo +1 -1
  66. package/package.json +1 -1
@@ -15,7 +15,7 @@ const CTECollector_1 = require("./CTECollector");
15
15
  * It can also resolve wildcard selectors (table.* or *) using a provided table column resolver.
16
16
  */
17
17
  class SelectValueCollector {
18
- constructor(tableColumnResolver = null, initialCommonTables = null) {
18
+ constructor(tableColumnResolver = null, initialCommonTables = null, preserveDuplicateSelectItems = false) {
19
19
  this.selectValues = [];
20
20
  this.visitedNodes = new Set();
21
21
  this.isRootVisit = true;
@@ -23,6 +23,7 @@ class SelectValueCollector {
23
23
  this.commonTableCollector = new CTECollector_1.CTECollector();
24
24
  this.commonTables = [];
25
25
  this.initialCommonTables = initialCommonTables;
26
+ this.preserveDuplicateSelectItems = preserveDuplicateSelectItems;
26
27
  this.handlers = new Map();
27
28
  this.handlers.set(SelectQuery_1.SimpleSelectQuery.kind, (expr) => this.visitSimpleSelectQuery(expr));
28
29
  this.handlers.set(Clause_1.SelectClause.kind, (expr) => this.visitSelectClause(expr));
@@ -109,71 +110,85 @@ class SelectValueCollector {
109
110
  if (wildcards.length === 0) {
110
111
  return;
111
112
  }
112
- // full wildcard
113
- if (this.selectValues.some(item => item.value instanceof ValueComponent_1.ColumnReference && item.value.namespaces === null)) {
114
- if (query.fromClause) {
115
- this.processFromClause(query.fromClause, true);
113
+ const expandedValues = [];
114
+ for (const item of this.selectValues) {
115
+ if (item.name !== '*' || !(item.value instanceof ValueComponent_1.ColumnReference)) {
116
+ expandedValues.push(item);
117
+ continue;
116
118
  }
117
- // remove wildcard
118
- this.selectValues = this.selectValues.filter(item => item.name !== '*');
119
- return;
119
+ expandedValues.push(...this.expandWildcardValue(item.value, query.fromClause));
120
120
  }
121
- ;
122
- // table wildcard
123
- const wildSourceNames = wildcards.filter(item => item.value instanceof ValueComponent_1.ColumnReference && item.value.namespaces)
124
- .map(item => item.value.getNamespace());
125
- if (query.fromClause) {
126
- const fromSourceName = query.fromClause.getSourceAliasName();
127
- if (fromSourceName && wildSourceNames.includes(fromSourceName)) {
128
- this.processFromClause(query.fromClause, false);
129
- }
130
- if (query.fromClause.joins) {
131
- for (const join of query.fromClause.joins) {
132
- const joinSourceName = join.getSourceAliasName();
133
- if (joinSourceName && wildSourceNames.includes(joinSourceName)) {
134
- this.processJoinClause(join);
135
- }
136
- }
137
- }
138
- }
139
- // remove wildcard
140
- this.selectValues = this.selectValues.filter(item => item.name !== '*');
141
- return;
121
+ this.selectValues = expandedValues;
142
122
  }
143
123
  processFromClause(clause, joinCascade) {
144
- if (clause) {
145
- const fromSourceName = clause.getSourceAliasName();
146
- this.processSourceExpression(fromSourceName, clause.source);
147
- if (clause.joins && joinCascade) {
148
- for (const join of clause.joins) {
149
- this.processJoinClause(join);
150
- }
151
- }
124
+ for (const item of this.collectFromClauseValues(clause, joinCascade)) {
125
+ this.addSelectValue(item.name, item.value);
152
126
  }
153
127
  return;
154
128
  }
155
129
  processJoinClause(clause) {
156
- const sourceName = clause.getSourceAliasName();
157
- this.processSourceExpression(sourceName, clause.source);
130
+ for (const item of this.collectJoinClauseValues(clause)) {
131
+ this.addSelectValue(item.name, item.value);
132
+ }
158
133
  }
159
134
  processSourceExpression(sourceName, source) {
135
+ for (const item of this.collectSourceExpressionValues(sourceName, source)) {
136
+ this.addSelectValue(item.name, item.value);
137
+ }
138
+ }
139
+ expandWildcardValue(value, fromClause) {
140
+ if (!fromClause) {
141
+ return [];
142
+ }
143
+ if (value.namespaces === null) {
144
+ return this.collectFromClauseValues(fromClause, true);
145
+ }
146
+ const sourceName = value.getNamespace();
147
+ if (fromClause.getSourceAliasName() === sourceName) {
148
+ return this.collectFromClauseValues(fromClause, false);
149
+ }
150
+ if (!fromClause.joins) {
151
+ return [];
152
+ }
153
+ const join = fromClause.joins.find(item => this.getJoinSourceName(item) === sourceName);
154
+ return join ? this.collectJoinClauseValues(join) : [];
155
+ }
156
+ collectFromClauseValues(clause, joinCascade) {
157
+ const values = this.collectSourceExpressionValues(clause.getSourceAliasName(), clause.source);
158
+ if (clause.joins && joinCascade) {
159
+ for (const join of clause.joins) {
160
+ values.push(...this.collectJoinClauseValues(join));
161
+ }
162
+ }
163
+ return values;
164
+ }
165
+ collectJoinClauseValues(clause) {
166
+ return this.collectSourceExpressionValues(this.getJoinSourceName(clause), clause.source);
167
+ }
168
+ getJoinSourceName(clause) {
169
+ return clause.source.getAliasName();
170
+ }
171
+ collectSourceExpressionValues(sourceName, source) {
160
172
  // check common table
161
- const commonTable = this.commonTables.find(item => item.aliasExpression.table.name === sourceName);
173
+ const tableSourceName = source.datasource instanceof Clause_1.TableSource ? source.datasource.getSourceName() : null;
174
+ const commonTable = tableSourceName
175
+ ? this.commonTables.find(item => item.aliasExpression.table.name === tableSourceName)
176
+ : null;
162
177
  if (commonTable) {
163
178
  // Exclude this CTE from consideration to prevent self-reference
164
- const innerCommonTables = this.commonTables.filter(item => item.aliasExpression.table.name !== sourceName);
179
+ const innerCommonTables = this.commonTables.filter(item => item.aliasExpression.table.name !== commonTable.aliasExpression.table.name);
165
180
  const innerSelected = this.collectValuesFromCteQuery(commonTable.query, innerCommonTables);
166
- innerSelected.forEach(item => {
167
- this.addSelectValueAsUnique(item.name, new ValueComponent_1.ColumnReference(sourceName ? [sourceName] : null, item.name));
168
- });
169
- }
170
- else {
171
- const innerCollector = new SelectValueCollector(this.tableColumnResolver, this.commonTables);
172
- const innerSelected = innerCollector.collect(source);
173
- innerSelected.forEach(item => {
174
- this.addSelectValueAsUnique(item.name, new ValueComponent_1.ColumnReference(sourceName ? [sourceName] : null, item.name));
175
- });
181
+ return innerSelected.map(item => ({
182
+ name: item.name,
183
+ value: new ValueComponent_1.ColumnReference(sourceName ? [sourceName] : null, item.name)
184
+ }));
176
185
  }
186
+ const innerCollector = new SelectValueCollector(this.tableColumnResolver, this.commonTables, true);
187
+ const innerSelected = innerCollector.collect(source);
188
+ return innerSelected.map(item => ({
189
+ name: item.name,
190
+ value: new ValueComponent_1.ColumnReference(sourceName ? [sourceName] : null, item.name)
191
+ }));
177
192
  }
178
193
  visitSelectClause(clause) {
179
194
  for (const item of clause.items) {
@@ -182,7 +197,7 @@ class SelectValueCollector {
182
197
  }
183
198
  processSelectItem(item) {
184
199
  if (item.identifier) {
185
- this.addSelectValueAsUnique(item.identifier.name, item.value);
200
+ this.addSelectValueFromSelectItem(item.identifier.name, item.value);
186
201
  }
187
202
  else if (item.value instanceof ValueComponent_1.ColumnReference) { // Handle column reference
188
203
  // columnName can be '*'
@@ -193,7 +208,7 @@ class SelectValueCollector {
193
208
  }
194
209
  else {
195
210
  // Add with duplicate checking
196
- this.addSelectValueAsUnique(columnName, item.value);
211
+ this.addSelectValueFromSelectItem(columnName, item.value);
197
212
  }
198
213
  }
199
214
  }
@@ -205,7 +220,7 @@ class SelectValueCollector {
205
220
  if (source.aliasExpression && source.aliasExpression.columns) {
206
221
  const sourceName = source.getAliasName();
207
222
  source.aliasExpression.columns.forEach(column => {
208
- this.addSelectValueAsUnique(column.name, new ValueComponent_1.ColumnReference(sourceName ? [sourceName] : null, column.name));
223
+ this.addSelectValueFromSelectItem(column.name, new ValueComponent_1.ColumnReference(sourceName ? [sourceName] : null, column.name));
209
224
  });
210
225
  return;
211
226
  }
@@ -213,17 +228,17 @@ class SelectValueCollector {
213
228
  if (this.tableColumnResolver) {
214
229
  const sourceName = source.datasource.getSourceName();
215
230
  this.tableColumnResolver(sourceName).forEach(column => {
216
- this.addSelectValueAsUnique(column, new ValueComponent_1.ColumnReference([sourceName], column));
231
+ this.addSelectValueFromSelectItem(column, new ValueComponent_1.ColumnReference([sourceName], column));
217
232
  });
218
233
  }
219
234
  return;
220
235
  }
221
236
  else if (source.datasource instanceof Clause_1.SubQuerySource) {
222
237
  const sourceName = source.getAliasName();
223
- const innerCollector = new SelectValueCollector(this.tableColumnResolver, this.commonTables);
238
+ const innerCollector = new SelectValueCollector(this.tableColumnResolver, this.commonTables, true);
224
239
  const innerSelected = innerCollector.collect(source.datasource.query);
225
240
  innerSelected.forEach(item => {
226
- this.addSelectValueAsUnique(item.name, new ValueComponent_1.ColumnReference(sourceName ? [sourceName] : null, item.name));
241
+ this.addSelectValueFromSelectItem(item.name, new ValueComponent_1.ColumnReference(sourceName ? [sourceName] : null, item.name));
227
242
  });
228
243
  return;
229
244
  }
@@ -242,9 +257,19 @@ class SelectValueCollector {
242
257
  this.selectValues.push({ name, value });
243
258
  }
244
259
  }
260
+ addSelectValue(name, value) {
261
+ this.selectValues.push({ name, value });
262
+ }
263
+ addSelectValueFromSelectItem(name, value) {
264
+ if (this.preserveDuplicateSelectItems) {
265
+ this.addSelectValue(name, value);
266
+ return;
267
+ }
268
+ this.addSelectValueAsUnique(name, value);
269
+ }
245
270
  collectValuesFromCteQuery(query, commonTables) {
246
271
  if (this.isSelectQuery(query)) {
247
- const innerCollector = new SelectValueCollector(this.tableColumnResolver, commonTables);
272
+ const innerCollector = new SelectValueCollector(this.tableColumnResolver, commonTables, true);
248
273
  return innerCollector.collect(query);
249
274
  }
250
275
  // Writable CTEs expose their output via RETURNING.
@@ -1 +1 @@
1
- {"version":3,"file":"SelectValueCollector.js","sourceRoot":"","sources":["../../src/transformers/SelectValueCollector.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SelectValueCollector.js","sourceRoot":"","sources":["../../src/transformers/SelectValueCollector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,377 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WildcardColumnInferenceCollector = void 0;
4
+ const Clause_1 = require("../models/Clause");
5
+ const SelectQuery_1 = require("../models/SelectQuery");
6
+ const ValueComponent_1 = require("../models/ValueComponent");
7
+ const ClauseScopedColumnReferenceCollector_1 = require("./ClauseScopedColumnReferenceCollector");
8
+ const SelectOutputCollector_1 = require("./SelectOutputCollector");
9
+ const clauseOrder = [
10
+ "select",
11
+ "where",
12
+ "joinOn",
13
+ "groupBy",
14
+ "having",
15
+ "orderBy",
16
+ "window",
17
+ "limitOffset"
18
+ ];
19
+ /**
20
+ * Infers the subset of wildcard columns required by downstream references.
21
+ *
22
+ * This collector only returns metadata. It does not rewrite SQL and does not attempt full
23
+ * table-column discovery. When ownership is ambiguous, the requirement is reported as unresolved.
24
+ */
25
+ class WildcardColumnInferenceCollector {
26
+ constructor() {
27
+ this.clauseCollector = new ClauseScopedColumnReferenceCollector_1.ClauseScopedColumnReferenceCollector();
28
+ this.requirements = new Map();
29
+ this.visitedQueries = new Set();
30
+ this.nextObjectId = 0;
31
+ this.objectIds = new WeakMap();
32
+ }
33
+ /**
34
+ * Collect wildcard column inference metadata for CTEs and derived tables visible in a SELECT query.
35
+ */
36
+ collect(query) {
37
+ this.requirements.clear();
38
+ this.visitedQueries.clear();
39
+ this.nextObjectId = 0;
40
+ this.objectIds = new WeakMap();
41
+ this.collectFromSelectQuery(query, []);
42
+ return [...this.requirements.values()].map(item => this.inferTarget(item));
43
+ }
44
+ collectFromSelectQuery(query, commonTables) {
45
+ var _a, _b, _c, _d;
46
+ if (this.visitedQueries.has(query)) {
47
+ return;
48
+ }
49
+ this.visitedQueries.add(query);
50
+ if (query instanceof SelectQuery_1.BinarySelectQuery) {
51
+ const rightCommonTables = this.mergeCommonTables(commonTables, this.collectLeadingCommonTables(query.left));
52
+ this.collectFromSelectQuery(query.left, commonTables);
53
+ this.collectFromSelectQuery(query.right, rightCommonTables);
54
+ return;
55
+ }
56
+ if (!(query instanceof SelectQuery_1.SimpleSelectQuery)) {
57
+ return;
58
+ }
59
+ const scopedCommonTables = this.mergeCommonTables(commonTables, (_b = (_a = query.withClause) === null || _a === void 0 ? void 0 : _a.tables) !== null && _b !== void 0 ? _b : []);
60
+ this.collectConsumerRequirements(query, scopedCommonTables);
61
+ this.collectNestedSources(query.fromClause, scopedCommonTables);
62
+ for (const commonTable of (_d = (_c = query.withClause) === null || _c === void 0 ? void 0 : _c.tables) !== null && _d !== void 0 ? _d : []) {
63
+ this.collectCteQuery(commonTable.query, scopedCommonTables);
64
+ }
65
+ }
66
+ collectCteQuery(query, commonTables) {
67
+ if (this.isSelectQuery(query)) {
68
+ this.collectFromSelectQuery(query, commonTables);
69
+ }
70
+ }
71
+ collectConsumerRequirements(query, commonTables) {
72
+ var _a, _b;
73
+ if (!query.fromClause) {
74
+ return;
75
+ }
76
+ const targets = this.collectConsumerTargets(query.fromClause, commonTables);
77
+ if (targets.length === 0) {
78
+ return;
79
+ }
80
+ const targetByMatchName = new Map();
81
+ for (const target of targets) {
82
+ for (const name of this.getTargetMatchNames(target)) {
83
+ const existing = (_a = targetByMatchName.get(name)) !== null && _a !== void 0 ? _a : [];
84
+ existing.push(target);
85
+ targetByMatchName.set(name, existing);
86
+ }
87
+ }
88
+ const singleUnqualifiedTarget = query.fromClause.getSources().length === 1 && targets.length === 1 ? targets[0] : null;
89
+ for (const reference of this.flattenReferences(this.clauseCollector.collect(query))) {
90
+ if (reference.column === "*") {
91
+ continue;
92
+ }
93
+ const matchedTarget = reference.namespace
94
+ ? this.getUniqueTarget((_b = targetByMatchName.get(reference.namespace)) !== null && _b !== void 0 ? _b : [])
95
+ : singleUnqualifiedTarget;
96
+ if (matchedTarget) {
97
+ this.addRequirement(matchedTarget, reference.column, this.createRequiredBy(reference));
98
+ }
99
+ }
100
+ }
101
+ collectConsumerTargets(fromClause, commonTables) {
102
+ const targets = [];
103
+ for (const source of fromClause.getSources()) {
104
+ const cteTarget = this.createCteTarget(source, commonTables);
105
+ if (cteTarget) {
106
+ targets.push(cteTarget);
107
+ continue;
108
+ }
109
+ const derivedTarget = this.createDerivedTableTarget(source);
110
+ if (derivedTarget) {
111
+ targets.push(derivedTarget);
112
+ }
113
+ }
114
+ return targets;
115
+ }
116
+ createCteTarget(source, commonTables) {
117
+ if (!(source.datasource instanceof Clause_1.TableSource)) {
118
+ return null;
119
+ }
120
+ const tableName = source.datasource.getSourceName();
121
+ const commonTable = commonTables.find(item => item.getSourceAliasName() === tableName);
122
+ if (!commonTable || !this.isSelectQuery(commonTable.query)) {
123
+ return null;
124
+ }
125
+ return {
126
+ key: `cte:${this.getObjectId(commonTable)}`,
127
+ targetKind: "cte",
128
+ targetName: commonTable.getSourceAliasName(),
129
+ targetAlias: source.aliasExpression ? source.getAliasName() : commonTable.getSourceAliasName(),
130
+ query: commonTable.query
131
+ };
132
+ }
133
+ createDerivedTableTarget(source) {
134
+ if (!(source.datasource instanceof Clause_1.SubQuerySource)) {
135
+ return null;
136
+ }
137
+ return {
138
+ key: `derived:${this.getObjectId(source.datasource.query)}`,
139
+ targetKind: "derivedTable",
140
+ targetName: null,
141
+ targetAlias: source.getAliasName(),
142
+ query: source.datasource.query
143
+ };
144
+ }
145
+ collectNestedSources(fromClause, commonTables) {
146
+ if (!fromClause) {
147
+ return;
148
+ }
149
+ for (const source of fromClause.getSources()) {
150
+ if (source.datasource instanceof Clause_1.SubQuerySource) {
151
+ this.collectFromSelectQuery(source.datasource.query, commonTables);
152
+ }
153
+ }
154
+ }
155
+ addRequirement(target, column, requiredBy) {
156
+ var _a;
157
+ let requirement = this.requirements.get(target.key);
158
+ if (!requirement) {
159
+ requirement = {
160
+ descriptor: target,
161
+ requiredByColumn: new Map()
162
+ };
163
+ this.requirements.set(target.key, requirement);
164
+ }
165
+ const existing = (_a = requirement.requiredByColumn.get(column)) !== null && _a !== void 0 ? _a : [];
166
+ existing.push(requiredBy);
167
+ requirement.requiredByColumn.set(column, existing);
168
+ }
169
+ inferTarget(requirement) {
170
+ const descriptor = requirement.descriptor;
171
+ const baseResult = {
172
+ targetKind: descriptor.targetKind,
173
+ targetName: descriptor.targetName,
174
+ targetAlias: descriptor.targetAlias,
175
+ wildcards: [],
176
+ explicitColumns: [],
177
+ requiredColumns: [],
178
+ unresolvedColumns: []
179
+ };
180
+ if (!(descriptor.query instanceof SelectQuery_1.SimpleSelectQuery)) {
181
+ for (const [outputName, requiredBy] of requirement.requiredByColumn) {
182
+ baseResult.unresolvedColumns.push(this.createUnresolved(outputName, "unsupportedQueryShape", [], requiredBy));
183
+ }
184
+ return baseResult;
185
+ }
186
+ const outputMetadata = this.collectTargetOutputMetadata(descriptor.query);
187
+ baseResult.wildcards = outputMetadata.wildcards;
188
+ baseResult.explicitColumns = outputMetadata.explicitColumns;
189
+ for (const [outputName, requiredBy] of requirement.requiredByColumn) {
190
+ const explicitMatches = outputMetadata.explicitColumns.filter(item => item.outputName === outputName);
191
+ const candidateWildcards = outputMetadata.wildcards;
192
+ if (explicitMatches.length > 0 && candidateWildcards.length > 0) {
193
+ baseResult.unresolvedColumns.push(this.createUnresolved(outputName, "duplicateOutputOwnership", candidateWildcards, requiredBy));
194
+ continue;
195
+ }
196
+ if (explicitMatches.length > 0) {
197
+ continue;
198
+ }
199
+ if (outputMetadata.unqualifiedWildcardWithMultipleSources) {
200
+ baseResult.unresolvedColumns.push(this.createUnresolved(outputName, "unqualifiedWildcardMultipleSources", candidateWildcards, requiredBy));
201
+ continue;
202
+ }
203
+ if (candidateWildcards.length === 0) {
204
+ baseResult.unresolvedColumns.push(this.createUnresolved(outputName, "noWildcardSupplier", [], requiredBy));
205
+ continue;
206
+ }
207
+ if (candidateWildcards.length > 1) {
208
+ baseResult.unresolvedColumns.push(this.createUnresolved(outputName, "multipleWildcardSuppliers", candidateWildcards, requiredBy));
209
+ continue;
210
+ }
211
+ const wildcard = candidateWildcards[0];
212
+ baseResult.requiredColumns.push({
213
+ outputName,
214
+ sourceAlias: wildcard.sourceAlias,
215
+ sourceName: wildcard.sourceName,
216
+ sourceColumnName: outputName,
217
+ wildcard,
218
+ requiredByClause: this.collectRequiredByClauses(requiredBy),
219
+ requiredBy
220
+ });
221
+ }
222
+ return baseResult;
223
+ }
224
+ collectTargetOutputMetadata(query) {
225
+ const wildcards = [];
226
+ let unqualifiedWildcardWithMultipleSources = false;
227
+ query.selectClause.items.forEach((item, outputIndex) => {
228
+ const wildcard = this.collectWildcardMetadata(item, outputIndex, query.fromClause);
229
+ if (wildcard === "unqualifiedWildcardMultipleSources") {
230
+ unqualifiedWildcardWithMultipleSources = true;
231
+ wildcards.push({
232
+ kind: "unqualified",
233
+ outputIndex,
234
+ sourceAlias: null,
235
+ sourceName: null
236
+ });
237
+ return;
238
+ }
239
+ if (wildcard) {
240
+ wildcards.push(wildcard);
241
+ }
242
+ });
243
+ const explicitColumns = new SelectOutputCollector_1.SelectOutputCollector()
244
+ .collect(query)
245
+ .filter(item => !(item.value instanceof ValueComponent_1.ColumnReference && item.value.column.name === "*"))
246
+ .map(item => ({
247
+ outputName: item.name,
248
+ sourceAlias: item.sourceAlias,
249
+ sourceName: item.sourceName,
250
+ sourceColumnName: item.sourceColumnName
251
+ }));
252
+ return {
253
+ wildcards,
254
+ explicitColumns,
255
+ unqualifiedWildcardWithMultipleSources
256
+ };
257
+ }
258
+ collectWildcardMetadata(item, outputIndex, fromClause) {
259
+ if (!(item.value instanceof ValueComponent_1.ColumnReference) || item.value.column.name !== "*") {
260
+ return null;
261
+ }
262
+ if (!fromClause) {
263
+ return null;
264
+ }
265
+ if (item.value.namespaces === null) {
266
+ const sources = fromClause.getSources();
267
+ if (sources.length !== 1) {
268
+ return "unqualifiedWildcardMultipleSources";
269
+ }
270
+ return {
271
+ kind: "unqualified",
272
+ outputIndex,
273
+ sourceAlias: sources[0].getAliasName(),
274
+ sourceName: this.getSourceName(sources[0])
275
+ };
276
+ }
277
+ const namespace = item.value.getNamespace();
278
+ const source = this.getUniqueSource(fromClause.getSources().filter(candidate => this.getSourceMatchNames(candidate).includes(namespace)));
279
+ return {
280
+ kind: "qualified",
281
+ outputIndex,
282
+ sourceAlias: namespace,
283
+ sourceName: source ? this.getSourceName(source) : null
284
+ };
285
+ }
286
+ createUnresolved(outputName, reason, candidateWildcards, requiredBy) {
287
+ return {
288
+ outputName,
289
+ reason,
290
+ candidateWildcards,
291
+ requiredByClause: this.collectRequiredByClauses(requiredBy),
292
+ requiredBy
293
+ };
294
+ }
295
+ flattenReferences(references) {
296
+ return clauseOrder.flatMap(clause => references[clause]);
297
+ }
298
+ createRequiredBy(reference) {
299
+ return {
300
+ clause: reference.clause,
301
+ qualifiedName: reference.qualifiedName,
302
+ namespace: reference.namespace,
303
+ column: reference.column
304
+ };
305
+ }
306
+ collectRequiredByClauses(requiredBy) {
307
+ const clauses = new Set(requiredBy.map(item => item.clause));
308
+ return clauseOrder.filter(clause => clauses.has(clause));
309
+ }
310
+ getTargetMatchNames(target) {
311
+ if (target.targetAlias) {
312
+ return [target.targetAlias];
313
+ }
314
+ return target.targetName ? [target.targetName] : [];
315
+ }
316
+ getUniqueTarget(targets) {
317
+ return targets.length === 1 ? targets[0] : null;
318
+ }
319
+ getUniqueSource(sources) {
320
+ return sources.length === 1 ? sources[0] : null;
321
+ }
322
+ getSourceMatchNames(source) {
323
+ const names = new Set();
324
+ const aliasName = source.getAliasName();
325
+ if (aliasName) {
326
+ names.add(aliasName);
327
+ }
328
+ if (source.datasource instanceof Clause_1.TableSource) {
329
+ names.add(source.datasource.table.name);
330
+ names.add(source.datasource.getSourceName());
331
+ }
332
+ return [...names];
333
+ }
334
+ getSourceName(source) {
335
+ if (source.datasource instanceof Clause_1.TableSource) {
336
+ return source.datasource.getSourceName();
337
+ }
338
+ return null;
339
+ }
340
+ collectLeadingCommonTables(query) {
341
+ var _a, _b;
342
+ if (query instanceof SelectQuery_1.SimpleSelectQuery) {
343
+ return (_b = (_a = query.withClause) === null || _a === void 0 ? void 0 : _a.tables) !== null && _b !== void 0 ? _b : [];
344
+ }
345
+ if (query instanceof SelectQuery_1.BinarySelectQuery) {
346
+ return this.collectLeadingCommonTables(query.left);
347
+ }
348
+ return [];
349
+ }
350
+ mergeCommonTables(left, right) {
351
+ const merged = [...left];
352
+ for (const table of right) {
353
+ const existingIndex = merged.findIndex(item => item.getSourceAliasName() === table.getSourceAliasName());
354
+ if (existingIndex === -1) {
355
+ merged.push(table);
356
+ }
357
+ else {
358
+ merged[existingIndex] = table;
359
+ }
360
+ }
361
+ return merged;
362
+ }
363
+ getObjectId(value) {
364
+ const existing = this.objectIds.get(value);
365
+ if (existing !== undefined) {
366
+ return existing;
367
+ }
368
+ const id = this.nextObjectId++;
369
+ this.objectIds.set(value, id);
370
+ return id;
371
+ }
372
+ isSelectQuery(query) {
373
+ return !!query && typeof query === "object" && "__selectQueryType" in query && query.__selectQueryType === "SelectQuery";
374
+ }
375
+ }
376
+ exports.WildcardColumnInferenceCollector = WildcardColumnInferenceCollector;
377
+ //# sourceMappingURL=WildcardColumnInferenceCollector.js.map