<entry>deadlock_detected</entry>
 </row>
 
+<row>
+<entry><literal>40P02</literal></entry>
+<entry>DATABASE DROPPED</entry>
+<entry>database_dropped</entry>
+</row>
 
 <row>
 <entry spanname="span13"><emphasis role="bold">Class 42 — Syntax Error or Access Rule Violation</></entry>
 
        }
        else if (RecoveryConflictPending)
        {
+           /* Currently there is only one non-retryable recovery conflict */
+           Assert(RecoveryConflictReason == PROCSIG_RECOVERY_CONFLICT_DATABASE);
            pgstat_report_recovery_conflict(RecoveryConflictReason);
            ereport(FATAL,
-                   (errcode(ERRCODE_ADMIN_SHUTDOWN),
+                   (errcode(ERRCODE_T_R_DATABASE_DROPPED),
              errmsg("terminating connection due to conflict with recovery"),
                     errdetail_recovery_conflict()));
        }
 
 #define ERRCODE_T_R_SERIALIZATION_FAILURE  MAKE_SQLSTATE('4','0', '0','0','1')
 #define ERRCODE_T_R_STATEMENT_COMPLETION_UNKNOWN   MAKE_SQLSTATE('4','0', '0','0','3')
 #define ERRCODE_T_R_DEADLOCK_DETECTED      MAKE_SQLSTATE('4','0', 'P','0','1')
+#define ERRCODE_T_R_DATABASE_DROPPED       MAKE_SQLSTATE('4','0', 'P','0','2')
 
 /* Class 42 - Syntax Error or Access Rule Violation */
 #define ERRCODE_SYNTAX_ERROR_OR_ACCESS_RULE_VIOLATION      MAKE_SQLSTATE('4','2', '0','0','0')
 
    "deadlock_detected", ERRCODE_T_R_DEADLOCK_DETECTED
 },
 
+{
+   "database_dropped", ERRCODE_T_R_DATABASE_DROPPED
+},
+
 {
    "syntax_error_or_access_rule_violation", ERRCODE_SYNTAX_ERROR_OR_ACCESS_RULE_VIOLATION
 },