rawsql-ts 0.11.7-beta → 0.11.8-beta

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 (158) hide show
  1. package/README.md +82 -1
  2. package/dist/esm/index.js +1 -0
  3. package/dist/esm/index.js.map +1 -1
  4. package/dist/esm/index.min.js +23 -15
  5. package/dist/esm/index.min.js.map +4 -4
  6. package/dist/esm/src/index.d.ts +1 -0
  7. package/dist/esm/src/index.js +1 -0
  8. package/dist/esm/src/index.js.map +1 -1
  9. package/dist/esm/src/models/BinarySelectQuery.d.ts +2 -2
  10. package/dist/esm/src/models/BinarySelectQuery.js.map +1 -1
  11. package/dist/esm/src/models/SelectQuery.d.ts +2 -1
  12. package/dist/esm/src/models/SelectQuery.js.map +1 -1
  13. package/dist/esm/src/models/SimpleSelectQuery.d.ts +2 -2
  14. package/dist/esm/src/models/SimpleSelectQuery.js.map +1 -1
  15. package/dist/esm/src/models/ValueComponent.d.ts +19 -4
  16. package/dist/esm/src/models/ValueComponent.js +19 -1
  17. package/dist/esm/src/models/ValueComponent.js.map +1 -1
  18. package/dist/esm/src/models/ValuesQuery.d.ts +2 -1
  19. package/dist/esm/src/models/ValuesQuery.js.map +1 -1
  20. package/dist/esm/src/parsers/CommonTableParser.js +16 -0
  21. package/dist/esm/src/parsers/CommonTableParser.js.map +1 -1
  22. package/dist/esm/src/parsers/LiteralParser.js +15 -5
  23. package/dist/esm/src/parsers/LiteralParser.js.map +1 -1
  24. package/dist/esm/src/parsers/SqlPrintTokenParser.d.ts +2 -0
  25. package/dist/esm/src/parsers/SqlPrintTokenParser.js +42 -2
  26. package/dist/esm/src/parsers/SqlPrintTokenParser.js.map +1 -1
  27. package/dist/esm/src/parsers/ValueParser.d.ts +13 -0
  28. package/dist/esm/src/parsers/ValueParser.js +134 -1
  29. package/dist/esm/src/parsers/ValueParser.js.map +1 -1
  30. package/dist/esm/src/parsers/WithClauseParser.js +8 -2
  31. package/dist/esm/src/parsers/WithClauseParser.js.map +1 -1
  32. package/dist/esm/src/reporting/models/DataFlowEdge.d.ts +33 -0
  33. package/dist/esm/src/reporting/models/DataFlowEdge.js +53 -0
  34. package/dist/esm/src/reporting/models/DataFlowEdge.js.map +1 -0
  35. package/dist/esm/src/reporting/models/DataFlowGraph.d.ts +49 -0
  36. package/dist/esm/src/reporting/models/DataFlowGraph.js +156 -0
  37. package/dist/esm/src/reporting/models/DataFlowGraph.js.map +1 -0
  38. package/dist/esm/src/reporting/models/DataFlowNode.d.ts +64 -0
  39. package/dist/esm/src/reporting/models/DataFlowNode.js +109 -0
  40. package/dist/esm/src/reporting/models/DataFlowNode.js.map +1 -0
  41. package/dist/esm/src/reporting/services/CTEHandler.d.ts +13 -0
  42. package/dist/esm/src/reporting/services/CTEHandler.js +27 -0
  43. package/dist/esm/src/reporting/services/CTEHandler.js.map +1 -0
  44. package/dist/esm/src/reporting/services/DataSourceHandler.d.ts +25 -0
  45. package/dist/esm/src/reporting/services/DataSourceHandler.js +91 -0
  46. package/dist/esm/src/reporting/services/DataSourceHandler.js.map +1 -0
  47. package/dist/esm/src/reporting/services/JoinHandler.d.ts +32 -0
  48. package/dist/esm/src/reporting/services/JoinHandler.js +80 -0
  49. package/dist/esm/src/reporting/services/JoinHandler.js.map +1 -0
  50. package/dist/esm/src/reporting/services/ProcessHandler.d.ts +55 -0
  51. package/dist/esm/src/reporting/services/ProcessHandler.js +177 -0
  52. package/dist/esm/src/reporting/services/ProcessHandler.js.map +1 -0
  53. package/dist/esm/src/tokenReaders/EscapedIdentifierTokenReader.d.ts +5 -0
  54. package/dist/esm/src/tokenReaders/EscapedIdentifierTokenReader.js +37 -1
  55. package/dist/esm/src/tokenReaders/EscapedIdentifierTokenReader.js.map +1 -1
  56. package/dist/esm/src/tokenReaders/LiteralTokenReader.d.ts +16 -0
  57. package/dist/esm/src/tokenReaders/LiteralTokenReader.js +119 -0
  58. package/dist/esm/src/tokenReaders/LiteralTokenReader.js.map +1 -1
  59. package/dist/esm/src/tokenReaders/OperatorTokenReader.js +4 -0
  60. package/dist/esm/src/tokenReaders/OperatorTokenReader.js.map +1 -1
  61. package/dist/esm/src/tokenReaders/ParameterTokenReader.d.ts +14 -0
  62. package/dist/esm/src/tokenReaders/ParameterTokenReader.js +126 -0
  63. package/dist/esm/src/tokenReaders/ParameterTokenReader.js.map +1 -1
  64. package/dist/esm/src/transformers/DynamicQueryBuilder.d.ts +28 -2
  65. package/dist/esm/src/transformers/DynamicQueryBuilder.js.map +1 -1
  66. package/dist/esm/src/transformers/QueryFlowDiagramGenerator.d.ts +37 -0
  67. package/dist/esm/src/transformers/QueryFlowDiagramGenerator.js +140 -0
  68. package/dist/esm/src/transformers/QueryFlowDiagramGenerator.js.map +1 -0
  69. package/dist/esm/src/transformers/SqlParamInjector.d.ts +11 -0
  70. package/dist/esm/src/transformers/SqlParamInjector.js.map +1 -1
  71. package/dist/esm/src/transformers/TypeTransformationPostProcessor.d.ts +5 -5
  72. package/dist/esm/src/transformers/TypeTransformationPostProcessor.js +20 -8
  73. package/dist/esm/src/transformers/TypeTransformationPostProcessor.js.map +1 -1
  74. package/dist/esm/src/utils/OperatorPrecedence.js +23 -1
  75. package/dist/esm/src/utils/OperatorPrecedence.js.map +1 -1
  76. package/dist/esm/src/utils/charLookupTable.js +4 -4
  77. package/dist/esm/src/utils/charLookupTable.js.map +1 -1
  78. package/dist/esm/src/utils/stringUtils.js +17 -1
  79. package/dist/esm/src/utils/stringUtils.js.map +1 -1
  80. package/dist/esm/tsconfig.browser.tsbuildinfo +1 -1
  81. package/dist/index.min.js +23 -15
  82. package/dist/index.min.js.map +4 -4
  83. package/dist/src/index.d.ts +1 -0
  84. package/dist/src/index.js +1 -0
  85. package/dist/src/index.js.map +1 -1
  86. package/dist/src/models/BinarySelectQuery.d.ts +2 -2
  87. package/dist/src/models/BinarySelectQuery.js.map +1 -1
  88. package/dist/src/models/SelectQuery.d.ts +2 -1
  89. package/dist/src/models/SelectQuery.js.map +1 -1
  90. package/dist/src/models/SimpleSelectQuery.d.ts +2 -2
  91. package/dist/src/models/SimpleSelectQuery.js.map +1 -1
  92. package/dist/src/models/ValueComponent.d.ts +19 -4
  93. package/dist/src/models/ValueComponent.js +22 -2
  94. package/dist/src/models/ValueComponent.js.map +1 -1
  95. package/dist/src/models/ValuesQuery.d.ts +2 -1
  96. package/dist/src/models/ValuesQuery.js.map +1 -1
  97. package/dist/src/parsers/CommonTableParser.js +16 -0
  98. package/dist/src/parsers/CommonTableParser.js.map +1 -1
  99. package/dist/src/parsers/LiteralParser.js +15 -5
  100. package/dist/src/parsers/LiteralParser.js.map +1 -1
  101. package/dist/src/parsers/SqlPrintTokenParser.d.ts +2 -0
  102. package/dist/src/parsers/SqlPrintTokenParser.js +41 -1
  103. package/dist/src/parsers/SqlPrintTokenParser.js.map +1 -1
  104. package/dist/src/parsers/ValueParser.d.ts +13 -0
  105. package/dist/src/parsers/ValueParser.js +133 -0
  106. package/dist/src/parsers/ValueParser.js.map +1 -1
  107. package/dist/src/parsers/WithClauseParser.js +8 -2
  108. package/dist/src/parsers/WithClauseParser.js.map +1 -1
  109. package/dist/src/reporting/models/DataFlowEdge.d.ts +33 -0
  110. package/dist/src/reporting/models/DataFlowEdge.js +58 -0
  111. package/dist/src/reporting/models/DataFlowEdge.js.map +1 -0
  112. package/dist/src/reporting/models/DataFlowGraph.d.ts +49 -0
  113. package/dist/src/reporting/models/DataFlowGraph.js +160 -0
  114. package/dist/src/reporting/models/DataFlowGraph.js.map +1 -0
  115. package/dist/src/reporting/models/DataFlowNode.d.ts +64 -0
  116. package/dist/src/reporting/models/DataFlowNode.js +117 -0
  117. package/dist/src/reporting/models/DataFlowNode.js.map +1 -0
  118. package/dist/src/reporting/services/CTEHandler.d.ts +13 -0
  119. package/dist/src/reporting/services/CTEHandler.js +31 -0
  120. package/dist/src/reporting/services/CTEHandler.js.map +1 -0
  121. package/dist/src/reporting/services/DataSourceHandler.d.ts +25 -0
  122. package/dist/src/reporting/services/DataSourceHandler.js +95 -0
  123. package/dist/src/reporting/services/DataSourceHandler.js.map +1 -0
  124. package/dist/src/reporting/services/JoinHandler.d.ts +32 -0
  125. package/dist/src/reporting/services/JoinHandler.js +84 -0
  126. package/dist/src/reporting/services/JoinHandler.js.map +1 -0
  127. package/dist/src/reporting/services/ProcessHandler.d.ts +55 -0
  128. package/dist/src/reporting/services/ProcessHandler.js +181 -0
  129. package/dist/src/reporting/services/ProcessHandler.js.map +1 -0
  130. package/dist/src/tokenReaders/EscapedIdentifierTokenReader.d.ts +5 -0
  131. package/dist/src/tokenReaders/EscapedIdentifierTokenReader.js +37 -1
  132. package/dist/src/tokenReaders/EscapedIdentifierTokenReader.js.map +1 -1
  133. package/dist/src/tokenReaders/LiteralTokenReader.d.ts +16 -0
  134. package/dist/src/tokenReaders/LiteralTokenReader.js +119 -0
  135. package/dist/src/tokenReaders/LiteralTokenReader.js.map +1 -1
  136. package/dist/src/tokenReaders/OperatorTokenReader.js +4 -0
  137. package/dist/src/tokenReaders/OperatorTokenReader.js.map +1 -1
  138. package/dist/src/tokenReaders/ParameterTokenReader.d.ts +14 -0
  139. package/dist/src/tokenReaders/ParameterTokenReader.js +126 -0
  140. package/dist/src/tokenReaders/ParameterTokenReader.js.map +1 -1
  141. package/dist/src/transformers/DynamicQueryBuilder.d.ts +28 -2
  142. package/dist/src/transformers/DynamicQueryBuilder.js.map +1 -1
  143. package/dist/src/transformers/QueryFlowDiagramGenerator.d.ts +37 -0
  144. package/dist/src/transformers/QueryFlowDiagramGenerator.js +144 -0
  145. package/dist/src/transformers/QueryFlowDiagramGenerator.js.map +1 -0
  146. package/dist/src/transformers/SqlParamInjector.d.ts +11 -0
  147. package/dist/src/transformers/SqlParamInjector.js.map +1 -1
  148. package/dist/src/transformers/TypeTransformationPostProcessor.d.ts +5 -5
  149. package/dist/src/transformers/TypeTransformationPostProcessor.js +20 -8
  150. package/dist/src/transformers/TypeTransformationPostProcessor.js.map +1 -1
  151. package/dist/src/utils/OperatorPrecedence.js +23 -1
  152. package/dist/src/utils/OperatorPrecedence.js.map +1 -1
  153. package/dist/src/utils/charLookupTable.js +4 -4
  154. package/dist/src/utils/charLookupTable.js.map +1 -1
  155. package/dist/src/utils/stringUtils.js +17 -1
  156. package/dist/src/utils/stringUtils.js.map +1 -1
  157. package/dist/tsconfig.tsbuildinfo +1 -1
  158. package/package.json +1 -1
