classIntegerContextRule
final class IntegerContextRule
implements RewriteRule
Completes source-defined integer contexts in sql_yacc.yy, including diagnostic decimal alternatives.
Methods§
public function __construct(private bool $strictYearWidth = true)MySQL 5.6 and 5.7 normalize unsupported YEAR widths instead of rejecting them.
Parameters
$strictYearWidth | bool |
public function rewrite(TerminalSequence $sequence): TerminalSequenceKeeps ordinary numeric expressions unchanged and constrains only the checked grammar positions.
Parameters
$sequence | TerminalSequence |
Returns
Test cases 11
IntegerContextRuleTest::testOptionsBoundsKeyBlockSizeInOldAndModernGrammarscallsIntegerContextRuleTest::testOptionsKeepsNumericLimitsWithinTheirGrammarScopecallsIntegerContextRuleTest::testOptionsLimitsOnlyTheDeclaredNumericOptioncallsIntegerContextRuleTest::testRewriteConstrainsEachBooleanReplicationOptioncallsIntegerContextRuleTest::testRewriteConstrainsOnlyIdentifierFormSizesAndResetIndicescallsIntegerContextRuleTest::testRewriteConstrainsTheCheckedReplicationFlagcallsIntegerContextRuleTest::testRewriteKeepsTheDefaultStatisticsOptioncallsIntegerContextRuleTest::testRewritePreservesDefaultAndRestrictsOnlyTheNumericTernaryOptioncallsIntegerContextRuleTest::testRewritePreservesEmptyResetOptionscallsIntegerContextRuleTest::testRewriteReplacesOnlyDiagnosticDecimalAlternativescallsIntegerContextRuleTest::testYearWidthConstrainsOnlyExplicitYearWidthscalls
Calls 6
- method-call TerminalSequence::occurrences() line 30
- method-call IntegerContextRule::mapped() line 31
- function-call
in_arrayline 36 - method-call IntegerContextRule::options() line 46
- method-call IntegerContextRule::yearWidth() line 47
- method-call IntegerContextRule::weightStringLength() line 48
public function weightStringLength(TerminalSequence $sequence): TerminalSequenceGives WEIGHT_STRING its positive code-point count domain.
Parameters
$sequence | TerminalSequence |
Returns
Called from 1
Calls 3
- method-call TerminalSequence::occurrences() line 76
- method-call TerminalSequence::child() line 77
- method-call IntegerContextRule::mapped() line 79
public function yearWidth(TerminalSequence $sequence): TerminalSequenceKeeps YEAR width checks independent of general integer and table-option domains.
Parameters
$sequence | TerminalSequence |
Returns
Test cases 1
Called from 1
Calls 4
- method-call TerminalSequence::occurrences() line 93
- method-call TerminalSequence::range() line 94
- method-call TerminalSequence::child() line 95
- method-call TerminalSequence::nameAt() line 98
public function options(TerminalSequence $sequence): TerminalSequenceApplies the independently bounded delay and statistics options in their owning productions.
Parameters
$sequence | TerminalSequence |
Returns
Test cases 2
Called from 1
Calls 5
- method-call TerminalSequence::occurrences() line 113
- method-call TerminalSequence::range() line 114
- method-call TerminalSequence::child() line 115
- method-call TerminalSequence::nameAt() line 116
- method-call IntegerContextRule::mapped() line 119
public function mapped(
TerminalSequence $sequence,
int $production,
string $terminal,
string $source,
): TerminalSequenceRetains occurrence identity so a compatible explicit Plan spelling survives contextual renaming.
Parameters
$sequence | TerminalSequence | |
$production | int | |
$terminal | string | |
$source | string |
Returns
Test cases 1
Called from 8
- method-call SqlFaker\MySql\Generation\Rewrite\IntegerContextRule::rewrite() packages/sql-faker/src/MySql/Generation/Rewrite/IntegerContextRule.php:31
- method-call SqlFaker\MySql\Generation\Rewrite\IntegerContextRule::rewrite() packages/sql-faker/src/MySql/Generation/Rewrite/IntegerContextRule.php:37
- method-call SqlFaker\MySql\Generation\Rewrite\IntegerContextRule::rewrite() packages/sql-faker/src/MySql/Generation/Rewrite/IntegerContextRule.php:43
- method-call SqlFaker\MySql\Generation\Rewrite\IntegerContextRule::rewrite() packages/sql-faker/src/MySql/Generation/Rewrite/IntegerContextRule.php:52
- method-call SqlFaker\MySql\Generation\Rewrite\IntegerContextRule::rewrite() packages/sql-faker/src/MySql/Generation/Rewrite/IntegerContextRule.php:58
- method-call SqlFaker\MySql\Generation\Rewrite\IntegerContextRule::rewrite() packages/sql-faker/src/MySql/Generation/Rewrite/IntegerContextRule.php:65
- method-call SqlFaker\MySql\Generation\Rewrite\IntegerContextRule::weightStringLength() packages/sql-faker/src/MySql/Generation/Rewrite/IntegerContextRule.php:79
- method-call SqlFaker\MySql\Generation\Rewrite\IntegerContextRule::options() packages/sql-faker/src/MySql/Generation/Rewrite/IntegerContextRule.php:119
Calls 2
- method-call TerminalSequence::range() line 131
- method-call TerminalSequence::replace() line 132
Private surface 1§
Implementation details, listed for orientation only.
private bool $strictYearWidth = trueTest cases 19§
Test cases that cover or call this symbol, from the coverage report and from the analyzed test sources.
Dedicated tests 13
IntegerContextRuleTest::testMappedKeepsCompatiblePlanOccurrenceIdentitycallsIntegerContextRuleTest::testOptionsBoundsKeyBlockSizeInOldAndModernGrammarscallsIntegerContextRuleTest::testOptionsKeepsNumericLimitsWithinTheirGrammarScopecallsIntegerContextRuleTest::testOptionsLimitsOnlyTheDeclaredNumericOptioncallsIntegerContextRuleTest::testRewriteConstrainsEachBooleanReplicationOptioncallsIntegerContextRuleTest::testRewriteConstrainsOnlyIdentifierFormSizesAndResetIndicescallsIntegerContextRuleTest::testRewriteConstrainsTheCheckedReplicationFlagcallsIntegerContextRuleTest::testRewriteKeepsTheDefaultStatisticsOptioncallsIntegerContextRuleTest::testRewritePreservesDefaultAndRestrictsOnlyTheNumericTernaryOptioncallsIntegerContextRuleTest::testRewritePreservesEmptyResetOptionscallsIntegerContextRuleTest::testRewriteReplacesOnlyDiagnosticDecimalAlternativescallsIntegerContextRuleTest::testWeightStringLengthRestrictsOnlyTheDeclaredLengthcallsIntegerContextRuleTest::testYearWidthConstrainsOnlyExplicitYearWidthscalls
Other tests reaching this symbol 6
GenerationContextTestcallsRewriteDefinitionsTestcallsSqlGeneratorFactoryTestcallsMySqlProviderTestcallsPostgreSqlProviderTestcallsSqliteProviderTestcalls