Heikki Linnakangas <heikki.linnakangas@enterprisedb.com> wrote:
> On 20.04.2011 17:26, Tom Lane wrote:
>> Why is predicate.c getting called at all when
>> transaction_isolation is not SERIALIZABLE? (Although the same
>> crash happens when it is ...)
>
> Because another serializable transaction that reads/updates the
> tuple later needs to find the predicate lock acquired by the
> first transaction, even if the transaction in the middle isn't
> serializable.
For an example of the issue, see this post:
http://archives.postgresql.org/pgsql-hackers/2011-02/msg00325.php
While all transactions there are serializable, the issue exists even
if the transaction which updates the tuple with the predicate lock
isn't serializable.
-Kevin