From: Tom Lane Date: Mon, 10 Oct 2005 20:02:20 +0000 (+0000) Subject: Use a safer order of operations in dropdb(): rollbackable operations, X-Git-Tag: REL8_1_0BETA3~9 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=375e7d557974d43e0c059c8894ac976e90333013;p=postgresql Use a safer order of operations in dropdb(): rollbackable operations, ie removing shared-dependency entries, should happen before non-rollbackable ones. That way a failure during the rollbackable part doesn't leave us with inconsistent state. --- diff --git a/src/backend/commands/dbcommands.c b/src/backend/commands/dbcommands.c index 49d3e1d4f5..548648066b 100644 --- a/src/backend/commands/dbcommands.c +++ b/src/backend/commands/dbcommands.c @@ -15,7 +15,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/commands/dbcommands.c,v 1.171 2005/08/22 17:38:20 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/commands/dbcommands.c,v 1.172 2005/10/10 20:02:20 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -646,6 +646,11 @@ dropdb(const char *dbname) */ DeleteComments(db_id, DatabaseRelationId, 0); + /* + * Remove shared dependency references for the database. + */ + dropDatabaseDependencies(db_id); + /* * Drop pages for this database that are in the shared buffer cache. * This is important to ensure that no remaining backend tries to @@ -674,11 +679,6 @@ dropdb(const char *dbname) /* Close pg_database, but keep exclusive lock till commit */ heap_close(pgdbrel, NoLock); - /* - * Remove shared dependency references for the database. - */ - dropDatabaseDependencies(db_id); - /* * Set flag to update flat database file at commit. */