Avoid query-lifetime memory leaks in XMLTABLE (bug #15321)
Andrew Gierth <rhodiumtoad@postgresql.org>
Avoid query-lifetime memory leaks in XMLTABLE (bug #15321) Multiple calls to XMLTABLE in a query (e.g. laterally applying it to a table with an xml column, an important use-case) were leaking large amounts of memory into the per-query context, blowing up memory usage. Repair by reorganizing memory context usage in nodeTableFuncscan; use the usual per-tuple context for row-by-row evaluations instead of perValueCxt, and use the explicitly created context -- renamed from perValueCxt to perTableCxt -- for arguments and state for each individual table-generation operation. Backpatch to PG10 where this code was introduced. Original report by IRC user begriffs; analysis and patch by me. Reviewed by Tom Lane and Pavel Stehule. Discussion: https://postgr.es/m/153394403528.10284.7530399040974170549@wrigleys.postgresql.org
Files
| Path | Change | +/− |
|---|---|---|
| src/backend/executor/nodeTableFuncscan.c | modified | +24 −5 |
| src/include/nodes/execnodes.h | modified | +1 −1 |
Discussion
- BUG #15321: XMLTABLE leaks memory like crazy 20 messages · 2018-08-10 → 2018-08-13