Make more use of RELKIND_HAS_STORAGE()

2020-06-05 Thread Peter Eisentraut
This is a patch to make use of RELKIND_HAS_STORAGE() where appropriate, 
instead of listing out the relkinds individually.  No behavior change is 
intended.


This was originally part of the patch from [0], but it seems worth 
moving forward independently.



[0]: 
https://www.postgresql.org/message-id/flat/dc35a398-37d0-75ce-07ea-1dd71d98f8ec%402ndquadrant.com


--
Peter Eisentraut  http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
From e5135e2324ff38dc03998af00268f96b6725cd23 Mon Sep 17 00:00:00 2001
From: Peter Eisentraut 
Date: Fri, 5 Jun 2020 08:57:28 +0200
Subject: [PATCH] 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.
---
 src/backend/catalog/heap.c  |  7 +---
 src/backend/postmaster/pgstat.c |  6 +--
 src/backend/utils/adt/dbsize.c  | 73 +
 3 files changed, 31 insertions(+), 55 deletions(-)

diff --git a/src/backend/catalog/heap.c b/src/backend/catalog/heap.c
index e393c93a45..9c45544815 100644
--- a/src/backend/catalog/heap.c
+++ b/src/backend/catalog/heap.c
@@ -1943,13 +1943,8 @@ heap_drop_with_catalog(Oid relid)
/*
 * Schedule unlinking of the relation's physical files at commit.
 */
-   if (rel->rd_rel->relkind != RELKIND_VIEW &&
-   rel->rd_rel->relkind != RELKIND_COMPOSITE_TYPE &&
-   rel->rd_rel->relkind != RELKIND_FOREIGN_TABLE &&
-   rel->rd_rel->relkind != RELKIND_PARTITIONED_TABLE)
-   {
+   if (RELKIND_HAS_STORAGE(rel->rd_rel->relkind))
RelationDropStorage(rel);
-   }
 
/*
 * Close relcache entry, but *keep* AccessExclusiveLock on the relation
diff --git a/src/backend/postmaster/pgstat.c b/src/backend/postmaster/pgstat.c
index d7f99d9944..166d8e3d15 100644
--- a/src/backend/postmaster/pgstat.c
+++ b/src/backend/postmaster/pgstat.c
@@ -1807,11 +1807,7 @@ pgstat_initstats(Relation rel)
charrelkind = rel->rd_rel->relkind;
 
/* We only count stats for things that have storage */
-   if (!(relkind == RELKIND_RELATION ||
- relkind == RELKIND_MATVIEW ||
- relkind == RELKIND_INDEX ||
- relkind == RELKIND_TOASTVALUE ||
- relkind == RELKIND_SEQUENCE))
+   if (!RELKIND_HAS_STORAGE(relkind))
{
rel->pgstat_info = NULL;
return;
diff --git a/src/backend/utils/adt/dbsize.c b/src/backend/utils/adt/dbsize.c
index 840664429e..2320c06a9b 100644
--- a/src/backend/utils/adt/dbsize.c
+++ b/src/backend/utils/adt/dbsize.c
@@ -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)

Re: Make more use of RELKIND_HAS_STORAGE()

2020-06-05 Thread Tom Lane
Peter Eisentraut  writes:
> This is a patch to make use of RELKIND_HAS_STORAGE() where appropriate, 
> instead of listing out the relkinds individually.  No behavior change is 
> intended.
> This was originally part of the patch from [0], but it seems worth 
> moving forward independently.

Passes eyeball examination.  I did not try to search for other places
where RELKIND_HAS_STORAGE should be used.

regards, tom lane




Re: Make more use of RELKIND_HAS_STORAGE()

2020-06-12 Thread Peter Eisentraut

On 2020-06-05 18:05, Tom Lane wrote:

Peter Eisentraut  writes:

This is a patch to make use of RELKIND_HAS_STORAGE() where appropriate,
instead of listing out the relkinds individually.  No behavior change is
intended.
This was originally part of the patch from [0], but it seems worth
moving forward independently.


Passes eyeball examination.  I did not try to search for other places
where RELKIND_HAS_STORAGE should be used.


committed

--
Peter Eisentraut  http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services




Re: Make more use of RELKIND_HAS_STORAGE()

2020-06-12 Thread Michael Paquier
On Fri, Jun 12, 2020 at 09:16:04AM +0200, Peter Eisentraut wrote:
> committed

Yeah!
--
Michael


signature.asc
Description: PGP signature