Thread

  1. Re: Regression with large XML data input

    Erik Wienhold <ewie@ewie.name> — 2025-12-25T11:46:47Z

    On 2025-12-25 08:29 +0100, zengman wrote:
    > > The whitespace can be preserved by setting xmlKeepBlanksDefault before
    > > parsing.  See attached v2.  That function is deprecated, though.  But
    > > libxml2 uses thread-local globals, so it should be safe.  Other than
    > > that, I see no other way to set XML_PARSE_NOBLANKS with
    > > xmlParseBalancedChunkMemory.
    > > 
    > > [1] https://gitlab.gnome.org/GNOME/libxml2/-/blob/408bd0e18e6ddba5d18e51d52da0f7b3ca1b4421/parserInternals.c#L2833
    > 
    > Hi everyone, 
    > 
    > I have a small issue that needs resolving.
    > 
    > My environment:
    > ```
    > postgres@zxm-VMware-Virtual-Platform:~$ uname -i -s -r -v
    > Linux 6.11.0-29-generic #29-Ubuntu SMP PREEMPT_DYNAMIC Fri Jun 13 20:29:41 UTC 2025 x86_64
    > postgres@zxm-VMware-Virtual-Platform:~$ 
    > postgres@zxm-VMware-Virtual-Platform:~$ xml2-config --version 
    > 2.12.7
    > ```
    > 
    > After setting COPT=-Werror, compilation fails with the following errors (warnings are enforced as errors):
    > ```
    > xml.c: In function ‘xml_parse’:
    > xml.c:1919:25: error: ‘xmlKeepBlanksDefault’ is deprecated [-Werror=deprecated-declarations]
    >  1919 |                         save_keep_blanks = xmlKeepBlanksDefault(preserve_whitespace ? 1 : 0);
    >       |                         ^~~~~~~~~~~~~~~~
    > In file included from xml.c:51:
    > /usr/include/libxml2/libxml/parser.h:957:17: note: declared here
    >   957 |                 xmlKeepBlanksDefault    (int val);
    >       |                 ^~~~~~~~~~~~~~~~~~~~
    > xml.c:1943:25: error: ‘xmlKeepBlanksDefault’ is deprecated [-Werror=deprecated-declarations]
    >  1943 |                         xmlKeepBlanksDefault(save_keep_blanks);
    >       |                         ^~~~~~~~~~~~~~~~~~~~
    > /usr/include/libxml2/libxml/parser.h:957:17: note: declared here
    >   957 |                 xmlKeepBlanksDefault    (int val);
    >       |                 ^~~~~~~~~~~~~~~~~~~~
    > xml.c:1956:17: error: ‘xmlKeepBlanksDefault’ is deprecated [-Werror=deprecated-declarations]
    >  1956 |                 xmlKeepBlanksDefault(save_keep_blanks);
    >       |                 ^~~~~~~~~~~~~~~~~~~~
    > /usr/include/libxml2/libxml/parser.h:957:17: note: declared here
    >   957 |                 xmlKeepBlanksDefault    (int val);
    >       |                 ^~~~~~~~~~~~~~~~~~~~
    > cc1: all warnings being treated as errors
    > ```
    > 
    > These deprecation warnings do not impact the test results in any way. 
    > Therefore, I have attached a patch to suppress these specific warnings. 
    
    The patch works when building with COPT=-Werror.  I guess the change is
    okay since we already make use of -Wno-deprecated-declarations in
    src/backend/jit/llvm/Makefile:
    
    	# LLVM 14 produces deprecation warnings.  We'll need to make some changes
    	# before the relevant functions are removed, but for now silence the warnings.
    	ifeq ($(GCC), yes)
    	LLVM_CFLAGS += -Wno-deprecated-declarations
    	endif
    
    But do we need the same guard for GCC here as well?
    
    Alternatively, can you upgrade to libxml2 2.13.3+ which undeprecated
    xmlKeepBlanksDefault?
    
    -- 
    Erik Wienhold