Re: executor relation handling - Mailing list pgsql-hackers

From Amit Langote
Subject Re: executor relation handling
Date
Msg-id 1ff9cd4d-b0be-5532-3d21-ad66f8a4c34c@lab.ntt.co.jp
Whole thread Raw
In response to executor relation handling  (Amit Langote <Langote_Amit_f8@lab.ntt.co.jp>)
Responses Re: executor relation handling  (David Rowley <david.rowley@2ndquadrant.com>)
List pgsql-hackers
On 2018/08/16 17:22, Amit Langote wrote:
> 0004-Revise-executor-range-table-relation-opening-closing.patch
> 
> This adds two arrays to EState indexed by RT indexes, one for
> RangeTblEntry's and another for Relation pointers.  The former reduces the
> cost of fetching RangeTblEntry by RT index.  The latter is used by a newly
> introduced function ExecRangeTableRelation(), which replaces heap_open for
> relations that are contained in the range table.  If a given RTE's
> relation is opened by multiple times, only the first call of
> ExecRangeTableRelation will go to relcache.

David Rowely recently, independently [1], proposed one of the ideas
mentioned above (store RangeTblEntry's in an array in EState).  As I
mentioned in reply to his email, I think his implementation of the idea is
better than mine, so I've merged his patch in the above patch, except one
part: instead of removing the es_range_table list altogether, I decided to
keep it around so that ExecSerializePlan doesn't have to build one all
over again from the array like his patch did.

Updated patches attached; 0001-0003 are same as v1.

Thanks,
Amit

[1] Make executor's Range Table an array instead of a List
https://postgr.es/m/CAKJS1f9EypD_=xG6ACFdF=1cBjz+Z9hiHHSd-RqLjor+QyA-nw@mail.gmail.com

Attachment

pgsql-hackers by date:

Previous
From: Amit Langote
Date:
Subject: Re: Make executor's Range Table an array instead of a List
Next
From: Chi Gao
Date:
Subject: Enable using IS NOT DISTINCT FROM in hash and merge joins