diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2016-08-24 22:20:01 -0400 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2016-08-24 22:20:26 -0400 |
commit | 006fb80a569179d3df4932857818925667e8d581 (patch) | |
tree | a958558dce598b9acf21a64895bfdb9b84d2ec39 | |
parent | 1414d490f7eee23bf3544953a47340e9b54fcf29 (diff) | |
download | postgresql-006fb80a569179d3df4932857818925667e8d581.tar.gz postgresql-006fb80a569179d3df4932857818925667e8d581.zip |
Fix small query-lifespan memory leak in bulk updates.
When there is an identifiable REPLICA IDENTITY index on the target table,
heap_update leaks the id_attrs bitmapset. That's not many bytes, but it
adds up over enough rows, since the code typically runs in a query-lifespan
context. Bug introduced in commit e55704d8b, which did a rather poor job
of cloning the existing use-pattern for RelationGetIndexAttrBitmap().
Per bug #14293 from Zhou Digoal. Back-patch to 9.4 where the bug was
introduced.
Report: <20160824114320.15676.45171@wrigleys.postgresql.org>
-rw-r--r-- | src/backend/access/heap/heapam.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/src/backend/access/heap/heapam.c b/src/backend/access/heap/heapam.c index c63dfa0bafc..6a27ef41400 100644 --- a/src/backend/access/heap/heapam.c +++ b/src/backend/access/heap/heapam.c @@ -3802,6 +3802,7 @@ l2: ReleaseBuffer(vmbuffer); bms_free(hot_attrs); bms_free(key_attrs); + bms_free(id_attrs); return result; } @@ -4268,6 +4269,7 @@ l2: bms_free(hot_attrs); bms_free(key_attrs); + bms_free(id_attrs); return HeapTupleMayBeUpdated; } |