Tom Lane wrote:
Andrew Dunstan <andrew.duns...@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






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

Reply via email to