From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
---|---|
To: | pgsql-committers(at)postgresql(dot)org |
Subject: | pgsql: Fix EXPLAIN so that it doesn't emit invalid XML in corner cases. |
Date: | 2016-10-20 21:18:25 |
Message-ID: | E1bxKjJ-0006Eg-En@gemulon.postgresql.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-committers |
Fix EXPLAIN so that it doesn't emit invalid XML in corner cases.
With track_io_timing = on, EXPLAIN (ANALYZE, BUFFERS) will emit fields
named like "I/O Read Time". The slash makes that invalid as an XML
element name, so that adding FORMAT XML would produce invalid XML.
We already have code in there to translate spaces to dashes, so let's
generalize that to convert anything that isn't a valid XML name character,
viz letters, digits, hyphens, underscores, and periods. We could just
reject slashes, which would run a bit faster. But the fact that this went
unnoticed for so long doesn't give me a warm feeling that we'd notice the
next creative violation, so let's make it a permanent fix.
Reported by Markus Winand, though this isn't his initial patch proposal.
Back-patch to 9.2 where track_io_timing was added. The problem is only
latent in 9.1, so I don't feel a need to fix it there.
Discussion: <E0BF6A45-68E8-45E6-918F-741FB332C6BB(at)winand(dot)at>
Branch
------
REL9_3_STABLE
Details
-------
http://git.postgresql.org/pg/commitdiff/edb5143063ba2f63b37178df1fe2783dc6c9927f
Modified Files
--------------
src/backend/commands/explain.c | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
From | Date | Subject | |
---|---|---|---|
Next Message | Robert Haas | 2016-10-21 14:08:17 | pgsql: postgres_fdw: Push down aggregates to remote servers. |
Previous Message | Tom Lane | 2016-10-20 19:41:04 | pgsql: Sync our copy of the timezone library with IANA release tzcode20 |