rawsql-ts 0.1.1-beta.1 → 0.1.1-beta.2

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 (199) hide show
  1. package/dist/esm/index.js +17 -0
  2. package/dist/esm/index.js.map +1 -0
  3. package/dist/esm/models/BinarySelectQuery.js +137 -0
  4. package/dist/esm/models/BinarySelectQuery.js.map +1 -0
  5. package/dist/esm/models/Clause.js +289 -0
  6. package/dist/esm/models/Clause.js.map +1 -0
  7. package/dist/esm/models/KeywordTrie.js +48 -0
  8. package/dist/esm/models/KeywordTrie.js.map +1 -0
  9. package/dist/esm/models/Lexeme.js +18 -0
  10. package/dist/esm/models/Lexeme.js.map +1 -0
  11. package/dist/esm/models/SelectQuery.js +5 -0
  12. package/dist/esm/models/SelectQuery.js.map +1 -0
  13. package/dist/esm/models/SimpleSelectQuery.js +288 -0
  14. package/dist/esm/models/SimpleSelectQuery.js.map +1 -0
  15. package/dist/esm/models/SqlComponent.js +22 -0
  16. package/dist/esm/models/SqlComponent.js.map +1 -0
  17. package/dist/esm/models/ValueComponent.js +223 -0
  18. package/dist/esm/models/ValueComponent.js.map +1 -0
  19. package/dist/esm/models/ValuesQuery.js +12 -0
  20. package/dist/esm/models/ValuesQuery.js.map +1 -0
  21. package/dist/esm/parsers/CommandExpressionParser.js +120 -0
  22. package/dist/esm/parsers/CommandExpressionParser.js.map +1 -0
  23. package/dist/esm/parsers/CommonTableParser.js +58 -0
  24. package/dist/esm/parsers/CommonTableParser.js.map +1 -0
  25. package/dist/esm/parsers/ForClauseParser.js +54 -0
  26. package/dist/esm/parsers/ForClauseParser.js.map +1 -0
  27. package/dist/esm/parsers/FromClauseParser.js +43 -0
  28. package/dist/esm/parsers/FromClauseParser.js.map +1 -0
  29. package/dist/esm/parsers/FunctionExpressionParser.js +174 -0
  30. package/dist/esm/parsers/FunctionExpressionParser.js.map +1 -0
  31. package/dist/esm/parsers/GroupByParser.js +54 -0
  32. package/dist/esm/parsers/GroupByParser.js.map +1 -0
  33. package/dist/esm/parsers/HavingParser.js +32 -0
  34. package/dist/esm/parsers/HavingParser.js.map +1 -0
  35. package/dist/esm/parsers/IdentifierParser.js +35 -0
  36. package/dist/esm/parsers/IdentifierParser.js.map +1 -0
  37. package/dist/esm/parsers/JoinClauseParser.js +101 -0
  38. package/dist/esm/parsers/JoinClauseParser.js.map +1 -0
  39. package/dist/esm/parsers/KeywordParser.js +87 -0
  40. package/dist/esm/parsers/KeywordParser.js.map +1 -0
  41. package/dist/esm/parsers/LimitClauseParser.js +46 -0
  42. package/dist/esm/parsers/LimitClauseParser.js.map +1 -0
  43. package/dist/esm/parsers/LiteralParser.js +34 -0
  44. package/dist/esm/parsers/LiteralParser.js.map +1 -0
  45. package/dist/esm/parsers/OrderByClauseParser.js +73 -0
  46. package/dist/esm/parsers/OrderByClauseParser.js.map +1 -0
  47. package/dist/esm/parsers/OverExpressionParser.js +40 -0
  48. package/dist/esm/parsers/OverExpressionParser.js.map +1 -0
  49. package/dist/esm/parsers/ParameterExpressionParser.js +11 -0
  50. package/dist/esm/parsers/ParameterExpressionParser.js.map +1 -0
  51. package/dist/esm/parsers/ParenExpressionParser.js +29 -0
  52. package/dist/esm/parsers/ParenExpressionParser.js.map +1 -0
  53. package/dist/esm/parsers/PartitionByParser.js +49 -0
  54. package/dist/esm/parsers/PartitionByParser.js.map +1 -0
  55. package/dist/esm/parsers/SelectClauseParser.js +80 -0
  56. package/dist/esm/parsers/SelectClauseParser.js.map +1 -0
  57. package/dist/esm/parsers/SelectQueryParser.js +149 -0
  58. package/dist/esm/parsers/SelectQueryParser.js.map +1 -0
  59. package/dist/esm/parsers/SourceAliasExpressionParser.js +45 -0
  60. package/dist/esm/parsers/SourceAliasExpressionParser.js.map +1 -0
  61. package/dist/esm/parsers/SourceExpressionParser.js +31 -0
  62. package/dist/esm/parsers/SourceExpressionParser.js.map +1 -0
  63. package/dist/esm/parsers/SourceParser.js +115 -0
  64. package/dist/esm/parsers/SourceParser.js.map +1 -0
  65. package/dist/esm/parsers/SqlTokenizer.js +170 -0
  66. package/dist/esm/parsers/SqlTokenizer.js.map +1 -0
  67. package/dist/esm/parsers/StringSpecifierExpressionParser.js +18 -0
  68. package/dist/esm/parsers/StringSpecifierExpressionParser.js.map +1 -0
  69. package/dist/esm/parsers/UnaryExpressionParser.js +26 -0
  70. package/dist/esm/parsers/UnaryExpressionParser.js.map +1 -0
  71. package/dist/esm/parsers/ValueParser.js +132 -0
  72. package/dist/esm/parsers/ValueParser.js.map +1 -0
  73. package/dist/esm/parsers/ValuesQueryParser.js +82 -0
  74. package/dist/esm/parsers/ValuesQueryParser.js.map +1 -0
  75. package/dist/esm/parsers/WhereClauseParser.js +32 -0
  76. package/dist/esm/parsers/WhereClauseParser.js.map +1 -0
  77. package/dist/esm/parsers/WindowClauseParser.js +41 -0
  78. package/dist/esm/parsers/WindowClauseParser.js.map +1 -0
  79. package/dist/esm/parsers/WindowExpressionParser.js +159 -0
  80. package/dist/esm/parsers/WindowExpressionParser.js.map +1 -0
  81. package/dist/esm/parsers/WithClauseParser.js +53 -0
  82. package/dist/esm/parsers/WithClauseParser.js.map +1 -0
  83. package/dist/esm/tokenReaders/BaseTokenReader.js +78 -0
  84. package/dist/esm/tokenReaders/BaseTokenReader.js.map +1 -0
  85. package/dist/esm/tokenReaders/CommandTokenReader.js +141 -0
  86. package/dist/esm/tokenReaders/CommandTokenReader.js.map +1 -0
  87. package/dist/esm/tokenReaders/FunctionTokenReader.js +41 -0
  88. package/dist/esm/tokenReaders/FunctionTokenReader.js.map +1 -0
  89. package/dist/esm/tokenReaders/IdentifierTokenReader.js +66 -0
  90. package/dist/esm/tokenReaders/IdentifierTokenReader.js.map +1 -0
  91. package/dist/esm/tokenReaders/LiteralTokenReader.js +185 -0
  92. package/dist/esm/tokenReaders/LiteralTokenReader.js.map +1 -0
  93. package/dist/esm/tokenReaders/OperatorTokenReader.js +94 -0
  94. package/dist/esm/tokenReaders/OperatorTokenReader.js.map +1 -0
  95. package/dist/esm/tokenReaders/ParameterTokenReader.js +40 -0
  96. package/dist/esm/tokenReaders/ParameterTokenReader.js.map +1 -0
  97. package/dist/esm/tokenReaders/StringSpecifierTokenReader.js +27 -0
  98. package/dist/esm/tokenReaders/StringSpecifierTokenReader.js.map +1 -0
  99. package/dist/esm/tokenReaders/SymbolTokenReader.js +31 -0
  100. package/dist/esm/tokenReaders/SymbolTokenReader.js.map +1 -0
  101. package/dist/esm/tokenReaders/TokenReaderManager.js +106 -0
  102. package/dist/esm/tokenReaders/TokenReaderManager.js.map +1 -0
  103. package/dist/esm/tokenReaders/TypeTokenReader.js +55 -0
  104. package/dist/esm/tokenReaders/TypeTokenReader.js.map +1 -0
  105. package/dist/esm/transformers/CTEBuilder.js +184 -0
  106. package/dist/esm/transformers/CTEBuilder.js.map +1 -0
  107. package/dist/esm/transformers/CTECollector.js +384 -0
  108. package/dist/esm/transformers/CTECollector.js.map +1 -0
  109. package/dist/esm/transformers/CTEDisabler.js +321 -0
  110. package/dist/esm/transformers/CTEDisabler.js.map +1 -0
  111. package/dist/esm/transformers/CTEInjector.js +79 -0
  112. package/dist/esm/transformers/CTEInjector.js.map +1 -0
  113. package/dist/esm/transformers/CTENormalizer.js +42 -0
  114. package/dist/esm/transformers/CTENormalizer.js.map +1 -0
  115. package/dist/esm/transformers/Formatter.js +463 -0
  116. package/dist/esm/transformers/Formatter.js.map +1 -0
  117. package/dist/esm/transformers/QueryConverter.js +115 -0
  118. package/dist/esm/transformers/QueryConverter.js.map +1 -0
  119. package/dist/esm/transformers/SelectValueCollector.js +245 -0
  120. package/dist/esm/transformers/SelectValueCollector.js.map +1 -0
  121. package/dist/esm/transformers/SelectableColumnCollector.js +318 -0
  122. package/dist/esm/transformers/SelectableColumnCollector.js.map +1 -0
  123. package/dist/esm/transformers/TableColumnResolver.js +2 -0
  124. package/dist/esm/transformers/TableColumnResolver.js.map +1 -0
  125. package/dist/esm/transformers/TableSourceCollector.js +380 -0
  126. package/dist/esm/transformers/TableSourceCollector.js.map +1 -0
  127. package/dist/esm/transformers/UpstreamSelectQueryFinder.js +125 -0
  128. package/dist/esm/transformers/UpstreamSelectQueryFinder.js.map +1 -0
  129. package/dist/esm/types/index.d.ts +14 -0
  130. package/dist/esm/types/models/BinarySelectQuery.d.ts +91 -0
  131. package/dist/esm/types/models/Clause.d.ts +189 -0
  132. package/dist/esm/types/models/KeywordTrie.d.ts +11 -0
  133. package/dist/esm/types/models/Lexeme.d.ts +25 -0
  134. package/dist/esm/types/models/SelectQuery.d.ts +5 -0
  135. package/dist/esm/types/models/SimpleSelectQuery.d.ts +167 -0
  136. package/dist/esm/types/models/SqlComponent.d.ts +18 -0
  137. package/dist/esm/types/models/ValueComponent.d.ts +158 -0
  138. package/dist/esm/types/models/ValuesQuery.d.ts +10 -0
  139. package/dist/esm/types/parsers/CommandExpressionParser.d.ts +15 -0
  140. package/dist/esm/types/parsers/CommonTableParser.d.ts +9 -0
  141. package/dist/esm/types/parsers/ForClauseParser.d.ts +9 -0
  142. package/dist/esm/types/parsers/FromClauseParser.d.ts +9 -0
  143. package/dist/esm/types/parsers/FunctionExpressionParser.d.ts +22 -0
  144. package/dist/esm/types/parsers/GroupByParser.d.ts +10 -0
  145. package/dist/esm/types/parsers/HavingParser.d.ts +9 -0
  146. package/dist/esm/types/parsers/IdentifierParser.d.ts +8 -0
  147. package/dist/esm/types/parsers/JoinClauseParser.d.ts +14 -0
  148. package/dist/esm/types/parsers/KeywordParser.d.ts +17 -0
  149. package/dist/esm/types/parsers/LimitClauseParser.d.ts +9 -0
  150. package/dist/esm/types/parsers/LiteralParser.d.ts +8 -0
  151. package/dist/esm/types/parsers/OrderByClauseParser.d.ts +10 -0
  152. package/dist/esm/types/parsers/OverExpressionParser.d.ts +9 -0
  153. package/dist/esm/types/parsers/ParameterExpressionParser.d.ts +8 -0
  154. package/dist/esm/types/parsers/ParenExpressionParser.d.ts +8 -0
  155. package/dist/esm/types/parsers/PartitionByParser.d.ts +9 -0
  156. package/dist/esm/types/parsers/SelectClauseParser.d.ts +10 -0
  157. package/dist/esm/types/parsers/SelectQueryParser.d.ts +13 -0
  158. package/dist/esm/types/parsers/SourceAliasExpressionParser.d.ts +8 -0
  159. package/dist/esm/types/parsers/SourceExpressionParser.d.ts +8 -0
  160. package/dist/esm/types/parsers/SourceParser.d.ts +13 -0
  161. package/dist/esm/types/parsers/SqlTokenizer.d.ts +64 -0
  162. package/dist/esm/types/parsers/StringSpecifierExpressionParser.d.ts +8 -0
  163. package/dist/esm/types/parsers/UnaryExpressionParser.d.ts +8 -0
  164. package/dist/esm/types/parsers/ValueParser.d.ts +14 -0
  165. package/dist/esm/types/parsers/ValuesQueryParser.d.ts +10 -0
  166. package/dist/esm/types/parsers/WhereClauseParser.d.ts +9 -0
  167. package/dist/esm/types/parsers/WindowClauseParser.d.ts +9 -0
  168. package/dist/esm/types/parsers/WindowExpressionParser.d.ts +12 -0
  169. package/dist/esm/types/parsers/WithClauseParser.d.ts +9 -0
  170. package/dist/esm/types/tokenReaders/BaseTokenReader.d.ts +43 -0
  171. package/dist/esm/types/tokenReaders/CommandTokenReader.d.ts +7 -0
  172. package/dist/esm/types/tokenReaders/FunctionTokenReader.d.ts +11 -0
  173. package/dist/esm/types/tokenReaders/IdentifierTokenReader.d.ts +15 -0
  174. package/dist/esm/types/tokenReaders/LiteralTokenReader.d.ts +23 -0
  175. package/dist/esm/types/tokenReaders/OperatorTokenReader.d.ts +5 -0
  176. package/dist/esm/types/tokenReaders/ParameterTokenReader.d.ts +11 -0
  177. package/dist/esm/types/tokenReaders/StringSpecifierTokenReader.d.ts +8 -0
  178. package/dist/esm/types/tokenReaders/SymbolTokenReader.d.ts +12 -0
  179. package/dist/esm/types/tokenReaders/TokenReaderManager.d.ts +53 -0
  180. package/dist/esm/types/tokenReaders/TypeTokenReader.d.ts +11 -0
  181. package/dist/esm/types/transformers/CTEBuilder.d.ts +52 -0
  182. package/dist/esm/types/transformers/CTECollector.d.ts +82 -0
  183. package/dist/esm/types/transformers/CTEDisabler.d.ts +77 -0
  184. package/dist/esm/types/transformers/CTEInjector.d.ts +40 -0
  185. package/dist/esm/types/transformers/CTENormalizer.d.ts +25 -0
  186. package/dist/esm/types/transformers/Formatter.d.ts +82 -0
  187. package/dist/esm/types/transformers/QueryConverter.d.ts +41 -0
  188. package/dist/esm/types/transformers/SelectValueCollector.d.ts +60 -0
  189. package/dist/esm/types/transformers/SelectableColumnCollector.d.ts +72 -0
  190. package/dist/esm/types/transformers/TableColumnResolver.d.ts +10 -0
  191. package/dist/esm/types/transformers/TableSourceCollector.d.ts +92 -0
  192. package/dist/esm/types/transformers/UpstreamSelectQueryFinder.d.ts +27 -0
  193. package/dist/esm/types/utils/charLookupTable.d.ts +11 -0
  194. package/dist/esm/types/utils/stringUtils.d.ts +43 -0
  195. package/dist/esm/utils/charLookupTable.js +69 -0
  196. package/dist/esm/utils/charLookupTable.js.map +1 -0
  197. package/dist/esm/utils/stringUtils.js +164 -0
  198. package/dist/esm/utils/stringUtils.js.map +1 -0
  199. package/package.json +1 -1
