rawsql-ts 0.1.0-beta.4 → 0.1.0-beta.6

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 (135) hide show
  1. package/README.md +143 -199
  2. package/dist/index.js +32 -0
  3. package/dist/index.js.map +1 -0
  4. package/dist/models/BinarySelectQuery.js +140 -0
  5. package/dist/models/BinarySelectQuery.js.map +1 -0
  6. package/dist/models/Clause.js +318 -0
  7. package/dist/models/Clause.js.map +1 -0
  8. package/dist/models/KeywordTrie.js +52 -0
  9. package/dist/models/KeywordTrie.js.map +1 -0
  10. package/dist/models/Lexeme.js +21 -0
  11. package/dist/models/Lexeme.js.map +1 -0
  12. package/dist/models/SelectQuery.js +10 -0
  13. package/dist/models/SelectQuery.js.map +1 -0
  14. package/dist/models/SimpleSelectQuery.js +290 -0
  15. package/dist/models/SimpleSelectQuery.js.map +1 -0
  16. package/dist/models/SqlComponent.js +27 -0
  17. package/dist/models/SqlComponent.js.map +1 -0
  18. package/dist/models/ValueComponent.js +250 -0
  19. package/dist/models/ValueComponent.js.map +1 -0
  20. package/dist/models/ValuesQuery.js +16 -0
  21. package/dist/models/ValuesQuery.js.map +1 -0
  22. package/dist/parsers/CommandExpressionParser.js +124 -0
  23. package/dist/parsers/CommandExpressionParser.js.map +1 -0
  24. package/dist/parsers/CommonTableParser.js +60 -0
  25. package/dist/parsers/CommonTableParser.js.map +1 -0
  26. package/dist/parsers/ForClauseParser.js +56 -0
  27. package/dist/parsers/ForClauseParser.js.map +1 -0
  28. package/dist/parsers/FromClauseParser.js +45 -0
  29. package/dist/parsers/FromClauseParser.js.map +1 -0
  30. package/dist/parsers/FunctionExpressionParser.js +178 -0
  31. package/dist/parsers/FunctionExpressionParser.js.map +1 -0
  32. package/dist/parsers/GroupByParser.js +56 -0
  33. package/dist/parsers/GroupByParser.js.map +1 -0
  34. package/dist/parsers/HavingParser.js +34 -0
  35. package/dist/parsers/HavingParser.js.map +1 -0
  36. package/dist/parsers/IdentifierParser.js +39 -0
  37. package/dist/parsers/IdentifierParser.js.map +1 -0
  38. package/dist/parsers/JoinClauseParser.js +105 -0
  39. package/dist/parsers/JoinClauseParser.js.map +1 -0
  40. package/dist/parsers/KeywordParser.js +91 -0
  41. package/dist/parsers/KeywordParser.js.map +1 -0
  42. package/dist/parsers/LimitClauseParser.js +48 -0
  43. package/dist/parsers/LimitClauseParser.js.map +1 -0
  44. package/dist/parsers/LiteralParser.js +38 -0
  45. package/dist/parsers/LiteralParser.js.map +1 -0
  46. package/dist/parsers/OrderByClauseParser.js +75 -0
  47. package/dist/parsers/OrderByClauseParser.js.map +1 -0
  48. package/dist/parsers/OverExpressionParser.js +44 -0
  49. package/dist/parsers/OverExpressionParser.js.map +1 -0
  50. package/dist/parsers/ParameterExpressionParser.js +15 -0
  51. package/dist/parsers/ParameterExpressionParser.js.map +1 -0
  52. package/dist/parsers/ParenExpressionParser.js +33 -0
  53. package/dist/parsers/ParenExpressionParser.js.map +1 -0
  54. package/dist/parsers/PartitionByParser.js +51 -0
  55. package/dist/parsers/PartitionByParser.js.map +1 -0
  56. package/dist/parsers/SelectClauseParser.js +82 -0
  57. package/dist/parsers/SelectClauseParser.js.map +1 -0
  58. package/dist/parsers/SelectQueryParser.js +151 -0
  59. package/dist/parsers/SelectQueryParser.js.map +1 -0
  60. package/dist/parsers/SourceAliasExpressionParser.js +48 -0
  61. package/dist/parsers/SourceAliasExpressionParser.js.map +1 -0
  62. package/dist/parsers/SourceExpressionParser.js +34 -0
  63. package/dist/parsers/SourceExpressionParser.js.map +1 -0
  64. package/dist/parsers/SourceParser.js +116 -0
  65. package/dist/parsers/SourceParser.js.map +1 -0
  66. package/dist/parsers/SqlTokenizer.js +174 -0
  67. package/dist/parsers/SqlTokenizer.js.map +1 -0
  68. package/dist/parsers/StringSpecifierExpressionParser.js +22 -0
  69. package/dist/parsers/StringSpecifierExpressionParser.js.map +1 -0
  70. package/dist/parsers/UnaryExpressionParser.js +30 -0
  71. package/dist/parsers/UnaryExpressionParser.js.map +1 -0
  72. package/dist/parsers/ValueParser.js +134 -0
  73. package/dist/parsers/ValueParser.js.map +1 -0
  74. package/dist/parsers/ValuesQueryParser.js +86 -0
  75. package/dist/parsers/ValuesQueryParser.js.map +1 -0
  76. package/dist/parsers/WhereClauseParser.js +34 -0
  77. package/dist/parsers/WhereClauseParser.js.map +1 -0
  78. package/dist/parsers/WindowClauseParser.js +43 -0
  79. package/dist/parsers/WindowClauseParser.js.map +1 -0
  80. package/dist/parsers/WindowExpressionParser.js +151 -0
  81. package/dist/parsers/WindowExpressionParser.js.map +1 -0
  82. package/dist/parsers/WithClauseParser.js +55 -0
  83. package/dist/parsers/WithClauseParser.js.map +1 -0
  84. package/dist/tokenReaders/BaseTokenReader.js +82 -0
  85. package/dist/tokenReaders/BaseTokenReader.js.map +1 -0
  86. package/dist/tokenReaders/CommandTokenReader.js +145 -0
  87. package/dist/tokenReaders/CommandTokenReader.js.map +1 -0
  88. package/dist/tokenReaders/FunctionTokenReader.js +45 -0
  89. package/dist/tokenReaders/FunctionTokenReader.js.map +1 -0
  90. package/dist/tokenReaders/IdentifierTokenReader.js +70 -0
  91. package/dist/tokenReaders/IdentifierTokenReader.js.map +1 -0
  92. package/dist/tokenReaders/LiteralTokenReader.js +189 -0
  93. package/dist/tokenReaders/LiteralTokenReader.js.map +1 -0
  94. package/dist/tokenReaders/OperatorTokenReader.js +98 -0
  95. package/dist/tokenReaders/OperatorTokenReader.js.map +1 -0
  96. package/dist/tokenReaders/ParameterTokenReader.js +44 -0
  97. package/dist/tokenReaders/ParameterTokenReader.js.map +1 -0
  98. package/dist/tokenReaders/StringSpecifierTokenReader.js +31 -0
  99. package/dist/tokenReaders/StringSpecifierTokenReader.js.map +1 -0
  100. package/dist/tokenReaders/SymbolTokenReader.js +35 -0
  101. package/dist/tokenReaders/SymbolTokenReader.js.map +1 -0
  102. package/dist/tokenReaders/TokenReaderManager.js +110 -0
  103. package/dist/tokenReaders/TokenReaderManager.js.map +1 -0
  104. package/dist/tokenReaders/TypeTokenReader.js +59 -0
  105. package/dist/tokenReaders/TypeTokenReader.js.map +1 -0
  106. package/dist/transformers/CTEBuilder.js +188 -0
  107. package/dist/transformers/CTEBuilder.js.map +1 -0
  108. package/dist/transformers/CTECollector.js +384 -0
  109. package/dist/transformers/CTECollector.js.map +1 -0
  110. package/dist/transformers/CTEDisabler.js +325 -0
  111. package/dist/transformers/CTEDisabler.js.map +1 -0
  112. package/dist/transformers/CTEInjector.js +83 -0
  113. package/dist/transformers/CTEInjector.js.map +1 -0
  114. package/dist/transformers/CTENormalizer.js +42 -0
  115. package/dist/transformers/CTENormalizer.js.map +1 -0
  116. package/dist/transformers/Formatter.js +452 -0
  117. package/dist/transformers/Formatter.js.map +1 -0
  118. package/dist/transformers/QueryNormalizer.js +114 -0
  119. package/dist/transformers/QueryNormalizer.js.map +1 -0
  120. package/dist/transformers/SelectValueCollector.js +249 -0
  121. package/dist/transformers/SelectValueCollector.js.map +1 -0
  122. package/dist/transformers/SelectableColumnCollector.js +308 -0
  123. package/dist/transformers/SelectableColumnCollector.js.map +1 -0
  124. package/dist/transformers/TableSourceCollector.js +384 -0
  125. package/dist/transformers/TableSourceCollector.js.map +1 -0
  126. package/dist/transformers/UpstreamSelectQueryFinder.js +129 -0
  127. package/dist/transformers/UpstreamSelectQueryFinder.js.map +1 -0
  128. package/dist/utils/charLookupTable.js +73 -0
  129. package/dist/utils/charLookupTable.js.map +1 -0
  130. package/dist/utils/stringUtils.js +168 -0
  131. package/dist/utils/stringUtils.js.map +1 -0
  132. package/package.json +3 -3
  133. package/dist/tsconfig.tsbuildinfo +0 -1
  134. package/dist/vitest.config.js +0 -15
  135. package/dist/vitest.config.js.map +0 -1
@@ -0,0 +1,384 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TableSourceCollector = 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 CTECollector_1 = require("./CTECollector");
8
+ /**
9
+ * A visitor that collects all table source names from a SQL query structure.
10
+ *
11
+ * When selectableOnly is true (default behavior):
12
+ * - Includes only table sources from FROM and JOIN clauses
13
+ * - Excludes inline queries, subqueries, and CTEs
14
+ *
15
+ * When selectableOnly is false:
16
+ * - Scans all parts of the query including WITH clauses, subqueries, etc.
17
+ * - Collects all table sources from the entire query
18
+ * - Excludes tables that are managed by CTEs
19
+ *
20
+ * For UNION-like queries, it scans both the left and right parts.
21
+ */
22
+ class TableSourceCollector {
23
+ constructor(selectableOnly = true) {
24
+ this.tableSources = [];
25
+ this.visitedNodes = new Set();
26
+ this.tableNameMap = new Map();
27
+ this.cteNames = new Set();
28
+ this.isRootVisit = true;
29
+ this.selectableOnly = selectableOnly;
30
+ this.handlers = new Map();
31
+ // Setup handlers for query components
32
+ this.handlers.set(SelectQuery_1.SimpleSelectQuery.kind, (expr) => this.visitSimpleSelectQuery(expr));
33
+ this.handlers.set(SelectQuery_1.BinarySelectQuery.kind, (expr) => this.visitBinarySelectQuery(expr));
34
+ this.handlers.set(SelectQuery_1.ValuesQuery.kind, (expr) => this.visitValuesQuery(expr));
35
+ // WITH clause and common tables
36
+ this.handlers.set(Clause_1.WithClause.kind, (expr) => this.visitWithClause(expr));
37
+ this.handlers.set(Clause_1.CommonTable.kind, (expr) => this.visitCommonTable(expr));
38
+ // Handlers for FROM and JOIN components
39
+ this.handlers.set(Clause_1.FromClause.kind, (expr) => this.visitFromClause(expr));
40
+ this.handlers.set(Clause_1.JoinClause.kind, (expr) => this.visitJoinClause(expr));
41
+ this.handlers.set(Clause_1.JoinOnClause.kind, (expr) => this.visitJoinOnClause(expr));
42
+ this.handlers.set(Clause_1.JoinUsingClause.kind, (expr) => this.visitJoinUsingClause(expr));
43
+ // Source components
44
+ this.handlers.set(Clause_1.SourceExpression.kind, (expr) => this.visitSourceExpression(expr));
45
+ this.handlers.set(Clause_1.TableSource.kind, (expr) => this.visitTableSource(expr));
46
+ this.handlers.set(Clause_1.ParenSource.kind, (expr) => this.visitParenSource(expr));
47
+ this.handlers.set(Clause_1.SubQuerySource.kind, (expr) => this.visitSubQuerySource(expr));
48
+ this.handlers.set(ValueComponent_1.InlineQuery.kind, (expr) => this.visitInlineQuery(expr));
49
+ // Only register these handlers when not in selectableOnly mode
50
+ if (!selectableOnly) {
51
+ // Additional clause handlers for full scanning
52
+ this.handlers.set(Clause_1.WhereClause.kind, (expr) => this.visitWhereClause(expr));
53
+ this.handlers.set(Clause_1.GroupByClause.kind, (expr) => this.visitGroupByClause(expr));
54
+ this.handlers.set(Clause_1.HavingClause.kind, (expr) => this.visitHavingClause(expr));
55
+ this.handlers.set(Clause_1.OrderByClause.kind, (expr) => this.visitOrderByClause(expr));
56
+ this.handlers.set(Clause_1.WindowFrameClause.kind, (expr) => this.visitWindowFrameClause(expr));
57
+ this.handlers.set(Clause_1.LimitClause.kind, (expr) => this.visitLimitClause(expr));
58
+ this.handlers.set(Clause_1.ForClause.kind, (expr) => this.visitForClause(expr));
59
+ this.handlers.set(Clause_1.OrderByItem.kind, (expr) => this.visitOrderByItem(expr));
60
+ this.handlers.set(Clause_1.SelectClause.kind, (expr) => this.visitSelectClause(expr));
61
+ this.handlers.set(Clause_1.SelectItem.kind, (expr) => this.visitSelectItem(expr));
62
+ // Value components that might contain table references
63
+ this.handlers.set(ValueComponent_1.ParenExpression.kind, (expr) => this.visitParenExpression(expr));
64
+ this.handlers.set(ValueComponent_1.BinaryExpression.kind, (expr) => this.visitBinaryExpression(expr));
65
+ this.handlers.set(ValueComponent_1.UnaryExpression.kind, (expr) => this.visitUnaryExpression(expr));
66
+ this.handlers.set(ValueComponent_1.CaseExpression.kind, (expr) => this.visitCaseExpression(expr));
67
+ this.handlers.set(ValueComponent_1.CaseKeyValuePair.kind, (expr) => this.visitCaseKeyValuePair(expr));
68
+ this.handlers.set(ValueComponent_1.SwitchCaseArgument.kind, (expr) => this.visitSwitchCaseArgument(expr));
69
+ this.handlers.set(ValueComponent_1.BetweenExpression.kind, (expr) => this.visitBetweenExpression(expr));
70
+ this.handlers.set(ValueComponent_1.FunctionCall.kind, (expr) => this.visitFunctionCall(expr));
71
+ this.handlers.set(ValueComponent_1.ArrayExpression.kind, (expr) => this.visitArrayExpression(expr));
72
+ this.handlers.set(ValueComponent_1.TupleExpression.kind, (expr) => this.visitTupleExpression(expr));
73
+ this.handlers.set(ValueComponent_1.CastExpression.kind, (expr) => this.visitCastExpression(expr));
74
+ }
75
+ }
76
+ /**
77
+ * Gets all collected table sources
78
+ */
79
+ getTableSources() {
80
+ return this.tableSources;
81
+ }
82
+ /**
83
+ * Reset the collection of table sources
84
+ */
85
+ reset() {
86
+ this.tableSources = [];
87
+ this.tableNameMap.clear();
88
+ this.visitedNodes.clear();
89
+ this.cteNames.clear();
90
+ }
91
+ /**
92
+ * Gets a unique identifier for a table source
93
+ */
94
+ getTableIdentifier(source) {
95
+ let identifier = source.table.name;
96
+ if (source.namespaces && source.namespaces.length > 0) {
97
+ identifier = source.namespaces.map(ns => ns.name).join('.') + '.' + identifier;
98
+ }
99
+ return identifier;
100
+ }
101
+ collect(query) {
102
+ // Visit the SQL component to collect table sources
103
+ this.visit(query);
104
+ return this.getTableSources();
105
+ }
106
+ /**
107
+ * Main entry point for the visitor pattern.
108
+ * Implements the shallow visit pattern to distinguish between root and recursive visits.
109
+ */
110
+ visit(arg) {
111
+ // If not a root visit, just visit the node and return
112
+ if (!this.isRootVisit) {
113
+ this.visitNode(arg);
114
+ return;
115
+ }
116
+ // If this is a root visit, we need to reset the state
117
+ this.reset();
118
+ this.isRootVisit = false;
119
+ try {
120
+ // When in full scan mode, collect CTEs first to exclude them from table sources
121
+ if (!this.selectableOnly) {
122
+ this.collectCTEs(arg);
123
+ }
124
+ this.visitNode(arg);
125
+ }
126
+ finally {
127
+ // Regardless of success or failure, reset the root visit flag
128
+ this.isRootVisit = true;
129
+ }
130
+ }
131
+ /**
132
+ * Internal visit method used for all nodes.
133
+ * This separates the visit flag management from the actual node visitation logic.
134
+ */
135
+ visitNode(arg) {
136
+ // Skip if we've already visited this node to prevent infinite recursion
137
+ if (this.visitedNodes.has(arg)) {
138
+ return;
139
+ }
140
+ // Mark as visited
141
+ this.visitedNodes.add(arg);
142
+ const handler = this.handlers.get(arg.getKind());
143
+ if (handler) {
144
+ handler(arg);
145
+ return;
146
+ }
147
+ // If no handler found, that's ok - we only care about specific components
148
+ }
149
+ /**
150
+ * Collects all CTE names to exclude them from real table sources
151
+ */
152
+ collectCTEs(query) {
153
+ // Use CommonTableCollector to get all CTEs
154
+ const cteCollector = new CTECollector_1.CTECollector();
155
+ cteCollector.visit(query);
156
+ const commonTables = cteCollector.getCommonTables();
157
+ // Add CTE names to the set
158
+ for (const cte of commonTables) {
159
+ this.cteNames.add(cte.aliasExpression.table.name);
160
+ }
161
+ }
162
+ visitSimpleSelectQuery(query) {
163
+ // Process the FROM and JOIN clauses
164
+ if (query.fromClause) {
165
+ query.fromClause.accept(this);
166
+ }
167
+ // If in full scan mode, visit all other clauses too
168
+ if (!this.selectableOnly) {
169
+ if (query.WithClause) {
170
+ query.WithClause.accept(this);
171
+ }
172
+ if (query.whereClause) {
173
+ query.whereClause.accept(this);
174
+ }
175
+ if (query.groupByClause) {
176
+ query.groupByClause.accept(this);
177
+ }
178
+ if (query.havingClause) {
179
+ query.havingClause.accept(this);
180
+ }
181
+ if (query.orderByClause) {
182
+ query.orderByClause.accept(this);
183
+ }
184
+ if (query.windowFrameClause) {
185
+ query.windowFrameClause.accept(this);
186
+ }
187
+ if (query.rowLimitClause) {
188
+ query.rowLimitClause.accept(this);
189
+ }
190
+ if (query.forClause) {
191
+ query.forClause.accept(this);
192
+ }
193
+ query.selectClause.accept(this);
194
+ }
195
+ }
196
+ visitBinarySelectQuery(query) {
197
+ // For UNION-like queries, visit both sides
198
+ query.left.accept(this);
199
+ query.right.accept(this);
200
+ }
201
+ visitValuesQuery(query) {
202
+ if (!this.selectableOnly) {
203
+ // VALUES queries might contain subqueries in tuple expressions
204
+ for (const tuple of query.tuples) {
205
+ tuple.accept(this);
206
+ }
207
+ }
208
+ }
209
+ visitWithClause(withClause) {
210
+ if (!this.selectableOnly) {
211
+ // Visit each CommonTable
212
+ for (const table of withClause.tables) {
213
+ table.accept(this);
214
+ }
215
+ }
216
+ }
217
+ visitCommonTable(commonTable) {
218
+ if (!this.selectableOnly) {
219
+ // Process the query within the common table
220
+ commonTable.query.accept(this);
221
+ }
222
+ }
223
+ visitFromClause(fromClause) {
224
+ // Check the main source in FROM clause
225
+ fromClause.source.accept(this);
226
+ // Check all JOIN clauses
227
+ if (fromClause.joins) {
228
+ for (const join of fromClause.joins) {
229
+ join.accept(this);
230
+ }
231
+ }
232
+ }
233
+ visitSourceExpression(source) {
234
+ // Process the actual data source, ignoring aliases
235
+ source.datasource.accept(this);
236
+ }
237
+ visitTableSource(source) {
238
+ // Get the table identifier for uniqueness check
239
+ const identifier = this.getTableIdentifier(source);
240
+ // Check if this is a table managed by a CTE
241
+ if (!this.tableNameMap.has(identifier) && !this.isCTETable(source.table.name)) {
242
+ this.tableNameMap.set(identifier, true);
243
+ this.tableSources.push(source);
244
+ }
245
+ }
246
+ /**
247
+ * Checks if a table name is a CTE name
248
+ */
249
+ isCTETable(tableName) {
250
+ return this.cteNames.has(tableName);
251
+ }
252
+ visitParenSource(source) {
253
+ // For parenthesized sources, visit the inner source
254
+ source.source.accept(this);
255
+ }
256
+ visitSubQuerySource(subQuery) {
257
+ if (!this.selectableOnly) {
258
+ // In full scan mode, we also check subqueries
259
+ subQuery.query.accept(this);
260
+ }
261
+ // In selectableOnly mode, we don't collect sources from subqueries
262
+ }
263
+ visitInlineQuery(inlineQuery) {
264
+ if (!this.selectableOnly) {
265
+ // In full scan mode, visit inline queries too
266
+ inlineQuery.selectQuery.accept(this);
267
+ }
268
+ }
269
+ visitJoinClause(joinClause) {
270
+ // Visit the source being joined
271
+ joinClause.source.accept(this);
272
+ // If full scanning, also visit the join condition
273
+ if (!this.selectableOnly && joinClause.condition) {
274
+ joinClause.condition.accept(this);
275
+ }
276
+ }
277
+ visitJoinOnClause(joinOn) {
278
+ if (!this.selectableOnly) {
279
+ // In full scan mode, check ON condition for table references
280
+ joinOn.condition.accept(this);
281
+ }
282
+ }
283
+ visitJoinUsingClause(joinUsing) {
284
+ if (!this.selectableOnly) {
285
+ // In full scan mode, check USING condition for table references
286
+ joinUsing.condition.accept(this);
287
+ }
288
+ }
289
+ // Additional visitor methods only used in full scan mode
290
+ visitWhereClause(whereClause) {
291
+ whereClause.condition.accept(this);
292
+ }
293
+ visitGroupByClause(clause) {
294
+ for (const item of clause.grouping) {
295
+ item.accept(this);
296
+ }
297
+ }
298
+ visitHavingClause(clause) {
299
+ clause.condition.accept(this);
300
+ }
301
+ visitOrderByClause(clause) {
302
+ for (const item of clause.order) {
303
+ item.accept(this);
304
+ }
305
+ }
306
+ visitWindowFrameClause(clause) {
307
+ clause.expression.accept(this);
308
+ }
309
+ visitLimitClause(clause) {
310
+ clause.limit.accept(this);
311
+ if (clause.offset) {
312
+ clause.offset.accept(this);
313
+ }
314
+ }
315
+ visitForClause(clause) {
316
+ // FOR clause doesn't contain table sources
317
+ }
318
+ visitOrderByItem(item) {
319
+ item.value.accept(this);
320
+ }
321
+ visitSelectClause(clause) {
322
+ for (const item of clause.items) {
323
+ item.accept(this);
324
+ }
325
+ }
326
+ visitSelectItem(item) {
327
+ item.value.accept(this);
328
+ }
329
+ visitParenExpression(expr) {
330
+ expr.expression.accept(this);
331
+ }
332
+ visitBinaryExpression(expr) {
333
+ expr.left.accept(this);
334
+ expr.right.accept(this);
335
+ }
336
+ visitUnaryExpression(expr) {
337
+ expr.expression.accept(this);
338
+ }
339
+ visitCaseExpression(expr) {
340
+ if (expr.condition) {
341
+ expr.condition.accept(this);
342
+ }
343
+ expr.switchCase.accept(this);
344
+ }
345
+ visitSwitchCaseArgument(switchCase) {
346
+ for (const caseItem of switchCase.cases) {
347
+ caseItem.accept(this);
348
+ }
349
+ if (switchCase.elseValue) {
350
+ switchCase.elseValue.accept(this);
351
+ }
352
+ }
353
+ visitCaseKeyValuePair(pair) {
354
+ pair.key.accept(this);
355
+ pair.value.accept(this);
356
+ }
357
+ visitBetweenExpression(expr) {
358
+ expr.expression.accept(this);
359
+ expr.lower.accept(this);
360
+ expr.upper.accept(this);
361
+ }
362
+ visitFunctionCall(func) {
363
+ if (func.argument) {
364
+ func.argument.accept(this);
365
+ }
366
+ if (func.over) {
367
+ func.over.accept(this);
368
+ }
369
+ }
370
+ visitArrayExpression(expr) {
371
+ expr.expression.accept(this);
372
+ }
373
+ visitTupleExpression(expr) {
374
+ for (const value of expr.values) {
375
+ value.accept(this);
376
+ }
377
+ }
378
+ visitCastExpression(expr) {
379
+ expr.input.accept(this);
380
+ expr.castType.accept(this);
381
+ }
382
+ }
383
+ exports.TableSourceCollector = TableSourceCollector;
384
+ //# sourceMappingURL=TableSourceCollector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TableSourceCollector.js","sourceRoot":"","sources":["../../src/transformers/TableSourceCollector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,129 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.UpstreamSelectQueryFinder = void 0;
4
+ const SelectQuery_1 = require("../models/SelectQuery");
5
+ const Clause_1 = require("../models/Clause");
6
+ const SelectableColumnCollector_1 = require("./SelectableColumnCollector");
7
+ const CTECollector_1 = require("./CTECollector");
8
+ /**
9
+ * UpstreamSelectQueryFinder searches upstream queries for the specified columns.
10
+ * If a query (including its upstream CTEs or subqueries) contains all columns,
11
+ * it returns the highest such SelectQuery. Otherwise, it searches downstream.
12
+ * For UNION queries, it checks each branch independently.
13
+ */
14
+ class UpstreamSelectQueryFinder {
15
+ constructor(tableColumnResolver) {
16
+ this.tableColumnResolver = tableColumnResolver;
17
+ this.columnCollector = new SelectableColumnCollector_1.SelectableColumnCollector(this.tableColumnResolver);
18
+ }
19
+ /**
20
+ * Finds the highest SelectQuery containing all specified columns.
21
+ * @param query The root SelectQuery to search.
22
+ * @param columnNames Array of column names to check for.
23
+ * @returns An array of SelectQuery objects, or an empty array if not found.
24
+ */
25
+ find(query, columnNames) {
26
+ // Use CTECollector to collect CTEs from the root query only once and reuse
27
+ const cteCollector = new CTECollector_1.CTECollector();
28
+ const ctes = cteCollector.collect(query);
29
+ const cteMap = new Map();
30
+ for (const cte of ctes) {
31
+ cteMap.set(cte.getAliasSourceName(), cte);
32
+ }
33
+ return this.findUpstream(query, columnNames, cteMap);
34
+ }
35
+ handleTableSource(src, columnNames, cteMap) {
36
+ // Handles the logic for TableSource in findUpstream
37
+ const cte = cteMap.get(src.table.name);
38
+ if (cte) {
39
+ // Remove the current CTE name from the map to prevent infinite recursion
40
+ const nextCteMap = new Map(cteMap);
41
+ nextCteMap.delete(src.table.name);
42
+ const result = this.findUpstream(cte.query, columnNames, nextCteMap);
43
+ if (result.length === 0) {
44
+ return null;
45
+ }
46
+ return result;
47
+ }
48
+ return null;
49
+ }
50
+ handleSubQuerySource(src, columnNames, cteMap) {
51
+ // Handles the logic for SubQuerySource in findUpstream
52
+ const result = this.findUpstream(src.query, columnNames, cteMap);
53
+ if (result.length === 0) {
54
+ return null;
55
+ }
56
+ return result;
57
+ }
58
+ /**
59
+ * Processes all source branches in a FROM clause and checks if all upstream queries contain the specified columns.
60
+ * Returns a flat array of SelectQuery if all branches are valid, otherwise null.
61
+ */
62
+ processFromClauseBranches(fromClause, columnNames, cteMap) {
63
+ const sources = fromClause.getSources();
64
+ if (sources.length === 0)
65
+ return null;
66
+ let allBranchResults = [];
67
+ let allBranchesOk = true;
68
+ let validBranchCount = 0; // Count only filterable branches
69
+ for (const sourceExpr of sources) {
70
+ const src = sourceExpr.datasource;
71
+ let branchResult = null;
72
+ if (src instanceof Clause_1.TableSource) {
73
+ branchResult = this.handleTableSource(src, columnNames, cteMap);
74
+ validBranchCount++;
75
+ }
76
+ else if (src instanceof Clause_1.SubQuerySource) {
77
+ branchResult = this.handleSubQuerySource(src, columnNames, cteMap);
78
+ validBranchCount++;
79
+ }
80
+ else if (src instanceof SelectQuery_1.ValuesQuery) {
81
+ // Skip ValuesQuery: not filterable, do not count as a valid branch
82
+ continue;
83
+ }
84
+ else {
85
+ allBranchesOk = false;
86
+ break;
87
+ }
88
+ // If the branch result is null,
89
+ // it means it didn't find the required columns in this branch
90
+ if (branchResult === null) {
91
+ allBranchesOk = false;
92
+ break;
93
+ }
94
+ allBranchResults.push(branchResult);
95
+ }
96
+ // Check if all valid (filterable) branches are valid and contain the required columns
97
+ if (allBranchesOk && allBranchResults.length === validBranchCount) {
98
+ return allBranchResults.flat();
99
+ }
100
+ return null;
101
+ }
102
+ findUpstream(query, columnNames, cteMap) {
103
+ if (query instanceof SelectQuery_1.SimpleSelectQuery) {
104
+ // Check upstream sources first: prioritize searching upstream branches for the required columns.
105
+ const fromClause = query.fromClause;
106
+ if (fromClause) {
107
+ const branchResult = this.processFromClauseBranches(fromClause, columnNames, cteMap);
108
+ if (branchResult) {
109
+ return branchResult;
110
+ }
111
+ }
112
+ // If not found in all upstream branches, check this query itself
113
+ const columns = this.columnCollector.collect(query).map(col => col.name);
114
+ const hasAll = columnNames.every(name => columns.includes(name));
115
+ if (hasAll) {
116
+ return [query];
117
+ }
118
+ return [];
119
+ }
120
+ else if (query instanceof SelectQuery_1.BinarySelectQuery) {
121
+ const left = this.findUpstream(query.left, columnNames, cteMap);
122
+ const right = this.findUpstream(query.right, columnNames, cteMap);
123
+ return [...left, ...right];
124
+ }
125
+ return [];
126
+ }
127
+ }
128
+ exports.UpstreamSelectQueryFinder = UpstreamSelectQueryFinder;
129
+ //# sourceMappingURL=UpstreamSelectQueryFinder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UpstreamSelectQueryFinder.js","sourceRoot":"","sources":["../../src/transformers/UpstreamSelectQueryFinder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CharLookupTable = void 0;
4
+ /**
5
+ * Fast character classification utilities for SQL tokenization
6
+ */
7
+ class CharLookupTable {
8
+ static isWhitespace(char) {
9
+ if (char.length !== 1)
10
+ return false;
11
+ const code = char.charCodeAt(0);
12
+ // Check for space(32), tab(9), line feed(10), carriage return(13)
13
+ return code === 32 || code === 9 || code === 10 || code === 13;
14
+ }
15
+ static isDigit(char) {
16
+ if (char.length !== 1)
17
+ return false;
18
+ const code = char.charCodeAt(0);
19
+ // Check if within '0'(48) to '9'(57) range
20
+ return code >= 48 && code <= 57;
21
+ }
22
+ static isHexChar(char) {
23
+ if (char.length !== 1)
24
+ return false;
25
+ const code = char.charCodeAt(0);
26
+ // Check if '0'(48) to '9'(57) or 'a'(97) to 'f'(102) or 'A'(65) to 'F'(70)
27
+ return (code >= 48 && code <= 57) ||
28
+ (code >= 97 && code <= 102) ||
29
+ (code >= 65 && code <= 70);
30
+ }
31
+ static isOperatorSymbol(char) {
32
+ if (char.length !== 1)
33
+ return false;
34
+ const code = char.charCodeAt(0);
35
+ // Check for specific operator character codes
36
+ // '+'=43, '-'=45, '*'=42, '/'=47, '%'=37, '~'=126, '@'=64, '#'=35, '^'=94,
37
+ // '&'=38, ':'=58, '!'=33, '<'=60, '>'=62, '='=61, '|'=124
38
+ return code === 43 || code === 45 || code === 42 || code === 47 ||
39
+ code === 37 || code === 126 || code === 64 || code === 35 ||
40
+ code === 94 || code === 38 || code === 58 || code === 33 ||
41
+ code === 60 || code === 62 || code === 61 || code === 124;
42
+ }
43
+ static isDelimiter(char) {
44
+ if (char.length !== 1)
45
+ return false;
46
+ const code = char.charCodeAt(0);
47
+ // First check delimiters: '.'=46, ','=44, '('=40, ')'=41, '['=91, ']'=93, '{'=123, '}'=125, ';'=59
48
+ if (code === 46 || code === 44 || code === 40 || code === 41 ||
49
+ code === 91 || code === 93 || code === 123 || code === 125 || code === 59) {
50
+ return true;
51
+ }
52
+ // Then check for whitespace: ' '=32, '\t'=9, '\n'=10, '\r'=13
53
+ if (code === 32 || code === 9 || code === 10 || code === 13) {
54
+ return true;
55
+ }
56
+ // Finally check for operator symbols
57
+ // '+'=43, '-'=45, '*'=42, '/'=47, '%'=37, '~'=126, '@'=64, '#'=35, '^'=94,
58
+ // '&'=38, ':'=58, '!'=33, '<'=60, '>'=62, '='=61, '|'=124
59
+ return code === 43 || code === 45 || code === 42 || code === 47 ||
60
+ code === 37 || code === 126 || code === 64 || code === 35 ||
61
+ code === 94 || code === 38 || code === 58 || code === 33 ||
62
+ code === 60 || code === 62 || code === 61 || code === 124;
63
+ }
64
+ static isNamedParameterPrefix(char) {
65
+ if (char.length !== 1)
66
+ return false;
67
+ const code = char.charCodeAt(0);
68
+ // Check for parameter prefix characters: '@'=64, ':'=58, '$'=36
69
+ return code === 64 || code === 58 || code === 36;
70
+ }
71
+ }
72
+ exports.CharLookupTable = CharLookupTable;
73
+ //# sourceMappingURL=charLookupTable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"charLookupTable.js","sourceRoot":"","sources":["../../src/utils/charLookupTable.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACH,MAAa,eAAe;IACjB,MAAM,CAAC,YAAY,CAAC,IAAY;QACnC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QACpC,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAChC,kEAAkE;QAClE,OAAO,IAAI,KAAK,EAAE,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,EAAE,IAAI,IAAI,KAAK,EAAE,CAAC;IACnE,CAAC;IAEM,MAAM,CAAC,OAAO,CAAC,IAAY;QAC9B,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QACpC,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAChC,2CAA2C;QAC3C,OAAO,IAAI,IAAI,EAAE,IAAI,IAAI,IAAI,EAAE,CAAC;IACpC,CAAC;IAEM,MAAM,CAAC,SAAS,CAAC,IAAY;QAChC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QACpC,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAChC,2EAA2E;QAC3E,OAAO,CAAC,IAAI,IAAI,EAAE,IAAI,IAAI,IAAI,EAAE,CAAC;YAC7B,CAAC,IAAI,IAAI,EAAE,IAAI,IAAI,IAAI,GAAG,CAAC;YAC3B,CAAC,IAAI,IAAI,EAAE,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC;IACnC,CAAC;IAEM,MAAM,CAAC,gBAAgB,CAAC,IAAY;QACvC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QACpC,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAEhC,8CAA8C;QAC9C,4EAA4E;QAC5E,0DAA0D;QAC1D,OAAO,IAAI,KAAK,EAAE,IAAI,IAAI,KAAK,EAAE,IAAI,IAAI,KAAK,EAAE,IAAI,IAAI,KAAK,EAAE;YAC3D,IAAI,KAAK,EAAE,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,EAAE,IAAI,IAAI,KAAK,EAAE;YACzD,IAAI,KAAK,EAAE,IAAI,IAAI,KAAK,EAAE,IAAI,IAAI,KAAK,EAAE,IAAI,IAAI,KAAK,EAAE;YACxD,IAAI,KAAK,EAAE,IAAI,IAAI,KAAK,EAAE,IAAI,IAAI,KAAK,EAAE,IAAI,IAAI,KAAK,GAAG,CAAC;IAClE,CAAC;IAEM,MAAM,CAAC,WAAW,CAAC,IAAY;QAClC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QACpC,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAEhC,mGAAmG;QACnG,IAAI,IAAI,KAAK,EAAE,IAAI,IAAI,KAAK,EAAE,IAAI,IAAI,KAAK,EAAE,IAAI,IAAI,KAAK,EAAE;YACxD,IAAI,KAAK,EAAE,IAAI,IAAI,KAAK,EAAE,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,EAAE,EAAE,CAAC;YAC5E,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,8DAA8D;QAC9D,IAAI,IAAI,KAAK,EAAE,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,EAAE,IAAI,IAAI,KAAK,EAAE,EAAE,CAAC;YAC1D,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,qCAAqC;QACrC,4EAA4E;QAC5E,0DAA0D;QAC1D,OAAO,IAAI,KAAK,EAAE,IAAI,IAAI,KAAK,EAAE,IAAI,IAAI,KAAK,EAAE,IAAI,IAAI,KAAK,EAAE;YAC3D,IAAI,KAAK,EAAE,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,EAAE,IAAI,IAAI,KAAK,EAAE;YACzD,IAAI,KAAK,EAAE,IAAI,IAAI,KAAK,EAAE,IAAI,IAAI,KAAK,EAAE,IAAI,IAAI,KAAK,EAAE;YACxD,IAAI,KAAK,EAAE,IAAI,IAAI,KAAK,EAAE,IAAI,IAAI,KAAK,EAAE,IAAI,IAAI,KAAK,GAAG,CAAC;IAClE,CAAC;IAEM,MAAM,CAAC,sBAAsB,CAAC,IAAY;QAC7C,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QACpC,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAEhC,gEAAgE;QAChE,OAAO,IAAI,KAAK,EAAE,IAAI,IAAI,KAAK,EAAE,IAAI,IAAI,KAAK,EAAE,CAAC;IACrD,CAAC;CACJ;AApED,0CAoEC"}