ING_DB
This commit is contained in:
parent
240e81e137
commit
0fb97a7a25
|
|
@ -0,0 +1,175 @@
|
||||||
|
/* ACCESS.H -- definitions relating to the access methods. */
|
||||||
|
|
||||||
|
# ifndef PGSIZE
|
||||||
|
|
||||||
|
# define BLKSIZ 512 /* never change */
|
||||||
|
# define PGHDR 12 /* size of long mainpg */
|
||||||
|
/* + long ovflopg */
|
||||||
|
/* + short nxtlino */
|
||||||
|
/* + short linetab[0] */
|
||||||
|
# define PGSIZE (PGBLKS * BLKSIZ) /* size of page */
|
||||||
|
|
||||||
|
# if PGBLKS == 1
|
||||||
|
# define LINETAB(x) -x
|
||||||
|
# define AApgsize PGSIZE
|
||||||
|
# define AAmaxtup MINTUP
|
||||||
|
# else
|
||||||
|
# define VPGSIZE /* variable PGSIZE */
|
||||||
|
# define LINETAB(x) -(AAltsize + x)
|
||||||
|
extern int AApgsize; /* actual page size */
|
||||||
|
extern int AAmaxtup; /* actual max. tuple width */
|
||||||
|
extern int AAltsize; /* actual linetab size */
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/*define PGPTRSIZ 4 ** size of a tid */
|
||||||
|
# define MAXTID 253 /* max. tuples per pages */
|
||||||
|
# define MODTID 254 /* impossible TID for modify */
|
||||||
|
# define SCANTID 255 /* TID for start of scan */
|
||||||
|
|
||||||
|
/* storage structure flags; < 0 means compressed */
|
||||||
|
# define M_HEAP 5 /* paged heap */
|
||||||
|
# define M_ISAM 11 /* indexed sequential */
|
||||||
|
# define M_HASH 21 /* random hash */
|
||||||
|
/*define M_BTREE 31 ** BTREES */
|
||||||
|
# define M_TRUNC 99 /* internal pseudo-mode: truncated */
|
||||||
|
|
||||||
|
# define NACCBUFS 3 /* number of access method buffers */
|
||||||
|
|
||||||
|
/* error flags */
|
||||||
|
# define AMREAD_ERR -1
|
||||||
|
# define AMWRITE_ERR -2
|
||||||
|
# define AMNOFILE_ERR -3 /* can't open file for a relation */
|
||||||
|
/* define AMREL_ERR -4 ** can't open relation relation */
|
||||||
|
/* define AMATTR_ERR -5 ** can't open attribute relation */
|
||||||
|
# define AMNOATTS_ERR -6 /* attribute missing or xtra in att-rel */
|
||||||
|
# define AMCLOSE_ERR -7 /* can't close relation */
|
||||||
|
# define AMFIND_ERR -8 /* unidentifiable storage structure in find */
|
||||||
|
# define AMINVL_ERR -9 /* invalid TID */
|
||||||
|
# define AMOPNVIEW_ERR -10 /* attempt to open a view for rd or wr */
|
||||||
|
# define AMSEEK_ERR -11
|
||||||
|
# define AMTA_ERR -12
|
||||||
|
|
||||||
|
/* the following is the access methods buffer */
|
||||||
|
struct accbuf
|
||||||
|
{
|
||||||
|
/* this stuff is actually stored in the relation */
|
||||||
|
long mainpg; /* next main page (0 - eof) */
|
||||||
|
long ovflopg; /* next ovflo page (0 - none) */
|
||||||
|
short nxtlino; /* next avail line no for this page */
|
||||||
|
char firstup[PGSIZE - PGHDR]; /* tuple space */
|
||||||
|
short linetab[1]; /* line table at end of buffer - grows down */
|
||||||
|
/* linetab[lineno] is offset into
|
||||||
|
** the buffer for that line; linetab[nxtlino]
|
||||||
|
** is free space pointer */
|
||||||
|
|
||||||
|
/* this stuff is not stored in the relation */
|
||||||
|
long rel_tupid; /* unique relation id */
|
||||||
|
long thispage; /* page number of the current page */
|
||||||
|
int filedesc; /* file descriptor for this reln */
|
||||||
|
struct accbuf *modf; /* use time link list forward pointer */
|
||||||
|
struct accbuf *modb; /* back pointer */
|
||||||
|
int bufstatus; /* various bits defined below */
|
||||||
|
};
|
||||||
|
typedef struct accbuf ACCBUF;
|
||||||
|
|
||||||
|
/* The following assignments are status bits for accbuf.bufstatus */
|
||||||
|
# define BUF_LOCKED 003 /* page has a page lock on it */
|
||||||
|
/*define P_SHR 001 --> shared lock */
|
||||||
|
/*define P_EXCL 002 --> exclusive lock */
|
||||||
|
# define BUF_DIRECT 004 /* this is a page from isam direct */
|
||||||
|
# define BUF_DIRTY 010 /* page has been changed */
|
||||||
|
|
||||||
|
/* access method buffer typed differently for various internal operations */
|
||||||
|
struct _acc_buf_
|
||||||
|
{
|
||||||
|
char acc_buf[PGSIZE];
|
||||||
|
};
|
||||||
|
typedef struct _acc_buf_ ACC_BUF;
|
||||||
|
|
||||||
|
/* pointers to maintain the buffer */
|
||||||
|
extern struct accbuf *AAcc_head; /* head of the LRU list */
|
||||||
|
extern struct accbuf *AAcc_tail; /* tail of the LRU list */
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
** ADMIN file struct
|
||||||
|
**
|
||||||
|
** The ADMIN struct describes the initial part of the ADMIN file
|
||||||
|
** which exists in each database. This file is used to initially
|
||||||
|
** create the database, to maintain some information about the
|
||||||
|
** database, and to access the RELATION and ATTRIBUTE relations
|
||||||
|
** on OPENR calls.
|
||||||
|
*/
|
||||||
|
|
||||||
|
struct adminhdr
|
||||||
|
{
|
||||||
|
char adowner[2]; /* user code of data base owner */
|
||||||
|
short adflags; /* database flags */
|
||||||
|
};
|
||||||
|
|
||||||
|
struct admin
|
||||||
|
{
|
||||||
|
struct adminhdr adhdr;
|
||||||
|
struct descriptor adreld;
|
||||||
|
struct descriptor adattd;
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
** AAdmin status bits
|
||||||
|
**
|
||||||
|
** These bits define the status of the database. They are
|
||||||
|
** contained in the adflags field of the admin struct.
|
||||||
|
*/
|
||||||
|
|
||||||
|
# define A_DBCONCUR 0000001 /* set database concurrency */
|
||||||
|
# define A_QRYMOD 0000002 /* database uses query modification */
|
||||||
|
# define A_NEWFMT 0000004 /* database is post-6.3 */
|
||||||
|
|
||||||
|
|
||||||
|
/* following is buffer space for data from AA_ADMIN file */
|
||||||
|
extern struct admin AAdmin;
|
||||||
|
|
||||||
|
/*
|
||||||
|
** global counters for the number of BS read and write
|
||||||
|
** requests issued by the access methods.
|
||||||
|
*/
|
||||||
|
|
||||||
|
extern long AAccuread;
|
||||||
|
extern long AAccuwrite;
|
||||||
|
|
||||||
|
/*
|
||||||
|
** Global values used by everything
|
||||||
|
*/
|
||||||
|
|
||||||
|
extern char *AAcctuple; /* pointer to canonical tuple */
|
||||||
|
extern int AAccerror; /* error no for fatal errors */
|
||||||
|
|
||||||
|
# ifdef ESER_PSU
|
||||||
|
# define MERGESIZE 6
|
||||||
|
# define COREBUFSIZE ( 31 * 1024)
|
||||||
|
# else
|
||||||
|
# define MERGESIZE 16
|
||||||
|
# ifdef MEM_E
|
||||||
|
# define COREBUFSIZE (100 * 1024)
|
||||||
|
# else
|
||||||
|
# define COREBUFSIZE ( 60 * 1024)
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
# define TUP_BUF_SIZ (PGSIZE + MAXTUP + sizeof (long))
|
||||||
|
|
||||||
|
struct tup_hdr
|
||||||
|
{
|
||||||
|
char *tup_ptr;
|
||||||
|
char *tup_end;
|
||||||
|
int tup_fd;
|
||||||
|
int tup_no;
|
||||||
|
int tup_len;
|
||||||
|
char tup_buf[TUP_BUF_SIZ];
|
||||||
|
};
|
||||||
|
|
||||||
|
extern char Tup_buf[];
|
||||||
|
extern char *Tup_ptr;
|
||||||
|
extern short Tup_size;
|
||||||
|
extern int Tup_fd;
|
||||||
|
|
||||||
|
# endif
|
||||||
Loading…
Reference in New Issue