Andrew Dunstan <[EMAIL PROTECTED]> 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. regards, tom lane ---------------------------(end of broadcast)--------------------------- TIP 6: explain analyze is your friend