From: Tom Lane Date: Mon, 6 Jun 2022 15:26:57 +0000 (-0400) Subject: Don't fail on libpq-generated error reports in pg_amcheck. X-Git-Tag: REL_15_BETA2~60 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=51da231597a9e414174cf621b219559e18269dc3;p=thirdparty%2Fpostgresql.git Don't fail on libpq-generated error reports in pg_amcheck. An error PGresult generated by libpq itself, such as a report of connection loss, won't have broken-down error fields. should_processing_continue() blithely assumed that PG_DIAG_SEVERITY_NONLOCALIZED would always be present, and would dump core if it wasn't. Per grepping to see if 6d157e7cb's mistake was repeated elsewhere. --- diff --git a/src/bin/pg_amcheck/pg_amcheck.c b/src/bin/pg_amcheck/pg_amcheck.c index f0b818e987a..3cff319f025 100644 --- a/src/bin/pg_amcheck/pg_amcheck.c +++ b/src/bin/pg_amcheck/pg_amcheck.c @@ -930,6 +930,8 @@ should_processing_continue(PGresult *res) /* This is expected but requires closer scrutiny */ case PGRES_FATAL_ERROR: severity = PQresultErrorField(res, PG_DIAG_SEVERITY_NONLOCALIZED); + if (severity == NULL) + return false; /* libpq failure, probably lost connection */ if (strcmp(severity, "FATAL") == 0) return false; if (strcmp(severity, "PANIC") == 0)