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