|
|
1.1 ! root 1: # include <ingres.h> ! 2: # include <access.h> ! 3: # include <catalog.h> ! 4: # include <batch.h> ! 5: # include <btree.h> ! 6: # include <sccs.h> ! 7: ! 8: SCCSID(@(#)delete.c 8.1 12/31/84) ! 9: ! 10: /* ! 11: ** Delete - delete the tuple specified by tid ! 12: ** ! 13: ** Delete removes the tuple specified by tid ! 14: ** and reclaims the tuple space. ! 15: ** ! 16: ** returns: ! 17: ** <0 fatal error ! 18: ** 0 success ! 19: ** 2 tuple specified by tid aleady deleted ! 20: */ ! 21: ! 22: delete(dx, tidx) ! 23: DESC *dx; ! 24: TID *tidx; ! 25: { ! 26: register DESC *d; ! 27: register TID *tid; ! 28: register int i; ! 29: char btree[MAXNAME + 4]; ! 30: TID tidloc; ! 31: long lid[MAXLID]; ! 32: ! 33: d = dx; ! 34: tid = tidx; ! 35: ! 36: # ifdef xATR1 ! 37: if (tTf(24, 8)) ! 38: { ! 39: printf("delete: %.14s,", d->reldum.relid); ! 40: dumptid(tid); ! 41: } ! 42: # endif ! 43: ! 44: if (i = get_page(d, tid)) ! 45: return (i); ! 46: ! 47: if (i = invalid(tid)) ! 48: return (i); ! 49: ! 50: i = tup_len(tid); ! 51: ! 52: del_tuple(tid, i); ! 53: ! 54: if (d->reldum.reldim > 0) ! 55: /* remove corresponding lid from B-Tree */ ! 56: { ! 57: btreename(d->reldum.relid, btree); ! 58: search_btree(*tid, &tidloc); ! 59: get_lid(&tidloc, lid); ! 60: if (fwrite(lid, 1, LIDSIZE * d->reldum.reldim, Del_infp) != LIDSIZE * d->reldum.reldim) ! 61: syserr("write error"); ! 62: ++Del_cnt; ! 63: } ! 64: ! 65: d->reladds--; ! 66: ! 67: return (0); ! 68: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.