Tom Lane wrote:
Andrew Dunstan <[EMAIL PROTECTED]> writes:
Tom Lane wrote:
A BEFORE UPDATE trigger would be better, and probably hardly more
expensive than a wired-in facility (especially if you were willing to
write it in C).

Yes. I also prefer the trigger idea to a rule because triggers are easy to enable and disable. It's still a lot of work for what must be a common want, though. Could it be done generically?

Well, you could write the trigger in C and it'd work for any table.
I think it could be as simple as a memcmp of the tuples' data areas,
since we now require padding bytes to be 0 ...

                        


Something like this fragment?

 newtuple = trigdata->tg_newtuple;
 oldtuple = trigdata->tg_trigtuple;
 rettuple = newtuple;

 if (newtuple->t_len == oldtuple->t_len &&
     newtuple->t_data->t_hoff == oldtuple->t_data->t_hoff &&
     memcmp(GETSTRUCT(newtuple),GETSTRUCT(oldtuple),
            newtuple->t_len - newtuple->t_data->t_hoff) == 0)
   rettuple = NULL;

 return PointerGetDatum(rettuple);


Also, when did we first require padding bytes to be 0?


cheers

andrew

---------------------------(end of broadcast)---------------------------
TIP 5: don't forget to increase your free space map settings

Reply via email to