classDefinitionRule
final class DefinitionRule
implements RewriteRule
PT_part_definition requires one partition kind for the list; PT_partition checks its declared count.
Methods§
public function rewrite(TerminalSequence $sequence): TerminalSequenceUses the explicit partition type, or the first definition for an ADD/REORGANIZE list.
Parameters
$sequence | TerminalSequence |
Returns
Test cases 16
DefinitionRuleTest::testRewriteKeepsOneKindAcrossTheDefinitionListcallsDefinitionRuleTest::testRewriteKeepsOneKindAcrossTheDefinitionList#0coversDefinitionRuleTest::testRewriteKeepsOneKindAcrossTheDefinitionList#1coversDefinitionRuleTest::testRewriteKeepsOneKindAcrossTheDefinitionList#10coversDefinitionRuleTest::testRewriteKeepsOneKindAcrossTheDefinitionList#11coversDefinitionRuleTest::testRewriteKeepsOneKindAcrossTheDefinitionList#12coversDefinitionRuleTest::testRewriteKeepsOneKindAcrossTheDefinitionList#13coversDefinitionRuleTest::testRewriteKeepsOneKindAcrossTheDefinitionList#2coversDefinitionRuleTest::testRewriteKeepsOneKindAcrossTheDefinitionList#3coversDefinitionRuleTest::testRewriteKeepsOneKindAcrossTheDefinitionList#4coversDefinitionRuleTest::testRewriteKeepsOneKindAcrossTheDefinitionList#5coversDefinitionRuleTest::testRewriteKeepsOneKindAcrossTheDefinitionList#6coversDefinitionRuleTest::testRewriteKeepsOneKindAcrossTheDefinitionList#7coversDefinitionRuleTest::testRewriteKeepsOneKindAcrossTheDefinitionList#8coversDefinitionRuleTest::testRewriteKeepsOneKindAcrossTheDefinitionList#9coversDefinitionRuleTest::testRewritePreservesAStandaloneDefinitionWithoutAListcovers and calls
Calls 9
- function-call
array_reverseline 25 - method-call TerminalSequence::occurrences() line 25
- method-call TerminalSequence::range() line 26
- method-call TerminalSequence::child() line 27
- function-call
array_searchline 32 - method-call TerminalSequence::nameAt() line 38
- method-call DefinitionRule::declaredKind() line 41
- method-call DefinitionRule::inferCount() line 42
- method-call DefinitionRule::replaceValues() line 47
public function declaredKind(
TerminalSequence $sequence,
?int $clause,
): 'HASH'|'LIST'|'RANGE'|nullReturns the enclosing declaration's kind, leaving ALTER lists to infer it from their values.
Parameters
$sequence | TerminalSequence | |
$clause | ?int |
Returns
'HASH'|'LIST'|'RANGE'|nullTest cases 21
DefinitionRuleTest::testDeclaredKindUsesTheEnclosingTypecallsDefinitionRuleTest::testDeclaredKindUsesTheEnclosingType#0coversDefinitionRuleTest::testDeclaredKindUsesTheEnclosingType#1coversDefinitionRuleTest::testDeclaredKindUsesTheEnclosingType#2coversDefinitionRuleTest::testDeclaredKindUsesTheEnclosingType#3coversDefinitionRuleTest::testDeclaredKindUsesTheEnclosingType#4coversDefinitionRuleTest::testDeclaredKindUsesTheEnclosingType#5coversDefinitionRuleTest::testRewriteKeepsOneKindAcrossTheDefinitionList#0coversDefinitionRuleTest::testRewriteKeepsOneKindAcrossTheDefinitionList#1coversDefinitionRuleTest::testRewriteKeepsOneKindAcrossTheDefinitionList#10coversDefinitionRuleTest::testRewriteKeepsOneKindAcrossTheDefinitionList#11coversDefinitionRuleTest::testRewriteKeepsOneKindAcrossTheDefinitionList#12coversDefinitionRuleTest::testRewriteKeepsOneKindAcrossTheDefinitionList#13coversDefinitionRuleTest::testRewriteKeepsOneKindAcrossTheDefinitionList#2coversDefinitionRuleTest::testRewriteKeepsOneKindAcrossTheDefinitionList#3coversDefinitionRuleTest::testRewriteKeepsOneKindAcrossTheDefinitionList#4coversDefinitionRuleTest::testRewriteKeepsOneKindAcrossTheDefinitionList#5coversDefinitionRuleTest::testRewriteKeepsOneKindAcrossTheDefinitionList#6coversDefinitionRuleTest::testRewriteKeepsOneKindAcrossTheDefinitionList#7coversDefinitionRuleTest::testRewriteKeepsOneKindAcrossTheDefinitionList#8coversDefinitionRuleTest::testRewriteKeepsOneKindAcrossTheDefinitionList#9covers
Called from 1
Calls 3
- method-call TerminalSequence::child() line 59
- method-call TerminalSequence::range() line 60
- method-call TerminalSequence::nameAt() line 61
public function inferCount(TerminalSequence $sequence, ?int $clause): TerminalSequenceLets MySQL infer the count from the explicit list instead of checking an independent number.
Parameters
$sequence | TerminalSequence | |
$clause | ?int |
Returns
Test cases 15
DefinitionRuleTest::testInferCountRemovesOnlyTheExplicitCountcovers and callsDefinitionRuleTest::testRewriteKeepsOneKindAcrossTheDefinitionList#0coversDefinitionRuleTest::testRewriteKeepsOneKindAcrossTheDefinitionList#1coversDefinitionRuleTest::testRewriteKeepsOneKindAcrossTheDefinitionList#10coversDefinitionRuleTest::testRewriteKeepsOneKindAcrossTheDefinitionList#11coversDefinitionRuleTest::testRewriteKeepsOneKindAcrossTheDefinitionList#12coversDefinitionRuleTest::testRewriteKeepsOneKindAcrossTheDefinitionList#13coversDefinitionRuleTest::testRewriteKeepsOneKindAcrossTheDefinitionList#2coversDefinitionRuleTest::testRewriteKeepsOneKindAcrossTheDefinitionList#3coversDefinitionRuleTest::testRewriteKeepsOneKindAcrossTheDefinitionList#4coversDefinitionRuleTest::testRewriteKeepsOneKindAcrossTheDefinitionList#5coversDefinitionRuleTest::testRewriteKeepsOneKindAcrossTheDefinitionList#6coversDefinitionRuleTest::testRewriteKeepsOneKindAcrossTheDefinitionList#7coversDefinitionRuleTest::testRewriteKeepsOneKindAcrossTheDefinitionList#8coversDefinitionRuleTest::testRewriteKeepsOneKindAcrossTheDefinitionList#9covers
Called from 1
Calls 3
- method-call TerminalSequence::child() line 71
- method-call TerminalSequence::range() line 72
- method-call TerminalSequence::replace() line 73
public function replaceValues(
TerminalSequence $sequence,
int $definition,
int $values,
'HASH'|'LIST'|'RANGE' $kind,
): TerminalSequenceReplaces incompatible values while preserving the definition and its occurrence identity.
Parameters
$sequence | TerminalSequence | |
$definition | int | |
$values | int | |
$kind | 'HASH'|'LIST'|'RANGE' |
Returns
Test cases 13
DefinitionRuleTest::testReplaceValuesPreservesFragmentsWithoutAnInsertionPointcovers and callsDefinitionRuleTest::testRewriteKeepsOneKindAcrossTheDefinitionList#0coversDefinitionRuleTest::testRewriteKeepsOneKindAcrossTheDefinitionList#1coversDefinitionRuleTest::testRewriteKeepsOneKindAcrossTheDefinitionList#10coversDefinitionRuleTest::testRewriteKeepsOneKindAcrossTheDefinitionList#11coversDefinitionRuleTest::testRewriteKeepsOneKindAcrossTheDefinitionList#12coversDefinitionRuleTest::testRewriteKeepsOneKindAcrossTheDefinitionList#13coversDefinitionRuleTest::testRewriteKeepsOneKindAcrossTheDefinitionList#4coversDefinitionRuleTest::testRewriteKeepsOneKindAcrossTheDefinitionList#5coversDefinitionRuleTest::testRewriteKeepsOneKindAcrossTheDefinitionList#6coversDefinitionRuleTest::testRewriteKeepsOneKindAcrossTheDefinitionList#7coversDefinitionRuleTest::testRewriteKeepsOneKindAcrossTheDefinitionList#8coversDefinitionRuleTest::testRewriteKeepsOneKindAcrossTheDefinitionList#9covers
Called from 1
Calls 4
- method-call TerminalSequence::range() line 83
- method-call TerminalSequence::child() line 84
- method-call TerminalSequence::insertedFor() line 97
- method-call TerminalSequence::replace() line 99
Test cases 31§
Test cases that cover or call this symbol, from the coverage report and from the analyzed test sources.
Dedicated tests 25
DefinitionRuleTest::testDeclaredKindUsesTheEnclosingTypecallsDefinitionRuleTest::testDeclaredKindUsesTheEnclosingType#0coversDefinitionRuleTest::testDeclaredKindUsesTheEnclosingType#1coversDefinitionRuleTest::testDeclaredKindUsesTheEnclosingType#2coversDefinitionRuleTest::testDeclaredKindUsesTheEnclosingType#3coversDefinitionRuleTest::testDeclaredKindUsesTheEnclosingType#4coversDefinitionRuleTest::testDeclaredKindUsesTheEnclosingType#5coversDefinitionRuleTest::testInferCountRemovesOnlyTheExplicitCountcovers and callsDefinitionRuleTest::testReplaceValuesPreservesFragmentsWithoutAnInsertionPointcovers and callsDefinitionRuleTest::testRewriteKeepsOneKindAcrossTheDefinitionListcallsDefinitionRuleTest::testRewriteKeepsOneKindAcrossTheDefinitionList#0coversDefinitionRuleTest::testRewriteKeepsOneKindAcrossTheDefinitionList#1coversDefinitionRuleTest::testRewriteKeepsOneKindAcrossTheDefinitionList#10coversDefinitionRuleTest::testRewriteKeepsOneKindAcrossTheDefinitionList#11coversDefinitionRuleTest::testRewriteKeepsOneKindAcrossTheDefinitionList#12coversDefinitionRuleTest::testRewriteKeepsOneKindAcrossTheDefinitionList#13coversDefinitionRuleTest::testRewriteKeepsOneKindAcrossTheDefinitionList#2coversDefinitionRuleTest::testRewriteKeepsOneKindAcrossTheDefinitionList#3coversDefinitionRuleTest::testRewriteKeepsOneKindAcrossTheDefinitionList#4coversDefinitionRuleTest::testRewriteKeepsOneKindAcrossTheDefinitionList#5coversDefinitionRuleTest::testRewriteKeepsOneKindAcrossTheDefinitionList#6coversDefinitionRuleTest::testRewriteKeepsOneKindAcrossTheDefinitionList#7coversDefinitionRuleTest::testRewriteKeepsOneKindAcrossTheDefinitionList#8coversDefinitionRuleTest::testRewriteKeepsOneKindAcrossTheDefinitionList#9coversDefinitionRuleTest::testRewritePreservesAStandaloneDefinitionWithoutAListcovers and calls
Other tests reaching this symbol 6
GenerationContextTestcallsRewriteDefinitionsTestcallsMySqlProviderTestcallsPostgreSqlProviderTestcallsSqlGeneratorFactoryTestcallsSqliteProviderTestcalls