1
0
mirror of https://github.com/postgres/postgres.git synced 2025-11-24 00:23:06 +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:
Robert Haas
2022-09-28 09:45:27 -04:00
parent 6af0827232
commit a448e49bcb
73 changed files with 304 additions and 719 deletions

View File

@@ -878,7 +878,7 @@ pg_relation_filenode(PG_FUNCTION_ARGS)
if (!RelFileNumberIsValid(result))
PG_RETURN_NULL();
PG_RETURN_INT64(result);
PG_RETURN_OID(result);
}
/*
@@ -898,12 +898,9 @@ Datum
pg_filenode_relation(PG_FUNCTION_ARGS)
{
Oid reltablespace = PG_GETARG_OID(0);
RelFileNumber relfilenumber = PG_GETARG_INT64(1);
RelFileNumber relfilenumber = PG_GETARG_OID(1);
Oid heaprel;
/* check whether the relfilenumber is within a valid range */
CHECK_RELFILENUMBER_RANGE(relfilenumber);
/* test needed so RelidByRelfilenumber doesn't misbehave */
if (!RelFileNumberIsValid(relfilenumber))
PG_RETURN_NULL();

View File

@@ -17,7 +17,6 @@
#include "catalog/pg_type.h"
#include "commands/extension.h"
#include "miscadmin.h"
#include "storage/relfilelocator.h"
#include "utils/array.h"
#include "utils/builtins.h"
@@ -99,12 +98,10 @@ binary_upgrade_set_next_heap_pg_class_oid(PG_FUNCTION_ARGS)
Datum
binary_upgrade_set_next_heap_relfilenode(PG_FUNCTION_ARGS)
{
RelFileNumber relfilenumber = PG_GETARG_INT64(0);
RelFileNumber relfilenumber = PG_GETARG_OID(0);
CHECK_IS_BINARY_UPGRADE;
CHECK_RELFILENUMBER_RANGE(relfilenumber);
binary_upgrade_next_heap_pg_class_relfilenumber = relfilenumber;
SetNextRelFileNumber(relfilenumber + 1);
PG_RETURN_VOID();
}
@@ -123,12 +120,10 @@ binary_upgrade_set_next_index_pg_class_oid(PG_FUNCTION_ARGS)
Datum
binary_upgrade_set_next_index_relfilenode(PG_FUNCTION_ARGS)
{
RelFileNumber relfilenumber = PG_GETARG_INT64(0);
RelFileNumber relfilenumber = PG_GETARG_OID(0);
CHECK_IS_BINARY_UPGRADE;
CHECK_RELFILENUMBER_RANGE(relfilenumber);
binary_upgrade_next_index_pg_class_relfilenumber = relfilenumber;
SetNextRelFileNumber(relfilenumber + 1);
PG_RETURN_VOID();
}
@@ -147,12 +142,10 @@ binary_upgrade_set_next_toast_pg_class_oid(PG_FUNCTION_ARGS)
Datum
binary_upgrade_set_next_toast_relfilenode(PG_FUNCTION_ARGS)
{
RelFileNumber relfilenumber = PG_GETARG_INT64(0);
RelFileNumber relfilenumber = PG_GETARG_OID(0);
CHECK_IS_BINARY_UPGRADE;
CHECK_RELFILENUMBER_RANGE(relfilenumber);
binary_upgrade_next_toast_pg_class_relfilenumber = relfilenumber;
SetNextRelFileNumber(relfilenumber + 1);
PG_RETURN_VOID();
}

View File

@@ -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));

View File

@@ -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)
{

View File

@@ -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;

View File

@@ -79,8 +79,8 @@ pg_control_system(PG_FUNCTION_ARGS)
Datum
pg_control_checkpoint(PG_FUNCTION_ARGS)
{
Datum values[19];
bool nulls[19];
Datum values[18];
bool nulls[18];
TupleDesc tupdesc;
HeapTuple htup;
ControlFileData *ControlFile;
@@ -129,8 +129,6 @@ pg_control_checkpoint(PG_FUNCTION_ARGS)
XIDOID, -1, 0);
TupleDescInitEntry(tupdesc, (AttrNumber) 18, "checkpoint_time",
TIMESTAMPTZOID, -1, 0);
TupleDescInitEntry(tupdesc, (AttrNumber) 19, "next_relfilenumber",
INT8OID, -1, 0);
tupdesc = BlessTupleDesc(tupdesc);
/* Read the control file. */
@@ -204,9 +202,6 @@ pg_control_checkpoint(PG_FUNCTION_ARGS)
values[17] = TimestampTzGetDatum(time_t_to_timestamptz(ControlFile->checkPointCopy.time));
nulls[17] = false;
values[18] = Int64GetDatum((int64) ControlFile->checkPointCopy.nextRelFileNumber);
nulls[18] = false;
htup = heap_form_tuple(tupdesc, values, nulls);
PG_RETURN_DATUM(HeapTupleGetDatum(htup));