From fdd42ff05e2c59acf18a03c9df2320fff3b4535d Mon Sep 17 00:00:00 2001 From: HuSen8891 Date: Mon, 21 Aug 2023 17:47:09 +0800 Subject: [PATCH] Fix: use RelFileNodeId instead of Oid for relfilenode. Currently, relfilenode is extended from 32 bit(Oid) to 64 bit(RelFileNodeId). But Oid is still used for relfilenode in some cases, fix those cases through replacing Oid with RelFileNodeId. --- contrib/pg_buffercache/pg_buffercache--1.0--1.1.sql | 2 +- contrib/pg_buffercache/pg_buffercache--1.2.sql | 2 +- contrib/pg_buffercache/pg_buffercache_pages.c | 2 +- src/backend/catalog/index.c | 2 +- src/backend/commands/sequence.c | 2 +- src/include/catalog/index.h | 4 ++-- 6 files changed, 7 insertions(+), 7 deletions(-) diff --git a/contrib/pg_buffercache/pg_buffercache--1.0--1.1.sql b/contrib/pg_buffercache/pg_buffercache--1.0--1.1.sql index 54d02f58c01..5e93238ff1e 100644 --- a/contrib/pg_buffercache/pg_buffercache--1.0--1.1.sql +++ b/contrib/pg_buffercache/pg_buffercache--1.0--1.1.sql @@ -6,6 +6,6 @@ -- Upgrade view to 1.1. format CREATE OR REPLACE VIEW pg_buffercache AS SELECT P.* FROM pg_buffercache_pages() AS P - (bufferid integer, relfilenode oid, reltablespace oid, reldatabase oid, + (bufferid integer, relfilenode int8, reltablespace oid, reldatabase oid, relforknumber int2, relblocknumber int8, isdirty bool, usagecount int2, pinning_backends int4); diff --git a/contrib/pg_buffercache/pg_buffercache--1.2.sql b/contrib/pg_buffercache/pg_buffercache--1.2.sql index 6ee5d8435bd..f52ddcde2b5 100644 --- a/contrib/pg_buffercache/pg_buffercache--1.2.sql +++ b/contrib/pg_buffercache/pg_buffercache--1.2.sql @@ -12,7 +12,7 @@ LANGUAGE C PARALLEL SAFE; -- Create a view for convenient access. CREATE VIEW pg_buffercache AS SELECT P.* FROM pg_buffercache_pages() AS P - (bufferid integer, relfilenode oid, reltablespace oid, reldatabase oid, + (bufferid integer, relfilenode int8, reltablespace oid, reldatabase oid, relforknumber int2, relblocknumber int8, isdirty bool, usagecount int2, pinning_backends int4); diff --git a/contrib/pg_buffercache/pg_buffercache_pages.c b/contrib/pg_buffercache/pg_buffercache_pages.c index 4a870d62047..83d9bb0b850 100644 --- a/contrib/pg_buffercache/pg_buffercache_pages.c +++ b/contrib/pg_buffercache/pg_buffercache_pages.c @@ -209,7 +209,7 @@ pg_buffercache_pages(PG_FUNCTION_ARGS) } else { - values[1] = ObjectIdGetDatum(fctx->record[i].relfilenode); + values[1] = Int64GetDatum(fctx->record[i].relfilenode); nulls[1] = false; values[2] = ObjectIdGetDatum(fctx->record[i].reltablespace); nulls[2] = false; diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c index 98e762c985b..68f243dcee7 100644 --- a/src/backend/catalog/index.c +++ b/src/backend/catalog/index.c @@ -817,7 +817,7 @@ index_create_internal(Relation heapRelation, Oid indexRelationId, Oid parentIndexRelid, Oid parentConstraintId, - Oid relFileNode, + RelFileNodeId relFileNode, IndexInfo *indexInfo, List *indexColNames, Oid accessMethodObjectId, diff --git a/src/backend/commands/sequence.c b/src/backend/commands/sequence.c index f3d9469e257..87fe223d6c6 100644 --- a/src/backend/commands/sequence.c +++ b/src/backend/commands/sequence.c @@ -99,7 +99,7 @@ SeqTableKey; typedef struct SeqTableData { SeqTableKey key; /* sequence data hash key */ - Oid filenode; /* last seen relfilenode of this sequence */ + RelFileNodeId filenode; /* last seen relfilenode of this sequence */ LocalTransactionId lxid; /* xact in which we last did a seq op */ bool last_valid; /* do we have a valid "last" value? */ int64 last; /* value last returned by nextval */ diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h index e13c88e14df..6c5204ec148 100644 --- a/src/include/catalog/index.h +++ b/src/include/catalog/index.h @@ -78,7 +78,7 @@ typedef Oid (*index_create_hook_type)(Relation heapRelation, Oid indexRelationId, Oid parentIndexRelid, Oid parentConstraintId, - Oid relFileNode, + RelFileNodeId relFileNode, IndexInfo *indexInfo, List *indexColNames, Oid accessMethodObjectId, @@ -118,7 +118,7 @@ extern Oid index_create_internal(Relation heapRelation, Oid indexRelationId, Oid parentIndexRelid, Oid parentConstraintId, - Oid relFileNode, + RelFileNodeId relFileNode, IndexInfo *indexInfo, List *indexColNames, Oid accessMethodObjectId,