sepgsql-v9.3-post-alter-support.v3.part-1.patch
application/octet-stream
Filename: sepgsql-v9.3-post-alter-support.v3.part-1.patch
Type: application/octet-stream
Part: 0
Patch
Same data as JSON:
GET /api/v1/attachments/:id/patch
the parsed metadata as JSON — format, series position, per-file stats; never the diff bytes.
API reference →
Format: unified
Series: patch v9
| File | + | − |
|---|---|---|
| src/backend/catalog/dependency.c | 2 | 8 |
| src/backend/catalog/heap.c | 1 | 9 |
| src/backend/catalog/index.c | 2 | 9 |
| src/backend/catalog/Makefile | 2 | 1 |
| src/backend/catalog/objectaccess.c | 63 | 0 |
| src/backend/catalog/pg_collation.c | 1 | 2 |
| src/backend/catalog/pg_constraint.c | 1 | 2 |
| src/backend/catalog/pg_conversion.c | 1 | 2 |
| src/backend/catalog/pg_namespace.c | 1 | 2 |
| src/backend/catalog/pg_operator.c | 2 | 4 |
| src/backend/catalog/pg_proc.c | 1 | 2 |
| src/backend/catalog/pg_type.c | 2 | 4 |
| src/backend/commands/dbcommands.c | 2 | 10 |
| src/backend/commands/event_trigger.c | 1 | 2 |
| src/backend/commands/extension.c | 1 | 2 |
| src/backend/commands/foreigncmds.c | 3 | 6 |
| src/backend/commands/functioncmds.c | 1 | 2 |
| src/backend/commands/opclasscmds.c | 2 | 4 |
| src/backend/commands/proclang.c | 1 | 2 |
| src/backend/commands/tablecmds.c | 1 | 2 |
| src/backend/commands/tablespace.c | 2 | 10 |
| src/backend/commands/trigger.c | 1 | 2 |
| src/backend/commands/tsearchcmds.c | 4 | 8 |
| src/backend/commands/user.c | 2 | 10 |
| src/backend/rewrite/rewriteDefine.c | 1 | 2 |
| src/backend/storage/large_object/inv_api.c | 1 | 2 |
| src/backend/utils/init/globals.c | 0 | 7 |
| src/include/catalog/objectaccess.h | 9 | 6 |
src/backend/catalog/Makefile | 3 +-
src/backend/catalog/dependency.c | 10 +----
src/backend/catalog/heap.c | 10 +----
src/backend/catalog/index.c | 11 +----
src/backend/catalog/objectaccess.c | 63 ++++++++++++++++++++++++++++
src/backend/catalog/pg_collation.c | 3 +-
src/backend/catalog/pg_constraint.c | 3 +-
src/backend/catalog/pg_conversion.c | 3 +-
src/backend/catalog/pg_namespace.c | 3 +-
src/backend/catalog/pg_operator.c | 6 +--
src/backend/catalog/pg_proc.c | 3 +-
src/backend/catalog/pg_type.c | 6 +--
src/backend/commands/dbcommands.c | 12 +-----
src/backend/commands/event_trigger.c | 3 +-
src/backend/commands/extension.c | 3 +-
src/backend/commands/foreigncmds.c | 9 ++--
src/backend/commands/functioncmds.c | 3 +-
src/backend/commands/opclasscmds.c | 6 +--
src/backend/commands/proclang.c | 3 +-
src/backend/commands/tablecmds.c | 3 +-
src/backend/commands/tablespace.c | 12 +-----
src/backend/commands/trigger.c | 3 +-
src/backend/commands/tsearchcmds.c | 12 ++----
src/backend/commands/user.c | 12 +-----
src/backend/rewrite/rewriteDefine.c | 3 +-
src/backend/storage/large_object/inv_api.c | 3 +-
src/backend/utils/init/globals.c | 7 ----
src/include/catalog/objectaccess.h | 15 ++++---
28 files changed, 111 insertions(+), 122 deletions(-)
diff --git a/src/backend/catalog/Makefile b/src/backend/catalog/Makefile
index df6da1f..c4d3f3c 100644
--- a/src/backend/catalog/Makefile
+++ b/src/backend/catalog/Makefile
@@ -11,7 +11,8 @@ top_builddir = ../../..
include $(top_builddir)/src/Makefile.global
OBJS = catalog.o dependency.o heap.o index.o indexing.o namespace.o aclchk.o \
- objectaddress.o pg_aggregate.o pg_collation.o pg_constraint.o pg_conversion.o \
+ objectaccess.o objectaddress.o pg_aggregate.o pg_collation.o \
+ pg_constraint.o pg_conversion.o \
pg_depend.o pg_enum.o pg_inherits.o pg_largeobject.o pg_namespace.o \
pg_operator.o pg_proc.o pg_range.o pg_db_role_setting.o pg_shdepend.o \
pg_type.o storage.o toasting.o
diff --git a/src/backend/catalog/dependency.c b/src/backend/catalog/dependency.c
index 0b61c97..2d822a4 100644
--- a/src/backend/catalog/dependency.c
+++ b/src/backend/catalog/dependency.c
@@ -997,14 +997,8 @@ deleteOneObject(const ObjectAddress *object, Relation depRel, int flags)
HeapTuple tup;
/* DROP hook of the objects being removed */
- if (object_access_hook)
- {
- ObjectAccessDrop drop_arg;
-
- drop_arg.dropflags = flags;
- InvokeObjectAccessHook(OAT_DROP, object->classId, object->objectId,
- object->objectSubId, &drop_arg);
- }
+ InvokeObjectDropHookArg(object->classId, object->objectId,
+ object->objectSubId, flags);
/*
* Close depRel if we are doing a drop concurrently. The object deletion
diff --git a/src/backend/catalog/heap.c b/src/backend/catalog/heap.c
index d93d273..54de9a7 100644
--- a/src/backend/catalog/heap.c
+++ b/src/backend/catalog/heap.c
@@ -1277,15 +1277,7 @@ heap_create_with_catalog(const char *relname,
}
/* Post creation hook for new relation */
- if (object_access_hook)
- {
- ObjectAccessPostCreate post_create_args;
-
- memset(&post_create_args, 0, sizeof(ObjectAccessPostCreate));
- post_create_args.is_internal = is_internal;
- (*object_access_hook)(OAT_POST_CREATE, RelationRelationId,
- relid, 0, &post_create_args);
- }
+ InvokeObjectPostCreateHookArg(RelationRelationId, relid, 0, is_internal);
/*
* Store any supplied constraints and defaults.
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 92e8de1..36bc5d2 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -1026,15 +1026,8 @@ index_create(Relation heapRelation,
}
/* Post creation hook for new index */
- if (object_access_hook)
- {
- ObjectAccessPostCreate post_create_args;
-
- memset(&post_create_args, 0, sizeof(ObjectAccessPostCreate));
- post_create_args.is_internal = is_internal;
- (*object_access_hook)(OAT_POST_CREATE, RelationRelationId,
- indexRelationId, 0, &post_create_args);
- }
+ InvokeObjectPostCreateHookArg(RelationRelationId,
+ indexRelationId, 0, is_internal);
/*
* Advance the command counter so that we can see the newly-entered
diff --git a/src/backend/catalog/objectaccess.c b/src/backend/catalog/objectaccess.c
new file mode 100644
index 0000000..9dae242
--- /dev/null
+++ b/src/backend/catalog/objectaccess.c
@@ -0,0 +1,63 @@
+/* -------------------------------------------------------------------------
+ *
+ * objectaccess.c
+ * functions for object_access_hook on various events
+ *
+ * Portions Copyright (c) 1996-2012, PostgreSQL Global Development Group
+ * Portions Copyright (c) 1994, Regents of the University of California
+ *
+ * -------------------------------------------------------------------------
+ */
+#include "postgres.h"
+
+#include "catalog/objectaccess.h"
+
+/*
+ * Hook on object accesses. This is intended as infrastructure for security
+ * and logging plugins.
+ */
+object_access_hook_type object_access_hook = NULL;
+
+/*
+ * InvokeObjectPostCreateHookArg
+ *
+ * It is entrypoint of OAT_POST_CREATE event
+ */
+void
+InvokeObjectPostCreateHookArg(Oid classId, Oid objectId, int subId,
+ bool is_internal)
+{
+ ObjectAccessPostCreate pc_arg;
+
+ if (!object_access_hook)
+ return;
+
+ memset(&pc_arg, 0, sizeof(ObjectAccessPostCreate));
+ pc_arg.is_internal = is_internal;
+
+ (*object_access_hook)(OAT_POST_CREATE,
+ classId, objectId, subId,
+ (void *) &pc_arg);
+}
+
+/*
+ * InvokeObjectDropHookArg
+ *
+ * It is entrypoint of OAT_DROP event
+ */
+void
+InvokeObjectDropHookArg(Oid classId, Oid objectId, int subId,
+ int dropflags)
+{
+ ObjectAccessDrop drop_arg;
+
+ if (!object_access_hook)
+ return;
+
+ memset(&drop_arg, 0, sizeof(ObjectAccessDrop));
+ drop_arg.dropflags = dropflags;
+
+ (*object_access_hook)(OAT_DROP,
+ classId, objectId, subId,
+ (void *) &drop_arg);
+}
diff --git a/src/backend/catalog/pg_collation.c b/src/backend/catalog/pg_collation.c
index 6020d16..0c25554 100644
--- a/src/backend/catalog/pg_collation.c
+++ b/src/backend/catalog/pg_collation.c
@@ -136,8 +136,7 @@ CollationCreate(const char *collname, Oid collnamespace,
recordDependencyOnCurrentExtension(&myself, false);
/* Post creation hook for new collation */
- InvokeObjectAccessHook(OAT_POST_CREATE,
- CollationRelationId, oid, 0, NULL);
+ InvokeObjectPostCreateHook(CollationRelationId, oid, 0);
heap_freetuple(tup);
heap_close(rel, RowExclusiveLock);
diff --git a/src/backend/catalog/pg_constraint.c b/src/backend/catalog/pg_constraint.c
index 5e8c6da..1e6d947 100644
--- a/src/backend/catalog/pg_constraint.c
+++ b/src/backend/catalog/pg_constraint.c
@@ -367,8 +367,7 @@ CreateConstraintEntry(const char *constraintName,
}
/* Post creation hook for new constraint */
- InvokeObjectAccessHook(OAT_POST_CREATE,
- ConstraintRelationId, conOid, 0, NULL);
+ InvokeObjectPostCreateHook(ConstraintRelationId, conOid, 0);
return conOid;
}
diff --git a/src/backend/catalog/pg_conversion.c b/src/backend/catalog/pg_conversion.c
index 68f1aa7..caef609 100644
--- a/src/backend/catalog/pg_conversion.c
+++ b/src/backend/catalog/pg_conversion.c
@@ -136,8 +136,7 @@ ConversionCreate(const char *conname, Oid connamespace,
recordDependencyOnCurrentExtension(&myself, false);
/* Post creation hook for new conversion */
- InvokeObjectAccessHook(OAT_POST_CREATE, ConversionRelationId,
- HeapTupleGetOid(tup), 0, NULL);
+ InvokeObjectPostCreateHook(ConversionRelationId, HeapTupleGetOid(tup), 0);
heap_freetuple(tup);
heap_close(rel, RowExclusiveLock);
diff --git a/src/backend/catalog/pg_namespace.c b/src/backend/catalog/pg_namespace.c
index 098df22..b322ff6 100644
--- a/src/backend/catalog/pg_namespace.c
+++ b/src/backend/catalog/pg_namespace.c
@@ -96,8 +96,7 @@ NamespaceCreate(const char *nspName, Oid ownerId, bool isTemp)
recordDependencyOnCurrentExtension(&myself, false);
/* Post creation hook for new schema */
- InvokeObjectAccessHook(OAT_POST_CREATE,
- NamespaceRelationId, nspoid, 0, NULL);
+ InvokeObjectPostCreateHook(NamespaceRelationId, nspoid, 0);
return nspoid;
}
diff --git a/src/backend/catalog/pg_operator.c b/src/backend/catalog/pg_operator.c
index 88af345..bd44333 100644
--- a/src/backend/catalog/pg_operator.c
+++ b/src/backend/catalog/pg_operator.c
@@ -275,8 +275,7 @@ OperatorShellMake(const char *operatorName,
heap_freetuple(tup);
/* Post creation hook for new shell operator */
- InvokeObjectAccessHook(OAT_POST_CREATE,
- OperatorRelationId, operatorObjectId, 0, NULL);
+ InvokeObjectPostCreateHook(OperatorRelationId, operatorObjectId, 0);
/*
* Make sure the tuple is visible for subsequent lookups/updates.
@@ -544,8 +543,7 @@ OperatorCreate(const char *operatorName,
makeOperatorDependencies(tup);
/* Post creation hook for new operator */
- InvokeObjectAccessHook(OAT_POST_CREATE,
- OperatorRelationId, operatorObjectId, 0, NULL);
+ InvokeObjectPostCreateHook(OperatorRelationId, operatorObjectId, 0);
heap_close(pg_operator_desc, RowExclusiveLock);
diff --git a/src/backend/catalog/pg_proc.c b/src/backend/catalog/pg_proc.c
index ba73264..444ee78 100644
--- a/src/backend/catalog/pg_proc.c
+++ b/src/backend/catalog/pg_proc.c
@@ -661,8 +661,7 @@ ProcedureCreate(const char *procedureName,
heap_freetuple(tup);
/* Post creation hook for new function */
- InvokeObjectAccessHook(OAT_POST_CREATE,
- ProcedureRelationId, retval, 0, NULL);
+ InvokeObjectPostCreateHook(ProcedureRelationId, retval, 0);
heap_close(rel, RowExclusiveLock);
diff --git a/src/backend/catalog/pg_type.c b/src/backend/catalog/pg_type.c
index 49133ee..cf0ebcc 100644
--- a/src/backend/catalog/pg_type.c
+++ b/src/backend/catalog/pg_type.c
@@ -163,8 +163,7 @@ TypeShellMake(const char *typeName, Oid typeNamespace, Oid ownerId)
false);
/* Post creation hook for new shell type */
- InvokeObjectAccessHook(OAT_POST_CREATE,
- TypeRelationId, typoid, 0, NULL);
+ InvokeObjectPostCreateHook(TypeRelationId, typoid, 0);
/*
* clean up and return the type-oid
@@ -476,8 +475,7 @@ TypeCreate(Oid newTypeOid,
rebuildDeps);
/* Post creation hook for new type */
- InvokeObjectAccessHook(OAT_POST_CREATE,
- TypeRelationId, typeObjectId, 0, NULL);
+ InvokeObjectPostCreateHook(TypeRelationId, typeObjectId, 0);
/*
* finish up
diff --git a/src/backend/commands/dbcommands.c b/src/backend/commands/dbcommands.c
index 3c13c47..09c06ed 100644
--- a/src/backend/commands/dbcommands.c
+++ b/src/backend/commands/dbcommands.c
@@ -520,8 +520,7 @@ createdb(const CreatedbStmt *stmt)
copyTemplateDependencies(src_dboid, dboid);
/* Post creation hook for new database */
- InvokeObjectAccessHook(OAT_POST_CREATE,
- DatabaseRelationId, dboid, 0, NULL);
+ InvokeObjectPostCreateHook(DatabaseRelationId, dboid, 0);
/*
* Force a checkpoint before starting the copy. This will force dirty
@@ -784,14 +783,7 @@ dropdb(const char *dbname, bool missing_ok)
dbname);
/* DROP hook for the database being removed */
- if (object_access_hook)
- {
- ObjectAccessDrop drop_arg;
-
- memset(&drop_arg, 0, sizeof(ObjectAccessDrop));
- InvokeObjectAccessHook(OAT_DROP,
- DatabaseRelationId, db_id, 0, &drop_arg);
- }
+ InvokeObjectDropHook(DatabaseRelationId, db_id, 0);
/*
* Disallow dropping a DB that is marked istemplate. This is just to
diff --git a/src/backend/commands/event_trigger.c b/src/backend/commands/event_trigger.c
index 2e24e0d..97dde84 100644
--- a/src/backend/commands/event_trigger.c
+++ b/src/backend/commands/event_trigger.c
@@ -307,8 +307,7 @@ insert_event_trigger_tuple(char *trigname, char *eventname, Oid evtOwner,
recordDependencyOn(&myself, &referenced, DEPENDENCY_NORMAL);
/* Post creation hook for new operator family */
- InvokeObjectAccessHook(OAT_POST_CREATE,
- EventTriggerRelationId, trigoid, 0, NULL);
+ InvokeObjectPostCreateHook(EventTriggerRelationId, trigoid, 0);
/* Close pg_event_trigger. */
heap_close(tgrel, RowExclusiveLock);
diff --git a/src/backend/commands/extension.c b/src/backend/commands/extension.c
index 47631be..e45de83 100644
--- a/src/backend/commands/extension.c
+++ b/src/backend/commands/extension.c
@@ -1560,8 +1560,7 @@ InsertExtensionTuple(const char *extName, Oid extOwner,
recordDependencyOn(&myself, &otherext, DEPENDENCY_NORMAL);
}
/* Post creation hook for new extension */
- InvokeObjectAccessHook(OAT_POST_CREATE,
- ExtensionRelationId, extensionOid, 0, NULL);
+ InvokeObjectPostCreateHook(ExtensionRelationId, extensionOid, 0);
return extensionOid;
}
diff --git a/src/backend/commands/foreigncmds.c b/src/backend/commands/foreigncmds.c
index 2d73d2d..e2f86d2 100644
--- a/src/backend/commands/foreigncmds.c
+++ b/src/backend/commands/foreigncmds.c
@@ -589,8 +589,7 @@ CreateForeignDataWrapper(CreateFdwStmt *stmt)
recordDependencyOnCurrentExtension(&myself, false);
/* Post creation hook for new foreign data wrapper */
- InvokeObjectAccessHook(OAT_POST_CREATE,
- ForeignDataWrapperRelationId, fdwId, 0, NULL);
+ InvokeObjectPostCreateHook(ForeignDataWrapperRelationId, fdwId, 0);
heap_close(rel, RowExclusiveLock);
}
@@ -886,8 +885,7 @@ CreateForeignServer(CreateForeignServerStmt *stmt)
recordDependencyOnCurrentExtension(&myself, false);
/* Post creation hook for new foreign server */
- InvokeObjectAccessHook(OAT_POST_CREATE,
- ForeignServerRelationId, srvId, 0, NULL);
+ InvokeObjectPostCreateHook(ForeignServerRelationId, srvId, 0);
heap_close(rel, RowExclusiveLock);
}
@@ -1127,8 +1125,7 @@ CreateUserMapping(CreateUserMappingStmt *stmt)
recordDependencyOnCurrentExtension(&myself, false);
/* Post creation hook for new user mapping */
- InvokeObjectAccessHook(OAT_POST_CREATE,
- UserMappingRelationId, umId, 0, NULL);
+ InvokeObjectPostCreateHook(UserMappingRelationId, umId, 0);
heap_close(rel, RowExclusiveLock);
}
diff --git a/src/backend/commands/functioncmds.c b/src/backend/commands/functioncmds.c
index cf0613f..26a806b 100644
--- a/src/backend/commands/functioncmds.c
+++ b/src/backend/commands/functioncmds.c
@@ -1610,8 +1610,7 @@ CreateCast(CreateCastStmt *stmt)
recordDependencyOnCurrentExtension(&myself, false);
/* Post creation hook for new cast */
- InvokeObjectAccessHook(OAT_POST_CREATE,
- CastRelationId, castid, 0, NULL);
+ InvokeObjectPostCreateHook(CastRelationId, castid, 0);
heap_freetuple(tuple);
diff --git a/src/backend/commands/opclasscmds.c b/src/backend/commands/opclasscmds.c
index 044ddd3..c8e0e75 100644
--- a/src/backend/commands/opclasscmds.c
+++ b/src/backend/commands/opclasscmds.c
@@ -309,8 +309,7 @@ CreateOpFamily(char *amname, char *opfname, Oid namespaceoid, Oid amoid)
recordDependencyOnCurrentExtension(&myself, false);
/* Post creation hook for new operator family */
- InvokeObjectAccessHook(OAT_POST_CREATE,
- OperatorFamilyRelationId, opfamilyoid, 0, NULL);
+ InvokeObjectPostCreateHook(OperatorFamilyRelationId, opfamilyoid, 0);
heap_close(rel, RowExclusiveLock);
@@ -710,8 +709,7 @@ DefineOpClass(CreateOpClassStmt *stmt)
recordDependencyOnCurrentExtension(&myself, false);
/* Post creation hook for new operator class */
- InvokeObjectAccessHook(OAT_POST_CREATE,
- OperatorClassRelationId, opclassoid, 0, NULL);
+ InvokeObjectPostCreateHook(OperatorClassRelationId, opclassoid, 0);
heap_close(rel, RowExclusiveLock);
}
diff --git a/src/backend/commands/proclang.c b/src/backend/commands/proclang.c
index 6526b7e..2e446b5 100644
--- a/src/backend/commands/proclang.c
+++ b/src/backend/commands/proclang.c
@@ -429,8 +429,7 @@ create_proc_lang(const char *languageName, bool replace,
}
/* Post creation hook for new procedural language */
- InvokeObjectAccessHook(OAT_POST_CREATE,
- LanguageRelationId, myself.objectId, 0, NULL);
+ InvokeObjectPostCreateHook(LanguageRelationId, myself.objectId, 0);
heap_close(rel, RowExclusiveLock);
}
diff --git a/src/backend/commands/tablecmds.c b/src/backend/commands/tablecmds.c
index 4065740..d516e2a 100644
--- a/src/backend/commands/tablecmds.c
+++ b/src/backend/commands/tablecmds.c
@@ -4462,8 +4462,7 @@ ATExecAddColumn(List **wqueue, AlteredTableInfo *tab, Relation rel,
heap_freetuple(reltup);
/* Post creation hook for new attribute */
- InvokeObjectAccessHook(OAT_POST_CREATE,
- RelationRelationId, myrelid, newattnum, NULL);
+ InvokeObjectPostCreateHook(RelationRelationId, myrelid, newattnum);
heap_close(pgclass, RowExclusiveLock);
diff --git a/src/backend/commands/tablespace.c b/src/backend/commands/tablespace.c
index d80b3a6..e794ecf 100644
--- a/src/backend/commands/tablespace.c
+++ b/src/backend/commands/tablespace.c
@@ -331,8 +331,7 @@ CreateTableSpace(CreateTableSpaceStmt *stmt)
recordDependencyOnOwner(TableSpaceRelationId, tablespaceoid, ownerId);
/* Post creation hook for new tablespace */
- InvokeObjectAccessHook(OAT_POST_CREATE,
- TableSpaceRelationId, tablespaceoid, 0, NULL);
+ InvokeObjectPostCreateHook(TableSpaceRelationId, tablespaceoid, 0);
create_tablespace_directories(location, tablespaceoid);
@@ -437,14 +436,7 @@ DropTableSpace(DropTableSpaceStmt *stmt)
tablespacename);
/* DROP hook for the tablespace being removed */
- if (object_access_hook)
- {
- ObjectAccessDrop drop_arg;
-
- memset(&drop_arg, 0, sizeof(ObjectAccessDrop));
- InvokeObjectAccessHook(OAT_DROP, TableSpaceRelationId,
- tablespaceoid, 0, &drop_arg);
- }
+ InvokeObjectDropHook(TableSpaceRelationId, tablespaceoid, 0);
/*
* Remove the pg_tablespace tuple (this will roll back if we fail below)
diff --git a/src/backend/commands/trigger.c b/src/backend/commands/trigger.c
index 91ef779..4a369a4 100644
--- a/src/backend/commands/trigger.c
+++ b/src/backend/commands/trigger.c
@@ -741,8 +741,7 @@ CreateTrigger(CreateTrigStmt *stmt, const char *queryString,
DEPENDENCY_NORMAL);
/* Post creation hook for new trigger */
- InvokeObjectAccessHook(OAT_POST_CREATE,
- TriggerRelationId, trigoid, 0, NULL);
+ InvokeObjectPostCreateHook(TriggerRelationId, trigoid, 0);
/* Keep lock on target rel until end of xact */
heap_close(rel, NoLock);
diff --git a/src/backend/commands/tsearchcmds.c b/src/backend/commands/tsearchcmds.c
index 9dbfa0c..64e9885 100644
--- a/src/backend/commands/tsearchcmds.c
+++ b/src/backend/commands/tsearchcmds.c
@@ -272,8 +272,7 @@ DefineTSParser(List *names, List *parameters)
makeParserDependencies(tup);
/* Post creation hook for new text search parser */
- InvokeObjectAccessHook(OAT_POST_CREATE,
- TSParserRelationId, prsOid, 0, NULL);
+ InvokeObjectPostCreateHook(TSParserRelationId, prsOid, 0);
heap_freetuple(tup);
@@ -477,8 +476,7 @@ DefineTSDictionary(List *names, List *parameters)
makeDictionaryDependencies(tup);
/* Post creation hook for new text search dictionary */
- InvokeObjectAccessHook(OAT_POST_CREATE,
- TSDictionaryRelationId, dictOid, 0, NULL);
+ InvokeObjectPostCreateHook(TSDictionaryRelationId, dictOid, 0);
heap_freetuple(tup);
@@ -790,8 +788,7 @@ DefineTSTemplate(List *names, List *parameters)
makeTSTemplateDependencies(tup);
/* Post creation hook for new text search template */
- InvokeObjectAccessHook(OAT_POST_CREATE,
- TSTemplateRelationId, dictOid, 0, NULL);
+ InvokeObjectPostCreateHook(TSTemplateRelationId, dictOid, 0);
heap_freetuple(tup);
@@ -1084,8 +1081,7 @@ DefineTSConfiguration(List *names, List *parameters)
makeConfigurationDependencies(tup, false, mapRel);
/* Post creation hook for new text search configuration */
- InvokeObjectAccessHook(OAT_POST_CREATE,
- TSConfigRelationId, cfgOid, 0, NULL);
+ InvokeObjectPostCreateHook(TSConfigRelationId, cfgOid, 0);
heap_freetuple(tup);
diff --git a/src/backend/commands/user.c b/src/backend/commands/user.c
index f178167..c1b7b93 100644
--- a/src/backend/commands/user.c
+++ b/src/backend/commands/user.c
@@ -426,8 +426,7 @@ CreateRole(CreateRoleStmt *stmt)
GetUserId(), false);
/* Post creation hook for new role */
- InvokeObjectAccessHook(OAT_POST_CREATE,
- AuthIdRelationId, roleid, 0, NULL);
+ InvokeObjectPostCreateHook(AuthIdRelationId, roleid, 0);
/*
* Close pg_authid, but keep lock till commit.
@@ -935,14 +934,7 @@ DropRole(DropRoleStmt *stmt)
errmsg("must be superuser to drop superusers")));
/* DROP hook for the role being removed */
- if (object_access_hook)
- {
- ObjectAccessDrop drop_arg;
-
- memset(&drop_arg, 0, sizeof(ObjectAccessDrop));
- InvokeObjectAccessHook(OAT_DROP,
- AuthIdRelationId, roleid, 0, &drop_arg);
- }
+ InvokeObjectDropHook(AuthIdRelationId, roleid, 0);
/*
* Lock the role, so nobody can add dependencies to her while we drop
diff --git a/src/backend/rewrite/rewriteDefine.c b/src/backend/rewrite/rewriteDefine.c
index 55b0fed..17e3513 100644
--- a/src/backend/rewrite/rewriteDefine.c
+++ b/src/backend/rewrite/rewriteDefine.c
@@ -179,8 +179,7 @@ InsertRule(char *rulname,
}
/* Post creation hook for new rule */
- InvokeObjectAccessHook(OAT_POST_CREATE,
- RewriteRelationId, rewriteObjectId, 0, NULL);
+ InvokeObjectPostCreateHook(RewriteRelationId, rewriteObjectId, 0);
heap_close(pg_rewrite_desc, RowExclusiveLock);
diff --git a/src/backend/storage/large_object/inv_api.c b/src/backend/storage/large_object/inv_api.c
index ad8424b..b2c8781 100644
--- a/src/backend/storage/large_object/inv_api.c
+++ b/src/backend/storage/large_object/inv_api.c
@@ -218,8 +218,7 @@ inv_create(Oid lobjId)
lobjId_new, GetUserId());
/* Post creation hook for new large object */
- InvokeObjectAccessHook(OAT_POST_CREATE,
- LargeObjectRelationId, lobjId_new, 0, NULL);
+ InvokeObjectPostCreateHook(LargeObjectRelationId, lobjId_new, 0);
/*
* Advance command counter to make new tuple visible to later operations.
diff --git a/src/backend/utils/init/globals.c b/src/backend/utils/init/globals.c
index 4b66bd3..ce072ab 100644
--- a/src/backend/utils/init/globals.c
+++ b/src/backend/utils/init/globals.c
@@ -18,7 +18,6 @@
*/
#include "postgres.h"
-#include "catalog/objectaccess.h"
#include "libpq/pqcomm.h"
#include "miscadmin.h"
#include "storage/backendid.h"
@@ -124,9 +123,3 @@ int VacuumCostBalance = 0; /* working state for vacuum */
bool VacuumCostActive = false;
int GinFuzzySearchLimit = 0;
-
-/*
- * Hook on object accesses. This is intended as infrastructure for security
- * and logging plugins.
- */
-object_access_hook_type object_access_hook = NULL;
diff --git a/src/include/catalog/objectaccess.h b/src/include/catalog/objectaccess.h
index b4b84a6..9d1937d 100644
--- a/src/include/catalog/objectaccess.h
+++ b/src/include/catalog/objectaccess.h
@@ -66,11 +66,14 @@ typedef void (*object_access_hook_type) (ObjectAccessType access,
extern PGDLLIMPORT object_access_hook_type object_access_hook;
-#define InvokeObjectAccessHook(access,classId,objectId,subId,arg) \
- do { \
- if (object_access_hook) \
- (*object_access_hook)((access),(classId), \
- (objectId),(subId),(arg)); \
- } while(0)
+extern void InvokeObjectPostCreateHookArg(Oid classId, Oid objectId, int subId,
+ bool is_internal);
+extern void InvokeObjectDropHookArg(Oid classId, Oid objectId, int subId,
+ int dropflags);
+
+#define InvokeObjectPostCreateHook(classId,objectId,subId) \
+ InvokeObjectPostCreateHookArg((classId),(objectId),(subId),false)
+#define InvokeObjectDropHook(classId,objectId,subId) \
+ InvokeObjectDropHookArg((classId),(objectId),(subId),0)
#endif /* OBJECTACCESS_H */