classUpsertSourceRule
final class UpsertSourceRule
implements RewriteRule
parse.y:on_using resolves ON in favor of a JOIN until a SELECT clause separates the UPSERT.
Methods§
public function rewrite(TerminalSequence $sequence): TerminalSequenceAdds a WHERE expression only when an INSERT source ends with FROM immediately before ON CONFLICT.
Parameters
$sequence | TerminalSequence |
Returns
Test cases 5
UpsertSourceRuleTest::testRewriteAddsTheClauseToTheOuterSourceAndPreservesItsNestedSelectcallsUpsertSourceRuleTest::testRewriteOnlyCompletesTheLastCompoundOperandcallsUpsertSourceRuleTest::testRewritePreservesAnEarlierFromWhenTheFinalOperandIsValuescallsUpsertSourceRuleTest::testRewritePreservesEmptyAndNonSelectCommandscallsUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSourcescalls
Calls 4
- method-call TerminalSequence::occurrences() line 23
- method-call TerminalSequence::child() line 24
- method-call TerminalSequence::range() line 26
- method-call TerminalSequence::nameAt() line 27
Test cases 11§
Test cases that cover or call this symbol, from the coverage report and from the analyzed test sources.
Dedicated tests 5
UpsertSourceRuleTest::testRewriteAddsTheClauseToTheOuterSourceAndPreservesItsNestedSelectcallsUpsertSourceRuleTest::testRewriteOnlyCompletesTheLastCompoundOperandcallsUpsertSourceRuleTest::testRewritePreservesAnEarlierFromWhenTheFinalOperandIsValuescallsUpsertSourceRuleTest::testRewritePreservesEmptyAndNonSelectCommandscallsUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSourcescalls
Other tests reaching this symbol 6
MySqlProviderTestcallsPostgreSqlProviderTestcallsGenerationContextTestcallsRewriteDefinitionsTestcallsSqlGeneratorFactoryTestcallsSqliteProviderTestcalls