diff options
Diffstat (limited to 'src/backend/commands/event_trigger.c')
-rw-r--r-- | src/backend/commands/event_trigger.c | 24 |
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; } |