Thread: pgsql: Rethink the locking mechanisms used for CREATE/DROP/RENAME
pgsql: Rethink the locking mechanisms used for CREATE/DROP/RENAME
From
tgl@postgresql.org (Tom Lane)
Date:
Log Message: ----------- Rethink the locking mechanisms used for CREATE/DROP/RENAME DATABASE. The former approach used ExclusiveLock on pg_database, which being a cluster-wide lock meant only one of these operations could proceed at a time; worse, it also blocked all incoming connections in ReverifyMyDatabase. Now that we have LockSharedObject(), we can use locks of different types applied to databases considered as objects. This allows much more flexible management of the interlocking: two CREATE DATABASEs need not block each other, and need not block connections except to the template database being used. Similarly DROP DATABASE doesn't block unrelated operations. The locking used in flatfiles.c is also much narrower in scope than before. Per recent proposal. Modified Files: -------------- pgsql/doc/src/sgml: manage-ag.sgml (r2.45 -> r2.46) (http://developer.postgresql.org/cvsweb.cgi/pgsql/doc/src/sgml/manage-ag.sgml.diff?r1=2.45&r2=2.46) pgsql/doc/src/sgml/ref: create_database.sgml (r1.44 -> r1.45) (http://developer.postgresql.org/cvsweb.cgi/pgsql/doc/src/sgml/ref/create_database.sgml.diff?r1=1.44&r2=1.45) drop_database.sgml (r1.21 -> r1.22) (http://developer.postgresql.org/cvsweb.cgi/pgsql/doc/src/sgml/ref/drop_database.sgml.diff?r1=1.21&r2=1.22) pgsql/src/backend/catalog: pg_shdepend.c (r1.8 -> r1.9) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/catalog/pg_shdepend.c.diff?r1=1.8&r2=1.9) pgsql/src/backend/commands: dbcommands.c (r1.180 -> r1.181) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/commands/dbcommands.c.diff?r1=1.180&r2=1.181) user.c (r1.170 -> r1.171) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/commands/user.c.diff?r1=1.170&r2=1.171) pgsql/src/backend/storage/lmgr: lmgr.c (r1.82 -> r1.83) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/storage/lmgr/lmgr.c.diff?r1=1.82&r2=1.83) pgsql/src/backend/utils/init: flatfiles.c (r1.17 -> r1.18) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/utils/init/flatfiles.c.diff?r1=1.17&r2=1.18) postinit.c (r1.165 -> r1.166) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/utils/init/postinit.c.diff?r1=1.165&r2=1.166)