Re: Extending amcheck to check toast size and compression
Mark Dilger <mark.dilger@enterprisedb.com>
From: Mark Dilger <mark.dilger@enterprisedb.com>
To: Greg Stark <stark@mit.edu>
Cc: Heikki Linnakangas <hlinnaka@iki.fi>,
Aleksander Alekseev <aleksander@timescale.com>,
PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2021-10-20T19:06:01Z
Lists: pgsql-hackers
> On Oct 20, 2021, at 11:42 AM, Greg Stark <stark@mit.edu> wrote:
>
>
>
> On Wed., Oct. 20, 2021, 12:41 Mark Dilger, <mark.dilger@enterprisedb.com> wrote:
>
> I used a switch statement to trigger a compiler warning in such an event.
>
> Catching better compiler diagnostics is an excellent reason to choose this structure. I guess all I could ask is that the comment saying no default branch say this is the motivation.
Ok. How about:
diff --git a/contrib/amcheck/verify_heapam.c b/contrib/amcheck/verify_heapam.c
index 774a70f63d..9500f43bc9 100644
--- a/contrib/amcheck/verify_heapam.c
+++ b/contrib/amcheck/verify_heapam.c
@@ -30,7 +30,11 @@ PG_FUNCTION_INFO_V1(verify_heapam);
/* The number of columns in tuples returned by verify_heapam */
#define HEAPCHECK_RELATION_COLS 4
-/* The largest valid toast va_rawsize */
+/*
+ * The largest valid toast va_rawsize. This is the same as the MaxAllocSize
+ * constant from memutils.h, and is the largest size that can fit in a varlena
+ * va_header's 30-bit size field.
+ */
#define VARLENA_SIZE_LIMIT 0x3FFFFFFF
/*
@@ -1452,7 +1456,11 @@ check_tuple_attribute(HeapCheckContext *ctx)
case TOAST_INVALID_COMPRESSION_ID:
break;
- /* Intentionally no default here */
+ /*
+ * Intentionally no default here. We want the compiler to warn if
+ * new compression methods are added to the ToastCompressionId enum
+ * but not handled in our switch.
+ */
}
if (!valid)
report_corruption(ctx,
—
Mark Dilger
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company
Commits
-
Remove tests added by bd807be6935929bdefe74d1258ca08048f0aafa3.
- ccf289745d3e 15.0 landed
-
amcheck: Add additional TOAST pointer checks.
- bd807be69359 15.0 landed