classWindowFrameRule
final class WindowFrameRule
implements RewriteRule
Implements the relative boundary order required by window.c/sqlite3WindowAlloc.
Methods§
public function rewrite(TerminalSequence $sequence): TerminalSequenceCompletes short FOLLOWING frames and moves an earlier end to UNBOUNDED FOLLOWING.
Parameters
$sequence | TerminalSequence |
Returns
Test cases 11
WindowFrameRuleTest::testRewriteCompletesAShortFollowingFrameAndKeepsTheChosenOffsetcovers 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#full rangecoversWindowFrameRuleTest::testRewritePreservesValidBoundariesAndRepairsInvalidOrdering#preceding through currentcoversWindowFrameRuleTest::testRewriteReplacesAnEarlierEndAndRetainsAValidFramecovers and calls
Calls 5
- method-call TerminalSequence::occurrences() line 23
- method-call TerminalSequence::child() line 24
- method-call WindowFrameRule::rank() line 29
- method-call TerminalSequence::range() line 33
- method-call TerminalSequence::nameAt() line 34
public function rank(TerminalSequence $sequence, int $production): intOrders boundary categories exactly as sqlite3WindowAlloc's source comment specifies.
Parameters
$sequence | TerminalSequence | |
$production | int |
Returns
intTest cases 16
WindowFrameRuleTest::testRankClassifiesEndpointsWithoutTreatingOffsetExpressionsAsSeparateBoundscovers and callsWindowFrameRuleTest::testRankRetainsTheFiveSourceBoundaryCategoriescallsWindowFrameRuleTest::testRankRetainsTheFiveSourceBoundaryCategories#current rowcoversWindowFrameRuleTest::testRankRetainsTheFiveSourceBoundaryCategories#offset followingcoversWindowFrameRuleTest::testRankRetainsTheFiveSourceBoundaryCategories#offset precedingcoversWindowFrameRuleTest::testRankRetainsTheFiveSourceBoundaryCategories#unbounded followingcoversWindowFrameRuleTest::testRankRetainsTheFiveSourceBoundaryCategories#unbounded precedingcoversWindowFrameRuleTest::testRewriteCompletesAShortFollowingFrameAndKeepsTheChosenOffsetcoversWindowFrameRuleTest::testRewritePreservesValidBoundariesAndRepairsInvalidOrdering#current through followingcoversWindowFrameRuleTest::testRewritePreservesValidBoundariesAndRepairsInvalidOrdering#equal currentcoversWindowFrameRuleTest::testRewritePreservesValidBoundariesAndRepairsInvalidOrdering#equal offsetscoversWindowFrameRuleTest::testRewritePreservesValidBoundariesAndRepairsInvalidOrdering#following through currentcoversWindowFrameRuleTest::testRewritePreservesValidBoundariesAndRepairsInvalidOrdering#following through precedingcoversWindowFrameRuleTest::testRewritePreservesValidBoundariesAndRepairsInvalidOrdering#full rangecoversWindowFrameRuleTest::testRewritePreservesValidBoundariesAndRepairsInvalidOrdering#preceding through currentcoversWindowFrameRuleTest::testRewriteReplacesAnEarlierEndAndRetainsAValidFramecovers
Called from 1
Calls 2
- method-call TerminalSequence::range() line 61
- method-call TerminalSequence::nameAt() line 65
Test cases 24§
Test cases that cover or call this symbol, from the coverage report and from the analyzed test sources.
Dedicated tests 18
WindowFrameRuleTest::testRankClassifiesEndpointsWithoutTreatingOffsetExpressionsAsSeparateBoundscovers and callsWindowFrameRuleTest::testRankRetainsTheFiveSourceBoundaryCategoriescallsWindowFrameRuleTest::testRankRetainsTheFiveSourceBoundaryCategories#current rowcoversWindowFrameRuleTest::testRankRetainsTheFiveSourceBoundaryCategories#offset followingcoversWindowFrameRuleTest::testRankRetainsTheFiveSourceBoundaryCategories#offset precedingcoversWindowFrameRuleTest::testRankRetainsTheFiveSourceBoundaryCategories#unbounded followingcoversWindowFrameRuleTest::testRankRetainsTheFiveSourceBoundaryCategories#unbounded precedingcoversWindowFrameRuleTest::testRewriteCompletesAShortFollowingFrameAndKeepsTheChosenOffsetcovers 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#full rangecoversWindowFrameRuleTest::testRewritePreservesValidBoundariesAndRepairsInvalidOrdering#preceding through currentcoversWindowFrameRuleTest::testRewriteReplacesAnEarlierEndAndRetainsAValidFramecovers and calls
Other tests reaching this symbol 6
MySqlProviderTestcallsPostgreSqlProviderTestcallsSqlGeneratorFactoryTestcallsGenerationContextTestcallsRewriteDefinitionsTestcallsSqliteProviderTestcalls