Re: "type with xxxx does not exist" when doing ExecMemoize()
Tender Wang <tndrwang@gmail.com>
From: Tender Wang <tndrwang@gmail.com>
To: Andrei Lepikhov <a.lepikhov@postgrespro.ru>
Cc: pgsql-bugs@lists.postgresql.org
Date: 2024-02-26T08:14:39Z
Lists: pgsql-bugs, pgsql-hackers
Andrei Lepikhov <a.lepikhov@postgrespro.ru> 于2024年2月26日周一 10:57写道: > On 25/2/2024 20:32, Tender Wang wrote: > > I think in prepare_probe_slot(), should called datumCopy as the attached > > patch does. > > > > Any thoughts? Thanks. > Thanks for the report. > I think it is better to invent a Runtime Memory Context; likewise, it is > already designed in IndexScan and derivatives. Here, you just allocate > the value in some upper memory context. > > Also, I'm curious why such a trivial error hasn't been found for a long > time > I analyze this issue again. I found that the forms of qual in Memoize.sql(regress) are all like this: table1.c0 OP table2.c0 If table2.c0 is the param value, the probeslot->tts_values[i] just store the pointer. The memorycontext of this pointer is ExecutorContext not ExprContext, Reset ExprContext doesn't change the data of probeslot->tts_values[i]. So such a trivial error hasn't been found before. -- > regards, > Andrei Lepikhov > Postgres Professional > > -- Tender Wang OpenPie: https://en.openpie.com/
Commits
-
Fix incorrect accessing of pfree'd memory in Memoize
- 72b8507db2cc 14.12 landed
- 74530804fcb7 15.7 landed
- 348233cb128d 16.3 landed
- e62984647225 17.0 landed
-
Fix memory leak in Memoize code
- 0b053e78b599 17.0 cited