PostgreSQL Source Code  git master
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros
pg_attribute.h File Reference
#include "catalog/genbki.h"
Include dependency graph for pg_attribute.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define AttributeRelationId   1249
#define AttributeRelation_Rowtype_Id   75
#define ATTRIBUTE_FIXED_PART_SIZE   (offsetof(FormData_pg_attribute,attcollation) + sizeof(Oid))
#define Natts_pg_attribute   21
#define Anum_pg_attribute_attrelid   1
#define Anum_pg_attribute_attname   2
#define Anum_pg_attribute_atttypid   3
#define Anum_pg_attribute_attstattarget   4
#define Anum_pg_attribute_attlen   5
#define Anum_pg_attribute_attnum   6
#define Anum_pg_attribute_attndims   7
#define Anum_pg_attribute_attcacheoff   8
#define Anum_pg_attribute_atttypmod   9
#define Anum_pg_attribute_attbyval   10
#define Anum_pg_attribute_attstorage   11
#define Anum_pg_attribute_attalign   12
#define Anum_pg_attribute_attnotnull   13
#define Anum_pg_attribute_atthasdef   14
#define Anum_pg_attribute_attisdropped   15
#define Anum_pg_attribute_attislocal   16
#define Anum_pg_attribute_attinhcount   17
#define Anum_pg_attribute_attcollation   18
#define Anum_pg_attribute_attacl   19
#define Anum_pg_attribute_attoptions   20
#define Anum_pg_attribute_attfdwoptions   21

Typedefs

typedef FormData_pg_attributeForm_pg_attribute

Functions

 CATALOG (pg_attribute, 1249) BKI_BOOTSTRAP BKI_WITHOUT_OIDS BKI_ROWTYPE_OID(75) BKI_SCHEMA_MACRO

Variables

 FormData_pg_attribute

Macro Definition Documentation

#define Anum_pg_attribute_attacl   19
#define Anum_pg_attribute_attalign   12

Definition at line 195 of file pg_attribute.h.

Referenced by InsertPgAttributeTuple().

#define Anum_pg_attribute_attbyval   10

Definition at line 193 of file pg_attribute.h.

Referenced by InsertPgAttributeTuple().

#define Anum_pg_attribute_attcacheoff   8

Definition at line 191 of file pg_attribute.h.

Referenced by InsertPgAttributeTuple().

#define Anum_pg_attribute_attcollation   18

Definition at line 201 of file pg_attribute.h.

Referenced by InsertPgAttributeTuple().

#define Anum_pg_attribute_attfdwoptions   21
#define Anum_pg_attribute_atthasdef   14

Definition at line 197 of file pg_attribute.h.

Referenced by InsertPgAttributeTuple().

#define Anum_pg_attribute_attinhcount   17

Definition at line 200 of file pg_attribute.h.

Referenced by InsertPgAttributeTuple().

#define Anum_pg_attribute_attisdropped   15

Definition at line 198 of file pg_attribute.h.

Referenced by InsertPgAttributeTuple().

#define Anum_pg_attribute_attislocal   16

Definition at line 199 of file pg_attribute.h.

Referenced by InsertPgAttributeTuple().

#define Anum_pg_attribute_attlen   5

Definition at line 188 of file pg_attribute.h.

Referenced by InsertPgAttributeTuple().

#define Anum_pg_attribute_attname   2

Definition at line 185 of file pg_attribute.h.

Referenced by InsertPgAttributeTuple().

#define Anum_pg_attribute_attndims   7

Definition at line 190 of file pg_attribute.h.

Referenced by InsertPgAttributeTuple().

#define Anum_pg_attribute_attnotnull   13

Definition at line 196 of file pg_attribute.h.

Referenced by InsertPgAttributeTuple().

#define Anum_pg_attribute_attnum   6
#define Anum_pg_attribute_attoptions   20

Definition at line 203 of file pg_attribute.h.

Referenced by ATExecSetOptions(), get_attribute_options(), and InsertPgAttributeTuple().

#define Anum_pg_attribute_attstattarget   4

Definition at line 187 of file pg_attribute.h.

Referenced by InsertPgAttributeTuple().

#define Anum_pg_attribute_attstorage   11

Definition at line 194 of file pg_attribute.h.

Referenced by InsertPgAttributeTuple().

#define Anum_pg_attribute_atttypid   3

Definition at line 186 of file pg_attribute.h.

Referenced by InsertPgAttributeTuple().

#define Anum_pg_attribute_atttypmod   9

Definition at line 192 of file pg_attribute.h.

Referenced by InsertPgAttributeTuple().

#define AttributeRelation_Rowtype_Id   75

Definition at line 34 of file pg_attribute.h.

Referenced by RelationCacheInitializePhase3().

Typedef Documentation

Function Documentation

CATALOG ( pg_attribute  ,
1249   
)

Definition at line 36 of file pg_attribute.h.

{
Oid attrelid; /* OID of relation containing this attribute */
NameData attname; /* name of attribute */
/*
* atttypid is the OID of the instance in Catalog Class pg_type that
* defines the data type of this attribute (e.g. int4). Information in
* that instance is redundant with the attlen, attbyval, and attalign
* attributes of this instance, so they had better match or Postgres will
* fail.
*/
Oid atttypid;
/*
* attstattarget is the target number of statistics datapoints to collect
* during VACUUM ANALYZE of this column. A zero here indicates that we do
* not wish to collect any stats about this column. A "-1" here indicates
* that no value has been explicitly set for this column, so ANALYZE
* should use the default setting.
*/
int32 attstattarget;
/*
* attlen is a copy of the typlen field from pg_type for this attribute.
* See atttypid comments above.
*/
int16 attlen;
/*
* attnum is the "attribute number" for the attribute: A value that
* uniquely identifies this attribute within its class. For user
* attributes, Attribute numbers are greater than 0 and not greater than
* the number of attributes in the class. I.e. if the Class pg_class says
* that Class XYZ has 10 attributes, then the user attribute numbers in
* Class pg_attribute must be 1-10.
*
* System attributes have attribute numbers less than 0 that are unique
* within the class, but not constrained to any particular range.
*
* Note that (attnum - 1) is often used as the index to an array.
*/
int16 attnum;
/*
* attndims is the declared number of dimensions, if an array type,
* otherwise zero.
*/
int32 attndims;
/*
* fastgetattr() uses attcacheoff to cache byte offsets of attributes in
* heap tuples. The value actually stored in pg_attribute (-1) indicates
* no cached value. But when we copy these tuples into a tuple
* descriptor, we may then update attcacheoff in the copies. This speeds
* up the attribute walking process.
*/
int32 attcacheoff;
/*
* atttypmod records type-specific data supplied at table creation time
* (for example, the max length of a varchar field). It is passed to
* type-specific input and output functions as the third argument. The
* value will generally be -1 for types that do not need typmod.
*/
int32 atttypmod;
/*
* attbyval is a copy of the typbyval field from pg_type for this
* attribute. See atttypid comments above.
*/
bool attbyval;
/*----------
* attstorage tells for VARLENA attributes, what the heap access
* methods can do to it if a given tuple doesn't fit into a page.
* Possible values are
* 'p': Value must be stored plain always
* 'e': Value can be stored in "secondary" relation (if relation
* has one, see pg_class.reltoastrelid)
* 'm': Value can be stored compressed inline
* 'x': Value can be stored compressed inline or in "secondary"
* Note that 'm' fields can also be moved out to secondary storage,
* but only as a last resort ('e' and 'x' fields are moved first).
*----------
*/
char attstorage;
/*
* attalign is a copy of the typalign field from pg_type for this
* attribute. See atttypid comments above.
*/
char attalign;
/* This flag represents the "NOT NULL" constraint */
bool attnotnull;
/* Has DEFAULT value or not */
bool atthasdef;
/* Is dropped (ie, logically invisible) or not */
bool attisdropped;
/* Has a local definition (hence, do not drop when attinhcount is 0) */
bool attislocal;
/* Number of times inherited from direct parent relation(s) */
int32 attinhcount;
/* attribute's collation */
Oid attcollation;
#ifdef CATALOG_VARLEN /* variable-length fields start here */
/* NOTE: The following fields are not present in tuple descriptors. */
/* Column-level access permissions */
aclitem attacl[1];
/* Column-level options */
text attoptions[1];
/* Column-level FDW options */
text attfdwoptions[1];
#endif

Variable Documentation

FormData_pg_attribute

Definition at line 160 of file pg_attribute.h.

Referenced by AddNewAttributeTuples(), and ATExecAddColumn().