classWindowFrameRule
final class WindowFrameRule
implements RewriteRule
Preserves the frame boundary ordering and interval units required by window.cc.
Methods§
public function rewrite(TerminalSequence $sequence): TerminalSequenceRepairs each frame independently, including frames nested in offset expressions.
Parameters
$sequence | TerminalSequence |
Returns
Test cases 19
WindowFrameRuleTest::testRewriteChangesOnlyRowsFramesWithAnIntervalBoundarycallsWindowFrameRuleTest::testRewriteChangesOnlyRowsFramesWithAnIntervalBoundary#groups intervalcoversWindowFrameRuleTest::testRewriteChangesOnlyRowsFramesWithAnIntervalBoundary#range intervalcoversWindowFrameRuleTest::testRewriteChangesOnlyRowsFramesWithAnIntervalBoundary#rows intervalcoversWindowFrameRuleTest::testRewriteChangesOnlyRowsFramesWithAnIntervalBoundary#rows numbercoversWindowFrameRuleTest::testRewriteDoesNotUseIntervalsFromNestedFramesOrOffsetExpressionscovers and callsWindowFrameRuleTest::testRewriteKeepsAnAbsentFrameAndUnboundedKeepsAnAbsentBoundarycovers and callsWindowFrameRuleTest::testRewriteLeavesAnEmptyFrameUnchangedcovers and callsWindowFrameRuleTest::testRewritePreservesValidBoundariesAndRepairsInvalidOrderingcallsWindowFrameRuleTest::testRewritePreservesValidBoundariesAndRepairsInvalidOrdering#current through followingcoversWindowFrameRuleTest::testRewritePreservesValidBoundariesAndRepairsInvalidOrdering#equal currentcoversWindowFrameRuleTest::testRewritePreservesValidBoundariesAndRepairsInvalidOrdering#equal offsetscoversWindowFrameRuleTest::testRewritePreservesValidBoundariesAndRepairsInvalidOrdering#following through currentcoversWindowFrameRuleTest::testRewritePreservesValidBoundariesAndRepairsInvalidOrdering#following through precedingcoversWindowFrameRuleTest::testRewritePreservesValidBoundariesAndRepairsInvalidOrdering#forbidden endcoversWindowFrameRuleTest::testRewritePreservesValidBoundariesAndRepairsInvalidOrdering#forbidden startcoversWindowFrameRuleTest::testRewritePreservesValidBoundariesAndRepairsInvalidOrdering#full rangecoversWindowFrameRuleTest::testRewritePreservesValidBoundariesAndRepairsInvalidOrdering#preceding through currentcoversWindowFrameRuleTest::testRewriteReplacesAnEarlierEndAndRetainsAValidFramecovers and calls
Calls 7
- method-call TerminalSequence::occurrences() line 23
- function-call
array_valuesline 24 - function-call
array_filterline 24 - function-call
countline 25 - method-call WindowFrameRule::rank() line 29
- method-call WindowFrameRule::unbounded() line 30
- function-call
in_arrayline 44
public function rank(TerminalSequence $sequence, int $bound): intClassifies boundary categories without comparing runtime offset values.
Parameters
$sequence | TerminalSequence | |
$bound | int |
Returns
intTest cases 17
WindowFrameRuleTest::testRankClassifiesEndpointsWithoutTreatingOffsetExpressionsAsSeparateBoundscovers and callsWindowFrameRuleTest::testRankRetainsTheFiveSourceBoundaryCategoriescallsWindowFrameRuleTest::testRankRetainsTheFiveSourceBoundaryCategories#current rowcoversWindowFrameRuleTest::testRankRetainsTheFiveSourceBoundaryCategories#offset followingcoversWindowFrameRuleTest::testRankRetainsTheFiveSourceBoundaryCategories#offset precedingcoversWindowFrameRuleTest::testRankRetainsTheFiveSourceBoundaryCategories#unbounded followingcoversWindowFrameRuleTest::testRankRetainsTheFiveSourceBoundaryCategories#unbounded precedingcoversWindowFrameRuleTest::testRewritePreservesValidBoundariesAndRepairsInvalidOrdering#current through followingcoversWindowFrameRuleTest::testRewritePreservesValidBoundariesAndRepairsInvalidOrdering#equal currentcoversWindowFrameRuleTest::testRewritePreservesValidBoundariesAndRepairsInvalidOrdering#equal offsetscoversWindowFrameRuleTest::testRewritePreservesValidBoundariesAndRepairsInvalidOrdering#following through currentcoversWindowFrameRuleTest::testRewritePreservesValidBoundariesAndRepairsInvalidOrdering#following through precedingcoversWindowFrameRuleTest::testRewritePreservesValidBoundariesAndRepairsInvalidOrdering#forbidden endcoversWindowFrameRuleTest::testRewritePreservesValidBoundariesAndRepairsInvalidOrdering#forbidden startcoversWindowFrameRuleTest::testRewritePreservesValidBoundariesAndRepairsInvalidOrdering#full rangecoversWindowFrameRuleTest::testRewritePreservesValidBoundariesAndRepairsInvalidOrdering#preceding through currentcoversWindowFrameRuleTest::testRewriteReplacesAnEarlierEndAndRetainsAValidFramecovers
Called from 2
- method-call SqlFaker\MySql\Generation\Rewrite\Query\WindowFrameRule::rewrite() packages/sql-faker/src/MySql/Generation/Rewrite/Query/WindowFrameRule.php:29
- method-call SqlFaker\MySql\Generation\Rewrite\Query\WindowFrameRule::rewrite() packages/sql-faker/src/MySql/Generation/Rewrite/Query/WindowFrameRule.php:32
Calls 2
- method-call TerminalSequence::range() line 58
- method-call TerminalSequence::nameAt() line 62
public function unbounded(
TerminalSequence $sequence,
int $bound,
string $direction,
): TerminalSequenceRetains the original derivation while replacing a forbidden boundary.
Parameters
$sequence | TerminalSequence | |
$bound | int | |
$direction | string |
Returns
Test cases 7
WindowFrameRuleTest::testRewriteKeepsAnAbsentFrameAndUnboundedKeepsAnAbsentBoundarycovers and callsWindowFrameRuleTest::testRewritePreservesValidBoundariesAndRepairsInvalidOrdering#following through currentcoversWindowFrameRuleTest::testRewritePreservesValidBoundariesAndRepairsInvalidOrdering#following through precedingcoversWindowFrameRuleTest::testRewritePreservesValidBoundariesAndRepairsInvalidOrdering#forbidden endcoversWindowFrameRuleTest::testRewritePreservesValidBoundariesAndRepairsInvalidOrdering#forbidden startcoversWindowFrameRuleTest::testRewriteReplacesAnEarlierEndAndRetainsAValidFramecoversWindowFrameRuleTest::testUnboundedReplacesTheEntireEndpointAndKeepsItsScopecovers and calls
Called from 2
- method-call SqlFaker\MySql\Generation\Rewrite\Query\WindowFrameRule::rewrite() packages/sql-faker/src/MySql/Generation/Rewrite/Query/WindowFrameRule.php:30
- method-call SqlFaker\MySql\Generation\Rewrite\Query\WindowFrameRule::rewrite() packages/sql-faker/src/MySql/Generation/Rewrite/Query/WindowFrameRule.php:33
Calls 3
- method-call TerminalSequence::range() line 76
- method-call TerminalSequence::replace() line 77
- method-call TerminalSequence::insertedFor() line 78
Test cases 33§
Test cases that cover or call this symbol, from the coverage report and from the analyzed test sources.
Dedicated tests 27
WindowFrameRuleTest::testRankClassifiesEndpointsWithoutTreatingOffsetExpressionsAsSeparateBoundscovers and callsWindowFrameRuleTest::testRankRetainsTheFiveSourceBoundaryCategoriescallsWindowFrameRuleTest::testRankRetainsTheFiveSourceBoundaryCategories#current rowcoversWindowFrameRuleTest::testRankRetainsTheFiveSourceBoundaryCategories#offset followingcoversWindowFrameRuleTest::testRankRetainsTheFiveSourceBoundaryCategories#offset precedingcoversWindowFrameRuleTest::testRankRetainsTheFiveSourceBoundaryCategories#unbounded followingcoversWindowFrameRuleTest::testRankRetainsTheFiveSourceBoundaryCategories#unbounded precedingcoversWindowFrameRuleTest::testRewriteChangesOnlyRowsFramesWithAnIntervalBoundarycallsWindowFrameRuleTest::testRewriteChangesOnlyRowsFramesWithAnIntervalBoundary#groups intervalcoversWindowFrameRuleTest::testRewriteChangesOnlyRowsFramesWithAnIntervalBoundary#range intervalcoversWindowFrameRuleTest::testRewriteChangesOnlyRowsFramesWithAnIntervalBoundary#rows intervalcoversWindowFrameRuleTest::testRewriteChangesOnlyRowsFramesWithAnIntervalBoundary#rows numbercoversWindowFrameRuleTest::testRewriteDoesNotUseIntervalsFromNestedFramesOrOffsetExpressionscovers and callsWindowFrameRuleTest::testRewriteKeepsAnAbsentFrameAndUnboundedKeepsAnAbsentBoundarycovers and callsWindowFrameRuleTest::testRewriteLeavesAnEmptyFrameUnchangedcovers and callsWindowFrameRuleTest::testRewritePreservesValidBoundariesAndRepairsInvalidOrderingcallsWindowFrameRuleTest::testRewritePreservesValidBoundariesAndRepairsInvalidOrdering#current through followingcoversWindowFrameRuleTest::testRewritePreservesValidBoundariesAndRepairsInvalidOrdering#equal currentcoversWindowFrameRuleTest::testRewritePreservesValidBoundariesAndRepairsInvalidOrdering#equal offsetscoversWindowFrameRuleTest::testRewritePreservesValidBoundariesAndRepairsInvalidOrdering#following through currentcoversWindowFrameRuleTest::testRewritePreservesValidBoundariesAndRepairsInvalidOrdering#following through precedingcoversWindowFrameRuleTest::testRewritePreservesValidBoundariesAndRepairsInvalidOrdering#forbidden endcoversWindowFrameRuleTest::testRewritePreservesValidBoundariesAndRepairsInvalidOrdering#forbidden startcoversWindowFrameRuleTest::testRewritePreservesValidBoundariesAndRepairsInvalidOrdering#full rangecoversWindowFrameRuleTest::testRewritePreservesValidBoundariesAndRepairsInvalidOrdering#preceding through currentcoversWindowFrameRuleTest::testRewriteReplacesAnEarlierEndAndRetainsAValidFramecovers and callsWindowFrameRuleTest::testUnboundedReplacesTheEntireEndpointAndKeepsItsScopecovers and calls
Other tests reaching this symbol 6
GenerationContextTestcallsRewriteDefinitionsTestcallsMySqlProviderTestcallsPostgreSqlProviderTestcallsSqlGeneratorFactoryTestcallsSqliteProviderTestcalls