rawsql-ts 0.24.3 → 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 (105) hide show
  1. package/README.md +10 -1
  2. package/dist/esm/index.d.ts +6 -0
  3. package/dist/esm/index.js +6 -0
  4. package/dist/esm/index.js.map +1 -1
  5. package/dist/esm/index.min.js +9 -9
  6. package/dist/esm/index.min.js.map +4 -4
  7. package/dist/esm/models/ValueComponent.d.ts +2 -1
  8. package/dist/esm/models/ValueComponent.js +2 -1
  9. package/dist/esm/models/ValueComponent.js.map +1 -1
  10. package/dist/esm/parsers/FunctionExpressionParser.d.ts +3 -0
  11. package/dist/esm/parsers/FunctionExpressionParser.js +50 -2
  12. package/dist/esm/parsers/FunctionExpressionParser.js.map +1 -1
  13. package/dist/esm/parsers/ParameterDecorator.d.ts +2 -2
  14. package/dist/esm/parsers/ParameterDecorator.js +1 -1
  15. package/dist/esm/parsers/ParameterDecorator.js.map +1 -1
  16. package/dist/esm/parsers/ParameterExpressionParser.js +2 -1
  17. package/dist/esm/parsers/ParameterExpressionParser.js.map +1 -1
  18. package/dist/esm/parsers/SqlPrintTokenParser.d.ts +16 -4
  19. package/dist/esm/parsers/SqlPrintTokenParser.js +76 -13
  20. package/dist/esm/parsers/SqlPrintTokenParser.js.map +1 -1
  21. package/dist/esm/transformers/AstCommentAttachmentExtractor.d.ts +61 -0
  22. package/dist/esm/transformers/AstCommentAttachmentExtractor.js +221 -0
  23. package/dist/esm/transformers/AstCommentAttachmentExtractor.js.map +1 -0
  24. package/dist/esm/transformers/ClauseScopedColumnReferenceCollector.d.ts +47 -0
  25. package/dist/esm/transformers/ClauseScopedColumnReferenceCollector.js +235 -0
  26. package/dist/esm/transformers/ClauseScopedColumnReferenceCollector.js.map +1 -0
  27. package/dist/esm/transformers/FormatOptionResolver.js +1 -0
  28. package/dist/esm/transformers/FormatOptionResolver.js.map +1 -1
  29. package/dist/esm/transformers/LinePrinter.d.ts +1 -1
  30. package/dist/esm/transformers/NamedQueryDefinitionExtractor.d.ts +53 -0
  31. package/dist/esm/transformers/NamedQueryDefinitionExtractor.js +370 -0
  32. package/dist/esm/transformers/NamedQueryDefinitionExtractor.js.map +1 -0
  33. package/dist/esm/transformers/OnelineFormattingHelper.d.ts +1 -0
  34. package/dist/esm/transformers/OnelineFormattingHelper.js.map +1 -1
  35. package/dist/esm/transformers/SelectBodyExtractor.d.ts +21 -0
  36. package/dist/esm/transformers/SelectBodyExtractor.js +137 -0
  37. package/dist/esm/transformers/SelectBodyExtractor.js.map +1 -0
  38. package/dist/esm/transformers/SelectOutputCollector.d.ts +47 -0
  39. package/dist/esm/transformers/SelectOutputCollector.js +281 -0
  40. package/dist/esm/transformers/SelectOutputCollector.js.map +1 -0
  41. package/dist/esm/transformers/SelectValueCollector.d.ts +9 -1
  42. package/dist/esm/transformers/SelectValueCollector.js +83 -58
  43. package/dist/esm/transformers/SelectValueCollector.js.map +1 -1
  44. package/dist/esm/transformers/SqlFormatter.d.ts +9 -5
  45. package/dist/esm/transformers/SqlFormatter.js +4 -4
  46. package/dist/esm/transformers/SqlFormatter.js.map +1 -1
  47. package/dist/esm/transformers/SqlPrinter.d.ts +17 -2
  48. package/dist/esm/transformers/SqlPrinter.js +182 -21
  49. package/dist/esm/transformers/SqlPrinter.js.map +1 -1
  50. package/dist/esm/transformers/WildcardColumnInferenceCollector.d.ts +129 -0
  51. package/dist/esm/transformers/WildcardColumnInferenceCollector.js +373 -0
  52. package/dist/esm/transformers/WildcardColumnInferenceCollector.js.map +1 -0
  53. package/dist/index.js +6 -0
  54. package/dist/index.js.map +1 -1
  55. package/dist/index.min.js +9 -9
  56. package/dist/index.min.js.map +4 -4
  57. package/dist/models/ValueComponent.js +2 -1
  58. package/dist/models/ValueComponent.js.map +1 -1
  59. package/dist/parsers/FunctionExpressionParser.js +49 -1
  60. package/dist/parsers/FunctionExpressionParser.js.map +1 -1
  61. package/dist/parsers/ParameterDecorator.js +1 -1
  62. package/dist/parsers/ParameterDecorator.js.map +1 -1
  63. package/dist/parsers/ParameterExpressionParser.js +2 -1
  64. package/dist/parsers/ParameterExpressionParser.js.map +1 -1
  65. package/dist/parsers/SqlPrintTokenParser.js +76 -13
  66. package/dist/parsers/SqlPrintTokenParser.js.map +1 -1
  67. package/dist/src/index.d.ts +6 -0
  68. package/dist/src/models/ValueComponent.d.ts +2 -1
  69. package/dist/src/parsers/FunctionExpressionParser.d.ts +3 -0
  70. package/dist/src/parsers/ParameterDecorator.d.ts +2 -2
  71. package/dist/src/parsers/SqlPrintTokenParser.d.ts +16 -4
  72. package/dist/src/transformers/AstCommentAttachmentExtractor.d.ts +61 -0
  73. package/dist/src/transformers/ClauseScopedColumnReferenceCollector.d.ts +47 -0
  74. package/dist/src/transformers/LinePrinter.d.ts +1 -1
  75. package/dist/src/transformers/NamedQueryDefinitionExtractor.d.ts +53 -0
  76. package/dist/src/transformers/OnelineFormattingHelper.d.ts +1 -0
  77. package/dist/src/transformers/SelectBodyExtractor.d.ts +21 -0
  78. package/dist/src/transformers/SelectOutputCollector.d.ts +47 -0
  79. package/dist/src/transformers/SelectValueCollector.d.ts +9 -1
  80. package/dist/src/transformers/SqlFormatter.d.ts +9 -5
  81. package/dist/src/transformers/SqlPrinter.d.ts +17 -2
  82. package/dist/src/transformers/WildcardColumnInferenceCollector.d.ts +129 -0
  83. package/dist/transformers/AstCommentAttachmentExtractor.js +231 -0
  84. package/dist/transformers/AstCommentAttachmentExtractor.js.map +1 -0
  85. package/dist/transformers/ClauseScopedColumnReferenceCollector.js +239 -0
  86. package/dist/transformers/ClauseScopedColumnReferenceCollector.js.map +1 -0
  87. package/dist/transformers/FormatOptionResolver.js +1 -0
  88. package/dist/transformers/FormatOptionResolver.js.map +1 -1
  89. package/dist/transformers/NamedQueryDefinitionExtractor.js +374 -0
  90. package/dist/transformers/NamedQueryDefinitionExtractor.js.map +1 -0
  91. package/dist/transformers/OnelineFormattingHelper.js.map +1 -1
  92. package/dist/transformers/SelectBodyExtractor.js +141 -0
  93. package/dist/transformers/SelectBodyExtractor.js.map +1 -0
  94. package/dist/transformers/SelectOutputCollector.js +291 -0
  95. package/dist/transformers/SelectOutputCollector.js.map +1 -0
  96. package/dist/transformers/SelectValueCollector.js +83 -58
  97. package/dist/transformers/SelectValueCollector.js.map +1 -1
  98. package/dist/transformers/SqlFormatter.js +5 -3
  99. package/dist/transformers/SqlFormatter.js.map +1 -1
  100. package/dist/transformers/SqlPrinter.js +182 -21
  101. package/dist/transformers/SqlPrinter.js.map +1 -1
  102. package/dist/transformers/WildcardColumnInferenceCollector.js +377 -0
  103. package/dist/transformers/WildcardColumnInferenceCollector.js.map +1 -0
  104. package/dist/tsconfig.browser.tsbuildinfo +1 -1
  105. package/package.json +2 -2
