mirror of
https://github.com/postgres/postgres.git
synced 2025-11-04 20:11:56 +03:00
Revert 56-bit relfilenode change and follow-up commits.
There are still some alignment-related failures in the buildfarm, which might or might not be able to be fixed quickly, but I've also just realized that it increased the size of many WAL records by 4 bytes because a block reference contains a RelFileLocator. The effect of that hasn't been studied or discussed, so revert for now.
This commit is contained in:
9
src/backend/utils/cache/inval.c
vendored
9
src/backend/utils/cache/inval.c
vendored
@@ -663,9 +663,7 @@ LocalExecuteInvalidationMessage(SharedInvalidationMessage *msg)
|
||||
*/
|
||||
RelFileLocatorBackend 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.locator = msg->sm.rlocator;
|
||||
rlocator.backend = (msg->sm.backend_hi << 16) | (int) msg->sm.backend_lo;
|
||||
smgrcloserellocator(rlocator);
|
||||
}
|
||||
@@ -1468,10 +1466,7 @@ CacheInvalidateSmgr(RelFileLocatorBackend rlocator)
|
||||
msg.sm.id = SHAREDINVALSMGR_ID;
|
||||
msg.sm.backend_hi = rlocator.backend >> 16;
|
||||
msg.sm.backend_lo = rlocator.backend & 0xffff;
|
||||
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;
|
||||
msg.sm.rlocator = rlocator.locator;
|
||||
/* check AddCatcacheInvalidationMessage() for an explanation */
|
||||
VALGRIND_MAKE_MEM_DEFINED(&msg, sizeof(msg));
|
||||
|
||||
|
||||
2
src/backend/utils/cache/relcache.c
vendored
2
src/backend/utils/cache/relcache.c
vendored
@@ -3712,7 +3712,7 @@ RelationSetNewRelfilenumber(Relation relation, char persistence)
|
||||
{
|
||||
/* Allocate a new relfilenumber */
|
||||
newrelfilenumber = GetNewRelFileNumber(relation->rd_rel->reltablespace,
|
||||
persistence);
|
||||
NULL, persistence);
|
||||
}
|
||||
else if (relation->rd_rel->relkind == RELKIND_INDEX)
|
||||
{
|
||||
|
||||
28
src/backend/utils/cache/relfilenumbermap.c
vendored
28
src/backend/utils/cache/relfilenumbermap.c
vendored
@@ -88,6 +88,7 @@ static void
|
||||
InitializeRelfilenumberMap(void)
|
||||
{
|
||||
HASHCTL ctl;
|
||||
int i;
|
||||
|
||||
/* Make sure we've initialized CacheMemoryContext. */
|
||||
if (CacheMemoryContext == NULL)
|
||||
@@ -96,20 +97,17 @@ InitializeRelfilenumberMap(void)
|
||||
/* build skey */
|
||||
MemSet(&relfilenumber_skey, 0, sizeof(relfilenumber_skey));
|
||||
|
||||
fmgr_info_cxt(F_OIDEQ,
|
||||
&relfilenumber_skey[0].sk_func,
|
||||
CacheMemoryContext);
|
||||
relfilenumber_skey[0].sk_strategy = BTEqualStrategyNumber;
|
||||
relfilenumber_skey[0].sk_subtype = InvalidOid;
|
||||
relfilenumber_skey[0].sk_collation = InvalidOid;
|
||||
relfilenumber_skey[0].sk_attno = Anum_pg_class_reltablespace;
|
||||
for (i = 0; i < 2; i++)
|
||||
{
|
||||
fmgr_info_cxt(F_OIDEQ,
|
||||
&relfilenumber_skey[i].sk_func,
|
||||
CacheMemoryContext);
|
||||
relfilenumber_skey[i].sk_strategy = BTEqualStrategyNumber;
|
||||
relfilenumber_skey[i].sk_subtype = InvalidOid;
|
||||
relfilenumber_skey[i].sk_collation = InvalidOid;
|
||||
}
|
||||
|
||||
fmgr_info_cxt(F_INT8EQ,
|
||||
&relfilenumber_skey[1].sk_func,
|
||||
CacheMemoryContext);
|
||||
relfilenumber_skey[1].sk_strategy = BTEqualStrategyNumber;
|
||||
relfilenumber_skey[1].sk_subtype = InvalidOid;
|
||||
relfilenumber_skey[1].sk_collation = InvalidOid;
|
||||
relfilenumber_skey[0].sk_attno = Anum_pg_class_reltablespace;
|
||||
relfilenumber_skey[1].sk_attno = Anum_pg_class_relfilenode;
|
||||
|
||||
/*
|
||||
@@ -198,7 +196,7 @@ RelidByRelfilenumber(Oid reltablespace, RelFileNumber relfilenumber)
|
||||
|
||||
/* set scan arguments */
|
||||
skey[0].sk_argument = ObjectIdGetDatum(reltablespace);
|
||||
skey[1].sk_argument = Int64GetDatum((int64) relfilenumber);
|
||||
skey[1].sk_argument = ObjectIdGetDatum(relfilenumber);
|
||||
|
||||
scandesc = systable_beginscan(relation,
|
||||
ClassTblspcRelfilenodeIndexId,
|
||||
@@ -215,7 +213,7 @@ RelidByRelfilenumber(Oid reltablespace, RelFileNumber relfilenumber)
|
||||
|
||||
if (found)
|
||||
elog(ERROR,
|
||||
"unexpected duplicate for tablespace %u, relfilenumber " UINT64_FORMAT,
|
||||
"unexpected duplicate for tablespace %u, relfilenumber %u",
|
||||
reltablespace, relfilenumber);
|
||||
found = true;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user