]> granicus.if.org Git - postgresql/commitdiff
Require non-NULL pstate for all addRangeTableEntryFor* functions.
authorRobert Haas <rhaas@postgresql.org>
Wed, 11 Mar 2015 19:26:43 +0000 (15:26 -0400)
committerRobert Haas <rhaas@postgresql.org>
Wed, 11 Mar 2015 19:26:43 +0000 (15:26 -0400)
Per discussion, it's better to have a consistent coding rule here.

Michael Paquier, per a node from Greg Stark referencing an old post
from Tom Lane.

src/backend/commands/view.c
src/backend/optimizer/plan/subselect.c
src/backend/parser/parse_relation.c

index 6f2a749756c72836884c36af95332483fe0dc998..efa4be1732f80cfbb55e0cfe500557499920b6c7 100644 (file)
@@ -345,6 +345,7 @@ UpdateRangeTableOfViewParse(Oid viewOid, Query *viewParse)
        List       *new_rt;
        RangeTblEntry *rt_entry1,
                           *rt_entry2;
+       ParseState *pstate;
 
        /*
         * Make a copy of the given parsetree.  It's not so much that we don't
@@ -356,6 +357,9 @@ UpdateRangeTableOfViewParse(Oid viewOid, Query *viewParse)
         */
        viewParse = (Query *) copyObject(viewParse);
 
+       /* Create a dummy ParseState for addRangeTableEntryForRelation */
+       pstate = make_parsestate(NULL);
+
        /* need to open the rel for addRangeTableEntryForRelation */
        viewRel = relation_open(viewOid, AccessShareLock);
 
@@ -363,10 +367,10 @@ UpdateRangeTableOfViewParse(Oid viewOid, Query *viewParse)
         * Create the 2 new range table entries and form the new range table...
         * OLD first, then NEW....
         */
