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 89
UpsertSourceRuleTest::testRewriteAddsTheClauseToTheOuterSourceAndPreservesItsNestedSelectcovers and callsUpsertSourceRuleTest::testRewriteOnlyCompletesTheLastCompoundOperandcovers and callsUpsertSourceRuleTest::testRewritePreservesAnEarlierFromWhenTheFinalOperandIsValuescovers and callsUpsertSourceRuleTest::testRewritePreservesEmptyAndNonSelectCommandscovers and callsUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSourcescallsUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#0coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#1coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#10coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#11coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#12coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#13coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#14coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#15coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#16coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#17coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#18coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#19coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#2coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#20coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#21coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#22coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#23coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#24coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#25coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#26coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#27coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#28coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#29coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#3coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#30coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#31coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#32coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#33coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#34coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#35coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#36coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#37coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#38coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#39coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#4coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#40coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#41coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#42coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#43coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#44coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#45coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#46coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#47coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#48coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#49coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#5coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#50coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#51coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#52coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#53coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#54coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#55coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#56coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#57coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#58coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#59coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#6coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#60coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#61coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#62coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#63coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#64coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#65coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#66coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#67coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#68coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#69coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#7coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#70coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#71coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#72coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#73coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#74coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#75coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#76coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#77coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#78coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#79coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#8coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#80coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#81coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#82coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#83coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#9covers
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 95§
Test cases that cover or call this symbol, from the coverage report and from the analyzed test sources.
Dedicated tests 89
UpsertSourceRuleTest::testRewriteAddsTheClauseToTheOuterSourceAndPreservesItsNestedSelectcovers and callsUpsertSourceRuleTest::testRewriteOnlyCompletesTheLastCompoundOperandcovers and callsUpsertSourceRuleTest::testRewritePreservesAnEarlierFromWhenTheFinalOperandIsValuescovers and callsUpsertSourceRuleTest::testRewritePreservesEmptyAndNonSelectCommandscovers and callsUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSourcescallsUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#0coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#1coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#10coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#11coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#12coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#13coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#14coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#15coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#16coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#17coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#18coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#19coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#2coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#20coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#21coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#22coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#23coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#24coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#25coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#26coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#27coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#28coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#29coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#3coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#30coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#31coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#32coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#33coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#34coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#35coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#36coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#37coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#38coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#39coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#4coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#40coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#41coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#42coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#43coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#44coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#45coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#46coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#47coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#48coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#49coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#5coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#50coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#51coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#52coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#53coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#54coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#55coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#56coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#57coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#58coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#59coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#6coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#60coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#61coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#62coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#63coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#64coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#65coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#66coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#67coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#68coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#69coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#7coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#70coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#71coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#72coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#73coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#74coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#75coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#76coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#77coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#78coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#79coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#8coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#80coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#81coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#82coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#83coversUpsertSourceRuleTest::testRewriteSeparatesOnlyAmbiguousInsertSources#9covers
Other tests reaching this symbol 6
MySqlProviderTestcallsPostgreSqlProviderTestcallsSqlGeneratorFactoryTestcallsGenerationContextTestcallsRewriteDefinitionsTestcallsSqliteProviderTestcalls