While taking a look at the existing documentation for pg_locks I came
across the following paragraph:
<para> When the <structname>pg_locks</structname> view is accessed, the internal lock manager data structures are
momentarilylocked, and a copy is made for the view to display. This ensures that the view produces a consistent set
ofresults, while not blocking normal lock manager operations longer than necessary. Nonetheless there could be some
impacton database performance if this view is frequently accessed. </para>
AFAICS, this is no longer quite true. The view of the data from the
main lock manager will be self-consistent, and the view of the data
from the predicate lock manager will be self-consistent, but they need
not be consistent with each other. I don't think that's a problem we
need to fix, but we probably ought to make the documentation match the
behavior.
--
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company