The main goal of this patch is to get rid of our use of xmlKeepBlanksDefault, which libxml2 has deprecated. To do that, we want to use xmlParseInNodeContext instead of xmlParseBalancedChunkMemory, so that we can pass an options mask that includes XML_PARSE_NOBLANKS. xmlParseInNodeContext wants an xmlNode rather than an xmlDoc as context. This gives us an opportunity for simplification though: we can make that node be a dummy root node for xml_parse's result document, and then attach the content node(s) as children of the root, essentially moving the data structure hack in xmltotext_with_options into xml_parse. The main benefit of this is that callers no longer need to free the content node list separately; freeing the document is sufficient. (There were error paths in xmltotext_with_options that I think would have leaked that list, though they could only be reached in OOM or similar conditions.) We also do some fooling with doc->encoding, to be bug-compatible with our previous behavior on as many libxml2 versions as practical. Some small discrepancies with previous behavior are known with older libxml2 versions. Therefore, it seems inadvisable to back-patch this, at least not before it's gotten a good deal of field experience. Author: Tom Lane <tgl@sss.pgh.pa.us> Fix-suggested-by: Andrew Dunstan <andrew@dunslane.net> Reviewed-by: Rui Zhao <zhaorui126@gmail.com> Discussion: https://postgr.es/m/ZR2PPFF1830B8772632FA23847D7482168FD2C62@ZR2PPFF1830B877.CHEP278.PROD.OUTLOOK.COM
PostgreSQL Database Management System
This directory contains the source code distribution of the PostgreSQL database management system.
PostgreSQL is an advanced object-relational database management system that supports an extended subset of the SQL standard, including transactions, foreign keys, subqueries, triggers, user-defined types and functions. This distribution also contains C language bindings.
Copyright and license information can be found in the file COPYRIGHT.
General documentation about this version of PostgreSQL can be found at https://www.postgresql.org/docs/devel/. In particular, information about building PostgreSQL from the source code can be found at https://www.postgresql.org/docs/devel/installation.html.
The latest version of this software, and related software, may be obtained at https://www.postgresql.org/download/. For more information look at our web site located at https://www.postgresql.org/.