pg_upgrade: Upgrade an Assert to a real 'if' test
authorAlvaro Herrera <[email protected]>
Wed, 23 Mar 2022 18:23:51 +0000 (19:23 +0100)
committerAlvaro Herrera <[email protected]>
Wed, 23 Mar 2022 18:23:51 +0000 (19:23 +0100)
It seems possible for the condition being tested to be true in
production, and nobody would never know (except when some data
eventually becomes corrupt?).

Author: Álvaro Herrera <[email protected]>
Discussion: https://postgr.es/m//202109040001[email protected]

src/bin/pg_rewind/parsexlog.c

index 85dd32c56818848ebd913acdf21f7eb63884232e..6f6f7a43b3cf2530b9b338e4531efc51d38ea7bc 100644 (file)
@@ -105,7 +105,11 @@ extractPageMap(const char *datadir, XLogRecPtr startpoint, int tliIndex,
     * If 'endpoint' didn't point exactly at a record boundary, the caller
     * messed up.
     */
-   Assert(xlogreader->EndRecPtr == endpoint);
+   if (xlogreader->EndRecPtr != endpoint)
+       pg_fatal("end pointer %X/%X is not a valid end point; expected %X/%X",
+                (uint32) (endpoint >> 32), (uint32) (endpoint),
+                (uint32) (xlogreader->EndRecPtr >> 32), (uint32)
+                (xlogreader->EndRecPtr));
 
    XLogReaderFree(xlogreader);
    if (xlogreadfd != -1)