Re: Bug in ExecModifyTable function and trigger issues for foreign tables
Ildus Kurbangaliev <i.kurbangaliev@postgrespro.ru>
From: Ildus Kurbangaliev <i.kurbangaliev@postgrespro.ru>
To: Ashutosh Bapat <ashutosh.bapat@enterprisedb.com>
Cc: Dilip Kumar <dilipbalaut@gmail.com>, PostgreSQL Hackers
<pgsql-hackers@postgresql.org>
Date: 2017-05-15T13:54:55Z
Lists: pgsql-hackers
On Mon, 15 May 2017 17:43:52 +0530 Ashutosh Bapat <ashutosh.bapat@enterprisedb.com> wrote: > On Mon, May 15, 2017 at 2:46 PM, Ildus Kurbangaliev > <i.kurbangaliev@postgrespro.ru> wrote: > > On Mon, 15 May 2017 10:34:58 +0530 > > Dilip Kumar <dilipbalaut@gmail.com> wrote: > > > >> On Sun, May 14, 2017 at 9:54 PM, Dilip Kumar > >> <dilipbalaut@gmail.com> wrote: > >> > After your fix, now tupleid is invalid which is expected, but > >> > seems like we need to do something more. As per the comments > >> > seems like it is expected to get the oldtuple from planSlot. > >> > But I don't see any code for handling that part. > >> > >> Maybe we should do something like attached patch. > >> > > > > Hi, > > planSlot contains already projected tuple, you can't use it as > > oldtuple. I think problem is that `rewriteTargetListUD` called only > > for parent relation, so there is no `wholerow` attribute for > > foreign tables. > > Yes. postgresAddForeignUpdateTargets() which is called by > rewriteTargetListUD injects "ctid". "wholerow" is always there. Not > for postgres_fdw but for other wrappers it might be a bad news. ctid, > whole row obtained from the remote postgres server will fit the tuple > descriptor of parent, but for other FDWs the column injected by > rewriteTargetListUD() may make the child tuple look different from > that of the parent, so we may not pass that column down to the child. > I'm trying to say that when we have a regular table as parent, and foreign table as child, in rewriteTargetListUD `wholerow` won't be added, because rewriteTargetListUD will be called only for parent relation. You can see that by running the script i provided in the first message of this thread. -- --- Ildus Kurbangaliev Postgres Professional: http://www.postgrespro.com Russian Postgres Company
Commits
-
Fix creation of resjunk tlist entries for inherited mixed UPDATE/DELETE.
- 39f180fdd1e6 9.5.11 landed
- 06ba5309682e 9.6.7 landed
- a57aa430b613 10.2 landed
- 9a785ad57317 11.0 landed