<> <> <> <> <> <> <> DIRECTORY DBCommon USING[CacheHandle, DBPage, NullDBPage], DBIndex USING[RealIndexHandle, IndexKey], DBStorageVec USING[VecPage], DBStorageTID USING[TID], DBStorage USING[SystemTupleID, FieldHandle, FirstLast, TupleHandle]; DBStorageConcrete: CEDAR DEFINITIONS = BEGIN <> FieldObject: TYPE = MACHINE DEPENDENT RECORD[ <> fieldType: FieldType _ NULL, offset: CARDINAL _ NULL, nWords: CARDINAL _ NULL, typeDependent: SELECT OVERLAID * FROM regular => [fill1: LONG CARDINAL _ NULL], group => [groupID: DBStorageTID.TID], ENDCASE ];--FieldObject FieldType: TYPE = MACHINE DEPENDENT {OneWord(1), TwoWord, NWord, VarWord, VarByte, Group, (LAST[CARDINAL])}; GroupScanHandle: TYPE = REF GroupScanObject; GroupScanObject: TYPE = RECORD[ tidFieldHandle: DBStorage.FieldHandle, < invalid handle.>> headOfGroup: DBStorage.TupleHandle, <> prevInScan: DBStorage.TupleHandle _ NIL, <> <<(WriteTID), the inserted tuple is here.>> nextInScan: DBStorage.TupleHandle _ NIL, <> link: GroupScanHandle _ NIL <> ];--GroupScanObject IndexScanHandle: TYPE = REF IndexScanObject; IndexScanObject: TYPE = RECORD [ front, back: IndexScanHandle, tree: DBIndex.RealIndexHandle, this: DBCommon.DBPage, index: CARDINAL, free: BOOLEAN, direction: {next, prev, finished} _ next, -- this is set when doing a scan using NextScanKey and PrevScanKey start: DBStorage.FirstLast, lowerBound, upperBound: DBIndex.IndexKey, includeLowerBound, includeUpperBound: BOOLEAN, lowerBoundInfinity, upperBoundInfinity: BOOLEAN ];--IndexScanObject SystemTuplesetObject: TYPE = RECORD[ tuplesetID: DBStorage.SystemTupleID, wordsForTupleFields: CARDINAL ];--SystemTuplesetObject TuplesetScanHandle: TYPE = REF TuplesetScanObject; TuplesetScanObject: TYPE = RECORD[ position: ScanPosition _ invalid, <> <> page: DBCommon.DBPage _ DBCommon.NullDBPage, <> <> slotIndex: CARDINAL _ 0, <> <> pagePtr: LONG POINTER TO DBStorageVec.VecPage _ NIL, <> pageHint: DBCommon.CacheHandle _ NIL, <> tupleset: DBStorage.TupleHandle, <> localTuplesetID: CARDINAL _ 1, <> <> link: TuplesetScanHandle _ NIL <> ];--TuplesetScanObject ScanPosition: TYPE = {middle, beforeFirst, afterLast, invalid}; END.--DBStorageConcrete CHANGE LOG Created by Cattell on 7-Jun-81 8:59:10 <> DBStorageConcreteField.mesa 1039 27-Feb-81 15:56:05 DBStorageConcreteGroupScan.mesa 1323 11-Dec-80 14:19:03 DBStorageConcreteSystemTS.mesa 662 24-Jun-80 11:16:51 DBStorageConcreteTuplesetScan.mesa 2667 27-Feb-81 14:21:24 Changed by MBrown on 17-Jun-81 11:17:59 <> Changed by Cattell on 7-Jul-81 10:13:51 <> Changed by Willie-Sue on February 15, 1985 <>