Re: [PATCH] Add pretty-printed XML output option
Jim Jones <jim.jones@uni-muenster.de>
From: Jim Jones <jim.jones@uni-muenster.de>
To: Tom Lane <tgl@sss.pgh.pa.us>, Peter Smith <smithpb2250@gmail.com>
Cc: Peter Eisentraut <peter.eisentraut@enterprisedb.com>,
Nikolay Samokhvalov <samokhvalov@gmail.com>,
PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>,
Andrey Borodin <amborodin86@gmail.com>
Date: 2023-03-16T19:07:06Z
Lists: pgsql-hackers
On 15.03.23 22:13, Tom Lane wrote: > I wrote: > It occurred to me to test v23 for memory leaks, and it had bad ones: > * the "newline" node used in the CONTENT case never got freed. > Making another one for each line wasn't helping, either. Oh, I did really miss that one. Thanks! > Pushed with those changes and some other cosmetic cleanup. > Thanks for working so hard on this! Great! Thank you, Peter and Andrey for the very nice reviews. > BTW, the libxml leak problem seems to extend to other cases too. > I tested with code like > > do $$ > declare x xml; t text; > begin > x := '<?xml version="1.0" encoding="utf8"?><foo><bar><val>73</val></bar></foo>'; > for i in 1..10000000 loop > t := xmlserialize(document x as text); > end loop; > raise notice 't = %', t; > end; > $$; > > That case is fine, but if you change the encoding spec to "latin1", > it leaks like mad. That problem is not the fault of this patch, > I don't think. I wonder if we need to do something to prevent > libxml from seeing encoding declarations other than utf8? In my environment (libxml2 v2.9.10 and Ubuntu 22.04) I couldn't reproduce this memory leak. It's been most likely fixed in further libxml2 versions. Unfortunately their gitlab page has no release notes from versions prior to 2.9.13 :( Best, Jim
Commits
-
Fix memory leak in XMLSERIALIZE(... INDENT).
- f24605e2dc16 18.0 landed
- ee58de10084b 16.10 landed
- 20bae0690322 17.6 landed
-
doc: Move documentation of md5_password_warnings to a better place
- f3622b64762b 18.0 cited
-
Support [NO] INDENT option in XMLSERIALIZE().
- 483bdb2afec9 16.0 landed
-
Add an expected-file to match behavior of latest libxml2.
- 085423e3e326 9.6.0 cited