From: Tom Lane Date: Fri, 3 May 2002 15:56:45 +0000 (+0000) Subject: Use quote_identifier on relation names in EXPLAIN output, per suggestion X-Git-Tag: REL7_3~1562 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=d662f2930249a50bc7a4901016e8b875fe6f3c84;p=postgresql Use quote_identifier on relation names in EXPLAIN output, per suggestion from Liam Stewart. Minor code cleanups also. --- diff --git a/src/backend/commands/explain.c b/src/backend/commands/explain.c index 5a5df6a47c..03f494d63f 100644 --- a/src/backend/commands/explain.c +++ b/src/backend/commands/explain.c @@ -5,12 +5,13 @@ * Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group * Portions Copyright (c) 1994-5, Regents of the University of California * - * $Header: /cvsroot/pgsql/src/backend/commands/explain.c,v 1.75 2002/03/24 17:11:36 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/commands/explain.c,v 1.76 2002/05/03 15:56:45 tgl Exp $ * */ #include "postgres.h" +#include "access/genam.h" #include "access/heapam.h" #include "catalog/pg_type.h" #include "commands/explain.h" @@ -26,7 +27,6 @@ #include "utils/builtins.h" #include "utils/guc.h" #include "utils/lsyscache.h" -#include "utils/relcache.h" typedef struct ExplainState @@ -62,9 +62,6 @@ static void do_text_output(TextOutputState *tstate, char *aline); static void do_text_output_multiline(TextOutputState *tstate, char *text); static void end_text_output(TextOutputState *tstate); -/* Convert a null string pointer into "<>" */ -#define stringStringInfo(s) (((s) == NULL) ? "<>" : (s)) - /* * ExplainQuery - @@ -227,7 +224,6 @@ explain_outNode(StringInfo str, Plan *plan, Plan *outer_plan, int indent, ExplainState *es) { List *l; - Relation relation; char *pname; int i; @@ -322,13 +318,13 @@ explain_outNode(StringInfo str, Plan *plan, Plan *outer_plan, i = 0; foreach(l, ((IndexScan *) plan)->indxid) { - relation = RelationIdGetRelation(lfirsti(l)); - Assert(relation); + Relation relation; + + relation = index_open(lfirsti(l)); appendStringInfo(str, "%s%s", (++i > 1) ? ", " : "", - stringStringInfo(RelationGetRelationName(relation))); - /* drop relcache refcount from RelationIdGetRelation */ - RelationDecrementReferenceCount(relation); + quote_identifier(RelationGetRelationName(relation))); + index_close(relation); } /* FALL THRU */ case T_SeqScan: @@ -346,10 +342,10 @@ explain_outNode(StringInfo str, Plan *plan, Plan *outer_plan, relname = get_rel_name(rte->relid); appendStringInfo(str, " on %s", - stringStringInfo(relname)); + quote_identifier(relname)); if (strcmp(rte->eref->aliasname, relname) != 0) appendStringInfo(str, " %s", - stringStringInfo(rte->eref->aliasname)); + quote_identifier(rte->eref->aliasname)); } break; case T_SubqueryScan: @@ -359,7 +355,7 @@ explain_outNode(StringInfo str, Plan *plan, Plan *outer_plan, es->rtable); appendStringInfo(str, " %s", - stringStringInfo(rte->eref->aliasname)); + quote_identifier(rte->eref->aliasname)); } break; default: