I wrote:
>
>
> Andrew Dunstan wrote:
>> Bruce Momjian wrote:
>>> Are we going to publish an XML DTD for EXPLAIN, or have we already?
>>
>> Not a DTD, but I am working on an XML Schema (DTDs are a bit yesterday).
>>
>>
>
> Here is a RelaxNG spec which people might find a bit easier to read.
> It has been autocreated by a little tool called trang, that I used on
> a very large body of explain output that I produced by mangling the
> regression tests (and, incidentally, crashing the server in the result
> - I still have to chase that up).
Updated version with more complete information (regression crash was due
to my bad script).
cheers
andrew
default namespace = "http://www.postgresql.org/2009/explain"
start = element explain { element Query { Plan, Triggers, element Total-Runtime { xsd:decimal }
}+ }
Plan = element Plan { (element Actual-Loops { xsd:integer } | element Actual-Rows { xsd:integer } | element
Actual-Startup-Time{ xsd:decimal } | element Actual-Total-Time { xsd:decimal } | element Alias { text } |
elementCTE-Name { text } | element Command { text } | element Filter { text } | element Function-Name { text }
| element Hash-Cond { text } | element Index-Cond { text } | element Index-Name { text } | element
Join-Filter{ text } | element Join-Type { text } | element Merge-Cond { text } | element Node-Type { text }
|element One-Time-Filter { text } | element Output { Item* } | element Parent-Relationship { text } | element
Plan-Rows{ xsd:integer } | element Plan-Width { xsd:integer } | element Plans { Plan* } | element Recheck-Cond
{text } | element Relation-Name { text } | element Scan-Direction { text } | element Schema { text } |
elementSort-Key { Item+ } | element Sort-Method { text } | element Sort-Space-Type { text } | element
Sort-Space-Used{ xsd:integer } | element Startup-Cost { xsd:decimal } | element Strategy { text } | element
Subplan-Name{ text } | element Total-Cost { xsd:decimal }, | element TID-Cond { text } )* }
Triggers = element Triggers { element Trigger { element Trigger-Name { text }, element Constraint-Name { text
}?, element Relation { text }, element Time { xsd:decimal }, element Calls { xsd:integer } }* }
Item = element Item { text }