-- File: DBStorageInternal.mesa -- Last edited by MBrown on 17-Jun-81 10:35:42 DIRECTORY DBCommon USING[DBPage], DBCache USING[CacheHandle], DBStorage USING[TupleHandle]; DBStorageInternal: 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 = POINTER TO 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) ];--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. --Does NOT deallocate val. 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: DBCache.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.