Re: freeing bms explicitly
Zhihong Yu <zyu@yugabyte.com>
From: Zhihong Yu <zyu@yugabyte.com>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: akapila@postgresql.org, PostgreSQL Developers <pgsql-hackers@lists.postgresql.org>
Date: 2022-03-21T22:13:18Z
Lists: pgsql-hackers
Attachments
- rfcolumn-free.patch (application/octet-stream) patch
On Mon, Mar 21, 2022 at 3:05 PM Tom Lane <tgl@sss.pgh.pa.us> wrote: > Zhihong Yu <zyu@yugabyte.com> writes: > >> I was looking at calls to bms_free() in PG code. > >> e.g. src/backend/commands/publicationcmds.c line 362 > >> bms_free(bms); > >> The above is just an example, there're other calls to bms_free(). > >> Since the bms is allocated from some execution context, I wonder why > this > >> call is needed. > >> > >> When the underlying execution context wraps up, isn't the bms freed ? > > Yeah, that's kind of pointless --- and the pfree(rfnode) after it is even > more pointless, since it'll free only the top node of that expression > tree. Not to mention the string returned by TextDatumGetCString, and > whatever might be leaked during the underlying catalog accesses. > > If we were actually worried about transient space consumption of this > function, it'd be necessary to do a lot more than this. It doesn't > look to me like it's worth worrying about though -- it doesn't seem > like it could be hit more than once per query in normal cases. > > regards, tom lane > Thanks Tom for replying. What do you think of the following patch ? Cheers
Commits
-
Remove some useless free calls.
- 3e67a5cac6a5 15.0 landed