|
|
1.1 root 1: #
2: /*
3: ** CATALOG.H -- system catalog definitions
4: **
5: ** relation and attribute catalogs are defined in ingres.h.
6: **
7: ** Version:
8: ** @(#)catalog.h 7.1 2/5/81
9: */
10:
11:
12:
13: /*
14: ** INDEX relation struct
15: **
16: ** The INDEX relation is used to determine what, if any,
17: ** secondary indicies exist for relations. If a relation
18: ** has a secondary index, there will be one tuple in the
19: ** INDEX relation for each such index. There may be one
20: ** or more domains indexed by one or many INDEX relations
21: ** depending on whether single or combined indicies are
22: ** being used.
23: **
24: ** Combined indices may use up to six domains to form the
25: ** index.
26: **
27: ** The simple existance of a secondary index is better
28: ** checked using the "relindxd" field in the RELATION
29: ** relation, since that is more efficient.
30: **
31: ** The two values SECINDEX and SECBASE are the values for
32: ** the relindxd field of the relation relation. Implicitly
33: ** SECINDEX must be < 0 and SECBASE must be > 0.
34: */
35:
36: # define IRELIDP 1
37: # define IOWNERP 2
38: # define IRELIDI 3
39:
40: # define SECINDEX -2 /* this value in rel.relindxd indicates
41: ** that the relation is a sec. index */
42: # define SECBASE 1 /* this value in rel.relindxd indicates
43: ** has a sec. index */
44:
45: struct index
46: {
47: char irelidp[MAXNAME]; /*unique name of primary relation */
48: char iownerp[2]; /*owner of primary relation*/
49: char irelidi[MAXNAME]; /*unique name of index relation */
50: char irelspeci; /*relspec of index relation*/
51: char idom[MAXKEYS]; /* domain number of primary relation */
52: /* which corresponds to each index attribute */
53: /* In the indexes relation these are stored as */
54: /* idom1, idom2, ..,idom6 */
55: };
56:
57:
58:
59: /*
60: ** TREE RELATION STRUCT
61: **
62: ** The TREE relation stores trees used by query modification and
63: ** for distribution criteria.
64: */
65:
66: struct tree
67: {
68: char treerelid[MAXNAME]; /* relation name */
69: char treeowner[2]; /* relation owner */
70: short treeid; /* internal name of this tuple */
71: short treeseq; /* sequence number in tree */
72: char treetype; /* type info for this tree */
73: char treexxxx;
74: char treetree[100]; /* contents of tree */
75: };
76:
77: # define TREERELID 1
78: # define TREEOWNER 2
79: # define TREEID 3
80: # define TREESEQ 4
81: # define TREETYPE 5
82:
83:
84:
85: /*
86: ** STRUCT PROTECT -- protection catalog
87: **
88: ** This structure defines the format of the 'protect' catalog.
89: ** One or two things should be noted. First, the 'prodomset'
90: ** field is actually four domains in the physical relation,
91: ** since the best we know about is i4's, and we need an i16.
92: ** Second, both the proopset and the prodomset fields
93: ** are bit maps.
94: */
95:
96: struct protect
97: {
98: char prorelid[MAXNAME]; /* relation to which this applies */
99: char prorelown[2]; /* owner */
100: short propermid; /* permission sequence number */
101: char prouser[2]; /* user code in PERMIT */
102: char proterm[8]; /* terminal in PERMIT */
103: char proresvar; /* Resultvarno in tree */
104: char proopset; /* operation set */
105: short protodbgn; /* beginning time of day */
106: short protodend; /* ending time of day */
107: char prodowbgn; /* beginning day of week */
108: char prodowend; /* ending day of week */
109: short prodomset[8]; /* domain set permitted */
110: short protree; /* link to qualification */
111: };
112:
113: /* field numbers for find() calls */
114: # define PRORELID 1
115: # define PRORELOWN 2
116: # define PROPERMID 3
117: # define PROTREE 16
118:
119: /* bit values for proopset */
120: # define PRO_RETR 0001 /* retrieve */
121: # define PRO_REPL 0002 /* replace */
122: # define PRO_DEL 0004 /* delete */
123: # define PRO_APP 0010 /* append */
124: # define PRO_TEST 0020 /* test in qualification */
125: # define PRO_AGGR 0040 /* retrieve aggregate value */
126:
127:
128:
129: /*
130: ** STRUCT INTEGRITY -- the descriptor for the integrity relation
131: */
132:
133: struct integrity
134: {
135: char intrelid[MAXNAME]; /* name of the relation */
136: char intrelowner[2]; /* owner of the relation */
137: short inttree; /* pointer into the tree catalog */
138: short intdomset[8]; /* set of domains this applies to */
139: char intresvar; /* primary variable number */
140: };
141:
142: # define INTRELID 1
143: # define INTRELOWNER 2
144: # define INTTREE 3
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.