Re: How to check whether the row was modified by this transaction before?
От | Andres Freund |
---|---|
Тема | Re: How to check whether the row was modified by this transaction before? |
Дата | |
Msg-id | 20121206183937.GB20926@awork2.anarazel.de обсуждение исходный текст |
Ответ на | Re: How to check whether the row was modified by this transaction before? (Alvaro Herrera <alvherre@2ndquadrant.com>) |
Ответы |
Re: How to check whether the row was modified by this transaction before?
|
Список | pgsql-hackers |
On 2012-12-06 15:08:51 -0300, Alvaro Herrera wrote: > Tom Lane wrote: > > Vlad Arkhipov <arhipov@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
В списке pgsql-hackers по дате отправления: