diff --git a/src/backend/catalog/dependency.c b/src/backend/catalog/dependency.c index 9f8eb1a37f..fe9c714257 100644 --- a/src/backend/catalog/dependency.c +++ b/src/backend/catalog/dependency.c @@ -1094,6 +1094,10 @@ reportDependentObjects(const ObjectAddresses *targetObjects, objDesc = getObjectDescription(obj, false); + /* An object being dropped concurrently doesn't need to be reported */ + if (objDesc == NULL) + continue; + /* * If, at any stage of the recursive search, we reached the object via * an AUTO, INTERNAL, PARTITION, or EXTENSION dependency, then it's @@ -1119,23 +1123,28 @@ reportDependentObjects(const ObjectAddresses *targetObjects, char *otherDesc = getObjectDescription(&extra->dependee, false); - if (numReportedClient < MAX_REPORTED_DEPS) + if (otherDesc) { + if (numReportedClient < MAX_REPORTED_DEPS) + { + /* separate entries with a newline */ + if (clientdetail.len != 0) + appendStringInfoChar(&clientdetail, '\n'); + appendStringInfo(&clientdetail, _("%s depends on %s"), + objDesc, otherDesc); + numReportedClient++; + } + else + numNotReportedClient++; /* separate entries with a newline */ - if (clientdetail.len != 0) - appendStringInfoChar(&clientdetail, '\n'); - appendStringInfo(&clientdetail, _("%s depends on %s"), + if (logdetail.len != 0) + appendStringInfoChar(&logdetail, '\n'); + appendStringInfo(&logdetail, _("%s depends on %s"), objDesc, otherDesc); - numReportedClient++; + pfree(otherDesc); } else numNotReportedClient++; - /* separate entries with a newline */ - if (logdetail.len != 0) - appendStringInfoChar(&logdetail, '\n'); - appendStringInfo(&logdetail, _("%s depends on %s"), - objDesc, otherDesc); - pfree(otherDesc); ok = false; } else diff --git a/src/backend/catalog/pg_shdepend.c b/src/backend/catalog/pg_shdepend.c index 8453d8fefd..9ea42f805f 100644 --- a/src/backend/catalog/pg_shdepend.c +++ b/src/backend/catalog/pg_shdepend.c @@ -1234,6 +1234,12 @@ storeObjectDescription(StringInfo descs, { char *objdesc = getObjectDescription(object, false); + /* + * An object being dropped concurrently doesn't need to be reported. + */ + if (objdesc == NULL) + return; + /* separate entries with a newline */ if (descs->len != 0) appendStringInfoChar(descs, '\n');