diff options
Diffstat (limited to 'src/backend/commands')
-rw-r--r-- | src/backend/commands/createas.c | 1 | ||||
-rw-r--r-- | src/backend/commands/explain.c | 45 | ||||
-rw-r--r-- | src/backend/commands/sequence.c | 1 | ||||
-rw-r--r-- | src/backend/commands/tablecmds.c | 2 | ||||
-rw-r--r-- | src/backend/commands/view.c | 1 |
5 files changed, 36 insertions, 14 deletions
diff --git a/src/backend/commands/createas.c b/src/backend/commands/createas.c index a3509d8c2a3..9c1fd2cd593 100644 --- a/src/backend/commands/createas.c +++ b/src/backend/commands/createas.c @@ -319,6 +319,7 @@ intorel_startup(DestReceiver *self, int operation, TupleDesc typeinfo) col->collOid = attribute->attcollation; col->constraints = NIL; col->fdwoptions = NIL; + col->location = -1; coltype->names = NIL; coltype->typeOid = attribute->atttypid; diff --git a/src/backend/commands/explain.c b/src/backend/commands/explain.c index 4e93df26cc8..bd5428de97b 100644 --- a/src/backend/commands/explain.c +++ b/src/backend/commands/explain.c @@ -1259,9 +1259,21 @@ ExplainNode(PlanState *planstate, List *ancestors, break; case T_FunctionScan: if (es->verbose) - show_expression(((FunctionScan *) plan)->funcexpr, + { + List *fexprs = NIL; + ListCell *lc; + + foreach(lc, ((FunctionScan *) plan)->functions) + { + RangeTblFunction *rtfunc = (RangeTblFunction *) lfirst(lc); + + fexprs = lappend(fexprs, rtfunc->funcexpr); + } + /* We rely on show_expression to insert commas as needed */ + show_expression((Node *) fexprs, "Function Call", planstate, ancestors, es->verbose, es); + } show_scan_qual(plan->qual, "Filter", planstate, ancestors, es); if (plan->qual) show_instrumentation_count("Rows Removed by Filter", 1, @@ -1984,26 +1996,31 @@ ExplainTargetRel(Plan *plan, Index rti, ExplainState *es) break; case T_FunctionScan: { - Node *funcexpr; + FunctionScan *fscan = (FunctionScan *) plan; /* Assert it's on a RangeFunction */ Assert(rte->rtekind == RTE_FUNCTION); /* - * If the expression is still a function call, we can get the - * real name of the function. Otherwise, punt (this can - * happen if the optimizer simplified away the function call, - * for example). + * If the expression is still a function call of a single + * function, we can get the real name of the function. + * Otherwise, punt. (Even if it was a single function call + * originally, the optimizer could have simplified it away.) */ - funcexpr = ((FunctionScan *) plan)->funcexpr; - if (funcexpr && IsA(funcexpr, FuncExpr)) + if (list_length(fscan->functions) == 1) { - Oid funcid = ((FuncExpr *) funcexpr)->funcid; - - objectname = get_func_name(funcid); - if (es->verbose) - namespace = - get_namespace_name(get_func_namespace(funcid)); + RangeTblFunction *rtfunc = (RangeTblFunction *) linitial(fscan->functions); + + if (IsA(rtfunc->funcexpr, FuncExpr)) + { + FuncExpr *funcexpr = (FuncExpr *) rtfunc->funcexpr; + Oid funcid = funcexpr->funcid; + + objectname = get_func_name(funcid); + if (es->verbose) + namespace = + get_namespace_name(get_func_namespace(funcid)); + } } objecttag = "Function Name"; } diff --git a/src/backend/commands/sequence.c b/src/backend/commands/sequence.c index 67b8a5dfaba..b6fb2e31c59 100644 --- a/src/backend/commands/sequence.c +++ b/src/backend/commands/sequence.c @@ -143,6 +143,7 @@ DefineSequence(CreateSeqStmt *seq) coldef->collClause = NULL; coldef->collOid = InvalidOid; coldef->constraints = NIL; + coldef->location = -1; null[i - 1] = false; diff --git a/src/backend/commands/tablecmds.c b/src/backend/commands/tablecmds.c index 0b31f55af28..3483107e595 100644 --- a/src/backend/commands/tablecmds.c +++ b/src/backend/commands/tablecmds.c @@ -1605,6 +1605,7 @@ MergeAttributes(List *schema, List *supers, char relpersistence, def->collClause = NULL; def->collOid = attribute->attcollation; def->constraints = NIL; + def->location = -1; inhSchema = lappend(inhSchema, def); newattno[parent_attno - 1] = ++child_attno; } @@ -4823,6 +4824,7 @@ ATPrepAddOids(List **wqueue, Relation rel, bool recurse, AlterTableCmd *cmd, LOC cdef->is_local = true; cdef->is_not_null = true; cdef->storage = 0; + cdef->location = -1; cmd->def = (Node *) cdef; } ATPrepAddColumn(wqueue, rel, recurse, false, cmd, lockmode); diff --git a/src/backend/commands/view.c b/src/backend/commands/view.c index aca40e7a763..0703c05cff8 100644 --- a/src/backend/commands/view.c +++ b/src/backend/commands/view.c @@ -100,6 +100,7 @@ DefineVirtualRelation(RangeVar *relation, List *tlist, bool replace, def->cooked_default = NULL; def->collClause = NULL; def->collOid = exprCollation((Node *) tle->expr); + def->location = -1; /* * It's possible that the column is of a collatable type but the |