Don't leak rd_statlist when a relcache entry is dropped.
authorTom Lane
Fri, 19 Mar 2021 00:37:09 +0000 (20:37 -0400)
committerTom Lane
Fri, 19 Mar 2021 00:37:09 +0000 (20:37 -0400)
Although these lists are usually NIL, and even when not empty
are unlikely to be large, constant relcache update traffic could
eventually result in visible bloat of CacheMemoryContext.

Found via valgrind testing.
Back-patch to v10 where this field was added.

Discussion: https://postgr.es/m/3816764.1616104288@sss.pgh.pa.us

src/backend/utils/cache/relcache.c

index 9c9cb6377a5ef8b41f4b2f3815592a72348d8bdb..467d3ce3aa6dcfa45c501501f08b60824f76fa4f 100644 (file)
@@ -2378,6 +2378,7 @@ RelationDestroyRelation(Relation relation, bool remember_tupdesc)
    FreeTriggerDesc(relation->trigdesc);
    list_free_deep(relation->rd_fkeylist);
    list_free(relation->rd_indexlist);
+   list_free(relation->rd_statlist);
    bms_free(relation->rd_indexattr);
    bms_free(relation->rd_keyattr);
    bms_free(relation->rd_pkattr);