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,499 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.InsertResultSelectConverter = void 0;
|
|
4
|
+
const Clause_1 = require("../models/Clause");
|
|
5
|
+
const SelectQuery_1 = require("../models/SelectQuery");
|
|
6
|
+
const InsertQuerySelectValuesConverter_1 = require("./InsertQuerySelectValuesConverter");
|
|
7
|
+
const ValueComponent_1 = require("../models/ValueComponent");
|
|
8
|
+
const ValueParser_1 = require("../parsers/ValueParser");
|
|
9
|
+
const TableSourceCollector_1 = require("./TableSourceCollector");
|
|
10
|
+
const FixtureCteBuilder_1 = require("./FixtureCteBuilder");
|
|
11
|
+
const SelectQueryWithClauseHelper_1 = require("../utils/SelectQueryWithClauseHelper");
|
|
12
|
+
const ValueComponentRewriter_1 = require("../utils/ValueComponentRewriter");
|
|
13
|
+
class InsertResultSelectConverter {
|
|
14
|
+
/**
|
|
15
|
+
* Converts an INSERT ... SELECT/VALUES query into a SELECT that mirrors its RETURNING output
|
|
16
|
+
* (or a count(*) when RETURNING is absent).
|
|
17
|
+
*/
|
|
18
|
+
static toSelectQuery(insertQuery, options) {
|
|
19
|
+
var _a, _b;
|
|
20
|
+
const preparedInsert = this.prepareInsertQuery(insertQuery);
|
|
21
|
+
const sourceQuery = preparedInsert.selectQuery;
|
|
22
|
+
if (!sourceQuery) {
|
|
23
|
+
throw new Error('Cannot convert INSERT query without a data source.');
|
|
24
|
+
}
|
|
25
|
+
const sourceWithClause = SelectQueryWithClauseHelper_1.SelectQueryWithClauseHelper.detachWithClause(sourceQuery);
|
|
26
|
+
const targetTableName = this.extractTargetTableName(preparedInsert.insertClause);
|
|
27
|
+
const tableDefinition = this.resolveTableDefinition(targetTableName, options);
|
|
28
|
+
const fixtureTables = (_a = options === null || options === void 0 ? void 0 : options.fixtureTables) !== null && _a !== void 0 ? _a : [];
|
|
29
|
+
const fixtureMap = this.buildFixtureTableMap(fixtureTables);
|
|
30
|
+
const missingStrategy = (_b = options === null || options === void 0 ? void 0 : options.missingFixtureStrategy) !== null && _b !== void 0 ? _b : this.DEFAULT_MISSING_FIXTURE_STRATEGY;
|
|
31
|
+
const referencedTables = this.collectPhysicalTableReferences(sourceQuery, sourceWithClause);
|
|
32
|
+
this.ensureFixtureCoverage(referencedTables, fixtureMap, missingStrategy);
|
|
33
|
+
const filteredFixtures = this.filterFixtureTablesForReferences(fixtureTables, referencedTables);
|
|
34
|
+
const insertColumnNames = this.resolveInsertColumns(preparedInsert.insertClause, sourceQuery, tableDefinition);
|
|
35
|
+
const selectColumnCount = this.getSelectColumnCount(sourceQuery);
|
|
36
|
+
if (insertColumnNames.length !== selectColumnCount) {
|
|
37
|
+
throw new Error('Insert column count does not match SELECT output columns.');
|
|
38
|
+
}
|
|
39
|
+
const columnMetadataMap = this.buildColumnMetadata(insertColumnNames, tableDefinition);
|
|
40
|
+
this.assertRequiredColumns(columnMetadataMap, tableDefinition);
|
|
41
|
+
this.applyColumnCasts(sourceQuery, insertColumnNames, columnMetadataMap);
|
|
42
|
+
const fixtureCtes = this.buildFixtureCtes(filteredFixtures);
|
|
43
|
+
const cteName = this.generateUniqueCteName(sourceWithClause, fixtureCtes);
|
|
44
|
+
const cteAlias = new Clause_1.SourceAliasExpression(cteName, insertColumnNames);
|
|
45
|
+
const insertedRowsCte = new Clause_1.CommonTable(sourceQuery, cteAlias, null);
|
|
46
|
+
const withClause = this.buildWithClause(sourceWithClause, fixtureCtes, insertedRowsCte);
|
|
47
|
+
if (!preparedInsert.returningClause) {
|
|
48
|
+
return this.buildCountSelect(withClause, cteName);
|
|
49
|
+
}
|
|
50
|
+
const selectItems = this.buildReturningSelectItems(preparedInsert.returningClause, tableDefinition, insertColumnNames, columnMetadataMap, cteName);
|
|
51
|
+
const fromExpr = new Clause_1.SourceExpression(new Clause_1.TableSource(null, cteName), null);
|
|
52
|
+
const fromClause = new Clause_1.FromClause(fromExpr, null);
|
|
53
|
+
return new SelectQuery_1.SimpleSelectQuery({
|
|
54
|
+
withClause,
|
|
55
|
+
selectClause: new Clause_1.SelectClause(selectItems),
|
|
56
|
+
fromClause
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
static prepareInsertQuery(insertQuery) {
|
|
60
|
+
// Values-based inserts need to be rewritten into INSERT ... SELECT before further processing.
|
|
61
|
+
if (insertQuery.selectQuery instanceof SelectQuery_1.ValuesQuery) {
|
|
62
|
+
return InsertQuerySelectValuesConverter_1.InsertQuerySelectValuesConverter.toSelectUnion(insertQuery);
|
|
63
|
+
}
|
|
64
|
+
return insertQuery;
|
|
65
|
+
}
|
|
66
|
+
static extractTargetTableName(insertClause) {
|
|
67
|
+
const datasource = insertClause.source.datasource;
|
|
68
|
+
if (datasource instanceof Clause_1.TableSource) {
|
|
69
|
+
return datasource.getSourceName();
|
|
70
|
+
}
|
|
71
|
+
throw new Error('Insert target must be a table source for conversion.');
|
|
72
|
+
}
|
|
73
|
+
static resolveTableDefinition(tableName, options) {
|
|
74
|
+
// Prefer resolver results but fall back to the registry when the resolver cannot handle the table name.
|
|
75
|
+
if (options === null || options === void 0 ? void 0 : options.tableDefinitionResolver) {
|
|
76
|
+
const resolved = options.tableDefinitionResolver(tableName);
|
|
77
|
+
if (resolved !== undefined) {
|
|
78
|
+
return resolved;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
const normalized = this.normalizeIdentifier(tableName);
|
|
82
|
+
if (options === null || options === void 0 ? void 0 : options.tableDefinitions) {
|
|
83
|
+
const normalizedMap = this.buildTableDefinitionMap(options.tableDefinitions);
|
|
84
|
+
const definition = normalizedMap.get(normalized);
|
|
85
|
+
if (definition) {
|
|
86
|
+
return definition;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
if (options === null || options === void 0 ? void 0 : options.fixtureTables) {
|
|
90
|
+
const fixture = options.fixtureTables.find(f => this.normalizeIdentifier(f.tableName) === normalized);
|
|
91
|
+
if (fixture) {
|
|
92
|
+
return this.convertFixtureToTableDefinition(fixture);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
return undefined;
|
|
96
|
+
}
|
|
97
|
+
static convertFixtureToTableDefinition(fixture) {
|
|
98
|
+
return {
|
|
99
|
+
name: fixture.tableName,
|
|
100
|
+
columns: fixture.columns.map(col => {
|
|
101
|
+
var _a;
|
|
102
|
+
return ({
|
|
103
|
+
name: col.name,
|
|
104
|
+
typeName: col.typeName,
|
|
105
|
+
required: false,
|
|
106
|
+
defaultValue: (_a = col.defaultValue) !== null && _a !== void 0 ? _a : null
|
|
107
|
+
});
|
|
108
|
+
})
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
static buildTableDefinitionMap(registry) {
|
|
112
|
+
const map = new Map();
|
|
113
|
+
if (!registry) {
|
|
114
|
+
return map;
|
|
115
|
+
}
|
|
116
|
+
for (const definition of Object.values(registry)) {
|
|
117
|
+
map.set(this.normalizeIdentifier(definition.name), definition);
|
|
118
|
+
}
|
|
119
|
+
return map;
|
|
120
|
+
}
|
|
121
|
+
static resolveInsertColumns(insertClause, selectQuery, tableDefinition) {
|
|
122
|
+
if (insertClause.columns && insertClause.columns.length > 0) {
|
|
123
|
+
return insertClause.columns.map((col) => col.name);
|
|
124
|
+
}
|
|
125
|
+
// When the column list is omitted we rely on the table definition to infer both names and order.
|
|
126
|
+
if (!tableDefinition) {
|
|
127
|
+
throw new Error('Cannot infer INSERT columns without a table definition.');
|
|
128
|
+
}
|
|
129
|
+
const columnNames = tableDefinition.columns.map((col) => col.name);
|
|
130
|
+
const expectedCount = this.getSelectColumnCount(selectQuery);
|
|
131
|
+
if (columnNames.length !== expectedCount) {
|
|
132
|
+
throw new Error('Table definition column count does not match the SELECT output when column list is omitted.');
|
|
133
|
+
}
|
|
134
|
+
return columnNames;
|
|
135
|
+
}
|
|
136
|
+
static getSelectColumnCount(selectQuery) {
|
|
137
|
+
const firstSimple = this.getFirstSimpleSelectQuery(selectQuery);
|
|
138
|
+
return firstSimple.selectClause.items.length;
|
|
139
|
+
}
|
|
140
|
+
static getFirstSimpleSelectQuery(selectQuery) {
|
|
141
|
+
if (selectQuery instanceof SelectQuery_1.SimpleSelectQuery) {
|
|
142
|
+
return selectQuery;
|
|
143
|
+
}
|
|
144
|
+
if (selectQuery instanceof SelectQuery_1.BinarySelectQuery) {
|
|
145
|
+
return this.getFirstSimpleSelectQuery(selectQuery.left);
|
|
146
|
+
}
|
|
147
|
+
throw new Error('Unsupported select query structure in insert conversion.');
|
|
148
|
+
}
|
|
149
|
+
static buildColumnMetadata(insertColumns, tableDefinition) {
|
|
150
|
+
// Capture both the provided columns and the broader table definition so we can resolve defaults later.
|
|
151
|
+
const metadataMap = new Map();
|
|
152
|
+
const columnDefinitionMap = tableDefinition
|
|
153
|
+
? new Map(tableDefinition.columns.map((col) => [this.normalizeIdentifier(col.name), col]))
|
|
154
|
+
: null;
|
|
155
|
+
for (const columnName of insertColumns) {
|
|
156
|
+
const normalized = this.normalizeIdentifier(columnName);
|
|
157
|
+
const definition = columnDefinitionMap === null || columnDefinitionMap === void 0 ? void 0 : columnDefinitionMap.get(normalized);
|
|
158
|
+
metadataMap.set(normalized, {
|
|
159
|
+
name: columnName,
|
|
160
|
+
normalized,
|
|
161
|
+
provided: true,
|
|
162
|
+
typeName: definition === null || definition === void 0 ? void 0 : definition.typeName,
|
|
163
|
+
required: definition === null || definition === void 0 ? void 0 : definition.required,
|
|
164
|
+
defaultValue: this.resolveDefaultValueExpression(definition)
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
if (columnDefinitionMap) {
|
|
168
|
+
for (const [normalized, definition] of columnDefinitionMap.entries()) {
|
|
169
|
+
if (!metadataMap.has(normalized)) {
|
|
170
|
+
metadataMap.set(normalized, {
|
|
171
|
+
name: definition.name,
|
|
172
|
+
normalized,
|
|
173
|
+
provided: false,
|
|
174
|
+
typeName: definition.typeName,
|
|
175
|
+
required: definition.required,
|
|
176
|
+
defaultValue: this.resolveDefaultValueExpression(definition)
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
return metadataMap;
|
|
182
|
+
}
|
|
183
|
+
static assertRequiredColumns(metadataMap, tableDefinition) {
|
|
184
|
+
var _a;
|
|
185
|
+
if (!tableDefinition) {
|
|
186
|
+
return;
|
|
187
|
+
}
|
|
188
|
+
// Ensure every NOT NULL column (without a default) was part of the insert so the transformation stays accurate.
|
|
189
|
+
const requiredColumns = new Set(tableDefinition.columns
|
|
190
|
+
.filter((col) => col.required)
|
|
191
|
+
.map((col) => this.normalizeIdentifier(col.name)));
|
|
192
|
+
for (const normalized of requiredColumns) {
|
|
193
|
+
const metadata = metadataMap.get(normalized);
|
|
194
|
+
if (metadata && metadata.provided) {
|
|
195
|
+
continue;
|
|
196
|
+
}
|
|
197
|
+
if (metadata === null || metadata === void 0 ? void 0 : metadata.defaultValue) {
|
|
198
|
+
continue;
|
|
199
|
+
}
|
|
200
|
+
const columnName = (_a = tableDefinition.columns.find((col) => this.normalizeIdentifier(col.name) === normalized)) === null || _a === void 0 ? void 0 : _a.name;
|
|
201
|
+
if (columnName) {
|
|
202
|
+
throw new Error(`Required column '${columnName}' is missing from INSERT, so conversion cannot proceed.`);
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
static buildReturningSelectItems(returning, tableDefinition, insertColumns, columnMetadataMap, cteName) {
|
|
207
|
+
// Build SelectItems from the parsed RETURNING entries, expanding wildcard specs as needed.
|
|
208
|
+
const selectItems = [];
|
|
209
|
+
for (const item of returning.items) {
|
|
210
|
+
if (this.isWildcardReturningItem(item)) {
|
|
211
|
+
selectItems.push(...this.expandReturningWildcard(tableDefinition, insertColumns, columnMetadataMap, cteName));
|
|
212
|
+
continue;
|
|
213
|
+
}
|
|
214
|
+
selectItems.push(this.buildReturningSelectItem(item, columnMetadataMap, cteName));
|
|
215
|
+
}
|
|
216
|
+
return selectItems;
|
|
217
|
+
}
|
|
218
|
+
static isWildcardReturningItem(item) {
|
|
219
|
+
return (item.value instanceof ValueComponent_1.ColumnReference &&
|
|
220
|
+
item.value.column.name === '*');
|
|
221
|
+
}
|
|
222
|
+
static expandReturningWildcard(tableDefinition, insertColumns, columnMetadataMap, cteName) {
|
|
223
|
+
// Expand RETURNING * into a concrete column list derived from metadata for accurate defaults.
|
|
224
|
+
const columnNames = tableDefinition
|
|
225
|
+
? tableDefinition.columns.map((column) => column.name)
|
|
226
|
+
: insertColumns.length > 0
|
|
227
|
+
? insertColumns
|
|
228
|
+
: null;
|
|
229
|
+
if (!columnNames) {
|
|
230
|
+
throw new Error('Cannot expand RETURNING * without table definition or column list.');
|
|
231
|
+
}
|
|
232
|
+
return columnNames.map((columnName) => {
|
|
233
|
+
const metadata = this.getColumnMetadata(columnMetadataMap, columnName);
|
|
234
|
+
const expression = this.buildColumnExpression(metadata, cteName);
|
|
235
|
+
return new Clause_1.SelectItem(expression, columnName);
|
|
236
|
+
});
|
|
237
|
+
}
|
|
238
|
+
static buildReturningSelectItem(item, columnMetadataMap, cteName) {
|
|
239
|
+
// Rewrite the parsed expression tree so its column references point to the inserted rows.
|
|
240
|
+
const expression = (0, ValueComponentRewriter_1.rewriteValueComponentWithColumnResolver)(item.value, (column) => this.buildInsertColumnExpression(column, columnMetadataMap, cteName));
|
|
241
|
+
const alias = this.getReturningAlias(item);
|
|
242
|
+
return new Clause_1.SelectItem(expression, alias);
|
|
243
|
+
}
|
|
244
|
+
static buildInsertColumnExpression(column, columnMetadataMap, cteName) {
|
|
245
|
+
// Use metadata to decide whether the column expression comes from inserted data or a default.
|
|
246
|
+
const columnName = this.extractColumnName(column);
|
|
247
|
+
const metadata = this.getColumnMetadata(columnMetadataMap, columnName);
|
|
248
|
+
return this.buildColumnExpression(metadata, cteName);
|
|
249
|
+
}
|
|
250
|
+
static extractColumnName(column) {
|
|
251
|
+
const nameComponent = column.qualifiedName.name;
|
|
252
|
+
if (nameComponent instanceof ValueComponent_1.IdentifierString) {
|
|
253
|
+
return nameComponent.name;
|
|
254
|
+
}
|
|
255
|
+
return nameComponent.value;
|
|
256
|
+
}
|
|
257
|
+
static getReturningAlias(item) {
|
|
258
|
+
var _a;
|
|
259
|
+
if ((_a = item.identifier) === null || _a === void 0 ? void 0 : _a.name) {
|
|
260
|
+
return item.identifier.name;
|
|
261
|
+
}
|
|
262
|
+
if (item.value instanceof ValueComponent_1.ColumnReference) {
|
|
263
|
+
return item.value.toString();
|
|
264
|
+
}
|
|
265
|
+
return null;
|
|
266
|
+
}
|
|
267
|
+
static getColumnMetadata(metadataMap, columnName) {
|
|
268
|
+
const normalized = this.normalizeIdentifier(columnName);
|
|
269
|
+
const metadata = metadataMap.get(normalized);
|
|
270
|
+
if (!metadata) {
|
|
271
|
+
throw new Error(`Column '${columnName}' cannot be resolved for RETURNING output.`);
|
|
272
|
+
}
|
|
273
|
+
return metadata;
|
|
274
|
+
}
|
|
275
|
+
static buildColumnExpression(metadata, cteName) {
|
|
276
|
+
// Choose either the inserted column reference or the configured default/null expression.
|
|
277
|
+
let expression;
|
|
278
|
+
if (metadata.provided) {
|
|
279
|
+
expression = new ValueComponent_1.ColumnReference(cteName, metadata.name);
|
|
280
|
+
}
|
|
281
|
+
else if (metadata.defaultValue) {
|
|
282
|
+
expression = metadata.defaultValue;
|
|
283
|
+
}
|
|
284
|
+
else {
|
|
285
|
+
expression = new ValueComponent_1.LiteralValue(null);
|
|
286
|
+
}
|
|
287
|
+
return expression;
|
|
288
|
+
}
|
|
289
|
+
static buildTypeValue(typeName) {
|
|
290
|
+
var _a, _b;
|
|
291
|
+
// Split schema-qualified type names so namespaces become TypeValue namespaces.
|
|
292
|
+
const parts = typeName.split('.');
|
|
293
|
+
const namePart = (_b = (_a = parts.pop()) === null || _a === void 0 ? void 0 : _a.trim()) !== null && _b !== void 0 ? _b : typeName.trim();
|
|
294
|
+
const namespaces = parts.length > 0 ? parts.map((part) => part.trim()) : null;
|
|
295
|
+
return new ValueComponent_1.TypeValue(namespaces, new ValueComponent_1.RawString(namePart));
|
|
296
|
+
}
|
|
297
|
+
static collectPhysicalTableReferences(selectQuery, withClause) {
|
|
298
|
+
const referencedTables = this.collectReferencedTables(selectQuery);
|
|
299
|
+
const ignoredTables = this.collectCteNamesFromWithClause(withClause);
|
|
300
|
+
const tablesToShadow = new Set();
|
|
301
|
+
// Retain only concrete tables that are not defined via CTE aliases.
|
|
302
|
+
for (const table of referencedTables) {
|
|
303
|
+
if (ignoredTables.has(table)) {
|
|
304
|
+
continue;
|
|
305
|
+
}
|
|
306
|
+
tablesToShadow.add(table);
|
|
307
|
+
}
|
|
308
|
+
const cteReferencedTables = this.collectReferencedTablesFromWithClause(withClause);
|
|
309
|
+
for (const table of cteReferencedTables) {
|
|
310
|
+
if (ignoredTables.has(table)) {
|
|
311
|
+
continue;
|
|
312
|
+
}
|
|
313
|
+
tablesToShadow.add(table);
|
|
314
|
+
}
|
|
315
|
+
return tablesToShadow;
|
|
316
|
+
}
|
|
317
|
+
static buildFixtureCtes(fixtures) {
|
|
318
|
+
if (!fixtures || fixtures.length === 0) {
|
|
319
|
+
return [];
|
|
320
|
+
}
|
|
321
|
+
return FixtureCteBuilder_1.FixtureCteBuilder.buildFixtures(fixtures);
|
|
322
|
+
}
|
|
323
|
+
static filterFixtureTablesForReferences(fixtures, referencedTables) {
|
|
324
|
+
if (!fixtures.length || referencedTables.size === 0) {
|
|
325
|
+
return [];
|
|
326
|
+
}
|
|
327
|
+
const filtered = [];
|
|
328
|
+
// Keep fixtures only for the tables that the INSERT actually touches.
|
|
329
|
+
for (const fixture of fixtures) {
|
|
330
|
+
if (referencedTables.has(this.normalizeIdentifier(fixture.tableName))) {
|
|
331
|
+
filtered.push(fixture);
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
return filtered;
|
|
335
|
+
}
|
|
336
|
+
static collectReferencedTablesFromWithClause(withClause) {
|
|
337
|
+
const tables = new Set();
|
|
338
|
+
if (!(withClause === null || withClause === void 0 ? void 0 : withClause.tables)) {
|
|
339
|
+
return tables;
|
|
340
|
+
}
|
|
341
|
+
for (const cte of withClause.tables) {
|
|
342
|
+
for (const table of this.collectReferencedTables(cte.query)) {
|
|
343
|
+
tables.add(table);
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
return tables;
|
|
347
|
+
}
|
|
348
|
+
static buildWithClause(original, fixtureCtes, insertedCte) {
|
|
349
|
+
var _a, _b;
|
|
350
|
+
// Preserve any existing CTEs while prefixing fixture-based definitions before the simulated inserted rows CTE.
|
|
351
|
+
const originalTables = (_a = original === null || original === void 0 ? void 0 : original.tables) !== null && _a !== void 0 ? _a : [];
|
|
352
|
+
const combinedTables = [...fixtureCtes, ...originalTables, insertedCte];
|
|
353
|
+
const withClause = new Clause_1.WithClause((_b = original === null || original === void 0 ? void 0 : original.recursive) !== null && _b !== void 0 ? _b : false, combinedTables);
|
|
354
|
+
withClause.globalComments = (original === null || original === void 0 ? void 0 : original.globalComments) ? [...original.globalComments] : null;
|
|
355
|
+
withClause.trailingComments = (original === null || original === void 0 ? void 0 : original.trailingComments) ? [...original.trailingComments] : null;
|
|
356
|
+
return withClause;
|
|
357
|
+
}
|
|
358
|
+
static buildCountSelect(withClause, cteName) {
|
|
359
|
+
// Build a simple tally query that counts the rows produced by the inserted rows CTE.
|
|
360
|
+
const countItem = new Clause_1.SelectItem(new ValueComponent_1.FunctionCall(null, 'count', new ValueComponent_1.RawString('*'), null), 'count');
|
|
361
|
+
const selectClause = new Clause_1.SelectClause([countItem]);
|
|
362
|
+
const fromExpr = new Clause_1.SourceExpression(new Clause_1.TableSource(null, cteName), null);
|
|
363
|
+
const fromClause = new Clause_1.FromClause(fromExpr, null);
|
|
364
|
+
return new SelectQuery_1.SimpleSelectQuery({ withClause, selectClause, fromClause });
|
|
365
|
+
}
|
|
366
|
+
static buildFixtureTableMap(fixtures) {
|
|
367
|
+
const map = new Map();
|
|
368
|
+
if (!fixtures) {
|
|
369
|
+
return map;
|
|
370
|
+
}
|
|
371
|
+
// Normalize table names so lookups are case-insensitive.
|
|
372
|
+
for (const fixture of fixtures) {
|
|
373
|
+
map.set(this.normalizeIdentifier(fixture.tableName), fixture);
|
|
374
|
+
}
|
|
375
|
+
return map;
|
|
376
|
+
}
|
|
377
|
+
static ensureFixtureCoverage(referencedTables, fixtureMap, strategy) {
|
|
378
|
+
if (referencedTables.size === 0) {
|
|
379
|
+
return;
|
|
380
|
+
}
|
|
381
|
+
// Identify any referenced table that lacks a fixture override.
|
|
382
|
+
const missingTables = this.getMissingFixtureTables(referencedTables, fixtureMap);
|
|
383
|
+
if (missingTables.length === 0) {
|
|
384
|
+
return;
|
|
385
|
+
}
|
|
386
|
+
if (strategy === 'error') {
|
|
387
|
+
throw new Error(`Insert SELECT refers to tables without fixture coverage: ${missingTables.join(', ')}.`);
|
|
388
|
+
}
|
|
389
|
+
// 'warn' and 'passthrough' intentionally allow the conversion to continue.
|
|
390
|
+
}
|
|
391
|
+
static collectReferencedTables(query) {
|
|
392
|
+
// Scan every part of the query (including subqueries) so fixture coverage validates all referenced tables.
|
|
393
|
+
const collector = new TableSourceCollector_1.TableSourceCollector(false);
|
|
394
|
+
const sources = collector.collect(query);
|
|
395
|
+
const referenced = new Set();
|
|
396
|
+
for (const source of sources) {
|
|
397
|
+
referenced.add(this.normalizeIdentifier(source.getSourceName()));
|
|
398
|
+
}
|
|
399
|
+
return referenced;
|
|
400
|
+
}
|
|
401
|
+
static collectCteNamesFromWithClause(withClause) {
|
|
402
|
+
const names = new Set();
|
|
403
|
+
if (!(withClause === null || withClause === void 0 ? void 0 : withClause.tables)) {
|
|
404
|
+
return names;
|
|
405
|
+
}
|
|
406
|
+
// Normalize alias names before storing so they line up with referenced table normalization.
|
|
407
|
+
for (const table of withClause.tables) {
|
|
408
|
+
names.add(this.normalizeIdentifier(table.getSourceAliasName()));
|
|
409
|
+
}
|
|
410
|
+
return names;
|
|
411
|
+
}
|
|
412
|
+
static addCteNames(usedNames, tables) {
|
|
413
|
+
if (!tables) {
|
|
414
|
+
return;
|
|
415
|
+
}
|
|
416
|
+
for (const table of tables) {
|
|
417
|
+
usedNames.add(this.normalizeIdentifier(table.getSourceAliasName()));
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
static getMissingFixtureTables(referencedTables, fixtureMap) {
|
|
421
|
+
// Compare normalized table names against the fixtures that were supplied.
|
|
422
|
+
const missing = [];
|
|
423
|
+
for (const table of referencedTables) {
|
|
424
|
+
if (!fixtureMap.has(table)) {
|
|
425
|
+
missing.push(table);
|
|
426
|
+
}
|
|
427
|
+
}
|
|
428
|
+
return missing;
|
|
429
|
+
}
|
|
430
|
+
static generateUniqueCteName(withClause, fixtureCtes) {
|
|
431
|
+
const usedNames = new Set();
|
|
432
|
+
this.addCteNames(usedNames, fixtureCtes);
|
|
433
|
+
for (const name of this.collectCteNamesFromWithClause(withClause)) {
|
|
434
|
+
usedNames.add(name);
|
|
435
|
+
}
|
|
436
|
+
let candidate = this.BASE_CTE_NAME;
|
|
437
|
+
let suffix = 0;
|
|
438
|
+
while (usedNames.has(this.normalizeIdentifier(candidate))) {
|
|
439
|
+
suffix += 1;
|
|
440
|
+
candidate = `${this.BASE_CTE_NAME}_${suffix}`;
|
|
441
|
+
}
|
|
442
|
+
return candidate;
|
|
443
|
+
}
|
|
444
|
+
static normalizeIdentifier(value) {
|
|
445
|
+
return value.trim().toLowerCase();
|
|
446
|
+
}
|
|
447
|
+
static parseDefaultValue(def) {
|
|
448
|
+
try {
|
|
449
|
+
return ValueParser_1.ValueParser.parse(def);
|
|
450
|
+
}
|
|
451
|
+
catch (error) {
|
|
452
|
+
throw new Error(`Failed to parse default expression '${def}': ${error instanceof Error ? error.message : String(error)}`);
|
|
453
|
+
}
|
|
454
|
+
}
|
|
455
|
+
static resolveDefaultValueExpression(definition) {
|
|
456
|
+
if (!(definition === null || definition === void 0 ? void 0 : definition.defaultValue)) {
|
|
457
|
+
return null;
|
|
458
|
+
}
|
|
459
|
+
if (typeof definition.defaultValue === 'string') {
|
|
460
|
+
// Re-parse text defaults so callers always work with ValueComponent data.
|
|
461
|
+
return this.parseDefaultValue(definition.defaultValue);
|
|
462
|
+
}
|
|
463
|
+
return definition.defaultValue;
|
|
464
|
+
}
|
|
465
|
+
static applyColumnCasts(selectQuery, insertColumns, metadataMap) {
|
|
466
|
+
if (selectQuery instanceof SelectQuery_1.SimpleSelectQuery) {
|
|
467
|
+
this.applyColumnCastsToSimple(selectQuery, insertColumns, metadataMap);
|
|
468
|
+
return;
|
|
469
|
+
}
|
|
470
|
+
if (selectQuery instanceof SelectQuery_1.BinarySelectQuery) {
|
|
471
|
+
this.applyColumnCasts(selectQuery.left, insertColumns, metadataMap);
|
|
472
|
+
this.applyColumnCasts(selectQuery.right, insertColumns, metadataMap);
|
|
473
|
+
return;
|
|
474
|
+
}
|
|
475
|
+
// ValuesQuery should have been converted to SELECT earlier.
|
|
476
|
+
throw new Error('Unsupported select query structure for applying column casts.');
|
|
477
|
+
}
|
|
478
|
+
static applyColumnCastsToSimple(simple, insertColumns, metadataMap) {
|
|
479
|
+
var _a, _b;
|
|
480
|
+
const items = simple.selectClause.items;
|
|
481
|
+
for (let i = 0; i < items.length; i++) {
|
|
482
|
+
const colName = insertColumns[i];
|
|
483
|
+
const metadata = metadataMap.get(this.normalizeIdentifier(colName));
|
|
484
|
+
if (!metadata || !metadata.typeName) {
|
|
485
|
+
continue;
|
|
486
|
+
}
|
|
487
|
+
const identifier = (_b = (_a = items[i].identifier) === null || _a === void 0 ? void 0 : _a.name) !== null && _b !== void 0 ? _b : null;
|
|
488
|
+
const casted = new ValueComponent_1.CastExpression(items[i].value, this.buildTypeValue(metadata.typeName));
|
|
489
|
+
const newItem = new Clause_1.SelectItem(casted, identifier);
|
|
490
|
+
newItem.comments = items[i].comments;
|
|
491
|
+
newItem.positionedComments = items[i].positionedComments;
|
|
492
|
+
simple.selectClause.items[i] = newItem;
|
|
493
|
+
}
|
|
494
|
+
}
|
|
495
|
+
}
|
|
496
|
+
exports.InsertResultSelectConverter = InsertResultSelectConverter;
|
|
497
|
+
InsertResultSelectConverter.BASE_CTE_NAME = '__inserted_rows';
|
|
498
|
+
InsertResultSelectConverter.DEFAULT_MISSING_FIXTURE_STRATEGY = 'error';
|
|
499
|
+
//# sourceMappingURL=InsertResultSelectConverter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InsertResultSelectConverter.js","sourceRoot":"","sources":["../../../src/transformers/InsertResultSelectConverter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { MergeQuery } from '../models/MergeQuery';
|
|
2
|
+
import { SimpleSelectQuery } from '../models/SelectQuery';
|
|
3
|
+
import { FixtureTableDefinition } from './FixtureCteBuilder';
|
|
4
|
+
import type { MissingFixtureStrategy } from './InsertResultSelectConverter';
|
|
5
|
+
export interface MergeResultSelectOptions {
|
|
6
|
+
fixtureTables?: FixtureTableDefinition[];
|
|
7
|
+
missingFixtureStrategy?: MissingFixtureStrategy;
|
|
8
|
+
}
|
|
9
|
+
export declare class MergeResultSelectConverter {
|
|
10
|
+
private static readonly DEFAULT_MISSING_FIXTURE_STRATEGY;
|
|
11
|
+
/**
|
|
12
|
+
* Converts a MERGE query into a SELECT that counts or models the rows affected by each action.
|
|
13
|
+
*/
|
|
14
|
+
static toSelectQuery(mergeQuery: MergeQuery, options?: MergeResultSelectOptions): SimpleSelectQuery;
|
|
15
|
+
private static buildActionSelects;
|
|
16
|
+
private static buildSelectForClause;
|
|
17
|
+
private static buildMatchedSelect;
|
|
18
|
+
private static buildNotMatchedSelect;
|
|
19
|
+
private static buildNotMatchedBySourceSelect;
|
|
20
|
+
private static buildNotExistsExpression;
|
|
21
|
+
private static buildActionWhereClause;
|
|
22
|
+
private static combineConditions;
|
|
23
|
+
private static combineSelects;
|
|
24
|
+
private static buildLiteralSelectClause;
|
|
25
|
+
private static buildCountSelectClause;
|
|
26
|
+
private static buildFixtureCtes;
|
|
27
|
+
private static collectPhysicalTableReferences;
|
|
28
|
+
private static filterFixtureTablesForReferences;
|
|
29
|
+
private static collectReferencedTablesFromWithClause;
|
|
30
|
+
private static extractTargetTableName;
|
|
31
|
+
private static buildFixtureTableMap;
|
|
32
|
+
private static ensureFixtureCoverage;
|
|
33
|
+
private static collectReferencedTables;
|
|
34
|
+
private static collectCteNamesFromWithClause;
|
|
35
|
+
private static getMissingFixtureTables;
|
|
36
|
+
private static mergeWithClause;
|
|
37
|
+
private static normalizeIdentifier;
|
|
38
|
+
}
|