Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Fix memory leak in GIN index scans.
authorTom Lane <tgl@sss.pgh.pa.us>
Fri, 15 Apr 2016 04:02:26 +0000 (00:02 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Fri, 15 Apr 2016 04:02:26 +0000 (00:02 -0400)
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

src/backend/access/gin/ginget.c

index 96c1cb971e4c50203b4001a8b3a0f8f1e09ee950..bde5d2bd163872b8a5ae4c811083a4368401283f 100644 (file)
@@ -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);
        }
 
        /*