Re: pgsql: Allow insert and update tuple routing and COPY for foreign table
Laurenz Albe <laurenz.albe@cybertec.at>
From: Laurenz Albe <laurenz.albe@cybertec.at>
To: Robert Haas <rhaas@postgresql.org>,
pgsql-committers@lists.postgresql.org, pgsql-hackers@lists.postgresql.org
Date: 2019-04-20T11:53:26Z
Lists: pgsql-hackers
Attachments
- 0001-COPY-FROM-on-foreign-tables-requires-BeginForeignIns.patch (text/x-patch) patch 0001
On Fri, 2018-04-06 at 23:24 +0000, Robert Haas wrote: > Allow insert and update tuple routing and COPY for foreign tables. > > Also enable this for postgres_fdw. > > Etsuro Fujita, based on an earlier patch by Amit Langote. The larger > patch series of which this is a part has been reviewed by Amit > Langote, David Fetter, Maksim Milyutin, Álvaro Herrera, Stephen Frost, > and me. Minor documentation changes to the final version by me. > > Discussion: http://postgr.es/m/29906a26-da12-8c86-4fb9-d8f88442f2b9@lab.ntt.co.jp This commit makes life hard for foreign data wrappers that support data modifications. If a FDW implements ExecForeignInsert, this commit automatically assumes that it also supports COPY FROM. It will call ExecForeignInsert without calling PlanForeignModify and BeginForeignModify, and a FDW that does not expect that will probably fail. So this commit silently turns a functioning FDW into a broken FDW. That is not nice. Probably not every FDW is aware of this change, and maybe there are FDWs that support INSERT but don't want to support COPY for some reason. I propose that PostgreSQL only allows COPY FROM on a foreign table if the FDW implements BeginForeignInsert. The attached patch implements that. I think this should be backpatched to v11. Yours, Laurenz Albe
Commits
-
Add FDW documentation notes about insert and update tuple routing and COPY.
- 53f48a2abb7b 11.3 landed
- 90fca7a35aa7 12.0 landed
-
Allow insert and update tuple routing and COPY for foreign tables.
- 3d956d9562aa 11.0 cited