@@ -0,0 +1,80 @@
1
+ /**
2
+ * Handles the processing of JOIN operations
3
+ */
4
+ export class JoinHandler {
5
+ constructor(graph, dataSourceHandler) {
6
+ this.graph = graph;
7
+ this.dataSourceHandler = dataSourceHandler;
8
+ this.joinIdCounter = 0;
9
+ }
10
+ /**
11
+ * Resets the join ID counter for deterministic IDs
12
+ */
13
+ resetJoinCounter() {
14
+ this.joinIdCounter = 0;
15
+ }
16
+ /**
17
+ * Gets the next join ID
18
+ */
19
+ getNextJoinId() {
20
+ return String(++this.joinIdCounter);
21
+ }
22
+ /**
23
+ * Processes a FROM clause with JOINs and returns the final node ID
24
+ */
25
+ processFromClause(fromClause, cteNames, queryProcessor) {
26
+ // Process main source
27
+ const mainSourceId = this.dataSourceHandler.processSource(fromClause.source, cteNames, queryProcessor);
28
+ // Process JOINs if they exist
29
+ if (fromClause.joins && fromClause.joins.length > 0) {
30
+ return this.processJoins(fromClause.joins, mainSourceId, cteNames, queryProcessor);
31
+ }
32
+ return mainSourceId;
33
+ }
34
+ /**
35
+ * Processes a series of JOINs sequentially
36
+ */
37
+ processJoins(joins, currentNodeId, cteNames, queryProcessor) {
38
+ let resultNodeId = currentNodeId;
39
+ for (const join of joins) {
40
+ const joinNodeId = this.dataSourceHandler.processSource(join.source, cteNames, queryProcessor);
41
+ // Create join operation node
42
+ const joinOpId = this.getNextJoinId();
43
+ const joinNode = this.graph.createJoinNode(joinOpId, join.joinType.value);
44
+ // Get nullability labels for the JOIN
45
+ const { leftLabel, rightLabel } = this.getJoinNullabilityLabels(join.joinType.value);
46
+ // Connect current source and join source to join operation with nullability labels
47
+ if (resultNodeId && !this.graph.hasConnection(resultNodeId, joinNode.id)) {
48
+ this.graph.addConnection(resultNodeId, joinNode.id, leftLabel);
49
+ }
50
+ if (joinNodeId && !this.graph.hasConnection(joinNodeId, joinNode.id)) {
51
+ this.graph.addConnection(joinNodeId, joinNode.id, rightLabel);
52
+ }
53
+ resultNodeId = joinNode.id;
54
+ }
55
+ return resultNodeId;
56
+ }
57
+ /**
58
+ * Gets nullability labels for JOIN edges based on JOIN type
59
+ */
60
+ getJoinNullabilityLabels(joinType) {
61
+ switch (joinType.toLowerCase()) {
62
+ case 'left join':
63
+ return { leftLabel: 'NOT NULL', rightLabel: 'NULLABLE' };
64
+ case 'right join':
65
+ return { leftLabel: 'NULLABLE', rightLabel: 'NOT NULL' };
66
+ case 'inner join':
67
+ case 'join':
68
+ return { leftLabel: 'NOT NULL', rightLabel: 'NOT NULL' };
69
+ case 'full join':
70
+ case 'full outer join':
71
+ return { leftLabel: 'NULLABLE', rightLabel: 'NULLABLE' };
72
+ case 'cross join':
73
+ return { leftLabel: 'NOT NULL', rightLabel: 'NOT NULL' };
74
+ default:
75
+ // Default to no nullability info for unknown join types
76
+ return { leftLabel: '', rightLabel: '' };
77
+ }
78
+ }
79
+ }
80
+ //# sourceMappingURL=JoinHandler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JoinHandler.js","sourceRoot":"","sources":["../../../../../src/reporting/services/JoinHandler.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,MAAM,OAAO,WAAW;IAGpB,YACY,KAAoB,EACpB,iBAAoC;QADpC,UAAK,GAAL,KAAK,CAAe;QACpB,sBAAiB,GAAjB,iBAAiB,CAAmB;QAJxC,kBAAa,GAAG,CAAC,CAAC;IAKvB,CAAC;IAEJ;;OAEG;IACH,gBAAgB;QACZ,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;IAC3B,CAAC;IAED;;OAEG;IACK,aAAa;QACjB,OAAO,MAAM,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;IACxC,CAAC;IAED;;OAEG;IACH,iBAAiB,CACb,UAAsB,EACtB,QAAqB,EACrB,cAA8E;QAE9E,sBAAsB;QACtB,MAAM,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC,aAAa,CACrD,UAAU,CAAC,MAAM,EACjB,QAAQ,EACR,cAAc,CACjB,CAAC;QAEF,8BAA8B;QAC9B,IAAI,UAAU,CAAC,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClD,OAAO,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;QACvF,CAAC;QAED,OAAO,YAAY,CAAC;IACxB,CAAC;IAED;;OAEG;IACK,YAAY,CAChB,KAAmB,EACnB,aAAqB,EACrB,QAAqB,EACrB,cAA8E;QAE9E,IAAI,YAAY,GAAG,aAAa,CAAC;QAEjC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACvB,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,aAAa,CACnD,IAAI,CAAC,MAAM,EACX,QAAQ,EACR,cAAc,CACjB,CAAC;YAEF,6BAA6B;YAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;YACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAE1E,sCAAsC;YACtC,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAErF,mFAAmF;YACnF,IAAI,YAAY,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,YAAY,EAAE,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;gBACvE,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,YAAY,EAAE,QAAQ,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;YACnE,CAAC;YACD,IAAI,UAAU,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,UAAU,EAAE,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;gBACnE,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,UAAU,EAAE,QAAQ,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;YAClE,CAAC;YAED,YAAY,GAAG,QAAQ,CAAC,EAAE,CAAC;QAC/B,CAAC;QAED,OAAO,YAAY,CAAC;IACxB,CAAC;IAED;;OAEG;IACK,wBAAwB,CAAC,QAAgB;QAC7C,QAAQ,QAAQ,CAAC,WAAW,EAAE,EAAE,CAAC;YAC7B,KAAK,WAAW;gBACZ,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC;YAC7D,KAAK,YAAY;gBACb,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC;YAC7D,KAAK,YAAY,CAAC;YAClB,KAAK,MAAM;gBACP,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC;YAC7D,KAAK,WAAW,CAAC;YACjB,KAAK,iBAAiB;gBAClB,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC;YAC7D,KAAK,YAAY;gBACb,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC;YAC7D;gBACI,wDAAwD;gBACxD,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;QACjD,CAAC;IACL,CAAC;CACJ"}
@@ -0,0 +1,55 @@
1
+ import { SimpleSelectQuery } from '../../models/SimpleSelectQuery';
2
+ import { DataFlowGraph } from '../models/DataFlowGraph';
3
+ import { DataSourceHandler } from './DataSourceHandler';
4
+ /**
5
+ * Handles the processing of SQL clauses (WHERE, GROUP BY, HAVING, etc.)
6
+ */
7
+ export declare class ProcessHandler {
8
+ private graph;
9
+ private dataSourceHandler;
10
+ constructor(graph: DataFlowGraph, dataSourceHandler: DataSourceHandler);
11
+ /**
12
+ * Processes SQL clauses in the correct execution order
13
+ */
14
+ processQueryClauses(query: SimpleSelectQuery, context: string, currentNodeId: string, cteNames: Set<string>, queryProcessor: (query: any, context: string, cteNames: Set<string>) => string): string;
15
+ /**
16
+ * Processes WHERE clause including subqueries
17
+ */
18
+ private processWhereClause;
19
+ /**
20
+ * Processes GROUP BY clause
21
+ */
22
+ private processGroupByClause;
23
+ /**
24
+ * Processes HAVING clause
25
+ */
26
+ private processHavingClause;
27
+ /**
28
+ * Processes SELECT clause
29
+ */
30
+ private processSelectClause;
31
+ /**
32
+ * Processes ORDER BY clause
33
+ */
34
+ private processOrderByClause;
35
+ /**
36
+ * Processes LIMIT/OFFSET clause
37
+ */
38
+ private processLimitClause;
39
+ /**
40
+ * Determines if a SELECT node should be added
41
+ */
42
+ private shouldAddSelectNode;
43
+ /**
44
+ * Processes WHERE clause to find subqueries (EXISTS, IN, etc.)
45
+ */
46
+ private processWhereSubqueries;
47
+ /**
48
+ * Recursively processes ValueComponent to find InlineQuery (subqueries)
49
+ */
50
+ private processValueComponent;
51
+ /**
52
+ * Processes only the tables from a query for EXISTS/NOT EXISTS conditions
53
+ */
54
+ private processQueryTablesOnly;
55
+ }
@@ -0,0 +1,177 @@
1
+ import { InlineQuery, FunctionCall, UnaryExpression, BinaryExpression } from '../../models/ValueComponent';
2
+ /**
3
+ * Handles the processing of SQL clauses (WHERE, GROUP BY, HAVING, etc.)
4
+ */
5
+ export class ProcessHandler {
6
+ constructor(graph, dataSourceHandler) {
7
+ this.graph = graph;
8
+ this.dataSourceHandler = dataSourceHandler;
9
+ }
10
+ /**
11
+ * Processes SQL clauses in the correct execution order
12
+ */
13
+ processQueryClauses(query, context, currentNodeId, cteNames, queryProcessor) {
14
+ let resultNodeId = currentNodeId;
15
+ // 2. Process WHERE clause
16
+ if (query.whereClause && resultNodeId) {
17
+ resultNodeId = this.processWhereClause(query.whereClause, context, resultNodeId, cteNames, queryProcessor);
18
+ }
19
+ // 3. Process GROUP BY clause
20
+ if (query.groupByClause && resultNodeId) {
21
+ resultNodeId = this.processGroupByClause(context, resultNodeId);
22
+ }
23
+ // 4. Process HAVING clause
24
+ if (query.havingClause && resultNodeId) {
25
+ resultNodeId = this.processHavingClause(context, resultNodeId);
26
+ }
27
+ // 5. Process SELECT clause - only add if needed
28
+ if (this.shouldAddSelectNode(query, context)) {
29
+ resultNodeId = this.processSelectClause(context, resultNodeId);
30
+ }
31
+ // 6. Process ORDER BY clause
32
+ if (query.orderByClause && resultNodeId) {
33
+ resultNodeId = this.processOrderByClause(context, resultNodeId);
34
+ }
35
+ // 7. Process LIMIT/OFFSET clause
36
+ if ((query.limitClause || query.offsetClause) && resultNodeId) {
37
+ resultNodeId = this.processLimitClause(context, resultNodeId, !!query.offsetClause);
38
+ }
39
+ return resultNodeId;
40
+ }
41
+ /**
42
+ * Processes WHERE clause including subqueries
43
+ */
44
+ processWhereClause(whereClause, context, currentNodeId, cteNames, queryProcessor) {
45
+ const whereNode = this.graph.createProcessNode('where', context);
46
+ // Connect FROM result to WHERE
47
+ this.graph.addConnection(currentNodeId, whereNode.id);
48
+ // Process WHERE subqueries
49
+ const whereSubqueryInfo = this.processWhereSubqueries(whereClause, context, cteNames, queryProcessor);
50
+ // Connect WHERE subqueries to WHERE node
51
+ for (const subqueryInfo of whereSubqueryInfo) {
52
+ this.graph.addConnection(subqueryInfo.nodeId, whereNode.id, subqueryInfo.operator);
53
+ }
54
+ return whereNode.id;
55
+ }
56
+ /**
57
+ * Processes GROUP BY clause
58
+ */
59
+ processGroupByClause(context, currentNodeId) {
60
+ const groupByNode = this.graph.createProcessNode('group by', context);
61
+ this.graph.addConnection(currentNodeId, groupByNode.id);
62
+ return groupByNode.id;
63
+ }
64
+ /**
65
+ * Processes HAVING clause
66
+ */
67
+ processHavingClause(context, currentNodeId) {
68
+ const havingNode = this.graph.createProcessNode('having', context);
69
+ this.graph.addConnection(currentNodeId, havingNode.id);
70
+ return havingNode.id;
71
+ }
72
+ /**
73
+ * Processes SELECT clause
74
+ */
75
+ processSelectClause(context, currentNodeId) {
76
+ const selectNode = this.graph.createProcessNode('select', context);
77
+ this.graph.addConnection(currentNodeId, selectNode.id);
78
+ return selectNode.id;
79
+ }
80
+ /**
81
+ * Processes ORDER BY clause
82
+ */
83
+ processOrderByClause(context, currentNodeId) {
84
+ const orderByNode = this.graph.createProcessNode('order by', context);
85
+ this.graph.addConnection(currentNodeId, orderByNode.id);
86
+ return orderByNode.id;
87
+ }
88
+ /**
89
+ * Processes LIMIT/OFFSET clause
90
+ */
91
+ processLimitClause(context, currentNodeId, hasOffset) {
92
+ const limitNode = this.graph.createProcessNode(hasOffset ? 'limit/offset' : 'limit', context);
93
+ this.graph.addConnection(currentNodeId, limitNode.id);
94
+ return limitNode.id;
95
+ }
96
+ /**
97
+ * Determines if a SELECT node should be added
98
+ */
99
+ shouldAddSelectNode(query, context) {
100
+ // Always add SELECT node - UNION combines SELECT results, not raw data sources
101
+ return true;
102
+ }
103
+ /**
104
+ * Processes WHERE clause to find subqueries (EXISTS, IN, etc.)
105
+ */
106
+ processWhereSubqueries(whereClause, context, cteNames, queryProcessor) {
107
+ const subqueryInfo = [];
108
+ this.processValueComponent(whereClause.condition, context, cteNames, queryProcessor, subqueryInfo);
109
+ return subqueryInfo;
110
+ }
111
+ /**
112
+ * Recursively processes ValueComponent to find InlineQuery (subqueries)
113
+ */
114
+ processValueComponent(value, context, cteNames, queryProcessor, subqueryInfo) {
115
+ if (value instanceof InlineQuery) {
116
+ const subqueryNodeId = queryProcessor(value.selectQuery, `${context}_where_subquery`, cteNames);
117
+ subqueryInfo.push({ nodeId: subqueryNodeId, operator: 'SUBQUERY' });
118
+ }
119
+ else if (value instanceof FunctionCall) {
120
+ const functionName = value.qualifiedName.name.toString().toLowerCase();
121
+ if (functionName === 'exists' && value.argument instanceof InlineQuery) {
122
+ const subqueryNodeId = queryProcessor(value.argument.selectQuery, `${context}_where_subquery`, cteNames);
123
+ subqueryInfo.push({ nodeId: subqueryNodeId, operator: 'EXISTS' });
124
+ }
125
+ else if (value.argument) {
126
+ this.processValueComponent(value.argument, context, cteNames, queryProcessor, subqueryInfo);
127
+ }
128
+ }
129
+ else if (value instanceof UnaryExpression) {
130
+ const operator = value.operator.value.toLowerCase();
131
+ if ((operator === 'exists' || operator === 'not exists') && value.expression instanceof InlineQuery) {
132
+ this.processQueryTablesOnly(value.expression.selectQuery, context, cteNames, subqueryInfo, operator.toUpperCase());
133
+ }
134
+ else {
135
+ this.processValueComponent(value.expression, context, cteNames, queryProcessor, subqueryInfo);
136
+ }
137
+ }
138
+ else if (value instanceof BinaryExpression) {
139
+ const operator = value.operator.value.toLowerCase();
140
+ if ((operator === 'in' || operator === 'not in') && value.right instanceof InlineQuery) {
141
+ this.processQueryTablesOnly(value.right.selectQuery, context, cteNames, subqueryInfo, operator.toUpperCase());
142
+ }
143
+ else {
144
+ this.processValueComponent(value.left, context, cteNames, queryProcessor, subqueryInfo);
145
+ this.processValueComponent(value.right, context, cteNames, queryProcessor, subqueryInfo);
146
+ }
147
+ }
148
+ else if (value && typeof value === 'object') {
149
+ for (const [key, val] of Object.entries(value)) {
150
+ if (val && typeof val === 'object') {
151
+ if (Array.isArray(val)) {
152
+ val.forEach(item => {
153
+ if (item && typeof item === 'object' && 'selectQuery' in item) {
154
+ this.processValueComponent(item, context, cteNames, queryProcessor, subqueryInfo);
155
+ }
156
+ });
157
+ }
158
+ else if ('selectQuery' in val) {
159
+ this.processValueComponent(val, context, cteNames, queryProcessor, subqueryInfo);
160
+ }
161
+ }
162
+ }
163
+ }
164
+ }
165
+ /**
166
+ * Processes only the tables from a query for EXISTS/NOT EXISTS conditions
167
+ */
168
+ processQueryTablesOnly(query, context, cteNames, subqueryInfo, operator) {
169
+ if (query.fromClause) {
170
+ const tableNodes = this.dataSourceHandler.extractTableNodeIds(query.fromClause, cteNames);
171
+ for (const tableNodeId of tableNodes) {
172
+ subqueryInfo.push({ nodeId: tableNodeId, operator });
173
+ }
174
+ }
175
+ }
176
+ }
177
+ //# sourceMappingURL=ProcessHandler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProcessHandler.js","sourceRoot":"","sources":["../../../../../src/reporting/services/ProcessHandler.ts"],"names":[],"mappings":"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"}
@@ -8,6 +8,11 @@ export declare class EscapedIdentifierTokenReader extends BaseTokenReader {
8
8
  * Try to read an identifier token
9
9
  */
10
10
  tryRead(previous: Lexeme | null): Lexeme | null;
11
+ /**
12
+ * Check if the bracket at current position represents a SQL Server bracket identifier
13
+ * vs array access notation
14
+ */
15
+ private isSqlServerBracketIdentifier;
11
16
  /**
12
17
  * Read an escaped identifier (surrounded by delimiters)
13
18
  */
@@ -23,12 +23,48 @@ export class EscapedIdentifierTokenReader extends BaseTokenReader {
23
23
  return this.createLexeme(TokenType.Identifier, identifier);
24
24
  }
25
25
  // SQLServer escaped identifier (escape character is square bracket)
26
- if (char === '[' && (previous === null || previous.value !== "array")) {
26
+ if (char === '[' && this.isSqlServerBracketIdentifier(previous)) {
27
27
  const identifier = this.readEscapedIdentifier(']');
28
28
  return this.createLexeme(TokenType.Identifier, identifier);
29
29
  }
30
30
  return null;
31
31
  }
32
+ /**
33
+ * Check if the bracket at current position represents a SQL Server bracket identifier
34
+ * vs array access notation
35
+ */
36
+ isSqlServerBracketIdentifier(previous) {
37
+ // Don't treat as SQL Server bracket identifier if previous token suggests array access
38
+ if ((previous === null || previous === void 0 ? void 0 : previous.value) === "array") {
39
+ return false;
40
+ }
41
+ // Look ahead to see what's inside the brackets
42
+ const start = this.position + 1; // after opening bracket
43
+ let pos = start;
44
+ // Scan until closing bracket or end of input
45
+ while (pos < this.input.length && this.input[pos] !== ']') {
46
+ const char = this.input[pos];
47
+ // If we find colons, operators, or expressions, it's likely array access
48
+ if (char === ':' || char === ',' || char === '+' || char === '-' ||
49
+ char === '*' || char === '/' || char === '(' || char === ')') {
50
+ return false;
51
+ }
52
+ pos++;
53
+ }
54
+ // If we didn't find a closing bracket, it's malformed anyway
55
+ if (pos >= this.input.length) {
56
+ return false;
57
+ }
58
+ // Check the content between brackets
59
+ const content = this.input.slice(start, pos).trim();
60
+ // Empty brackets are never SQL Server identifiers - they should be array access
61
+ if (content === '') {
62
+ return false;
63
+ }
64
+ // SQL Server bracket identifiers typically contain simple identifiers with dots
65
+ // Array access contains numbers, expressions, colons
66
+ return /^[a-zA-Z_][a-zA-Z0-9_]*(\.[a-zA-Z_][a-zA-Z0-9_]*)*$/.test(content);
67
+ }
32
68
  /**
33
69
  * Read an escaped identifier (surrounded by delimiters)
34
70
  */
@@ -1 +1 @@
1
- {"version":3,"file":"EscapedIdentifierTokenReader.js","sourceRoot":"","sources":["../../../../src/tokenReaders/EscapedIdentifierTokenReader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAU,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAGrD;;GAEG;AACH,MAAM,OAAO,4BAA6B,SAAQ,eAAe;IAC7D;;OAEG;IACI,OAAO,CAAC,QAAuB;QAClC,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC;YACtB,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAEvC,0DAA0D;QAC1D,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YACf,MAAM,UAAU,GAAG,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC;YACnD,OAAO,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QAC/D,CAAC;QAED,iEAAiE;QACjE,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YACf,MAAM,UAAU,GAAG,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC;YACnD,OAAO,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QAC/D,CAAC;QAED,oEAAoE;QACpE,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ,KAAK,IAAI,IAAI,QAAQ,CAAC,KAAK,KAAK,OAAO,CAAC,EAAE,CAAC;YACpE,MAAM,UAAU,GAAG,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC;YACnD,OAAO,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QAC/D,CAAC;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;OAEG;IACK,qBAAqB,CAAC,SAAiB;QAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC;QAE5B,6BAA6B;QAC7B,IAAI,CAAC,QAAQ,EAAE,CAAC;QAEhB,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;YACpB,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,SAAS,EAAE,CAAC;gBAC1C,MAAM;YACV,CAAC;YACD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACpB,CAAC;QAED,IAAI,KAAK,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,6CAA6C,KAAK,gBAAgB,SAAS,KAAK,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACxI,CAAC;QAED,6BAA6B;QAC7B,IAAI,CAAC,QAAQ,EAAE,CAAC;QAEhB,wBAAwB;QACxB,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;IAC1D,CAAC;CACJ"}
1
+ {"version":3,"file":"EscapedIdentifierTokenReader.js","sourceRoot":"","sources":["../../../../src/tokenReaders/EscapedIdentifierTokenReader.ts"],"names":[],"mappings":"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"}
@@ -28,8 +28,24 @@ export declare class LiteralTokenReader extends BaseTokenReader {
28
28
  * Read a numeric value
29
29
  */
30
30
  private readDigit;
31
+ /**
32
+ * Read a MONEY value (allows commas as thousand separators)
33
+ */
34
+ private readMoneyDigit;
31
35
  /**
32
36
  * Read a string literal
33
37
  */
34
38
  private readSingleQuotedString;
39
+ /**
40
+ * Check if the current position starts a PostgreSQL dollar-quoted string
41
+ */
42
+ private isDollarQuotedString;
43
+ /**
44
+ * Read a PostgreSQL dollar-quoted string
45
+ */
46
+ private readDollarQuotedString;
47
+ /**
48
+ * Check if character is alphanumeric (letter or digit)
49
+ */
50
+ private isAlphanumeric;
35
51
  }
@@ -55,6 +55,30 @@ export class LiteralTokenReader extends BaseTokenReader {
55
55
  if (CharLookupTable.isDigit(char)) {
56
56
  return this.createLexeme(TokenType.Literal, this.readDigit());
57
57
  }
58
+ // PostgreSQL dollar-quoted string ($$content$$ or $tag$content$tag$)
59
+ if (char === '$' && this.isDollarQuotedString()) {
60
+ return this.createLexeme(TokenType.Literal, this.readDollarQuotedString());
61
+ }
62
+ // SQL Server MONEY literal ($123.45)
63
+ // Only treat as MONEY if it contains decimal point or comma to avoid conflict with PostgreSQL $1 parameters
64
+ if (char === '$' && this.canRead(1) && CharLookupTable.isDigit(this.input[this.position + 1])) {
65
+ // Look ahead to see if this looks like a MONEY literal (has . or ,)
66
+ let pos = this.position + 1;
67
+ let hasDecimalOrComma = false;
68
+ while (pos < this.input.length && (CharLookupTable.isDigit(this.input[pos]) || this.input[pos] === ',' || this.input[pos] === '.')) {
69
+ if (this.input[pos] === '.' || this.input[pos] === ',') {
70
+ hasDecimalOrComma = true;
71
+ break;
72
+ }
73
+ pos++;
74
+ }
75
+ if (hasDecimalOrComma) {
76
+ const start = this.position;
77
+ this.position++; // Skip $
78
+ const numberPart = this.readMoneyDigit();
79
+ return this.createLexeme(TokenType.Literal, '$' + numberPart);
80
+ }
81
+ }
58
82
  // Signed number
59
83
  if ((char === '+' || char === '-') && this.determineSignOrOperator(previous) === "sign") {
60
84
  const sign = char;
@@ -168,6 +192,31 @@ export class LiteralTokenReader extends BaseTokenReader {
168
192
  }
169
193
  return this.input.slice(start, this.position);
170
194
  }
195
+ /**
196
+ * Read a MONEY value (allows commas as thousand separators)
197
+ */
198
+ readMoneyDigit() {
199
+ const start = this.position;
200
+ let hasDot = false;
201
+ // Consider decimal point and comma separators
202
+ while (this.canRead()) {
203
+ const char = this.input[this.position];
204
+ if (char === '.' && !hasDot) {
205
+ hasDot = true;
206
+ }
207
+ else if (char === ',' && !hasDot) {
208
+ // Allow comma as thousand separator before decimal point
209
+ }
210
+ else if (!CharLookupTable.isDigit(char)) {
211
+ break;
212
+ }
213
+ this.position++;
214
+ }
215
+ if (start === this.position) {
216
+ throw new Error(`Unexpected character. position: ${start}\n${this.getDebugPositionInfo(start)}`);
217
+ }
218
+ return this.input.slice(start, this.position);
219
+ }
171
220
  /**
172
221
  * Read a string literal
173
222
  */
@@ -200,5 +249,75 @@ export class LiteralTokenReader extends BaseTokenReader {
200
249
  return value;
201
250
  }
202
251
  }
252
+ /**
253
+ * Check if the current position starts a PostgreSQL dollar-quoted string
254
+ */
255
+ isDollarQuotedString() {
256
+ if (!this.canRead(1)) {
257
+ return false;
258
+ }
259
+ // Check for $$ pattern
260
+ if (this.input[this.position + 1] === '$') {
261
+ return true;
262
+ }
263
+ // Check for $tag$ pattern
264
+ let pos = this.position + 1;
265
+ while (pos < this.input.length) {
266
+ const char = this.input[pos];
267
+ if (char === '$') {
268
+ return true;
269
+ }
270
+ if (!this.isAlphanumeric(char) && char !== '_') {
271
+ return false;
272
+ }
273
+ pos++;
274
+ }
275
+ return false;
276
+ }
277
+ /**
278
+ * Read a PostgreSQL dollar-quoted string
279
+ */
280
+ readDollarQuotedString() {
281
+ const start = this.position;
282
+ // Read the opening tag
283
+ this.position++; // Skip initial $
284
+ let tag = '';
285
+ // Read tag characters until the closing $
286
+ while (this.canRead() && this.input[this.position] !== '$') {
287
+ tag += this.input[this.position];
288
+ this.position++;
289
+ }
290
+ if (!this.canRead()) {
291
+ throw new Error(`Unexpected end of input while reading dollar-quoted string tag at position ${start}`);
292
+ }
293
+ this.position++; // Skip closing $ of opening tag
294
+ // Now read the content until we find the closing tag
295
+ const openingTag = '$' + tag + '$';
296
+ const closingTag = openingTag;
297
+ let content = '';
298
+ while (this.canRead()) {
299
+ // Check if we're at the start of the closing tag
300
+ if (this.input.substring(this.position, this.position + closingTag.length) === closingTag) {
301
+ // Found closing tag
302
+ this.position += closingTag.length;
303
+ return openingTag + content + closingTag;
304
+ }
305
+ content += this.input[this.position];
306
+ this.position++;
307
+ }
308
+ throw new Error(`Unclosed dollar-quoted string starting at position ${start}. Expected closing tag: ${closingTag}`);
309
+ }
310
+ /**
311
+ * Check if character is alphanumeric (letter or digit)
312
+ */
313
+ isAlphanumeric(char) {
314
+ if (char.length !== 1)
315
+ return false;
316
+ const code = char.charCodeAt(0);
317
+ // Check if digit (0-9) or letter (a-z, A-Z)
318
+ return (code >= 48 && code <= 57) || // 0-9
319
+ (code >= 65 && code <= 90) || // A-Z
320
+ (code >= 97 && code <= 122); // a-z
321
+ }
203
322
  }
204
323
  //# sourceMappingURL=LiteralTokenReader.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"LiteralTokenReader.js","sourceRoot":"","sources":["../../../../src/tokenReaders/LiteralTokenReader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LiteralTokenReader.js","sourceRoot":"","sources":["../../../../src/tokenReaders/LiteralTokenReader.ts"],"names":[],"mappings":"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"}
@@ -27,6 +27,10 @@ const trie = new KeywordTrie([
27
27
  ["not", "similar", "to"], // e.g. name not similar to 'J(ohn|ane)%'
28
28
  ["similar"], // e.g. substring('abcdef' similar '%#"cd#"%' escape '#')
29
29
  ["placing"], // e.g. overlay('abcdef' placing 'cd' from 3 for 2)
30
+ ["rlike"], // MySQL regular expression operator
31
+ ["regexp"], // MySQL regular expression operator
32
+ ["mod"], // MySQL modulo operator
33
+ ["xor"], // MySQL exclusive or operator
30
34
  // unary
31
35
  ["not"],
32
36
  // unary - trim
@@ -1 +1 @@
1
- {"version":3,"file":"OperatorTokenReader.js","sourceRoot":"","sources":["../../../../src/tokenReaders/OperatorTokenReader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"OperatorTokenReader.js","sourceRoot":"","sources":["../../../../src/tokenReaders/OperatorTokenReader.ts"],"names":[],"mappings":"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"}