event_trigger.h 3.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. /*-------------------------------------------------------------------------
  2. *
  3. * event_trigger.h
  4. * Declarations for command trigger handling.
  5. *
  6. * Portions Copyright (c) 1996-2016, 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. #include "catalog/dependency.h"
  16. #include "catalog/objectaddress.h"
  17. #include "catalog/pg_event_trigger.h"
  18. #include "nodes/parsenodes.h"
  19. #include "utils/aclchk_internal.h"
  20. #include "tcop/deparse_utility.h"
  21. typedef struct EventTriggerData
  22. {
  23. NodeTag type;
  24. const char *event; /* event name */
  25. Node *parsetree; /* parse tree */
  26. const char *tag; /* command tag */
  27. } EventTriggerData;
  28. #define AT_REWRITE_ALTER_PERSISTENCE 0x01
  29. #define AT_REWRITE_DEFAULT_VAL 0x02
  30. #define AT_REWRITE_COLUMN_REWRITE 0x04
  31. #define AT_REWRITE_ALTER_OID 0x08
  32. /*
  33. * EventTriggerData is the node type that is passed as fmgr "context" info
  34. * when a function is called by the event trigger manager.
  35. */
  36. #define CALLED_AS_EVENT_TRIGGER(fcinfo) \
  37. ((fcinfo)->context != NULL && IsA((fcinfo)->context, EventTriggerData))
  38. extern Oid CreateEventTrigger(CreateEventTrigStmt *stmt);
  39. extern void RemoveEventTriggerById(Oid ctrigOid);
  40. extern Oid get_event_trigger_oid(const char *trigname, bool missing_ok);
  41. extern Oid AlterEventTrigger(AlterEventTrigStmt *stmt);
  42. extern ObjectAddress AlterEventTriggerOwner(const char *name, Oid newOwnerId);
  43. extern void AlterEventTriggerOwner_oid(Oid, Oid newOwnerId);
  44. extern bool EventTriggerSupportsObjectType(ObjectType obtype);
  45. extern bool EventTriggerSupportsObjectClass(ObjectClass objclass);
  46. extern bool EventTriggerSupportsGrantObjectType(GrantObjectType objtype);
  47. extern void EventTriggerDDLCommandStart(Node *parsetree);
  48. extern void EventTriggerDDLCommandEnd(Node *parsetree);
  49. extern void EventTriggerSQLDrop(Node *parsetree);
  50. extern void EventTriggerTableRewrite(Node *parsetree, Oid tableOid, int reason);
  51. extern bool EventTriggerBeginCompleteQuery(void);
  52. extern void EventTriggerEndCompleteQuery(void);
  53. extern bool trackDroppedObjectsNeeded(void);
  54. extern void EventTriggerSQLDropAddObject(const ObjectAddress *object,
  55. bool original, bool normal);
  56. extern void EventTriggerInhibitCommandCollection(void);
  57. extern void EventTriggerUndoInhibitCommandCollection(void);
  58. extern void EventTriggerCollectSimpleCommand(ObjectAddress address,
  59. ObjectAddress secondaryObject,
  60. Node *parsetree);
  61. extern void EventTriggerAlterTableStart(Node *parsetree);
  62. extern void EventTriggerAlterTableRelid(Oid objectId);
  63. extern void EventTriggerCollectAlterTableSubcmd(Node *subcmd,
  64. ObjectAddress address);
  65. extern void EventTriggerAlterTableEnd(void);
  66. extern void EventTriggerCollectGrant(InternalGrant *istmt);
  67. extern void EventTriggerCollectAlterOpFam(AlterOpFamilyStmt *stmt,
  68. Oid opfamoid, List *operators,
  69. List *procedures);
  70. extern void EventTriggerCollectCreateOpClass(CreateOpClassStmt *stmt,
  71. Oid opcoid, List *operators,
  72. List *procedures);
  73. extern void EventTriggerCollectAlterTSConfig(AlterTSConfigurationStmt *stmt,
  74. Oid cfgId, Oid *dictIds, int ndicts);
  75. extern void EventTriggerCollectAlterDefPrivs(AlterDefaultPrivilegesStmt *stmt);
  76. #endif /* EVENT_TRIGGER_H */