Re: Bug in ExecModifyTable function and trigger issues for foreign tables
Etsuro Fujita <fujita.etsuro@lab.ntt.co.jp>
From: Etsuro Fujita <fujita.etsuro@lab.ntt.co.jp>
To: Ashutosh Bapat <ashutosh.bapat@enterprisedb.com>
Cc: Ildus Kurbangaliev <i.kurbangaliev@postgrespro.ru>,
Dilip Kumar <dilipbalaut@gmail.com>,
PostgreSQL Hackers <pgsql-hackers@postgresql.org>,
Robert Haas <robertmhaas@gmail.com>
Date: 2017-06-05T09:25:26Z
Lists: pgsql-hackers
On 2017/06/05 17:39, Ashutosh Bapat wrote: > On Fri, Jun 2, 2017 at 2:40 PM, Etsuro Fujita >> While updating the patch, I noticed the patch rewrites the UPDATE targetList >> incorrectly in some cases; rewrite_inherited_tlist I added to >> adjust_appendrel_attrs (1) removes all junk items from the targetList and >> (2) adds junk items for the child table using rewriteTargetListUD, but it's >> wrong to drop all junk items in cases where there are junk items for some >> other reasons than rewriteTargetListUD. Consider junk items containing >> MULTIEXPR SubLink. One way I came up with to fix this is to change (1) to >> only remove junk items with resname; since junk items added by >> rewriteTargetListUD should have resname (note: we would need resname to call >> ExecFindJunkAttributeInTlist at execution time!) while other junk items >> wouldn't have resname (see transformUpdateTargetList), we could correctly >> replace junk items added by rewriteTargetListUD for the parent with ones for >> the child, by that change. I might be missing something, though. Comments >> welcome. > > I haven't looked at the patch, but that doesn't look right. In future > some code path other than rewriteTargetListUD() may add junk items > with resname and this fix will remove those junk items as well. Yeah, I thought that too. I think we could replace junk tlist entries added by rewriteTargetListUD() more safely, by adding a lot more code, but I'm not sure it's worth complicating the code at the current stage. Best regards, Etsuro Fujita
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