classInsertTransformer
final class InsertTransformer
implements SqlTransformer
Transforms INSERT statements into SELECT queries that return the inserted rows. Applies CTE shadowing via the SelectTransformer delegate.
Methods§
public function __construct(
PgSqlParser $parser,
SelectTransformer $selectTransformer,
?CastRenderer $castRenderer = null,
)Initializes the collaborators and state used by this insert transformer.
Parameters
$parser | PgSqlParser | |
$selectTransformer | SelectTransformer | |
$castRenderer | ?CastRenderer |
public function transform(string $sql, array $tables): string{@inheritDoc}
Parameters
$sql | string | |
$tables | array |
Returns
stringThrows
Test cases 27
InsertTransformerTest::testBooleanPlaceholderUsesNullSafeCastOnlyForBooleanPlaceholdercallsInsertTransformerTest::testCommitRewriteStateInsertAllocatesSerialValuesWithoutPhysicalSequencecallsInsertTransformerTest::testExplicitIdentityDoesNotConsumeGeneratedIdentitycallsInsertTransformerTest::testInsertAllocatesSerialValueAfterExistingRowscallsInsertTransformerTest::testInsertAppliesCteShadowingcallsInsertTransformerTest::testInsertDefaultValuesProjectsCompleteRowcallsInsertTransformerTest::testInsertExactOutputFormatcallsInsertTransformerTest::testInsertMultipleRowscallsInsertTransformerTest::testInsertMultiRowExactFormatcallsInsertTransformerTest::testInsertNormalizesSparseTableColumnKeyscallsInsertTransformerTest::testInsertNoValuesThrowscallsInsertTransformerTest::testInsertProjectsOmittedAndExplicitDefaultscallsInsertTransformerTest::testInsertSelectcallsInsertTransformerTest::testInsertSelectUsesExplicitTargetColumnsForProjectionAndIdentitycallsInsertTransformerTest::testInsertValueCountMismatchThrowsExceptioncallsInsertTransformerTest::testInsertValuesColumnExprAppearsInOutputcallsInsertTransformerTest::testInsertValuesWithExplicitColumnscallsInsertTransformerTest::testInsertValuesWithoutColumnsUsesTableContextcallsInsertTransformerTest::testInsertValuesWithWhitespaceAroundValuescallsInsertTransformerTest::testInsertWithoutColumnsAndNoTableContextThrowsExceptioncallsInsertTransformerTest::testInsertWithoutTableThrowsExceptioncallsInsertTransformerTest::testInsertWithSchemaQualifiedTablecallsInsertTransformerTest::testParentAndPartitionShareSerialAllocationNamespacecallsInsertTransformerTest::testProjectsPartialIndexPredicateForBothCandidateRowscallsInsertTransformerTest::testTransformProjectsConflictExpressionUsingCandidateKeyscallsInsertTransformerTest::testUncommittedTransformDoesNotConsumeSerialValuecallsInsertTransformerTest::testUsesInjectedCastRendererForTypedValuecalls
Called from 1
Calls 14
- method-call ShadowIdentityAllocator::beginProjection() line 55
- method-call PgSqlParser::extractInsertTable() line 56
- new UnsupportedSqlException line 58
- method-call PgSqlParser::extractInsertColumns() line 61
- static-call OrderedExpressions::orderedValues() line 62
- method-call PgSqlParser::hasInsertSelect() line 72
- method-call SelectProjection::render() line 73
- new SelectProjection line 73
- method-call UpsertProjection::projectUpsert() line 74
- new UpsertProjection line 74
- method-call SelectTransformer::transform() line 76
- method-call ValueProjection::render() line 79
- new ValueProjection line 79
- method-call PgSqlCteShadowComposer::carryPrefix() line 83
public function commitRewriteState(): voidCommits staged generated identity values after a successful rewrite.
Test cases 3
Called from 1
Calls 1
- method-call ShadowIdentityAllocator::commitProjection() line 93
Private surface 8§
Implementation details, listed for orientation only.
private PgSqlParser $parserprivate SelectTransformer $selectTransformerprivate CastRenderer $castRendererprivate InsertRowRenderer $rowRendererprivate ShadowIdentityAllocator $identityAllocatorprivate InsertSelectRenderer $insertSelectRendererprivate PgSqlCteShadowComposer $cteComposerprivate PgSqlNativeUpsertProjector $upsertProjectorTest cases 171§
Test cases that cover or call this symbol, from the coverage report and from the analyzed test sources.
Dedicated tests 27
InsertTransformerTest::testBooleanPlaceholderUsesNullSafeCastOnlyForBooleanPlaceholdercallsInsertTransformerTest::testCommitRewriteStateInsertAllocatesSerialValuesWithoutPhysicalSequencecallsInsertTransformerTest::testExplicitIdentityDoesNotConsumeGeneratedIdentitycallsInsertTransformerTest::testInsertAllocatesSerialValueAfterExistingRowscallsInsertTransformerTest::testInsertAppliesCteShadowingcallsInsertTransformerTest::testInsertDefaultValuesProjectsCompleteRowcallsInsertTransformerTest::testInsertExactOutputFormatcallsInsertTransformerTest::testInsertMultipleRowscallsInsertTransformerTest::testInsertMultiRowExactFormatcallsInsertTransformerTest::testInsertNormalizesSparseTableColumnKeyscallsInsertTransformerTest::testInsertNoValuesThrowscallsInsertTransformerTest::testInsertProjectsOmittedAndExplicitDefaultscallsInsertTransformerTest::testInsertSelectcallsInsertTransformerTest::testInsertSelectUsesExplicitTargetColumnsForProjectionAndIdentitycallsInsertTransformerTest::testInsertValueCountMismatchThrowsExceptioncallsInsertTransformerTest::testInsertValuesColumnExprAppearsInOutputcallsInsertTransformerTest::testInsertValuesWithExplicitColumnscallsInsertTransformerTest::testInsertValuesWithoutColumnsUsesTableContextcallsInsertTransformerTest::testInsertValuesWithWhitespaceAroundValuescallsInsertTransformerTest::testInsertWithoutColumnsAndNoTableContextThrowsExceptioncallsInsertTransformerTest::testInsertWithoutTableThrowsExceptioncallsInsertTransformerTest::testInsertWithSchemaQualifiedTablecallsInsertTransformerTest::testParentAndPartitionShareSerialAllocationNamespacecallsInsertTransformerTest::testProjectsPartialIndexPredicateForBothCandidateRowscallsInsertTransformerTest::testTransformProjectsConflictExpressionUsingCandidateKeyscallsInsertTransformerTest::testUncommittedTransformDoesNotConsumeSerialValuecallsInsertTransformerTest::testUsesInjectedCastRendererForTypedValuecalls
Other tests reaching this symbol 144
RewriterBench::setUpcallsFullPipelineFuzzTest::testCreateTableRewriteRegistersThenDmlSucceedscallsFullPipelineFuzzTest::testCreateTableThenDeleteDoesNotCrashcallsFullPipelineFuzzTest::testCreateTableThenInsertDoesNotCrashcallsFullPipelineFuzzTest::testCreateTableThenSelectDoesNotCrashcallsFullPipelineFuzzTest::testCreateTableThenUpdateDoesNotCrashcallsFullPipelineFuzzTest::testShadowStoreIntegrityAfterMultipleOperationscallsRewriteCheck::verifycallsRewriteFuzzTest::setUpcallsPgSqlSessionFactoryTestcallsPgSqlRewriterTest::testAlterTableThrowsUnsupportedcallsPgSqlRewriterTest::testBuildTableContextMergesRegistryAndShadowcallsPgSqlRewriterTest::testBuildTableContextRegistryAndShadowBothIncludedcallsPgSqlRewriterTest::testBuildTableContextRegistryOnlyNoShadowcallsPgSqlRewriterTest::testBuildTableContextShadowOnlyDerivesDifferentColumnsAcrossRowscallsPgSqlRewriterTest::testBuildTableContextShadowOnlyDifferentColumnKeyscallsPgSqlRewriterTest::testBuildTableContextShadowOnlyDifferentColumnKeysDetailedcallsPgSqlRewriterTest::testBuildTableContextShadowOnlyWithEmptyRowsNoCtecallsPgSqlRewriterTest::testBuildTableContextShadowOnlyWithRowsDeriveColumnscallsPgSqlRewriterTest::testChildPartitionSelectUsesFilteredParentShadowSourcecallsPgSqlRewriterTest::testChildPartitionWriteMutationTargetsRootParentcallsPgSqlRewriterTest::testCommitIsSkippedcallsPgSqlRewriterTest::testCommitRewriteStateRetainsAllocatedSequenceValuescallsPgSqlRewriterTest::testCreateTableAsSelectNoShadowReturnsSqlWhereFalsecallsPgSqlRewriterTest::testCreateTableAsSelectReturnsDdlWithTransformedSqlcallsPgSqlRewriterTest::testCreateTableAsSelectTransformsSelectPartcallsPgSqlRewriterTest::testCreateTableAsSelectWithRegisteredSourceTablecallsPgSqlRewriterTest::testCreateTableNotAsSelectReturnsSqlWhereFalsecallsPgSqlRewriterTest::testCreateTableReturnsDdlSimulatedcallsPgSqlRewriterTest::testCreateTableReturnsSelectOneWhereFalsecallsPgSqlRewriterTest::testCreateTableWithoutAsSelectReturnsSqlWhereFalsecallsPgSqlRewriterTest::testCteReferencesAreMatchedCaseInsensitivelyDuringSchemaValidationcallsPgSqlRewriterTest::testDefaultPartitionExcludesOnlySpecificSiblingsOfSameParentcallsPgSqlRewriterTest::testDeleteEnsuresDmlTargetInShadowStorecallsPgSqlRewriterTest::testDeleteEnsuresDmlTargetIsCalledForDeletecallsPgSqlRewriterTest::testDeleteEnsuresDmlTargetViaShadowStorecallsPgSqlRewriterTest::testDeleteMutationTableNamecallsPgSqlRewriterTest::testDeleteResolvesTargetAfterBlockCommentcallsPgSqlRewriterTest::testDeleteReturnsWriteSimulatedWithMutationcallsPgSqlRewriterTest::testDeleteSqlIsTransformedcallsPgSqlRewriterTest::testDoBlockPassesThroughWithoutInspectingBodyTablescallsPgSqlRewriterTest::testDropTableReturnsDdlSimulatedcallsPgSqlRewriterTest::testDropTableReturnsSelectOneWhereFalsecallsPgSqlRewriterTest::testDropTableThenCreateDoesNotThrowcallsPgSqlRewriterTest::testEmptyInputThrowsExceptioncallsPgSqlRewriterTest::testEmptyResultSelectProducesNoRowscallsPgSqlRewriterTest::testExplainPassesThroughUnchangedcallsPgSqlRewriterTest::testGeneratedExpressionIsPresentBeforeTheFirstShadowWritecallsPgSqlRewriterTest::testInsertDoesNotCallEnsureDmlTargetcallsPgSqlRewriterTest::testInsertMutationTableNamecallsPgSqlRewriterTest::testInsertResolvesTargetAfterBlockCommentcallsPgSqlRewriterTest::testInsertResultSelectContainsColumnNamescallsPgSqlRewriterTest::testInsertReturnsWriteSimulatedWithMutationcallsPgSqlRewriterTest::testInsertRewriteOutputContainsSelectcallsPgSqlRewriterTest::testInsertSqlIsTransformedcallsPgSqlRewriterTest::testLateralDerivedTableKeepsNestedPhysicalRelationInShadowScopecallsPgSqlRewriterTest::testMergeBuildsAtomicSynchronizationPlancallsPgSqlRewriterTest::testMultiStatementThrowsExceptioncallsPgSqlRewriterTest::testNestedPartitionInsertAllocatesIdentityFromRootRowscallsPgSqlRewriterTest::testReadPlanHasNoMutationcallsPgSqlRewriterTest::testRegisteredTableUpsertProjectsConflictExpressioncallsPgSqlRewriterTest::testRegisteredViewIsKnownAndMaterializedcallsPgSqlRewriterTest::testRewriteCreateTableAsSelectNonCreateStatementDoesNotEnterCtasBranchcallsPgSqlRewriterTest::testRewriteDeleteEnsuresShadowStoreEntrycallsPgSqlRewriterTest::testRewriteDeleteReturnsWriteSimulatedcallsPgSqlRewriterTest::testRewriteDropTableReturnsSelectWhereFalsecallsPgSqlRewriterTest::testRewriteEmptyInputForRewriteMultipleThrowscallsPgSqlRewriterTest::testRewriteInsertDoesNotCallEnsureDmlTargetcallsPgSqlRewriterTest::testRewriteInsertReturnsWriteSimulatedcallsPgSqlRewriterTest::testRewriteInsertUsesDefaultsFromRegistryWithoutShadowRowscallsPgSqlRewriterTest::testRewriteInsertUsesIdentityStrategyFromRegistryWithoutShadowRowscallsPgSqlRewriterTest::testRewriteIsDeterministiccallsPgSqlRewriterTest::testRewriteLeadingWhitespaceTrimsBeforeClassifycallsPgSqlRewriterTest::testRewriteMultiplecallsPgSqlRewriterTest::testRewriteMultipleAllReadStatementscallsPgSqlRewriterTest::testRewriteMultipleEmptycallsPgSqlRewriterTest::testRewriteMultipleEmptyStringThrowscallsPgSqlRewriterTest::testRewriteMultipleLeadingWhitespaceTrimsBeforeClassifycallsPgSqlRewriterTest::testRewriteMultipleMultiStatementcallsPgSqlRewriterTest::testRewriteMultipleSingleStatementcallsPgSqlRewriterTest::testRewriteMultipleWhitespaceOnlyThrowscallsPgSqlRewriterTest::testRewriteMultipleWithDdlcallsPgSqlRewriterTest::testRewriteMultipleWithLeadingTrailingWhitespaceProducesValidSqlcallsPgSqlRewriterTest::testRewriteMultipleWithLeadingWhitespacecallsPgSqlRewriterTest::testRewriteMultipleWithOnlyWhitespaceThrowsAfterTrimcallsPgSqlRewriterTest::testRewriteOutputIsNonEmptycallsPgSqlRewriterTest::testRewriteUpdateEnsuresShadowStoreEntrycallsPgSqlRewriterTest::testRewriteUpdateReturnsWriteSimulatedcallsPgSqlRewriterTest::testRewriteWhitespaceOnlyThrowscallsPgSqlRewriterTest::testRewriteWithLeadingTrailingWhitespaceProducesValidSqlcallsPgSqlRewriterTest::testRewriteWithLeadingWhitespacecallsPgSqlRewriterTest::testRewriteWithLeadingWhitespaceTrimsFirstcallsPgSqlRewriterTest::testRewriteWithOnlyWhitespaceThrowsAfterTrimcallsPgSqlRewriterTest::testRollbackIsSkippedcallsPgSqlRewriterTest::testSchemaQualifiedSelectUsesShadowCtecallsPgSqlRewriterTest::testSelectIgnoresSqlKeywordsInsideLeadingLineCommentcallsPgSqlRewriterTest::testSelectReturnsReadKindcallsPgSqlRewriterTest::testSelectRewritesTableAfterBlockCommentcallsPgSqlRewriterTest::testSelectTableExistsInBothRegistryAndShadowcallsPgSqlRewriterTest::testSelectTableExistsInRegistryOnlycallsPgSqlRewriterTest::testSelectTableExistsInShadowStoreNotRegistrycallsPgSqlRewriterTest::testSelectTransformsCteWithShadowDatacallsPgSqlRewriterTest::testSelectUnknownTableWithSchemaContextThrowscallsPgSqlRewriterTest::testSelectUnknownTableWithShadowContextThrowscallsPgSqlRewriterTest::testSelectWithEmptyShadowGeneratesEmptyCtecallsPgSqlRewriterTest::testSelectWithMultiRowShadowUsesValuescallsPgSqlRewriterTest::testSelectWithNoSchemaContextPassesThroughcallsPgSqlRewriterTest::testSelectWithShadowOnlyDataDerivesColumnscallsPgSqlRewriterTest::testSelectWithShadowOnlyDataMergesColumnsAcrossRowscallsPgSqlRewriterTest::testSelectWithShadowOnlyHasSchemaContextcallsPgSqlRewriterTest::testShowPassesThroughUnchangedcallsPgSqlRewriterTest::testSkippedStatementPassesThroughcallsPgSqlRewriterTest::testSplitStatementsPreservesQuotedSemicolonscallsPgSqlRewriterTest::testStoredTableUpsertProjectsConflictExpressioncallsPgSqlRewriterTest::testTableFunctionDoesNotHideJoinedShadowRelationcallsPgSqlRewriterTest::testTransactionStatementParsesShadowTransactionOperationscallsPgSqlRewriterTest::testTruncateMutationTableNamecallsPgSqlRewriterTest::testTruncateReturnsSelectOneWhereFalsecallsPgSqlRewriterTest::testTruncateReturnsSelectWhereFalsecallsPgSqlRewriterTest::testTruncateReturnsWriteSimulatedWithMutationcallsPgSqlRewriterTest::testUnknownTableAfterDeclaredCteIsRejectedcallsPgSqlRewriterTest::testUnsupportedSqlThrowsExceptioncallsPgSqlRewriterTest::testUpdateDoesNotPromoteMaterializedUnknownTablecallsPgSqlRewriterTest::testUpdateEnsuresDmlTargetInShadowStorecallsPgSqlRewriterTest::testUpdateEnsuresDmlTargetIsCalledForUpdatecallsPgSqlRewriterTest::testUpdateEnsuresDmlTargetViaShadowStorecallsPgSqlRewriterTest::testUpdateMutationTableNamecallsPgSqlRewriterTest::testUpdatePreservesDollarQuotedStringBeforeWherecallsPgSqlRewriterTest::testUpdatePreservesDoubledQuoteStringBeforeWherecallsPgSqlRewriterTest::testUpdatePreservesEscapeStringBeforeWherecallsPgSqlRewriterTest::testUpdateResolvesTargetAfterBlockCommentcallsPgSqlRewriterTest::testUpdateReturnsWriteSimulatedWithMutationcallsPgSqlRewriterTest::testUpdateSqlIsTransformedcallsPgSqlRewriterTest::testWritePlanHasNonNullMutationcallsStatementRewriterTest::testRewriteMutationStagesDdlUntilItIsAppliedcallsStatementRewriterTest::testRewriteStatementShadowsRegisteredTablescallsStatementRewriterTest::testValidateReadTablesRejectsUndeclaredRelationscallsPgSqlTransformerTest::testCommitRewriteStateCommitsGeneratedIdentityValuescallsPgSqlTransformerTest::testTransformDeleteDelegatesToDeleteTransformercallsPgSqlTransformerTest::testTransformInsertDelegatesToInsertTransformercallsPgSqlTransformerTest::testTransformMergeDelegatesToMergeTransformercallsPgSqlTransformerTest::testTransformSelectDelegatesToSelectTransformercallsPgSqlTransformerTest::testTransformUnsupportedStatementThrowscallsPgSqlTransformerTest::testTransformUpdateDelegatesToUpdateTransformercalls
Relations§
Instantiated in 1
Method calls 2
- method-call ZtdQuery\Platform\Postgres\Rewrite\Transformer\PgSqlTransformer::transform() packages/ztd-query-postgres/src/Rewrite/Transformer/PgSqlTransformer.php:55
- method-call ZtdQuery\Platform\Postgres\Rewrite\Transformer\PgSqlTransformer::commitRewriteState() packages/ztd-query-postgres/src/Rewrite/Transformer/PgSqlTransformer.php:68