|
|
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.