From 2759f8deefc89e40eb6a299540961aa5e8fd6b61 Mon Sep 17 00:00:00 2001 From: Mark Dilger Date: Mon, 16 Mar 2020 08:53:32 -0700 Subject: [PATCH v2] Adding missing Object Access hook invocations. There appears to be no reason for skipping the invocation of the object access hook infrastructure for the following commands, yet they were lacking the InvokeObjectPostCreateHook and InvokeObjectPostAlterHook calls that would be expected: ALTER RULE ALTER USER MAPPING CREATE ACCESS METHOD CREATE STATISTICS There doesn't seem to be any good regression test coverage for when and how the object_access_hook is invoked, so no additional coverage is included here, either. Adding regression test coverage seems like another patch to be submitted separately. --- src/backend/commands/amcmds.c | 5 +++++ src/backend/commands/foreigncmds.c | 3 +++ src/backend/commands/statscmds.c | 4 ++++ src/backend/rewrite/rewriteDefine.c | 2 ++ 4 files changed, 14 insertions(+) diff --git a/src/backend/commands/amcmds.c b/src/backend/commands/amcmds.c index 7546378bbb..1ecad090ee 100644 --- a/src/backend/commands/amcmds.c +++ b/src/backend/commands/amcmds.c @@ -18,6 +18,7 @@ #include "catalog/catalog.h" #include "catalog/dependency.h" #include "catalog/indexing.h" +#include "catalog/objectaccess.h" #include "catalog/pg_am.h" #include "catalog/pg_proc.h" #include "catalog/pg_type.h" @@ -107,6 +108,8 @@ CreateAccessMethod(CreateAmStmt *stmt) recordDependencyOnCurrentExtension(&myself, false); + InvokeObjectPostCreateHook(AccessMethodRelationId, amoid, 0); + table_close(rel, RowExclusiveLock); return myself; @@ -134,6 +137,8 @@ RemoveAccessMethodById(Oid amOid) CatalogTupleDelete(relation, &tup->t_self); + InvokeObjectDropHook(AccessMethodRelationId, amOid, 0); + ReleaseSysCache(tup); table_close(relation, RowExclusiveLock); diff --git a/src/backend/commands/foreigncmds.c b/src/backend/commands/foreigncmds.c index f197869752..a399ab4de9 100644 --- a/src/backend/commands/foreigncmds.c +++ b/src/backend/commands/foreigncmds.c @@ -1343,6 +1343,9 @@ AlterUserMapping(AlterUserMappingStmt *stmt) CatalogTupleUpdate(rel, &tp->t_self, tp); + InvokeObjectPostAlterHook(UserMappingRelationId, + umId, 0); + ObjectAddressSet(address, UserMappingRelationId, umId); heap_freetuple(tp); diff --git a/src/backend/commands/statscmds.c b/src/backend/commands/statscmds.c index 988cdba6f5..08d0da1109 100644 --- a/src/backend/commands/statscmds.c +++ b/src/backend/commands/statscmds.c @@ -374,6 +374,8 @@ CreateStatistics(CreateStatsStmt *stmt) relation_close(datarel, RowExclusiveLock); + InvokeObjectPostCreateHook(StatisticExtRelationId, statoid, 0); + /* * Invalidate relcache so that others see the new statistics object. */ @@ -568,6 +570,8 @@ RemoveStatisticsById(Oid statsOid) CatalogTupleDelete(relation, &tup->t_self); + InvokeObjectDropHook(StatisticExtRelationId, statsOid, 0); + ReleaseSysCache(tup); table_close(relation, RowExclusiveLock); diff --git a/src/backend/rewrite/rewriteDefine.c b/src/backend/rewrite/rewriteDefine.c index afc78b3316..9989df1107 100644 --- a/src/backend/rewrite/rewriteDefine.c +++ b/src/backend/rewrite/rewriteDefine.c @@ -1003,6 +1003,8 @@ RenameRewriteRule(RangeVar *relation, const char *oldName, CatalogTupleUpdate(pg_rewrite_desc, &ruletup->t_self, ruletup); + InvokeObjectPostAlterHook(RewriteRelationId, ruleOid, 0); + heap_freetuple(ruletup); table_close(pg_rewrite_desc, RowExclusiveLock); -- 2.21.1 (Apple Git-122.3)