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 &mdash; 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]