aboutsummaryrefslogtreecommitdiff
path: root/src/backend/commands
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/commands')
-rw-r--r--src/backend/commands/createas.c1
-rw-r--r--src/backend/commands/explain.c45
-rw-r--r--src/backend/commands/sequence.c1
-rw-r--r--src/backend/commands/tablecmds.c2
-rw-r--r--src/backend/commands/view.c1
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