1 /*------------------------------------------------------------------------- 2 * 3 * pg_trigger_d.h 4 * Macro definitions for pg_trigger 5 * 6 * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group 7 * Portions Copyright (c) 1994, Regents of the University of California 8 * 9 * NOTES 10 * ****************************** 11 * *** DO NOT EDIT THIS FILE! *** 12 * ****************************** 13 * 14 * It has been GENERATED by src/backend/catalog/genbki.pl 15 * 16 *------------------------------------------------------------------------- 17 */ 18 #ifndef PG_TRIGGER_D_H 19 #define PG_TRIGGER_D_H 20 21 #define TriggerRelationId 2620 22 23 #define Anum_pg_trigger_oid 1 24 #define Anum_pg_trigger_tgrelid 2 25 #define Anum_pg_trigger_tgparentid 3 26 #define Anum_pg_trigger_tgname 4 27 #define Anum_pg_trigger_tgfoid 5 28 #define Anum_pg_trigger_tgtype 6 29 #define Anum_pg_trigger_tgenabled 7 30 #define Anum_pg_trigger_tgisinternal 8 31 #define Anum_pg_trigger_tgconstrrelid 9 32 #define Anum_pg_trigger_tgconstrindid 10 33 #define Anum_pg_trigger_tgconstraint 11 34 #define Anum_pg_trigger_tgdeferrable 12 35 #define Anum_pg_trigger_tginitdeferred 13 36 #define Anum_pg_trigger_tgnargs 14 37 #define Anum_pg_trigger_tgattr 15 38 #define Anum_pg_trigger_tgargs 16 39 #define Anum_pg_trigger_tgqual 17 40 #define Anum_pg_trigger_tgoldtable 18 41 #define Anum_pg_trigger_tgnewtable 19 42 43 #define Natts_pg_trigger 19 44 45 46 /* Bits within tgtype */ 47 #define TRIGGER_TYPE_ROW (1 << 0) 48 #define TRIGGER_TYPE_BEFORE (1 << 1) 49 #define TRIGGER_TYPE_INSERT (1 << 2) 50 #define TRIGGER_TYPE_DELETE (1 << 3) 51 #define TRIGGER_TYPE_UPDATE (1 << 4) 52 #define TRIGGER_TYPE_TRUNCATE (1 << 5) 53 #define TRIGGER_TYPE_INSTEAD (1 << 6) 54 55 #define TRIGGER_TYPE_LEVEL_MASK (TRIGGER_TYPE_ROW) 56 #define TRIGGER_TYPE_STATEMENT 0 57 58 /* Note bits within TRIGGER_TYPE_TIMING_MASK aren't adjacent */ 59 #define TRIGGER_TYPE_TIMING_MASK \ 60 (TRIGGER_TYPE_BEFORE | TRIGGER_TYPE_INSTEAD) 61 #define TRIGGER_TYPE_AFTER 0 62 63 #define TRIGGER_TYPE_EVENT_MASK \ 64 (TRIGGER_TYPE_INSERT | TRIGGER_TYPE_DELETE | TRIGGER_TYPE_UPDATE | TRIGGER_TYPE_TRUNCATE) 65 66 /* Macros for manipulating tgtype */ 67 #define TRIGGER_CLEAR_TYPE(type) ((type) = 0) 68 69 #define TRIGGER_SETT_ROW(type) ((type) |= TRIGGER_TYPE_ROW) 70 #define TRIGGER_SETT_STATEMENT(type) ((type) |= TRIGGER_TYPE_STATEMENT) 71 #define TRIGGER_SETT_BEFORE(type) ((type) |= TRIGGER_TYPE_BEFORE) 72 #define TRIGGER_SETT_AFTER(type) ((type) |= TRIGGER_TYPE_AFTER) 73 #define TRIGGER_SETT_INSTEAD(type) ((type) |= TRIGGER_TYPE_INSTEAD) 74 #define TRIGGER_SETT_INSERT(type) ((type) |= TRIGGER_TYPE_INSERT) 75 #define TRIGGER_SETT_DELETE(type) ((type) |= TRIGGER_TYPE_DELETE) 76 #define TRIGGER_SETT_UPDATE(type) ((type) |= TRIGGER_TYPE_UPDATE) 77 #define TRIGGER_SETT_TRUNCATE(type) ((type) |= TRIGGER_TYPE_TRUNCATE) 78 79 #define TRIGGER_FOR_ROW(type) ((type) & TRIGGER_TYPE_ROW) 80 #define TRIGGER_FOR_BEFORE(type) (((type) & TRIGGER_TYPE_TIMING_MASK) == TRIGGER_TYPE_BEFORE) 81 #define TRIGGER_FOR_AFTER(type) (((type) & TRIGGER_TYPE_TIMING_MASK) == TRIGGER_TYPE_AFTER) 82 #define TRIGGER_FOR_INSTEAD(type) (((type) & TRIGGER_TYPE_TIMING_MASK) == TRIGGER_TYPE_INSTEAD) 83 #define TRIGGER_FOR_INSERT(type) ((type) & TRIGGER_TYPE_INSERT) 84 #define TRIGGER_FOR_DELETE(type) ((type) & TRIGGER_TYPE_DELETE) 85 #define TRIGGER_FOR_UPDATE(type) ((type) & TRIGGER_TYPE_UPDATE) 86 #define TRIGGER_FOR_TRUNCATE(type) ((type) & TRIGGER_TYPE_TRUNCATE) 87 88 /* 89 * Efficient macro for checking if tgtype matches a particular level 90 * (TRIGGER_TYPE_ROW or TRIGGER_TYPE_STATEMENT), timing (TRIGGER_TYPE_BEFORE, 91 * TRIGGER_TYPE_AFTER or TRIGGER_TYPE_INSTEAD), and event (TRIGGER_TYPE_INSERT, 92 * TRIGGER_TYPE_DELETE, TRIGGER_TYPE_UPDATE, or TRIGGER_TYPE_TRUNCATE). Note 93 * that a tgtype can match more than one event, but only one level or timing. 94 */ 95 #define TRIGGER_TYPE_MATCHES(type, level, timing, event) \ 96 (((type) & (TRIGGER_TYPE_LEVEL_MASK | TRIGGER_TYPE_TIMING_MASK | (event))) == ((level) | (timing) | (event))) 97 98 /* 99 * Macro to determine whether tgnewtable or tgoldtable has been specified for 100 * a trigger. 101 */ 102 #define TRIGGER_USES_TRANSITION_TABLE(namepointer) \ 103 ((namepointer) != (char *) NULL) 104 105 106 #endif /* PG_TRIGGER_D_H */ 107