PostgreSQL Source Code  git master
event_trigger.h
Go to the documentation of this file.
1 /*-------------------------------------------------------------------------
2  *
3  * event_trigger.h
4  * Declarations for command trigger handling.
5  *
6  * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
7  * Portions Copyright (c) 1994, Regents of the University of California
8  *
9  * src/include/commands/event_trigger.h
10  *
11  *-------------------------------------------------------------------------
12  */
13 #ifndef EVENT_TRIGGER_H
14 #define EVENT_TRIGGER_H
15 
16 #include "catalog/dependency.h"
17 #include "catalog/objectaddress.h"
19 #include "nodes/parsenodes.h"
20 #include "tcop/cmdtag.h"
21 #include "tcop/deparse_utility.h"
22 #include "utils/aclchk_internal.h"
23 
24 typedef struct EventTriggerData
25 {
27  const char *event; /* event name */
28  Node *parsetree; /* parse tree */
31 
32 extern PGDLLIMPORT bool event_triggers;
33 
34 #define AT_REWRITE_ALTER_PERSISTENCE 0x01
35 #define AT_REWRITE_DEFAULT_VAL 0x02
36 #define AT_REWRITE_COLUMN_REWRITE 0x04
37 #define AT_REWRITE_ACCESS_METHOD 0x08
38 
39 /*
40  * EventTriggerData is the node type that is passed as fmgr "context" info
41  * when a function is called by the event trigger manager.
42  */
43 #define CALLED_AS_EVENT_TRIGGER(fcinfo) \
44  ((fcinfo)->context != NULL && IsA((fcinfo)->context, EventTriggerData))
45 
47 extern Oid get_event_trigger_oid(const char *trigname, bool missing_ok);
48 
50 extern ObjectAddress AlterEventTriggerOwner(const char *name, Oid newOwnerId);
51 extern void AlterEventTriggerOwner_oid(Oid, Oid newOwnerId);
52 
53 extern bool EventTriggerSupportsObjectType(ObjectType obtype);
54 extern bool EventTriggerSupportsObjectClass(ObjectClass objclass);
55 extern void EventTriggerDDLCommandStart(Node *parsetree);
56 extern void EventTriggerDDLCommandEnd(Node *parsetree);
57 extern void EventTriggerSQLDrop(Node *parsetree);
58 extern void EventTriggerTableRewrite(Node *parsetree, Oid tableOid, int reason);
59 extern void EventTriggerOnLogin(void);
60 
61 extern bool EventTriggerBeginCompleteQuery(void);
62 extern void EventTriggerEndCompleteQuery(void);
63 extern bool trackDroppedObjectsNeeded(void);
64 extern void EventTriggerSQLDropAddObject(const ObjectAddress *object,
65  bool original, bool normal);
66 
67 extern void EventTriggerInhibitCommandCollection(void);
69 
71  ObjectAddress secondaryObject,
72  Node *parsetree);
73 
74 extern void EventTriggerAlterTableStart(Node *parsetree);
75 extern void EventTriggerAlterTableRelid(Oid objectId);
76 extern void EventTriggerCollectAlterTableSubcmd(Node *subcmd,
77  ObjectAddress address);
78 extern void EventTriggerAlterTableEnd(void);
79 
80 extern void EventTriggerCollectGrant(InternalGrant *istmt);
82  Oid opfamoid, List *operators,
83  List *procedures);
85  Oid opcoid, List *operators,
86  List *procedures);
88  Oid cfgId, Oid *dictIds, int ndicts);
90 
91 #endif /* EVENT_TRIGGER_H */
#define PGDLLIMPORT
Definition: c.h:1303
CommandTag
Definition: cmdtag.h:23
ObjectClass
Definition: dependency.h:89
void EventTriggerUndoInhibitCommandCollection(void)
void EventTriggerSQLDropAddObject(const ObjectAddress *object, bool original, bool normal)
void EventTriggerAlterTableStart(Node *parsetree)
void EventTriggerOnLogin(void)
void EventTriggerCollectAlterDefPrivs(AlterDefaultPrivilegesStmt *stmt)
bool trackDroppedObjectsNeeded(void)
void EventTriggerDDLCommandStart(Node *parsetree)
void EventTriggerInhibitCommandCollection(void)
bool EventTriggerBeginCompleteQuery(void)
void EventTriggerTableRewrite(Node *parsetree, Oid tableOid, int reason)
bool EventTriggerSupportsObjectType(ObjectType obtype)
Oid CreateEventTrigger(CreateEventTrigStmt *stmt)
Oid AlterEventTrigger(AlterEventTrigStmt *stmt)
void EventTriggerCollectGrant(InternalGrant *istmt)
void EventTriggerSQLDrop(Node *parsetree)
void EventTriggerEndCompleteQuery(void)
void EventTriggerAlterTableRelid(Oid objectId)
struct EventTriggerData EventTriggerData
void EventTriggerCollectAlterTSConfig(AlterTSConfigurationStmt *stmt, Oid cfgId, Oid *dictIds, int ndicts)
PGDLLIMPORT bool event_triggers
Definition: event_trigger.c:80
void AlterEventTriggerOwner_oid(Oid, Oid newOwnerId)
void EventTriggerAlterTableEnd(void)
void EventTriggerCollectAlterOpFam(AlterOpFamilyStmt *stmt, Oid opfamoid, List *operators, List *procedures)
void EventTriggerCollectCreateOpClass(CreateOpClassStmt *stmt, Oid opcoid, List *operators, List *procedures)
bool EventTriggerSupportsObjectClass(ObjectClass objclass)
void EventTriggerCollectSimpleCommand(ObjectAddress address, ObjectAddress secondaryObject, Node *parsetree)
void EventTriggerDDLCommandEnd(Node *parsetree)
void EventTriggerCollectAlterTableSubcmd(Node *subcmd, ObjectAddress address)
Oid get_event_trigger_oid(const char *trigname, bool missing_ok)
ObjectAddress AlterEventTriggerOwner(const char *name, Oid newOwnerId)
#define stmt
Definition: indent_codes.h:59
NodeTag
Definition: nodes.h:27
ObjectType
Definition: parsenodes.h:2108
unsigned int Oid
Definition: postgres_ext.h:31
CommandTag tag
Definition: event_trigger.h:29
const char * event
Definition: event_trigger.h:27
Definition: pg_list.h:54
Definition: nodes.h:129
const char * name