Annotation of 43BSD/ingres/source/ctlmod/mapvars.c, revision 1.1.1.1

1.1       root        1: # include      <ingres.h>
                      2: # include      <symbol.h>
                      3: # include      <tree.h>
                      4: # include      <sccs.h>
                      5: 
                      6: SCCSID(@(#)mapvars.c   8.1     12/31/84)
                      7: 
                      8: /*
                      9: **  MAPVARS -- remap varno's to be unique in 'tree' tree
                     10: **
                     11: **     A tree is scanned for VAR nodes; when found, the
                     12: **     mapping defined in Qt.qt_remap[] is applied.  This is done so that
                     13: **     varno's as defined in trees in the 'tree' catalog will be
                     14: **     unique with respect to varno's in the user's query tree.  For
                     15: **     example, if the view definition uses variable 1 and the user's
                     16: **     query also uses variable 1, the routine 'readqry' will (after
                     17: **     calling 'declare' to assign a new slot), put the index of this
                     18: **     new slot into the corresponding entry of Qt.qt_remap;
                     19: **     in this example, Qt.qt_remap[1] == 3.  This routine does the actual
                     20: **     mapping in the tree.
                     21: **
                     22: **     Parameters:
                     23: **             tree -- pointer to tree to be remapped.
                     24: **
                     25: **     Returns:
                     26: **             none
                     27: **
                     28: **     Side Effects:
                     29: **             the tree pointed to by 'tree' is modified according
                     30: **             to Qt.qt_remap[].
                     31: **
                     32: **     Trace Flags:
                     33: **             7.4-7.7
                     34: */
                     35: 
                     36: mapvars(tree)
                     37: QTREE  *tree;
                     38: {
                     39:        register QTREE  *t;
                     40:        register int    i;
                     41: 
                     42:        t = tree;
                     43: #      ifdef xQTR3
                     44:        if (tTf(7, 4) && t != NULL && t->sym.type == ROOT)
                     45:        {
                     46:                printf("mapvars:");
                     47:                treepr(t);
                     48:                for (i = 0; i < MAXVAR + 1; i++)
                     49:                        if (Qt.qt_rangev[i].rngvdesc != NULL && Qt.qt_remap[i] >= 0)
                     50:                                printf("\t%d => %d\n", i, Qt.qt_remap[i]);
                     51:        }
                     52: #      endif
                     53: 
                     54:        while (t != NULL)
                     55:        {
                     56:                /* map right subtree */
                     57:                mapvars(t->right);
                     58: 
                     59:                /* check this node */
                     60:                if (t->sym.type == VAR)
                     61:                        t->sym.value.sym_var.varno = Qt.qt_remap[t->sym.value.sym_var.varno];
                     62: 
                     63:                /* map left subtree (iteratively) */
                     64:                t = t->left;
                     65:        }
                     66: }

unix.superglobalmegacorp.com

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