Make more use of RELKIND_HAS_STORAGE()

Make use of RELKIND_HAS_STORAGE() where appropriate, instead of
listing out the relkinds individually.  No behavior change intended.

Reviewed-by: Tom Lane <tgl@sss.pgh.pa.us>
Discussion: https://www.postgresql.org/message-id/flat/7a22bf51-2480-d999-1794-191ba67ff47c%402ndquadrant.com
This commit is contained in:
Peter Eisentraut 2020-06-12 08:51:16 +02:00
parent 7aa4fb5925
commit ffd2582297
3 changed files with 31 additions and 55 deletions

View File

@ -1943,13 +1943,8 @@ heap_drop_with_catalog(Oid relid)
/* /*
* Schedule unlinking of the relation's physical files at commit. * Schedule unlinking of the relation's physical files at commit.
*/ */
if (rel->rd_rel->relkind != RELKIND_VIEW && if (RELKIND_HAS_STORAGE(rel->rd_rel->relkind))
rel->rd_rel->relkind != RELKIND_COMPOSITE_TYPE &&
rel->rd_rel->relkind != RELKIND_FOREIGN_TABLE &&
rel->rd_rel->relkind != RELKIND_PARTITIONED_TABLE)
{
RelationDropStorage(rel); RelationDropStorage(rel);
}
/* /*
* Close relcache entry, but *keep* AccessExclusiveLock on the relation * Close relcache entry, but *keep* AccessExclusiveLock on the relation

View File

@ -1807,11 +1807,7 @@ pgstat_initstats(Relation rel)
char relkind = rel->rd_rel->relkind; char relkind = rel->rd_rel->relkind;
/* We only count stats for things that have storage */ /* We only count stats for things that have storage */
if (!(relkind == RELKIND_RELATION || if (!RELKIND_HAS_STORAGE(relkind))
relkind == RELKIND_MATVIEW ||
relkind == RELKIND_INDEX ||
relkind == RELKIND_TOASTVALUE ||
relkind == RELKIND_SEQUENCE))
{ {
rel->pgstat_info = NULL; rel->pgstat_info = NULL;
return; return;

View File

@ -874,25 +874,18 @@ pg_relation_filenode(PG_FUNCTION_ARGS)
PG_RETURN_NULL(); PG_RETURN_NULL();
relform = (Form_pg_class) GETSTRUCT(tuple); relform = (Form_pg_class) GETSTRUCT(tuple);
switch (relform->relkind) if (RELKIND_HAS_STORAGE(relform->relkind))
{ {
case RELKIND_RELATION:
case RELKIND_MATVIEW:
case RELKIND_INDEX:
case RELKIND_SEQUENCE:
case RELKIND_TOASTVALUE:
/* okay, these have storage */
if (relform->relfilenode) if (relform->relfilenode)
result = relform->relfilenode; result = relform->relfilenode;
else /* Consult the relation mapper */ else /* Consult the relation mapper */
result = RelationMapOidToFilenode(relid, result = RelationMapOidToFilenode(relid,
relform->relisshared); relform->relisshared);
break; }
else
default: {
/* no storage, return NULL */ /* no storage, return NULL */
result = InvalidOid; result = InvalidOid;
break;
} }
ReleaseSysCache(tuple); ReleaseSysCache(tuple);
@ -951,15 +944,8 @@ pg_relation_filepath(PG_FUNCTION_ARGS)
PG_RETURN_NULL(); PG_RETURN_NULL();
relform = (Form_pg_class) GETSTRUCT(tuple); relform = (Form_pg_class) GETSTRUCT(tuple);
switch (relform->relkind) if (RELKIND_HAS_STORAGE(relform->relkind))
{ {
case RELKIND_RELATION:
case RELKIND_MATVIEW:
case RELKIND_INDEX:
case RELKIND_SEQUENCE:
case RELKIND_TOASTVALUE:
/* okay, these have storage */
/* This logic should match RelationInitPhysicalAddr */ /* This logic should match RelationInitPhysicalAddr */
if (relform->reltablespace) if (relform->reltablespace)
rnode.spcNode = relform->reltablespace; rnode.spcNode = relform->reltablespace;
@ -974,15 +960,14 @@ pg_relation_filepath(PG_FUNCTION_ARGS)
else /* Consult the relation mapper */ else /* Consult the relation mapper */
rnode.relNode = RelationMapOidToFilenode(relid, rnode.relNode = RelationMapOidToFilenode(relid,
relform->relisshared); relform->relisshared);
break; }
else
default: {
/* no storage, return NULL */ /* no storage, return NULL */
rnode.relNode = InvalidOid; rnode.relNode = InvalidOid;
/* some compilers generate warnings without these next two lines */ /* some compilers generate warnings without these next two lines */
rnode.dbNode = InvalidOid; rnode.dbNode = InvalidOid;
rnode.spcNode = InvalidOid; rnode.spcNode = InvalidOid;
break;
} }
if (!OidIsValid(rnode.relNode)) if (!OidIsValid(rnode.relNode))