diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 7520a98215..be7e4a5dd0 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -3235,6 +3235,12 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
 				initStringInfo(&opfam);
 				getOpFamilyDescription(&opfam, amopForm->amopfamily, false);
 
+				/*
+				 * We use FORMAT_TYPE_ALLOW_INVALID here so as not to fail
+				 * completely if the type links are dangling, which is a form
+				 * of catalog corruption that could occur due to old bugs.
+				 */
+
 				/*------
 				   translator: %d is the operator strategy (a number), the
 				   first two %s's are data type names, the third %s is the
@@ -3242,8 +3248,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
 				   textual form of the operator with arguments.  */
 				appendStringInfo(&buffer, _("operator %d (%s, %s) of %s: %s"),
 								 amopForm->amopstrategy,
-								 format_type_be(amopForm->amoplefttype),
-								 format_type_be(amopForm->amoprighttype),
+								 format_type_extended(amopForm->amoplefttype,
+													  -1, FORMAT_TYPE_ALLOW_INVALID),
+								 format_type_extended(amopForm->amoprighttype,
+													  -1, FORMAT_TYPE_ALLOW_INVALID),
 								 opfam.data,
 								 format_operator(amopForm->amopopr));
 
@@ -3292,6 +3300,12 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
 				initStringInfo(&opfam);
 				getOpFamilyDescription(&opfam, amprocForm->amprocfamily, false);
 
+				/*
+				 * We use FORMAT_TYPE_ALLOW_INVALID here so as not to fail
+				 * completely if the type links are dangling, which is a form
+				 * of catalog corruption that could occur due to old bugs.
+				 */
+
 				/*------
 				   translator: %d is the function number, the first two %s's
 				   are data type names, the third %s is the description of the
@@ -3299,8 +3313,10 @@ getObjectDescription(const ObjectAddress *object, bool missing_ok)
 				   function with arguments.  */
 				appendStringInfo(&buffer, _("function %d (%s, %s) of %s: %s"),
 								 amprocForm->amprocnum,
-								 format_type_be(amprocForm->amproclefttype),
-								 format_type_be(amprocForm->amprocrighttype),
+								 format_type_extended(amprocForm->amproclefttype,
+													  -1, FORMAT_TYPE_ALLOW_INVALID),
+								 format_type_extended(amprocForm->amprocrighttype,
+													  -1, FORMAT_TYPE_ALLOW_INVALID),
 								 opfam.data,
 								 format_procedure(amprocForm->amproc));
 
