v1-0001-tweak-SharedInvalSmgrMsg.patch

application/octet-stream

Filename: v1-0001-tweak-SharedInvalSmgrMsg.patch
Type: application/octet-stream
Part: 0
Message: Re: longfin and tamandua aren't too happy but I'm not sure why

Patch

Format: format-patch
Series: patch v1-0001
Subject: tweak SharedInvalSmgrMsg
File+
src/backend/utils/cache/inval.c 7 2
src/include/storage/sinval.h 5 2
From 97aa5aa952201b5b7e51ff2fb66059a9910ab41d Mon Sep 17 00:00:00 2001
From: Robert Haas <rhaas@postgresql.org>
Date: Tue, 27 Sep 2022 16:41:42 -0400
Subject: [PATCH v1] tweak SharedInvalSmgrMsg

---
 src/backend/utils/cache/inval.c | 9 +++++++--
 src/include/storage/sinval.h    | 7 +++++--
 2 files changed, 12 insertions(+), 4 deletions(-)

diff --git a/src/backend/utils/cache/inval.c b/src/backend/utils/cache/inval.c
index eb5782f82a..fecbf06a04 100644
--- a/src/backend/utils/cache/inval.c
+++ b/src/backend/utils/cache/inval.c
@@ -663,7 +663,9 @@ LocalExecuteInvalidationMessage(SharedInvalidationMessage *msg)
 		 */
 		RelFileLocatorBackend rlocator;
 
-		rlocator.locator = msg->sm.rlocator;
+		rlocator.locator.dbOid = msg->sm.dbOid;
+		rlocator.locator.spcOid = msg->sm.spcOid;
+		rlocator.locator.relNumber = (((uint64) msg->sm.relNumber_hi) << 32) | msg->sm.relNumber_lo;
 		rlocator.backend = (msg->sm.backend_hi << 16) | (int) msg->sm.backend_lo;
 		smgrcloserellocator(rlocator);
 	}
@@ -1466,7 +1468,10 @@ CacheInvalidateSmgr(RelFileLocatorBackend rlocator)
 	msg.sm.id = SHAREDINVALSMGR_ID;
 	msg.sm.backend_hi = rlocator.backend >> 16;
 	msg.sm.backend_lo = rlocator.backend & 0xffff;
-	msg.sm.rlocator = rlocator.locator;
+	msg.sm.dbOid = rlocator.locator.dbOid;
+	msg.sm.spcOid = rlocator.locator.spcOid;
+	msg.sm.relNumber_hi = rlocator.locator.relNumber >> 32;
+	msg.sm.relNumber_lo = rlocator.locator.relNumber & 0xffffffff;
 	/* check AddCatcacheInvalidationMessage() for an explanation */
 	VALGRIND_MAKE_MEM_DEFINED(&msg, sizeof(msg));
 
diff --git a/src/include/storage/sinval.h b/src/include/storage/sinval.h
index aca0347a3d..4a267be935 100644
--- a/src/include/storage/sinval.h
+++ b/src/include/storage/sinval.h
@@ -86,11 +86,14 @@ typedef struct
 
 typedef struct
 {
-	/* note: field layout chosen to pack into 16 bytes */
+	/* note: field layout chosen to pack into 20 bytes */
 	int8		id;				/* type field --- must be first */
 	int8		backend_hi;		/* high bits of backend ID, if temprel */
 	uint16		backend_lo;		/* low bits of backend ID, if temprel */
-	RelFileLocator rlocator;	/* spcOid, dbOid, relNumber */
+	Oid			dbOid;
+	Oid			spcOid;
+	uint32		relNumber_hi;	/* avoid 8 byte alignment requirement */
+	uint32		relNumber_lo;
 } SharedInvalSmgrMsg;
 
 #define SHAREDINVALRELMAP_ID	(-4)
-- 
2.24.3 (Apple Git-128)