Re: Reference Leak with type
Tom Lane <tgl@sss.pgh.pa.us>
From: Tom Lane <tgl@sss.pgh.pa.us>
To: Michael Paquier <michael@paquier.xyz>
Cc: Rohit Bhogate <rohit.bhogate@enterprisedb.com>,
pgsql-hackers@postgresql.org
Date: 2021-04-09T17:30:47Z
Lists: pgsql-hackers
Michael Paquier <michael@paquier.xyz> writes: > On Tue, Apr 06, 2021 at 11:09:13AM +0530, Rohit Bhogate wrote: >> I found the below reference leak on master. > Thanks for the report. This is indeed a new problem as of HEAD, Just for the record, it's not new. The issue is (I think) that the tupledesc refcount created by get_cached_rowtype is being logged in the wrong ResourceOwner. Other cases that use get_cached_rowtype, such as IS NOT NULL on a composite value, reproduce the same type of failure back to v11: create type float_rec_typ as (i float8); do $$ declare f float_rec_typ := row(42); r bool; begin r := f is not null; commit; end $$; WARNING: TupleDesc reference leak: TupleDesc 0x7f5f549809d8 (53719,-1) still referenced ERROR: tupdesc reference 0x7f5f549809d8 is not owned by resource owner TopTransaction Still poking at a suitable fix. regards, tom lane
Commits
-
Redesign the caching done by get_cached_rowtype().
- c2db458c1036 14.0 landed
- 97b7ad468884 13.3 landed
- 6530df6c294c 12.7 landed
- 22f2a98cf3ed 11.12 landed