From 3a64a070fc113d9c90f8ec5b17121203b32658a3 Mon Sep 17 00:00:00 2001 From: Henson Choi Date: Fri, 29 May 2026 17:56:02 +0900 Subject: [PATCH 23/26] Explain the completed-head-context branch in update_reduced_frame per Jian He's review ExecRPRGetHeadContext() can return a context whose state list is already drained, and the branch handling it looked unreachable. It fires under SKIP TO NEXT ROW: overlapping contexts let one reach FIN, and record its result, during an earlier call -- before the call asking about its own start row arrives. Comment only; no behavior change. --- src/backend/executor/nodeWindowAgg.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/backend/executor/nodeWindowAgg.c b/src/backend/executor/nodeWindowAgg.c index 4cf1a9ac67b..f16d01e9743 100644 --- a/src/backend/executor/nodeWindowAgg.c +++ b/src/backend/executor/nodeWindowAgg.c @@ -4434,7 +4434,12 @@ update_reduced_frame(WindowObject winobj, int64 pos) } else if (targetCtx->states == NULL) { - /* Context already completed - skip to result registration */ + /* + * The head context already completed in an earlier call. Reachable + * under SKIP TO NEXT ROW, where overlapping contexts let one reach + * FIN -- recording its result -- before the call for its own start + * row arrives. Register that result. + */ goto register_result; } -- 2.50.1 (Apple Git-155)