Header And Logo

PostgreSQL
| The world's most advanced open source database.

Defines | Typedefs | Functions | Variables

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.

Defines

#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

Define 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_attrelid   1
#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 ATTRIBUTE_FIXED_PART_SIZE   (offsetof(FormData_pg_attribute,attcollation) + sizeof(Oid))
#define AttributeRelation_Rowtype_Id   75

Definition at line 34 of file pg_attribute.h.

Referenced by RelationCacheInitializePhase3().

#define AttributeRelationId   1249
#define Natts_pg_attribute   21

Definition at line 183 of file pg_attribute.h.

Referenced by RelationCacheInitializePhase3().


Typedef Documentation

Definition at line 176 of file pg_attribute.h.


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
} FormData_pg_attribute;


Variable Documentation

Definition at line 160 of file pg_attribute.h.

Referenced by AddNewAttributeTuples(), and ATExecAddColumn().