Re: BUG #16644: null value for defaults in OLD variable for trigger

Поиск
Список
Период
Сортировка
От Tom Lane
Тема Re: BUG #16644: null value for defaults in OLD variable for trigger
Дата
Msg-id 207142.1603468329@sss.pgh.pa.us
обсуждение исходный текст
Ответ на Re: BUG #16644: null value for defaults in OLD variable for trigger  (Amit Langote <amitlangote09@gmail.com>)
Ответы Re: BUG #16644: null value for defaults in OLD variable for trigger  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-bugs
Amit Langote <amitlangote09@gmail.com> writes:
> On Wed, Sep 30, 2020 at 11:21 AM Tom Lane <tgl@sss.pgh.pa.us> wrote:
>> I've not tried to find where is the difference between 11 and
>> 12 that makes it fail or not fail.

> In v11, GetTupleForTrigger() expands the HeapTuple, with this:

>     /*
>      * While this is not necessary anymore after 297d627e, as a defense
>      * against C code that has not recompiled for minor releases after the
>      * fix, continue to expand the tuple.
>      */
>     if (HeapTupleHeaderGetNatts(tuple.t_data) < relation->rd_att->natts)
>         result = heap_expand_tuple(&tuple, relation->rd_att);
>     else
>         result = heap_copytuple(&tuple);
>     ReleaseBuffer(buffer);

Ah, good sleuthing.

>> I think we can band-aid this immediate problem by forcing
>> trigger.c to materialize the "old" tuples it fetches from disk
>> (or whatever needs to be done to substitute missing values into
>> them).

> Maybe something like the attached?

Probably needs some attention to memory management (e.g.,
should_free_trig) but I'm okay with doing this as a short-term
fix.  I remain worried about similar instances elsewhere, but
I have no good ideas about how to find them.

            regards, tom lane



В списке pgsql-bugs по дате отправления:

Предыдущее
От: Amit Langote
Дата:
Сообщение: Re: BUG #16644: null value for defaults in OLD variable for trigger
Следующее
От: Andrey Furs
Дата:
Сообщение: ADD TO UPDATE LIMIT