v2-0001-Don-t-use-ObjectClass-for-event-trigger-support.patch

text/plain

Filename: v2-0001-Don-t-use-ObjectClass-for-event-trigger-support.patch
Type: text/plain
Part: 0
Message: Re: Improve readability by using designated initializers when possible

Patch

Format: format-patch
Series: patch v2-0001
Subject: Don't use ObjectClass for event trigger support
File+
src/backend/catalog/dependency.c 1 1
src/backend/commands/event_trigger.c 10 112
src/include/commands/event_trigger.h 1 1
From 00fe9c6163261c1fdfc806934903bcd60b857633 Mon Sep 17 00:00:00 2001
From: Peter Eisentraut <peter@eisentraut.org>
Date: Sun, 11 Sep 2022 22:26:55 +0200
Subject: [PATCH v2 1/2] Don't use ObjectClass for event trigger support

---
 src/backend/catalog/dependency.c     |   2 +-
 src/backend/commands/event_trigger.c | 122 +++------------------------
 src/include/commands/event_trigger.h |   2 +-
 3 files changed, 12 insertions(+), 114 deletions(-)

diff --git a/src/backend/catalog/dependency.c b/src/backend/catalog/dependency.c
index 2eb41d537b..192dedb3cb 100644
--- a/src/backend/catalog/dependency.c
+++ b/src/backend/catalog/dependency.c
@@ -208,7 +208,7 @@ deleteObjectsInList(ObjectAddresses *targetObjects, Relation *depRel,
 			if (extra->flags & DEPFLAG_REVERSE)
 				normal = true;
 
-			if (EventTriggerSupportsObjectClass(getObjectClass(thisobj)))
+			if (EventTriggerSupportsObject(thisobj))
 			{
 				EventTriggerSQLDropAddObject(thisobj, original, normal);
 			}
diff --git a/src/backend/commands/event_trigger.c b/src/backend/commands/event_trigger.c
index c8b662131c..f2188c7b82 100644
--- a/src/backend/commands/event_trigger.c
+++ b/src/backend/commands/event_trigger.c
@@ -1141,128 +1141,26 @@ EventTriggerSupportsObjectType(ObjectType obtype)
 		case OBJECT_EVENT_TRIGGER:
 			/* no support for event triggers on event triggers */
 			return false;
-		case OBJECT_ACCESS_METHOD:
-		case OBJECT_AGGREGATE:
-		case OBJECT_AMOP:
-		case OBJECT_AMPROC:
-		case OBJECT_ATTRIBUTE:
-		case OBJECT_CAST:
-		case OBJECT_COLUMN:
-		case OBJECT_COLLATION:
-		case OBJECT_CONVERSION:
-		case OBJECT_DEFACL:
-		case OBJECT_DEFAULT:
-		case OBJECT_DOMAIN:
-		case OBJECT_DOMCONSTRAINT:
-		case OBJECT_EXTENSION:
-		case OBJECT_FDW:
-		case OBJECT_FOREIGN_SERVER:
-		case OBJECT_FOREIGN_TABLE:
-		case OBJECT_FUNCTION:
-		case OBJECT_INDEX:
-		case OBJECT_LANGUAGE:
-		case OBJECT_LARGEOBJECT:
-		case OBJECT_MATVIEW:
-		case OBJECT_OPCLASS:
-		case OBJECT_OPERATOR:
-		case OBJECT_OPFAMILY:
-		case OBJECT_POLICY:
-		case OBJECT_PROCEDURE:
-		case OBJECT_PUBLICATION:
-		case OBJECT_PUBLICATION_NAMESPACE:
-		case OBJECT_PUBLICATION_REL:
-		case OBJECT_ROUTINE:
-		case OBJECT_RULE:
-		case OBJECT_SCHEMA:
-		case OBJECT_SEQUENCE:
-		case OBJECT_SUBSCRIPTION:
-		case OBJECT_STATISTIC_EXT:
-		case OBJECT_TABCONSTRAINT:
-		case OBJECT_TABLE:
-		case OBJECT_TRANSFORM:
-		case OBJECT_TRIGGER:
-		case OBJECT_TSCONFIGURATION:
-		case OBJECT_TSDICTIONARY:
-		case OBJECT_TSPARSER:
-		case OBJECT_TSTEMPLATE:
-		case OBJECT_TYPE:
-		case OBJECT_USER_MAPPING:
-		case OBJECT_VIEW:
+		default:
 			return true;
-
-			/*
-			 * There's intentionally no default: case here; we want the
-			 * compiler to warn if a new ObjectType hasn't been handled above.
-			 */
 	}
