Annotation of 42BSD/ingres/source/parser/xdot.c, revision 1.1.1.1

1.1       root        1: # include      <ingres.h>
                      2: # include      <aux.h>
                      3: # include      <tree.h>
                      4: # include      <symbol.h>
                      5: # include      "parser.h"
                      6: # include      <sccs.h>
                      7: 
                      8: SCCSID(@(#)xdot.c      7.1     2/5/81)
                      9: 
                     10: extern QTREE           *tree();
                     11: extern QTREE           *addresdom();
                     12: 
                     13: /*
                     14: ** XDOT
                     15: **     add to attribute stash any missing attributes in the
                     16: **     source relation and then build tree with all attribs
                     17: **     in the 'attid' order.  This algorithm assumes that
                     18: **     the function 'attadd' insert attributes into the list
                     19: **     in 'attid' order from 1 -> N.
                     20: */
                     21: QTREE *
                     22: xdot(slot)
                     23: int    slot;
                     24: {
                     25:        PARRNG                          *rptr;
                     26:        struct attribute                tuple;
                     27:        register struct attribute       *ktuple;
                     28:        struct attribute                ktup;
                     29:        TID                             tid;
                     30:        TID                             limtid;
                     31:        QTREE           *tempt;
                     32:        register QTREE  *vnode;
                     33:        int                             ik;
                     34:        register struct atstash         *aptr;
                     35: 
                     36:        extern PARRNG                   Parrng[];
                     37:        extern char                     *Trname;
                     38:        extern DESC                     Attdes;
                     39: 
                     40:        rptr = &Parrng[slot];
                     41: 
                     42: #      ifdef   xPTR2
                     43:        tTfp(35, 0, "ALL being processed for %12s\n",
                     44:            rptr->vardesc.relvname);
                     45: #      endif
                     46: 
                     47:        if (rptr->vardesc.reldum.relatts <= 0)
                     48:                syserr("xdot: rptr->vardesc.reldum.relatts %d.\n", rptr->vardesc.reldum.relatts);
                     49:        /* if attstash is missing any attribs then fill in list */
                     50:        if (rptr->vardesc.reldum.relatts != attcount(slot))
                     51:        {
                     52:                /* get all entries in attrib relation */
                     53:                clearkeys(&Attdes);
                     54:                ktuple = &ktup;
                     55:                setkey(&Attdes, ktuple, rptr->vardesc.reldum.relid, ATTRELID);
                     56:                setkey(&Attdes, ktuple, rptr->vardesc.reldum.relowner, ATTOWNER);
                     57:                if (ik = find(&Attdes, EXACTKEY, &tid, &limtid, ktuple))
                     58:                        syserr("bad find in xdot '%d'", ik);
                     59:                while (!get(&Attdes, &tid, &limtid, &tuple, 1))
                     60:                        if (!kcompare(&Attdes, &tuple, ktuple))
                     61:                                /* add any that are not in the stash */
                     62:                                if (!attfind(slot, tuple.attname))
                     63:                                        attadd(slot, &tuple);
                     64:        }
                     65: 
                     66:        /* build tree for ALL */
                     67:        tempt = NULL;
                     68:        aptr = rptr->attlist;
                     69:        while (aptr != 0)
                     70:        {
                     71:                vnode = tree(NULL, NULL, VAR, sizeof(struct varnode), slot, aptr);
                     72:                Trname = aptr->atbname;
                     73:                tempt = addresdom(tempt, vnode);
                     74:                aptr = aptr->atbnext;
                     75:        }
                     76: 
                     77: #      ifdef   xPTR3
                     78:        tTfp(35, 0, "end of xdot %12s\n", rptr->vardesc.relvname);
                     79: #      endif
                     80: 
                     81:        return(tempt);
                     82: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.