diff --git a/src/backend/commands/explain.c b/src/backend/commands/explain.c index 67bdcb2b27..a131d15ac0 100644 --- a/src/backend/commands/explain.c +++ b/src/backend/commands/explain.c @@ -1456,7 +1456,8 @@ ExplainNode(PlanState *planstate, List *ancestors, explain_get_index_name(bitmapindexscan->indexid); if (es->format == EXPLAIN_FORMAT_TEXT) - appendStringInfo(es->str, " on %s", indexname); + appendStringInfo(es->str, " on %s", + quote_identifier(indexname)); else ExplainPropertyText("Index Name", indexname, es); } @@ -3267,6 +3268,10 @@ show_eval_params(Bitmapset *bms_params, ExplainState *es) * * We allow plugins to get control here so that plans involving hypothetical * indexes can be explained. + * + * Note: names returned by this function should be "raw"; the caller will + * apply quoting if needed. Formerly the convention was to do quoting here, + * but we don't want that in non-text output formats. */ static const char * explain_get_index_name(Oid indexId) @@ -3279,11 +3284,10 @@ explain_get_index_name(Oid indexId) result = NULL; if (result == NULL) { - /* default behavior: look in the catalogs and quote it */ + /* default behavior: look it up in the catalogs */ result = get_rel_name(indexId); if (result == NULL) elog(ERROR, "cache lookup failed for index %u", indexId); - result = quote_identifier(result); } return result; } @@ -3463,7 +3467,7 @@ ExplainIndexScanDetails(Oid indexid, ScanDirection indexorderdir, { if (ScanDirectionIsBackward(indexorderdir)) appendStringInfoString(es->str, " Backward"); - appendStringInfo(es->str, " using %s", indexname); + appendStringInfo(es->str, " using %s", quote_identifier(indexname)); } else {