-
-	/* Shouldn't get here, but if we do, say "no support" */
-	return false;
 }
 
 /*
  * Do event triggers support this object class?
  */
 bool
-EventTriggerSupportsObjectClass(ObjectClass objclass)
+EventTriggerSupportsObject(const ObjectAddress *object)
 {
-	switch (objclass)
-	{
-		case OCLASS_DATABASE:
-		case OCLASS_TBLSPACE:
-		case OCLASS_ROLE:
-		case OCLASS_ROLE_MEMBERSHIP:
-		case OCLASS_PARAMETER_ACL:
-			/* no support for global objects */
-			return false;
-		case OCLASS_EVENT_TRIGGER:
-			/* no support for event triggers on event triggers */
-			return false;
-		case OCLASS_CLASS:
-		case OCLASS_PROC:
-		case OCLASS_TYPE:
-		case OCLASS_CAST:
-		case OCLASS_COLLATION:
-		case OCLASS_CONSTRAINT:
-		case OCLASS_CONVERSION:
-		case OCLASS_DEFAULT:
-		case OCLASS_LANGUAGE:
-		case OCLASS_LARGEOBJECT:
-		case OCLASS_OPERATOR:
-		case OCLASS_OPCLASS:
-		case OCLASS_OPFAMILY:
-		case OCLASS_AM:
-		case OCLASS_AMOP:
-		case OCLASS_AMPROC:
-		case OCLASS_REWRITE:
-		case OCLASS_TRIGGER:
-		case OCLASS_SCHEMA:
-		case OCLASS_STATISTIC_EXT:
-		case OCLASS_TSPARSER:
-		case OCLASS_TSDICT:
-		case OCLASS_TSTEMPLATE:
-		case OCLASS_TSCONFIG:
-		case OCLASS_FDW:
-		case OCLASS_FOREIGN_SERVER:
-		case OCLASS_USER_MAPPING:
-		case OCLASS_DEFACL:
-		case OCLASS_EXTENSION:
-		case OCLASS_POLICY:
-		case OCLASS_PUBLICATION:
-		case OCLASS_PUBLICATION_NAMESPACE:
-		case OCLASS_PUBLICATION_REL:
-		case OCLASS_SUBSCRIPTION:
-		case OCLASS_TRANSFORM:
-			return true;
+	/* no support for global objects */
+	if (IsSharedRelation(object->classId))
+		return false;
 
-			/*
-			 * There's intentionally no default: case here; we want the
-			 * compiler to warn if a new OCLASS hasn't been handled above.
-			 */
-	}
+	/* no support for event triggers on event triggers */
+	if (object->classId == EventTriggerRelationId)
+		return false;
 
-	/* Shouldn't get here, but if we do, say "no support" */
-	return false;
+	return true;
 }
 
 /*
@@ -1374,7 +1272,7 @@ EventTriggerSQLDropAddObject(const ObjectAddress *object, bool original, bool no
 	if (!currentEventTriggerState)
 		return;
 
-	Assert(EventTriggerSupportsObjectClass(getObjectClass(object)));
+	Assert(EventTriggerSupportsObject(object));
 
 	/* don't report temp schemas except my own */
 	if (object->classId == NamespaceRelationId &&
diff --git a/src/include/commands/event_trigger.h b/src/include/commands/event_trigger.h
index f8fb659f91..90fc1af5f6 100644
--- a/src/include/commands/event_trigger.h
+++ b/src/include/commands/event_trigger.h
@@ -51,7 +51,7 @@ extern ObjectAddress AlterEventTriggerOwner(const char *name, Oid newOwnerId);
 extern void AlterEventTriggerOwner_oid(Oid, Oid newOwnerId);
 
 extern bool EventTriggerSupportsObjectType(ObjectType obtype);
-extern bool EventTriggerSupportsObjectClass(ObjectClass objclass);
+extern bool EventTriggerSupportsObject(const ObjectAddress *object);
 extern void EventTriggerDDLCommandStart(Node *parsetree);
 extern void EventTriggerDDLCommandEnd(Node *parsetree);
 extern void EventTriggerSQLDrop(Node *parsetree);

base-commit: b3f6b14cf48ffa81084072f1fdeee2fe9df20746
-- 
2.43.2