diff options
author | Robert Haas <rhaas@postgresql.org> | 2022-09-28 09:45:27 -0400 |
---|---|---|
committer | Robert Haas <rhaas@postgresql.org> | 2022-09-28 09:55:28 -0400 |
commit | a448e49bcbe40fb72e1ed85af910dd216d45bad8 (patch) | |
tree | 2815aed4f5e89bdea91cdd35ec89facaa846e438 /src/backend/utils/cache | |
parent | 6af082723277eeca74f2da65e7759666bf7c7f9c (diff) |
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.
Diffstat (limited to 'src/backend/utils/cache')
-rw-r--r-- | src/backend/utils/cache/inval.c | 9 | ||||
-rw-r--r-- | src/backend/utils/cache/relcache.c | 2 | ||||
-rw-r--r-- | src/backend/utils/cache/relfilenumbermap.c | 28 |
3 files changed, 16 insertions, 23 deletions
diff --git a/src/backend/utils/cache/inval.c b/src/backend/utils/cache/inval.c index fecbf06a04d..eb5782f82a4 100644 --- a/src/backend/utils/cache/inval.c +++ b/src/backend/utils/cache/inval.c @@ -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)); diff --git a/src/backend/utils/cache/relcache.c b/src/backend/utils/cache/relcache.c index 6f4e96dd33b..00dc0f24037 100644 --- a/src/backend/utils/cache/relcache.c +++ b/src/backend/utils/cache/relcache.c @@ -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) { diff --git a/src/backend/utils/cache/relfilenumbermap.c b/src/backend/utils/cache/relfilenumbermap.c index 11427ba97eb..c4245d5ccdd 100644 --- a/src/backend/utils/cache/relfilenumbermap.c +++ b/src/backend/utils/cache/relfilenumbermap.c @@ -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; |