|
|
1.1 ! root 1: # include <ingres.h> ! 2: # include <access.h> ! 3: # include <sccs.h> ! 4: ! 5: SCCSID(@(#)insert.c 7.1 2/5/81) ! 6: ! 7: /* ! 8: ** INSERT - add a new tuple to a relation ! 9: ** ! 10: ** Insert puts a given tuple into a relation in ! 11: ** the "correct" position. ! 12: ** ! 13: ** If insert is called with checkdups == TRUE then ! 14: ** the tuple will not be inserted if it is a duplicate ! 15: ** of some already existing tuple. If the relation is a ! 16: ** heap then checkdups is made false. ! 17: ** ! 18: ** Tid will be set to the tuple id where the ! 19: ** tuple is placed. ! 20: ** ! 21: ** returns: ! 22: ** <0 fatal eror ! 23: ** 0 success ! 24: ** 1 tuple was a duplicate ! 25: */ ! 26: ! 27: insert(d, tid, tuple, checkdups) ! 28: register DESC *d; ! 29: register TID *tid; ! 30: char *tuple; ! 31: bool checkdups; ! 32: { ! 33: register int i; ! 34: int need; ! 35: ! 36: # ifdef xATR1 ! 37: if (tTf(24, 0)) ! 38: { ! 39: printf("insert:%.14s,", d->reldum.relid); ! 40: dumptid(tid); ! 41: printup(d, tuple); ! 42: } ! 43: # endif ! 44: /* determine how much space is needed for tuple */ ! 45: need = canonical(d, tuple); ! 46: ! 47: /* find the "best" page to place tuple */ ! 48: if (i = findbest(d, tid, tuple, need, checkdups)) ! 49: return (i); ! 50: ! 51: /* put tuple in position "tid" */ ! 52: put_tuple(tid, Acctuple, need); ! 53: ! 54: d->reladds++; ! 55: ! 56: return (0); ! 57: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.