From c48c70f494fb656f45e2923bc4260ad8c82f5787 Mon Sep 17 00:00:00 2001 From: Henson Choi Date: Tue, 7 Apr 2026 10:09:41 +0900 Subject: [PATCH] Fix comment typos, grammar, and inaccuracies in RPR code --- src/backend/executor/execRPR.c | 7 +++---- src/backend/executor/nodeWindowAgg.c | 20 ++++++++++---------- src/backend/optimizer/plan/createplan.c | 3 ++- 3 files changed, 15 insertions(+), 15 deletions(-) diff --git a/src/backend/executor/execRPR.c b/src/backend/executor/execRPR.c index ee4c67c9597..dede2dfab0d 100644 --- a/src/backend/executor/execRPR.c +++ b/src/backend/executor/execRPR.c @@ -416,7 +416,6 @@ * the normal loop-back (which cycle detection will eventually kill) and * a fast-forward exit clone that bypasses the loop entirely. * (See IX-4(c) for detailed runtime behavior.) - * - Empty match is impossible since body is not nullable * * IV-5. Absorbability Analysis (RPR_ELEM_ABSORBABLE) * @@ -645,8 +644,8 @@ * When processing a context whose matchStartRow differs from the shared * value, nfa_reevaluate_dependent_vars() temporarily sets nav_match_start * to that context's matchStartRow and re-evaluates only the dependent - * variables. No restore is needed because contexts are ordered by - * matchStartRow (ascending), so no later context shares the head's value. + * variables. The original nav_match_start and currentpos are saved and + * restored after re-evaluation. * * VI-5. Tuplestore Mark and Trim (nodeWindowAgg.c) * @@ -2715,7 +2714,7 @@ nfa_advance_var(WindowAggState *winstate, RPRNFAContext *ctx, bool reluctant = RPRElemIsReluctant(elem); /* - * Clone state for the second-priority path. For greedy, clone is the + * Clone state for the first-priority path. For greedy, clone is the * loop state; for reluctant, clone is the exit state. */ if (reluctant) diff --git a/src/backend/executor/nodeWindowAgg.c b/src/backend/executor/nodeWindowAgg.c index cdbe356abd7..849ebf8abb0 100644 --- a/src/backend/executor/nodeWindowAgg.c +++ b/src/backend/executor/nodeWindowAgg.c @@ -3705,8 +3705,8 @@ ignorenulls_getfuncarginframe(WindowObject winobj, int argno, { /* * Early check if row could be out of reduced frame. When RPR is - * enabled, EXCUDE clause cannot be specified and the frame is always - * contiguous. So we can do the check followings safely. Note, + * enabled, EXCLUDE clause cannot be specified and the frame is always + * contiguous. So we can safely perform the following checks. Note, * however, it is possible that a row is out of reduced frame if * there's a NULL in the middle. So we need to check it in the * following do loop. @@ -4168,7 +4168,7 @@ eval_nav_first_offset(WindowAggState *winstate, List *defineClause) /* * rpr_is_defined - * return true if Row pattern recognition is defined. + * Return true if row pattern recognition is defined. */ static bool rpr_is_defined(WindowAggState *winstate) @@ -4182,14 +4182,14 @@ rpr_is_defined(WindowAggState *winstate) * Determine whether a row is in the current row's reduced window frame * according to row pattern matching * - * The row must has been already determined that it is in a full window frame - * and fetched it into slot. + * The row must have already been determined to be in a full window frame + * and fetched into the slot. * * Returns: * = 0, RPR is not defined. * >0, if the row is the first in the reduced frame. Return the number of rows * in the reduced frame. - * -1, if the row is unmatched row + * -1, if the row is an unmatched row * -2, if the row is in the reduced frame but needed to be skipped because of * AFTER MATCH SKIP PAST LAST ROW * ----------------- @@ -4204,8 +4204,8 @@ row_is_in_reduced_frame(WindowObject winobj, int64 pos) if (!rpr_is_defined(winstate)) { /* - * RPR is not defined. Assume that we are always in the the reduced - * window frame. + * RPR is not defined. Assume that we are always in the reduced window + * frame. */ rtn = 0; return rtn; @@ -4938,8 +4938,8 @@ WinGetFuncArgInFrame(WindowObject winobj, int argno, * isout: output argument, set to indicate whether target row position * is out of frame (can pass NULL if caller doesn't care about this) * - * Returns 0 if we successfully got the slot. false if out of frame. - * (also isout is set) + * Returns 0 if we successfully got the slot, or nonzero if out of frame. + * (isout is also set in the latter case.) */ static int WinGetSlotInFrame(WindowObject winobj, TupleTableSlot *slot, diff --git a/src/backend/optimizer/plan/createplan.c b/src/backend/optimizer/plan/createplan.c index 02d511269ab..50668f3b7ab 100644 --- a/src/backend/optimizer/plan/createplan.c +++ b/src/backend/optimizer/plan/createplan.c @@ -2475,7 +2475,8 @@ typedef struct NavOffsetContext int64 maxOffset; /* max PREV/LAST backward offset (>= 0) */ bool maxNeedsEval; /* non-constant PREV/LAST offset found */ bool maxOverflow; /* constant offset overflow detected */ - int64 firstOffset; /* min FIRST offset (>= 0), or -1 if none */ + int64 firstOffset; /* min FIRST offset (may be negative for + * PREV_FIRST) */ bool hasFirst; /* any FIRST node found */ bool firstNeedsEval; /* non-constant FIRST offset found */ } NavOffsetContext; -- 2.50.1 (Apple Git-155)