|
|
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 8.1 12/31/84) ! 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: if ((tty = ttyname(1)) != NULL) ! 74: tty = rindex(tty, '/') + 1; ! 75: pmove((tty != NULL ? tty : " "), Terminal, TTYIDSIZE, ' '); ! 76: # endif ! 77: Terminal[TTYIDSIZE] = '\0'; ! 78: # ifdef xQTR1 ! 79: if (tTf(75, 0)) ! 80: printf("Terminal = \"%s\"\n", Terminal); ! 81: # endif ! 82: } ! 83: /* ! 84: ** QRYMOD -- main driver for query modification ! 85: ** ! 86: ** Reads in the query tree, performs the modifications, writes ! 87: ** it out, and does process syncronization with below. The ! 88: ** calling routine must sync with the process above. ! 89: ** ! 90: ** Parameters: ! 91: ** pc -- parameter count (must = 1). ! 92: ** pv -- parameter vector: ! 93: ** pv[0] -- tree to modify. ! 94: ** ! 95: ** Returns: ! 96: ** zero. ! 97: ** ! 98: ** Side Effects: ! 99: ** The tree is modified to one that is guaranteed to ! 100: ** be directly processable. ! 101: ** ! 102: ** Trace Flags: ! 103: ** none. ! 104: */ ! 105: ! 106: ! 107: qrymod(pc, pv) ! 108: int pc; ! 109: PARM *pv; ! 110: { ! 111: register QTREE *root; ! 112: extern QTREE *view(), *integrity(), *protect(); ! 113: ! 114: /* ! 115: ** Get parameters. ! 116: */ ! 117: ! 118: if (pc != 1) ! 119: syserr("pc=%d", pc); ! 120: if (pv[0].pv_type != PV_QTREE) ! 121: syserr("pv[0].type=%d", pv[0].pv_type); ! 122: root = pv[0].pv_val.pv_qtree; ! 123: ! 124: /* view processing */ ! 125: root = view(root); ! 126: ! 127: /* integrity processing */ ! 128: root = integrity(root); ! 129: ! 130: /* protection processing */ ! 131: root = protect(root); ! 132: ! 133: return (0); ! 134: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.