Re: Regression with large XML data input
Michael Paquier <michael@paquier.xyz>
From: Michael Paquier <michael@paquier.xyz>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: Erik Wienhold <ewie@ewie.name>, Jim Jones <jim.jones@uni-muenster.de>, Robert Treat <rob@xzilla.net>, Postgres hackers <pgsql-hackers@lists.postgresql.org>
Date: 2025-07-29T01:23:25Z
Lists: pgsql-hackers
On Mon, Jul 28, 2025 at 04:16:07PM -0400, Tom Lane wrote: > Erik's v2 is slightly wrong as to the save-and-restore logic for > the KeepBlanks setting: we need to restore in the error path too, > and we'd better mark the save variable volatile since it's modified > inside the PG_TRY. I made some other cosmetic changes, mainly to > avoid calculating "options" when it won't be used. I tested the > attached v3 against RHEL8's libxml2-2.9.7, as well as against today's > libxml2 git master, and it accepts the problematic input on both. This has been applied already as of 71c0921b649d, and I've double-checked the behavior with my local libxml2 builds as well. Thanks for the fix, the result looks OK to me! + /* set parse options --- have to do this the ugly way */ + save_keep_blanks = xmlKeepBlanksDefault(preserve_whitespace ? 1 : 0); [...] + if (save_keep_blanks != -1) + xmlKeepBlanksDefault(save_keep_blanks); [...] + if (save_keep_blanks != -1) + xmlKeepBlanksDefault(save_keep_blanks); I didn't spot that this option existed though. That's an interesting trick, Erik. It's a bit weird that we have to to live with this style, but with the TRY/CATCH blocks we are already relying on it's not that bad at the end. -- Michael
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