diff options
Diffstat (limited to 'src/backend/utils/adt/dbsize.c')
-rw-r--r-- | src/backend/utils/adt/dbsize.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/src/backend/utils/adt/dbsize.c b/src/backend/utils/adt/dbsize.c index d589d26070d..d32d9014c7e 100644 --- a/src/backend/utils/adt/dbsize.c +++ b/src/backend/utils/adt/dbsize.c @@ -840,7 +840,8 @@ pg_relation_filepath(PG_FUNCTION_ARGS) * Indicate whether a relation is scannable. * * Currently, this is always true except for a materialized view which has not - * been populated. + * been populated. It is expected that other conditions for allowing a + * materialized view to be scanned will be added in later releases. */ Datum pg_relation_is_scannable(PG_FUNCTION_ARGS) @@ -850,9 +851,13 @@ pg_relation_is_scannable(PG_FUNCTION_ARGS) bool result; relid = PG_GETARG_OID(0); - relation = RelationIdGetRelation(relid); - result = relation->rd_isscannable; - RelationClose(relation); + relation = try_relation_open(relid, AccessShareLock); + if (relation == NULL) + PG_RETURN_BOOL(false); + + result = RelationIsScannable(relation); + + relation_close(relation, AccessShareLock); PG_RETURN_BOOL(result); } |