diff options
Diffstat (limited to 'src/include/commands/trigger.h')
-rw-r--r-- | src/include/commands/trigger.h | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/src/include/commands/trigger.h b/src/include/commands/trigger.h index 99350d55d13..8ab4342fa7a 100644 --- a/src/include/commands/trigger.h +++ b/src/include/commands/trigger.h @@ -32,6 +32,13 @@ extern DLLIMPORT TriggerData *CurrentTriggerData; #define TRIGGER_EVENT_ROW 0x00000004 #define TRIGGER_EVENT_BEFORE 0x00000008 +#define TRIGGER_DEFERRED_DONE 0x00000010 +#define TRIGGER_DEFERRED_CANCELED 0x00000020 +#define TRIGGER_DEFERRED_DEFERRABLE 0x00000040 +#define TRIGGER_DEFERRED_INITDEFERRED 0x00000080 +#define TRIGGER_DEFERRED_HAS_BEFORE 0x00000100 +#define TRIGGER_DEFERRED_MASK 0x000001F0 + #define TRIGGER_FIRED_BY_INSERT(event) \ (((TriggerEvent) (event) & TRIGGER_EVENT_OPMASK) == \ TRIGGER_EVENT_INSERT) @@ -68,4 +75,46 @@ extern void ExecARDeleteTriggers(EState *estate, ItemPointer tupleid); extern HeapTuple ExecBRUpdateTriggers(EState *estate, ItemPointer tupleid, HeapTuple tuple); extern void ExecARUpdateTriggers(EState *estate, ItemPointer tupleid, HeapTuple tuple); + + +/* ---------- + * Deferred trigger stuff + * ---------- + */ +typedef struct DeferredTriggerStatusData { + Oid dts_tgoid; + bool dts_tgisdeferred; +} DeferredTriggerStatusData; +typedef struct DeferredTriggerStatusData *DeferredTriggerStatus; + + +typedef struct DeferredTriggerEventItem { + Oid dti_tgoid; + int32 dti_state; +} DeferredTriggerEventItem; + + +typedef struct DeferredTriggerEventData { + int32 dte_event; + Oid dte_relid; + ItemPointerData dte_oldctid; + ItemPointerData dte_newctid; + int32 dte_n_items; + DeferredTriggerEventItem dte_item[1]; +} DeferredTriggerEventData; +typedef struct DeferredTriggerEventData *DeferredTriggerEvent; + + +extern int DeferredTriggerInit(void); +extern void DeferredTriggerBeginXact(void); +extern void DeferredTriggerEndQuery(void); +extern void DeferredTriggerEndXact(void); +extern void DeferredTriggerAbortXact(void); + +extern void DeferredTriggerSetState(ConstraintsSetStmt *stmt); + +extern void DeferredTriggerSaveEvent(Relation rel, int event, + HeapTuple oldtup, HeapTuple newtup); + + #endif /* TRIGGER_H */ |