pgsql: postgres_fdw: Fix handling of a pending asynchronous request in

From: Etsuro Fujita <efujita(at)postgresql(dot)org>
To: pgsql-committers(at)lists(dot)postgresql(dot)org
Subject: pgsql: postgres_fdw: Fix handling of a pending asynchronous request in
Date: 2022-01-27 07:23:27
Message-ID: E1nCz7v-0007fP-Rz@gemulon.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

postgres_fdw: Fix handling of a pending asynchronous request in postgresReScanForeignScan().

Commit 27e1f1456 failed to process a pending asynchronous request made
for a given ForeignScan node in postgresReScanForeignScan() (if any) in
cases where we would only reset the next_tuple counter in that function,
contradicting the assumption that there should be no pending
asynchronous requests that have been made for async-capable subplans for
the parent Append node after ReScan. This led to an assert failure in
an assert-enabled build. I think this would also lead to mis-rewinding
the cursor in that function in the case where we have already fetched
one batch for the ForeignScan node and the asynchronous request has been
made for the second batch, because even in that case we would just reset
the counter when called from that function, so we would fail to execute
MOVE BACKWARD ALL.

To fix, modify that function to process the asynchronous request before
restarting the scan.

While at it, add a comment to a function to match other places.

Per bug #17344 from Alexander Lakhin. Back-patch to v14 where the
aforesaid commit came in.

Patch by me. Test case by Alexander Lakhin, adjusted by me. Reviewed
and tested by Alexander Lakhin and Dmitry Dolgov.

Discussion: https://postgr.es/m/17344-226b78b00de73a7e@postgresql.org

Branch
------
REL_14_STABLE

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

Modified Files
--------------
contrib/postgres_fdw/expected/postgres_fdw.out | 37 ++++++++++++++++++++++++++
contrib/postgres_fdw/postgres_fdw.c | 14 ++++++++++
contrib/postgres_fdw/sql/postgres_fdw.sql | 17 ++++++++++++
3 files changed, 68 insertions(+)

Browse pgsql-committers by date

  From Date Subject
Next Message Peter Eisentraut 2022-01-27 08:00:06 pgsql: Change collate and ctype fields to type text
Previous Message Noah Misch 2022-01-27 02:07:55 pgsql: On sparc64+ext4, suppress test failures from known WAL read fail