pgsql: Fix tuple routing to initialize batching only for inserts

From: Tomas Vondra <tomas(dot)vondra(at)postgresql(dot)org>
To: pgsql-committers(at)lists(dot)postgresql(dot)org
Subject: pgsql: Fix tuple routing to initialize batching only for inserts
Date: 2021-02-17 23:27:53
Message-ID: E1lCWEb-0001KF-7O@gemulon.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Fix tuple routing to initialize batching only for inserts

A cross-partition update on a partitioned table is implemented as a
delete followed by an insert. With foreign partitions, this was however
causing issues, because the FDW and core may disagree on when to enable
batching. postgres_fdw was only allowing batching for plain inserts
(CMD_INSERT) while core was trying to batch the insert component of the
cross-partition update. Fix by restricting core to apply batching only
to plain CMD_INSERT queries.

It's possible to allow batching for cross-partition updates, but that
will require more extensive changes, so better to leave that for a
separate patch.

Author: Amit Langote
Reviewed-by: Tomas Vondra, Takayuki Tsunakawa
Discussion: https://postgr.es/m/20200628151002.7x5laxwpgvkyiu3q@development

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/927f453a941061e3d5884bab206581c34784e45b

Modified Files
--------------
contrib/postgres_fdw/expected/postgres_fdw.out | 23 ++++++++++++++++++++++-
contrib/postgres_fdw/postgres_fdw.c | 13 +++++++++++--
contrib/postgres_fdw/sql/postgres_fdw.sql | 19 ++++++++++++++++++-
src/backend/executor/execPartition.c | 3 ++-
4 files changed, 53 insertions(+), 5 deletions(-)

Browse pgsql-committers by date

  From Date Subject
Next Message Peter Geoghegan 2021-02-18 05:14:25 pgsql: nbtree README: move VACUUM linear scan section.
Previous Message Tom Lane 2021-02-17 17:24:53 pgsql: Make some minor improvements in the regex code.