On 2012-12-06 15:08:51 -0300, Alvaro Herrera wrote: > Tom Lane wrote: > > Vlad Arkhipov <arhi...@dc.baikal.ru> writes: > > > In a BEFORE UPDATE trigger I need to know whether the row was previously > > > modified by this transaction. Is it safe to use xmin and txid_current() > > > for this purpose (xmin is 32-bit txid type but txid_current() returns > > > 64-bit bigint).
I wonder if we shouldn't have a function txid_is_current(xid); I could have used that previously to avoid queuing multiple external cache-invalidations if something gets repeatedly updated in the same transaction. And I seem to remember some people here asking this question before on the lists. > > > > > IF OLD.xmin = txid_current() THEN > > > > Comparing to txid_current() mod 2^32 would probably work, > > I think we should be setting the initial epoch to something other than > zero. That way, some quick testing would have revealed this problem > immediately. +1, currently the difference of xid vs bigint is hard to spot. Greetings, Andres Freund -- Andres Freund http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Training & Services -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers