# 2.11BSD#431 - /usr/ingres/source/decomp/rangetable.c

##### Functions

    endquery          X
    initrange         X
    new_range         X
    newquery          X
    rangename         X
    rstrang           X
    savrang           X

##### Variables

    Rangev            X

       1: # include   "../ingres.h"
       2: # include   "decomp.h"
       3:
       4: /*
       5: ** Allocation of range table.
       6: ** The size of the range table for decomp is
       7: ** MAXRANGE plus 2; 1 for a free aggregate slot and 1 for
       8: ** a free secondary index slot.
       9: */
      10: struct rang_tab Rangev[MAXRANGE+2]; /* global range table with extra slot for FREEVAR and SECINDXVAR */
      11:
      12:
      13:
      14: initrange()
      15: {
      16:     register struct rang_tab    *rt;
      17:
      18:     for (rt = Rangev; rt <= &Rangev[MAXRANGE+1]; rt++)
      19:         rt->relnum = -1;
      20: }
      21:
      22:
      23: savrang(locrang, var)
      24: int     locrang[];
      25: int     var;
      26:
      27: /*
      28: **	Save the entry for var in the range table.
      29: */
      30:
      31: {
      32:     register int    i;
      33:
      34:     i = var;
      35:     locrang[i] = Rangev[i].relnum;
      36: }
      37:
      38: rstrang(locrang, var)
      39: int     locrang[];
      40: int     var;
      41:
      42: /*
      43: **	Restore the entry for var from the local range
      44: **	table locrang.
      45: */
      46:
      47: {
      48:     register int    i;
      49:
      50:     i = var;
      51:     Rangev[i].relnum = locrang[i];
      52: }
      53:
      54:
      55:
      56: new_range(var, relnum)
      57: int var;
      58: int relnum;
      59:
      60: /*
      61: **	Update the range name. It is up to
      62: **	the calling routine to openr the new rel.
      63: */
      64:
      65: {
      66:     register int    i, old;
      67:
      68:     i = var;
      69:
      70:     old = Rangev[i].relnum;
      71:     Rangev[i].relnum = relnum;
      72:
      73:     return (old);
      74: }
      75:
      76:
      77: newquery(locrang)
      78: int locrang[];
      79:
      80: /*
      81: **	Make a copy of the current range table.
      82: */
      83:
      84: {
      85:     register struct rang_tab    *rp;
      86:     register int            *ip, i;
      87:
      88:     ip = locrang;
      89:     rp = Rangev;
      90:
      91:     for (i = 0; i < MAXRANGE; i++)
      92:         *ip++ = (rp++)->relnum;
      93: }
      94:
      95:
      96: endquery(locrang, reopen)
      97: int locrang[];
      98: int reopen;
      99:
     100: /*
     101: **	Check the range table to see if any
     102: **	relations changed since the last call
     103: **	to newquery. If so, they were caused
     104: **	by reformat. Restore back the orig relation
     105: **	Reopen it if reopen == TRUE.
     106: */
     107:
     108: {
     109:     register struct rang_tab    *rp;
     110:     register int            *ip, i;
     111:     int             old;
     112:
     113:     rp = Rangev;
     114:     ip = locrang;
     115:
     116:     initp();
     117:     for (i = 0; i < MAXRANGE; i++)
     118:     {
     119:         if (rp->relnum != *ip)
     120:         {
     121: #			ifdef xDTR1
     122:             if (tTf(15, -1))
     123:             printf("reformat or reduct changed var %d (%d,%d)\n", i, *ip, rp->relnum);
     124: #			endif
     125:
     126:             old = new_range(i, *ip);
     127:             dstr_mark(old);
     128:             if (reopen)
     129:                 openr1(i);
     130:         }
     131:
     132:         ip++;
     133:         rp++;
     134:     }
     135:
     136:     dstr_flush(0);
     137: }
     138:
     139:
     140: char *rangename(var)
     141: int var;
     142:
     143: /*
     144: **	Return the name of the variable "var"
     145: **	in the range table
     146: */
     147:
     148: {
     149:     char    *rnum_convert();
     150:
     151:     return (rnum_convert(Rangev[var].relnum));
     152: }

#### Defined functions

endquery defined in line 96; used 2 times

- in /usr/ingres/source/decomp/decision.c line 230
- in /usr/ingres/source/decomp/decomp.c line 66

initrange defined in line 14; used 2 times

- in /usr/ingres/source/decomp/call_ovqp.c line 379
- in /usr/ingres/source/decomp/call_ovqp70.c line 409

new_range defined in line 56; used 5 times

- in line 126
- in /usr/ingres/source/decomp/decision.c line 313
- in /usr/ingres/source/decomp/exec_sq.c line 73, 196
- in /usr/ingres/source/decomp/reformat.c line 437

newquery defined in line 77; used 2 times

- in /usr/ingres/source/decomp/decision.c line 178
- in /usr/ingres/source/decomp/decomp.c line 64

rangename defined in line 140; used 13 times

- in /usr/ingres/source/decomp/ageval.c line 153-157(2)
- in /usr/ingres/source/decomp/aggregate.c line 91
- in /usr/ingres/source/decomp/call_ovqp.c line 52, 74, 104
- in /usr/ingres/source/decomp/call_ovqp70.c line 59, 89
- in /usr/ingres/source/decomp/decomp.c line 247
- in /usr/ingres/source/decomp/reformat.c line 206, 323, 480
- in /usr/ingres/source/decomp/tempvar.c line 84

rstrang defined in line 38; used 1 times

- in /usr/ingres/source/decomp/exec_sq.c line 138

savrang defined in line 23; used 2 times

- in /usr/ingres/source/decomp/pull_sq.c line 149
- in /usr/ingres/source/decomp/reformat.c line 439

#### Defined variables

Rangev defined in line 10; used 28 times

- in line 18(2), 35, 51, 70-71(2), 89, 113, 151
- in /usr/ingres/source/decomp/openrs.c line 169, 214, 244, 266
- in /usr/ingres/source/decomp/qryproc.c line 82
- in /usr/ingres/source/decomp/rangetable.c line 18(2), 35, 51, 70-71(2), 89, 113, 151
- in /usr/ingres/source/decomp/readq.c line 69
- in /usr/ingres/source/decomp/reformat.c line 211-212(2)
- in /usr/ingres/source/decomp/ret_unique.c line 25
- in /usr/ingres/source/decomp/selectv.c line 106

Last modified: 1980-12-17 Generated: 2016-12-26 | Generated by src2html V0.67 page hit count: 1247 |