rawsql-ts 0.12.0 → 0.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/dist/esm/index.js +11 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/index.min.js +16 -16
- package/dist/esm/index.min.js.map +3 -3
- package/dist/esm/src/index.d.ts +12 -0
- package/dist/esm/src/index.js +11 -0
- package/dist/esm/src/index.js.map +1 -1
- package/dist/esm/src/models/Clause.d.ts +7 -3
- package/dist/esm/src/models/Clause.js +17 -4
- package/dist/esm/src/models/Clause.js.map +1 -1
- package/dist/esm/src/models/DDLStatements.d.ts +14 -2
- package/dist/esm/src/models/DDLStatements.js +12 -0
- package/dist/esm/src/models/DDLStatements.js.map +1 -1
- package/dist/esm/src/models/InsertQuery.d.ts +1 -4
- package/dist/esm/src/models/InsertQuery.js +3 -5
- package/dist/esm/src/models/InsertQuery.js.map +1 -1
- package/dist/esm/src/models/SqlPrintToken.d.ts +1 -0
- package/dist/esm/src/models/SqlPrintToken.js +1 -0
- package/dist/esm/src/models/SqlPrintToken.js.map +1 -1
- package/dist/esm/src/models/TableDefinitionModel.d.ts +39 -0
- package/dist/esm/src/models/TableDefinitionModel.js +77 -0
- package/dist/esm/src/models/TableDefinitionModel.js.map +1 -0
- package/dist/esm/src/models/ValuesQuery.d.ts +2 -0
- package/dist/esm/src/models/ValuesQuery.js +1 -0
- package/dist/esm/src/models/ValuesQuery.js.map +1 -1
- package/dist/esm/src/parsers/AlterTableParser.js +1 -1
- package/dist/esm/src/parsers/AlterTableParser.js.map +1 -1
- package/dist/esm/src/parsers/InsertQueryParser.js +4 -1
- package/dist/esm/src/parsers/InsertQueryParser.js.map +1 -1
- package/dist/esm/src/parsers/ReturningClauseParser.js +33 -47
- package/dist/esm/src/parsers/ReturningClauseParser.js.map +1 -1
- package/dist/esm/src/parsers/SqlParser.d.ts +0 -1
- package/dist/esm/src/parsers/SqlParser.js +44 -58
- package/dist/esm/src/parsers/SqlParser.js.map +1 -1
- package/dist/esm/src/parsers/SqlPrintTokenParser.d.ts +1 -0
- package/dist/esm/src/parsers/SqlPrintTokenParser.js +23 -5
- package/dist/esm/src/parsers/SqlPrintTokenParser.js.map +1 -1
- package/dist/esm/src/tokenReaders/LiteralTokenReader.js +7 -0
- package/dist/esm/src/tokenReaders/LiteralTokenReader.js.map +1 -1
- package/dist/esm/src/transformers/DDLDiffGenerator.d.ts +14 -0
- package/dist/esm/src/transformers/DDLDiffGenerator.js +197 -0
- package/dist/esm/src/transformers/DDLDiffGenerator.js.map +1 -0
- package/dist/esm/src/transformers/DDLGeneralizer.d.ts +13 -0
- package/dist/esm/src/transformers/DDLGeneralizer.js +98 -0
- package/dist/esm/src/transformers/DDLGeneralizer.js.map +1 -0
- package/dist/esm/src/transformers/DDLToFixtureConverter.d.ts +19 -0
- package/dist/esm/src/transformers/DDLToFixtureConverter.js +202 -0
- package/dist/esm/src/transformers/DDLToFixtureConverter.js.map +1 -0
- package/dist/esm/src/transformers/DeleteResultSelectConverter.d.ts +53 -0
- package/dist/esm/src/transformers/DeleteResultSelectConverter.js +394 -0
- package/dist/esm/src/transformers/DeleteResultSelectConverter.js.map +1 -0
- package/dist/esm/src/transformers/FixtureCteBuilder.d.ts +60 -0
- package/dist/esm/src/transformers/FixtureCteBuilder.js +147 -0
- package/dist/esm/src/transformers/FixtureCteBuilder.js.map +1 -0
- package/dist/esm/src/transformers/InsertQuerySelectValuesConverter.js +5 -2
- package/dist/esm/src/transformers/InsertQuerySelectValuesConverter.js.map +1 -1
- package/dist/esm/src/transformers/InsertResultSelectConverter.d.ts +64 -0
- package/dist/esm/src/transformers/InsertResultSelectConverter.js +495 -0
- package/dist/esm/src/transformers/InsertResultSelectConverter.js.map +1 -0
- package/dist/esm/src/transformers/MergeResultSelectConverter.d.ts +38 -0
- package/dist/esm/src/transformers/MergeResultSelectConverter.js +306 -0
- package/dist/esm/src/transformers/MergeResultSelectConverter.js.map +1 -0
- package/dist/esm/src/transformers/QueryBuilder.d.ts +11 -0
- package/dist/esm/src/transformers/QueryBuilder.js +19 -3
- package/dist/esm/src/transformers/QueryBuilder.js.map +1 -1
- package/dist/esm/src/transformers/SelectResultSelectConverter.d.ts +10 -0
- package/dist/esm/src/transformers/SelectResultSelectConverter.js +32 -0
- package/dist/esm/src/transformers/SelectResultSelectConverter.js.map +1 -0
- package/dist/esm/src/transformers/SimulatedSelectConverter.d.ts +23 -0
- package/dist/esm/src/transformers/SimulatedSelectConverter.js +61 -0
- package/dist/esm/src/transformers/SimulatedSelectConverter.js.map +1 -0
- package/dist/esm/src/transformers/UpdateResultSelectConverter.d.ts +51 -0
- package/dist/esm/src/transformers/UpdateResultSelectConverter.js +340 -0
- package/dist/esm/src/transformers/UpdateResultSelectConverter.js.map +1 -0
- package/dist/esm/src/utils/SelectQueryWithClauseHelper.d.ts +12 -0
- package/dist/esm/src/utils/SelectQueryWithClauseHelper.js +43 -0
- package/dist/esm/src/utils/SelectQueryWithClauseHelper.js.map +1 -0
- package/dist/esm/src/utils/ValueComponentRewriter.d.ts +3 -0
- package/dist/esm/src/utils/ValueComponentRewriter.js +180 -0
- package/dist/esm/src/utils/ValueComponentRewriter.js.map +1 -0
- package/dist/esm/tsconfig.browser.tsbuildinfo +1 -1
- package/dist/formatters/OriginalFormatRestorer.js +139 -0
- package/dist/formatters/OriginalFormatRestorer.js.map +1 -0
- package/dist/index.js +144 -0
- package/dist/index.js.map +1 -0
- package/dist/index.min.js +17 -17
- package/dist/index.min.js.map +3 -3
- package/dist/models/BinarySelectQuery.js +198 -0
- package/dist/models/BinarySelectQuery.js.map +1 -0
- package/dist/models/CTEError.js +37 -0
- package/dist/models/CTEError.js.map +1 -0
- package/dist/models/Clause.js +535 -0
- package/dist/models/Clause.js.map +1 -0
- package/dist/models/CreateTableQuery.js +135 -0
- package/dist/models/CreateTableQuery.js.map +1 -0
- package/dist/models/DDLStatements.js +275 -0
- package/dist/models/DDLStatements.js.map +1 -0
- package/dist/models/DeleteQuery.js +20 -0
- package/dist/models/DeleteQuery.js.map +1 -0
- package/dist/models/FormattingLexeme.js +3 -0
- package/dist/models/FormattingLexeme.js.map +1 -0
- package/dist/models/HintClause.js +41 -0
- package/dist/models/HintClause.js.map +1 -0
- package/dist/models/InsertQuery.js +23 -0
- package/dist/models/InsertQuery.js.map +1 -0
- package/dist/models/KeywordTrie.js +54 -0
- package/dist/models/KeywordTrie.js.map +1 -0
- package/dist/models/Lexeme.js +22 -0
- package/dist/models/Lexeme.js.map +1 -0
- package/dist/models/MergeQuery.js +104 -0
- package/dist/models/MergeQuery.js.map +1 -0
- package/dist/models/SelectQuery.js +22 -0
- package/dist/models/SelectQuery.js.map +1 -0
- package/dist/models/SimpleSelectQuery.js +648 -0
- package/dist/models/SimpleSelectQuery.js.map +1 -0
- package/dist/models/SqlComponent.js +73 -0
- package/dist/models/SqlComponent.js.map +1 -0
- package/dist/models/SqlPrintToken.js +143 -0
- package/dist/models/SqlPrintToken.js.map +1 -0
- package/dist/models/TableDefinitionModel.js +86 -0
- package/dist/models/TableDefinitionModel.js.map +1 -0
- package/dist/models/UpdateQuery.js +29 -0
- package/dist/models/UpdateQuery.js.map +1 -0
- package/dist/models/ValueComponent.js +380 -0
- package/dist/models/ValueComponent.js.map +1 -0
- package/dist/models/ValuesQuery.js +62 -0
- package/dist/models/ValuesQuery.js.map +1 -0
- package/dist/parsers/AlterTableParser.js +490 -0
- package/dist/parsers/AlterTableParser.js.map +1 -0
- package/dist/parsers/AnalyzeStatementParser.js +94 -0
- package/dist/parsers/AnalyzeStatementParser.js.map +1 -0
- package/dist/parsers/CommandExpressionParser.js +213 -0
- package/dist/parsers/CommandExpressionParser.js.map +1 -0
- package/dist/parsers/CommonTableParser.js +177 -0
- package/dist/parsers/CommonTableParser.js.map +1 -0
- package/dist/parsers/CreateIndexParser.js +241 -0
- package/dist/parsers/CreateIndexParser.js.map +1 -0
- package/dist/parsers/CreateTableParser.js +738 -0
- package/dist/parsers/CreateTableParser.js.map +1 -0
- package/dist/parsers/DeleteClauseParser.js +37 -0
- package/dist/parsers/DeleteClauseParser.js.map +1 -0
- package/dist/parsers/DeleteQueryParser.js +77 -0
- package/dist/parsers/DeleteQueryParser.js.map +1 -0
- package/dist/parsers/DropConstraintParser.js +51 -0
- package/dist/parsers/DropConstraintParser.js.map +1 -0
- package/dist/parsers/DropIndexParser.js +73 -0
- package/dist/parsers/DropIndexParser.js.map +1 -0
- package/dist/parsers/DropTableParser.js +63 -0
- package/dist/parsers/DropTableParser.js.map +1 -0
- package/dist/parsers/ExplainStatementParser.js +189 -0
- package/dist/parsers/ExplainStatementParser.js.map +1 -0
- package/dist/parsers/FetchClauseParser.js +89 -0
- package/dist/parsers/FetchClauseParser.js.map +1 -0
- package/dist/parsers/ForClauseParser.js +58 -0
- package/dist/parsers/ForClauseParser.js.map +1 -0
- package/dist/parsers/FromClauseParser.js +54 -0
- package/dist/parsers/FromClauseParser.js.map +1 -0
- package/dist/parsers/FullNameParser.js +110 -0
- package/dist/parsers/FullNameParser.js.map +1 -0
- package/dist/parsers/FunctionExpressionParser.js +524 -0
- package/dist/parsers/FunctionExpressionParser.js.map +1 -0
- package/dist/parsers/GroupByParser.js +58 -0
- package/dist/parsers/GroupByParser.js.map +1 -0
- package/dist/parsers/HavingParser.js +36 -0
- package/dist/parsers/HavingParser.js.map +1 -0
- package/dist/parsers/IdentifierDecorator.js +17 -0
- package/dist/parsers/IdentifierDecorator.js.map +1 -0
- package/dist/parsers/IdentifierParser.js +15 -0
- package/dist/parsers/IdentifierParser.js.map +1 -0
- package/dist/parsers/InsertQueryParser.js +162 -0
- package/dist/parsers/InsertQueryParser.js.map +1 -0
- package/dist/parsers/JoinClauseParser.js +117 -0
- package/dist/parsers/JoinClauseParser.js.map +1 -0
- package/dist/parsers/JoinOnClauseParser.js +21 -0
- package/dist/parsers/JoinOnClauseParser.js.map +1 -0
- package/dist/parsers/JoinUsingClauseParser.js +23 -0
- package/dist/parsers/JoinUsingClauseParser.js.map +1 -0
- package/dist/parsers/KeywordParser.js +99 -0
- package/dist/parsers/KeywordParser.js.map +1 -0
- package/dist/parsers/LimitClauseParser.js +38 -0
- package/dist/parsers/LimitClauseParser.js.map +1 -0
- package/dist/parsers/LiteralParser.js +48 -0
- package/dist/parsers/LiteralParser.js.map +1 -0
- package/dist/parsers/MergeQueryParser.js +483 -0
- package/dist/parsers/MergeQueryParser.js.map +1 -0
- package/dist/parsers/OffsetClauseParser.js +42 -0
- package/dist/parsers/OffsetClauseParser.js.map +1 -0
- package/dist/parsers/OrderByClauseParser.js +108 -0
- package/dist/parsers/OrderByClauseParser.js.map +1 -0
- package/dist/parsers/OverExpressionParser.js +44 -0
- package/dist/parsers/OverExpressionParser.js.map +1 -0
- package/dist/parsers/ParameterDecorator.js +40 -0
- package/dist/parsers/ParameterDecorator.js.map +1 -0
- package/dist/parsers/ParameterExpressionParser.js +24 -0
- package/dist/parsers/ParameterExpressionParser.js.map +1 -0
- package/dist/parsers/ParenExpressionParser.js +109 -0
- package/dist/parsers/ParenExpressionParser.js.map +1 -0
- package/dist/parsers/ParseError.js +25 -0
- package/dist/parsers/ParseError.js.map +1 -0
- package/dist/parsers/PartitionByParser.js +53 -0
- package/dist/parsers/PartitionByParser.js.map +1 -0
- package/dist/parsers/ReturningClauseParser.js +64 -0
- package/dist/parsers/ReturningClauseParser.js.map +1 -0
- package/dist/parsers/SelectClauseParser.js +244 -0
- package/dist/parsers/SelectClauseParser.js.map +1 -0
- package/dist/parsers/SelectQueryParser.js +564 -0
- package/dist/parsers/SelectQueryParser.js.map +1 -0
- package/dist/parsers/SequenceParser.js +245 -0
- package/dist/parsers/SequenceParser.js.map +1 -0
- package/dist/parsers/SetClauseParser.js +125 -0
- package/dist/parsers/SetClauseParser.js.map +1 -0
- package/dist/parsers/SourceAliasExpressionParser.js +60 -0
- package/dist/parsers/SourceAliasExpressionParser.js.map +1 -0
- package/dist/parsers/SourceExpressionParser.js +69 -0
- package/dist/parsers/SourceExpressionParser.js.map +1 -0
- package/dist/parsers/SourceParser.js +144 -0
- package/dist/parsers/SourceParser.js.map +1 -0
- package/dist/parsers/SqlParser.js +431 -0
- package/dist/parsers/SqlParser.js.map +1 -0
- package/dist/parsers/SqlPrintTokenParser.js +3289 -0
- package/dist/parsers/SqlPrintTokenParser.js.map +1 -0
- package/dist/parsers/SqlTokenizer.js +553 -0
- package/dist/parsers/SqlTokenizer.js.map +1 -0
- package/dist/parsers/StringSpecifierExpressionParser.js +22 -0
- package/dist/parsers/StringSpecifierExpressionParser.js.map +1 -0
- package/dist/parsers/UnaryExpressionParser.js +39 -0
- package/dist/parsers/UnaryExpressionParser.js.map +1 -0
- package/dist/parsers/UpdateClauseParser.js +21 -0
- package/dist/parsers/UpdateClauseParser.js.map +1 -0
- package/dist/parsers/UpdateQueryParser.js +98 -0
- package/dist/parsers/UpdateQueryParser.js.map +1 -0
- package/dist/parsers/UsingClauseParser.js +33 -0
- package/dist/parsers/UsingClauseParser.js.map +1 -0
- package/dist/parsers/ValueParser.js +562 -0
- package/dist/parsers/ValueParser.js.map +1 -0
- package/dist/parsers/ValuesQueryParser.js +112 -0
- package/dist/parsers/ValuesQueryParser.js.map +1 -0
- package/dist/parsers/WhereClauseParser.js +51 -0
- package/dist/parsers/WhereClauseParser.js.map +1 -0
- package/dist/parsers/WindowClauseParser.js +57 -0
- package/dist/parsers/WindowClauseParser.js.map +1 -0
- package/dist/parsers/WindowExpressionParser.js +163 -0
- package/dist/parsers/WindowExpressionParser.js.map +1 -0
- package/dist/parsers/WithClauseParser.js +165 -0
- package/dist/parsers/WithClauseParser.js.map +1 -0
- package/dist/parsers/utils/LexemeCommentUtils.js +29 -0
- package/dist/parsers/utils/LexemeCommentUtils.js.map +1 -0
- package/dist/reporting/models/DataFlowEdge.js +58 -0
- package/dist/reporting/models/DataFlowEdge.js.map +1 -0
- package/dist/reporting/models/DataFlowGraph.js +138 -0
- package/dist/reporting/models/DataFlowGraph.js.map +1 -0
- package/dist/reporting/models/DataFlowNode.js +148 -0
- package/dist/reporting/models/DataFlowNode.js.map +1 -0
- package/dist/reporting/services/CTEHandler.js +58 -0
- package/dist/reporting/services/CTEHandler.js.map +1 -0
- package/dist/reporting/services/DataSourceHandler.js +95 -0
- package/dist/reporting/services/DataSourceHandler.js.map +1 -0
- package/dist/reporting/services/JoinHandler.js +84 -0
- package/dist/reporting/services/JoinHandler.js.map +1 -0
- package/dist/reporting/services/ProcessHandler.js +26 -0
- package/dist/reporting/services/ProcessHandler.js.map +1 -0
- package/dist/src/index.d.ts +15 -0
- package/dist/src/index.js +13 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/models/Clause.d.ts +7 -3
- package/dist/src/models/Clause.js +16 -3
- package/dist/src/models/Clause.js.map +1 -1
- package/dist/src/models/DDLStatements.d.ts +97 -2
- package/dist/src/models/DDLStatements.js +14 -1
- package/dist/src/models/DDLStatements.js.map +1 -1
- package/dist/src/models/InsertQuery.d.ts +1 -4
- package/dist/src/models/InsertQuery.js +3 -5
- package/dist/src/models/InsertQuery.js.map +1 -1
- package/dist/src/models/SqlPrintToken.d.ts +6 -0
- package/dist/src/models/SqlPrintToken.js +1 -0
- package/dist/src/models/SqlPrintToken.js.map +1 -1
- package/dist/src/models/TableDefinitionModel.d.ts +41 -0
- package/dist/src/models/TableDefinitionModel.js +85 -0
- package/dist/src/models/TableDefinitionModel.js.map +1 -0
- package/dist/src/models/ValueComponent.d.ts +2 -1
- package/dist/src/models/ValuesQuery.d.ts +2 -0
- package/dist/src/models/ValuesQuery.js +1 -0
- package/dist/src/models/ValuesQuery.js.map +1 -1
- package/dist/src/parsers/AlterTableParser.d.ts +1 -0
- package/dist/src/parsers/AlterTableParser.js +26 -5
- package/dist/src/parsers/AlterTableParser.js.map +1 -1
- package/dist/src/parsers/FunctionExpressionParser.d.ts +1 -0
- package/dist/src/parsers/InsertQueryParser.js +4 -1
- package/dist/src/parsers/InsertQueryParser.js.map +1 -1
- package/dist/src/parsers/ReturningClauseParser.js +33 -47
- package/dist/src/parsers/ReturningClauseParser.js.map +1 -1
- package/dist/src/parsers/SequenceParser.d.ts +16 -0
- package/dist/src/parsers/SqlParser.d.ts +4 -3
- package/dist/src/parsers/SqlParser.js +44 -63
- package/dist/src/parsers/SqlParser.js.map +1 -1
- package/dist/src/parsers/SqlPrintTokenParser.d.ts +9 -0
- package/dist/src/parsers/SqlPrintTokenParser.js +22 -4
- package/dist/src/parsers/SqlPrintTokenParser.js.map +1 -1
- package/dist/src/parsers/SqlTokenizer.d.ts +1 -0
- package/dist/src/tokenReaders/LiteralTokenReader.js +7 -0
- package/dist/src/tokenReaders/LiteralTokenReader.js.map +1 -1
- package/dist/src/transformers/DDLDiffGenerator.d.ts +18 -0
- package/dist/src/transformers/DDLDiffGenerator.js +313 -0
- package/dist/src/transformers/DDLDiffGenerator.js.map +1 -0
- package/dist/src/transformers/DDLGeneralizer.d.ts +13 -0
- package/dist/src/transformers/DDLGeneralizer.js +119 -0
- package/dist/src/transformers/DDLGeneralizer.js.map +1 -0
- package/dist/src/transformers/DDLToFixtureConverter.d.ts +19 -0
- package/dist/src/transformers/DDLToFixtureConverter.js +206 -0
- package/dist/src/transformers/DDLToFixtureConverter.js.map +1 -0
- package/dist/src/transformers/DeleteResultSelectConverter.d.ts +53 -0
- package/dist/src/transformers/DeleteResultSelectConverter.js +398 -0
- package/dist/src/transformers/DeleteResultSelectConverter.js.map +1 -0
- package/dist/src/transformers/FixtureCteBuilder.d.ts +60 -0
- package/dist/src/transformers/FixtureCteBuilder.js +151 -0
- package/dist/src/transformers/FixtureCteBuilder.js.map +1 -0
- package/dist/src/transformers/InsertQuerySelectValuesConverter.js +5 -2
- package/dist/src/transformers/InsertQuerySelectValuesConverter.js.map +1 -1
- package/dist/src/transformers/InsertResultSelectConverter.d.ts +67 -0
- package/dist/src/transformers/InsertResultSelectConverter.js +499 -0
- package/dist/src/transformers/InsertResultSelectConverter.js.map +1 -0
- package/dist/src/transformers/MergeResultSelectConverter.d.ts +38 -0
- package/dist/src/transformers/MergeResultSelectConverter.js +310 -0
- package/dist/src/transformers/MergeResultSelectConverter.js.map +1 -0
- package/dist/src/transformers/QueryBuilder.d.ts +11 -0
- package/dist/src/transformers/QueryBuilder.js +19 -3
- package/dist/src/transformers/QueryBuilder.js.map +1 -1
- package/dist/src/transformers/SelectResultSelectConverter.d.ts +10 -0
- package/dist/src/transformers/SelectResultSelectConverter.js +36 -0
- package/dist/src/transformers/SelectResultSelectConverter.js.map +1 -0
- package/dist/src/transformers/SimulatedSelectConverter.d.ts +23 -0
- package/dist/src/transformers/SimulatedSelectConverter.js +65 -0
- package/dist/src/transformers/SimulatedSelectConverter.js.map +1 -0
- package/dist/src/transformers/UpdateResultSelectConverter.d.ts +51 -0
- package/dist/src/transformers/UpdateResultSelectConverter.js +344 -0
- package/dist/src/transformers/UpdateResultSelectConverter.js.map +1 -0
- package/dist/src/types/GenericFixture.d.ts +17 -0
- package/dist/src/utils/SelectQueryWithClauseHelper.d.ts +12 -0
- package/dist/src/utils/SelectQueryWithClauseHelper.js +47 -0
- package/dist/src/utils/SelectQueryWithClauseHelper.js.map +1 -0
- package/dist/src/utils/TableNameUtils.d.ts +10 -0
- package/dist/src/utils/ValueComponentRewriter.d.ts +3 -0
- package/dist/src/utils/ValueComponentRewriter.js +183 -0
- package/dist/src/utils/ValueComponentRewriter.js.map +1 -0
- package/dist/tokenReaders/BaseTokenReader.js +86 -0
- package/dist/tokenReaders/BaseTokenReader.js.map +1 -0
- package/dist/tokenReaders/CommandTokenReader.js +221 -0
- package/dist/tokenReaders/CommandTokenReader.js.map +1 -0
- package/dist/tokenReaders/EscapedIdentifierTokenReader.js +99 -0
- package/dist/tokenReaders/EscapedIdentifierTokenReader.js.map +1 -0
- package/dist/tokenReaders/FunctionTokenReader.js +47 -0
- package/dist/tokenReaders/FunctionTokenReader.js.map +1 -0
- package/dist/tokenReaders/IdentifierTokenReader.js +34 -0
- package/dist/tokenReaders/IdentifierTokenReader.js.map +1 -0
- package/dist/tokenReaders/LiteralTokenReader.js +329 -0
- package/dist/tokenReaders/LiteralTokenReader.js.map +1 -0
- package/dist/tokenReaders/OperatorTokenReader.js +152 -0
- package/dist/tokenReaders/OperatorTokenReader.js.map +1 -0
- package/dist/tokenReaders/ParameterTokenReader.js +190 -0
- package/dist/tokenReaders/ParameterTokenReader.js.map +1 -0
- package/dist/tokenReaders/StringSpecifierTokenReader.js +31 -0
- package/dist/tokenReaders/StringSpecifierTokenReader.js.map +1 -0
- package/dist/tokenReaders/SymbolTokenReader.js +35 -0
- package/dist/tokenReaders/SymbolTokenReader.js.map +1 -0
- package/dist/tokenReaders/TokenReaderManager.js +110 -0
- package/dist/tokenReaders/TokenReaderManager.js.map +1 -0
- package/dist/tokenReaders/TypeTokenReader.js +69 -0
- package/dist/tokenReaders/TypeTokenReader.js.map +1 -0
- package/dist/transformers/AliasRenamer.js +600 -0
- package/dist/transformers/AliasRenamer.js.map +1 -0
- package/dist/transformers/CTEBuilder.js +188 -0
- package/dist/transformers/CTEBuilder.js.map +1 -0
- package/dist/transformers/CTECollector.js +409 -0
- package/dist/transformers/CTECollector.js.map +1 -0
- package/dist/transformers/CTEComposer.js +302 -0
- package/dist/transformers/CTEComposer.js.map +1 -0
- package/dist/transformers/CTEDependencyAnalyzer.js +285 -0
- package/dist/transformers/CTEDependencyAnalyzer.js.map +1 -0
- package/dist/transformers/CTEDependencyTracer.js +253 -0
- package/dist/transformers/CTEDependencyTracer.js.map +1 -0
- package/dist/transformers/CTEDisabler.js +355 -0
- package/dist/transformers/CTEDisabler.js.map +1 -0
- package/dist/transformers/CTEInjector.js +83 -0
- package/dist/transformers/CTEInjector.js.map +1 -0
- package/dist/transformers/CTENormalizer.js +46 -0
- package/dist/transformers/CTENormalizer.js.map +1 -0
- package/dist/transformers/CTEQueryDecomposer.js +589 -0
- package/dist/transformers/CTEQueryDecomposer.js.map +1 -0
- package/dist/transformers/CTERenamer.js +486 -0
- package/dist/transformers/CTERenamer.js.map +1 -0
- package/dist/transformers/CTETableReferenceCollector.js +358 -0
- package/dist/transformers/CTETableReferenceCollector.js.map +1 -0
- package/dist/transformers/ColumnReferenceCollector.js +478 -0
- package/dist/transformers/ColumnReferenceCollector.js.map +1 -0
- package/dist/transformers/DDLDiffGenerator.js +313 -0
- package/dist/transformers/DDLDiffGenerator.js.map +1 -0
- package/dist/transformers/DDLGeneralizer.js +119 -0
- package/dist/transformers/DDLGeneralizer.js.map +1 -0
- package/dist/transformers/DDLToFixtureConverter.js +206 -0
- package/dist/transformers/DDLToFixtureConverter.js.map +1 -0
- package/dist/transformers/DeleteResultSelectConverter.js +414 -0
- package/dist/transformers/DeleteResultSelectConverter.js.map +1 -0
- package/dist/transformers/DynamicQueryBuilder.js +164 -0
- package/dist/transformers/DynamicQueryBuilder.js.map +1 -0
- package/dist/transformers/EnhancedJsonMapping.js +223 -0
- package/dist/transformers/EnhancedJsonMapping.js.map +1 -0
- package/dist/transformers/FilterableItemCollector.js +259 -0
- package/dist/transformers/FilterableItemCollector.js.map +1 -0
- package/dist/transformers/FixtureCteBuilder.js +151 -0
- package/dist/transformers/FixtureCteBuilder.js.map +1 -0
- package/dist/transformers/FormatOptionResolver.js +67 -0
- package/dist/transformers/FormatOptionResolver.js.map +1 -0
- package/dist/transformers/Formatter.js +38 -0
- package/dist/transformers/Formatter.js.map +1 -0
- package/dist/transformers/InsertQuerySelectValuesConverter.js +125 -0
- package/dist/transformers/InsertQuerySelectValuesConverter.js.map +1 -0
- package/dist/transformers/InsertResultSelectConverter.js +589 -0
- package/dist/transformers/InsertResultSelectConverter.js.map +1 -0
- package/dist/transformers/JoinAggregationDecomposer.js +497 -0
- package/dist/transformers/JoinAggregationDecomposer.js.map +1 -0
- package/dist/transformers/JsonMappingConverter.js +392 -0
- package/dist/transformers/JsonMappingConverter.js.map +1 -0
- package/dist/transformers/JsonMappingUnifier.js +216 -0
- package/dist/transformers/JsonMappingUnifier.js.map +1 -0
- package/dist/transformers/LinePrinter.js +148 -0
- package/dist/transformers/LinePrinter.js.map +1 -0
- package/dist/transformers/MergeResultSelectConverter.js +310 -0
- package/dist/transformers/MergeResultSelectConverter.js.map +1 -0
- package/dist/transformers/ModelDrivenJsonMapping.js +122 -0
- package/dist/transformers/ModelDrivenJsonMapping.js.map +1 -0
- package/dist/transformers/OnelineFormattingHelper.js +99 -0
- package/dist/transformers/OnelineFormattingHelper.js.map +1 -0
- package/dist/transformers/ParameterCollector.js +37 -0
- package/dist/transformers/ParameterCollector.js.map +1 -0
- package/dist/transformers/PostgresArrayEntityCteBuilder.js +458 -0
- package/dist/transformers/PostgresArrayEntityCteBuilder.js.map +1 -0
- package/dist/transformers/PostgresJsonQueryBuilder.js +245 -0
- package/dist/transformers/PostgresJsonQueryBuilder.js.map +1 -0
- package/dist/transformers/PostgresObjectEntityCteBuilder.js +347 -0
- package/dist/transformers/PostgresObjectEntityCteBuilder.js.map +1 -0
- package/dist/transformers/QueryBuilder.js +649 -0
- package/dist/transformers/QueryBuilder.js.map +1 -0
- package/dist/transformers/QueryFlowDiagramGenerator.js +157 -0
- package/dist/transformers/QueryFlowDiagramGenerator.js.map +1 -0
- package/dist/transformers/SchemaCollector.js +523 -0
- package/dist/transformers/SchemaCollector.js.map +1 -0
- package/dist/transformers/SelectResultSelectConverter.js +36 -0
- package/dist/transformers/SelectResultSelectConverter.js.map +1 -0
- package/dist/transformers/SelectValueCollector.js +244 -0
- package/dist/transformers/SelectValueCollector.js.map +1 -0
- package/dist/transformers/SelectableColumnCollector.js +674 -0
- package/dist/transformers/SelectableColumnCollector.js.map +1 -0
- package/dist/transformers/SimulatedSelectConverter.js +65 -0
- package/dist/transformers/SimulatedSelectConverter.js.map +1 -0
- package/dist/transformers/SmartRenamer.js +422 -0
- package/dist/transformers/SmartRenamer.js.map +1 -0
- package/dist/transformers/SqlFormatter.js +77 -0
- package/dist/transformers/SqlFormatter.js.map +1 -0
- package/dist/transformers/SqlIdentifierRenamer.js +504 -0
- package/dist/transformers/SqlIdentifierRenamer.js.map +1 -0
- package/dist/transformers/SqlOutputToken.js +13 -0
- package/dist/transformers/SqlOutputToken.js.map +1 -0
- package/dist/transformers/SqlPaginationInjector.js +108 -0
- package/dist/transformers/SqlPaginationInjector.js.map +1 -0
- package/dist/transformers/SqlParamInjector.js +802 -0
- package/dist/transformers/SqlParamInjector.js.map +1 -0
- package/dist/transformers/SqlParameterBinder.js +70 -0
- package/dist/transformers/SqlParameterBinder.js.map +1 -0
- package/dist/transformers/SqlPrinter.js +1478 -0
- package/dist/transformers/SqlPrinter.js.map +1 -0
- package/dist/transformers/SqlSortInjector.js +153 -0
- package/dist/transformers/SqlSortInjector.js.map +1 -0
- package/dist/transformers/TableColumnResolver.js +3 -0
- package/dist/transformers/TableColumnResolver.js.map +1 -0
- package/dist/transformers/TableSourceCollector.js +439 -0
- package/dist/transformers/TableSourceCollector.js.map +1 -0
- package/dist/transformers/TypeTransformationPostProcessor.js +363 -0
- package/dist/transformers/TypeTransformationPostProcessor.js.map +1 -0
- package/dist/transformers/UpdateResultSelectConverter.js +359 -0
- package/dist/transformers/UpdateResultSelectConverter.js.map +1 -0
- package/dist/transformers/UpstreamSelectQueryFinder.js +184 -0
- package/dist/transformers/UpstreamSelectQueryFinder.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/types/Formatting.js +3 -0
- package/dist/types/Formatting.js.map +1 -0
- package/dist/types/GenericFixture.js +3 -0
- package/dist/types/GenericFixture.js.map +1 -0
- package/dist/utils/CTERegionDetector.js +464 -0
- package/dist/utils/CTERegionDetector.js.map +1 -0
- package/dist/utils/CommentEditor.js +345 -0
- package/dist/utils/CommentEditor.js.map +1 -0
- package/dist/utils/CommentUtils.js +69 -0
- package/dist/utils/CommentUtils.js.map +1 -0
- package/dist/utils/CursorContextAnalyzer.js +338 -0
- package/dist/utils/CursorContextAnalyzer.js.map +1 -0
- package/dist/utils/IntelliSenseApi.js +292 -0
- package/dist/utils/IntelliSenseApi.js.map +1 -0
- package/dist/utils/JsonSchemaValidator.js +215 -0
- package/dist/utils/JsonSchemaValidator.js.map +1 -0
- package/dist/utils/KeywordCache.js +206 -0
- package/dist/utils/KeywordCache.js.map +1 -0
- package/dist/utils/LexemeCursor.js +314 -0
- package/dist/utils/LexemeCursor.js.map +1 -0
- package/dist/utils/MultiQuerySplitter.js +292 -0
- package/dist/utils/MultiQuerySplitter.js.map +1 -0
- package/dist/utils/OperatorPrecedence.js +107 -0
- package/dist/utils/OperatorPrecedence.js.map +1 -0
- package/dist/utils/ParameterDetector.js +53 -0
- package/dist/utils/ParameterDetector.js.map +1 -0
- package/dist/utils/ParameterHelper.js +31 -0
- package/dist/utils/ParameterHelper.js.map +1 -0
- package/dist/utils/ParameterRemover.js +783 -0
- package/dist/utils/ParameterRemover.js.map +1 -0
- package/dist/utils/ParserStringUtils.js +31 -0
- package/dist/utils/ParserStringUtils.js.map +1 -0
- package/dist/utils/PositionAwareParser.js +363 -0
- package/dist/utils/PositionAwareParser.js.map +1 -0
- package/dist/utils/SchemaManager.js +217 -0
- package/dist/utils/SchemaManager.js.map +1 -0
- package/dist/utils/ScopeResolver.js +272 -0
- package/dist/utils/ScopeResolver.js.map +1 -0
- package/dist/utils/SelectQueryWithClauseHelper.js +47 -0
- package/dist/utils/SelectQueryWithClauseHelper.js.map +1 -0
- package/dist/utils/SqlSchemaValidator.js +55 -0
- package/dist/utils/SqlSchemaValidator.js.map +1 -0
- package/dist/utils/TableNameUtils.js +35 -0
- package/dist/utils/TableNameUtils.js.map +1 -0
- package/dist/utils/TextPositionUtils.js +128 -0
- package/dist/utils/TextPositionUtils.js.map +1 -0
- package/dist/utils/ValueComponentRewriter.js +187 -0
- package/dist/utils/ValueComponentRewriter.js.map +1 -0
- package/dist/utils/charLookupTable.js +73 -0
- package/dist/utils/charLookupTable.js.map +1 -0
- package/dist/utils/stringUtils.js +230 -0
- package/dist/utils/stringUtils.js.map +1 -0
- package/package.json +62 -62
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SourceParser = void 0;
|
|
4
|
+
const FullNameParser_1 = require("./FullNameParser");
|
|
5
|
+
const Clause_1 = require("../models/Clause");
|
|
6
|
+
const Lexeme_1 = require("../models/Lexeme");
|
|
7
|
+
const SelectQueryParser_1 = require("./SelectQueryParser");
|
|
8
|
+
const SqlTokenizer_1 = require("./SqlTokenizer");
|
|
9
|
+
const ValueParser_1 = require("./ValueParser");
|
|
10
|
+
class SourceParser {
|
|
11
|
+
// Parse SQL string to AST (was: parse)
|
|
12
|
+
static parse(query) {
|
|
13
|
+
const tokenizer = new SqlTokenizer_1.SqlTokenizer(query); // Initialize tokenizer
|
|
14
|
+
const lexemes = tokenizer.readLexmes(); // Get tokens
|
|
15
|
+
// Parse
|
|
16
|
+
const result = this.parseFromLexeme(lexemes, 0);
|
|
17
|
+
// Error if there are remaining tokens
|
|
18
|
+
if (result.newIndex < lexemes.length) {
|
|
19
|
+
throw new Error(`Syntax error: Unexpected token "${lexemes[result.newIndex].value}" at position ${result.newIndex}. The source component is complete but there are additional tokens.`);
|
|
20
|
+
}
|
|
21
|
+
return result.value;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Parses only a TableSource from the given lexemes, regardless of the presence of parentheses after the identifier.
|
|
25
|
+
* This method is specifically used for cases like INSERT queries (e.g., "insert into table_name (col1, col2)")
|
|
26
|
+
* where a parenthesis immediately following the table name could otherwise be misinterpreted as a function call.
|
|
27
|
+
* By using this method, the parser forcibly treats the source as a TableSource.
|
|
28
|
+
*
|
|
29
|
+
* @param lexemes The array of lexemes to parse.
|
|
30
|
+
* @param index The starting index in the lexeme array.
|
|
31
|
+
* @returns An object containing the parsed TableSource and the new index.
|
|
32
|
+
*/
|
|
33
|
+
static parseTableSourceFromLexemes(lexemes, index) {
|
|
34
|
+
const fullNameResult = FullNameParser_1.FullNameParser.parseFromLexeme(lexemes, index);
|
|
35
|
+
return this.parseTableSource(fullNameResult);
|
|
36
|
+
}
|
|
37
|
+
// Parse from lexeme array (was: parse)
|
|
38
|
+
static parseFromLexeme(lexemes, index) {
|
|
39
|
+
let idx = index;
|
|
40
|
+
// Handle subquery
|
|
41
|
+
if (idx < lexemes.length && (lexemes[idx].type & Lexeme_1.TokenType.OpenParen)) {
|
|
42
|
+
return this.parseParenSource(lexemes, idx);
|
|
43
|
+
}
|
|
44
|
+
// Retrieve the full name only once and reuse the result
|
|
45
|
+
const fullNameResult = FullNameParser_1.FullNameParser.parseFromLexeme(lexemes, idx);
|
|
46
|
+
// Handle function-based source (determine by lastTokenType)
|
|
47
|
+
if (fullNameResult.lastTokenType & Lexeme_1.TokenType.Function) {
|
|
48
|
+
// Also use fullNameResult as argument for parseFunctionSource
|
|
49
|
+
return SourceParser.parseFunctionSource(lexemes, fullNameResult);
|
|
50
|
+
}
|
|
51
|
+
// Handle table source (regular table, potentially schema-qualified)
|
|
52
|
+
return SourceParser.parseTableSource(fullNameResult);
|
|
53
|
+
}
|
|
54
|
+
static parseTableSource(fullNameResult) {
|
|
55
|
+
const { namespaces, name, newIndex } = fullNameResult;
|
|
56
|
+
const value = new Clause_1.TableSource(namespaces, name.name);
|
|
57
|
+
// Transfer positioned comments from the table name to TableSource
|
|
58
|
+
if (name.positionedComments && name.positionedComments.length > 0) {
|
|
59
|
+
value.positionedComments = name.positionedComments;
|
|
60
|
+
}
|
|
61
|
+
else if (name.comments && name.comments.length > 0) {
|
|
62
|
+
value.comments = name.comments;
|
|
63
|
+
}
|
|
64
|
+
return { value, newIndex };
|
|
65
|
+
}
|
|
66
|
+
static parseFunctionSource(lexemes, fullNameResult) {
|
|
67
|
+
let idx = fullNameResult.newIndex;
|
|
68
|
+
const { namespaces, name } = fullNameResult;
|
|
69
|
+
const argument = ValueParser_1.ValueParser.parseArgument(Lexeme_1.TokenType.OpenParen, Lexeme_1.TokenType.CloseParen, lexemes, idx);
|
|
70
|
+
idx = argument.newIndex;
|
|
71
|
+
const functionName = name.name;
|
|
72
|
+
const result = new Clause_1.FunctionSource({ namespaces: namespaces, name: functionName }, argument.value);
|
|
73
|
+
return { value: result, newIndex: idx };
|
|
74
|
+
}
|
|
75
|
+
static parseParenSource(lexemes, index) {
|
|
76
|
+
let idx = index;
|
|
77
|
+
// capture the open parenthesis and its comments
|
|
78
|
+
const openParenToken = lexemes[idx];
|
|
79
|
+
// skip the open parenthesis
|
|
80
|
+
idx++;
|
|
81
|
+
if (idx >= lexemes.length) {
|
|
82
|
+
throw new Error(`Syntax error: Unexpected end of input at position ${idx}. Expected a subquery or nested expression after opening parenthesis.`);
|
|
83
|
+
}
|
|
84
|
+
// Support both SELECT and VALUES in subqueries
|
|
85
|
+
const keyword = lexemes[idx].value;
|
|
86
|
+
if (keyword === "select" || keyword === "values" || keyword === "with") {
|
|
87
|
+
const result = this.parseSubQuerySource(lexemes, idx, openParenToken);
|
|
88
|
+
idx = result.newIndex;
|
|
89
|
+
if (idx < lexemes.length && lexemes[idx].type == Lexeme_1.TokenType.CloseParen) {
|
|
90
|
+
// skip the closing parenthesis
|
|
91
|
+
idx++;
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
throw new Error(`Syntax error at position ${idx}: Missing closing parenthesis. Each opening parenthesis must have a matching closing parenthesis.`);
|
|
95
|
+
}
|
|
96
|
+
return { value: result.value, newIndex: idx };
|
|
97
|
+
}
|
|
98
|
+
else if (lexemes[idx].type == Lexeme_1.TokenType.OpenParen) {
|
|
99
|
+
const result = this.parseParenSource(lexemes, idx);
|
|
100
|
+
idx = result.newIndex;
|
|
101
|
+
if (idx < lexemes.length && lexemes[idx].type == Lexeme_1.TokenType.CloseParen) {
|
|
102
|
+
// skip the closing parenthesis
|
|
103
|
+
idx++;
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
throw new Error(`Syntax error at position ${idx}: Missing closing parenthesis. Each opening parenthesis must have a matching closing parenthesis.`);
|
|
107
|
+
}
|
|
108
|
+
return { value: result.value, newIndex: idx };
|
|
109
|
+
}
|
|
110
|
+
throw new Error(`Syntax error at position ${idx}: Expected 'SELECT' keyword, 'VALUES' keyword, or opening parenthesis '(' but found "${lexemes[idx].value}".`);
|
|
111
|
+
}
|
|
112
|
+
static parseSubQuerySource(lexemes, index, openParenToken) {
|
|
113
|
+
let idx = index;
|
|
114
|
+
// Use the new parseFromLexeme method and destructure the result
|
|
115
|
+
const { value: selectQuery, newIndex } = SelectQueryParser_1.SelectQueryParser.parseFromLexeme(lexemes, idx);
|
|
116
|
+
idx = newIndex;
|
|
117
|
+
// Transfer opening paren comments to the subquery (similar to function arguments)
|
|
118
|
+
if (openParenToken && openParenToken.positionedComments && openParenToken.positionedComments.length > 0) {
|
|
119
|
+
// Convert "after" positioned comments from opening paren to "before" comments for the subquery
|
|
120
|
+
const afterComments = openParenToken.positionedComments.filter(pc => pc.position === 'after');
|
|
121
|
+
if (afterComments.length > 0) {
|
|
122
|
+
const beforeComments = afterComments.map(pc => ({
|
|
123
|
+
position: 'before',
|
|
124
|
+
comments: pc.comments
|
|
125
|
+
}));
|
|
126
|
+
// Merge with existing positioned comments on the subquery
|
|
127
|
+
if (selectQuery.positionedComments) {
|
|
128
|
+
selectQuery.positionedComments = [...beforeComments, ...selectQuery.positionedComments];
|
|
129
|
+
}
|
|
130
|
+
else {
|
|
131
|
+
selectQuery.positionedComments = beforeComments;
|
|
132
|
+
}
|
|
133
|
+
// Clear legacy comments to prevent duplication
|
|
134
|
+
if (selectQuery.comments) {
|
|
135
|
+
selectQuery.comments = null;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
const subQuerySource = new Clause_1.SubQuerySource(selectQuery);
|
|
140
|
+
return { value: subQuerySource, newIndex: idx };
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
exports.SourceParser = SourceParser;
|
|
144
|
+
//# sourceMappingURL=SourceParser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SourceParser.js","sourceRoot":"","sources":["../../src/parsers/SourceParser.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,431 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SqlParser = void 0;
|
|
4
|
+
const SqlTokenizer_1 = require("./SqlTokenizer");
|
|
5
|
+
const SelectQueryParser_1 = require("./SelectQueryParser");
|
|
6
|
+
const InsertQueryParser_1 = require("./InsertQueryParser");
|
|
7
|
+
const UpdateQueryParser_1 = require("./UpdateQueryParser");
|
|
8
|
+
const DeleteQueryParser_1 = require("./DeleteQueryParser");
|
|
9
|
+
const CreateTableParser_1 = require("./CreateTableParser");
|
|
10
|
+
const MergeQueryParser_1 = require("./MergeQueryParser");
|
|
11
|
+
const WithClauseParser_1 = require("./WithClauseParser");
|
|
12
|
+
const DropTableParser_1 = require("./DropTableParser");
|
|
13
|
+
const DropIndexParser_1 = require("./DropIndexParser");
|
|
14
|
+
const CreateIndexParser_1 = require("./CreateIndexParser");
|
|
15
|
+
const AlterTableParser_1 = require("./AlterTableParser");
|
|
16
|
+
const DropConstraintParser_1 = require("./DropConstraintParser");
|
|
17
|
+
const AnalyzeStatementParser_1 = require("./AnalyzeStatementParser");
|
|
18
|
+
const ExplainStatementParser_1 = require("./ExplainStatementParser");
|
|
19
|
+
const SequenceParser_1 = require("./SequenceParser");
|
|
20
|
+
/**
|
|
21
|
+
* Canonical entry point for SQL parsing.
|
|
22
|
+
* Delegates to dedicated parsers for SELECT, INSERT, UPDATE, and DELETE statements, and is designed to embrace additional statement types next.
|
|
23
|
+
*/
|
|
24
|
+
class SqlParser {
|
|
25
|
+
static parse(sql, options = {}) {
|
|
26
|
+
var _a, _b;
|
|
27
|
+
const skipEmpty = (_a = options.skipEmptyStatements) !== null && _a !== void 0 ? _a : true;
|
|
28
|
+
const mode = (_b = options.mode) !== null && _b !== void 0 ? _b : 'single';
|
|
29
|
+
const tokenizer = new SqlTokenizer_1.SqlTokenizer(sql);
|
|
30
|
+
// Acquire the first meaningful statement so future dispatching can inspect its leading keyword.
|
|
31
|
+
const first = this.consumeNextStatement(tokenizer, 0, skipEmpty);
|
|
32
|
+
if (!first) {
|
|
33
|
+
throw new Error('[SqlParser] No SQL statements found in input.');
|
|
34
|
+
}
|
|
35
|
+
const parsed = this.dispatchParse(first.segment, 1);
|
|
36
|
+
if (mode === 'single') {
|
|
37
|
+
// Ensure callers opting into single-statement mode are protected against trailing statements.
|
|
38
|
+
const remainder = this.consumeNextStatement(tokenizer, first.nextCursor, skipEmpty);
|
|
39
|
+
if (remainder) {
|
|
40
|
+
throw new Error('[SqlParser] Unexpected additional statement detected at index 2. Use parseMany or set mode to "multiple" to allow multiple statements.');
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
return parsed;
|
|
44
|
+
}
|
|
45
|
+
static parseMany(sql, options = {}) {
|
|
46
|
+
var _a;
|
|
47
|
+
const skipEmpty = (_a = options.skipEmptyStatements) !== null && _a !== void 0 ? _a : true;
|
|
48
|
+
const tokenizer = new SqlTokenizer_1.SqlTokenizer(sql);
|
|
49
|
+
const statements = [];
|
|
50
|
+
let cursor = 0;
|
|
51
|
+
let carry = null;
|
|
52
|
+
let index = 0;
|
|
53
|
+
while (true) {
|
|
54
|
+
// Collect the next logical statement segment, carrying forward detached comments when necessary.
|
|
55
|
+
const segment = tokenizer.readNextStatement(cursor, carry);
|
|
56
|
+
carry = null;
|
|
57
|
+
if (!segment) {
|
|
58
|
+
break;
|
|
59
|
+
}
|
|
60
|
+
cursor = segment.nextPosition;
|
|
61
|
+
if (segment.lexemes.length === 0) {
|
|
62
|
+
// Preserve dangling comments so they can attach to the next real statement.
|
|
63
|
+
if (segment.leadingComments && segment.leadingComments.length > 0) {
|
|
64
|
+
carry = segment.leadingComments;
|
|
65
|
+
}
|
|
66
|
+
if (skipEmpty || segment.rawText.trim().length === 0) {
|
|
67
|
+
continue;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
index++;
|
|
71
|
+
statements.push(this.dispatchParse(segment, index));
|
|
72
|
+
}
|
|
73
|
+
return statements;
|
|
74
|
+
}
|
|
75
|
+
static dispatchParse(segment, statementIndex) {
|
|
76
|
+
if (segment.lexemes.length === 0) {
|
|
77
|
+
throw new Error(`[SqlParser] Statement ${statementIndex} does not contain any tokens.`);
|
|
78
|
+
}
|
|
79
|
+
const firstToken = segment.lexemes[0].value.toLowerCase();
|
|
80
|
+
switch (firstToken) {
|
|
81
|
+
case 'select':
|
|
82
|
+
case 'values':
|
|
83
|
+
return this.parseSelectStatement(segment, statementIndex);
|
|
84
|
+
case 'with': {
|
|
85
|
+
const commandAfterWith = this.getCommandAfterWith(segment.lexemes);
|
|
86
|
+
switch (commandAfterWith) {
|
|
87
|
+
case 'insert into':
|
|
88
|
+
return this.parseInsertStatement(segment, statementIndex);
|
|
89
|
+
case 'update':
|
|
90
|
+
return this.parseUpdateStatement(segment, statementIndex);
|
|
91
|
+
case 'delete from':
|
|
92
|
+
return this.parseDeleteStatement(segment, statementIndex);
|
|
93
|
+
case 'merge into':
|
|
94
|
+
return this.parseMergeStatement(segment, statementIndex);
|
|
95
|
+
default:
|
|
96
|
+
return this.parseSelectStatement(segment, statementIndex);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
case 'insert into':
|
|
100
|
+
return this.parseInsertStatement(segment, statementIndex);
|
|
101
|
+
case 'update':
|
|
102
|
+
return this.parseUpdateStatement(segment, statementIndex);
|
|
103
|
+
case 'delete from':
|
|
104
|
+
return this.parseDeleteStatement(segment, statementIndex);
|
|
105
|
+
case 'create table':
|
|
106
|
+
case 'create temporary table':
|
|
107
|
+
return this.parseCreateTableStatement(segment, statementIndex);
|
|
108
|
+
case 'merge into':
|
|
109
|
+
return this.parseMergeStatement(segment, statementIndex);
|
|
110
|
+
case 'create index':
|
|
111
|
+
case 'create unique index':
|
|
112
|
+
return this.parseCreateIndexStatement(segment, statementIndex);
|
|
113
|
+
case 'create sequence':
|
|
114
|
+
case 'create temporary sequence':
|
|
115
|
+
case 'create temp sequence':
|
|
116
|
+
return this.parseCreateSequenceStatement(segment, statementIndex);
|
|
117
|
+
case 'drop table':
|
|
118
|
+
return this.parseDropTableStatement(segment, statementIndex);
|
|
119
|
+
case 'drop index':
|
|
120
|
+
return this.parseDropIndexStatement(segment, statementIndex);
|
|
121
|
+
case 'alter table':
|
|
122
|
+
return this.parseAlterTableStatement(segment, statementIndex);
|
|
123
|
+
case 'alter sequence':
|
|
124
|
+
return this.parseAlterSequenceStatement(segment, statementIndex);
|
|
125
|
+
case 'drop constraint':
|
|
126
|
+
return this.parseDropConstraintStatement(segment, statementIndex);
|
|
127
|
+
case 'analyze':
|
|
128
|
+
return this.parseAnalyzeStatement(segment, statementIndex);
|
|
129
|
+
case 'explain':
|
|
130
|
+
return this.parseExplainStatement(segment, statementIndex);
|
|
131
|
+
default:
|
|
132
|
+
throw new Error(`[SqlParser] Statement ${statementIndex} starts with unsupported token "${segment.lexemes[0].value}".`);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
static parseSelectStatement(segment, statementIndex) {
|
|
136
|
+
var _a, _b;
|
|
137
|
+
try {
|
|
138
|
+
const result = SelectQueryParser_1.SelectQueryParser.parseFromLexeme(segment.lexemes, 0);
|
|
139
|
+
if (result.newIndex < segment.lexemes.length) {
|
|
140
|
+
const unexpected = segment.lexemes[result.newIndex];
|
|
141
|
+
const position = (_b = (_a = unexpected.position) === null || _a === void 0 ? void 0 : _a.startPosition) !== null && _b !== void 0 ? _b : segment.statementStart;
|
|
142
|
+
throw new Error(`[SqlParser] Unexpected token "${unexpected.value}" in statement ${statementIndex} at character ${position}.`);
|
|
143
|
+
}
|
|
144
|
+
return result.value;
|
|
145
|
+
}
|
|
146
|
+
catch (error) {
|
|
147
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
148
|
+
throw new Error(`[SqlParser] Failed to parse SELECT statement ${statementIndex}: ${message}`);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
static parseExplainStatement(segment, statementIndex) {
|
|
152
|
+
var _a, _b;
|
|
153
|
+
try {
|
|
154
|
+
const result = ExplainStatementParser_1.ExplainStatementParser.parseFromLexeme(segment.lexemes, 0, (lexemes, nestedStart) => {
|
|
155
|
+
if (nestedStart >= lexemes.length) {
|
|
156
|
+
throw new Error("[ExplainStatementParser] Missing statement after EXPLAIN options.");
|
|
157
|
+
}
|
|
158
|
+
const nestedSegment = {
|
|
159
|
+
lexemes: lexemes.slice(nestedStart),
|
|
160
|
+
statementStart: segment.statementStart,
|
|
161
|
+
statementEnd: segment.statementEnd,
|
|
162
|
+
nextPosition: segment.nextPosition,
|
|
163
|
+
rawText: segment.rawText,
|
|
164
|
+
leadingComments: segment.leadingComments,
|
|
165
|
+
};
|
|
166
|
+
const statement = this.dispatchParse(nestedSegment, statementIndex);
|
|
167
|
+
return { value: statement, newIndex: lexemes.length };
|
|
168
|
+
});
|
|
169
|
+
if (result.newIndex < segment.lexemes.length) {
|
|
170
|
+
const unexpected = segment.lexemes[result.newIndex];
|
|
171
|
+
const position = (_b = (_a = unexpected.position) === null || _a === void 0 ? void 0 : _a.startPosition) !== null && _b !== void 0 ? _b : segment.statementStart;
|
|
172
|
+
throw new Error(`[SqlParser] Unexpected token "${unexpected.value}" in EXPLAIN statement ${statementIndex} at character ${position}.`);
|
|
173
|
+
}
|
|
174
|
+
return result.value;
|
|
175
|
+
}
|
|
176
|
+
catch (error) {
|
|
177
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
178
|
+
throw new Error(`[SqlParser] Failed to parse EXPLAIN statement ${statementIndex}: ${message}`);
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
static parseInsertStatement(segment, statementIndex) {
|
|
182
|
+
var _a, _b;
|
|
183
|
+
try {
|
|
184
|
+
const result = InsertQueryParser_1.InsertQueryParser.parseFromLexeme(segment.lexemes, 0);
|
|
185
|
+
if (result.newIndex < segment.lexemes.length) {
|
|
186
|
+
const unexpected = segment.lexemes[result.newIndex];
|
|
187
|
+
const position = (_b = (_a = unexpected.position) === null || _a === void 0 ? void 0 : _a.startPosition) !== null && _b !== void 0 ? _b : segment.statementStart;
|
|
188
|
+
throw new Error(`[SqlParser] Unexpected token "${unexpected.value}" in statement ${statementIndex} at character ${position}.`);
|
|
189
|
+
}
|
|
190
|
+
return result.value;
|
|
191
|
+
}
|
|
192
|
+
catch (error) {
|
|
193
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
194
|
+
throw new Error(`[SqlParser] Failed to parse INSERT statement ${statementIndex}: ${message}`);
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
static parseUpdateStatement(segment, statementIndex) {
|
|
198
|
+
var _a, _b;
|
|
199
|
+
try {
|
|
200
|
+
const result = UpdateQueryParser_1.UpdateQueryParser.parseFromLexeme(segment.lexemes, 0);
|
|
201
|
+
if (result.newIndex < segment.lexemes.length) {
|
|
202
|
+
const unexpected = segment.lexemes[result.newIndex];
|
|
203
|
+
const position = (_b = (_a = unexpected.position) === null || _a === void 0 ? void 0 : _a.startPosition) !== null && _b !== void 0 ? _b : segment.statementStart;
|
|
204
|
+
throw new Error(`[SqlParser] Unexpected token "${unexpected.value}" in statement ${statementIndex} at character ${position}.`);
|
|
205
|
+
}
|
|
206
|
+
return result.value;
|
|
207
|
+
}
|
|
208
|
+
catch (error) {
|
|
209
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
210
|
+
throw new Error(`[SqlParser] Failed to parse UPDATE statement ${statementIndex}: ${message}`);
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
static parseDeleteStatement(segment, statementIndex) {
|
|
214
|
+
var _a, _b;
|
|
215
|
+
try {
|
|
216
|
+
const result = DeleteQueryParser_1.DeleteQueryParser.parseFromLexeme(segment.lexemes, 0);
|
|
217
|
+
// Guard against trailing tokens that would indicate multiple statements in DELETE parsing.
|
|
218
|
+
if (result.newIndex < segment.lexemes.length) {
|
|
219
|
+
const unexpected = segment.lexemes[result.newIndex];
|
|
220
|
+
const position = (_b = (_a = unexpected.position) === null || _a === void 0 ? void 0 : _a.startPosition) !== null && _b !== void 0 ? _b : segment.statementStart;
|
|
221
|
+
throw new Error(`[SqlParser] Unexpected token "${unexpected.value}" in statement ${statementIndex} at character ${position}.`);
|
|
222
|
+
}
|
|
223
|
+
return result.value;
|
|
224
|
+
}
|
|
225
|
+
catch (error) {
|
|
226
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
227
|
+
throw new Error(`[SqlParser] Failed to parse DELETE statement ${statementIndex}: ${message}`);
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
static parseCreateTableStatement(segment, statementIndex) {
|
|
231
|
+
var _a, _b;
|
|
232
|
+
try {
|
|
233
|
+
const result = CreateTableParser_1.CreateTableParser.parseFromLexeme(segment.lexemes, 0);
|
|
234
|
+
if (result.newIndex < segment.lexemes.length) {
|
|
235
|
+
const unexpected = segment.lexemes[result.newIndex];
|
|
236
|
+
const position = (_b = (_a = unexpected.position) === null || _a === void 0 ? void 0 : _a.startPosition) !== null && _b !== void 0 ? _b : segment.statementStart;
|
|
237
|
+
throw new Error(`[SqlParser] Unexpected token "${unexpected.value}" in statement ${statementIndex} at character ${position}.`);
|
|
238
|
+
}
|
|
239
|
+
return result.value;
|
|
240
|
+
}
|
|
241
|
+
catch (error) {
|
|
242
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
243
|
+
throw new Error(`[SqlParser] Failed to parse CREATE TABLE statement ${statementIndex}: ${message}`);
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
static parseDropTableStatement(segment, statementIndex) {
|
|
247
|
+
var _a, _b;
|
|
248
|
+
try {
|
|
249
|
+
const result = DropTableParser_1.DropTableParser.parseFromLexeme(segment.lexemes, 0);
|
|
250
|
+
if (result.newIndex < segment.lexemes.length) {
|
|
251
|
+
const unexpected = segment.lexemes[result.newIndex];
|
|
252
|
+
const position = (_b = (_a = unexpected.position) === null || _a === void 0 ? void 0 : _a.startPosition) !== null && _b !== void 0 ? _b : segment.statementStart;
|
|
253
|
+
throw new Error(`[SqlParser] Unexpected token "${unexpected.value}" in statement ${statementIndex} at character ${position}.`);
|
|
254
|
+
}
|
|
255
|
+
return result.value;
|
|
256
|
+
}
|
|
257
|
+
catch (error) {
|
|
258
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
259
|
+
throw new Error(`[SqlParser] Failed to parse DROP TABLE statement ${statementIndex}: ${message}`);
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
static parseDropIndexStatement(segment, statementIndex) {
|
|
263
|
+
var _a, _b;
|
|
264
|
+
try {
|
|
265
|
+
const result = DropIndexParser_1.DropIndexParser.parseFromLexeme(segment.lexemes, 0);
|
|
266
|
+
if (result.newIndex < segment.lexemes.length) {
|
|
267
|
+
const unexpected = segment.lexemes[result.newIndex];
|
|
268
|
+
const position = (_b = (_a = unexpected.position) === null || _a === void 0 ? void 0 : _a.startPosition) !== null && _b !== void 0 ? _b : segment.statementStart;
|
|
269
|
+
throw new Error(`[SqlParser] Unexpected token "${unexpected.value}" in statement ${statementIndex} at character ${position}.`);
|
|
270
|
+
}
|
|
271
|
+
return result.value;
|
|
272
|
+
}
|
|
273
|
+
catch (error) {
|
|
274
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
275
|
+
throw new Error(`[SqlParser] Failed to parse DROP INDEX statement ${statementIndex}: ${message}`);
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
static parseCreateIndexStatement(segment, statementIndex) {
|
|
279
|
+
var _a, _b;
|
|
280
|
+
try {
|
|
281
|
+
const result = CreateIndexParser_1.CreateIndexParser.parseFromLexeme(segment.lexemes, 0);
|
|
282
|
+
if (result.newIndex < segment.lexemes.length) {
|
|
283
|
+
const unexpected = segment.lexemes[result.newIndex];
|
|
284
|
+
const position = (_b = (_a = unexpected.position) === null || _a === void 0 ? void 0 : _a.startPosition) !== null && _b !== void 0 ? _b : segment.statementStart;
|
|
285
|
+
throw new Error(`[SqlParser] Unexpected token "${unexpected.value}" in statement ${statementIndex} at character ${position}.`);
|
|
286
|
+
}
|
|
287
|
+
return result.value;
|
|
288
|
+
}
|
|
289
|
+
catch (error) {
|
|
290
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
291
|
+
throw new Error(`[SqlParser] Failed to parse CREATE INDEX statement ${statementIndex}: ${message}`);
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
static parseCreateSequenceStatement(segment, statementIndex) {
|
|
295
|
+
var _a, _b;
|
|
296
|
+
try {
|
|
297
|
+
const result = SequenceParser_1.CreateSequenceParser.parseFromLexeme(segment.lexemes, 0);
|
|
298
|
+
// Ensure no trailing lexemes remain after the CREATE SEQUENCE clause.
|
|
299
|
+
if (result.newIndex < segment.lexemes.length) {
|
|
300
|
+
const unexpected = segment.lexemes[result.newIndex];
|
|
301
|
+
const position = (_b = (_a = unexpected.position) === null || _a === void 0 ? void 0 : _a.startPosition) !== null && _b !== void 0 ? _b : segment.statementStart;
|
|
302
|
+
throw new Error(`[SqlParser] Unexpected token "${unexpected.value}" in statement ${statementIndex} at character ${position}.`);
|
|
303
|
+
}
|
|
304
|
+
return result.value;
|
|
305
|
+
}
|
|
306
|
+
catch (error) {
|
|
307
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
308
|
+
throw new Error(`[SqlParser] Failed to parse CREATE SEQUENCE statement ${statementIndex}: ${message}`);
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
static parseAlterSequenceStatement(segment, statementIndex) {
|
|
312
|
+
var _a, _b;
|
|
313
|
+
try {
|
|
314
|
+
const result = SequenceParser_1.AlterSequenceParser.parseFromLexeme(segment.lexemes, 0);
|
|
315
|
+
// Validate that the ALTER SEQUENCE statement consumed all available tokens.
|
|
316
|
+
if (result.newIndex < segment.lexemes.length) {
|
|
317
|
+
const unexpected = segment.lexemes[result.newIndex];
|
|
318
|
+
const position = (_b = (_a = unexpected.position) === null || _a === void 0 ? void 0 : _a.startPosition) !== null && _b !== void 0 ? _b : segment.statementStart;
|
|
319
|
+
throw new Error(`[SqlParser] Unexpected token "${unexpected.value}" in statement ${statementIndex} at character ${position}.`);
|
|
320
|
+
}
|
|
321
|
+
return result.value;
|
|
322
|
+
}
|
|
323
|
+
catch (error) {
|
|
324
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
325
|
+
throw new Error(`[SqlParser] Failed to parse ALTER SEQUENCE statement ${statementIndex}: ${message}`);
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
static parseAlterTableStatement(segment, statementIndex) {
|
|
329
|
+
var _a, _b;
|
|
330
|
+
try {
|
|
331
|
+
const result = AlterTableParser_1.AlterTableParser.parseFromLexeme(segment.lexemes, 0);
|
|
332
|
+
if (result.newIndex < segment.lexemes.length) {
|
|
333
|
+
const unexpected = segment.lexemes[result.newIndex];
|
|
334
|
+
const position = (_b = (_a = unexpected.position) === null || _a === void 0 ? void 0 : _a.startPosition) !== null && _b !== void 0 ? _b : segment.statementStart;
|
|
335
|
+
throw new Error(`[SqlParser] Unexpected token "${unexpected.value}" in statement ${statementIndex} at character ${position}.`);
|
|
336
|
+
}
|
|
337
|
+
return result.value;
|
|
338
|
+
}
|
|
339
|
+
catch (error) {
|
|
340
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
341
|
+
throw new Error(`[SqlParser] Failed to parse ALTER TABLE statement ${statementIndex}: ${message}`);
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
static parseDropConstraintStatement(segment, statementIndex) {
|
|
345
|
+
var _a, _b;
|
|
346
|
+
try {
|
|
347
|
+
const result = DropConstraintParser_1.DropConstraintParser.parseFromLexeme(segment.lexemes, 0);
|
|
348
|
+
if (result.newIndex < segment.lexemes.length) {
|
|
349
|
+
const unexpected = segment.lexemes[result.newIndex];
|
|
350
|
+
const position = (_b = (_a = unexpected.position) === null || _a === void 0 ? void 0 : _a.startPosition) !== null && _b !== void 0 ? _b : segment.statementStart;
|
|
351
|
+
throw new Error(`[SqlParser] Unexpected token "${unexpected.value}" in statement ${statementIndex} at character ${position}.`);
|
|
352
|
+
}
|
|
353
|
+
return result.value;
|
|
354
|
+
}
|
|
355
|
+
catch (error) {
|
|
356
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
357
|
+
throw new Error(`[SqlParser] Failed to parse DROP CONSTRAINT statement ${statementIndex}: ${message}`);
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
static parseAnalyzeStatement(segment, statementIndex) {
|
|
361
|
+
var _a, _b;
|
|
362
|
+
try {
|
|
363
|
+
// Delegate lexeme interpretation to the ANALYZE-specific parser.
|
|
364
|
+
const result = AnalyzeStatementParser_1.AnalyzeStatementParser.parseFromLexeme(segment.lexemes, 0);
|
|
365
|
+
// Ensure parsing consumed every lexeme belonging to this statement.
|
|
366
|
+
if (result.newIndex < segment.lexemes.length) {
|
|
367
|
+
const unexpected = segment.lexemes[result.newIndex];
|
|
368
|
+
const position = (_b = (_a = unexpected.position) === null || _a === void 0 ? void 0 : _a.startPosition) !== null && _b !== void 0 ? _b : segment.statementStart;
|
|
369
|
+
throw new Error(`[SqlParser] Unexpected token "${unexpected.value}" in statement ${statementIndex} at character ${position}.`);
|
|
370
|
+
}
|
|
371
|
+
return result.value;
|
|
372
|
+
}
|
|
373
|
+
catch (error) {
|
|
374
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
375
|
+
throw new Error(`[SqlParser] Failed to parse ANALYZE statement ${statementIndex}: ${message}`);
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
static parseMergeStatement(segment, statementIndex) {
|
|
379
|
+
var _a, _b;
|
|
380
|
+
try {
|
|
381
|
+
const result = MergeQueryParser_1.MergeQueryParser.parseFromLexeme(segment.lexemes, 0);
|
|
382
|
+
if (result.newIndex < segment.lexemes.length) {
|
|
383
|
+
// Guard against trailing tokens that would indicate parsing stopped prematurely.
|
|
384
|
+
const unexpected = segment.lexemes[result.newIndex];
|
|
385
|
+
const position = (_b = (_a = unexpected.position) === null || _a === void 0 ? void 0 : _a.startPosition) !== null && _b !== void 0 ? _b : segment.statementStart;
|
|
386
|
+
throw new Error(`[SqlParser] Unexpected token "${unexpected.value}" in statement ${statementIndex} at character ${position}.`);
|
|
387
|
+
}
|
|
388
|
+
return result.value;
|
|
389
|
+
}
|
|
390
|
+
catch (error) {
|
|
391
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
392
|
+
throw new Error(`[SqlParser] Failed to parse MERGE statement ${statementIndex}: ${message}`);
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
static getCommandAfterWith(lexemes) {
|
|
396
|
+
var _a;
|
|
397
|
+
try {
|
|
398
|
+
const withResult = WithClauseParser_1.WithClauseParser.parseFromLexeme(lexemes, 0);
|
|
399
|
+
const next = lexemes[withResult.newIndex];
|
|
400
|
+
return (_a = next === null || next === void 0 ? void 0 : next.value.toLowerCase()) !== null && _a !== void 0 ? _a : null;
|
|
401
|
+
}
|
|
402
|
+
catch {
|
|
403
|
+
return null;
|
|
404
|
+
}
|
|
405
|
+
}
|
|
406
|
+
static consumeNextStatement(tokenizer, cursor, skipEmpty) {
|
|
407
|
+
let localCursor = cursor;
|
|
408
|
+
let carry = null;
|
|
409
|
+
// Advance until a statement with tokens is found or the input ends.
|
|
410
|
+
while (true) {
|
|
411
|
+
const segment = tokenizer.readNextStatement(localCursor, carry);
|
|
412
|
+
carry = null;
|
|
413
|
+
if (!segment) {
|
|
414
|
+
return null;
|
|
415
|
+
}
|
|
416
|
+
localCursor = segment.nextPosition;
|
|
417
|
+
if (segment.lexemes.length === 0) {
|
|
418
|
+
// Retain comments so the next statement can inherit them when appropriate.
|
|
419
|
+
if (segment.leadingComments && segment.leadingComments.length > 0) {
|
|
420
|
+
carry = segment.leadingComments;
|
|
421
|
+
}
|
|
422
|
+
if (skipEmpty || segment.rawText.trim().length === 0) {
|
|
423
|
+
continue;
|
|
424
|
+
}
|
|
425
|
+
}
|
|
426
|
+
return { segment, nextCursor: localCursor };
|
|
427
|
+
}
|
|
428
|
+
}
|
|
429
|
+
}
|
|
430
|
+
exports.SqlParser = SqlParser;
|
|
431
|
+
//# sourceMappingURL=SqlParser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SqlParser.js","sourceRoot":"","sources":["../../src/parsers/SqlParser.ts"],"names":[],"mappings":"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"}
|