From 375e7d557974d43e0c059c8894ac976e90333013 Mon Sep 17 00:00:00 2001
From: Tom Lane <tgl@sss.pgh.pa.us>
Date: Mon, 10 Oct 2005 20:02:20 +0000
Subject: [PATCH] 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.

---
 src/backend/commands/dbcommands.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/src/backend/commands/dbcommands.c b/src/backend/commands/dbcommands.c
index 49d3e1d4f5d..548648066b8 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.
 	 */
-- 
GitLab