Convert misleading while loop into an if condition
authorDavid Rowley <drowley@postgresql.org>
Fri, 14 May 2021 00:26:11 +0000 (12:26 +1200)
committerDavid Rowley <drowley@postgresql.org>
Fri, 14 May 2021 00:26:11 +0000 (12:26 +1200)
This seems to be leftover from ea15e1867 and from when we used to evaluate
SRFs at each node.

Since there is an unconditional "return" at the end of the loop body, only
1 loop is ever possible, so we can just change this into an if condition.

There is no actual bug being fixed here so no back-patch. It seems fine to
just fix this anomaly in master only.

Author: Greg Nancarrow
Discussion: https://postgr.es/m/CAJcOf-d7T1q0az-D8evWXnsuBZjigT04WkV5hCAOEJQZRWy28w@mail.gmail.com

src/backend/executor/nodeResult.c

index 1762b87c99936b21b74950700c83c536ea805952..0946af0a549a317241bae4261d4090addb6a1923 100644 (file)
@@ -103,7 +103,7 @@ ExecResult(PlanState *pstate)
         * called, OR that we failed the constant qual check. Either way, now we
         * are through.
         */
-       while (!node->rs_done)
+       if (!node->rs_done)
        {
                outerPlan = outerPlanState(node);