DIRECTORY DBCommon USING[DBPage, NullDBPage], DBStorageTSDict USING[TSDictEntry]; DBStorageTupleset: CEDAR DEFINITIONS = BEGIN OPEN DBCommon; TuplesetObject: TYPE = MACHINE DEPENDENT RECORD[ wordsForTupleFields: CARDINAL [0..377B] _ 0, nVarFields: CARDINAL [0..377B] _ 0, expectedNGroups: CARDINAL [0..377B] _ 0, reserved: CARDINAL [0..377B] _ 0, searchList: DBStorageTSDict.TSDictEntry, allocList: DBPage _ NullDBPage, pageAllocator: PageAllocator ];--TuplesetObject PageAllocator: TYPE = MACHINE DEPENDENT RECORD[ segmentID: DBPage, firstPageInBlock: DBPage _ NullDBPage, nPagesInBlock: CARDINAL _ 0, nFreePagesInBlock: CARDINAL _ 0, nPagesPerExtent: CARDINAL _ 0, freeList: DBPage _ NullDBPage, nPagesOnFreeList: CARDINAL _ 0 ];--PageAllocator END.--DBStorageTupleset CHANGE LOG Created by MBrown on February 15, 1980 11:30 PM Changed by MBrown on February 16, 1980 11:14 PM Changed by MBrown on February 24, 1980 4:18 PM Changed by MBrown on February 25, 1980 4:00 PM Changed by MBrown on February 25, 1980 7:51 PM Changed by MBrown on June 8, 1980 6:49 PM Changed by MBrown on June 10, 1980 8:51 PM Changed by MBrown on July 22, 1980 1:51 PM Changed by MBrown on July 31, 1980 3:12 PM Changed by MBrown on August 25, 1980 1:31 PM Changed by MBrown on December 8, 1980 2:24 PM Changed by Willie-Sue on February 15, 1985 þFile DBStorageTupleset.mesa Copyright c 1985 by Xerox Corporation. All rights reserved. Last edited by MBrown on December 8, 1980 2:24 PM Willie-Sue, February 15, 1985 11:18:39 am PST This interface defines the format of a tupleset object, which contains the persistent information about a tupleset. length of fixed-length data for the fields of a tuple in this set, in words. number of VarByte or VarWord fields in a tuple in this set. expected length of GroupList for a tuple of this type. Used to infulence storage allocation in CreateTuple. includes tuplesetID, next, prev. Head of doubly-linked list of all pages containing tuples from this TS. Pointers to front and back allow all types of scans. a list of part-full pages that contain at least one tuple from this tupleset, and may be used for creating new tuples in this tupleset. a part-full page is located on exactly one tupleset's allocList, despite the fact that it may contain tuples from many different tuplesets. a source of fresh pages for tuples in this tupleset This cannot be longer than DBStorage.TupleSetObjectSize name of the segment containing this tupleset (the source for new pages) block is the initial allocation for this tupleset. free pages are at end of block. Number of pages to allocate from segment when allocator is empty. singly-linked list of free blocks or pages (freed by deletions from this TS) purpose is to allow pages to be freed gracefully to segment, if TS shrinks. Created from former DBStoragePrivateB, with added stuff from StorageImplA on TID representation. This no longer attempts to be the only internal interface for the storage-level implementation. Changed FieldObject.n to .nWord . Added inlines for FieldHandle access. Deleted NullDBPage (it is now in DBCommon), added NullTID. Changed definition of searchList: ALL pages must belong, even the ones on allocList, because of the possibility of tuple insertion/ deletion during a tupleset scan. We may need two TIDs in each tupleset dictionary for allocList links. Eliminated OPEN from DecomposeTID, to get around compiler bug relating to OPEN in INLINE procs. Added TuplesetFieldHandle, IndexFieldHandle. Moved all field handle stuff to DBStorageFH. Added TIDofTupleHandle. Moved all tuple handle stuff to DBStorageTuple. Changed definition of TuplesetObject to include pointers to both first and last pages. This is to facilitate two-way scanning from either end, although what this is worth in an unordered structure is not exactly clear. Changed name of module from DBStoragePrivateA. Added expectedNGroups to TuplesetObject. Added nVarFields to TuplesetObject. Added several new fields to PageAllocator, to reduce compatibility problems when new features are added later (wishful thinking at work). made Cedar, added tioga formatting Êü˜šœ™Jšœ Ïmœ1™<—šœ2™2J™-—˜šÏk ˜ Jšœ žœ˜#Jšœžœ˜#J˜——š œžœž œžœžœ ˜;JšœU™UJšœ™J˜š œžœžœž œžœ˜0šœžœ˜,JšœL™L—šœ žœ˜#Jšœ;™;—šœžœ˜(JšœQ™QJšœ™—Jšœ žœ˜!˜(JšœT™TJšœJ™J—˜JšœM™MJšœM™MJšœI™IJšœ.™.—˜Jšœ3™3—JšœÏc˜J™Jšœ7™7—J˜š œžœžœž œžœ˜0˜JšœG™G—˜&Jšœ2™2—Jšœžœ˜šœžœ˜ Jšœ™—šœžœ˜JšœA™A—˜JšœL™L—šœžœ˜JšœK™K—JšœŸ˜—J˜J˜—JšžœŸ˜J˜J˜Jšžœž˜ J˜Jšœ.ž˜0JšœP™PJšœR™RJšœ™J˜Jšœ.ž˜0JšœH™HJ˜Jšœ-ž˜/Jšœ]™]Jšœa™aJšœ`™`Jšœ™J˜Jšœ-ž˜/Jšœ_™_J˜Jšœ-ž˜/Jšœ,™,J˜Jšœ(ž˜*JšœE™EJ˜Jšœ)ž˜+Jšœ/™/J˜Jšœ)ž˜+Jšœ[™[Jšœ^™^JšœO™OJ˜Jšœ)ž˜+Jšœ(™(J˜Jšœ+ž˜-Jšœ#™#J˜Jšœ,ž˜.Jšœ]™]Jšœ+™+J˜Jšœ*˜*J™"—…—NH