Tom Lane <[email protected]> wrote: > > =# SELECT xmlelement(name a, xmlattributes('./qa?a=1&b=2' as href), 'Q&A'); > > xmlelement > > -------------------------------------------- > > <a href="./qa?a=1&amp;b=2">Q&A</a> > > > '&' in xmlattributes seems to be encoded twice. > > This was apparently broken by Peter's patch here: > http://archives.postgresql.org/pgsql-committers/2009-04/msg00124.php > > We might have to add a bool flag > to map_sql_value_to_xml_value() to enable or disable mapping of special > characters.
Here is a patch to fix the bug. I added a parameter 'encode' to
map_sql_value_to_xml_value() and pass false for xml attributes.
char *
map_sql_value_to_xml_value(Datum value, Oid type, bool encode)
Also a special regression test is added for it:
SELECT xmlelement(name element,
xmlattributes (1 as one, 'deuce' as two, '<>&"''' as three),
'content', '<>&"''');
xmlelement
--------------------------------------------------------------------------------------------
<element one="1" two="deuce"
three="<>&"'">content<>&"'</element>
(1 row)
Regards,
---
ITAGAKI Takahiro
NTT Open Source Software Center
not-encode-xmlattributes.patch
Description: Binary data
-- Sent via pgsql-hackers mailing list ([email protected]) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers
