Prevent asynchronous execution of direct foreign-table modifications.
authorEtsuro Fujita <efujita@postgresql.org>
Thu, 13 May 2021 11:00:00 +0000 (20:00 +0900)
committerEtsuro Fujita <efujita@postgresql.org>
Thu, 13 May 2021 11:00:00 +0000 (20:00 +0900)
commita784859f4480ceaa05a00ca35311071ca33483d1
tree3ef98b825d3c73d0c5e4bc8109dac1b9456dc938
parent5a73a9e3b5b24cf2dd90ab4a7ae3724b2c12a0cc
Prevent asynchronous execution of direct foreign-table modifications.

Commits 27e1f1456 and 86dc90056, which were independently discussed,
cause a crash when executing an inherited foreign UPDATE/DELETE query
with asynchronous execution enabled, where children of an Append node
that is the direct/indirect child of the ModifyTable node are rewritten
so as to modify foreign tables directly by postgresPlanDirectModify();
as in that case the direct modifications are executed asynchronously,
which is not currently supported by asynchronous execution.  Fix by
disabling asynchronous execution of the direct modifications in that
function.

Author: Etsuro Fujita
Reviewed-by: Amit Langote
Discussion: http://postgr.es/m/CAPmGK158e9sJOfuWxfn%2B0ynrspXQU3JhNjSCbaoeSzMvnga%2Bbw%40mail.gmail.com
contrib/postgres_fdw/expected/postgres_fdw.out
contrib/postgres_fdw/postgres_fdw.c
contrib/postgres_fdw/sql/postgres_fdw.sql