Support [NO] INDENT option in XMLSERIALIZE().
authorTom Lane <tgl@sss.pgh.pa.us>
Wed, 15 Mar 2023 20:58:59 +0000 (16:58 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Wed, 15 Mar 2023 20:59:09 +0000 (16:59 -0400)
commit483bdb2afec9e33ff05fd48a00e2656e30e714b7
tree33bc2002198e57531032a09c0813af0d9922e275
parent419a8dd8142afef790dafd91ba39afac2ca48aaf
Support [NO] INDENT option in XMLSERIALIZE().

This adds the ability to pretty-print XML documents ... according to
libxml's somewhat idiosyncratic notions of what's pretty, anyway.
One notable divergence from a strict reading of the spec is that
libxml is willing to collapse empty nodes "<node></node>" to just
"<node/>", whereas SQL and the underlying XML spec say that this
option should only result in whitespace tweaks.  Nonetheless,
it seems close enough to justify using the SQL-standard syntax.

Jim Jones, reviewed by Peter Smith and myself

Discussion: https://postgr.es/m/2f5df461-dad8-6d7d-4568-08e10608a69b@uni-muenster.de
15 files changed:
doc/src/sgml/datatype.sgml
src/backend/catalog/sql_features.txt
src/backend/executor/execExprInterp.c
src/backend/parser/gram.y
src/backend/parser/parse_expr.c
src/backend/utils/adt/xml.c
src/include/catalog/catversion.h
src/include/nodes/parsenodes.h
src/include/nodes/primnodes.h
src/include/parser/kwlist.h
src/include/utils/xml.h
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