Re: Regression with large XML data input
Tom Lane <tgl@sss.pgh.pa.us>
From: Tom Lane <tgl@sss.pgh.pa.us>
To: Michael Paquier <michael@paquier.xyz>
Cc: Postgres hackers <pgsql-hackers@lists.postgresql.org>,
Erik Wienhold <ewie@ewie.name>
Date: 2025-07-24T19:23:59Z
Lists: pgsql-hackers
I wrote: > BTW, further testing shows that the same failure occurs at > f68d6aabb7e2^. So AFAICS, the answer as to why the behavior > changed there is that it didn't. Oh, wait ... the plot thickens! The above statement is true when testing on my Mac with libxml2 2.13.8 from MacPorts. With either HEAD or f68d6aabb7e2^, I get errors similar to what Erik just showed: ERROR: invalid XML content DETAIL: line 1: Resource limit exceeded: Text node too long, try XML_PARSE_HUGE XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX However, when testing on RHEL8 with libxml2 2.9.7, indeed I get "Huge input lookup" with our current code but no failure with f68d6aabb7e2^. The way I interpret these results is that in older libxml2 versions, xmlParseBalancedChunkMemory is missing an XML_ERR_RESOURCE_LIMIT check that does exist in newer versions. So even if we were to do some kind of reversion, it would only prevent the error in libxml2 versions that lack that check. And in those versions we'd probably be exposing ourselves to resource-exhaustion problems. On the whole I'm thinking more and more that we don't want to touch this. Our recommendation for processing multi-megabyte chunks of XML should be "don't". Unless we want to find or write a replacement for libxml2 ... which we have discussed, but so far nothing's happened. regards, tom lane
Commits
-
Remove unnecessary complication around xmlParseBalancedChunkMemory.
- 902f92221889 19 (unreleased) landed
- cdcdabce5b70 14.19 landed
- 0ae824704070 13.22 landed
- 0928e18eb85a 15.14 landed
- d5f014d897c8 18.0 landed
- 762c6d8d26e0 16.10 landed
- 7571e0f6e924 17.6 landed
-
Avoid regression in the size of XML input that we will accept.
- 6d5e493b4a15 16.10 landed
- 589d6e6408b4 13.22 landed
- 0ffbd345e43d 15.14 landed
- 0395464aff02 14.19 landed
- fd4ad33fe223 17.6 landed
- 71c0921b649d 19 (unreleased) landed
- 637ead2e1aa1 18.0 landed
-
Use xmlParseInNodeContext not xmlParseBalancedChunkMemory.
- 6082b3d5d3d1 18.0 cited
-
Revert "Add support for parsing of large XML data (>= 10MB)"
- f2743a7d70e7 17.0 cited