]> git.ipfire.org Git - thirdparty/postgresql.git/commitdiff
Don't fail on libpq-generated error reports in pg_amcheck.
authorTom Lane <tgl@sss.pgh.pa.us>
Mon, 6 Jun 2022 15:26:57 +0000 (11:26 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Mon, 6 Jun 2022 15:26:57 +0000 (11:26 -0400)
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.

src/bin/pg_amcheck/pg_amcheck.c

index b4ce47a2e95f6921e4387e95d2e54963ef14f168..2c86ddae21f2a6bcb3f47256327f957bcfd6731d 100644 (file)
@@ -958,6 +958,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)