I wrote: > ... Can we get rid of the unsafe > access easily? Oh, shoulda read your second patch first. Looking at that, I fear it might not be quite that simple, because the comment on CheckAndSetLockHeld says very clearly
* It is callers responsibility that this function is called after * acquiring/releasing the relation extension/page lock. so your proposed patch violates that specification. I'm inclined to think that this API spec is very poorly thought out and should be changed --- why is it that the flags should change *after* the lock change in both directions? But we'd have to take a look at the usage of these flags to understand what's going on exactly. regards, tom lane