@@ -0,0 +1,47 @@
1
+ import { CommonTable } from "../models/Clause";
2
+ import { SqlComponent } from "../models/SqlComponent";
3
+ import { ValueComponent } from "../models/ValueComponent";
4
+ import { TableColumnResolver } from "./TableColumnResolver";
5
+ export interface SelectOutputColumn {
6
+ name: string;
7
+ value: ValueComponent;
8
+ outputIndex: number;
9
+ sourceAlias: string | null;
10
+ sourceName: string | null;
11
+ sourceColumnName: string | null;
12
+ }
13
+ /**
14
+ * Collects SELECT output columns without collapsing duplicate output names.
15
+ *
16
+ * This collector is intended for callers that need stable SELECT-list positions.
17
+ * It keeps output order and assigns outputIndex after supported wildcard expansion.
18
+ */
19
+ export declare class SelectOutputCollector {
20
+ private tableColumnResolver;
21
+ private commonTableCollector;
22
+ private commonTables;
23
+ constructor(tableColumnResolver?: TableColumnResolver | null, initialCommonTables?: CommonTable[] | null);
24
+ collect(arg: SqlComponent): SelectOutputColumn[];
25
+ private collectRaw;
26
+ private collectSimpleSelectQuery;
27
+ private collectSelectItem;
28
+ private expandWildcard;
29
+ private collectFromClause;
30
+ private collectJoinClause;
31
+ private getJoinSourceName;
32
+ private collectSourceExpression;
33
+ private findCommonTable;
34
+ private collectTableSource;
35
+ private collectNestedSelectQuery;
36
+ private collectCteQuery;
37
+ private collectReturningOutputs;
38
+ private extractReturningOutputs;
39
+ private extractSelectItemName;
40
+ private qualifyOutputs;
41
+ private createExplicitOutput;
42
+ private resolveColumnSourceMetadata;
43
+ private getSourceMatchNames;
44
+ private getColumnReferenceSourceAlias;
45
+ private getColumnReferenceSourceName;
46
+ private isSelectQuery;
47
+ }
@@ -0,0 +1,281 @@
1
+ import { FromClause, ParenSource, SourceExpression, SubQuerySource, TableSource } from "../models/Clause";
2
+ import { InsertQuery } from "../models/InsertQuery";
3
+ import { DeleteQuery } from "../models/DeleteQuery";
4
+ import { MergeQuery } from "../models/MergeQuery";
5
+ import { SimpleSelectQuery } from "../models/SelectQuery";
6
+ import { UpdateQuery } from "../models/UpdateQuery";
7
+ import { ColumnReference } from "../models/ValueComponent";
8
+ import { CTECollector } from "./CTECollector";
9
+ /**
10
+ * Collects SELECT output columns without collapsing duplicate output names.
11
+ *
12
+ * This collector is intended for callers that need stable SELECT-list positions.
13
+ * It keeps output order and assigns outputIndex after supported wildcard expansion.
14
+ */
15
+ export class SelectOutputCollector {
16
+ constructor(tableColumnResolver = null, initialCommonTables = null) {
17
+ this.tableColumnResolver = tableColumnResolver;
18
+ this.commonTableCollector = new CTECollector();
19
+ this.commonTables = initialCommonTables !== null && initialCommonTables !== void 0 ? initialCommonTables : [];
20
+ }
21
+ collect(arg) {
22
+ const rawColumns = this.collectRaw(arg);
23
+ return rawColumns.map((item, outputIndex) => (Object.assign(Object.assign({}, item), { outputIndex })));
24
+ }
25
+ collectRaw(arg) {
26
+ if (arg instanceof SimpleSelectQuery) {
27
+ return this.collectSimpleSelectQuery(arg);
28
+ }
29
+ if (arg instanceof SourceExpression) {
30
+ return this.collectSourceExpression(arg.getAliasName(), arg);
31
+ }
32
+ if (arg instanceof FromClause) {
33
+ return this.collectFromClause(arg, true);
34
+ }
35
+ return [];
36
+ }
37
+ collectSimpleSelectQuery(query) {
38
+ const previousCommonTables = this.commonTables;
39
+ if (this.commonTables.length === 0) {
40
+ this.commonTables = this.commonTableCollector.collect(query);
41
+ }
42
+ try {
43
+ const outputs = [];
44
+ for (const item of query.selectClause.items) {
45
+ outputs.push(...this.collectSelectItem(item, query.fromClause));
46
+ }
47
+ return outputs;
48
+ }
49
+ finally {
50
+ this.commonTables = previousCommonTables;
51
+ }
52
+ }
53
+ collectSelectItem(item, fromClause) {
54
+ if (item.identifier) {
55
+ return [this.createExplicitOutput(item.identifier.name, item.value, fromClause)];
56
+ }
57
+ if (!(item.value instanceof ColumnReference)) {
58
+ return [];
59
+ }
60
+ const columnName = item.value.column.name;
61
+ if (columnName === "*") {
62
+ return this.expandWildcard(item.value, fromClause);
63
+ }
64
+ return [this.createExplicitOutput(columnName, item.value, fromClause)];
65
+ }
66
+ expandWildcard(value, fromClause) {
67
+ var _a;
68
+ if (!fromClause) {
69
+ return [];
70
+ }
71
+ if (value.namespaces === null) {
72
+ return this.collectFromClause(fromClause, true);
73
+ }
74
+ const sourceName = value.getNamespace();
75
+ if (fromClause.getSourceAliasName() === sourceName) {
76
+ return this.collectFromClause(fromClause, false);
77
+ }
78
+ const join = (_a = fromClause.joins) === null || _a === void 0 ? void 0 : _a.find(item => this.getJoinSourceName(item) === sourceName);
79
+ return join ? this.collectJoinClause(join) : [];
80
+ }
81
+ collectFromClause(clause, joinCascade) {
82
+ const outputs = this.collectSourceExpression(clause.getSourceAliasName(), clause.source);
83
+ if (clause.joins && joinCascade) {
84
+ for (const join of clause.joins) {
85
+ outputs.push(...this.collectJoinClause(join));
86
+ }
87
+ }
88
+ return outputs;
89
+ }
90
+ collectJoinClause(clause) {
91
+ return this.collectSourceExpression(this.getJoinSourceName(clause), clause.source);
92
+ }
93
+ getJoinSourceName(clause) {
94
+ return clause.source.getAliasName();
95
+ }
96
+ collectSourceExpression(sourceName, source) {
97
+ var _a;
98
+ if ((_a = source.aliasExpression) === null || _a === void 0 ? void 0 : _a.columns) {
99
+ return source.aliasExpression.columns.map(column => ({
100
+ name: column.name,
101
+ value: new ColumnReference(sourceName ? [sourceName] : null, column.name),
102
+ sourceAlias: sourceName,
103
+ sourceName: null,
104
+ sourceColumnName: column.name
105
+ }));
106
+ }
107
+ const cte = this.findCommonTable(source);
108
+ if (cte) {
109
+ const innerCommonTables = this.commonTables.filter(item => item.getSourceAliasName() !== cte.getSourceAliasName());
110
+ const innerOutputs = this.collectCteQuery(cte.query, innerCommonTables);
111
+ return this.qualifyOutputs(innerOutputs, sourceName, cte.getSourceAliasName());
112
+ }
113
+ if (source.datasource instanceof TableSource) {
114
+ return this.collectTableSource(sourceName, source.datasource);
115
+ }
116
+ if (source.datasource instanceof SubQuerySource) {
117
+ const innerOutputs = this.collectNestedSelectQuery(source.datasource.query);
118
+ return this.qualifyOutputs(innerOutputs, sourceName, null);
119
+ }
120
+ if (source.datasource instanceof ParenSource) {
121
+ return [];
122
+ }
123
+ return [];
124
+ }
125
+ findCommonTable(source) {
126
+ var _a;
127
+ if (!(source.datasource instanceof TableSource)) {
128
+ return null;
129
+ }
130
+ const tableName = source.datasource.getSourceName();
131
+ return (_a = this.commonTables.find(item => item.getSourceAliasName() === tableName)) !== null && _a !== void 0 ? _a : null;
132
+ }
133
+ collectTableSource(sourceName, source) {
134
+ if (!this.tableColumnResolver) {
135
+ return [];
136
+ }
137
+ const tableName = source.getSourceName();
138
+ const qualifier = sourceName !== null && sourceName !== void 0 ? sourceName : tableName;
139
+ return this.tableColumnResolver(tableName).map(column => ({
140
+ name: column,
141
+ value: new ColumnReference([qualifier], column),
142
+ sourceAlias: sourceName,
143
+ sourceName: tableName,
144
+ sourceColumnName: column
145
+ }));
146
+ }
147
+ collectNestedSelectQuery(query) {
148
+ const collector = new SelectOutputCollector(this.tableColumnResolver, this.commonTables);
149
+ return collector.collect(query).map(({ name, value, sourceAlias, sourceName, sourceColumnName }) => ({
150
+ name,
151
+ value,
152
+ sourceAlias,
153
+ sourceName,
154
+ sourceColumnName
155
+ }));
156
+ }
157
+ collectCteQuery(query, commonTables) {
158
+ if (this.isSelectQuery(query)) {
159
+ const collector = new SelectOutputCollector(this.tableColumnResolver, commonTables);
160
+ return collector.collect(query).map(({ name, value, sourceAlias, sourceName, sourceColumnName }) => ({
161
+ name,
162
+ value,
163
+ sourceAlias,
164
+ sourceName,
165
+ sourceColumnName
166
+ }));
167
+ }
168
+ return this.collectReturningOutputs(query);
169
+ }
170
+ collectReturningOutputs(query) {
171
+ if (!(query instanceof InsertQuery || query instanceof UpdateQuery || query instanceof DeleteQuery || query instanceof MergeQuery)) {
172
+ return [];
173
+ }
174
+ if (!query.returningClause) {
175
+ return [];
176
+ }
177
+ return this.extractReturningOutputs(query.returningClause);
178
+ }
179
+ extractReturningOutputs(clause) {
180
+ var _a, _b;
181
+ const outputs = [];
182
+ for (const item of clause.items) {
183
+ const name = (_b = (_a = item.identifier) === null || _a === void 0 ? void 0 : _a.name) !== null && _b !== void 0 ? _b : this.extractSelectItemName(item);
184
+ if (name) {
185
+ outputs.push(this.createExplicitOutput(name, item.value));
186
+ }
187
+ }
188
+ return outputs;
189
+ }
190
+ extractSelectItemName(item) {
191
+ if (item.identifier) {
192
+ return item.identifier.name;
193
+ }
194
+ if (item.value instanceof ColumnReference) {
195
+ return item.value.column.name;
196
+ }
197
+ return null;
198
+ }
199
+ qualifyOutputs(outputs, sourceAlias, sourceName) {
200
+ return outputs.map(item => ({
201
+ name: item.name,
202
+ value: new ColumnReference(sourceAlias ? [sourceAlias] : null, item.name),
203
+ sourceAlias,
204
+ sourceName,
205
+ sourceColumnName: item.name
206
+ }));
207
+ }
208
+ createExplicitOutput(name, value, fromClause = null) {
209
+ if (value instanceof ColumnReference && value.column.name !== "*") {
210
+ const sourceMetadata = this.resolveColumnSourceMetadata(value, fromClause);
211
+ if (sourceMetadata) {
212
+ return Object.assign({ name,
213
+ value }, sourceMetadata);
214
+ }
215
+ }
216
+ return {
217
+ name,
218
+ value,
219
+ sourceAlias: null,
220
+ sourceName: null,
221
+ sourceColumnName: null
222
+ };
223
+ }
224
+ resolveColumnSourceMetadata(value, fromClause) {
225
+ if (!fromClause || value.namespaces === null) {
226
+ return null;
227
+ }
228
+ const namespace = value.getNamespace();
229
+ const matches = fromClause.getSources().filter(source => this.getSourceMatchNames(source).includes(namespace));
230
+ if (matches.length !== 1) {
231
+ return null;
232
+ }
233
+ const source = matches[0];
234
+ const sourceAlias = this.getColumnReferenceSourceAlias(source, namespace);
235
+ return {
236
+ sourceAlias,
237
+ sourceName: this.getColumnReferenceSourceName(source),
238
+ sourceColumnName: value.column.name
239
+ };
240
+ }
241
+ getSourceMatchNames(source) {
242
+ const names = new Set();
243
+ if (source.aliasExpression) {
244
+ names.add(source.aliasExpression.table.name);
245
+ return [...names];
246
+ }
247
+ const aliasName = source.getAliasName();
248
+ if (aliasName) {
249
+ names.add(aliasName);
250
+ }
251
+ if (source.datasource instanceof TableSource) {
252
+ names.add(source.datasource.table.name);
253
+ names.add(source.datasource.getSourceName());
254
+ }
255
+ return [...names];
256
+ }
257
+ getColumnReferenceSourceAlias(source, namespace) {
258
+ if (source.aliasExpression) {
259
+ return source.aliasExpression.table.name;
260
+ }
261
+ return namespace;
262
+ }
263
+ getColumnReferenceSourceName(source) {
264
+ var _a;
265
+ const cte = this.findCommonTable(source);
266
+ if (cte) {
267
+ return cte.getSourceAliasName();
268
+ }
269
+ if ((_a = source.aliasExpression) === null || _a === void 0 ? void 0 : _a.columns) {
270
+ return null;
271
+ }
272
+ if (source.datasource instanceof TableSource) {
273
+ return source.datasource.getSourceName();
274
+ }
275
+ return null;
276
+ }
277
+ isSelectQuery(query) {
278
+ return "__selectQueryType" in query && query.__selectQueryType === "SelectQuery";
279
+ }
280
+ }
281
+ //# sourceMappingURL=SelectOutputCollector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SelectOutputCollector.js","sourceRoot":"","sources":["../../../src/transformers/SelectOutputCollector.ts"],"names":[],"mappings":"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"}
@@ -16,7 +16,8 @@ export declare class SelectValueCollector implements SqlComponentVisitor<void> {
16
16
  private commonTableCollector;
17
17
  private commonTables;
18
18
  initialCommonTables: CommonTable[] | null;
19
- constructor(tableColumnResolver?: TableColumnResolver | null, initialCommonTables?: CommonTable[] | null);
19
+ private preserveDuplicateSelectItems;
20
+ constructor(tableColumnResolver?: TableColumnResolver | null, initialCommonTables?: CommonTable[] | null, preserveDuplicateSelectItems?: boolean);
20
21
  /**
21
22
  * Get all collected SelectItems as an array of objects with name and value properties
22
23
  * @returns An array of objects with name (string) and value (ValueComponent) properties
@@ -50,11 +51,18 @@ export declare class SelectValueCollector implements SqlComponentVisitor<void> {
50
51
  private processFromClause;
51
52
  private processJoinClause;
52
53
  private processSourceExpression;
54
+ private expandWildcardValue;
55
+ private collectFromClauseValues;
56
+ private collectJoinClauseValues;
57
+ private getJoinSourceName;
58
+ private collectSourceExpressionValues;
53
59
  private visitSelectClause;
54
60
  private processSelectItem;
55
61
  private visitSourceExpression;
56
62
  private visitFromClause;
57
63
  private addSelectValueAsUnique;
64
+ private addSelectValue;
65
+ private addSelectValueFromSelectItem;
58
66
  private collectValuesFromCteQuery;
59
67
  private collectValuesFromReturning;
60
68
  private extractValuesFromReturningClause;
@@ -12,7 +12,7 @@ import { CTECollector } from "./CTECollector";
12
12
  * It can also resolve wildcard selectors (table.* or *) using a provided table column resolver.
13
13
  */
14
14
  export class SelectValueCollector {
15
- constructor(tableColumnResolver = null, initialCommonTables = null) {
15
+ constructor(tableColumnResolver = null, initialCommonTables = null, preserveDuplicateSelectItems = false) {
16
16
  this.selectValues = [];
17
17
  this.visitedNodes = new Set();
18
18
  this.isRootVisit = true;
@@ -20,6 +20,7 @@ export class SelectValueCollector {
20
20
  this.commonTableCollector = new CTECollector();
21
21
  this.commonTables = [];
22
22
  this.initialCommonTables = initialCommonTables;
23
+ this.preserveDuplicateSelectItems = preserveDuplicateSelectItems;
23
24
  this.handlers = new Map();
24
25
  this.handlers.set(SimpleSelectQuery.kind, (expr) => this.visitSimpleSelectQuery(expr));
25
26
  this.handlers.set(SelectClause.kind, (expr) => this.visitSelectClause(expr));
@@ -106,71 +107,85 @@ export class SelectValueCollector {
106
107
  if (wildcards.length === 0) {
107
108
  return;
108
109
  }
109
- // full wildcard
110
- if (this.selectValues.some(item => item.value instanceof ColumnReference && item.value.namespaces === null)) {
111
- if (query.fromClause) {
112
- this.processFromClause(query.fromClause, true);
110
+ const expandedValues = [];
111
+ for (const item of this.selectValues) {
112
+ if (item.name !== '*' || !(item.value instanceof ColumnReference)) {
113
+ expandedValues.push(item);
114
+ continue;
113
115
  }
114
- // remove wildcard
115
- this.selectValues = this.selectValues.filter(item => item.name !== '*');
116
- return;
116
+ expandedValues.push(...this.expandWildcardValue(item.value, query.fromClause));
117
117
  }
118
- ;
119
- // table wildcard
120
- const wildSourceNames = wildcards.filter(item => item.value instanceof ColumnReference && item.value.namespaces)
121
- .map(item => item.value.getNamespace());
122
- if (query.fromClause) {
123
- const fromSourceName = query.fromClause.getSourceAliasName();
124
- if (fromSourceName && wildSourceNames.includes(fromSourceName)) {
125
- this.processFromClause(query.fromClause, false);
126
- }
127
- if (query.fromClause.joins) {
128
- for (const join of query.fromClause.joins) {
129
- const joinSourceName = join.getSourceAliasName();
130
- if (joinSourceName && wildSourceNames.includes(joinSourceName)) {
131
- this.processJoinClause(join);
132
- }
133
- }
134
- }
135
- }
136
- // remove wildcard
137
- this.selectValues = this.selectValues.filter(item => item.name !== '*');
138
- return;
118
+ this.selectValues = expandedValues;
139
119
  }
140
120
  processFromClause(clause, joinCascade) {
141
- if (clause) {
142
- const fromSourceName = clause.getSourceAliasName();
143
- this.processSourceExpression(fromSourceName, clause.source);
144
- if (clause.joins && joinCascade) {
145
- for (const join of clause.joins) {
146
- this.processJoinClause(join);
147
- }
148
- }
121
+ for (const item of this.collectFromClauseValues(clause, joinCascade)) {
122
+ this.addSelectValue(item.name, item.value);
149
123
  }
150
124
  return;
151
125
  }
152
126
  processJoinClause(clause) {
153
- const sourceName = clause.getSourceAliasName();
154
- this.processSourceExpression(sourceName, clause.source);
127
+ for (const item of this.collectJoinClauseValues(clause)) {
128
+ this.addSelectValue(item.name, item.value);
129
+ }
155
130
  }
156
131
  processSourceExpression(sourceName, source) {
132
+ for (const item of this.collectSourceExpressionValues(sourceName, source)) {
133
+ this.addSelectValue(item.name, item.value);
134
+ }
135
+ }
136
+ expandWildcardValue(value, fromClause) {
137
+ if (!fromClause) {
138
+ return [];
139
+ }
140
+ if (value.namespaces === null) {
141
+ return this.collectFromClauseValues(fromClause, true);
142
+ }
143
+ const sourceName = value.getNamespace();
144
+ if (fromClause.getSourceAliasName() === sourceName) {
145
+ return this.collectFromClauseValues(fromClause, false);
146
+ }
147
+ if (!fromClause.joins) {
148
+ return [];
149
+ }
150
+ const join = fromClause.joins.find(item => this.getJoinSourceName(item) === sourceName);
151
+ return join ? this.collectJoinClauseValues(join) : [];
152
+ }
153
+ collectFromClauseValues(clause, joinCascade) {
154
+ const values = this.collectSourceExpressionValues(clause.getSourceAliasName(), clause.source);
155
+ if (clause.joins && joinCascade) {
156
+ for (const join of clause.joins) {
157
+ values.push(...this.collectJoinClauseValues(join));
158
+ }
159
+ }
160
+ return values;
161
+ }
162
+ collectJoinClauseValues(clause) {
163
+ return this.collectSourceExpressionValues(this.getJoinSourceName(clause), clause.source);
164
+ }
165
+ getJoinSourceName(clause) {
166
+ return clause.source.getAliasName();
167
+ }
168
+ collectSourceExpressionValues(sourceName, source) {
157
169
  // check common table
158
- const commonTable = this.commonTables.find(item => item.aliasExpression.table.name === sourceName);
170
+ const tableSourceName = source.datasource instanceof TableSource ? source.datasource.getSourceName() : null;
171
+ const commonTable = tableSourceName
172
+ ? this.commonTables.find(item => item.aliasExpression.table.name === tableSourceName)
173
+ : null;
159
174
  if (commonTable) {
160
175
  // Exclude this CTE from consideration to prevent self-reference
161
- const innerCommonTables = this.commonTables.filter(item => item.aliasExpression.table.name !== sourceName);
176
+ const innerCommonTables = this.commonTables.filter(item => item.aliasExpression.table.name !== commonTable.aliasExpression.table.name);
162
177
  const innerSelected = this.collectValuesFromCteQuery(commonTable.query, innerCommonTables);
163
- innerSelected.forEach(item => {
164
- this.addSelectValueAsUnique(item.name, new ColumnReference(sourceName ? [sourceName] : null, item.name));
165
- });
166
- }
167
- else {
168
- const innerCollector = new SelectValueCollector(this.tableColumnResolver, this.commonTables);
169
- const innerSelected = innerCollector.collect(source);
170
- innerSelected.forEach(item => {
171
- this.addSelectValueAsUnique(item.name, new ColumnReference(sourceName ? [sourceName] : null, item.name));
172
- });
178
+ return innerSelected.map(item => ({
179
+ name: item.name,
180
+ value: new ColumnReference(sourceName ? [sourceName] : null, item.name)
181
+ }));
173
182
  }
183
+ const innerCollector = new SelectValueCollector(this.tableColumnResolver, this.commonTables, true);
184
+ const innerSelected = innerCollector.collect(source);
185
+ return innerSelected.map(item => ({
186
+ name: item.name,
187
+ value: new ColumnReference(sourceName ? [sourceName] : null, item.name)
188
+ }));
174
189
  }
175
190
  visitSelectClause(clause) {
176
191
  for (const item of clause.items) {
@@ -179,7 +194,7 @@ export class SelectValueCollector {
179
194
  }
180
195
  processSelectItem(item) {
181
196
  if (item.identifier) {
182
- this.addSelectValueAsUnique(item.identifier.name, item.value);
197
+ this.addSelectValueFromSelectItem(item.identifier.name, item.value);
183
198
  }
184
199
  else if (item.value instanceof ColumnReference) { // Handle column reference
185
200
  // columnName can be '*'
@@ -190,7 +205,7 @@ export class SelectValueCollector {
190
205
  }
191
206
  else {
192
207
  // Add with duplicate checking
193
- this.addSelectValueAsUnique(columnName, item.value);
208
+ this.addSelectValueFromSelectItem(columnName, item.value);
194
209
  }
195
210
  }
196
211
  }
@@ -202,7 +217,7 @@ export class SelectValueCollector {
202
217
  if (source.aliasExpression && source.aliasExpression.columns) {
203
218
  const sourceName = source.getAliasName();
204
219
  source.aliasExpression.columns.forEach(column => {
205
- this.addSelectValueAsUnique(column.name, new ColumnReference(sourceName ? [sourceName] : null, column.name));
220
+ this.addSelectValueFromSelectItem(column.name, new ColumnReference(sourceName ? [sourceName] : null, column.name));
206
221
  });
207
222
  return;
208
223
  }
@@ -210,17 +225,17 @@ export class SelectValueCollector {
210
225
  if (this.tableColumnResolver) {
211
226
  const sourceName = source.datasource.getSourceName();
212
227
  this.tableColumnResolver(sourceName).forEach(column => {
213
- this.addSelectValueAsUnique(column, new ColumnReference([sourceName], column));
228
+ this.addSelectValueFromSelectItem(column, new ColumnReference([sourceName], column));
214
229
  });
215
230
  }
216
231
  return;
217
232
  }
218
233
  else if (source.datasource instanceof SubQuerySource) {
219
234
  const sourceName = source.getAliasName();
220
- const innerCollector = new SelectValueCollector(this.tableColumnResolver, this.commonTables);
235
+ const innerCollector = new SelectValueCollector(this.tableColumnResolver, this.commonTables, true);
221
236
  const innerSelected = innerCollector.collect(source.datasource.query);
222
237
  innerSelected.forEach(item => {
223
- this.addSelectValueAsUnique(item.name, new ColumnReference(sourceName ? [sourceName] : null, item.name));
238
+ this.addSelectValueFromSelectItem(item.name, new ColumnReference(sourceName ? [sourceName] : null, item.name));
224
239
  });
225
240
  return;
226
241
  }
@@ -239,9 +254,19 @@ export class SelectValueCollector {
239
254
  this.selectValues.push({ name, value });
240
255
  }
241
256
  }
257
+ addSelectValue(name, value) {
258
+ this.selectValues.push({ name, value });
259
+ }
260
+ addSelectValueFromSelectItem(name, value) {
261
+ if (this.preserveDuplicateSelectItems) {
262
+ this.addSelectValue(name, value);
263
+ return;
264
+ }
265
+ this.addSelectValueAsUnique(name, value);
266
+ }
242
267
  collectValuesFromCteQuery(query, commonTables) {
243
268
  if (this.isSelectQuery(query)) {
244
- const innerCollector = new SelectValueCollector(this.tableColumnResolver, commonTables);
269
+ const innerCollector = new SelectValueCollector(this.tableColumnResolver, commonTables, true);
245
270
  return innerCollector.collect(query);
246
271
  }
247
272
  // 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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"}