diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2011-09-16 04:27:56 -0400 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2011-09-16 04:27:56 -0400 |
commit | 57d3dc2035fe8267e877620eddc3823360c7878f (patch) | |
tree | 7cc232bf95d41dff2141ab979020c494e3e1edd3 /src/backend/access/gist/gistscan.c | |
parent | f6950429da2f68de7f7c28db8441625215b40463 (diff) | |
download | postgresql-57d3dc2035fe8267e877620eddc3823360c7878f.tar.gz postgresql-57d3dc2035fe8267e877620eddc3823360c7878f.zip |
gistendscan() forgot to free so->giststate.
This oversight led to a massive memory leak --- upwards of 10KB per tuple
--- during creation-time verification of an exclusion constraint based on a
GIST index. In most other scenarios it'd just be a leak of 10KB that would
be recovered at end of query, so not too significant; though perhaps the
leak would be noticeable in a situation where a GIST index was being used
in a nestloop inner indexscan. In any case, it's a real leak of long
standing, so patch all supported branches. Per report from Harald Fuchs.
Diffstat (limited to 'src/backend/access/gist/gistscan.c')
-rw-r--r-- | src/backend/access/gist/gistscan.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/src/backend/access/gist/gistscan.c b/src/backend/access/gist/gistscan.c index 5662a3a4aab..92405283d02 100644 --- a/src/backend/access/gist/gistscan.c +++ b/src/backend/access/gist/gistscan.c @@ -242,6 +242,7 @@ gistendscan(PG_FUNCTION_ARGS) GISTScanOpaque so = (GISTScanOpaque) scan->opaque; freeGISTstate(so->giststate); + pfree(so->giststate); MemoryContextDelete(so->queueCxt); MemoryContextDelete(so->tempCxt); pfree(so->tmpTreeItem); |