@@ -0,0 +1,245 @@
1
+ import { FromClause, ParenSource, SelectClause, SelectItem, SourceExpression, SubQuerySource, TableSource } from "../models/Clause";
2
+ import { SimpleSelectQuery } from "../models/SelectQuery";
3
+ import { ColumnReference } from "../models/ValueComponent";
4
+ import { CTECollector } from "./CTECollector";
5
+ /**
6
+ * A visitor that collects all SelectItem instances from a SQL query structure.
7
+ * This visitor scans through select clauses and collects all the SelectItem objects.
8
+ * It can also resolve wildcard selectors (table.* or *) using a provided table column resolver.
9
+ */
10
+ export class SelectValueCollector {
11
+ constructor(tableColumnResolver, initialCommonTables = null) {
12
+ this.selectValues = [];
13
+ this.visitedNodes = new Set();
14
+ this.isRootVisit = true;
15
+ this.tableColumnResolver = tableColumnResolver;
16
+ this.commonTableCollector = new CTECollector();
17
+ this.commonTables = [];
18
+ this.initialCommonTables = initialCommonTables;
19
+ this.handlers = new Map();
20
+ this.handlers.set(SimpleSelectQuery.kind, (expr) => this.visitSimpleSelectQuery(expr));
21
+ this.handlers.set(SelectClause.kind, (expr) => this.visitSelectClause(expr));
22
+ this.handlers.set(SourceExpression.kind, (expr) => this.visitSourceExpression(expr));
23
+ this.handlers.set(FromClause.kind, (expr) => this.visitFromClause(expr));
24
+ }
25
+ /**
26
+ * Get all collected SelectItems as an array of objects with name and value properties
27
+ * @returns An array of objects with name (string) and value (ValueComponent) properties
28
+ */
29
+ getValues() {
30
+ return this.selectValues;
31
+ }
32
+ /**
33
+ * Reset the collection of SelectItems
34
+ */
35
+ reset() {
36
+ this.selectValues = [];
37
+ this.visitedNodes.clear();
38
+ if (this.initialCommonTables) {
39
+ this.commonTables = this.initialCommonTables;
40
+ }
41
+ else {
42
+ this.commonTables = [];
43
+ }
44
+ }
45
+ collect(arg) {
46
+ // Visit the component and return the collected select items
47
+ this.visit(arg);
48
+ const items = this.getValues();
49
+ this.reset(); // Reset after collection
50
+ return items;
51
+ }
52
+ /**
53
+ * Main entry point for the visitor pattern.
54
+ * Implements the shallow visit pattern to distinguish between root and recursive visits.
55
+ */
56
+ visit(arg) {
57
+ // If not a root visit, just visit the node and return
58
+ if (!this.isRootVisit) {
59
+ this.visitNode(arg);
60
+ return;
61
+ }
62
+ // If this is a root visit, we need to reset the state
63
+ this.reset();
64
+ this.isRootVisit = false;
65
+ try {
66
+ this.visitNode(arg);
67
+ }
68
+ finally {
69
+ // Regardless of success or failure, reset the root visit flag
70
+ this.isRootVisit = true;
71
+ }
72
+ }
73
+ /**
74
+ * Internal visit method used for all nodes.
75
+ * This separates the visit flag management from the actual node visitation logic.
76
+ */
77
+ visitNode(arg) {
78
+ // Skip if we've already visited this node to prevent infinite recursion
79
+ if (this.visitedNodes.has(arg)) {
80
+ return;
81
+ }
82
+ // Mark as visited
83
+ this.visitedNodes.add(arg);
84
+ const handler = this.handlers.get(arg.getKind());
85
+ if (handler) {
86
+ handler(arg);
87
+ return;
88
+ }
89
+ }
90
+ /**
91
+ * Process a SimpleSelectQuery to collect data and store the current context
92
+ */
93
+ visitSimpleSelectQuery(query) {
94
+ if (this.commonTables.length === 0 && this.initialCommonTables === null) {
95
+ this.commonTables = this.commonTableCollector.collect(query);
96
+ }
97
+ if (query.selectClause) {
98
+ query.selectClause.accept(this);
99
+ }
100
+ // no wildcard
101
+ const wildcards = this.selectValues.filter(item => item.name === '*');
102
+ if (wildcards.length === 0) {
103
+ return;
104
+ }
105
+ // full wildcard
106
+ if (this.selectValues.some(item => item.value instanceof ColumnReference && item.value.namespaces === null)) {
107
+ if (query.fromClause) {
108
+ this.processFromClause(query.fromClause, true);
109
+ }
110
+ // remove wildcard
111
+ this.selectValues = this.selectValues.filter(item => item.name !== '*');
112
+ return;
113
+ }
114
+ ;
115
+ // table wildcard
116
+ const wildSourceNames = wildcards.filter(item => item.value instanceof ColumnReference && item.value.namespaces)
117
+ .map(item => item.value.getNamespace());
118
+ if (query.fromClause) {
119
+ const fromSourceName = query.fromClause.getAliasSourceName();
120
+ if (fromSourceName && wildSourceNames.includes(fromSourceName)) {
121
+ this.processFromClause(query.fromClause, false);
122
+ }
123
+ if (query.fromClause.joins) {
124
+ for (const join of query.fromClause.joins) {
125
+ const joinSourceName = join.getAliasSourceName();
126
+ if (joinSourceName && wildSourceNames.includes(joinSourceName)) {
127
+ this.processJoinClause(join);
128
+ }
129
+ }
130
+ }
131
+ }
132
+ // remove wildcard
133
+ this.selectValues = this.selectValues.filter(item => item.name !== '*');
134
+ return;
135
+ }
136
+ processFromClause(clause, joinCascade) {
137
+ if (clause) {
138
+ const fromSourceName = clause.getAliasSourceName();
139
+ this.processSourceExpression(fromSourceName, clause.source);
140
+ if (clause.joins && joinCascade) {
141
+ for (const join of clause.joins) {
142
+ this.processJoinClause(join);
143
+ }
144
+ }
145
+ }
146
+ return;
147
+ }
148
+ processJoinClause(clause) {
149
+ const sourceName = clause.getAliasSourceName();
150
+ this.processSourceExpression(sourceName, clause.source);
151
+ }
152
+ processSourceExpression(sourceName, source) {
153
+ // check common table
154
+ const commonTable = this.commonTables.find(item => item.aliasExpression.table.name === sourceName);
155
+ if (commonTable) {
156
+ // Exclude this CTE from consideration to prevent self-reference
157
+ const innerCommonTables = this.commonTables.filter(item => item.aliasExpression.table.name !== sourceName);
158
+ const innerCollector = new SelectValueCollector(this.tableColumnResolver, innerCommonTables);
159
+ const innerSelected = innerCollector.collect(commonTable.query);
160
+ innerSelected.forEach(item => {
161
+ this.addSelectValueAsUnique(item.name, new ColumnReference(sourceName ? [sourceName] : null, item.name));
162
+ });
163
+ }
164
+ else {
165
+ const innerCollector = new SelectValueCollector(this.tableColumnResolver, this.commonTables);
166
+ const innerSelected = innerCollector.collect(source);
167
+ innerSelected.forEach(item => {
168
+ this.addSelectValueAsUnique(item.name, new ColumnReference(sourceName ? [sourceName] : null, item.name));
169
+ });
170
+ }
171
+ }
172
+ visitSelectClause(clause) {
173
+ for (const item of clause.items) {
174
+ if (item instanceof SelectItem) {
175
+ this.processSelectItem(item); // Process SelectItem
176
+ }
177
+ else {
178
+ this.processValueComponent(item); // Process ValueComponent
179
+ }
180
+ }
181
+ }
182
+ processSelectItem(item) {
183
+ this.addSelectValueAsUnique(item.identifier.name, item.value);
184
+ }
185
+ processValueComponent(value) {
186
+ if (value instanceof ColumnReference) { // Handle column reference
187
+ // columnName can be '*'
188
+ const columnName = value.column.name;
189
+ if (columnName === '*') {
190
+ // Force add without checking duplicates
191
+ this.selectValues.push({ name: columnName, value: value });
192
+ }
193
+ else {
194
+ // Add with duplicate checking
195
+ this.addSelectValueAsUnique(columnName, value);
196
+ }
197
+ }
198
+ }
199
+ visitSourceExpression(source) {
200
+ // Column aliases have the highest priority if present
201
+ // For physical tables, use external function to get column names
202
+ // For subqueries, instantiate a new collector and get column names from the subquery
203
+ // For parenthesized expressions, treat them the same as subqueries
204
+ if (source.aliasExpression && source.aliasExpression.columns) {
205
+ const sourceName = source.getAliasName();
206
+ source.aliasExpression.columns.forEach(column => {
207
+ this.addSelectValueAsUnique(column.name, new ColumnReference(sourceName ? [sourceName] : null, column.name));
208
+ });
209
+ return;
210
+ }
211
+ else if (source.datasource instanceof TableSource) {
212
+ if (this.tableColumnResolver) {
213
+ const sourceName = source.datasource.getSourceName();
214
+ this.tableColumnResolver(sourceName).forEach(column => {
215
+ this.addSelectValueAsUnique(column, new ColumnReference([sourceName], column));
216
+ });
217
+ }
218
+ return;
219
+ }
220
+ else if (source.datasource instanceof SubQuerySource) {
221
+ const sourceName = source.getAliasName();
222
+ const innerCollector = new SelectValueCollector(this.tableColumnResolver, this.commonTables);
223
+ const innerSelected = innerCollector.collect(source.datasource.query);
224
+ innerSelected.forEach(item => {
225
+ this.addSelectValueAsUnique(item.name, new ColumnReference(sourceName ? [sourceName] : null, item.name));
226
+ });
227
+ return;
228
+ }
229
+ else if (source.datasource instanceof ParenSource) {
230
+ return this.visit(source.datasource.source);
231
+ }
232
+ }
233
+ visitFromClause(clause) {
234
+ if (clause) {
235
+ this.processFromClause(clause, true);
236
+ }
237
+ }
238
+ addSelectValueAsUnique(name, value) {
239
+ // Check if a select value with the same name already exists before adding
240
+ if (!this.selectValues.some(item => item.name === name)) {
241
+ this.selectValues.push({ name, value });
242
+ }
243
+ }
244
+ }
245
+ //# sourceMappingURL=SelectValueCollector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SelectValueCollector.js","sourceRoot":"","sources":["../../../src/transformers/SelectValueCollector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,318 @@
1
+ import { FromClause, GroupByClause, HavingClause, LimitClause, OrderByClause, SelectClause, WhereClause, WindowFrameClause, JoinOnClause, JoinUsingClause, SelectItem, PartitionByClause } from "../models/Clause";
2
+ import { SimpleSelectQuery } from "../models/SelectQuery";
3
+ import { ArrayExpression, BetweenExpression, BinaryExpression, CaseExpression, CastExpression, ColumnReference, FunctionCall, ParenExpression, UnaryExpression, ValueList, WindowFrameExpression } from "../models/ValueComponent";
4
+ import { CTECollector } from "./CTECollector";
5
+ import { Formatter } from "./Formatter";
6
+ import { SelectValueCollector } from "./SelectValueCollector";
7
+ /**
8
+ * A visitor that collects all ColumnReference instances from a SQL query structure.
9
+ * This visitor scans through all clauses and collects all unique ColumnReference objects.
10
+ * It does not scan Common Table Expressions (CTEs) or subqueries.
11
+ *
12
+ * Important: Only collects column references to tables defined in the root FROM/JOIN clauses,
13
+ * as these are the only columns that can be directly referenced in the query.
14
+ */
15
+ export class SelectableColumnCollector {
16
+ constructor(tableColumnResolver) {
17
+ this.selectValues = [];
18
+ this.visitedNodes = new Set();
19
+ this.isRootVisit = true;
20
+ this.commonTables = [];
21
+ this.tableColumnResolver = tableColumnResolver;
22
+ this.selectValueCollector = new SelectValueCollector();
23
+ this.commonTableCollector = new CTECollector();
24
+ this.commonTables = [];
25
+ this.formatter = new Formatter();
26
+ this.handlers = new Map();
27
+ // Main entry point is the SimpleSelectQuery
28
+ this.handlers.set(SimpleSelectQuery.kind, (expr) => this.visitSimpleSelectQuery(expr));
29
+ // Handlers for each clause type that might contain column references
30
+ this.handlers.set(SelectClause.kind, (expr) => this.visitSelectClause(expr));
31
+ this.handlers.set(FromClause.kind, (expr) => this.visitFromClause(expr));
32
+ this.handlers.set(WhereClause.kind, (expr) => this.visitWhereClause(expr));
33
+ this.handlers.set(GroupByClause.kind, (expr) => this.visitGroupByClause(expr));
34
+ this.handlers.set(HavingClause.kind, (expr) => this.visitHavingClause(expr));
35
+ this.handlers.set(OrderByClause.kind, (expr) => this.visitOrderByClause(expr));
36
+ this.handlers.set(WindowFrameClause.kind, (expr) => this.visitWindowFrameClause(expr));
37
+ this.handlers.set(LimitClause.kind, (expr) => this.visitLimitClause(expr));
38
+ // Add handlers for JOIN conditions
39
+ this.handlers.set(JoinOnClause.kind, (expr) => this.visitJoinOnClause(expr));
40
+ this.handlers.set(JoinUsingClause.kind, (expr) => this.visitJoinUsingClause(expr));
41
+ // For value components that might contain column references
42
+ this.handlers.set(ColumnReference.kind, (expr) => this.visitColumnReference(expr));
43
+ this.handlers.set(BinaryExpression.kind, (expr) => this.visitBinaryExpression(expr));
44
+ this.handlers.set(UnaryExpression.kind, (expr) => this.visitUnaryExpression(expr));
45
+ this.handlers.set(FunctionCall.kind, (expr) => this.visitFunctionCall(expr));
46
+ this.handlers.set(ParenExpression.kind, (expr) => this.visitParenExpression(expr));
47
+ this.handlers.set(CaseExpression.kind, (expr) => this.visitCaseExpression(expr));
48
+ this.handlers.set(CastExpression.kind, (expr) => this.visitCastExpression(expr));
49
+ this.handlers.set(BetweenExpression.kind, (expr) => this.visitBetweenExpression(expr));
50
+ this.handlers.set(ArrayExpression.kind, (expr) => this.visitArrayExpression(expr));
51
+ this.handlers.set(ValueList.kind, (expr) => this.visitValueList(expr));
52
+ this.handlers.set(WindowFrameClause.kind, (expr) => this.visitWindowFrameClause(expr));
53
+ this.handlers.set(WindowFrameExpression.kind, (expr) => this.visitWindowFrameExpression(expr));
54
+ this.handlers.set(PartitionByClause.kind, (expr) => this.visitPartitionByClause(expr));
55
+ }
56
+ getValues() {
57
+ return this.selectValues;
58
+ }
59
+ collect(arg) {
60
+ // Visit the component and return the collected select items
61
+ this.visit(arg);
62
+ const items = this.getValues();
63
+ this.reset(); // Reset after collection
64
+ return items;
65
+ }
66
+ /**
67
+ * Reset the collection of ColumnReferences
68
+ */
69
+ reset() {
70
+ this.selectValues = [];
71
+ this.visitedNodes.clear();
72
+ this.commonTables = [];
73
+ }
74
+ addSelectValueAsUnique(name, value) {
75
+ // Check if a select value with the same name already exists before adding
76
+ if (!this.selectValues.some(item => item.name === name)) {
77
+ this.selectValues.push({ name, value });
78
+ }
79
+ }
80
+ /**
81
+ * Main entry point for the visitor pattern.
82
+ * Implements the shallow visit pattern to distinguish between root and recursive visits.
83
+ */
84
+ visit(arg) {
85
+ // If not a root visit, just visit the node and return
86
+ if (!this.isRootVisit) {
87
+ this.visitNode(arg);
88
+ return;
89
+ }
90
+ if (!(arg instanceof SimpleSelectQuery)) {
91
+ throw new Error("Root visit must be a SimpleSelectQuery");
92
+ }
93
+ // If this is a root visit, we need to reset the state
94
+ this.reset();
95
+ this.isRootVisit = false;
96
+ this.commonTables = this.commonTableCollector.collect(arg);
97
+ try {
98
+ this.visitNode(arg);
99
+ }
100
+ finally {
101
+ // Regardless of success or failure, reset the root visit flag
102
+ this.isRootVisit = true;
103
+ }
104
+ }
105
+ /**
106
+ * Internal visit method used for all nodes.
107
+ * This separates the visit flag management from the actual node visitation logic.
108
+ */
109
+ visitNode(arg) {
110
+ // Skip if we've already visited this node to prevent infinite recursion
111
+ if (this.visitedNodes.has(arg)) {
112
+ return;
113
+ }
114
+ // Mark as visited
115
+ this.visitedNodes.add(arg);
116
+ const handler = this.handlers.get(arg.getKind());
117
+ if (handler) {
118
+ handler(arg);
119
+ return;
120
+ }
121
+ // For any other component types, we don't need to do anything
122
+ }
123
+ /**
124
+ * Process a SimpleSelectQuery to collect ColumnReferences from all its clauses
125
+ */
126
+ visitSimpleSelectQuery(query) {
127
+ // Visit all clauses that might contain column references
128
+ if (query.selectClause) {
129
+ query.selectClause.accept(this);
130
+ }
131
+ if (query.fromClause) {
132
+ query.fromClause.accept(this);
133
+ }
134
+ if (query.whereClause) {
135
+ query.whereClause.accept(this);
136
+ }
137
+ if (query.groupByClause) {
138
+ query.groupByClause.accept(this);
139
+ }
140
+ if (query.havingClause) {
141
+ query.havingClause.accept(this);
142
+ }
143
+ if (query.windowFrameClause) {
144
+ query.windowFrameClause.accept(this);
145
+ }
146
+ if (query.orderByClause) {
147
+ query.orderByClause.accept(this);
148
+ }
149
+ if (query.rowLimitClause) {
150
+ query.rowLimitClause.accept(this);
151
+ }
152
+ if (query.forClause) {
153
+ query.forClause.accept(this);
154
+ }
155
+ // Explicitly NOT processing query.WithClause to avoid scanning CTEs
156
+ }
157
+ // Clause handlers
158
+ visitSelectClause(clause) {
159
+ if (clause.items) {
160
+ for (const item of clause.items) {
161
+ if (item instanceof SelectItem) {
162
+ this.addSelectValueAsUnique(item.identifier.name, item.value);
163
+ }
164
+ else {
165
+ item.accept(this);
166
+ }
167
+ }
168
+ }
169
+ }
170
+ visitFromClause(clause) {
171
+ // import source values
172
+ const collector = new SelectValueCollector(this.tableColumnResolver, this.commonTables);
173
+ const sourceValues = collector.collect(clause);
174
+ for (const item of sourceValues) {
175
+ // Add the select value as unique to avoid duplicates
176
+ this.addSelectValueAsUnique(item.name, item.value);
177
+ }
178
+ if (clause.joins) {
179
+ for (const join of clause.joins) {
180
+ if (join.condition) {
181
+ join.condition.accept(this);
182
+ }
183
+ }
184
+ }
185
+ }
186
+ visitWhereClause(clause) {
187
+ if (clause.condition) {
188
+ clause.condition.accept(this);
189
+ }
190
+ }
191
+ visitGroupByClause(clause) {
192
+ if (clause.grouping) {
193
+ for (const item of clause.grouping) {
194
+ item.accept(this);
195
+ }
196
+ }
197
+ }
198
+ visitHavingClause(clause) {
199
+ if (clause.condition) {
200
+ clause.condition.accept(this);
201
+ }
202
+ }
203
+ visitOrderByClause(clause) {
204
+ if (clause.order) {
205
+ for (const item of clause.order) {
206
+ item.accept(this);
207
+ }
208
+ }
209
+ }
210
+ visitWindowFrameClause(clause) {
211
+ clause.expression.accept(this);
212
+ }
213
+ visitWindowFrameExpression(expr) {
214
+ if (expr.partition) {
215
+ expr.partition.accept(this);
216
+ }
217
+ if (expr.order) {
218
+ expr.order.accept(this);
219
+ }
220
+ if (expr.frameSpec) {
221
+ expr.frameSpec.accept(this);
222
+ }
223
+ }
224
+ visitLimitClause(clause) {
225
+ if (clause.limit) {
226
+ clause.limit.accept(this);
227
+ }
228
+ if (clause.offset) {
229
+ clause.offset.accept(this);
230
+ }
231
+ }
232
+ visitJoinOnClause(joinOnClause) {
233
+ // Visit the join condition
234
+ if (joinOnClause.condition) {
235
+ joinOnClause.condition.accept(this);
236
+ }
237
+ }
238
+ visitJoinUsingClause(joinUsingClause) {
239
+ // Visit the columns in the USING clause
240
+ if (joinUsingClause.condition) {
241
+ joinUsingClause.condition.accept(this);
242
+ }
243
+ }
244
+ // Value component handlers
245
+ visitColumnReference(columnRef) {
246
+ // Wildcards are ignored because they cannot be reused even if detected
247
+ if (columnRef.column.name !== "*") {
248
+ this.addSelectValueAsUnique(columnRef.column.name, columnRef);
249
+ }
250
+ }
251
+ visitBinaryExpression(expr) {
252
+ // Visit both sides of the expression
253
+ if (expr.left) {
254
+ expr.left.accept(this);
255
+ }
256
+ if (expr.right) {
257
+ expr.right.accept(this);
258
+ }
259
+ }
260
+ visitUnaryExpression(expr) {
261
+ if (expr.expression) {
262
+ expr.expression.accept(this);
263
+ }
264
+ }
265
+ visitFunctionCall(func) {
266
+ if (func.argument) {
267
+ func.argument.accept(this);
268
+ }
269
+ if (func.over) {
270
+ func.over.accept(this);
271
+ }
272
+ }
273
+ visitParenExpression(expr) {
274
+ if (expr.expression) {
275
+ expr.expression.accept(this);
276
+ }
277
+ }
278
+ visitCaseExpression(expr) {
279
+ if (expr.condition) {
280
+ expr.condition.accept(this);
281
+ }
282
+ if (expr.switchCase) {
283
+ expr.switchCase.accept(this);
284
+ }
285
+ }
286
+ visitCastExpression(expr) {
287
+ if (expr.input) {
288
+ expr.input.accept(this);
289
+ }
290
+ }
291
+ visitBetweenExpression(expr) {
292
+ if (expr.expression) {
293
+ expr.expression.accept(this);
294
+ }
295
+ if (expr.lower) {
296
+ expr.lower.accept(this);
297
+ }
298
+ if (expr.upper) {
299
+ expr.upper.accept(this);
300
+ }
301
+ }
302
+ visitArrayExpression(expr) {
303
+ if (expr.expression) {
304
+ expr.expression.accept(this);
305
+ }
306
+ }
307
+ visitValueList(expr) {
308
+ if (expr.values) {
309
+ for (const value of expr.values) {
310
+ value.accept(this);
311
+ }
312
+ }
313
+ }
314
+ visitPartitionByClause(clause) {
315
+ clause.value.accept(this);
316
+ }
317
+ }
318
+ //# sourceMappingURL=SelectableColumnCollector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SelectableColumnCollector.js","sourceRoot":"","sources":["../../../src/transformers/SelectableColumnCollector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=TableColumnResolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TableColumnResolver.js","sourceRoot":"","sources":["../../../src/transformers/TableColumnResolver.ts"],"names":[],"mappings":""}