File: DBStorageInternal.mesa
Copyright © 1985 by Xerox Corporation. All rights reserved.
Last edited by MBrown on 17-Jun-81 10:35:42
Last Edited by: Cattell, September 29, 1983 4:34 pm
Donahue, September 5, 1985 4:21:06 pm PDT
Willie-Sue, February 15, 1985 11:15:29 am PST
Widom, September 3, 1985 4:47:20 pm PDT
DIRECTORY
DBCommon USING[DBPage, CacheHandle],
DBStorage USING[TupleHandle];
DBStorageInternal: CEDAR DEFINITIONS = BEGIN
This interface contains all storage level private types and procedures that are
used in implementing the index section of the storage level.
By using this interface, the index section avoids the need to import DBStorage.
TupleTree: TYPE = REF TupleTreeRecord;
TupleTreeRecord: TYPE = MACHINE DEPENDENT RECORD[
This is the part of DBBTree.Tree that is permanently stored in the database.
rootPA: DBCommon.DBPage,
B-Tree root page address
depth: CARDINAL,
B-Tree depth
tid: TID,
TID of tuple that holds permanent copy of this object
segment: DBCommon.DBPage,
Segment containing this B-Tree (source of pages)
padding: ARRAY[0..13) OF CARDINALALL[0]
SIZE must exactly equal DBStorage.IndexObjectSize now that copy REFs in/out of a db
];--TupleTreeRecord
ReadIndexObject: PROCEDURE[t: DBStorage.TupleHandle, result: TupleTree];
PARAMETERS: t is an index tuple, i.e. a tuple whose first field is an index object;
result points to a TupleTreeRecord that may be overwritten.
EFFECTS: the index object contained in tuple t is written into result.
WriteIndexObject: PROCEDURE[t: DBStorage.TupleHandle, val: TupleTree];
PARAMETERS: an index tuple, i.e. a tuple whose first field is an index object,
and a value for such and object.
EFFECTS: writes the value val into the index object field of tuple t.
TID: TYPE = LONG CARDINAL;
SegmentIDOfTuple: PROCEDURE[t: DBStorage.TupleHandle] RETURNS[--segmentID--DBCommon.DBPage];
RESULTS: the "segment ID" of the segment that contains tuple t.
TIDOfTuple: PROCEDURE[t: DBStorage.TupleHandle] RETURNS[TID];
RESULTS: the TID of tuple t (suitable for storing in an index).
MakeTupleHandle: PROCEDURE[tid: TID, cacheHint: DBCommon.CacheHandle ← NIL]
RETURNS[DBStorage.TupleHandle];
RESULTS: a tuple handle that contains the given TID and CacheHandle.
ReleaseTupleHandle: PROCEDURE[t: DBStorage.TupleHandle] = INLINE { };
END.--DBStorageInternal
CHANGE LOG
Created by MBrown on May 2, 1980 9:54 AM
Created to narrow the interface between storage index implementation and the rest
of the storage level implementation.
Changed by MBrown on May 8, 1980 10:09 AM
Added TupleTree type, and ReleaseTupleHandle, after reading by Nori.
Changed by MBrown on May 8, 1980 1:15 PM
Made TupleTree MACHINE DEPENDENT, and eliminated entries and IsFirstEqual fields.
Changed by Suzuki on May 8, 1980 1:35 PM
DeallocateIndexObject is removed. Caller of ReadIndexObject supplies the location where the result record is stored.
Changed by MBrown on May 9, 1980 10:06 AM
Clarified specification of ReadIndexObject.
Changed by Suzuki on August 17, 1980 11:10 AM
Deleted cacheMaxSize from TupleTreeRecord.
Changed by MBrown on 17-Jun-81 10:35:17
ReleaseTupleHandle is now a no-op.
Changed by Cattell on September 14, 1983
TupleTree is now a REF rather than pointer (Cedar 5.0)
Changed by Willie-Sue on February 15, 1985
made Cedar, added tioga formatting