aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/backend/catalog/objectaddress.c24
1 files changed, 20 insertions, 4 deletions
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 7520a982151..be7e4a5dd01 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));