classDeleteTransformer
final class DeleteTransformer
implements SqlTransformer
Transforms DELETE statements into SELECT projections with CTE shadowing for SQLite.
SQLite does not support multi-table DELETE, so this is simpler than MySQL.
Methods§
public function __construct(SqliteParser $parser, SelectTransformer $selectTransformer)Binds the dependencies used by this operation.
Parameters
$parser | SqliteParser | |
$selectTransformer | SelectTransformer |
Calls 1
public function transform(string $sql, array $tables): string{@inheritDoc}
Parameters
$sql | string | |
$tables | array |
Returns
stringThrows
Test cases 6
DeleteTransformerTest::testTransformDeleteWithOrderByAndLimitcallsDeleteTransformerTest::testTransformDeleteWithoutColumnscallsDeleteTransformerTest::testTransformDeleteWithShadowDataIncludesCtecallsDeleteTransformerTest::testTransformSimpleDeletecallsDeleteTransformerTest::testTransformThrowsForNonDeletecallsDeleteTransformerTest::testTransformWithoutTargetThrowscalls
Called from 1
Calls 6
- method-call SqliteParser::classifyStatement() line 41
- new UnsupportedSqlException line 43
- method-call SqliteParser::extractTargetTable() line 46
- method-call DeleteTransformer::buildProjection() line 53
- method-call SelectTransformer::transform() line 55
- method-call SqliteCteShadowComposer::carryPrefix() line 56
public function buildProjection(
string $sql,
string $targetTable,
array<int, string> $columns,
): stringBuild a result-select SQL from a DELETE statement.
Parameters
$sql | string | |
$targetTable | string | |
$columns | array<int, string> |
Returns
stringTest cases 3
Called from 1
Calls 4
- function-call
implodeline 77 - method-call SqliteParser::extractWhereClause() line 81
- method-call SqliteParser::extractOrderByClause() line 87
- method-call SqliteParser::extractLimitClause() line 93
Private surface 3§
Implementation details, listed for orientation only.
private SqliteParser $parserprivate SelectTransformer $selectTransformerprivate SqliteCteShadowComposer $cteComposerTest cases 104§
Test cases that cover or call this symbol, from the coverage report and from the analyzed test sources.
Dedicated tests 9
DeleteTransformerTest::testBuildProjectionWithColumnscallsDeleteTransformerTest::testBuildProjectionWithOrderByAndLimitcallsDeleteTransformerTest::testBuildProjectionWithoutColumnsUsesStarcallsDeleteTransformerTest::testTransformDeleteWithOrderByAndLimitcallsDeleteTransformerTest::testTransformDeleteWithoutColumnscallsDeleteTransformerTest::testTransformDeleteWithShadowDataIncludesCtecallsDeleteTransformerTest::testTransformSimpleDeletecallsDeleteTransformerTest::testTransformThrowsForNonDeletecallsDeleteTransformerTest::testTransformWithoutTargetThrowscalls
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