From: | Simon Riggs <simon(at)2ndquadrant(dot)com> |
---|---|
To: | PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Predicate Locks for writes? |
Date: | 2017-10-07 11:26:59 |
Message-ID: | CANP8+jJ4LQdWH9T-qTA2J1k8ermuxiPaza7uE9tKvHQeTLtS0w@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
SERIALIZABLE looks for chains of rw cases.
When we perform UPDATEs and DELETEs we search for rows and then modify
them. The current implementation views that as a read followed by a
write because we issue PredicateLockTuple() during the index fetch.
Is it correct that a statement that only changes data will add
predicate locks for the rows that it modifies?
PredicateLockTuple() specifically avoids adding an SIRead lock if the
tuple already has a write lock on it, so surely it must also be
correct to skip the SIRead lock if we are just about to update the
row?
I am suggesting that we ignore PredicateLockTuple() for cases where we
are about to update or delete the found tuple.
ISTM that a Before Row Trigger would need to add an SIRead lock since
that is clearly a read.
Thoughts?
--
Simon Riggs http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
From | Date | Subject | |
---|---|---|---|
Next Message | amul sul | 2017-10-07 11:52:42 | Re: [POC] hash partitioning |
Previous Message | Andreas Seltenreich | 2017-10-07 10:00:00 | Re: parallel worker (PID ) exited with exit code 1 |