Richard Huxton wrote:
> Can we not wait to cancel the transaction until *any* new lock is
> attempted though? That should protect all the single-statement
> long-running transactions that are already underway. Aggregates etc.
Hmm, that's an interesting thought. You'll still need to somehow tell
the victim backend "you have to fail if you try to acquire any more
locks", but a single per-backend flag in the procarray would suffice.
You could also clear the flag whenever you free the last snapshot in the
transaction (ie. between each query in read committed mode).
--
Heikki Linnakangas
EnterpriseDB http://www.enterprisedb.com