pgsql: Fix rescanning of async-aware Append nodes.

From: Etsuro Fujita <efujita(at)postgresql(dot)org>
To: pgsql-committers(at)lists(dot)postgresql(dot)org
Subject: pgsql: Fix rescanning of async-aware Append nodes.
Date: 2021-06-07 03:54:26
Message-ID: E1lq6LK-0005nm-NL@gemulon.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Fix rescanning of async-aware Append nodes.

In cases where run-time pruning isn't required, the synchronous and
asynchronous subplans for an async-aware Append node determined using
classify_matching_subplans() should be re-used when rescanning the node,
but the previous code re-determined them using that function repeatedly
each time when rescanning the node, leading to incorrect results in a
normal build and an Assert failure in an Assert-enabled build as that
function doesn't assume that it's called repeatedly in such cases. Fix
the code as mentioned above.

My oversight in commit 27e1f1456.

While at it, initialize async-related pointers/variables to NULL/zero
explicitly in ExecInitAppend() and ExecReScanAppend(), just to be sure.
(The variables would have been set to zero before we get to the latter
function, but let's do so.)

Reviewed-by: Kyotaro Horiguchi
Discussion: https://postgr.es/m/CAPmGK16Q4B2_KY%2BJH7rb7wQbw54AUprp7TMekGTd2T1B62yysQ%40mail.gmail.com

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/f3baaf28a6da588987b94a05a725894805c3eae9

Modified Files
--------------
contrib/postgres_fdw/expected/postgres_fdw.out | 42 ++++++++++++++++++++++++++
contrib/postgres_fdw/sql/postgres_fdw.sql | 12 ++++++++
src/backend/executor/nodeAppend.c | 27 ++++++++++++++---
3 files changed, 76 insertions(+), 5 deletions(-)

Browse pgsql-committers by date

  From Date Subject
Next Message Amit Kapila 2021-06-07 04:12:38 pgsql: Remove two_phase variable from CreateReplicationSlotCmd struct.
Previous Message Tom Lane 2021-06-06 19:47:04 pgsql: Fix inconsistent equalfuncs.c behavior for FuncCall.funcformat.