Re: explain root element for auto-explain - Mailing list pgsql-hackers

From Andrew Dunstan
Subject Re: explain root element for auto-explain
Date
Msg-id 4A89F1C2.6000203@dunslane.net
Whole thread Raw
In response to Re: explain root element for auto-explain  (Tom Lane <tgl@sss.pgh.pa.us>)
Responses Re: explain root element for auto-explain  (Andrew Dunstan <andrew@dunslane.net>)
Re: explain root element for auto-explain  (Magnus Hagander <magnus@hagander.net>)
List pgsql-hackers

Tom Lane wrote:
> Andrew Dunstan <andrew.dunstan@pgexperts.com> writes:
>   
>> The attached tiny patch sets the <explain> root element for auto-explain 
>> XML output, so it looks something like this:
>>     
>
> This looks reasonable in itself, but it sort of begs the question on
> two other things:
>
> * what's the xmlns URL really going to be?
>   

By convention it refers to a place where you publish the schema for the 
document type, but it is in fact completely arbitrary, and can refer to 
a non-existant resource - as long as it is unique - it's just a 
namespace designator, and from an XML POV has no more semantic 
significance that a schema name does in SQL.

> * what's the <Query> element in regular XML output good for?  And
> shouldn't we make both explain and auto-explain either have that or not?
>
>   

and also, why isn't it present in the JSON output for either? We seem to 
have several places when we output an XML tag but not a corresponding 
named JSON node. Is that really a good idea?


>> The JSON output looks like this:
>>     
>
>   
>>     [
>>       "Plan": {
>>         "Node Type": "Result",
>>         "Startup Cost": 0.00,
>>         "Total Cost": 0.01,
>>         "Plan Rows": 1,
>>         "Plan Width": 0
>>       }
>>     ]
>>     
>
> <squint> Bearing in mind that I know roughly nothing of JSON ... surely
> the above is syntactically incorrect?  A labeled value should be within
> {...} not [...].  I think this is closely related to the point about
> <Query>, ie the same semantic nesting level is missing in both cases.
>   

Looks like it. <http://www.jsonlint.com/> is useful for checking such 
things.

Of course, the current JSON output from auto-explain (i.e. without the 
enclosing [ ] ) is also illegal, unlike the output from "explain (format 
json) select 1", which encloses the Plan node in { } inside the [ ],


cheers

andrew







pgsql-hackers by date:

Previous
From: Tom Lane
Date:
Subject: Re: [COMMITTERS] pgsql: Add release notes for 8.5alpha1
Next
From: Andrew Dunstan
Date:
Subject: Re: explain root element for auto-explain