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 4
WindowFrameRuleTest::testRewriteCompletesAShortFollowingFrameAndKeepsTheChosenOffsetcallsWindowFrameRuleTest::testRewriteLeavesAnEmptyFrameUnchangedcallsWindowFrameRuleTest::testRewritePreservesValidBoundariesAndRepairsInvalidOrderingcallsWindowFrameRuleTest::testRewriteReplacesAnEarlierEndAndRetainsAValidFramecalls
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 2
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
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 13§
Test cases that cover or call this symbol, from the coverage report and from the analyzed test sources.
Dedicated tests 7
WindowFrameRuleTest::testRankClassifiesEndpointsWithoutTreatingOffsetExpressionsAsSeparateBoundscallsWindowFrameRuleTest::testRankRetainsTheFiveSourceBoundaryCategoriescallsWindowFrameRuleTest::testRewriteCompletesAShortFollowingFrameAndKeepsTheChosenOffsetcallsWindowFrameRuleTest::testRewriteLeavesAnEmptyFrameUnchangedcallsWindowFrameRuleTest::testRewritePreservesValidBoundariesAndRepairsInvalidOrderingcallsWindowFrameRuleTest::testRewriteReplacesAnEarlierEndAndRetainsAValidFramecallsWindowFrameRuleTest::testUnboundedReplacesTheEntireEndpointAndKeepsItsScopecalls
Other tests reaching this symbol 6
MySqlProviderTestcallsGenerationContextTestcallsRewriteDefinitionsTestcallsSqlGeneratorFactoryTestcallsPostgreSqlProviderTestcallsSqliteProviderTestcalls