From 36e34df5ff45456b9257251b78a73182ba0028f3 Mon Sep 17 00:00:00 2001 From: Tender Wang Date: Wed, 26 Mar 2025 09:14:08 +0800 Subject: [PATCH v2] Don't allow no storage relation to get FSM info. --- contrib/pg_freespacemap/pg_freespacemap.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/contrib/pg_freespacemap/pg_freespacemap.c b/contrib/pg_freespacemap/pg_freespacemap.c index 565167aaef..0c3a180250 100644 --- a/contrib/pg_freespacemap/pg_freespacemap.c +++ b/contrib/pg_freespacemap/pg_freespacemap.c @@ -9,8 +9,10 @@ #include "postgres.h" #include "access/relation.h" +#include "catalog/pg_class.h" #include "fmgr.h" #include "storage/freespace.h" +#include "utils/rel.h" PG_MODULE_MAGIC; @@ -35,6 +37,13 @@ pg_freespace(PG_FUNCTION_ARGS) (errcode(ERRCODE_INVALID_PARAMETER_VALUE), errmsg("invalid block number"))); + if ((!RELKIND_HAS_STORAGE(rel->rd_rel->relkind))) + ereport(ERROR, + (errcode(ERRCODE_WRONG_OBJECT_TYPE), + errmsg("cannot get page from relation \"%s\"", + RelationGetRelationName(rel)), + errdetail_relkind_not_supported(rel->rd_rel->relkind))); + freespace = GetRecordedFreeSpace(rel, blkno); relation_close(rel, AccessShareLock); -- 2.34.1