Skip to content
Snippets Groups Projects
Commit d662f293 authored by Tom Lane's avatar Tom Lane
Browse files

Use quote_identifier on relation names in EXPLAIN output, per suggestion

from Liam Stewart.  Minor code cleanups also.
parent 4a2fe8e0
No related branches found
No related tags found
No related merge requests found
...@@ -5,12 +5,13 @@ ...@@ -5,12 +5,13 @@
* Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group * Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group
* Portions Copyright (c) 1994-5, Regents of the University of California * 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 "postgres.h"
#include "access/genam.h"
#include "access/heapam.h" #include "access/heapam.h"
#include "catalog/pg_type.h" #include "catalog/pg_type.h"
#include "commands/explain.h" #include "commands/explain.h"
...@@ -26,7 +27,6 @@ ...@@ -26,7 +27,6 @@
#include "utils/builtins.h" #include "utils/builtins.h"
#include "utils/guc.h" #include "utils/guc.h"
#include "utils/lsyscache.h" #include "utils/lsyscache.h"
#include "utils/relcache.h"
typedef struct ExplainState typedef struct ExplainState
...@@ -62,9 +62,6 @@ static void do_text_output(TextOutputState *tstate, char *aline); ...@@ -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 do_text_output_multiline(TextOutputState *tstate, char *text);
static void end_text_output(TextOutputState *tstate); static void end_text_output(TextOutputState *tstate);
/* Convert a null string pointer into "<>" */
#define stringStringInfo(s) (((s) == NULL) ? "<>" : (s))
/* /*
* ExplainQuery - * ExplainQuery -
...@@ -227,7 +224,6 @@ explain_outNode(StringInfo str, Plan *plan, Plan *outer_plan, ...@@ -227,7 +224,6 @@ explain_outNode(StringInfo str, Plan *plan, Plan *outer_plan,
int indent, ExplainState *es) int indent, ExplainState *es)
{ {
List *l; List *l;
Relation relation;
char *pname; char *pname;
int i; int i;
...@@ -322,13 +318,13 @@ explain_outNode(StringInfo str, Plan *plan, Plan *outer_plan, ...@@ -322,13 +318,13 @@ explain_outNode(StringInfo str, Plan *plan, Plan *outer_plan,
i = 0; i = 0;
foreach(l, ((IndexScan *) plan)->indxid) foreach(l, ((IndexScan *) plan)->indxid)
{ {
relation = RelationIdGetRelation(lfirsti(l)); Relation relation;
Assert(relation);
relation = index_open(lfirsti(l));
appendStringInfo(str, "%s%s", appendStringInfo(str, "%s%s",
(++i > 1) ? ", " : "", (++i > 1) ? ", " : "",
stringStringInfo(RelationGetRelationName(relation))); quote_identifier(RelationGetRelationName(relation)));
/* drop relcache refcount from RelationIdGetRelation */ index_close(relation);
RelationDecrementReferenceCount(relation);
} }
/* FALL THRU */ /* FALL THRU */
case T_SeqScan: case T_SeqScan:
...@@ -346,10 +342,10 @@ explain_outNode(StringInfo str, Plan *plan, Plan *outer_plan, ...@@ -346,10 +342,10 @@ explain_outNode(StringInfo str, Plan *plan, Plan *outer_plan,
relname = get_rel_name(rte->relid); relname = get_rel_name(rte->relid);
appendStringInfo(str, " on %s", appendStringInfo(str, " on %s",
stringStringInfo(relname)); quote_identifier(relname));
if (strcmp(rte->eref->aliasname, relname) != 0) if (strcmp(rte->eref->aliasname, relname) != 0)
appendStringInfo(str, " %s", appendStringInfo(str, " %s",
stringStringInfo(rte->eref->aliasname)); quote_identifier(rte->eref->aliasname));
} }
break; break;
case T_SubqueryScan: case T_SubqueryScan:
...@@ -359,7 +355,7 @@ explain_outNode(StringInfo str, Plan *plan, Plan *outer_plan, ...@@ -359,7 +355,7 @@ explain_outNode(StringInfo str, Plan *plan, Plan *outer_plan,
es->rtable); es->rtable);
appendStringInfo(str, " %s", appendStringInfo(str, " %s",
stringStringInfo(rte->eref->aliasname)); quote_identifier(rte->eref->aliasname));
} }
break; break;
default: default:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment