classInsertMutation
final class InsertMutation
implements DataMutation
Applies INSERT result rows to the shadow store.
Type Aliases§
Row = import from TableDefinitionMethods§
public function __construct(
string $tableName,
array<int, string> $primaryKeys = [],
bool $ignore = false,
TableDefinition|null $tableDefinition = null,
string $sql = '',
bool $validateConstraints = false,
CandidateKeySet|null $candidateKeys = null,
UpsertExpression|null $conflictPredicate = null,
)Parameters
$tableName | string | Target table. |
$primaryKeys | array<int, string> | Primary key columns. |
$ignore | bool | Whether to ignore duplicates (INSERT IGNORE). |
$tableDefinition | TableDefinition|null | Table definition for constraint validation. |
$sql | string | Original SQL statement for exception messages. |
$validateConstraints | bool | Whether to validate constraints. |
$candidateKeys | CandidateKeySet|null | Candidate keys used for duplicate detection. |
$conflictPredicate | UpsertExpression|null | Condition that controls candidate-key eligibility. |
Calls 3
- static-call CandidateKeySet::fromSchema() line 91
- new RowConstraints line 93
- new ConflictSearch line 94
public function apply(ShadowStore $store, array $rows): void{@inheritDoc}
Parameters
$store | ShadowStore | |
$rows | array |
Throws
DuplicateKeyException When a row would collide with one already there on a candidate keyTest cases 22
MutationContractTest::testInsertIncreasesRowCountcallsMutationContractTest::testInsertIntoEmptyTablecallsMutationContractTest::testInsertWithEmptyStringValuescallsMutationContractTest::testInsertWithNullValuescallsMutationContractTest::testMutationTableIsolationcallsInsertMutationTest::testApplyInsertsMultipleRowscallsInsertMutationTest::testApplyInsertsToEmptyTablecallsInsertMutationTest::testApplyWithCompositePrimaryKeycallsInsertMutationTest::testInsertIgnoreSkipsDuplicatescallsInsertMutationTest::testInsertIgnoreSkipsUniqueKeyConflictcallsInsertMutationTest::testInsertIgnoreUsesPartialConflictPredicatecallsInsertMutationTest::testTableNameApplyAppendsRowscallsInsertMutationTest::testUniqueConstraintAllowsNullcallsInsertMutationTest::testValidateNotNullThrowsExceptioncallsInsertMutationTest::testValidatePrimaryKeyDuplicateThrowsExceptioncallsInsertMutationTest::testValidateUniqueThrowsExceptioncallsInsertMutationTest::testValidationDisabledByDefaultAllowsDuplicatescallsShadowMutationTest::testApplyWritesWhatTheStatementDidIntoTheShadowcallsReferentialIntegrityEnforcerTest::testAcceptsExplicitReferenceToNonPrimaryCandidateKeycallsReferentialIntegrityEnforcerTest::testExplicitReferencedColumnsAreNotReplacedByPrimaryKeycallsReferentialIntegrityEnforcerTest::testRejectsInsertWhoseParentDoesNotExistcallsReferentialIntegrityEnforcerTest::testValidationContinuesPastMissingAndNullForeignKeyscalls
Calls 6
- method-call ShadowStore::get() line 104
- method-call RowConstraints::assertNoNullWhereNoneIsAllowed() line 109
- method-call ConflictSearch::of() line 112
- new DuplicateKeyException line 119
- method-call RowConstraints::assertNoDuplicateUniqueKey() line 129
- method-call ShadowStore::insert() line 136
public function tableName(): string{@inheritDoc}
Returns
stringPrivate surface 9§
Implementation details, listed for orientation only.
private string $tableNameprivate bool $ignoreprivate TableDefinition|null $tableDefinitionprivate string $sqlprivate bool $validateConstraintsprivate CandidateKeySet $candidateKeysprivate ?UpsertExpression $conflictPredicateprivate RowConstraints $constraintsprivate ConflictSearch $conflictsTest cases 99§
Test cases that cover or call this symbol, from the coverage report and from the analyzed test sources.
Dedicated tests 12
InsertMutationTest::testApplyInsertsMultipleRowscallsInsertMutationTest::testApplyInsertsToEmptyTablecallsInsertMutationTest::testApplyWithCompositePrimaryKeycallsInsertMutationTest::testInsertIgnoreSkipsDuplicatescallsInsertMutationTest::testInsertIgnoreSkipsUniqueKeyConflictcallsInsertMutationTest::testInsertIgnoreUsesPartialConflictPredicatecallsInsertMutationTest::testTableNameApplyAppendsRowscallsInsertMutationTest::testUniqueConstraintAllowsNullcallsInsertMutationTest::testValidateNotNullThrowsExceptioncallsInsertMutationTest::testValidatePrimaryKeyDuplicateThrowsExceptioncallsInsertMutationTest::testValidateUniqueThrowsExceptioncallsInsertMutationTest::testValidationDisabledByDefaultAllowsDuplicatescalls
Other tests reaching this symbol 87
MutationContractTest::testInsertIncreasesRowCountcallsMutationContractTest::testInsertIntoEmptyTablecallsMutationContractTest::testInsertWithEmptyStringValuescallsMutationContractTest::testInsertWithNullValuescallsMutationContractTest::testMutationTableIsolationcallsMutationContractTest::testTableNameIsConsistentcallsRewriterContractTest::testInsertReturnsWriteSimulatedWithMutationcallsRewriterContractTest::testWritePlanHasNonNullMutationcallsFakeSqlRewriter::rewriteInsertcallsMySqlRewriterTest::testInsertReturnsWriteSimulatedWithMutationcallsMySqlRewriterTest::testRewriteInsertCreatesMutationcallsMySqlRewriterTest::testRewriteInsertIgnoreCreatesInsertMutationWithIgnorecallsMySqlRewriterTest::testRewriteMultipleProcessesEachStatementcallsMySqlRewriterTest::testRewriteWithStatementInsertResolvesItsInnerMutationcallsMySqlRewriterTest::testWritePlanHasNonNullMutationcallsPgSqlRewriterTest::testInsertMutationTableNamecallsPgSqlRewriterTest::testInsertResolvesTargetAfterBlockCommentcallsPgSqlRewriterTest::testInsertReturnsWriteSimulatedWithMutationcallsPgSqlRewriterTest::testRewriteInsertReturnsWriteSimulatedcallsRewritePlanTest::testAffectedRowsModeReturningProjectionAffectedRowsModePlanCarriesReturningAndAffectedRowsMetadatacallsRewritePlanTest::testKindSqlKindPlanHoldsSqlKindAndMutationcallsRewritePlanTest::testRequireMutationAnswersTheMutationTheWriteWasSimulatedAscallsSqliteRewriterTest::testInsertResolvesTargetAfterBlockCommentcallsSqliteRewriterTest::testInsertReturnsWriteSimulatedWithMutationcallsSqliteRewriterTest::testWritePlanHasNonNullMutationcallsSessionTest::testApplyShadowWritesTheMutationAndAnswersWhatItCameTocallsSessionTest::testForeignKeyFailureRestoresShadowStatecallsSessionTest::testRunResultSelectAndApplyShadowReadsBackWhatTheStatementWouldHaveWrittencallsDataMutationTest::providerRowChangingMutationcallsMutationImpactTest::testAffectedRowCountIsNothingWhereTheStatementReportsNonecallsMutationImpactTest::testIgnoredInsertHasNoReturningRowscallsMutationImpactTest::testImpactPreservesEveryChangedRowAndDuplicateMultiplicitycallsMutationImpactTest::testInsertImpactContainsOnlyRowsActuallyAddedcallsMutationImpactTest::testReturningRowsAnswersTheRowsAStatementWouldReadBackcallsRowMutationResolverTest::testResolveInsertcallsShadowMutationTest::testApplyWritesWhatTheStatementDidIntoTheShadowcallsShadowMutationTest::testTableNameAnswersTheTableTheStatementWritescallsMySqlMutationResolverTest::testInsertIgnoreReturnsInsertMutationcallsMySqlMutationResolverTest::testResolveInsertIgnoreIncludesPrimaryKeyscallsMySqlMutationResolverTest::testResolveInsertIgnoreProducesInsertMutationcallsMySqlMutationResolverTest::testResolveInsertIgnoreReturnsInsertMutationWithIgnorecallsMySqlMutationResolverTest::testResolveInsertIgnoreReturnsPrimaryKeysFromDefinitioncallsMySqlMutationResolverTest::testResolveInsertIgnoreWithoutDefinitionReturnEmptyPkscallsMySqlMutationResolverTest::testResolveInsertReturnsInsertMutationcallsPgSqlMutationResolverTest::testResolveInsertFalseValueForHasInsertSelectcallsPgSqlMutationResolverTest::testResolveInsertLowercaseExtractsTablecallsPgSqlMutationResolverTest::testResolveInsertNoRegistryStillWorkscallsPgSqlMutationResolverTest::testResolveInsertReturnsInsertMutationcallsPgSqlMutationResolverTest::testResolveInsertReturnsInsertMutationForValuescallsPgSqlMutationResolverTest::testResolveInsertReturnsPrimaryKeysFromRegistrycallsPgSqlMutationResolverTest::testResolveInsertWithOnConflictDoNothingcallsPgSqlMutationResolverTest::testResolveInsertWithOnConflictDoNothingReturnsInsertMutationcallsPgSqlMutationResolverTest::testResolveInsertWithoutOnConflictcallsPgSqlMutationResolverTest::testResolveInsertWithoutRegistryReturnsEmptyPrimaryKeyscallsPgSqlMutationResolverTest::testResolveOnConflictDoNothingWithoutRegisteredSchemacallsReferentialIntegrityEnforcerTest::testAcceptsExplicitReferenceToNonPrimaryCandidateKeycallsReferentialIntegrityEnforcerTest::testExplicitReferencedColumnsAreNotReplacedByPrimaryKeycallsReferentialIntegrityEnforcerTest::testFallbackTransitionPropagatesUpdateAndDeleteFromOneTablecallsReferentialIntegrityEnforcerTest::testMissingReferencedValuesDoNotStopLaterUpdateOrDeleteCascadescallsReferentialIntegrityEnforcerTest::testRejectsInsertWhoseParentDoesNotExistcallsReferentialIntegrityEnforcerTest::testRowsWithMissingPrimaryKeyCannotMatchRowsThatHaveTheKeycallsReferentialIntegrityEnforcerTest::testValidationContinuesPastMissingAndNullForeignKeyscallsInsertMutationResolverTest::testResolveInsertInsertcallsInsertMutationResolverTest::testResolveInsertInsertIgnorecallsInsertMutationResolverTest::testResolveInsertInsertIgnoreWithDefinitionReturnsPrimaryKeyscallsInsertMutationResolverTest::testResolveInsertInsertIgnoreWithoutDefinitionReturnsEmptyPrimaryKeyscallsInsertMutationResolverTest::testResolveInsertInsertIgnoreWithPrimaryKeyscallsInsertMutationResolverTest::testResolveInsertInsertIgnoreWithPrimaryKeysReturnsInsertMutationcallsInsertMutationResolverTest::testResolveInsertInsertOnConflictDoNothingIsIgnorecallsInsertMutationResolverTest::testResolveInsertInsertTableNamecallsShadowApplicationTest::testApplyAnswersWhatTheStatementCameTocallsShadowApplicationTest::testApplyLeavesTheShadowAsItWasWhenTheStatementIsRefusedcallsShadowApplicationTest::testApplyWritesTheRowsAMutationDescribesIntoTheShadowcallsShadowApplicationTest::testLastInsertIdOfAnswersTheIdentityTheTableSaysIsNumberedcallsShadowApplicationTest::testLastInsertIdOfFallsBackToASingleColumnKeycallsShadowApplicationTest::testLastInsertIdOfIsNothingWhereNoColumnIsNumberedcallsSqliteMutationResolverTest::testResolveInsertcallsSqliteMutationResolverTest::testResolveInsertIgnorecallsSqliteMutationResolverTest::testResolveInsertIgnoreWithDefinitionReturnsPrimaryKeyscallsSqliteMutationResolverTest::testResolveInsertIgnoreWithoutDefinitionReturnsEmptyPrimaryKeyscallsSqliteMutationResolverTest::testResolveInsertIgnoreWithPrimaryKeyscallsSqliteMutationResolverTest::testResolveInsertIgnoreWithPrimaryKeysReturnsInsertMutationcallsSqliteMutationResolverTest::testResolveInsertOnConflictDoNothingIsIgnorecallsSqliteMutationResolverTest::testResolveInsertTableNamecallsSqliteMutationResolverTest::testResolveOnConflictDoNothingIsNotUpsertcallsSqliteMutationResolverTest::testResolveOnConflictWithEmptyUpdatesReturnsInsertcallsStatementSimulatorTest::testWriteStatementUpdatesShadowStorecalls
Relations§
Instantiated in 5
- new ZtdQuery\Platform\MySql\Shadow\Mutation\Row\RowMutationResolver::resolveInsert() packages/ztd-query-mysql/src/Shadow/Mutation/Row/RowMutationResolver.php:202
- new ZtdQuery\Platform\Postgres\Shadow\Mutation\Row\RowMutationResolver::resolveInsert() packages/ztd-query-postgres/src/Shadow/Mutation/Row/RowMutationResolver.php:81
- new ZtdQuery\Platform\Postgres\Shadow\Mutation\Row\RowMutationResolver::resolveInsert() packages/ztd-query-postgres/src/Shadow/Mutation/Row/RowMutationResolver.php:92
- new ZtdQuery\Platform\Sqlite\Shadow\Resolution\InsertMutationResolver::resolveInsert() packages/ztd-query-sqlite/src/Shadow/Resolution/InsertMutationResolver.php:60
- new ZtdQuery\Platform\Sqlite\Shadow\Resolution\InsertMutationResolver::resolveOnConflict() packages/ztd-query-sqlite/src/Shadow/Resolution/InsertMutationResolver.php:113