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 по дате отправления: