Re: explain output infelicity in psql

From: Pavel Stehule <pavel(dot)stehule(at)gmail(dot)com>
To: Robert Haas <robertmhaas(at)gmail(dot)com>
Cc: Andrew Dunstan <andrew(at)dunslane(dot)net>, PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: explain output infelicity in psql
Date: 2009-12-10 07:06:00
Message-ID: 162867790912092306v3631e8ddxf8399b0d2b978ac6@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

2009/12/9 Robert Haas <robertmhaas(at)gmail(dot)com>:
> On Wed, Dec 9, 2009 at 2:37 PM, Andrew Dunstan <andrew(at)dunslane(dot)net> wrote:
>>
>> I have just noticed while checking the EXPLAIN YAML patch that the non-text
>> explain formats are output as a single line with embedded line feeds, while
>> the text format is delivered as a set of text records, one per line. The
>> practical effect of this is that psql decorates the non-text format output
>> with continuation characters:
>>
>>   andrew=# explain select count(*) from pg_class where relname ~ 'pg_';
>>                              QUERY PLAN
>> ----------------------------------------------------------------
>>    Aggregate  (cost=9.67..9.68 rows=1 width=0)
>>      ->  Seq Scan on pg_class  (cost=0.00..9.16 rows=204 width=0)
>>            Filter: (relname ~ 'pg_'::text)
>>   (3 rows)
>>
>>   Time: 5.813 ms
>>   andrew=# explain (format yaml) select count(*) from pg_class where
>>   relname ~ 'pg_';
>>                  QUERY PLAN
>> -----------------------------------------
>>     - Plan:                               +
>>        Node Type: Aggregate               +
>>        Strategy: Plain                    +
>>        Startup Cost: 9.67                 +
>>        Total Cost: 9.68                   +
>>        Plan Rows: 1                       +
>>        Plan Width: 0                      +
>>        Plans:                             +
>>          - Node Type: Seq Scan            +
>>            Parent Relationship: Outer     +
>>            Relation Name: pg_class        +
>>            Alias: pg_class                +
>>            Startup Cost: 0.00             +
>>            Total Cost: 9.16               +
>>            Plan Rows: 204                 +
>>            Plan Width: 0                  +
>>            Filter: (relname ~ 'pg_'::text)
>>   (1 row)
>>
>> Those + chars at the end of the line are ugly, to say the least, and they
>> make the supposedly machine-readable formats not so machine readable if
>> anyone wanted to c&p the output into a parser. (I'm mildly surprised this
>> hasn't been noticed before).
>>
>> Maybe we need to teach psql not to do this formatting for EXPLAIN output?
>
> Oh, dear.  I think that line continuation syntax was recently added -
> subsequent to the machine-readable EXPLAIN patch.  The reason why it's
> coded to emit everything as a single row is because that will be most
> convenient for programs that are sucking down this data
> programatically.  Otherwise, they'll have to concatenate all the lines
> that are returned.
>
> And in fact for XML format, it's even worse: the data is returned as
> type xml, but that obviously won't fly if we return each line as a
> separate tuple.
>
> On first blush, I'm inclined to suggest that the addition of + signs
> to mark continuation lines is a misfeature.

+1

Pavel

>
> ...Robert
>
> --
> Sent via pgsql-hackers mailing list (pgsql-hackers(at)postgresql(dot)org)
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgsql-hackers
>

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Takahiro Itagaki 2009-12-10 08:21:44 Re: pgbench: new feature allowing to launch shell commands
Previous Message 黄晓骋 2009-12-10 06:47:14 答复: questions about concurrency control in Postgresql