# include # include # include # include # include SCCSID(@(#)paramd.c 8.2 2/8/85) /* ** PARAMD - get access parameters of a relation from its descriptor ** and return them in struct pointed to by "ap". ** ** Parameters: ** d - descriptor ** ap - struct which holds the parameters ** ** Return Codes: ** 0 ** */ paramd(d, ap) register DESC *d; register struct accessparam *ap; { register int i; int p; ap->mode = getmode(d->reldum.relspec); ap->sec_index = FALSE; /* indicate that this isn't the index-rel */ for (i = 0; i < MAXDOM+1; i++) ap->keydno[i] = 0; for (p = 1; p <= d->reldum.relatts; p++) if (i = d->relxtra[p]) ap->keydno[i-1] = p; return (0); } /* ** PARAMI -get indexes of a relation from the index struct ** and place them in the structure pointed to by param ** ** Parameters: ** ip - index struct ** param - holds info about indexes ** ** Return Codes: ** 0 -- successful ** */ parami(ip, param) struct index *ip; struct accessparam *param; { register struct accessparam *ap; ap = param; ap->mode = getmode(ip->irelspeci); ap->sec_index = TRUE; /* this is an index */ bmove(ip->idom, ap->keydno, MAXKEYS); ap->keydno[MAXKEYS] = 0; return(0); } /* ** GETMODE - get the mode of the storage type ** ** Parameters: ** spec - storage type ** */ getmode(spec) int spec; { switch (abs(spec)) { case M_HEAP: return(NOKEY); case M_ISAM: return(LRANGEKEY); case M_HASH: return(EXACTKEY); default: syserr("getmode:bad relspec %d", spec); } }