|
|
1.1 ! root 1: # include <ingres.h> ! 2: # include <aux.h> ! 3: # include <pv.h> ! 4: # include <opsys.h> ! 5: # include <func.h> ! 6: # include <tree.h> ! 7: # include "qrymod.h" ! 8: # include <sccs.h> ! 9: ! 10: SCCSID(@(#)qrymod.c 7.1 2/5/81) ! 11: ! 12: ! 13: /* ! 14: ** QRYMOD -- query modification process ! 15: ** ! 16: ** This process modifies queries to implement views, protection, ! 17: ** and integrity. ! 18: ** ! 19: ** Return Codes: ! 20: ** standard ! 21: ** ! 22: ** Trace Flags: ! 23: ** none. ! 24: */ ! 25: ! 26: ! 27: ! 28: DESC Prodes; /* protection catalog descriptor */ ! 29: DESC Reldes; /* relation catalog descriptor */ ! 30: DESC Treedes; /* tree catalog descriptor */ ! 31: DESC Intdes; /* integrity catalog descriptor */ ! 32: extern int Equel; /* equel flag */ ! 33: ! 34: # define TTYIDSIZE 8 /* length of tty id */ ! 35: ! 36: extern qrymod(), qm_init(), null_fn(); ! 37: short tTqm[80]; ! 38: char Terminal[TTYIDSIZE + 1]; ! 39: ! 40: struct fn_def QryModFn = ! 41: { ! 42: "QRYMOD", ! 43: qrymod, ! 44: qm_init, ! 45: null_fn, ! 46: (char *) &Qm, ! 47: sizeof Qm, ! 48: tTqm, ! 49: 80, ! 50: 'Q', ! 51: 0, ! 52: }; ! 53: ! 54: ! 55: ! 56: qm_init(argc, argv) ! 57: int argc; ! 58: char **argv; ! 59: { ! 60: # ifdef xV7_UNIX ! 61: extern char *ttyname(); ! 62: extern char *rindex(); ! 63: char *tty; ! 64: # endif ! 65: ! 66: /* determine user's terminal for protection algorithm */ ! 67: # ifndef xV7_UNIX ! 68: pmove("tty", Terminal, TTYIDSIZE, ' '); ! 69: Terminal[3] = ttyn(1); ! 70: if (Terminal[3] == 'x') ! 71: pmove(" ", Terminal, TTYIDSIZE, ' '); ! 72: # else ! 73: tty = rindex(ttyname(1), '/') + 1; ! 74: pmove((tty != NULL ? tty : " "), Terminal, TTYIDSIZE, ' '); ! 75: # endif ! 76: Terminal[TTYIDSIZE] = '\0'; ! 77: # ifdef xQTR1 ! 78: if (tTf(75, 0)) ! 79: printf("Terminal = \"%s\"\n", Terminal); ! 80: # endif ! 81: } ! 82: /* ! 83: ** QRYMOD -- main driver for query modification ! 84: ** ! 85: ** Reads in the query tree, performs the modifications, writes ! 86: ** it out, and does process syncronization with below. The ! 87: ** calling routine must sync with the process above. ! 88: ** ! 89: ** Parameters: ! 90: ** pc -- parameter count (must = 1). ! 91: ** pv -- parameter vector: ! 92: ** pv[0] -- tree to modify. ! 93: ** ! 94: ** Returns: ! 95: ** zero. ! 96: ** ! 97: ** Side Effects: ! 98: ** The tree is modified to one that is guaranteed to ! 99: ** be directly processable. ! 100: ** ! 101: ** Trace Flags: ! 102: ** none. ! 103: */ ! 104: ! 105: ! 106: qrymod(pc, pv) ! 107: int pc; ! 108: PARM *pv; ! 109: { ! 110: register QTREE *root; ! 111: extern QTREE *view(), *integrity(), *protect(); ! 112: ! 113: /* ! 114: ** Get parameters. ! 115: */ ! 116: ! 117: if (pc != 1) ! 118: syserr("pc=%d", pc); ! 119: if (pv[0].pv_type != PV_QTREE) ! 120: syserr("pv[0].type=%d", pv[0].pv_type); ! 121: root = pv[0].pv_val.pv_qtree; ! 122: ! 123: /* view processing */ ! 124: root = view(root); ! 125: ! 126: /* integrity processing */ ! 127: root = integrity(root); ! 128: ! 129: /* protection processing */ ! 130: root = protect(root); ! 131: ! 132: return (0); ! 133: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.