Re: Useless code in ExecInitModifyTable

Etsuro Fujita <fujita.etsuro@lab.ntt.co.jp>

From: Etsuro Fujita <fujita.etsuro@lab.ntt.co.jp>
To: Amit Langote <Langote_Amit_f8@lab.ntt.co.jp>, pgsql-hackers@postgresql.org
Date: 2017-09-04T10:05:38Z
Lists: pgsql-hackers

Attachments

On 2017/06/21 17:57, Amit Langote wrote:
> On 2017/06/21 16:59, Etsuro Fujita wrote:
>> Commit d3cc37f1d801a6b5cad9bf179274a8d767f1ee50 added this to
>> ExecInitModifyTable:
>>
>> +   /* The root table RT index is at the head of the partitioned_rels list */
>> +   if (node->partitioned_rels)
>> +   {
>> +       Index   root_rti;
>> +       Oid     root_oid;
>> +
>> +       root_rti = linitial_int(node->partitioned_rels);
>> +       root_oid = getrelid(root_rti, estate->es_range_table);
>> +       rel = heap_open(root_oid, NoLock);  /* locked by InitPlan */
>> +   }
>>
>> but I noticed that that function doesn't use the relation descriptor at
>> all.  Since partitioned_rels is given in case of an UPDATE/DELETE on a
>> partitioned table, the relation is opened in that case, but the relation
>> descriptor isn't referenced at all in initializing WITH CHECK OPTION
>> constraints and/or RETURNING projections.  (The mtstate->resultRelinfo
>> array is referenced in those initialization, instead.)  So, I'd like to
>> propose to remove this from that function.  Attached is a patch for that.
> 
> Thanks for cleaning that up.  I cannot see any problem in applying the patch.

I noticed that the patch needs to be rebased.  Updated patch attached.

Thanks for the review!

Best regards,
Etsuro Fujita

Commits

  1. Remove useless lookup of root partitioned rel in ExecInitModifyTable().

  2. Don't scan partitioned tables.