classInsertTransformer
final class InsertTransformer
implements SqlTransformer
Transforms INSERT/REPLACE statements into SELECT queries that return the inserted rows. Applies CTE shadowing via the SelectTransformer delegate.
Handles:
- INSERT INTO ... VALUES (...)
- INSERT OR REPLACE INTO ... VALUES (...)
- REPLACE INTO ... VALUES (...)
- INSERT INTO ... SELECT ...
- INSERT INTO ... ON CONFLICT ... DO UPDATE SET ...
Methods§
public function __construct(
SqliteParser $parser,
SelectTransformer $selectTransformer,
?CastRenderer $castRenderer = null,
)Binds the dependencies used by this operation.
Parameters
$parser | SqliteParser | |
$selectTransformer | SelectTransformer | |
$castRenderer | ?CastRenderer |
public function transform(string $sql, array $tables): string{@inheritDoc}
Parameters
$sql | string | |
$tables | array |
Returns
stringThrows
Test cases 32
InsertTransformerTest::testCommitRewriteStateTransformAllocatesRowidValuesMonotonicallycallsInsertTransformerTest::testExplicitIdentityDoesNotConsumeGeneratedIdentitycallsInsertTransformerTest::testProjectsConflictExpressionUsingCandidateKeyscallsInsertTransformerTest::testTransformAllocatesRowidAfterExistingRowscallsInsertTransformerTest::testTransformColumnAsInOutputcallsInsertTransformerTest::testTransformDefaultValuesProjectsCompleteRowcallsInsertTransformerTest::testTransformInsertMultipleValuescallsInsertTransformerTest::testTransformInsertOrReplacecallsInsertTransformerTest::testTransformInsertSelectcallsInsertTransformerTest::testTransformInsertSelectPassesThroughcallsInsertTransformerTest::testTransformInsertSelectUsesExplicitTargetColumnsForProjectionAndIdentitycallsInsertTransformerTest::testTransformInsertSelectWithColumnsAndShadowDatacallsInsertTransformerTest::testTransformInsertValuescallsInsertTransformerTest::testTransformMismatchedColumnCountThrowscallsInsertTransformerTest::testTransformMultipleValueSetscallsInsertTransformerTest::testTransformNormalizesSparseTableColumnKeyscallsInsertTransformerTest::testTransformNoValuesThrowscallsInsertTransformerTest::testTransformOutputContainsSelectKeywordcallsInsertTransformerTest::testTransformProjectsOmittedAndExplicitDefaultscallsInsertTransformerTest::testTransformReplaceIntocallsInsertTransformerTest::testTransformThrowsForNonInsertcallsInsertTransformerTest::testTransformThrowsForNonInsertSelectStatementcallsInsertTransformerTest::testTransformThrowsForNoTargetcallsInsertTransformerTest::testTransformUsesTableContextForMissingColumnscallsInsertTransformerTest::testTransformValueTrimMatterscallsInsertTransformerTest::testTransformValueTrimmedcallsInsertTransformerTest::testTransformWithoutColumnsOrContextThrowscallsInsertTransformerTest::testTransformWithoutTableThrowscallsInsertTransformerTest::testTransformWithTableContextColumnsUsedWhenNoInsertColumnscallsInsertTransformerTest::testTransformWithValuesTrimmedcallsInsertTransformerTest::testUncommittedTransformDoesNotConsumeRowidValuecallsInsertTransformerTest::testUsesInjectedCastRendererAndColumnTypescalls
Called from 1
Calls 13
- method-call ShadowIdentityAllocator::beginProjection() line 62
- method-call SqliteParser::classifyStatement() line 63
- new UnsupportedSqlException line 65
- method-call SqliteParser::extractTargetTable() line 68
- static-call InsertProjectionBuilder::orderedValues() line 73
- method-call SqliteParser::extractInsertColumns() line 73
- method-call InsertProjectionBuilder::buildInsertSelect() line 83
- new InsertProjectionBuilder line 83
- method-call SqliteNativeUpsertProjector::project() line 93
- method-call SqliteParser::extractOnConflictUpdates() line 98
- method-call SqliteParser::extractOnConflictUpdateWhere() line 99
- method-call SelectTransformer::transform() line 102
- method-call SqliteCteShadowComposer::carryPrefix() line 103
public function commitRewriteState(): voidCommits the transformer state after a rewrite completes.
Test cases 2
Called from 1
Calls 1
- method-call ShadowIdentityAllocator::commitProjection() line 113
Private surface 8§
Implementation details, listed for orientation only.
private SqliteParser $parserprivate SelectTransformer $selectTransformerprivate CastRenderer $castRendererprivate InsertRowRenderer $rowRendererprivate ShadowIdentityAllocator $identityAllocatorprivate InsertSelectRenderer $insertSelectRendererprivate SqliteCteShadowComposer $cteComposerprivate SqliteNativeUpsertProjector $upsertProjectorTest cases 127§
Test cases that cover or call this symbol, from the coverage report and from the analyzed test sources.
Dedicated tests 32
InsertTransformerTest::testCommitRewriteStateTransformAllocatesRowidValuesMonotonicallycallsInsertTransformerTest::testExplicitIdentityDoesNotConsumeGeneratedIdentitycallsInsertTransformerTest::testProjectsConflictExpressionUsingCandidateKeyscallsInsertTransformerTest::testTransformAllocatesRowidAfterExistingRowscallsInsertTransformerTest::testTransformColumnAsInOutputcallsInsertTransformerTest::testTransformDefaultValuesProjectsCompleteRowcallsInsertTransformerTest::testTransformInsertMultipleValuescallsInsertTransformerTest::testTransformInsertOrReplacecallsInsertTransformerTest::testTransformInsertSelectcallsInsertTransformerTest::testTransformInsertSelectPassesThroughcallsInsertTransformerTest::testTransformInsertSelectUsesExplicitTargetColumnsForProjectionAndIdentitycallsInsertTransformerTest::testTransformInsertSelectWithColumnsAndShadowDatacallsInsertTransformerTest::testTransformInsertValuescallsInsertTransformerTest::testTransformMismatchedColumnCountThrowscallsInsertTransformerTest::testTransformMultipleValueSetscallsInsertTransformerTest::testTransformNormalizesSparseTableColumnKeyscallsInsertTransformerTest::testTransformNoValuesThrowscallsInsertTransformerTest::testTransformOutputContainsSelectKeywordcallsInsertTransformerTest::testTransformProjectsOmittedAndExplicitDefaultscallsInsertTransformerTest::testTransformReplaceIntocallsInsertTransformerTest::testTransformThrowsForNonInsertcallsInsertTransformerTest::testTransformThrowsForNonInsertSelectStatementcallsInsertTransformerTest::testTransformThrowsForNoTargetcallsInsertTransformerTest::testTransformUsesTableContextForMissingColumnscallsInsertTransformerTest::testTransformValueTrimMatterscallsInsertTransformerTest::testTransformValueTrimmedcallsInsertTransformerTest::testTransformWithoutColumnsOrContextThrowscallsInsertTransformerTest::testTransformWithoutTableThrowscallsInsertTransformerTest::testTransformWithTableContextColumnsUsedWhenNoInsertColumnscallsInsertTransformerTest::testTransformWithValuesTrimmedcallsInsertTransformerTest::testUncommittedTransformDoesNotConsumeRowidValuecallsInsertTransformerTest::testUsesInjectedCastRendererAndColumnTypescalls
Other tests reaching this symbol 95
RewriterBench::setUpcallsRewriteTarget::__invokecallsSemanticsTarget::__invokecallsSqliteRewriterTest::testAlterTableUsesShadowedMigrationSelectcallsSqliteRewriterTest::testBuildTableContextIncludesMultipleTablesFromRegistrycallsSqliteRewriterTest::testBuildTableContextMergesColumnsFromMultipleRowscallsSqliteRewriterTest::testBuildTableContextRegistryOnlyTableIncludedcallsSqliteRewriterTest::testBuildTableContextShadowStoreEmptyRowsNoDefinitionPassesThroughcallsSqliteRewriterTest::testBuildTableContextSkipsAlreadyAddedFromShadowStorecallsSqliteRewriterTest::testBuildTableContextUsesDefinitionColumnscallsSqliteRewriterTest::testBuildTableContextWithShadowStoreColumnsInferredcallsSqliteRewriterTest::testCommitRewriteStateKeepsGeneratedIdentitiesAcrossRewritescallsSqliteRewriterTest::testCreateTableReturnsDdlSimulatedcallsSqliteRewriterTest::testCteReferencesAreMatchedCaseInsensitivelyDuringSchemaValidationcallsSqliteRewriterTest::testDdlSimulatedReturnsSqlSelectWhere0callsSqliteRewriterTest::testDeleteEnsuresShadowStorecallsSqliteRewriterTest::testDeleteEnsuresShadowStoreCalledOnTargetcallsSqliteRewriterTest::testDeleteEnsuresShadowStoreEntrycallsSqliteRewriterTest::testDeleteEnsuresShadowStoreForTargetTablecallsSqliteRewriterTest::testDeleteFromBacktickQuotedTableReturnsSqlWhere0callsSqliteRewriterTest::testDeleteFromBracketQuotedTableReturnsSqlWhere0callsSqliteRewriterTest::testDeleteFromLowercaseReturnsSqlWhere0callsSqliteRewriterTest::testDeleteFromQuotedTableWithoutWhereReturnsSqlWhere0callsSqliteRewriterTest::testDeleteFromWithCommentsReturnsSqlWhere0callsSqliteRewriterTest::testDeleteFromWithoutWhereReturnsSqlWithSelectWhere0callsSqliteRewriterTest::testDeleteFromWithoutWhereReturnsWriteSimulatedcallsSqliteRewriterTest::testDeleteFromWithSemicolonAndWhitespacecallsSqliteRewriterTest::testDeleteResolvesTargetAfterBlockCommentcallsSqliteRewriterTest::testDeleteReturnsWriteSimulatedWithMutationcallsSqliteRewriterTest::testDeleteWithWhereProducesTransformedSqlcallsSqliteRewriterTest::testDropTableReturnsDdlSimulatedcallsSqliteRewriterTest::testEmptyInputThrowsExceptioncallsSqliteRewriterTest::testEmptyResultSelectProducesNoRowscallsSqliteRewriterTest::testGeneratedExpressionIsPresentBeforeTheFirstShadowWritecallsSqliteRewriterTest::testHasSchemaContextWithRegistryOnlycallsSqliteRewriterTest::testHasSchemaContextWithShadowStoreOnlycallsSqliteRewriterTest::testInMemoryAttachPassesThroughUnchangedcallsSqliteRewriterTest::testInsertDoesNotEnsureShadowStoreForTargetTablecallsSqliteRewriterTest::testInsertOnConflictReturnsUpsertMutationcallsSqliteRewriterTest::testInsertOrReplaceReturnsWriteSimulatedWithReplaceMutationcallsSqliteRewriterTest::testInsertResolvesTargetAfterBlockCommentcallsSqliteRewriterTest::testInsertReturnsWriteSimulatedWithMutationcallsSqliteRewriterTest::testInsertRewriteOutputContainsSelectcallsSqliteRewriterTest::testInsertUsesDefaultsFromRegistryWithoutShadowRowscallsSqliteRewriterTest::testInsertUsesIdentityStrategyFromRegistryWithoutShadowRowscallsSqliteRewriterTest::testInsertWithShadowDataProducesTransformedSqlcallsSqliteRewriterTest::testMultiStatementThrowsExceptioncallsSqliteRewriterTest::testPersistentAttachRemainsUnsupportedcallsSqliteRewriterTest::testReadOnlyDiagnosticsPassThroughUnchangedcallsSqliteRewriterTest::testReadPlanHasNoMutationcallsSqliteRewriterTest::testRegisteredViewIsKnownAndMaterializedcallsSqliteRewriterTest::testRemovedTableIsShadowedInsteadOfFallingThroughcallsSqliteRewriterTest::testReplaceReturnsWriteSimulatedWithMutationcallsSqliteRewriterTest::testRewriteIsDeterministiccallsSqliteRewriterTest::testRewriteMultiplecallsSqliteRewriterTest::testRewriteMultipleEmptyThrowscallsSqliteRewriterTest::testRewriteOutputIsNonEmptycallsSqliteRewriterTest::testSchemaQualifiedSelectUsesShadowCtecallsSqliteRewriterTest::testSelectExistingInShadowStoreIsNotUnknowncallsSqliteRewriterTest::testSelectIgnoresSqlKeywordsInsideLeadingLineCommentcallsSqliteRewriterTest::testSelectKnownTableNoSchemaContextDoesNotThrowcallsSqliteRewriterTest::testSelectReturnsReadKindcallsSqliteRewriterTest::testSelectRewritesTableAfterBlockCommentcallsSqliteRewriterTest::testSelectTableInShadowStoreNotUnknowncallsSqliteRewriterTest::testSelectUnknownTableWithSchemaContextThrowscallsSqliteRewriterTest::testSelectWithMultipleRegisteredTablesIncludesAllcallsSqliteRewriterTest::testSelectWithRegistryOnlyBuildTableContextcallsSqliteRewriterTest::testSelectWithShadowDataColumnsInferredcallsSqliteRewriterTest::testSelectWithShadowDataIncludesCtecallsSqliteRewriterTest::testSelectWithShadowStoreAndRegistryTablesMergedcallsSqliteRewriterTest::testSelectWithShadowStoreOnlyHasSchemaContextcallsSqliteRewriterTest::testSplitStatementsPreservesQuotedSemicolonscallsSqliteRewriterTest::testTransactionStatementRestoresSnapshotOnRollbackcallsSqliteRewriterTest::testUnknownTableAfterDeclaredCteIsRejectedcallsSqliteRewriterTest::testUnsupportedSqlThrowsExceptioncallsSqliteRewriterTest::testUpdateDoesNotPromoteMaterializedUnknownTablecallsSqliteRewriterTest::testUpdateEnsuresShadowStorecallsSqliteRewriterTest::testUpdateEnsuresShadowStoreCalledOnTargetcallsSqliteRewriterTest::testUpdateEnsuresShadowStoreEntrycallsSqliteRewriterTest::testUpdateEnsuresShadowStoreForTargetTablecallsSqliteRewriterTest::testUpdateResolvesTargetAfterBlockCommentcallsSqliteRewriterTest::testUpdateReturnsWriteSimulatedWithMutationcallsSqliteRewriterTest::testWritePlanHasNonNullMutationcallsStatementRewriterTest::testRewriteStatementRejectsUnknownReadSourcescallsStatementRewriterTest::testRewriteStatementSimulatesWritesWithoutApplyingThemcallsStatementRewriterTest::testRewriteStatementUsesShadowRowsForReadscallsSqliteTransformerTest::testCommitRewriteStateKeepsAllocatedIdentitiesAcrossProjectionscallsSqliteTransformerTest::testTransformDeletecallsSqliteTransformerTest::testTransformEmptyThrowscallsSqliteTransformerTest::testTransformInsertcallsSqliteTransformerTest::testTransformSelectcallsSqliteTransformerTest::testTransformUnsupportedThrowscallsSqliteTransformerTest::testTransformUpdatecallsSqliteTransformerTest::testTransformWithEmptyTablesReturnsOriginalcallsSqliteSessionFactoryTestcalls
Relations§
Instantiated in 1
Method calls 2
- method-call ZtdQuery\Platform\Sqlite\Rewrite\Transformer\SqliteTransformer::transform() packages/ztd-query-sqlite/src/Rewrite/Transformer/SqliteTransformer.php:55
- method-call ZtdQuery\Platform\Sqlite\Rewrite\Transformer\SqliteTransformer::commitRewriteState() packages/ztd-query-sqlite/src/Rewrite/Transformer/SqliteTransformer.php:67