Hi,
On 2020-10-02 00:41:12 +0000, Michael Paquier wrote:
> Add block information in error context of WAL REDO apply loop
>
> Providing this information can be useful for example when diagnosing
> problems related to recovery conflicts or for recovery issues without
> having to go through the output generated by pg_waldump to get some
> information about the blocks a WAL record works on.
>
> The block information is printed in the same format as pg_waldump. This
> already existed in xlog.c for debugging purposes with -DWAL_DEBUG, so
> adding the block information in the callback has required just a small
> refactoring.
>
> Author: Bertrand Drouvot
> Reviewed-by: Michael Paquier, Masahiko Sawada
> Discussion: https://postgr.es/m/c31e2cba-efda-762c-f4ad-5c25e5dac3d0@amazon.com
My compiler quite justifiably complains about:
+#endif /* WAL_DEBUG */
+
+/*
+ * Returns a string giving information about all the blocks in an
+ * XLogRecord.
+ */
+static void
+xlog_block_info(StringInfo buf, XLogReaderState *record)
+{
+ int block_id;
+
/* decode block references */
for (block_id = 0; block_id <= record->max_block_id; block_id++)
{
@@ -10284,7 +10298,6 @@ xlog_outrec(StringInfo buf, XLogReaderState *record)
appendStringInfoString(buf, " FPW");
}
}
-#endif /* WAL_DEBUG */
because as far as I can see there's no remaining use of block_id in
xlog_outrec() after this change.
Greetings,
Andres Freund