From 071126a8559aceea9299a2801a78f241777071dd Mon Sep 17 00:00:00 2001 From: Henson Choi Date: Mon, 8 Jun 2026 11:46:56 +0900 Subject: [PATCH 60/68] Fix outdated function and file references in row pattern recognition docs Two comments in rpr_nfa.sql attributed nfa_advance_begin/end to nodeWindowAgg.c, but both are defined in execRPR.c. README.rpr referred to a nonexistent compute_nav_offsets; the planner routine that computes the trim offsets is compute_define_metadata in createplan.c. These are comment and documentation fixes only, with no behavior change; the rpr_nfa expected output is updated to match the corrected comment. --- src/backend/executor/README.rpr | 4 ++-- src/test/regress/expected/rpr_nfa.out | 4 ++-- src/test/regress/sql/rpr_nfa.sql | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/backend/executor/README.rpr b/src/backend/executor/README.rpr index df574a0a6f4..c1822d8240b 100644 --- a/src/backend/executor/README.rpr +++ b/src/backend/executor/README.rpr @@ -667,7 +667,7 @@ VI-5. Tuplestore Mark and Trim (nodeWindowAgg.c) Navigation functions require access to past rows via the tuplestore. To allow tuplestore_trim() to free rows that are no longer reachable, -the planner computes two offsets (see compute_nav_offsets): +the planner computes two offsets (see compute_define_metadata): navMaxOffset (Nav Mark Lookback): Maximum backward reach from currentpos. Contributed by PREV, @@ -1499,7 +1499,7 @@ Appendix A. Key Function Index ExecRPRFinalizeAllContexts execRPR.c Partition-end finalize ExecRPRRecordContextSuccess execRPR.c Stats: match success ExecRPRRecordContextFailure execRPR.c Stats: match failure - compute_nav_offsets createplan.c Trim offset computation + compute_define_metadata createplan.c Trim offset computation Appendix B. Data Structure Relationship Diagram ============================================================================ diff --git a/src/test/regress/expected/rpr_nfa.out b/src/test/regress/expected/rpr_nfa.out index 3b9975a83df..d7146168f2b 100644 --- a/src/test/regress/expected/rpr_nfa.out +++ b/src/test/regress/expected/rpr_nfa.out @@ -1357,7 +1357,7 @@ WINDOW w AS ( -- Reluctant optional group skip-to-FIN -- When a reluctant optional group's skip path reaches FIN, the group --- entry path is abandoned (nodeWindowAgg.c nfa_advance_begin). +-- entry path is abandoned (execRPR.c nfa_advance_begin). -- Pattern: C (A B)?? -- after C matches, the reluctant group (A B)?? -- prefers to skip. Skip goes to FIN (group is last element), so -- the match completes with just C. @@ -3364,7 +3364,7 @@ WINDOW w AS ( -- Nested END->END fast-forward -- When an inner group has a nullable body and count < min, the -- fast-forward path exits through the outer END, incrementing --- the outer group's count (nodeWindowAgg.c nfa_advance_end). +-- the outer group's count (execRPR.c nfa_advance_end). -- Pattern: ((A?){2,3}){2,3} -- nested groups, neither collapses -- because the optimizer cannot safely multiply non-exact quantifiers. -- Data has no A rows, forcing all-empty iterations via fast-forward. diff --git a/src/test/regress/sql/rpr_nfa.sql b/src/test/regress/sql/rpr_nfa.sql index 61072d1d6f1..8daa0a73725 100644 --- a/src/test/regress/sql/rpr_nfa.sql +++ b/src/test/regress/sql/rpr_nfa.sql @@ -968,7 +968,7 @@ WINDOW w AS ( -- Reluctant optional group skip-to-FIN -- When a reluctant optional group's skip path reaches FIN, the group --- entry path is abandoned (nodeWindowAgg.c nfa_advance_begin). +-- entry path is abandoned (execRPR.c nfa_advance_begin). -- Pattern: C (A B)?? -- after C matches, the reluctant group (A B)?? -- prefers to skip. Skip goes to FIN (group is last element), so -- the match completes with just C. @@ -2406,7 +2406,7 @@ WINDOW w AS ( -- Nested END->END fast-forward -- When an inner group has a nullable body and count < min, the -- fast-forward path exits through the outer END, incrementing --- the outer group's count (nodeWindowAgg.c nfa_advance_end). +-- the outer group's count (execRPR.c nfa_advance_end). -- Pattern: ((A?){2,3}){2,3} -- nested groups, neither collapses -- because the optimizer cannot safely multiply non-exact quantifiers. -- Data has no A rows, forcing all-empty iterations via fast-forward. -- 2.50.1 (Apple Git-155)