Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitd662f29

Browse files
committed
Use quote_identifier on relation names in EXPLAIN output, per suggestion
from Liam Stewart. Minor code cleanups also.
1 parent4a2fe8e commitd662f29

File tree

1 file changed

+10
-14
lines changed

1 file changed

+10
-14
lines changed

‎src/backend/commands/explain.c

Lines changed: 10 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,13 @@
55
* Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group
66
* Portions Copyright (c) 1994-5, Regents of the University of California
77
*
8-
* $Header: /cvsroot/pgsql/src/backend/commands/explain.c,v 1.75 2002/03/24 17:11:36 tgl Exp $
8+
* $Header: /cvsroot/pgsql/src/backend/commands/explain.c,v 1.76 2002/05/03 15:56:45 tgl Exp $
99
*
1010
*/
1111

1212
#include"postgres.h"
1313

14+
#include"access/genam.h"
1415
#include"access/heapam.h"
1516
#include"catalog/pg_type.h"
1617
#include"commands/explain.h"
@@ -26,7 +27,6 @@
2627
#include"utils/builtins.h"
2728
#include"utils/guc.h"
2829
#include"utils/lsyscache.h"
29-
#include"utils/relcache.h"
3030

3131

3232
typedefstructExplainState
@@ -62,9 +62,6 @@ static void do_text_output(TextOutputState *tstate, char *aline);
6262
staticvoiddo_text_output_multiline(TextOutputState*tstate,char*text);
6363
staticvoidend_text_output(TextOutputState*tstate);
6464

65-
/* Convert a null string pointer into "<>" */
66-
#definestringStringInfo(s) (((s) == NULL) ? "<>" : (s))
67-
6865

6966
/*
7067
* ExplainQuery -
@@ -227,7 +224,6 @@ explain_outNode(StringInfo str, Plan *plan, Plan *outer_plan,
227224
intindent,ExplainState*es)
228225
{
229226
List*l;
230-
Relationrelation;
231227
char*pname;
232228
inti;
233229

@@ -322,13 +318,13 @@ explain_outNode(StringInfo str, Plan *plan, Plan *outer_plan,
322318
i=0;
323319
foreach(l, ((IndexScan*)plan)->indxid)
324320
{
325-
relation=RelationIdGetRelation(lfirsti(l));
326-
Assert(relation);
321+
Relationrelation;
322+
323+
relation=index_open(lfirsti(l));
327324
appendStringInfo(str,"%s%s",
328325
(++i>1) ?", " :"",
329-
stringStringInfo(RelationGetRelationName(relation)));
330-
/* drop relcache refcount from RelationIdGetRelation */
331-
RelationDecrementReferenceCount(relation);
326+
quote_identifier(RelationGetRelationName(relation)));
327+
index_close(relation);
332328
}
333329
/* FALL THRU */
334330
caseT_SeqScan:
@@ -346,10 +342,10 @@ explain_outNode(StringInfo str, Plan *plan, Plan *outer_plan,
346342
relname=get_rel_name(rte->relid);
347343

348344
appendStringInfo(str," on %s",
349-
stringStringInfo(relname));
345+
quote_identifier(relname));
350346
if (strcmp(rte->eref->aliasname,relname)!=0)
351347
appendStringInfo(str," %s",
352-
stringStringInfo(rte->eref->aliasname));
348+
quote_identifier(rte->eref->aliasname));
353349
}
354350
break;
355351
caseT_SubqueryScan:
@@ -359,7 +355,7 @@ explain_outNode(StringInfo str, Plan *plan, Plan *outer_plan,
359355
es->rtable);
360356

361357
appendStringInfo(str," %s",
362-
stringStringInfo(rte->eref->aliasname));
358+
quote_identifier(rte->eref->aliasname));
363359
}
364360
break;
365361
default:

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp