PostgreSQL Source Code  git master
attnum.h
Go to the documentation of this file.
1 /*-------------------------------------------------------------------------
2  *
3  * attnum.h
4  * POSTGRES attribute number definitions.
5  *
6  *
7  * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
8  * Portions Copyright (c) 1994, Regents of the University of California
9  *
10  * src/include/access/attnum.h
11  *
12  *-------------------------------------------------------------------------
13  */
14 #ifndef ATTNUM_H
15 #define ATTNUM_H
16 
17 
18 /*
19  * user defined attribute numbers start at 1. -ay 2/95
20  */
21 typedef int16 AttrNumber;
22 
23 #define InvalidAttrNumber 0
24 #define MaxAttrNumber 32767
25 
26 /* ----------------
27  * support macros
28  * ----------------
29  */
30 /*
31  * AttributeNumberIsValid
32  * True iff the attribute number is valid.
33  */
34 #define AttributeNumberIsValid(attributeNumber) \
35  ((bool) ((attributeNumber) != InvalidAttrNumber))
36 
37 /*
38  * AttrNumberIsForUserDefinedAttr
39  * True iff the attribute number corresponds to a user defined attribute.
40  */
41 #define AttrNumberIsForUserDefinedAttr(attributeNumber) \
42  ((bool) ((attributeNumber) > 0))
43 
44 /*
45  * AttrNumberGetAttrOffset
46  * Returns the attribute offset for an attribute number.
47  *
48  * Note:
49  * Assumes the attribute number is for a user defined attribute.
50  */
51 #define AttrNumberGetAttrOffset(attNum) \
52 ( \
53  AssertMacro(AttrNumberIsForUserDefinedAttr(attNum)), \
54  ((attNum) - 1) \
55 )
56 
57 /*
58  * AttrOffsetGetAttrNumber
59  * Returns the attribute number for an attribute offset.
60  */
61 #define AttrOffsetGetAttrNumber(attributeOffset) \
62  ((AttrNumber) (1 + (attributeOffset)))
63 
64 #endif /* ATTNUM_H */
int16 AttrNumber
Definition: attnum.h:21
signed short int16
Definition: c.h:480