diff options
Diffstat (limited to 'src/backend/rewrite/rewriteManip.c')
-rw-r--r-- | src/backend/rewrite/rewriteManip.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/src/backend/rewrite/rewriteManip.c b/src/backend/rewrite/rewriteManip.c index a727f41bde3..506959b7b67 100644 --- a/src/backend/rewrite/rewriteManip.c +++ b/src/backend/rewrite/rewriteManip.c @@ -951,12 +951,15 @@ getInsertSelectQuery(Query *parsetree, Query ***subquery_ptr) if (list_length(parsetree->jointree->fromlist) != 1) elog(ERROR, "expected to find SELECT subquery"); rtr = (RangeTblRef *) linitial(parsetree->jointree->fromlist); - Assert(IsA(rtr, RangeTblRef)); + if (!IsA(rtr, RangeTblRef)) + elog(ERROR, "expected to find SELECT subquery"); selectrte = rt_fetch(rtr->rtindex, parsetree->rtable); - selectquery = selectrte->subquery; - if (!(selectquery && IsA(selectquery, Query) && - selectquery->commandType == CMD_SELECT)) + if (!(selectrte->rtekind == RTE_SUBQUERY && + selectrte->subquery && + IsA(selectrte->subquery, Query) && + selectrte->subquery->commandType == CMD_SELECT)) elog(ERROR, "expected to find SELECT subquery"); + selectquery = selectrte->subquery; if (list_length(selectquery->rtable) >= 2 && strcmp(rt_fetch(PRS2_OLD_VARNO, selectquery->rtable)->eref->aliasname, "old") == 0 && |