• Tom Lane's avatar
    Make some small planner API cleanups. · a1b8c41e
    Tom Lane authored
    Move a few very simple node-creation and node-type-testing functions
    from the planner's clauses.c to nodes/makefuncs and nodes/nodeFuncs.
    There's nothing planner-specific about them, as evidenced by the
    number of other places that were using them.
    
    While at it, rename and_clause() etc to is_andclause() etc, to clarify
    that they are node-type-testing functions not node-creation functions.
    And use "static inline" implementations for the shortest ones.
    
    Also, modify flatten_join_alias_vars() and some subsidiary functions
    to take a Query not a PlannerInfo to define the join structure that
    Vars should be translated according to.  They were only using the
    "parse" field of the PlannerInfo anyway, so this just requires removing
    one level of indirection.  The advantage is that now parse_agg.c can
    use flatten_join_alias_vars() without the horrid kluge of creating an
    incomplete PlannerInfo, which will allow that file to be decoupled from
    relation.h in a subsequent patch.
    
    Discussion: https://postgr.es/m/11460.1548706639@sss.pgh.pa.us
    a1b8c41e
subselect.c 83.4 KB