# 2.11BSD#431 - /usr/ingres/source/ovqp/rdsym.c

##### Functions

    putvar            X
    rdsym             X
    sym_ad            X

       1: # include   "../ingres.h"
       2: # include   "../symbol.h"
       3: # include   "../tree.h"
       4: # include   "../pipes.h"
       5: # include   "ovqp.h"
       6:
       7: extern struct pipfrmt   Inpipe, Outpipe;
       8:
       9: char *rdsym()
      10: /*
      11: **	Reads one symbol from the pipe
      12: **	and inserts it in the next slot
      13: **	on the Ovqpbuf.
      14: **
      15: **	returns address of list element.
      16: */
      17: {
      18:     register char   *next;
      19:     register int    i;
      20:     register int    j;
      21:     extern char *Ovqpbuf;
      22:     char        *need();
      23:
      24:     next = need(Ovqpbuf, 2);    /* get two bytes for type and length */
      25:
      26:     if (j = rdpipe(P_NORM, &Inpipe, R_decomp, next, 2) !=2) /* get type and length */
      27:         syserr("rdsym:bad rdpipe %d", j);
      28:     i = *(next + 1) & 0377; /* get length of symbol */
      29: #	ifdef xOTR1
      30:     if (tTf(29, 0))
      31:         printf("RDSYM: sym %2.d  len=%3.d\t",*next, i);
      32: #	endif
      33:
      34:     if (i)
      35:     {
      36:         /* if i is odd round up and allocate enought space. */
      37:         /* alloc will guarantee an even byte adress */
      38:
      39:         need(Ovqpbuf, i);       /* get space for value */
      40:         if (j = rdpipe(P_NORM, &Inpipe, R_decomp, next+2, i) != i)
      41:             syserr("rdsym:bad rdpipe of %d", j);
      42:     }
      43:
      44: #	ifdef xOTR1
      45:     if (tTf(29, 1))
      46:         if (((struct symbol *)next)->type != VAR)
      47:             prsym(next);
      48: #	endif
      49:
      50:     if (Qvpointer >= MAXNODES)
      51:         ov_err(NODOVFLOW);
      52:     Qvect [Qvpointer++] = (struct symbol *) next;
      53:     return (next);
      54: }
      55:
      56: /*
      57: **  Sym_ad -- reasonable way of getting the address
      58: **	of the last symbol read in.
      59: **
      60: */
      61:
      62: struct symbol **sym_ad()
      63: {
      64:     return (&Qvect [Qvpointer - 1]);
      65: }
      66:
      67:
      68:
      69: putvar(sym, desc, tup)
      70: struct symbol   *sym;
      71: char        tup[];
      72: struct descriptor   *desc;
      73:
      74: /*
      75: **	putvar is called to insert a tuple
      76: **	pointer into the list. Desc is a
      77: **	descriptor struc of an open relation.
      78: **	Tup is the tuple buffer for the relation.
      79: */
      80:
      81: {
      82:     register struct descriptor  *d;
      83:     register char           *next;
      84:     register int            attnum;
      85:     extern char         *Ovqpbuf;
      86:     char                *need();
      87:
      88:     next = (char *) sym;
      89:     d = desc;
      90:
      91:
      92:     attnum = ((struct stacksym *)next)->value[0] & 0377;
      93:     next = need(Ovqpbuf, 4);    /* get four more bytes */
      94:
      95:     if (attnum)
      96:     {
      97:         /* attnum is a real attribute number */
      98:         if (attnum > d->relatts)
      99:             syserr("rdsym:bad att %d in %.12s", attnum, d->relid);
     100:         ((struct stacksym *)next)->type = d->relfrmt[attnum];
     101:         ((struct stacksym *)next)->len = d->relfrml[attnum];
     102:         ((struct stacksym *)next)->value[0] = (int) &tup[0] + d->reloff[attnum];    /* address within tuple buffer location */
     103:     }
     104:     else
     105:     {
     106:         /* attnum refers to the tuple id */
     107:         ((struct stacksym *)next)->type = TIDTYPE;
     108:         ((struct stacksym *)next)->len = TIDLEN;    /* tids are longs */
     109:         ((struct stacksym *)next)->value[0] = (int) &Intid; /* address of tid */
     110:     }
     111: #	ifdef xOTR1
     112:     if (tTf(29, 3))
     113:         prsym(next - 4);
     114: #	endif
     115:     return;
     116: }

#### Defined functions

putvar defined in line 69; used 4 times

- in /usr/ingres/source/ovqp/getqry.c line 164, 184, 201, 217

rdsym defined in line 9; used 6 times

- in /usr/ingres/source/ovqp/getqry.c line 46, 61, 154, 177, 196, 210

sym_ad defined in line 62; used 5 times

- in /usr/ingres/source/ovqp/getqry.c line 47, 170, 189, 199, 213

Last modified: 1995-02-19 Generated: 2016-12-26 | Generated by src2html V0.67 page hit count: 1106 |