ICU non-utf8 code path leaks memory like there's no tomorrow
Tom Lane <tgl@sss.pgh.pa.us>
From: Tom Lane <tgl@sss.pgh.pa.us>
To: pgsql-hackers@postgreSQL.org
Date: 2017-06-23T01:36:38Z
Lists: pgsql-hackers
In a database with utf8 encoding, this behaves reasonably: select count(*) from (select * from generate_series(1,10000000) x order by x::text collate "en-x-icu") ss; It eats circa 25MB, not a lot worse than the libc-collation equivalent. But try it in say LATIN1, and it eats multiple gigabytes. I believe the reason is that the code paths in varstr_cmp that make use of icu_to_uchar() have forgotten to free the palloc'd output of the latter. I have not looked to see where else the users of that and the reverse function made this mistake. regards, tom lane
Commits
-
Fix memory leakage in ICU encoding conversion, and other code review.
- b6159202c99d 10.0 landed