*/
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);
}
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));
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)