-- File: DBStorageInternal.mesa -- Last edited by MBrown on 17-Jun-81 10:35:42 -- Last Edited by: Cattell, September 29, 1983 4:34 pm 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 = 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 CARDINAL← ALL[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: 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. Changed by Cattell on September 14, 1983 -- TupleTree is now a REF rather than pointer (Cedar 5.0)