回复:BUG #19040: Memory leak in hashed subplan node due to missing hashtempcxt reset - Mailing list pgsql-bugs

From 李海洋(陌痕)
Subject 回复:BUG #19040: Memory leak in hashed subplan node due to missing hashtempcxt reset
Date
Msg-id 68ba6c1d-40a8-4aa5-aec1-f0421455bcf5.mohen.lhy@alibaba-inc.com
Whole thread Raw
In response to Re: BUG #19040: Memory leak in hashed subplan node due to missing hashtempcxt reset  (Tom Lane <tgl@sss.pgh.pa.us>)
Responses Re: 回复:BUG #19040: Memory leak in hashed subplan node due to missing hashtempcxt reset
List pgsql-bugs
On 2025-09-09 03:05:09 Tom Lane <tgl@sss.pgh.pa.us> wrote:

> feichanghong <feichanghong@qq.com> writes:
> > For v04-0002, I checked the commit history, and before commit 133924e1,
> > buildSubPlanHash was using ecxt_per_tuple_memory. It seems that the
> > "Subplan HashTable Temp Context" was introduced in order to fix a certain bug.

> It was a different ExprContext's ecxt_per_tuple_memory, though.
> This one is owned locally by the TupleHashTable.

I checked buildSubPlanHash in nodeSubplan.c before commit 133924e1.  AFAICS, the tempcxts
are both referenced innerecontext->ecxt_per_tuple_memory in v04-0002 and before commit
133924e1. They are same. 

However,  the changed behavior of TupleHashTableMatch introduced by commit
bf6c614a (noted in [1]) may make the condition
```
However, the hashtable routines feel free to reset their temp context at any time, 
which'd lead to destroying input data that was still needed.
```
no longer holds true.  Then,  the lifespan of tempcxt in buildHashtable is similar
to that of innercontext->ecxt_per_tuple_memory, so it makes sense to merge the two,
I think.

BTW, I ran the test case supported in commit 133924e1 on version not contained commit
133924e1 (tag REL8_0_26). I did not find any problems. But i can not find more information
about this issue. 

Just to be safe, I think we should verify this issue.



— 
Thanks 
Haiyang Li

pgsql-bugs by date:

Previous
From: Tom Lane
Date:
Subject: Re: BUG #19040: Memory leak in hashed subplan node due to missing hashtempcxt reset
Next
From: Wolfgang Walther
Date:
Subject: PostgreSQL fails to start inside Nix' darwin sandbox