pgsql: Rethink the locking mechanisms used for CREATE/DROP/RENAME

From: tgl(at)postgresql(dot)org (Tom Lane)
To: pgsql-committers(at)postgresql(dot)org
Subject: pgsql: Rethink the locking mechanisms used for CREATE/DROP/RENAME
Date: 2006-05-04 16:07:29
Message-ID: 20060504160729.7E6379FA65C@postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

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)

Browse pgsql-committers by date

  From Date Subject
Next Message Tom Lane 2006-05-04 18:51:36 pgsql: Simplify relcache startup sequence.
Previous Message User Fxjr 2006-05-04 14:21:21 npgsql - Npgsql: 2006-05-04 Francisco Figueiredo Jr.