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: }

Defined functions

mapvars defined in line 6; used 1 times
  • in line 57
Last modified: 1986-04-17
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 828
Valid CSS Valid XHTML 1.0 Strict