-       rt_entry1 = addRangeTableEntryForRelation(NULL, viewRel,
+       rt_entry1 = addRangeTableEntryForRelation(pstate, viewRel,
                                                                                          makeAlias("old", NIL),
                                                                                          false, false);
-       rt_entry2 = addRangeTableEntryForRelation(NULL, viewRel,
+       rt_entry2 = addRangeTableEntryForRelation(pstate, viewRel,
                                                                                          makeAlias("new", NIL),
                                                                                          false, false);
        /* Must override addRangeTableEntry's default access-check flags */
index 5a1d539e8de94d8c510f912e707e1033fce6bb6f..acfd0bcfbe59d0209f410de557e2019f50bd78a1 100644 (file)
@@ -1233,6 +1233,7 @@ convert_ANY_sublink_to_join(PlannerInfo *root, SubLink *sublink,
        RangeTblRef *rtr;
        List       *subquery_vars;
        Node       *quals;
+       ParseState *pstate;
 
        Assert(sublink->subLinkType == ANY_SUBLINK);
 
@@ -1264,6 +1265,9 @@ convert_ANY_sublink_to_join(PlannerInfo *root, SubLink *sublink,
        if (contain_volatile_functions(sublink->testexpr))
                return NULL;
 
+       /* Create a dummy ParseState for addRangeTableEntryForSubquery */
+       pstate = make_parsestate(NULL);
+
        /*
         * Okay, pull up the sub-select into upper range table.
         *
@@ -1272,7 +1276,7 @@ convert_ANY_sublink_to_join(PlannerInfo *root, SubLink *sublink,
         * below). Therefore this is a lot easier than what pull_up_subqueries has
         * to go through.
         */
-       rte = addRangeTableEntryForSubquery(NULL,
+       rte = addRangeTableEntryForSubquery(pstate,
                                                                                subselect,
                                                                                makeAlias("ANY_subquery", NIL),
                                                                                false,
index 80daeb9dc4a34a9aa06e9729ecb65022bebe924e..ca560ccee1b5bd5272139ddb5766111c8e29c6c0 100644 (file)
@@ -1245,6 +1245,8 @@ addRangeTableEntryForRelation(ParseState *pstate,
        RangeTblEntry *rte = makeNode(RangeTblEntry);
        char       *refname = alias ? alias->aliasname : RelationGetRelationName(rel);
 
+       Assert(pstate != NULL);
+
        rte->rtekind = RTE_RELATION;
        rte->alias = alias;
        rte->relid = RelationGetRelid(rel);
@@ -1276,8 +1278,7 @@ addRangeTableEntryForRelation(ParseState *pstate,
         * Add completed RTE to pstate's range table list, but not to join list
         * nor namespace --- caller must do that if appropriate.
         */
-       if (pstate != NULL)
-               pstate->p_rtable = lappend(pstate->p_rtable, rte);
+       pstate->p_rtable = lappend(pstate->p_rtable, rte);
 
        return rte;
 }
@@ -1302,6 +1303,8 @@ addRangeTableEntryForSubquery(ParseState *pstate,
        int                     varattno;
        ListCell   *tlistitem;
 
+       Assert(pstate != NULL);
+
        rte->rtekind = RTE_SUBQUERY;
        rte->relid = InvalidOid;
        rte->subquery = subquery;
@@ -1354,8 +1357,7 @@ addRangeTableEntryForSubquery(ParseState *pstate,
         * Add completed RTE to pstate's range table list, but not to join list
         * nor namespace --- caller must do that if appropriate.
         */
-       if (pstate != NULL)
-               pstate->p_rtable = lappend(pstate->p_rtable, rte);
+       pstate->p_rtable = lappend(pstate->p_rtable, rte);
 
        return rte;
 }
@@ -1391,6 +1393,8 @@ addRangeTableEntryForFunction(ParseState *pstate,
        int                     natts,
                                totalatts;
 
+       Assert(pstate != NULL);
+
        rte->rtekind = RTE_FUNCTION;
        rte->relid = InvalidOid;
        rte->subquery = NULL;
@@ -1608,8 +1612,7 @@ addRangeTableEntryForFunction(ParseState *pstate,
         * Add completed RTE to pstate's range table list, but not to join list
         * nor namespace --- caller must do that if appropriate.
         */
-       if (pstate != NULL)
-               pstate->p_rtable = lappend(pstate->p_rtable, rte);
+       pstate->p_rtable = lappend(pstate->p_rtable, rte);
 
        return rte;
 }
@@ -1633,6 +1636,8 @@ addRangeTableEntryForValues(ParseState *pstate,
        int                     numaliases;
        int                     numcolumns;
 
+       Assert(pstate != NULL);
+
        rte->rtekind = RTE_VALUES;
        rte->relid = InvalidOid;
        rte->subquery = NULL;
@@ -1680,8 +1685,7 @@ addRangeTableEntryForValues(ParseState *pstate,
         * Add completed RTE to pstate's range table list, but not to join list
         * nor namespace --- caller must do that if appropriate.
         */
-       if (pstate != NULL)
-               pstate->p_rtable = lappend(pstate->p_rtable, rte);
+       pstate->p_rtable = lappend(pstate->p_rtable, rte);
 
        return rte;
 }
@@ -1703,6 +1707,8 @@ addRangeTableEntryForJoin(ParseState *pstate,
        Alias      *eref;
        int                     numaliases;
 
+       Assert(pstate != NULL);
+
        /*
         * Fail if join has too many columns --- we must be able to reference any
         * of the columns with an AttrNumber.
@@ -1748,8 +1754,7 @@ addRangeTableEntryForJoin(ParseState *pstate,
         * Add completed RTE to pstate's range table list, but not to join list
         * nor namespace --- caller must do that if appropriate.
         */
-       if (pstate != NULL)
-               pstate->p_rtable = lappend(pstate->p_rtable, rte);
+       pstate->p_rtable = lappend(pstate->p_rtable, rte);
 
        return rte;
 }
@@ -1774,6 +1779,8 @@ addRangeTableEntryForCTE(ParseState *pstate,
        int                     varattno;
        ListCell   *lc;
 
+       Assert(pstate != NULL);
+
        rte->rtekind = RTE_CTE;
        rte->ctename = cte->ctename;
        rte->ctelevelsup = levelsup;
@@ -1848,8 +1855,7 @@ addRangeTableEntryForCTE(ParseState *pstate,
         * Add completed RTE to pstate's range table list, but not to join list
         * nor namespace --- caller must do that if appropriate.
         */
-       if (pstate != NULL)
-               pstate->p_rtable = lappend(pstate->p_rtable, rte);
+       pstate->p_rtable = lappend(pstate->p_rtable, rte);
 
        return rte;
 }