|
|
1.1 ! root 1: # include <ingres.h> ! 2: # include <aux.h> ! 3: # include <symbol.h> ! 4: # include <tree.h> ! 5: # include <pv.h> ! 6: # include "qrymod.h" ! 7: # include <sccs.h> ! 8: ! 9: SCCSID(@(#)issue.c 8.1 12/31/84) ! 10: ! 11: /* ! 12: ** ISSUE -- issue query to rest of system ! 13: ** ! 14: ** This function issues a query to the rest of the INGRES system. ! 15: ** The sync from below is read, but not passed up. ! 16: ** ! 17: ** Parameters: ! 18: ** tree -- pointer to tree to issue. ! 19: ** ! 20: ** Returns: ! 21: ** none. ! 22: ** ! 23: ** Side Effects: ! 24: ** A query is executed. ! 25: ** ! 26: ** Trace Flags: ! 27: ** 71 ! 28: */ ! 29: ! 30: issue(state, tree) ! 31: int state; ! 32: QTREE *tree; ! 33: { ! 34: # ifdef xQTR2 ! 35: if (tTf(71, 0)) ! 36: printf("issue:\n"); ! 37: # endif ! 38: ! 39: initp(); ! 40: setp(PV_QTREE, tree, 0); ! 41: call(state, NULL); ! 42: } ! 43: /* ! 44: ** ISSUEINVERT -- issue a query, but invert the qualification ! 45: ** ! 46: ** This routine is similar to 'issue', except that it issues ! 47: ** a query with the qualification inverted. The inversion ! 48: ** (and subsequent tree normalization) is done on a duplicate ! 49: ** of the tree. ! 50: ** ! 51: ** Parameters: ! 52: ** root -- the root of the tree to issue. ! 53: ** ! 54: ** Returns: ! 55: ** none. ! 56: ** ! 57: ** Side Effects: ! 58: ** 'root' is issued. ! 59: ** ! 60: ** Trace Flags: ! 61: ** none ! 62: */ ! 63: ! 64: issueinvert(root) ! 65: QTREE *root; ! 66: { ! 67: register QTREE *t; ! 68: register QTREE *uop; ! 69: extern QTREE *treedup(); ! 70: extern QTREE *trimqlend(), *norml(); ! 71: ! 72: /* make duplicate of tree */ ! 73: t = treedup(root); ! 74: ! 75: /* prepend NOT node to qualification */ ! 76: uop = (QTREE *) need(Qbuf, QT_HDR_SIZ + sizeof(short)); ! 77: uop->left = NULL; ! 78: uop->right = t->right; ! 79: uop->sym.type = UOP; ! 80: uop->sym.len = sizeof(short); ! 81: uop->sym.value.sym_op.opno = opNOT; ! 82: t->right = uop; ! 83: ! 84: /* normalize and issue */ ! 85: t->right = norml(trimqlend(t->right)); ! 86: issue(mdQRY, t); ! 87: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.