1: # include   <ingres.h>
   2: # include   <aux.h>
   3: # include   <access.h>
   4: # include   <sccs.h>
   5: 
   6: SCCSID(@(#)get.c	8.1	12/31/84)
   7: 
   8: /*
   9: **  GET - get a single tuple
  10: **
  11: **	Get either gets the next sequencial tuple after
  12: **	"tid" or else gets the tuple specified by tid.
  13: **
  14: **	If getnxt == TRUE, then tid is incremented to the next
  15: **	tuple after tid. If there are no more, then get returns
  16: **	1. Otherwise get returns 0 and "tid" is set to the tid of
  17: **	the returned tuple.
  18: **
  19: **	Under getnxt mode, the previous page is reset before
  20: **	the next page is read. This is done to prevent the previous
  21: **	page from hanging around in the am's buffers when we "know"
  22: **	that it will not be referenced again.
  23: **
  24: **	If getnxt == FALSE then the tuple specified by tid is
  25: **	returned. If the tuple was deleted previously,
  26: **	get retuns 2 else get returns 0.
  27: **
  28: **	If getnxt is true, limtid holds the the page number
  29: **	of the first page past the end point. Limtid and the
  30: **	initial value of tid are set by calls to FIND.
  31: **
  32: **	returns:
  33: **		<0  fatal error
  34: **		0   success
  35: **		1   end of scan (getnxt=TRUE only)
  36: **		2   tuple deleted (getnxt=FALSE only)
  37: */
  38: 
  39: 
  40: get(d, tid, limtid, tuple, getnxt)
  41: register DESC   *d;
  42: register TID    *tid;
  43: TID     *limtid;
  44: int     getnxt;
  45: char        *tuple;
  46: {
  47:     register int    i;
  48:     long        pageid, lpageid;
  49: 
  50: #	ifdef xATR1
  51:     if (tTf(23, 0))
  52:     {
  53:         printf("get: %.14s,", d->reldum.relid);
  54:         dumptid(tid);
  55:         printf("get: lim");
  56:         dumptid(limtid);
  57:     }
  58: #	endif
  59:     if (get_page(d, tid))
  60:     {
  61:         return (-1);
  62:     }
  63:     if (getnxt)
  64:     {
  65:         pluck_page(limtid, &lpageid);
  66:         do
  67:         {
  68:             while (((++(tid->line_id)) & I1MASK) >= Acc_head->nxtlino)
  69:             {
  70:                 tid->line_id = -1;
  71:                 pageid = Acc_head->ovflopg;
  72:                 stuff_page(tid, &pageid);
  73:                 if (pageid == 0)
  74:                 {
  75:                     pageid = Acc_head->mainpg;
  76:                     stuff_page(tid, &pageid);
  77:                     if (pageid == 0 || pageid == lpageid + 1)
  78:                         return (1);
  79:                 }
  80:                 if (i = resetacc(Acc_head))
  81:                     return (i);
  82:                 if (i = get_page(d, tid))
  83:                     return (i);
  84:             }
  85:         } while (!Acc_head->linetab[-(tid->line_id & I1MASK)]);
  86:     }
  87:     else
  88:     {
  89:         if (i = invalid(tid))
  90:             return (i);
  91:     }
  92:     get_tuple(d, tid, tuple);
  93: #	ifdef xATR2
  94:     if (tTf(23, 1))
  95:     {
  96:         printf("get: ");
  97:         printup(d, tuple);
  98:     }
  99: #	endif
 100:     return (0);
 101: }

Defined functions

get defined in line 6; used 2 times
Last modified: 1986-04-17
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 816
Valid CSS Valid XHTML 1.0 Strict