aboutsummaryrefslogtreecommitdiff
path: root/src/backend/commands/explain.c
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2002-05-03 15:56:45 +0000
committerTom Lane <tgl@sss.pgh.pa.us>2002-05-03 15:56:45 +0000
commitd662f2930249a50bc7a4901016e8b875fe6f3c84 (patch)
tree9dfe8e7737d37ed6cb4e659899de985cdd03a666 /src/backend/commands/explain.c
parent4a2fe8e03d176da9cf6b49ef8438f54160bbce68 (diff)
downloadpostgresql-d662f2930249a50bc7a4901016e8b875fe6f3c84.tar.gz
postgresql-d662f2930249a50bc7a4901016e8b875fe6f3c84.zip
Use quote_identifier on relation names in EXPLAIN output, per suggestion
from Liam Stewart. Minor code cleanups also.
Diffstat (limited to 'src/backend/commands/explain.c')
-rw-r--r--src/backend/commands/explain.c24
1 files changed, 10 insertions, 14 deletions
diff --git a/src/backend/commands/explain.c b/src/backend/commands/explain.c
index 5a5df6a47c6..03f494d63f4 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: