v1-0001-Check-more-invariants-during-syscache-initializat.patch
application/octet-stream
Filename: v1-0001-Check-more-invariants-during-syscache-initializat.patch
Type: application/octet-stream
Part: 0
Patch
Format: format-patch
Series: patch v1-0001
Subject: Check more invariants during syscache initialization
| File | + | − |
|---|---|---|
| src/backend/utils/cache/catcache.c | 3 | 0 |
| src/backend/utils/cache/syscache.c | 4 | 1 |
From d005b07a50853812d6cb1f1cbd877c0153235bc0 Mon Sep 17 00:00:00 2001
From: Aleksander Alekseev <aleksander@timescale.com>
Date: Mon, 24 Jul 2023 18:17:58 +0300
Subject: [PATCH v1] Check more invariants during syscache initialization
Prior to this commit InitCatalogCache() had only one Assert for cacheinfo[]
that checks .reloid. Add sanity checks for the rest of the fields.
Aleksander Alekseev, reviewed by TODO FIXME
Discussion: TODO FIXME
---
src/backend/utils/cache/catcache.c | 3 +++
src/backend/utils/cache/syscache.c | 5 ++++-
2 files changed, 7 insertions(+), 1 deletion(-)
diff --git a/src/backend/utils/cache/catcache.c b/src/backend/utils/cache/catcache.c
index 4510031fe6..ef1aff62c9 100644
--- a/src/backend/utils/cache/catcache.c
+++ b/src/backend/utils/cache/catcache.c
@@ -825,7 +825,10 @@ InitCatCache(int id,
cp->cc_nbuckets = nbuckets;
cp->cc_nkeys = nkeys;
for (i = 0; i < nkeys; ++i)
+ {
+ Assert(key[i] != InvalidAttrNumber);
cp->cc_keyno[i] = key[i];
+ }
/*
* new cache is initialized as far as we can go for now. print some
diff --git a/src/backend/utils/cache/syscache.c b/src/backend/utils/cache/syscache.c
index 4e4a34bde8..4883f36a67 100644
--- a/src/backend/utils/cache/syscache.c
+++ b/src/backend/utils/cache/syscache.c
@@ -720,7 +720,10 @@ InitCatalogCache(void)
* Assert that every enumeration value defined in syscache.h has been
* populated in the cacheinfo array.
*/
- Assert(cacheinfo[cacheId].reloid != 0);
+ Assert(cacheinfo[cacheId].reloid != InvalidOid);
+ Assert(cacheinfo[cacheId].indoid != InvalidOid);
+ Assert((cacheinfo[cacheId].nkeys > 0) && (cacheinfo[cacheId].nkeys <= 4));
+ /* .nbuckets and .key[] are checked by InitCatCache() */
SysCache[cacheId] = InitCatCache(cacheId,
cacheinfo[cacheId].reloid,
--
2.41.0