Prevent memory leaks in parseRelOptions().

Tom Lane <tgl@sss.pgh.pa.us>

Commit: a844c29966d7c0cd6a457e9324f175349bb12df0
Author: Tom Lane <tgl@sss.pgh.pa.us>
Date: 2014-08-13T15:35:51Z
Releases: 9.5.0
Prevent memory leaks in parseRelOptions().

parseRelOptions() tended to leak memory in the caller's context.  Most
of the time this doesn't really matter since the caller's context is
at most query-lifespan, and the function won't be invoked very many times.
However, when testing with CLOBBER_CACHE_RECURSIVELY, the same relcache
entry can get rebuilt a *lot* of times in one query, leading to significant
intraquery memory bloat if it has any reloptions.  Noted while
investigating a related report from Tomas Vondra.

In passing, get rid of some Asserts that are redundant with the one
done by deconstruct_array().

As with other patches to avoid leaks in CLOBBER_CACHE testing, it doesn't
really seem worth back-patching this.

Files

PathChange+/−
src/backend/access/common/reloptions.c modified +6 −9