Re: minimal update
| От | Andrew Dunstan |
|---|---|
| Тема | Re: minimal update |
| Дата | |
| Msg-id | 4775A22E.6090306@dunslane.net обсуждение исходный текст |
| Ответ на | Re: minimal update (Tom Lane <tgl@sss.pgh.pa.us>) |
| Ответы |
Re: minimal update
|
| Список | pgsql-hackers |
Tom Lane wrote:
> Andrew Dunstan <andrew@dunslane.net> writes:
>
>> How does this look?
>>
>
>
>> if (newtuple->t_len == oldtuple->t_len &&
>> newtuple->t_data->t_hoff == oldtuple->t_data->t_hoff &&
>> HeapTupleHeaderGetNatts(newtuple) == HeapTupleHeaderGetNatts(oldtuple) &&
>> (newtuple->t_data->t_infomask & (HEAP_HASOID|HEAP_HASNULL)) == (oldtuple->t_data->t_infomask &
(HEAP_HASOID|HEAP_HASNULL))&&
>> memcmp(newtuple->t_data + offsetof(HeapTupleHeaderData, t_bits),
>> oldtuple->t_data + offsetof(HeapTupleHeaderData, t_bits)
>> newtuple->t_len - offsetof(HeapTupleHeaderData, t_bits)) == 0)
>>
>
>
>> rettuple = NULL;
>>
>
> Looks sane. It might be even saner if you compare all of the
> non-visibility-related infomask bits, viz
>
> (newtuple->t_data->t_infomask & ~HEAP_XACT_MASK) ==
> (oldtuple->t_data->t_infomask & ~HEAP_XACT_MASK)
>
> rather than just HASOID and HASNULL.
>
>
>
Sadly, the memcmp is failing on my test ("update foo set bar = bar") on
8.2. Looks like I'm in for weekend with my fave debugger :-(
cheers
andrew
В списке pgsql-hackers по дате отправления: