pg.ddx.io  pgsql-bugs@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: PG Bug reporting form <noreply@postgresql.org>
To: pgsql-bugs@lists.postgresql.org
Cc: m.sakrejda@gmail.com
Subject: BUG #16502: EXPLAIN JSON format adds extra quotes around index names
Date: Thu, 18 Jun 2020 19:24:08 +0000
Message-ID: <16502-57bd1c9f913ed1d1@postgresql.org> (raw)

The following bug has been logged on the website:

Bug reference:      16502
Logged by:          Maciek Sakrejda
Email address:      m.sakrejda@gmail.com
PostgreSQL version: 12.3
Operating system:   Ubuntu 19.10
Description:        

When working with a table that needs quotes around its name (e.g., with
spaces in the name), EXPLAIN is inconsistent in handling this between
relation names and index names. A relation name is presented as-is in the
"Relation Name" field, but the "Index Name" field includes the quotes inside
the field value.

Here's an example:

maciek=# create table "needs quotes"(a int);
CREATE TABLE
maciek=# explain (costs off, format json) select * from "needs quotes";
               QUERY PLAN               
----------------------------------------
 [                                     +
   {                                   +
     "Plan": {                         +
       "Node Type": "Seq Scan",        +
       "Parallel Aware": false,        +
       "Relation Name": "needs quotes",+
       "Alias": "needs quotes"         +
     }                                 +
   }                                   +
 ]
(1 row)

maciek=# create index on "needs quotes"(a);
CREATE INDEX
maciek=# set enable_seqscan = off;
SET
maciek=# explain (costs off, format json) select * from "needs quotes";
                    QUERY PLAN                    
--------------------------------------------------
 [                                               +
   {                                             +
     "Plan": {                                   +
       "Node Type": "Bitmap Heap Scan",          +
       "Parallel Aware": false,                  +
       "Relation Name": "needs quotes",          +
       "Alias": "needs quotes",                  +
       "Plans": [                                +
         {                                       +
           "Node Type": "Bitmap Index Scan",     +
           "Parent Relationship": "Outer",       +
           "Parallel Aware": false,              +
           "Index Name": "\"needs quotes_a_idx\""+
         }                                       +
       ]                                         +
     }                                           +
   }                                             +
 ]
(1 row)

Given that there is no ambiguity here because the index or relation name is
the full value of the field, the quotes don't really add anything and I'd
argue they should be dropped.

I ran into this in 12.3, but it looks like it's still the case in HEAD. It
looks like this is because `explain_get_index_name` in `explain.c` always
quotes the index name, regardless of the format being used. I'd send a
patch, but I'm not sure how `explain_get_index_name_hook` should fit into
this.

Thanks,
Maciek



view thread (11+ messages)  latest in thread

Message-ID: <16502-57bd1c9f913ed1d1@postgresql.org>
Permalink:  ../16502-57bd1c9f913ed1d1@postgresql.org/
Also on:    postgresql.org/message-id/16502-57bd1c9f913ed1d1@postgresql.org

 · 

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: pgsql-bugs@postgresql.org
  Cc: noreply@postgresql.org, pgsql-bugs@lists.postgresql.org, m.sakrejda@gmail.com
  Subject: Re: BUG #16502: EXPLAIN JSON format adds extra quotes around index names
  In-Reply-To: <16502-57bd1c9f913ed1d1@postgresql.org>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox