Annotation of 42BSD/ingres/source/h/ingres.h, revision 1.1

1.1     ! root        1: #
        !             2: /*
        !             3: **  INGRES.H -- basic header file for ingres.
        !             4: **
        !             5: **     See also aux.h for definitions used by some but not all.
        !             6: **
        !             7: **     Version:
        !             8: **             @(#)ingres.h    7.1     2/5/81
        !             9: */
        !            10: 
        !            11: # ifndef MAXNAME
        !            12: 
        !            13: 
        !            14: /*
        !            15: **  Some generally useful stuff.
        !            16: */
        !            17: 
        !            18: # include <useful.h>
        !            19: 
        !            20: 
        !            21:  
        !            22: /*
        !            23: **     definition of machine type
        !            24: **
        !            25: **     If PDP11 is defined, the wordsize is defined as 16, and any other
        !            26: **     machine dependant things are set to the values needed for a PDP 11/70.
        !            27: **     Currently the default is to the 32 bits existant on VAX 11/780s.
        !            28: */
        !            29: 
        !            30: # define       VAX
        !            31: 
        !            32: 
        !            33: 
        !            34: 
        !            35: # include <trace.h>
        !            36: 
        !            37: /*
        !            38: **     INGRES manifest constants
        !            39: **
        !            40: **     These constants are manifest to the operation of the entire
        !            41: **     system.  If anything
        !            42: **     is changed part or all of the system will stop working.
        !            43: **     The values have been carefully chosen and are not intended
        !            44: **     to be modifiable by users.
        !            45: */
        !            46: 
        !            47: # define       MAXDOM          50              /* max # + 1 of doms in a relation */
        !            48: # define       MAXNAME         12              /* max size of a name (in bytes) */
        !            49: # define       MAXVAR          10              /* max # of variables */
        !            50: # define       MAXKEYS         6               /* max # of keys in secondary index */
        !            51: # define       MAXAGG          50              /* max number of aggs in a qry */
        !            52: # define       STACKSIZ        20              /* max depth for arith. expr. stacks */
        !            53: # define       I1MASK          0377            /* mask out sign extension that occurs
        !            54:                                                **  when a c1 or i1 field is converted
        !            55:                                                **  to an i2 field. 
        !            56:                                                */
        !            57: 
        !            58: # define       i_1             char
        !            59: # define       i_2             short
        !            60: # define       i_4             long
        !            61: # define       c_1             char
        !            62: # define       c_2             char
        !            63: # define       c_12            char
        !            64: 
        !            65: /*
        !            66: **     RELATION relation struct
        !            67: **
        !            68: **     The RELATION relation contains one tuple for each relation
        !            69: **     in the database.  This relation contains information which
        !            70: **     describes how each relation is actually stored in the
        !            71: **     database, who the owner is, information about its size,
        !            72: **     assorted operation information, etc.
        !            73: */
        !            74: 
        !            75: # define       RELID           1       /* domain for setkey */
        !            76: # define       RELOWNER        2
        !            77: 
        !            78: struct relation
        !            79: {
        !            80:        c_12    relid[MAXNAME]; /* relation name        */
        !            81:        c_2     relowner[2];    /* code of relation owner */
        !            82:        i_1     relspec;        /* storage mode of relation     */
        !            83:                                /* M_HEAP  unsorted paged heap  */
        !            84:                                /* -M_HEAP compressed heap      */
        !            85:                                /* M_ISAM  isam                 */
        !            86:                                /* -M_ISAM compressed isam      */
        !            87:                                /* M_HASH  hashed               */
        !            88:                                /* -M_HASH compressed hash      */
        !            89:        i_1     relindxd;       /* -1 rel is an index, 0 not indexed, 1 indexed */
        !            90:        i_2     relstat2;       /* more status bits */
        !            91:        i_2     relstat;        /* relation status bits */
        !            92:        i_4     relsave;        /*unix time until which relation is saved*/
        !            93:        i_4     reltups;        /*number of tuples in relation  */
        !            94:        i_2     relatts;        /*number of attributes in relation      */
        !            95:        i_2     relwid;         /*width (in bytes) of relation  */
        !            96:        i_4     relprim;        /*no. of primary pages in relation*/
        !            97:        i_4     relfree;        /* head of freelist (b-trees only) */
        !            98:        i_4     relstamp;       /*time of last mod*/
        !            99: };
        !           100: 
        !           101: 
        !           102: /*
        !           103: **     ATTRIBUTE relation struct
        !           104: **
        !           105: **     The ATTRIBUTE relation contains one tuple for each domain
        !           106: **     of each relation in the database.  This relation describes
        !           107: **     the position of each domain in the tuple, its format,
        !           108: **     its length, and whether or not it is used in part of the key.
        !           109: */
        !           110: 
        !           111: # define       ATTRELID        1
        !           112: # define       ATTOWNER        2
        !           113: # define       ATTID           3
        !           114: # define       ATTNAME         4
        !           115: 
        !           116: 
        !           117: struct attribute
        !           118: {
        !           119:        c_12    attrelid[MAXNAME];      /*relation name of which this is an attr */
        !           120:        c_2     attowner[2];    /* code of relation owner */
        !           121:        i_2     attid;          /*domain number (from 1 to relatts)     */
        !           122:        c_12    attname[MAXNAME];       /*alias for this domain*/
        !           123:        i_2     attoff;         /*offset in tuple (no. of bytes*/
        !           124:        i_1     attfrmt;        /* INT, FLOAT, CHAR (in symbol.h) */
        !           125:        i_1     attfrml;        /* unsigned integer no of bytes */
        !           126:        i_1     attxtra;        /* flag indicating whether this dom is part of a key */
        !           127: };
        !           128: 
        !           129: /*
        !           130: **     tuple id struct
        !           131: **
        !           132: **     We want the line_id to be in the low-order of a long, in
        !           133: **     order to make index work efficiently; since the order
        !           134: **     of halfwords is reversed in a VAX, this is dependent...
        !           135: */
        !           136: 
        !           137: struct tup_id
        !           138: {
        !           139: # ifdef PDP11
        !           140:        c_1     pg1, pg0;
        !           141:        c_1     line_id, pg2;
        !           142: # else PDP11
        !           143:        c_1     line_id, pg2, pg1, pg0;
        !           144: # endif PDP11
        !           145: };
        !           146: 
        !           147: typedef struct tup_id  TID;
        !           148: 
        !           149: typedef union
        !           150: {
        !           151:        long    ltid;
        !           152:        TID     s_tupid;
        !           153: } tid_type;
        !           154: 
        !           155: 
        !           156: # include <range.h>            /* to get the descriptor struct */
        !           157: 
        !           158: 
        !           159: /* modes to find */
        !           160: # define       NOKEY           1       /* scan entire relation */
        !           161: # define       EXACTKEY        2
        !           162: # define       LRANGEKEY       3       /* low range key */
        !           163: # define       FULLKEY         4       /* forces full key comparison */
        !           164: # define       HRANGEKEY       5       /* high range key */
        !           165: 
        !           166: /*
        !           167: **     anytype union -- union of ingres types
        !           168: */
        !           169: 
        !           170: union anytype
        !           171: {
        !           172:        char            i1type;
        !           173:        short           i2type;
        !           174:        long            i4type;
        !           175:        float           f4type;
        !           176:        double          f8type;
        !           177:        char            c0type[1];      /* the 1 is bogus, only needs 
        !           178:                                         * starting address
        !           179:                                         */
        !           180:        char            *cptype;
        !           181:        char            **cpptype;
        !           182: };
        !           183: 
        !           184: typedef union anytype  ANYTYPE;
        !           185: 
        !           186: 
        !           187: /*
        !           188: **  Definitions for interface to the control module.
        !           189: */
        !           190: 
        !           191: extern char    Qbuf[];
        !           192: 
        !           193: 
        !           194: # endif MAXNAME

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.