| From: | Ashutosh Bapat <ashutosh(dot)bapat(at)enterprisedb(dot)com> | 
|---|---|
| To: | Gourav Kumar <gourav1905(at)gmail(dot)com> | 
| Cc: | pgsql-hackers <pgsql-hackers(at)postgresql(dot)org> | 
| Subject: | Re: How does postgres store the join predicate for a relation in a given query | 
| Date: | 2017-10-11 06:30:23 | 
| Message-ID: | CAFjFpRfVh85rbVLsF9WNzoYdmX1fhRE9Kjuz4bQ2RRUtcFBRBQ@mail.gmail.com | 
| Views: | Whole Thread | Raw Message | Download mbox | Resend email | 
| Thread: | |
| Lists: | pgsql-hackers | 
On Tue, Oct 10, 2017 at 7:29 PM, Gourav Kumar <gourav1905(at)gmail(dot)com> wrote:
> Hi all,
>
> When you fire a query in postgresql, it will first parse the query and
> create the data structures for storing various aspects of the query and
> executing the query. (Like RangeTblEntry, PlannerInfo, RangeOptInfo etc.).
>
> I want to know how does postgresql stores the join predicates of a query.
> Like which data structure is used to store the join predicates.
>
> How can we find the join predicates applied on a relation from relid, Oid or
> RangeTblEntry ?
>
Every relation has a RelOptInfo associated with it. Predicates
applicable to it are stored in this RelOptInfo as a list. For base
relations (simple tables) it's in baserestrictinfo. The join
predicates applicable are in joininfo. You can get RelOptInfo of a
given simple table using find_base_rel().
HTH.
-- 
Best Wishes,
Ashutosh Bapat
EnterpriseDB Corporation
The Postgres Database Company
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Masahiko Sawada | 2017-10-11 06:43:33 | Re: Slow synchronous logical replication | 
| Previous Message | Alvaro Herrera | 2017-10-11 04:03:06 | Re: pg_regress help output |