Annotation of 43BSD/ingres/source/h/access.h, revision 1.1.1.1

1.1       root        1: #
                      2: /*
                      3: **  ACCESS.H -- definitions relating to the access methods.
                      4: **
                      5: **     Version:
                      6: **             @(#)access.h    8.2     2/8/85
                      7: */
                      8: 
                      9: # ifndef PGSIZE
                     10: 
                     11: 
                     12: /*
                     13: **     PGSIZE is the physical size of a page.
                     14: **     MAXTUP is the maximum size of a tuple, assuming only one
                     15: **             tuple on the page.  This is PGSIZE-hdrsize, where
                     16: **             hdrsize is the size of the page header (12 bytes).
                     17: **     MAXLINENO is the maximum number of tuples on a page
                     18: **             assuming minimum size tuples (1 byte).  This is
                     19: **             constrained by the size of the lineid field of
                     20: **             the tid.
                     21: */
                     22: 
                     23: # define       PGSIZE          1024            /* size of page */
                     24: # define       MAXTUP          1010            /* max size of a tuple */
                     25: # define       MAXLINENO       254             /* max tuples per page */
                     26: # define       PGPTRSIZ        4               /* size of a tid */
                     27: # define       MAXTUPS         100             /* maximum number of tups */
                     28: 
                     29: /* storage structure flags; < 0 means compressed */
                     30: # define       M_HEAP          5               /* paged heap */
                     31: # define       M_ISAM          11              /* indexed sequential */
                     32: # define       M_HASH          21              /* random hash */
                     33: # define       M_BTREE         31              /* BTREES */
                     34: # define       M_ORDER         41              /* ordered */
                     35: # define       M_TRUNC         99              /* internal pseudo-mode: truncated */
                     36: 
                     37: # define       NACCBUFS        3               /* number of access method buffers */
                     38: 
                     39: /* error flags */
                     40: # define       AMREAD_ERR      -1
                     41: # define       AMWRITE_ERR     -2
                     42: # define       AMNOFILE_ERR    -3      /* can't open file for a relation */
                     43: # define       AMREL_ERR       -4      /* can't open relation relation */
                     44: # define       AMATTR_ERR      -5      /* can't open attribute relation */
                     45: # define       AMNOATTS_ERR    -6      /* attribute missing or xtra in att-rel */
                     46: # define       AMCLOSE_ERR     -7      /* can't close relation */
                     47: # define       AMFIND_ERR      -8      /* unidentifiable stora  Petructure in find */
                     48: # define       AMINVL_ERR      -9      /* invalid TID */
                     49: # define       AMOPNVIEW_ERR   -10     /* attempt to open a view for rd or wr */
                     50: 
                     51: /* the following is the access methods buffer */
                     52: struct accbuf
                     53: {
                     54:        /* this stuff is actually stored in the relation */
                     55:        long            mainpg;         /* next main page (0 - eof) */
                     56:        long            ovflopg;        /* next ovflo page (0 - none) */
                     57:        short           nxtlino;        /* next avail line no for this page */
                     58:        char            firstup[PGSIZE - 12];   /* tuple space */
                     59:        short           linetab[1];     /* line table at end of buffer - grows down */
                     60:                                        /* linetab[lineno] is offset into
                     61:                                        ** the buffer for that line; linetab[nxtlino]
                     62:                                        ** is free space pointer */
                     63: 
                     64:        /* this stuff is not stored in the relation */
                     65:        long            rel_tupid;      /* unique relation id */
                     66:        long            thispage;       /* page number of the current page */
                     67:        int             filedesc;       /* file descriptor for this reln */
                     68:        struct accbuf   *modf;          /* use time link list forward pointer */
                     69:        struct accbuf   *modb;          /* back pointer */
                     70:        int             bufstatus;      /* various bits defined below */
                     71: };
                     72: 
                     73: /* The following assignments are status bits for accbuf.bufstatus */
                     74: # define       BUF_DIRTY       001     /* page has been changed */
                     75: # define       BUF_LOCKED      002     /* page has a page lock on it */
                     76: # define       BUF_DIRECT      004     /* this is a page from isam direct */
                     77: 
                     78: /* access method buffer typed differently for various internal operations */
                     79: struct
                     80: {
                     81:        char    acc_buf[NACCBUFS];
                     82: };
                     83: 
                     84: /* pointers to maintain the buffer */
                     85: extern struct accbuf   *Acc_head;      /* head of the LRU list */
                     86: extern struct accbuf   *Acc_tail;      /* tail of the LRU list */
                     87: extern struct accbuf   Acc_buf[NACCBUFS];      /* the buffers themselves */
                     88: 
                     89: 
                     90: /*
                     91: **  ADMIN file struct
                     92: **
                     93: **     The ADMIN struct describes the initial part of the ADMIN file
                     94: **     which exists in each database.  This file is used to initially
                     95: **     create the database, to maintain some information about the
                     96: **     database, and to access the RELATION and ATTRIBUTE relations
                     97: **     on OPENR calls.
                     98: */
                     99: 
                    100: struct adminhdr
                    101: {
                    102:        char    adowner[2];     /* user code of data base owner */
                    103:        short   adflags;        /* database flags */
                    104:        short   adlength;       /* length of adminhdr */
                    105:        short   adversion;      /* database format stamp */
                    106:        short   adreldsz;       /* length of relation descriptor */
                    107:        short   adattdsz;       /* length of attribute descriptor */
                    108: };
                    109: 
                    110: struct admin
                    111: {
                    112:        struct adminhdr         adhdr;
                    113:        struct descriptor       adreld;
                    114:        struct descriptor       adattd;
                    115: };
                    116: 
                    117: /*
                    118: **  Admin status bits
                    119: **
                    120: **     These bits define the status of the database.  They are
                    121: **     contained in the adflags field of the admin struct.
                    122: */
                    123: 
                    124: # define       A_DBCONCUR      0000001         /* set database concurrency */
                    125: # define       A_QRYMOD        0000002         /* database uses query modification */
                    126: # define       A_NEWFMT        0000004         /* database is post-6.2 */
                    127: 
                    128: 
                    129: /* following is buffer space for data from admin file */
                    130: extern struct admin            Admin;
                    131: 
                    132: /*
                    133: **  PGTUPLE -- btree index key (a tid and an index key)
                    134: */
                    135: 
                    136: struct pgtuple
                    137: {
                    138:        struct tup_id   childtid;               /* the pointer comes before */
                    139:        char            childtup[MAXTUP];
                    140: };
                    141: 
                    142: /*
                    143: ** global counters for the number of UNIX read and write
                    144: **  requests issued by the access methods.
                    145: */
                    146: 
                    147: extern long    Accuread, Accuwrite;
                    148: 
                    149: /*
                    150: **     Global values used by everything
                    151: */
                    152: 
                    153: extern char    *Acctuple;              /* pointer to canonical tuple */
                    154: extern         Accerror;               /* error no for fatal errors */
                    155: extern char    Accanon[MAXTUP];        /* canonical tuple buffer */
                    156: 
                    157: 
                    158: /* Macros for the return values of iutil/add_ovflo.c */
                    159: # define       NOBUFFER        -1      /* can't get buffer for overflow page */
                    160: # define       NOSETUP         -2      /* can't set up overflow page */
                    161: # define       NOGETCURRENT    -3      /* can't get the current page */
                    162: # define       NORMVMAIN       -4      /* can't remove the main page */
                    163: # define       NOGETOVFLO      -5      /* can't get the overflow page */
                    164: # endif PGSIZE

unix.superglobalmegacorp.com

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