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].