Use quote_identifier on relation names in EXPLAIN output, per suggestion
from Liam Stewart. Minor code cleanups also.
This commit is contained in:
parent
4a2fe8e03d
commit
d662f29302
|
@ -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 @@
|
||||||
#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);
|
||||||
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,
|
||||||
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,
|
||||||
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,
|
||||||
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,
|
||||||
es->rtable);
|
es->rtable);
|
||||||
|
|
||||||
appendStringInfo(str, " %s",
|
appendStringInfo(str, " %s",
|
||||||
stringStringInfo(rte->eref->aliasname));
|
quote_identifier(rte->eref->aliasname));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
|
Loading…
Reference in New Issue