classWindowFrameRule
final class WindowFrameRule
implements RewriteRule
Implements the frame_extent rejection conditions in PostgreSQL 17.2 gram.y.
Methods§
public function rewrite(TerminalSequence $sequence): TerminalSequenceCompletes invalid frame endpoints without changing valid offsets or frames in nested expressions.
Parameters
$sequence | TerminalSequence |
Returns
Test cases 13
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#forbidden endcoversWindowFrameRuleTest::testRewritePreservesValidBoundariesAndRepairsInvalidOrdering#forbidden startcoversWindowFrameRuleTest::testRewritePreservesValidBoundariesAndRepairsInvalidOrdering#full rangecoversWindowFrameRuleTest::testRewritePreservesValidBoundariesAndRepairsInvalidOrdering#preceding through currentcoversWindowFrameRuleTest::testRewriteReplacesAnEarlierEndAndRetainsAValidFramecovers and calls
Calls 5
- method-call TerminalSequence::occurrences() line 23
- function-call
array_valuesline 24 - function-call
array_filterline 24 - method-call WindowFrameRule::rank() line 29
- method-call WindowFrameRule::unbounded() line 30
public function rank(TerminalSequence $sequence, int $bound): intAssigns the category used by gram.y to compare start and end boundaries.
Parameters
$sequence | TerminalSequence | |
$bound | int |
Returns
intTest cases 18
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#forbidden endcoversWindowFrameRuleTest::testRewritePreservesValidBoundariesAndRepairsInvalidOrdering#forbidden startcoversWindowFrameRuleTest::testRewritePreservesValidBoundariesAndRepairsInvalidOrdering#full rangecoversWindowFrameRuleTest::testRewritePreservesValidBoundariesAndRepairsInvalidOrdering#preceding through currentcoversWindowFrameRuleTest::testRewriteReplacesAnEarlierEndAndRetainsAValidFramecovers
Called from 4
- method-call SqlFaker\PostgreSql\Generation\Rewrite\WindowFrameRule::rewrite() packages/sql-faker/src/PostgreSql/Generation/Rewrite/WindowFrameRule.php:29
- method-call SqlFaker\PostgreSql\Generation\Rewrite\WindowFrameRule::rewrite() packages/sql-faker/src/PostgreSql/Generation/Rewrite/WindowFrameRule.php:33
- method-call SqlFaker\PostgreSql\Generation\Rewrite\WindowFrameRule::rewrite() packages/sql-faker/src/PostgreSql/Generation/Rewrite/WindowFrameRule.php:34
- method-call SqlFaker\PostgreSql\Generation\Rewrite\WindowFrameRule::rewrite() packages/sql-faker/src/PostgreSql/Generation/Rewrite/WindowFrameRule.php:36
Calls 2
- method-call TerminalSequence::range() line 59
- method-call TerminalSequence::nameAt() line 63
public function unbounded(
TerminalSequence $sequence,
int $bound,
string $direction,
): TerminalSequenceAttaches the replacement endpoint to the original frame-bound occurrence for tracing.
Parameters
$sequence | TerminalSequence | |
$bound | int | |
$direction | string |
Returns
Test cases 6
WindowFrameRuleTest::testRewritePreservesValidBoundariesAndRepairsInvalidOrdering#following through currentcoversWindowFrameRuleTest::testRewritePreservesValidBoundariesAndRepairsInvalidOrdering#following through precedingcoversWindowFrameRuleTest::testRewritePreservesValidBoundariesAndRepairsInvalidOrdering#forbidden endcoversWindowFrameRuleTest::testRewritePreservesValidBoundariesAndRepairsInvalidOrdering#forbidden startcoversWindowFrameRuleTest::testRewriteReplacesAnEarlierEndAndRetainsAValidFramecoversWindowFrameRuleTest::testUnboundedReplacesTheEntireEndpointAndKeepsItsScopecovers and calls
Called from 2
- method-call SqlFaker\PostgreSql\Generation\Rewrite\WindowFrameRule::rewrite() packages/sql-faker/src/PostgreSql/Generation/Rewrite/WindowFrameRule.php:30
- method-call SqlFaker\PostgreSql\Generation\Rewrite\WindowFrameRule::rewrite() packages/sql-faker/src/PostgreSql/Generation/Rewrite/WindowFrameRule.php:35
Calls 3
- method-call TerminalSequence::range() line 78
- method-call TerminalSequence::replace() line 79
- method-call TerminalSequence::insertedFor() line 80
Test cases 27§
Test cases that cover or call this symbol, from the coverage report and from the analyzed test sources.
Dedicated tests 21
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#forbidden endcoversWindowFrameRuleTest::testRewritePreservesValidBoundariesAndRepairsInvalidOrdering#forbidden startcoversWindowFrameRuleTest::testRewritePreservesValidBoundariesAndRepairsInvalidOrdering#full rangecoversWindowFrameRuleTest::testRewritePreservesValidBoundariesAndRepairsInvalidOrdering#preceding through currentcoversWindowFrameRuleTest::testRewriteReplacesAnEarlierEndAndRetainsAValidFramecovers and callsWindowFrameRuleTest::testUnboundedReplacesTheEntireEndpointAndKeepsItsScopecovers and calls
Other tests reaching this symbol 6
MySqlProviderTestcallsGenerationContextTestcallsRewriteDefinitionsTestcallsPostgreSqlProviderTestcallsSqlGeneratorFactoryTestcallsSqliteProviderTestcalls