rawsql-ts 0.11.6-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.
- package/README.md +816 -735
- package/dist/esm/index.js +1 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/index.min.js +23 -15
- package/dist/esm/index.min.js.map +4 -4
- package/dist/esm/{types/src → src}/index.d.ts +1 -0
- package/dist/esm/src/index.js +1 -0
- package/dist/esm/src/index.js.map +1 -1
- package/dist/esm/{types/src → src}/models/BinarySelectQuery.d.ts +2 -2
- package/dist/esm/src/models/BinarySelectQuery.js.map +1 -1
- package/dist/esm/{types/src → src}/models/SelectQuery.d.ts +2 -1
- package/dist/esm/src/models/SelectQuery.js.map +1 -1
- package/dist/esm/{types/src → src}/models/SimpleSelectQuery.d.ts +2 -2
- package/dist/esm/src/models/SimpleSelectQuery.js.map +1 -1
- package/dist/esm/{types/src → src}/models/ValueComponent.d.ts +19 -4
- package/dist/esm/src/models/ValueComponent.js +19 -1
- package/dist/esm/src/models/ValueComponent.js.map +1 -1
- package/dist/esm/{types/src → src}/models/ValuesQuery.d.ts +2 -1
- package/dist/esm/src/models/ValuesQuery.js.map +1 -1
- package/dist/esm/src/parsers/CommonTableParser.js +16 -0
- package/dist/esm/src/parsers/CommonTableParser.js.map +1 -1
- package/dist/esm/src/parsers/LiteralParser.js +15 -5
- package/dist/esm/src/parsers/LiteralParser.js.map +1 -1
- package/dist/esm/{types/src → src}/parsers/SqlPrintTokenParser.d.ts +2 -0
- package/dist/esm/src/parsers/SqlPrintTokenParser.js +42 -2
- package/dist/esm/src/parsers/SqlPrintTokenParser.js.map +1 -1
- package/dist/esm/{types/src → src}/parsers/ValueParser.d.ts +13 -0
- package/dist/esm/src/parsers/ValueParser.js +134 -1
- package/dist/esm/src/parsers/ValueParser.js.map +1 -1
- package/dist/esm/src/parsers/WithClauseParser.js +8 -2
- package/dist/esm/src/parsers/WithClauseParser.js.map +1 -1
- package/dist/esm/src/reporting/models/DataFlowEdge.d.ts +33 -0
- package/dist/esm/src/reporting/models/DataFlowEdge.js +53 -0
- package/dist/esm/src/reporting/models/DataFlowEdge.js.map +1 -0
- package/dist/esm/src/reporting/models/DataFlowGraph.d.ts +49 -0
- package/dist/esm/src/reporting/models/DataFlowGraph.js +156 -0
- package/dist/esm/src/reporting/models/DataFlowGraph.js.map +1 -0
- package/dist/esm/src/reporting/models/DataFlowNode.d.ts +64 -0
- package/dist/esm/src/reporting/models/DataFlowNode.js +109 -0
- package/dist/esm/src/reporting/models/DataFlowNode.js.map +1 -0
- package/dist/esm/src/reporting/services/CTEHandler.d.ts +13 -0
- package/dist/esm/src/reporting/services/CTEHandler.js +27 -0
- package/dist/esm/src/reporting/services/CTEHandler.js.map +1 -0
- package/dist/esm/src/reporting/services/DataSourceHandler.d.ts +25 -0
- package/dist/esm/src/reporting/services/DataSourceHandler.js +91 -0
- package/dist/esm/src/reporting/services/DataSourceHandler.js.map +1 -0
- package/dist/esm/src/reporting/services/JoinHandler.d.ts +32 -0
- package/dist/esm/src/reporting/services/JoinHandler.js +80 -0
- package/dist/esm/src/reporting/services/JoinHandler.js.map +1 -0
- package/dist/esm/src/reporting/services/ProcessHandler.d.ts +55 -0
- package/dist/esm/src/reporting/services/ProcessHandler.js +177 -0
- package/dist/esm/src/reporting/services/ProcessHandler.js.map +1 -0
- package/dist/esm/{types/src → src}/tokenReaders/EscapedIdentifierTokenReader.d.ts +5 -0
- package/dist/esm/src/tokenReaders/EscapedIdentifierTokenReader.js +37 -1
- package/dist/esm/src/tokenReaders/EscapedIdentifierTokenReader.js.map +1 -1
- package/dist/esm/{types/src → src}/tokenReaders/LiteralTokenReader.d.ts +16 -0
- package/dist/esm/src/tokenReaders/LiteralTokenReader.js +119 -0
- package/dist/esm/src/tokenReaders/LiteralTokenReader.js.map +1 -1
- package/dist/esm/src/tokenReaders/OperatorTokenReader.js +4 -0
- package/dist/esm/src/tokenReaders/OperatorTokenReader.js.map +1 -1
- package/dist/esm/src/tokenReaders/ParameterTokenReader.d.ts +26 -0
- package/dist/esm/src/tokenReaders/ParameterTokenReader.js +126 -0
- package/dist/esm/src/tokenReaders/ParameterTokenReader.js.map +1 -1
- package/dist/esm/{types/src → src}/transformers/DynamicQueryBuilder.d.ts +28 -2
- package/dist/esm/src/transformers/DynamicQueryBuilder.js.map +1 -1
- package/dist/esm/src/transformers/QueryFlowDiagramGenerator.d.ts +37 -0
- package/dist/esm/src/transformers/QueryFlowDiagramGenerator.js +140 -0
- package/dist/esm/src/transformers/QueryFlowDiagramGenerator.js.map +1 -0
- package/dist/esm/{types/src → src}/transformers/SqlParamInjector.d.ts +11 -0
- package/dist/esm/src/transformers/SqlParamInjector.js.map +1 -1
- package/dist/esm/{types/src → src}/transformers/TypeTransformationPostProcessor.d.ts +5 -5
- package/dist/esm/src/transformers/TypeTransformationPostProcessor.js +20 -8
- package/dist/esm/src/transformers/TypeTransformationPostProcessor.js.map +1 -1
- package/dist/esm/src/utils/OperatorPrecedence.js +23 -1
- package/dist/esm/src/utils/OperatorPrecedence.js.map +1 -1
- package/dist/esm/src/utils/charLookupTable.js +4 -4
- package/dist/esm/src/utils/charLookupTable.js.map +1 -1
- package/dist/esm/src/utils/stringUtils.js +17 -1
- package/dist/esm/src/utils/stringUtils.js.map +1 -1
- package/dist/esm/tsconfig.browser.tsbuildinfo +1 -1
- package/dist/index.min.js +23 -15
- package/dist/index.min.js.map +4 -4
- package/dist/src/index.d.ts +1 -0
- package/dist/src/index.js +1 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/models/BinarySelectQuery.d.ts +2 -2
- package/dist/src/models/BinarySelectQuery.js.map +1 -1
- package/dist/src/models/SelectQuery.d.ts +2 -1
- package/dist/src/models/SelectQuery.js.map +1 -1
- package/dist/src/models/SimpleSelectQuery.d.ts +2 -2
- package/dist/src/models/SimpleSelectQuery.js.map +1 -1
- package/dist/src/models/ValueComponent.d.ts +19 -4
- package/dist/src/models/ValueComponent.js +22 -2
- package/dist/src/models/ValueComponent.js.map +1 -1
- package/dist/src/models/ValuesQuery.d.ts +2 -1
- package/dist/src/models/ValuesQuery.js.map +1 -1
- package/dist/src/parsers/CommonTableParser.js +16 -0
- package/dist/src/parsers/CommonTableParser.js.map +1 -1
- package/dist/src/parsers/LiteralParser.js +15 -5
- package/dist/src/parsers/LiteralParser.js.map +1 -1
- package/dist/src/parsers/SqlPrintTokenParser.d.ts +2 -0
- package/dist/src/parsers/SqlPrintTokenParser.js +41 -1
- package/dist/src/parsers/SqlPrintTokenParser.js.map +1 -1
- package/dist/src/parsers/ValueParser.d.ts +13 -0
- package/dist/src/parsers/ValueParser.js +133 -0
- package/dist/src/parsers/ValueParser.js.map +1 -1
- package/dist/src/parsers/WithClauseParser.js +8 -2
- package/dist/src/parsers/WithClauseParser.js.map +1 -1
- package/dist/src/reporting/models/DataFlowEdge.d.ts +33 -0
- package/dist/src/reporting/models/DataFlowEdge.js +58 -0
- package/dist/src/reporting/models/DataFlowEdge.js.map +1 -0
- package/dist/src/reporting/models/DataFlowGraph.d.ts +49 -0
- package/dist/src/reporting/models/DataFlowGraph.js +160 -0
- package/dist/src/reporting/models/DataFlowGraph.js.map +1 -0
- package/dist/src/reporting/models/DataFlowNode.d.ts +64 -0
- package/dist/src/reporting/models/DataFlowNode.js +117 -0
- package/dist/src/reporting/models/DataFlowNode.js.map +1 -0
- package/dist/src/reporting/services/CTEHandler.d.ts +13 -0
- package/dist/src/reporting/services/CTEHandler.js +31 -0
- package/dist/src/reporting/services/CTEHandler.js.map +1 -0
- package/dist/src/reporting/services/DataSourceHandler.d.ts +25 -0
- package/dist/src/reporting/services/DataSourceHandler.js +95 -0
- package/dist/src/reporting/services/DataSourceHandler.js.map +1 -0
- package/dist/src/reporting/services/JoinHandler.d.ts +32 -0
- package/dist/src/reporting/services/JoinHandler.js +84 -0
- package/dist/src/reporting/services/JoinHandler.js.map +1 -0
- package/dist/src/reporting/services/ProcessHandler.d.ts +55 -0
- package/dist/src/reporting/services/ProcessHandler.js +181 -0
- package/dist/src/reporting/services/ProcessHandler.js.map +1 -0
- package/dist/src/tokenReaders/EscapedIdentifierTokenReader.d.ts +5 -0
- package/dist/src/tokenReaders/EscapedIdentifierTokenReader.js +37 -1
- package/dist/src/tokenReaders/EscapedIdentifierTokenReader.js.map +1 -1
- package/dist/src/tokenReaders/LiteralTokenReader.d.ts +16 -0
- package/dist/src/tokenReaders/LiteralTokenReader.js +119 -0
- package/dist/src/tokenReaders/LiteralTokenReader.js.map +1 -1
- package/dist/src/tokenReaders/OperatorTokenReader.js +4 -0
- package/dist/src/tokenReaders/OperatorTokenReader.js.map +1 -1
- package/dist/src/tokenReaders/ParameterTokenReader.d.ts +14 -0
- package/dist/src/tokenReaders/ParameterTokenReader.js +126 -0
- package/dist/src/tokenReaders/ParameterTokenReader.js.map +1 -1
- package/dist/src/transformers/DynamicQueryBuilder.d.ts +28 -2
- package/dist/src/transformers/DynamicQueryBuilder.js.map +1 -1
- package/dist/src/transformers/QueryFlowDiagramGenerator.d.ts +37 -0
- package/dist/src/transformers/QueryFlowDiagramGenerator.js +144 -0
- package/dist/src/transformers/QueryFlowDiagramGenerator.js.map +1 -0
- package/dist/src/transformers/SqlParamInjector.d.ts +11 -0
- package/dist/src/transformers/SqlParamInjector.js.map +1 -1
- package/dist/src/transformers/TypeTransformationPostProcessor.d.ts +5 -5
- package/dist/src/transformers/TypeTransformationPostProcessor.js +20 -8
- package/dist/src/transformers/TypeTransformationPostProcessor.js.map +1 -1
- package/dist/src/utils/OperatorPrecedence.js +23 -1
- package/dist/src/utils/OperatorPrecedence.js.map +1 -1
- package/dist/src/utils/charLookupTable.js +4 -4
- package/dist/src/utils/charLookupTable.js.map +1 -1
- package/dist/src/utils/stringUtils.js +17 -1
- package/dist/src/utils/stringUtils.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/dist/esm/types/src/tokenReaders/ParameterTokenReader.d.ts +0 -12
- /package/dist/esm/{types/src → src}/models/CTEError.d.ts +0 -0
- /package/dist/esm/{types/src → src}/models/Clause.d.ts +0 -0
- /package/dist/esm/{types/src → src}/models/CreateTableQuery.d.ts +0 -0
- /package/dist/esm/{types/src → src}/models/HintClause.d.ts +0 -0
- /package/dist/esm/{types/src → src}/models/InsertQuery.d.ts +0 -0
- /package/dist/esm/{types/src → src}/models/KeywordTrie.d.ts +0 -0
- /package/dist/esm/{types/src → src}/models/Lexeme.d.ts +0 -0
- /package/dist/esm/{types/src → src}/models/SqlComponent.d.ts +0 -0
- /package/dist/esm/{types/src → src}/models/SqlPrintToken.d.ts +0 -0
- /package/dist/esm/{types/src → src}/models/UpdateQuery.d.ts +0 -0
- /package/dist/esm/{types/src → src}/parsers/CommandExpressionParser.d.ts +0 -0
- /package/dist/esm/{types/src → src}/parsers/CommonTableParser.d.ts +0 -0
- /package/dist/esm/{types/src → src}/parsers/FetchClauseParser.d.ts +0 -0
- /package/dist/esm/{types/src → src}/parsers/ForClauseParser.d.ts +0 -0
- /package/dist/esm/{types/src → src}/parsers/FromClauseParser.d.ts +0 -0
- /package/dist/esm/{types/src → src}/parsers/FullNameParser.d.ts +0 -0
- /package/dist/esm/{types/src → src}/parsers/FunctionExpressionParser.d.ts +0 -0
- /package/dist/esm/{types/src → src}/parsers/GroupByParser.d.ts +0 -0
- /package/dist/esm/{types/src → src}/parsers/HavingParser.d.ts +0 -0
- /package/dist/esm/{types/src → src}/parsers/IdentifierDecorator.d.ts +0 -0
- /package/dist/esm/{types/src → src}/parsers/IdentifierParser.d.ts +0 -0
- /package/dist/esm/{types/src → src}/parsers/InsertQueryParser.d.ts +0 -0
- /package/dist/esm/{types/src → src}/parsers/JoinClauseParser.d.ts +0 -0
- /package/dist/esm/{types/src → src}/parsers/JoinOnClauseParser.d.ts +0 -0
- /package/dist/esm/{types/src → src}/parsers/JoinUsingClauseParser.d.ts +0 -0
- /package/dist/esm/{types/src → src}/parsers/KeywordParser.d.ts +0 -0
- /package/dist/esm/{types/src → src}/parsers/LimitClauseParser.d.ts +0 -0
- /package/dist/esm/{types/src → src}/parsers/LiteralParser.d.ts +0 -0
- /package/dist/esm/{types/src → src}/parsers/OffsetClauseParser.d.ts +0 -0
- /package/dist/esm/{types/src → src}/parsers/OrderByClauseParser.d.ts +0 -0
- /package/dist/esm/{types/src → src}/parsers/OverExpressionParser.d.ts +0 -0
- /package/dist/esm/{types/src → src}/parsers/ParameterDecorator.d.ts +0 -0
- /package/dist/esm/{types/src → src}/parsers/ParameterExpressionParser.d.ts +0 -0
- /package/dist/esm/{types/src → src}/parsers/ParenExpressionParser.d.ts +0 -0
- /package/dist/esm/{types/src → src}/parsers/ParseError.d.ts +0 -0
- /package/dist/esm/{types/src → src}/parsers/PartitionByParser.d.ts +0 -0
- /package/dist/esm/{types/src → src}/parsers/ReturningClauseParser.d.ts +0 -0
- /package/dist/esm/{types/src → src}/parsers/SelectClauseParser.d.ts +0 -0
- /package/dist/esm/{types/src → src}/parsers/SelectQueryParser.d.ts +0 -0
- /package/dist/esm/{types/src → src}/parsers/SetClauseParser.d.ts +0 -0
- /package/dist/esm/{types/src → src}/parsers/SourceAliasExpressionParser.d.ts +0 -0
- /package/dist/esm/{types/src → src}/parsers/SourceExpressionParser.d.ts +0 -0
- /package/dist/esm/{types/src → src}/parsers/SourceParser.d.ts +0 -0
- /package/dist/esm/{types/src → src}/parsers/SqlTokenizer.d.ts +0 -0
- /package/dist/esm/{types/src → src}/parsers/StringSpecifierExpressionParser.d.ts +0 -0
- /package/dist/esm/{types/src → src}/parsers/UnaryExpressionParser.d.ts +0 -0
- /package/dist/esm/{types/src → src}/parsers/UpdateClauseParser.d.ts +0 -0
- /package/dist/esm/{types/src → src}/parsers/UpdateQueryParser.d.ts +0 -0
- /package/dist/esm/{types/src → src}/parsers/ValuesQueryParser.d.ts +0 -0
- /package/dist/esm/{types/src → src}/parsers/WhereClauseParser.d.ts +0 -0
- /package/dist/esm/{types/src → src}/parsers/WindowClauseParser.d.ts +0 -0
- /package/dist/esm/{types/src → src}/parsers/WindowExpressionParser.d.ts +0 -0
- /package/dist/esm/{types/src → src}/parsers/WithClauseParser.d.ts +0 -0
- /package/dist/esm/{types/src → src}/tokenReaders/BaseTokenReader.d.ts +0 -0
- /package/dist/esm/{types/src → src}/tokenReaders/CommandTokenReader.d.ts +0 -0
- /package/dist/esm/{types/src → src}/tokenReaders/FunctionTokenReader.d.ts +0 -0
- /package/dist/esm/{types/src → src}/tokenReaders/IdentifierTokenReader.d.ts +0 -0
- /package/dist/esm/{types/src → src}/tokenReaders/OperatorTokenReader.d.ts +0 -0
- /package/dist/esm/{types/src → src}/tokenReaders/StringSpecifierTokenReader.d.ts +0 -0
- /package/dist/esm/{types/src → src}/tokenReaders/SymbolTokenReader.d.ts +0 -0
- /package/dist/esm/{types/src → src}/tokenReaders/TokenReaderManager.d.ts +0 -0
- /package/dist/esm/{types/src → src}/tokenReaders/TypeTokenReader.d.ts +0 -0
- /package/dist/esm/{types/src → src}/transformers/CTEBuilder.d.ts +0 -0
- /package/dist/esm/{types/src → src}/transformers/CTECollector.d.ts +0 -0
- /package/dist/esm/{types/src → src}/transformers/CTEDependencyTracer.d.ts +0 -0
- /package/dist/esm/{types/src → src}/transformers/CTEDisabler.d.ts +0 -0
- /package/dist/esm/{types/src → src}/transformers/CTEInjector.d.ts +0 -0
- /package/dist/esm/{types/src → src}/transformers/CTENormalizer.d.ts +0 -0
- /package/dist/esm/{types/src → src}/transformers/EnhancedJsonMapping.d.ts +0 -0
- /package/dist/esm/{types/src → src}/transformers/Formatter.d.ts +0 -0
- /package/dist/esm/{types/src → src}/transformers/JsonMappingConverter.d.ts +0 -0
- /package/dist/esm/{types/src → src}/transformers/JsonMappingUnifier.d.ts +0 -0
- /package/dist/esm/{types/src → src}/transformers/LinePrinter.d.ts +0 -0
- /package/dist/esm/{types/src → src}/transformers/ModelDrivenJsonMapping.d.ts +0 -0
- /package/dist/esm/{types/src → src}/transformers/ParameterCollector.d.ts +0 -0
- /package/dist/esm/{types/src → src}/transformers/PostgresArrayEntityCteBuilder.d.ts +0 -0
- /package/dist/esm/{types/src → src}/transformers/PostgresJsonQueryBuilder.d.ts +0 -0
- /package/dist/esm/{types/src → src}/transformers/PostgresObjectEntityCteBuilder.d.ts +0 -0
- /package/dist/esm/{types/src → src}/transformers/QueryBuilder.d.ts +0 -0
- /package/dist/esm/{types/src → src}/transformers/SchemaCollector.d.ts +0 -0
- /package/dist/esm/{types/src → src}/transformers/SelectValueCollector.d.ts +0 -0
- /package/dist/esm/{types/src → src}/transformers/SelectableColumnCollector.d.ts +0 -0
- /package/dist/esm/{types/src → src}/transformers/SqlFormatter.d.ts +0 -0
- /package/dist/esm/{types/src → src}/transformers/SqlOutputToken.d.ts +0 -0
- /package/dist/esm/{types/src → src}/transformers/SqlPaginationInjector.d.ts +0 -0
- /package/dist/esm/{types/src → src}/transformers/SqlParameterBinder.d.ts +0 -0
- /package/dist/esm/{types/src → src}/transformers/SqlPrinter.d.ts +0 -0
- /package/dist/esm/{types/src → src}/transformers/SqlSortInjector.d.ts +0 -0
- /package/dist/esm/{types/src → src}/transformers/TableColumnResolver.d.ts +0 -0
- /package/dist/esm/{types/src → src}/transformers/TableSourceCollector.d.ts +0 -0
- /package/dist/esm/{types/src → src}/transformers/UpstreamSelectQueryFinder.d.ts +0 -0
- /package/dist/esm/{types/src → src}/utils/CommentEditor.d.ts +0 -0
- /package/dist/esm/{types/src → src}/utils/CommentUtils.d.ts +0 -0
- /package/dist/esm/{types/src → src}/utils/JsonSchemaValidator.d.ts +0 -0
- /package/dist/esm/{types/src → src}/utils/OperatorPrecedence.d.ts +0 -0
- /package/dist/esm/{types/src → src}/utils/ParameterDetector.d.ts +0 -0
- /package/dist/esm/{types/src → src}/utils/ParameterHelper.d.ts +0 -0
- /package/dist/esm/{types/src → src}/utils/ParameterRemover.d.ts +0 -0
- /package/dist/esm/{types/src → src}/utils/SchemaManager.d.ts +0 -0
- /package/dist/esm/{types/src → src}/utils/SqlSchemaValidator.d.ts +0 -0
- /package/dist/esm/{types/src → src}/utils/charLookupTable.d.ts +0 -0
- /package/dist/esm/{types/src → src}/utils/stringUtils.d.ts +0 -0
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { FromClause } from '../../models/Clause';
|
|
2
|
+
import { DataFlowGraph } from '../models/DataFlowGraph';
|
|
3
|
+
import { DataSourceHandler } from './DataSourceHandler';
|
|
4
|
+
/**
|
|
5
|
+
* Handles the processing of JOIN operations
|
|
6
|
+
*/
|
|
7
|
+
export declare class JoinHandler {
|
|
8
|
+
private graph;
|
|
9
|
+
private dataSourceHandler;
|
|
10
|
+
private joinIdCounter;
|
|
11
|
+
constructor(graph: DataFlowGraph, dataSourceHandler: DataSourceHandler);
|
|
12
|
+
/**
|
|
13
|
+
* Resets the join ID counter for deterministic IDs
|
|
14
|
+
*/
|
|
15
|
+
resetJoinCounter(): void;
|
|
16
|
+
/**
|
|
17
|
+
* Gets the next join ID
|
|
18
|
+
*/
|
|
19
|
+
private getNextJoinId;
|
|
20
|
+
/**
|
|
21
|
+
* Processes a FROM clause with JOINs and returns the final node ID
|
|
22
|
+
*/
|
|
23
|
+
processFromClause(fromClause: FromClause, cteNames: Set<string>, queryProcessor: (query: any, context: string, cteNames: Set<string>) => string): string;
|
|
24
|
+
/**
|
|
25
|
+
* Processes a series of JOINs sequentially
|
|
26
|
+
*/
|
|
27
|
+
private processJoins;
|
|
28
|
+
/**
|
|
29
|
+
* Gets nullability labels for JOIN edges based on JOIN type
|
|
30
|
+
*/
|
|
31
|
+
private getJoinNullabilityLabels;
|
|
32
|
+
}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.JoinHandler = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Handles the processing of JOIN operations
|
|
6
|
+
*/
|
|
7
|
+
class JoinHandler {
|
|
8
|
+
constructor(graph, dataSourceHandler) {
|
|
9
|
+
this.graph = graph;
|
|
10
|
+
this.dataSourceHandler = dataSourceHandler;
|
|
11
|
+
this.joinIdCounter = 0;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Resets the join ID counter for deterministic IDs
|
|
15
|
+
*/
|
|
16
|
+
resetJoinCounter() {
|
|
17
|
+
this.joinIdCounter = 0;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Gets the next join ID
|
|
21
|
+
*/
|
|
22
|
+
getNextJoinId() {
|
|
23
|
+
return String(++this.joinIdCounter);
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Processes a FROM clause with JOINs and returns the final node ID
|
|
27
|
+
*/
|
|
28
|
+
processFromClause(fromClause, cteNames, queryProcessor) {
|
|
29
|
+
// Process main source
|
|
30
|
+
const mainSourceId = this.dataSourceHandler.processSource(fromClause.source, cteNames, queryProcessor);
|
|
31
|
+
// Process JOINs if they exist
|
|
32
|
+
if (fromClause.joins && fromClause.joins.length > 0) {
|
|
33
|
+
return this.processJoins(fromClause.joins, mainSourceId, cteNames, queryProcessor);
|
|
34
|
+
}
|
|
35
|
+
return mainSourceId;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Processes a series of JOINs sequentially
|
|
39
|
+
*/
|
|
40
|
+
processJoins(joins, currentNodeId, cteNames, queryProcessor) {
|
|
41
|
+
let resultNodeId = currentNodeId;
|
|
42
|
+
for (const join of joins) {
|
|
43
|
+
const joinNodeId = this.dataSourceHandler.processSource(join.source, cteNames, queryProcessor);
|
|
44
|
+
// Create join operation node
|
|
45
|
+
const joinOpId = this.getNextJoinId();
|
|
46
|
+
const joinNode = this.graph.createJoinNode(joinOpId, join.joinType.value);
|
|
47
|
+
// Get nullability labels for the JOIN
|
|
48
|
+
const { leftLabel, rightLabel } = this.getJoinNullabilityLabels(join.joinType.value);
|
|
49
|
+
// Connect current source and join source to join operation with nullability labels
|
|
50
|
+
if (resultNodeId && !this.graph.hasConnection(resultNodeId, joinNode.id)) {
|
|
51
|
+
this.graph.addConnection(resultNodeId, joinNode.id, leftLabel);
|
|
52
|
+
}
|
|
53
|
+
if (joinNodeId && !this.graph.hasConnection(joinNodeId, joinNode.id)) {
|
|
54
|
+
this.graph.addConnection(joinNodeId, joinNode.id, rightLabel);
|
|
55
|
+
}
|
|
56
|
+
resultNodeId = joinNode.id;
|
|
57
|
+
}
|
|
58
|
+
return resultNodeId;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Gets nullability labels for JOIN edges based on JOIN type
|
|
62
|
+
*/
|
|
63
|
+
getJoinNullabilityLabels(joinType) {
|
|
64
|
+
switch (joinType.toLowerCase()) {
|
|
65
|
+
case 'left join':
|
|
66
|
+
return { leftLabel: 'NOT NULL', rightLabel: 'NULLABLE' };
|
|
67
|
+
case 'right join':
|
|
68
|
+
return { leftLabel: 'NULLABLE', rightLabel: 'NOT NULL' };
|
|
69
|
+
case 'inner join':
|
|
70
|
+
case 'join':
|
|
71
|
+
return { leftLabel: 'NOT NULL', rightLabel: 'NOT NULL' };
|
|
72
|
+
case 'full join':
|
|
73
|
+
case 'full outer join':
|
|
74
|
+
return { leftLabel: 'NULLABLE', rightLabel: 'NULLABLE' };
|
|
75
|
+
case 'cross join':
|
|
76
|
+
return { leftLabel: 'NOT NULL', rightLabel: 'NOT NULL' };
|
|
77
|
+
default:
|
|
78
|
+
// Default to no nullability info for unknown join types
|
|
79
|
+
return { leftLabel: '', rightLabel: '' };
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
exports.JoinHandler = JoinHandler;
|
|
84
|
+
//# sourceMappingURL=JoinHandler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"JoinHandler.js","sourceRoot":"","sources":["../../../../src/reporting/services/JoinHandler.ts"],"names":[],"mappings":"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"}
|
|
@@ -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,181 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ProcessHandler = void 0;
|
|
4
|
+
const ValueComponent_1 = require("../../models/ValueComponent");
|
|
5
|
+
/**
|
|
6
|
+
* Handles the processing of SQL clauses (WHERE, GROUP BY, HAVING, etc.)
|
|
7
|
+
*/
|
|
8
|
+
class ProcessHandler {
|
|
9
|
+
constructor(graph, dataSourceHandler) {
|
|
10
|
+
this.graph = graph;
|
|
11
|
+
this.dataSourceHandler = dataSourceHandler;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Processes SQL clauses in the correct execution order
|
|
15
|
+
*/
|
|
16
|
+
processQueryClauses(query, context, currentNodeId, cteNames, queryProcessor) {
|
|
17
|
+
let resultNodeId = currentNodeId;
|
|
18
|
+
// 2. Process WHERE clause
|
|
19
|
+
if (query.whereClause && resultNodeId) {
|
|
20
|
+
resultNodeId = this.processWhereClause(query.whereClause, context, resultNodeId, cteNames, queryProcessor);
|
|
21
|
+
}
|
|
22
|
+
// 3. Process GROUP BY clause
|
|
23
|
+
if (query.groupByClause && resultNodeId) {
|
|
24
|
+
resultNodeId = this.processGroupByClause(context, resultNodeId);
|
|
25
|
+
}
|
|
26
|
+
// 4. Process HAVING clause
|
|
27
|
+
if (query.havingClause && resultNodeId) {
|
|
28
|
+
resultNodeId = this.processHavingClause(context, resultNodeId);
|
|
29
|
+
}
|
|
30
|
+
// 5. Process SELECT clause - only add if needed
|
|
31
|
+
if (this.shouldAddSelectNode(query, context)) {
|
|
32
|
+
resultNodeId = this.processSelectClause(context, resultNodeId);
|
|
33
|
+
}
|
|
34
|
+
// 6. Process ORDER BY clause
|
|
35
|
+
if (query.orderByClause && resultNodeId) {
|
|
36
|
+
resultNodeId = this.processOrderByClause(context, resultNodeId);
|
|
37
|
+
}
|
|
38
|
+
// 7. Process LIMIT/OFFSET clause
|
|
39
|
+
if ((query.limitClause || query.offsetClause) && resultNodeId) {
|
|
40
|
+
resultNodeId = this.processLimitClause(context, resultNodeId, !!query.offsetClause);
|
|
41
|
+
}
|
|
42
|
+
return resultNodeId;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Processes WHERE clause including subqueries
|
|
46
|
+
*/
|
|
47
|
+
processWhereClause(whereClause, context, currentNodeId, cteNames, queryProcessor) {
|
|
48
|
+
const whereNode = this.graph.createProcessNode('where', context);
|
|
49
|
+
// Connect FROM result to WHERE
|
|
50
|
+
this.graph.addConnection(currentNodeId, whereNode.id);
|
|
51
|
+
// Process WHERE subqueries
|
|
52
|
+
const whereSubqueryInfo = this.processWhereSubqueries(whereClause, context, cteNames, queryProcessor);
|
|
53
|
+
// Connect WHERE subqueries to WHERE node
|
|
54
|
+
for (const subqueryInfo of whereSubqueryInfo) {
|
|
55
|
+
this.graph.addConnection(subqueryInfo.nodeId, whereNode.id, subqueryInfo.operator);
|
|
56
|
+
}
|
|
57
|
+
return whereNode.id;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Processes GROUP BY clause
|
|
61
|
+
*/
|
|
62
|
+
processGroupByClause(context, currentNodeId) {
|
|
63
|
+
const groupByNode = this.graph.createProcessNode('group by', context);
|
|
64
|
+
this.graph.addConnection(currentNodeId, groupByNode.id);
|
|
65
|
+
return groupByNode.id;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Processes HAVING clause
|
|
69
|
+
*/
|
|
70
|
+
processHavingClause(context, currentNodeId) {
|
|
71
|
+
const havingNode = this.graph.createProcessNode('having', context);
|
|
72
|
+
this.graph.addConnection(currentNodeId, havingNode.id);
|
|
73
|
+
return havingNode.id;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Processes SELECT clause
|
|
77
|
+
*/
|
|
78
|
+
processSelectClause(context, currentNodeId) {
|
|
79
|
+
const selectNode = this.graph.createProcessNode('select', context);
|
|
80
|
+
this.graph.addConnection(currentNodeId, selectNode.id);
|
|
81
|
+
return selectNode.id;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Processes ORDER BY clause
|
|
85
|
+
*/
|
|
86
|
+
processOrderByClause(context, currentNodeId) {
|
|
87
|
+
const orderByNode = this.graph.createProcessNode('order by', context);
|
|
88
|
+
this.graph.addConnection(currentNodeId, orderByNode.id);
|
|
89
|
+
return orderByNode.id;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Processes LIMIT/OFFSET clause
|
|
93
|
+
*/
|
|
94
|
+
processLimitClause(context, currentNodeId, hasOffset) {
|
|
95
|
+
const limitNode = this.graph.createProcessNode(hasOffset ? 'limit/offset' : 'limit', context);
|
|
96
|
+
this.graph.addConnection(currentNodeId, limitNode.id);
|
|
97
|
+
return limitNode.id;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Determines if a SELECT node should be added
|
|
101
|
+
*/
|
|
102
|
+
shouldAddSelectNode(query, context) {
|
|
103
|
+
// Always add SELECT node - UNION combines SELECT results, not raw data sources
|
|
104
|
+
return true;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Processes WHERE clause to find subqueries (EXISTS, IN, etc.)
|
|
108
|
+
*/
|
|
109
|
+
processWhereSubqueries(whereClause, context, cteNames, queryProcessor) {
|
|
110
|
+
const subqueryInfo = [];
|
|
111
|
+
this.processValueComponent(whereClause.condition, context, cteNames, queryProcessor, subqueryInfo);
|
|
112
|
+
return subqueryInfo;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Recursively processes ValueComponent to find InlineQuery (subqueries)
|
|
116
|
+
*/
|
|
117
|
+
processValueComponent(value, context, cteNames, queryProcessor, subqueryInfo) {
|
|
118
|
+
if (value instanceof ValueComponent_1.InlineQuery) {
|
|
119
|
+
const subqueryNodeId = queryProcessor(value.selectQuery, `${context}_where_subquery`, cteNames);
|
|
120
|
+
subqueryInfo.push({ nodeId: subqueryNodeId, operator: 'SUBQUERY' });
|
|
121
|
+
}
|
|
122
|
+
else if (value instanceof ValueComponent_1.FunctionCall) {
|
|
123
|
+
const functionName = value.qualifiedName.name.toString().toLowerCase();
|
|
124
|
+
if (functionName === 'exists' && value.argument instanceof ValueComponent_1.InlineQuery) {
|
|
125
|
+
const subqueryNodeId = queryProcessor(value.argument.selectQuery, `${context}_where_subquery`, cteNames);
|
|
126
|
+
subqueryInfo.push({ nodeId: subqueryNodeId, operator: 'EXISTS' });
|
|
127
|
+
}
|
|
128
|
+
else if (value.argument) {
|
|
129
|
+
this.processValueComponent(value.argument, context, cteNames, queryProcessor, subqueryInfo);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
else if (value instanceof ValueComponent_1.UnaryExpression) {
|
|
133
|
+
const operator = value.operator.value.toLowerCase();
|
|
134
|
+
if ((operator === 'exists' || operator === 'not exists') && value.expression instanceof ValueComponent_1.InlineQuery) {
|
|
135
|
+
this.processQueryTablesOnly(value.expression.selectQuery, context, cteNames, subqueryInfo, operator.toUpperCase());
|
|
136
|
+
}
|
|
137
|
+
else {
|
|
138
|
+
this.processValueComponent(value.expression, context, cteNames, queryProcessor, subqueryInfo);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
else if (value instanceof ValueComponent_1.BinaryExpression) {
|
|
142
|
+
const operator = value.operator.value.toLowerCase();
|
|
143
|
+
if ((operator === 'in' || operator === 'not in') && value.right instanceof ValueComponent_1.InlineQuery) {
|
|
144
|
+
this.processQueryTablesOnly(value.right.selectQuery, context, cteNames, subqueryInfo, operator.toUpperCase());
|
|
145
|
+
}
|
|
146
|
+
else {
|
|
147
|
+
this.processValueComponent(value.left, context, cteNames, queryProcessor, subqueryInfo);
|
|
148
|
+
this.processValueComponent(value.right, context, cteNames, queryProcessor, subqueryInfo);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
else if (value && typeof value === 'object') {
|
|
152
|
+
for (const [key, val] of Object.entries(value)) {
|
|
153
|
+
if (val && typeof val === 'object') {
|
|
154
|
+
if (Array.isArray(val)) {
|
|
155
|
+
val.forEach(item => {
|
|
156
|
+
if (item && typeof item === 'object' && 'selectQuery' in item) {
|
|
157
|
+
this.processValueComponent(item, context, cteNames, queryProcessor, subqueryInfo);
|
|
158
|
+
}
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
else if ('selectQuery' in val) {
|
|
162
|
+
this.processValueComponent(val, context, cteNames, queryProcessor, subqueryInfo);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Processes only the tables from a query for EXISTS/NOT EXISTS conditions
|
|
170
|
+
*/
|
|
171
|
+
processQueryTablesOnly(query, context, cteNames, subqueryInfo, operator) {
|
|
172
|
+
if (query.fromClause) {
|
|
173
|
+
const tableNodes = this.dataSourceHandler.extractTableNodeIds(query.fromClause, cteNames);
|
|
174
|
+
for (const tableNodeId of tableNodes) {
|
|
175
|
+
subqueryInfo.push({ nodeId: tableNodeId, operator });
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
exports.ProcessHandler = ProcessHandler;
|
|
181
|
+
//# 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
|
*/
|
|
@@ -26,12 +26,48 @@ class EscapedIdentifierTokenReader extends BaseTokenReader_1.BaseTokenReader {
|
|
|
26
26
|
return this.createLexeme(Lexeme_1.TokenType.Identifier, identifier);
|
|
27
27
|
}
|
|
28
28
|
// SQLServer escaped identifier (escape character is square bracket)
|
|
29
|
-
if (char === '[' && (previous
|
|
29
|
+
if (char === '[' && this.isSqlServerBracketIdentifier(previous)) {
|
|
30
30
|
const identifier = this.readEscapedIdentifier(']');
|
|
31
31
|
return this.createLexeme(Lexeme_1.TokenType.Identifier, identifier);
|
|
32
32
|
}
|
|
33
33
|
return null;
|
|
34
34
|
}
|
|
35
|
+
/**
|
|
36
|
+
* Check if the bracket at current position represents a SQL Server bracket identifier
|
|
37
|
+
* vs array access notation
|
|
38
|
+
*/
|
|
39
|
+
isSqlServerBracketIdentifier(previous) {
|
|
40
|
+
// Don't treat as SQL Server bracket identifier if previous token suggests array access
|
|
41
|
+
if ((previous === null || previous === void 0 ? void 0 : previous.value) === "array") {
|
|
42
|
+
return false;
|
|
43
|
+
}
|
|
44
|
+
// Look ahead to see what's inside the brackets
|
|
45
|
+
const start = this.position + 1; // after opening bracket
|
|
46
|
+
let pos = start;
|
|
47
|
+
// Scan until closing bracket or end of input
|
|
48
|
+
while (pos < this.input.length && this.input[pos] !== ']') {
|
|
49
|
+
const char = this.input[pos];
|
|
50
|
+
// If we find colons, operators, or expressions, it's likely array access
|
|
51
|
+
if (char === ':' || char === ',' || char === '+' || char === '-' ||
|
|
52
|
+
char === '*' || char === '/' || char === '(' || char === ')') {
|
|
53
|
+
return false;
|
|
54
|
+
}
|
|
55
|
+
pos++;
|
|
56
|
+
}
|
|
57
|
+
// If we didn't find a closing bracket, it's malformed anyway
|
|
58
|
+
if (pos >= this.input.length) {
|
|
59
|
+
return false;
|
|
60
|
+
}
|
|
61
|
+
// Check the content between brackets
|
|
62
|
+
const content = this.input.slice(start, pos).trim();
|
|
63
|
+
// Empty brackets are never SQL Server identifiers - they should be array access
|
|
64
|
+
if (content === '') {
|
|
65
|
+
return false;
|
|
66
|
+
}
|
|
67
|
+
// SQL Server bracket identifiers typically contain simple identifiers with dots
|
|
68
|
+
// Array access contains numbers, expressions, colons
|
|
69
|
+
return /^[a-zA-Z_][a-zA-Z0-9_]*(\.[a-zA-Z_][a-zA-Z0-9_]*)*$/.test(content);
|
|
70
|
+
}
|
|
35
71
|
/**
|
|
36
72
|
* Read an escaped identifier (surrounded by delimiters)
|
|
37
73
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EscapedIdentifierTokenReader.js","sourceRoot":"","sources":["../../../src/tokenReaders/EscapedIdentifierTokenReader.ts"],"names":[],"mappings":";;;AAAA,uDAAoD;AACpD,6CAAqD;AAGrD;;GAEG;AACH,MAAa,4BAA6B,SAAQ,iCAAe;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,kBAAS,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,kBAAS,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QAC/D,CAAC;QAED,oEAAoE;QACpE,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ,
|
|
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
|
}
|
|
@@ -58,6 +58,30 @@ class LiteralTokenReader extends BaseTokenReader_1.BaseTokenReader {
|
|
|
58
58
|
if (charLookupTable_1.CharLookupTable.isDigit(char)) {
|
|
59
59
|
return this.createLexeme(Lexeme_1.TokenType.Literal, this.readDigit());
|
|
60
60
|
}
|
|
61
|
+
// PostgreSQL dollar-quoted string ($$content$$ or $tag$content$tag$)
|
|
62
|
+
if (char === '$' && this.isDollarQuotedString()) {
|
|
63
|
+
return this.createLexeme(Lexeme_1.TokenType.Literal, this.readDollarQuotedString());
|
|
64
|
+
}
|
|
65
|
+
// SQL Server MONEY literal ($123.45)
|
|
66
|
+
// Only treat as MONEY if it contains decimal point or comma to avoid conflict with PostgreSQL $1 parameters
|
|
67
|
+
if (char === '$' && this.canRead(1) && charLookupTable_1.CharLookupTable.isDigit(this.input[this.position + 1])) {
|
|
68
|
+
// Look ahead to see if this looks like a MONEY literal (has . or ,)
|
|
69
|
+
let pos = this.position + 1;
|
|
70
|
+
let hasDecimalOrComma = false;
|
|
71
|
+
while (pos < this.input.length && (charLookupTable_1.CharLookupTable.isDigit(this.input[pos]) || this.input[pos] === ',' || this.input[pos] === '.')) {
|
|
72
|
+
if (this.input[pos] === '.' || this.input[pos] === ',') {
|
|
73
|
+
hasDecimalOrComma = true;
|
|
74
|
+
break;
|
|
75
|
+
}
|
|
76
|
+
pos++;
|
|
77
|
+
}
|
|
78
|
+
if (hasDecimalOrComma) {
|
|
79
|
+
const start = this.position;
|
|
80
|
+
this.position++; // Skip $
|
|
81
|
+
const numberPart = this.readMoneyDigit();
|
|
82
|
+
return this.createLexeme(Lexeme_1.TokenType.Literal, '$' + numberPart);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
61
85
|
// Signed number
|
|
62
86
|
if ((char === '+' || char === '-') && this.determineSignOrOperator(previous) === "sign") {
|
|
63
87
|
const sign = char;
|
|
@@ -171,6 +195,31 @@ class LiteralTokenReader extends BaseTokenReader_1.BaseTokenReader {
|
|
|
171
195
|
}
|
|
172
196
|
return this.input.slice(start, this.position);
|
|
173
197
|
}
|
|
198
|
+
/**
|
|
199
|
+
* Read a MONEY value (allows commas as thousand separators)
|
|
200
|
+
*/
|
|
201
|
+
readMoneyDigit() {
|
|
202
|
+
const start = this.position;
|
|
203
|
+
let hasDot = false;
|
|
204
|
+
// Consider decimal point and comma separators
|
|
205
|
+
while (this.canRead()) {
|
|
206
|
+
const char = this.input[this.position];
|
|
207
|
+
if (char === '.' && !hasDot) {
|
|
208
|
+
hasDot = true;
|
|
209
|
+
}
|
|
210
|
+
else if (char === ',' && !hasDot) {
|
|
211
|
+
// Allow comma as thousand separator before decimal point
|
|
212
|
+
}
|
|
213
|
+
else if (!charLookupTable_1.CharLookupTable.isDigit(char)) {
|
|
214
|
+
break;
|
|
215
|
+
}
|
|
216
|
+
this.position++;
|
|
217
|
+
}
|
|
218
|
+
if (start === this.position) {
|
|
219
|
+
throw new Error(`Unexpected character. position: ${start}\n${this.getDebugPositionInfo(start)}`);
|
|
220
|
+
}
|
|
221
|
+
return this.input.slice(start, this.position);
|
|
222
|
+
}
|
|
174
223
|
/**
|
|
175
224
|
* Read a string literal
|
|
176
225
|
*/
|
|
@@ -203,6 +252,76 @@ class LiteralTokenReader extends BaseTokenReader_1.BaseTokenReader {
|
|
|
203
252
|
return value;
|
|
204
253
|
}
|
|
205
254
|
}
|
|
255
|
+
/**
|
|
256
|
+
* Check if the current position starts a PostgreSQL dollar-quoted string
|
|
257
|
+
*/
|
|
258
|
+
isDollarQuotedString() {
|
|
259
|
+
if (!this.canRead(1)) {
|
|
260
|
+
return false;
|
|
261
|
+
}
|
|
262
|
+
// Check for $$ pattern
|
|
263
|
+
if (this.input[this.position + 1] === '$') {
|
|
264
|
+
return true;
|
|
265
|
+
}
|
|
266
|
+
// Check for $tag$ pattern
|
|
267
|
+
let pos = this.position + 1;
|
|
268
|
+
while (pos < this.input.length) {
|
|
269
|
+
const char = this.input[pos];
|
|
270
|
+
if (char === '$') {
|
|
271
|
+
return true;
|
|
272
|
+
}
|
|
273
|
+
if (!this.isAlphanumeric(char) && char !== '_') {
|
|
274
|
+
return false;
|
|
275
|
+
}
|
|
276
|
+
pos++;
|
|
277
|
+
}
|
|
278
|
+
return false;
|
|
279
|
+
}
|
|
280
|
+
/**
|
|
281
|
+
* Read a PostgreSQL dollar-quoted string
|
|
282
|
+
*/
|
|
283
|
+
readDollarQuotedString() {
|
|
284
|
+
const start = this.position;
|
|
285
|
+
// Read the opening tag
|
|
286
|
+
this.position++; // Skip initial $
|
|
287
|
+
let tag = '';
|
|
288
|
+
// Read tag characters until the closing $
|
|
289
|
+
while (this.canRead() && this.input[this.position] !== '$') {
|
|
290
|
+
tag += this.input[this.position];
|
|
291
|
+
this.position++;
|
|
292
|
+
}
|
|
293
|
+
if (!this.canRead()) {
|
|
294
|
+
throw new Error(`Unexpected end of input while reading dollar-quoted string tag at position ${start}`);
|
|
295
|
+
}
|
|
296
|
+
this.position++; // Skip closing $ of opening tag
|
|
297
|
+
// Now read the content until we find the closing tag
|
|
298
|
+
const openingTag = '$' + tag + '$';
|
|
299
|
+
const closingTag = openingTag;
|
|
300
|
+
let content = '';
|
|
301
|
+
while (this.canRead()) {
|
|
302
|
+
// Check if we're at the start of the closing tag
|
|
303
|
+
if (this.input.substring(this.position, this.position + closingTag.length) === closingTag) {
|
|
304
|
+
// Found closing tag
|
|
305
|
+
this.position += closingTag.length;
|
|
306
|
+
return openingTag + content + closingTag;
|
|
307
|
+
}
|
|
308
|
+
content += this.input[this.position];
|
|
309
|
+
this.position++;
|
|
310
|
+
}
|
|
311
|
+
throw new Error(`Unclosed dollar-quoted string starting at position ${start}. Expected closing tag: ${closingTag}`);
|
|
312
|
+
}
|
|
313
|
+
/**
|
|
314
|
+
* Check if character is alphanumeric (letter or digit)
|
|
315
|
+
*/
|
|
316
|
+
isAlphanumeric(char) {
|
|
317
|
+
if (char.length !== 1)
|
|
318
|
+
return false;
|
|
319
|
+
const code = char.charCodeAt(0);
|
|
320
|
+
// Check if digit (0-9) or letter (a-z, A-Z)
|
|
321
|
+
return (code >= 48 && code <= 57) || // 0-9
|
|
322
|
+
(code >= 65 && code <= 90) || // A-Z
|
|
323
|
+
(code >= 97 && code <= 122); // a-z
|
|
324
|
+
}
|
|
206
325
|
}
|
|
207
326
|
exports.LiteralTokenReader = LiteralTokenReader;
|
|
208
327
|
//# 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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"}
|