Re: BUG #17798: Incorrect memory access occurs when using BEFORE ROW UPDATE trigger

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Robert Haas <robertmhaas(at)gmail(dot)com>
Cc: Alexander Lakhin <exclusion(at)gmail(dot)com>, pgsql-bugs(at)lists(dot)postgresql(dot)org, Richard Guo <guofenglinux(at)gmail(dot)com>, Andres Freund <andres(at)anarazel(dot)de>, Peter Geoghegan <pg(at)bowt(dot)ie>
Subject: Re: BUG #17798: Incorrect memory access occurs when using BEFORE ROW UPDATE trigger
Date: 2024-01-11 21:43:16
Message-ID: 325298.1705009396@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

Robert Haas <robertmhaas(at)gmail(dot)com> writes:
> On Wed, Jan 10, 2024 at 10:00 PM Alexander Lakhin <exclusion(at)gmail(dot)com> wrote:
>> I was discouraged by that vast distance and implicit buffer usage too, but
>> I found no other feasible way to fix it. On the other hand, 75e03eabe and
>> Andres's words upthread made me believe that it's an acceptable solution.

> I agree that it's potentially acceptable. I just wonder if Tom or
> someone else is going to want to propose a bigger change to avoid some
> of this messiness. I don't know what that would look like, though.

I'm still feeling itchy about it. Maybe the problem could be fixed
better if we didn't re-use slots with such abandon in this code,
but I don't have a concrete proposal. Also, that'd likely be a
nontrivial rewrite bringing its own possibilities of adding bugs.

Some concrete thoughts:

* Maybe better to Assert(newslot == epqslot_clean) instead of
what you did here? Not sure.

* Why is the ExecMaterializeSlot step needed if we don't have
an epqslot_candidate?

regards, tom lane

In response to

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message PG Bug reporting form 2024-01-11 22:44:37 BUG #18285: pgdg.list doesn't work
Previous Message Tom Lane 2024-01-11 17:30:39 Re: BUG #18284: Filter in left lateral join not respected