]> granicus.if.org Git - postgresql/commit
Fix minor deficiencies in XMLTABLE, xpath(), xmlexists()
authorAlvaro Herrera <alvherre@alvh.no-ip.org>
Thu, 7 Mar 2019 18:21:56 +0000 (15:21 -0300)
committerAlvaro Herrera <alvherre@alvh.no-ip.org>
Thu, 7 Mar 2019 21:16:34 +0000 (18:16 -0300)
commit251cf2e27bec98274e8bb002608680bdc211319e
treef2d8a8f63e4fbe9ad2c11d60a20b109dca632878
parent1d338584062b3e53b738f987ecb0d2b67745232a
Fix minor deficiencies in XMLTABLE, xpath(), xmlexists()

Correctly process nodes of more types than previously.  In some cases,
nodes were being ignored (nothing was output); in other cases, trying to
return them resulted in errors about unrecognized nodes.  In yet other
cases, necessary escaping (of XML special characters) was not being
done.  Fix all those (as far as the authors could find) and add
regression tests cases verifying the new behavior.

I (Álvaro) was of two minds about backpatching these changes.  They do
seem bugfixes that would benefit most users of the affected functions;
but on the other hand it would change established behavior in minor
releases, so it seems prudent not to.

Authors: Pavel Stehule, Markus Winand, Chapman Flack
Discussion:
   https://postgr.es/m/CAFj8pRA6J25CtAZ2TuRvxK3gat7-bBUYh0rfE2yM7Hj9GD14Dg@mail.gmail.com
   https://postgr.es/m/8BDB0627-2105-4564-AA76-7849F028B96E@winand.at

The elephant in the room as pointed out by Chapman Flack, not fixed in
this commit, is that we still have XMLTABLE operating on XPath 1.0
instead of the standard-mandated XQuery (or even its subset XPath 2.0).
Fixing that is a major undertaking, however.
doc/src/sgml/func.sgml
src/backend/utils/adt/xml.c
src/test/regress/expected/xml.out
src/test/regress/expected/xml_1.out
src/test/regress/expected/xml_2.out
src/test/regress/sql/xml.sql