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 2
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 1
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 1
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
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 11§
Test cases that cover or call this symbol, from the coverage report and from the analyzed test sources.
Dedicated tests 5
DefinitionRuleTest::testDeclaredKindUsesTheEnclosingTypecallsDefinitionRuleTest::testInferCountRemovesOnlyTheExplicitCountcallsDefinitionRuleTest::testReplaceValuesPreservesFragmentsWithoutAnInsertionPointcallsDefinitionRuleTest::testRewriteKeepsOneKindAcrossTheDefinitionListcallsDefinitionRuleTest::testRewritePreservesAStandaloneDefinitionWithoutAListcalls
Other tests reaching this symbol 6
GenerationContextTestcallsRewriteDefinitionsTestcallsSqlGeneratorFactoryTestcallsMySqlProviderTestcallsPostgreSqlProviderTestcallsSqliteProviderTestcalls