aboutsummaryrefslogtreecommitdiff
path: root/src/backend/commands/event_trigger.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/commands/event_trigger.c')
-rw-r--r--src/backend/commands/event_trigger.c24
1 files changed, 16 insertions, 8 deletions
diff --git a/src/backend/commands/event_trigger.c b/src/backend/commands/event_trigger.c
index 722c3cf118c..e23cacd067f 100644
--- a/src/backend/commands/event_trigger.c
+++ b/src/backend/commands/event_trigger.c
@@ -94,15 +94,15 @@ static void AlterEventTriggerOwner_internal(Relation rel,
static event_trigger_command_tag_check_result check_ddl_tag(const char *tag);
static void error_duplicate_filter_variable(const char *defname);
static Datum filter_list_to_array(List *filterlist);
-static void insert_event_trigger_tuple(char *trigname, char *eventname,
- Oid evtOwner, Oid funcoid, List *tags);
+static Oid insert_event_trigger_tuple(char *trigname, char *eventname,
+ Oid evtOwner, Oid funcoid, List *tags);
static void validate_ddl_tags(const char *filtervar, List *taglist);
static void EventTriggerInvoke(List *fn_oid_list, EventTriggerData *trigdata);
/*
* Create an event trigger.
*/
-void
+Oid
CreateEventTrigger(CreateEventTrigStmt *stmt)
{
HeapTuple tuple;
@@ -173,8 +173,8 @@ CreateEventTrigger(CreateEventTrigStmt *stmt)
NameListToString(stmt->funcname))));
/* Insert catalog entries. */
- insert_event_trigger_tuple(stmt->trigname, stmt->eventname,
- evtowner, funcoid, tags);
+ return insert_event_trigger_tuple(stmt->trigname, stmt->eventname,
+ evtowner, funcoid, tags);
}
/*
@@ -260,7 +260,7 @@ error_duplicate_filter_variable(const char *defname)
/*
* Insert the new pg_event_trigger row and record dependencies.
*/
-static void
+static Oid
insert_event_trigger_tuple(char *trigname, char *eventname, Oid evtOwner,
Oid funcoid, List *taglist)
{
@@ -312,6 +312,8 @@ insert_event_trigger_tuple(char *trigname, char *eventname, Oid evtOwner,
/* Close pg_event_trigger. */
heap_close(tgrel, RowExclusiveLock);
+
+ return trigoid;
}
/*
@@ -376,11 +378,12 @@ RemoveEventTriggerById(Oid trigOid)
/*
* ALTER EVENT TRIGGER foo ENABLE|DISABLE|ENABLE ALWAYS|REPLICA
*/
-void
+Oid
AlterEventTrigger(AlterEventTrigStmt *stmt)
{
Relation tgrel;
HeapTuple tup;
+ Oid trigoid;
Form_pg_event_trigger evtForm;
char tgenabled = stmt->tgenabled;
@@ -393,7 +396,10 @@ AlterEventTrigger(AlterEventTrigStmt *stmt)
(errcode(ERRCODE_UNDEFINED_OBJECT),
errmsg("event trigger \"%s\" does not exist",
stmt->trigname)));
- if (!pg_event_trigger_ownercheck(HeapTupleGetOid(tup), GetUserId()))
+
+ trigoid = HeapTupleGetOid(tup);
+
+ if (!pg_event_trigger_ownercheck(trigoid, GetUserId()))
aclcheck_error(ACLCHECK_NOT_OWNER, ACL_KIND_EVENT_TRIGGER,
stmt->trigname);
@@ -407,6 +413,8 @@ AlterEventTrigger(AlterEventTrigStmt *stmt)
/* clean up */
heap_freetuple(tup);
heap_close(tgrel, RowExclusiveLock);
+
+ return trigoid;
}