mirror of
https://github.com/postgres/postgres.git
synced 2025-06-17 17:02:08 +03:00
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:
@ -874,25 +874,18 @@ pg_relation_filenode(PG_FUNCTION_ARGS)
|
||||
PG_RETURN_NULL();
|
||||
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)
|
||||
result = relform->relfilenode;
|
||||
else /* Consult the relation mapper */
|
||||
result = RelationMapOidToFilenode(relid,
|
||||
relform->relisshared);
|
||||
break;
|
||||
|
||||
default:
|
||||
/* no storage, return NULL */
|
||||
result = InvalidOid;
|
||||
break;
|
||||
if (relform->relfilenode)
|
||||
result = relform->relfilenode;
|
||||
else /* Consult the relation mapper */
|
||||
result = RelationMapOidToFilenode(relid,
|
||||
relform->relisshared);
|
||||
}
|
||||
else
|
||||
{
|
||||
/* no storage, return NULL */
|
||||
result = InvalidOid;
|
||||
}
|
||||
|
||||
ReleaseSysCache(tuple);
|
||||
@ -951,38 +944,30 @@ pg_relation_filepath(PG_FUNCTION_ARGS)
|
||||
PG_RETURN_NULL();
|
||||
relform = (Form_pg_class) GETSTRUCT(tuple);
|
||||
|
||||
switch (relform->relkind)
|
||||
if (RELKIND_HAS_STORAGE(relform->relkind))
|
||||
{
|
||||
/* This logic should match RelationInitPhysicalAddr */
|
||||
if (relform->reltablespace)
|
||||
rnode.spcNode = relform->reltablespace;
|
||||
else
|
||||
rnode.spcNode = MyDatabaseTableSpace;
|
||||
if (rnode.spcNode == GLOBALTABLESPACE_OID)
|
||||
rnode.dbNode = InvalidOid;
|
||||
else
|
||||
rnode.dbNode = MyDatabaseId;
|
||||
if (relform->relfilenode)
|
||||
rnode.relNode = relform->relfilenode;
|
||||
else /* Consult the relation mapper */
|
||||
rnode.relNode = RelationMapOidToFilenode(relid,
|
||||
relform->relisshared);
|
||||
}
|
||||
else
|
||||
{
|
||||
case RELKIND_RELATION:
|
||||
case RELKIND_MATVIEW:
|
||||
case RELKIND_INDEX:
|
||||
case RELKIND_SEQUENCE:
|
||||
case RELKIND_TOASTVALUE:
|
||||
/* okay, these have storage */
|
||||
|
||||
/* This logic should match RelationInitPhysicalAddr */
|
||||
if (relform->reltablespace)
|
||||
rnode.spcNode = relform->reltablespace;
|
||||
else
|
||||
rnode.spcNode = MyDatabaseTableSpace;
|
||||
if (rnode.spcNode == GLOBALTABLESPACE_OID)
|
||||
rnode.dbNode = InvalidOid;
|
||||
else
|
||||
rnode.dbNode = MyDatabaseId;
|
||||
if (relform->relfilenode)
|
||||
rnode.relNode = relform->relfilenode;
|
||||
else /* Consult the relation mapper */
|
||||
rnode.relNode = RelationMapOidToFilenode(relid,
|
||||
relform->relisshared);
|
||||
break;
|
||||
|
||||
default:
|
||||
/* no storage, return NULL */
|
||||
rnode.relNode = InvalidOid;
|
||||
/* some compilers generate warnings without these next two lines */
|
||||
rnode.dbNode = InvalidOid;
|
||||
rnode.spcNode = InvalidOid;
|
||||
break;
|
||||
}
|
||||
|
||||
if (!OidIsValid(rnode.relNode))
|
||||
|
Reference in New Issue
Block a user