aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2016-04-15 00:02:26 -0400
committerTom Lane <tgl@sss.pgh.pa.us>2016-04-15 00:02:26 -0400
commit0479eccdcf0db59336aa45c6501666cd9f590b6a (patch)
tree706a3a8cda5c1850bedfc34e25299054b618bf4e /src
parent00456911f43ab3def50b70813aea645e979e1687 (diff)
downloadpostgresql-0479eccdcf0db59336aa45c6501666cd9f590b6a.tar.gz
postgresql-0479eccdcf0db59336aa45c6501666cd9f590b6a.zip
Fix memory leak in GIN index scans.
The code had a query-lifespan memory leak when encountering GIN entries that have posting lists (rather than posting trees, ie, there are a relatively small number of heap tuples containing this index key value). With a suitable data distribution this could add up to a lot of leakage. Problem seems to have been introduced by commit 36a35c550, so back-patch to 9.4. Julien Rouhaud
Diffstat (limited to 'src')
-rw-r--r--src/backend/access/gin/ginget.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/src/backend/access/gin/ginget.c b/src/backend/access/gin/ginget.c
index 96c1cb971e4..bde5d2bd163 100644
--- a/src/backend/access/gin/ginget.c
+++ b/src/backend/access/gin/ginget.c
@@ -278,6 +278,7 @@ collectMatchBitmap(GinBtreeData *btree, GinBtreeStack *stack,
ipd = ginReadTuple(btree->ginstate, scanEntry->attnum, itup, &nipd);
tbm_add_tuples(scanEntry->matchBitmap, ipd, nipd, false);
scanEntry->predictNumberResult += GinGetNPosting(itup);
+ pfree(ipd);
}
/*