diff --git a/src/backend/utils/adt/dbsize.c b/src/backend/utils/adt/dbsize.c index 9f4edbc60d8..f6f8d2eecc4 100644 --- a/src/backend/utils/adt/dbsize.c +++ b/src/backend/utils/adt/dbsize.c @@ -282,7 +282,18 @@ pg_tablespace_size_name(PG_FUNCTION_ARGS) static int64 calculate_relation_size(RelFileNode *rfn, BackendId backend, ForkNumber forknum, char relpersistence) { - SMgrRelation srel = smgropen(*rfn, backend, relpersistence); + SMgrRelation srel; + RelFileNode zero = {0, 0, 0}; + + /* + * We can get asked the size of a relation without storage, in which case + * we get passed a zero RFL. + * Return 0 for those relations. + */ + if (RelFileNodeEquals(*rfn, zero)) + return 0; + + srel = smgropen(*rfn, backend, relpersistence); if (smgrexists(srel, forknum)) {