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

##### Functions

    ovqp              X

##### Variables

    Ovqpbuf           X

       1: # include   "../ingres.h"  /* needed for trace flag */
       2: # include   "../symbol.h"
       3: # include   "../pipes.h"
       4: # include   "ovqp.h"
       5: /*
       6: **	OVQP -- the One Variable Query Processor
       7: **
       8: **	accepts one variable queries from
       9: **	decompostion. Queries are sent as a
      10: **	list arranged in postfix order.
      11: **	OVQP returns one of three
      12: **	possible values for each query:
      13: **
      14: **			EMPTY:	no tuples satisfied the query
      15: **
      16: **			NONEMPTY:	at least one tuple satisfied
      17: **					the query. if the query was
      18: **					a simple aggregate then the
      19: **					aggregate value will immediately
      20: **					follow.
      21: **
      22: **			ERROR (CODE):	A user caused error occured
      23: **					during query processing.
      24: **
      25: **/
      26:
      27: char    *Ovqpbuf;   /* pointer to buffer area */
      28:
      29: ovqp()
      30: {
      31:     register int        code;
      32:     extern int      Equel;
      33:     extern long     Accuread, Accuwrite, Accusread;
      34:     char            qrybuf[LBUFSIZE];
      35:
      36: #	ifdef xOTR1
      37:     if (tTf(27, 0))
      38:         printf("OVQP-	Equel=%d\n", Equel);
      39: #	endif
      40: #	ifdef xOTM
      41:     if (tTf(76, 1))
      42:         timtrace(7, 0);
      43: #	endif
      44: #	ifdef xOTR1
      45:     if (tTf(50, 0))
      46:     {
      47:         Accuread = 0;
      48:         Accuwrite = 0;
      49:         Accusread = 0;
      50:     }
      51: #	endif
      52:
      53:     Ovqpbuf = qrybuf;   /* global buffer is allocated from stack */
      54:
      55:     startovqp();
      56:
      57:     for (;;)
      58:     {
      59:         if (code = getqry())    /* get next logical query */
      60:             break;      /* query processing complete */
      61:
      62:         /* in certain very rare instances, the strategy
      63: 		** routine will detect the fact that no tuples
      64: 		** can satisfy the qualification. If that case
      65: 		** arrises then no scan need be performed.
      66: 		*/
      67:
      68:         if (strategy())
      69:         {
      70: #			ifdef xOTM
      71:             if (tTf(76, 2))
      72:                 timtrace(9, 0);
      73: #			endif
      74:             code = scan();  /* scan the relation */
      75: #			ifdef xOTM
      76:             if (tTf(76, 2))
      77:                 timtrace(10, 0);
      78: #			endif
      79:         }
      80:         else
      81:             code = EMPTY;   /* else query is false */
      82:
      83:         retdecomp(code);    /* return result to decomp */
      84:     }
      85: #	ifdef xOTM
      86:     if (tTf(76, 1))
      87:         timtrace(8, 0);
      88: #	endif
      89:
      90:     endqry(code);   /* close all relations */
      91:
      92: #	ifdef xOTR1
      93:     if (tTf(50, 1))
      94:     {
      95:         printf("OVQP read %s pages,", locv(Accuread));
      96:         printf("%s catalog pages,", locv(Accusread));
      97:         printf("wrote %s pages\n", locv(Accuwrite));
      98:     }
      99: #	endif
     100: }

#### Defined functions

ovqp defined in line 29; used 1 times

- in /usr/ingres/source/ovqp/main.c line 51

#### Defined variables

Ovqpbuf defined in line 27; used 3 times

- in line 53
- in /usr/ingres/source/ovqp/string.c line 52, 149

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