postgres.git / summary / log / commit / refs
commit d6c1dc176a422ed19d698bb8ff9ed7b38c04a320
Author: Simon Riggs <simon@2ndQuadrant.com>
Date: Tue Feb 01 08:49:58 2011 +0000
Create new errcode for recovery conflict caused by db drop on master.
Previously reported as ERRCODE_ADMIN_SHUTDOWN, this case is now
reported as ERRCODE_DATABASE_DROPPED. No message text change.
Unlikely to happen on most servers, so low impact change to allow
session poolers to correctly handle this situation.
Tatsuo Ishii and Simon Riggs
doc/src/sgml/errcodes.sgml | 6 ++++++
src/backend/tcop/postgres.c | 2 +-
src/include/utils/errcodes.h | 1 +
src/pl/plpgsql/src/plerrcodes.h | 4 ++++
4 files changed, 12 insertions(+), 1 deletion(-)
diff --git a/doc/src/sgml/errcodes.sgml b/doc/src/sgml/errcodes.sgml
index b5962f98cd0..c0526707773 100644
--- a/doc/src/sgml/errcodes.sgml
+++ b/doc/src/sgml/errcodes.sgml
@@ -1369,6 +1369,12 @@
<entry>cannot_connect_now</entry>
</row>
+<row>
+<entry><literal>57P04</literal></entry>
+<entry>DATABASE DROPPED</entry>
+<entry>database_dropped</entry>
+</row>
+
<row>
<entry spanname="span13"><emphasis role="bold">Class 58 — System Error (errors external to <productname>PostgreSQL</> itself)</></entry>
diff --git a/src/backend/tcop/postgres.c b/src/backend/tcop/postgres.c
index 08369df2d14..34705750398 100644
--- a/src/backend/tcop/postgres.c
+++ b/src/backend/tcop/postgres.c
@@ -2908,7 +2908,7 @@ ProcessInterrupts(void)
errdetail_recovery_conflict()));
else if (RecoveryConflictPending)
ereport(FATAL,
- (errcode(ERRCODE_ADMIN_SHUTDOWN),
+ (errcode(ERRCODE_DATABASE_DROPPED),
errmsg("terminating connection due to conflict with recovery"),
errdetail_recovery_conflict()));
else
diff --git a/src/include/utils/errcodes.h b/src/include/utils/errcodes.h
index f7be2611f86..be13920530a 100644
--- a/src/include/utils/errcodes.h
+++ b/src/include/utils/errcodes.h
@@ -332,6 +332,7 @@
#define ERRCODE_ADMIN_SHUTDOWN MAKE_SQLSTATE('5','7', 'P','0','1')
#define ERRCODE_CRASH_SHUTDOWN MAKE_SQLSTATE('5','7', 'P','0','2')
#define ERRCODE_CANNOT_CONNECT_NOW MAKE_SQLSTATE('5','7', 'P','0','3')
+#define ERRCODE_DATABASE_DROPPED MAKE_SQLSTATE('5','7', 'P','0','4')
/* Class 58 - System Error (class borrowed from DB2) */
/* (we define this as errors external to PostgreSQL itself) */
diff --git a/src/pl/plpgsql/src/plerrcodes.h b/src/pl/plpgsql/src/plerrcodes.h
index 99008be9bf2..dcaf006f3e8 100644
--- a/src/pl/plpgsql/src/plerrcodes.h
+++ b/src/pl/plpgsql/src/plerrcodes.h
@@ -735,6 +735,10 @@
"cannot_connect_now", ERRCODE_CANNOT_CONNECT_NOW
},
+{
+ "database_dropped", ERRCODE_DATABASE_DROPPED
+},
+
{
"io_error", ERRCODE_IO_ERROR
},
[parent: 9a012852897f]