|
|
1.1 ! root 1: # include <ingres.h> ! 2: # include <symbol.h> ! 3: # include <aux.h> ! 4: # include <tree.h> ! 5: # include "globs.h" ! 6: # include <sccs.h> ! 7: ! 8: SCCSID(@(#)ret_unique.c 7.1 2/5/81) ! 9: ! 10: ! 11: ! 12: /* ! 13: ** create a result relation for a ret_unique ! 14: */ ! 15: ! 16: mk_unique(root) ! 17: QTREE *root; ! 18: { ! 19: register int i, domcnt; ! 20: register QTREE *r; ! 21: ! 22: r = root; ! 23: ! 24: /* verify that target list is within range */ ! 25: domcnt = r->left->sym.type != TREE ? r->left->sym.value.sym_resdom.resno : 0; ! 26: if (findwid(r) > MAXTUP || domcnt > MAXDOM) ! 27: derror(4620); ! 28: i = MAXRANGE - 1; ! 29: De.de_rangev[i].relnum = mak_t_rel(r, "u", -1); ! 30: De.de_resultvar = i; ! 31: ! 32: /* don't count retrieve into portion as a user query */ ! 33: r->sym.value.sym_root.rootuser = 0; ! 34: } ! 35: /* ! 36: ** Retrieve all domains of the variable "var". ! 37: ** This routine is used for ret_unique to retrieve ! 38: ** the result relation. First duplicates are removed ! 39: ** then the original tree is converted to be a ! 40: ** retrieve of all domains of "var", and then ! 41: ** ovqp is called to retrieve the relation. ! 42: */ ! 43: ! 44: pr_unique(root1, var1) ! 45: QTREE *root1; ! 46: int var1; ! 47: { ! 48: register QTREE *root, *r; ! 49: register int var; ! 50: extern QTREE *makavar(); ! 51: ! 52: root = root1; ! 53: var = var1; ! 54: ! 55: /* remove duplicates from the unopened relation */ ! 56: removedups(var); ! 57: ! 58: /* remove the qual from the tree */ ! 59: root->right = De.de_qle; ! 60: ! 61: /* make all resdoms refer to the result relation */ ! 62: for (r = root->left; r->sym.type != TREE; r = r->left) ! 63: r->right = makavar(r, var, r->sym.value.sym_resdom.resno); ! 64: ! 65: /* count as a user query */ ! 66: root->sym.value.sym_root.rootuser = TRUE; ! 67: ! 68: /* run the retrieve */ ! 69: De.de_sourcevar = var; ! 70: De.de_newq = De.de_newr = TRUE; ! 71: call_ovqp(root, mdRETR, NORESULT); ! 72: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.