summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/backend/catalog/dependency.c31
-rw-r--r--src/backend/catalog/pg_shdepend.c6
2 files changed, 26 insertions, 11 deletions
diff --git a/src/backend/catalog/dependency.c b/src/backend/catalog/dependency.c
index 743d91c1a1..60977f310f 100644
--- a/src/backend/catalog/dependency.c
+++ b/src/backend/catalog/dependency.c
@@ -905,6 +905,10 @@ reportDependentObjects(const ObjectAddresses *targetObjects,
objDesc = getObjectDescription(obj);
+ /* 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, or EXTENSION dependency, then it's okay to
@@ -928,23 +932,28 @@ reportDependentObjects(const ObjectAddresses *targetObjects,
{
char *otherDesc = getObjectDescription(&extra->dependee);
- 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 02f5591afa..167b9558ad 100644
--- a/src/backend/catalog/pg_shdepend.c
+++ b/src/backend/catalog/pg_shdepend.c
@@ -1073,6 +1073,12 @@ storeObjectDescription(StringInfo descs,
{
char *objdesc = getObjectDescription(object);
+ /*
+ * 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');