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

##### Functions

    equelatt          X
    equeleol          X
    pwritesym         X

##### Variables

    Eoutpipe          X

       1: # include   "../ingres.h"
       2: # include   "../symbol.h"
       3: # include   "../tree.h"
       4: # include   "../pipes.h"
       5: # include   "../batch.h"
       6: # include   "ovqp.h"
       7:
       8: /*
       9: **	This file contains all the routines needed
      10: **	for communicating with the equel process.
      11: **	They are called only if the flag Equel = TRUE.
      12: */
      13:
      14: /* global equel pipebuffer */
      15: struct pipfrmt  Eoutpipe;
      16:
      17:
      18: equelatt(ss)
      19: struct symbol   *ss;
      20:
      21: /*
      22: **	equelatt writes one symbol pointed to
      23: **	by ss up the data pipe to the equel
      24: **	process.
      25: **
      26: **	if a symbol is a character then *ss->value
      27: **	contains a pointer to the character string.
      28: **	otherwise the value is stored in successive
      29: **	words starting in ss->value.
      30: */
      31:
      32: {
      33: #	ifdef xOTR1
      34:     if (tTf(20, 0))
      35:         prstack(ss);
      36: #	endif
      37:     pwritesym(&Eoutpipe, W_front, ss);
      38: }
      39:
      40:
      41: equeleol(code)
      42: int code;
      43:
      44: /*
      45: **	equeleol is called at the end of the interpretation of
      46: **	a tuple. Its purpose is to write an end-of-tuple
      47: **	symbol to the equel process and flush the pipe.
      48: **
      49: **	It is also called at the end of a query to write
      50: **	an exit symbol to equel.
      51: **
      52: **	History:
      53: **		1/22/79 -- (marc) modified so won't flush pipe
      54: **			buffer after each tuple
      55: */
      56:
      57: {
      58:     register int    mode;
      59:     struct symbol   symb;
      60:
      61:     if (code == EXIT)
      62:         mode = P_END;
      63:     else
      64:         mode = P_FLUSH;
      65:
      66:     symb.type = code;
      67:     symb.len = 0;
      68:
      69: #	ifdef  xOTR1
      70:     if (tTf(20, 3))
      71:         printf("equeleol:writing %d to equel\n", code);
      72: #	endif
      73:
      74:     wrpipe(P_NORM, &Eoutpipe, W_front, &symb, 2);
      75:     if (mode != P_FLUSH || Equel != 2)
      76:         wrpipe(mode, &Eoutpipe, W_front);
      77: }
      78:
      79:
      80: pwritesym(pipedesc, filedesc, ss)
      81: struct pipfrmt  *pipedesc;
      82: int     filedesc;
      83: struct stacksym *ss;
      84:
      85: /*
      86: **	pwritesym write the stacksymbol
      87: **	pointed to by "ss" to the pipe
      88: **	indicated by filedesc.
      89: **
      90: **	The destination will either be equel
      91: **	or decomp
      92: **
      93: **	Since a CHAR isn't stored immediately following
      94: **	the type and len of the symbol, A small bit
      95: **	of manipulation must be done.
      96: */
      97:
      98: {
      99:     register struct stacksym    *s;
     100:     register char           *p;
     101:     register int            length;
     102:
     103:     s = ss;
     104:     length = s->len & 0377;
     105:
     106:     if (s->type  == CHAR)
     107:     {
     108:         wrpipe(P_NORM, pipedesc, filedesc, s, 2);   /* write the type and length */
     109:         p = cpderef(ss->value);     /* p points to the string */
     110:     }
     111:     else
     112:     {
     113:         p = (char *) ss;
     114:         length += 2;    /* include two bytes for type and length */
     115:     }
     116:     wrpipe(P_NORM, pipedesc, filedesc, p, length);
     117: }

#### Defined functions

equelatt defined in line 18; used 1 times

- in /usr/ingres/source/ovqp/interp.c line 194

equeleol defined in line 41; used 3 times

- in /usr/ingres/source/decomp/call_ovqp70.c line 241
- in /usr/ingres/source/ovqp/scan.c line 239
- in /usr/ingres/source/ovqp/support.c line 26

pwritesym defined in line 80; used 2 times

- in line 37
- in /usr/ingres/source/ovqp/support.c line 160

#### Defined variables

Eoutpipe defined in line 15; used 3 times

- in line 37, 74-76(2)

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