aboutsummaryrefslogtreecommitdiff
path: root/src/include/commands/trigger.h
diff options
context:
space:
mode:
authorJan Wieck <JanWieck@Yahoo.com>1999-09-29 16:06:40 +0000
committerJan Wieck <JanWieck@Yahoo.com>1999-09-29 16:06:40 +0000
commit1547ee017c897725221d0752af4477121524c05b (patch)
tree775616278865cba3e01e521812d045489e40fd9b /src/include/commands/trigger.h
parentd810338d29bff178101e72c810c9dcfa3223c6c0 (diff)
downloadpostgresql-1547ee017c897725221d0752af4477121524c05b.tar.gz
postgresql-1547ee017c897725221d0752af4477121524c05b.zip
This is part #1 for of the DEFERRED CONSTRAINT TRIGGER support.
Implements the CREATE CONSTRAINT TRIGGER and SET CONSTRAINTS commands. TODO: Generic builtin trigger procedures Automatic execution of appropriate CREATE CONSTRAINT... at CREATE TABLE Support of new trigger type in pg_dump Swapping of huge # of events to disk Jan
Diffstat (limited to 'src/include/commands/trigger.h')
-rw-r--r--src/include/commands/trigger.h49
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 */