Hi Ashutosh, I have the RelOptInfo data structure for the relations which are to be joined but when I check their joininfo, it is empty. Does baserestrictinfo contains base predicates ?
Thanks Gourav. On 11 October 2017 at 12:00, Ashutosh Bapat <ashutosh.ba...@enterprisedb.com > wrote: > On Tue, Oct 10, 2017 at 7:29 PM, Gourav Kumar <gourav1...@gmail.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 >