Re: FOR SHARE vs FOR UPDATE locks
Heikki Linnakangas <heikki@enterprisedb.com>
From: "Heikki Linnakangas" <heikki@enterprisedb.com>
To: "Tom Lane" <tgl@sss.pgh.pa.us>
Cc: "Alvaro Herrera" <alvherre@commandprompt.com>, "Simon Riggs" <simon@2ndquadrant.com>, <pgsql-hackers@postgreSQL.org>
Date: 2006-12-01T16:55:56Z
Lists: pgsql-hackers, pgsql-docs
Tom Lane wrote: > Alvaro Herrera <alvherre@commandprompt.com> writes: >> I'm not sure we can use the simple "raise an ERROR" answer though, >> because for users that would be a regression. > > I've reconsidered the idea of upgrading the outer xact's shared lock to > exclusive: at first I thought that would be hard to implement correctly, > but now I realize it's easy. Just re-use the XID that's in the multixact > as the one to store as the exclusive locker, instead of storing our > current subxact XID. In some cases this will be a subcommitted XID of > the current subxact or a parent, but the locking semantics are the same, > and even though we think such an XID is finished everyone else will see > it as still live so the appearance of its XID in an XMAX field shouldn't > be an issue. That way, the lock won't be downgraded back to a shared lock on "rollback to savepoint", right? Though it's still better than throwing an error, I think. -- Heikki Linnakangas EnterpriseDB http://www.enterprisedb.com