postgres.git / summary / log / commit / refs
commit 049ef3398d05c9dc8f48aa9a6d68440661cfeb87
Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
Date: Fri Dec 08 07:16:21 2023 +0000
First released in: 17.0
Don't try to open visibilitymap when analyzing a foreign table
It's harmless, visibilitymap_count() returns 0 if the file doesn't
exist. But it's also very pointless. I noticed this when I added an
assertion in smgropen() that the relnumber is valid.
Discussion: https://www.postgresql.org/message-id/621a52fd-3cd8-4f5d-a561-d510b853bbaf@iki.fi
src/backend/commands/analyze.c | 5 ++++-
src/backend/storage/smgr/smgr.c | 2 ++
2 files changed, 6 insertions(+), 1 deletion(-)
diff --git a/src/backend/commands/analyze.c b/src/backend/commands/analyze.c
index e264ffdcf28..1f4a9516814 100644
--- a/src/backend/commands/analyze.c
+++ b/src/backend/commands/analyze.c
@@ -634,7 +634,10 @@ do_analyze_rel(Relation onerel, VacuumParams *params,
{
BlockNumber relallvisible;
- visibilitymap_count(onerel, &relallvisible, NULL);
+ if (RELKIND_HAS_STORAGE(onerel->rd_rel->relkind))
+ visibilitymap_count(onerel, &relallvisible, NULL);
+ else
+ relallvisible = 0;
/* Update pg_class for table relation */
vac_update_relstats(onerel,
diff --git a/src/backend/storage/smgr/smgr.c b/src/backend/storage/smgr/smgr.c
index 5d0f3d515c3..4c552649336 100644
--- a/src/backend/storage/smgr/smgr.c
+++ b/src/backend/storage/smgr/smgr.c
@@ -153,6 +153,8 @@ smgropen(RelFileLocator rlocator, BackendId backend)
SMgrRelation reln;
bool found;
+ Assert(RelFileNumberIsValid(rlocator.relNumber));
+
if (SMgrRelationHash == NULL)
{
/* First time through: initialize the hash table */
[parent: cd7f19da3468]