DIRECTORY DBCommon USING [DBPage, NullDBPage, softwareCompatibilityVersion, systemIndexCount], DBStoragePagetags USING[Free, AMap], DBStorageTID USING[TID]; DBSegmentPrivate: CEDAR DEFINITIONS = BEGIN DBPage: TYPE = DBCommon.DBPage; NullDBPage: DBPage = DBCommon.NullDBPage; TID: TYPE = DBStorageTID.TID; StrBody: TYPE = MACHINE DEPENDENT RECORD [ length: CARDINAL _ 0, maxLength: CARDINAL _ StrMaxLength, text: PACKED ARRAY [0..StrMaxLength) OF CHAR _ TRASH]; StrMaxLength: CARDINAL = 64; SegmentHeadPage: TYPE = MACHINE DEPENDENT RECORD[ tag: [0..377B] _ DBStoragePagetags.AMap, unused: [0..377B] _ 0, softwareCompatibilityVersion: CARDINAL _ DBCommon.softwareCompatibilityVersion, seal: LONG CARDINAL _ Seal, name: StrBody _ [], segmentID: DBPage, allocator: RECORD [ firstPageInBlock: DBPage, nPagesInBlock: CARDINAL, pagesPerExtent: CARDINAL, freeList: DBPage _ NullDBPage ], schemaVersionStamp: INT _ TRASH, systemIndices: ARRAY [0..DBCommon.systemIndexCount) OF TID ]; Seal: LONG CARDINAL = 16177213452B; --exp(gamma) FreeListPage: TYPE = MACHINE DEPENDENT RECORD[ tag: [0..377B] _ DBStoragePagetags.Free, unused: [0..377B] _ 0, next: DBCommon.DBPage, nPagesInBlock: CARDINAL _ 1 ]; -- FreeListPage END. -- DBSegmentPrivate ˆFile DBSegmentPrivate.mesa Copyright c 1985 by Xerox Corporation. All rights reserved. Last edited by: MBrown on December 16, 1982 3:08 pm Cattell on July 16, 1982 10:42 am Willie-Sue, February 15, 1985 11:09:36 am PST Donahue, November 13, 1985 6:13:50 pm PST If I could write StringBody[StrMaxLength], or even TEXT[StrMaxLength], I would! Definition of persistent segment-related objects The record types below are necessarily MACHINE DEPENDENT since their representation must not change with different versions of the compiler (because instances of these types will persist in the database). Page type, on all pages in the system. On tuple pages, the count of allocated slots on the page. Version of DB software that initially produced this segment. Address of this page in DB. Pointer to first in a block of consecutive free pages in this segment, or NullDBPage to indicate no block. Count of number of pages in block. Number of pages to allocate from end of file when page allocator is empty. Pointer to first in a list of free pages in this segment, or NullDBPage to indicate no list. Format of FreeListPages is defined below. schema version stamp for this segment the collection of system indices Format of a page on a segment free list. Page type (DBStoragePagetags). Pointer to next in a list of free pages in this segment, or NullDBPage. Number of consecutive free pages that this page represents. Κ’˜šœ™Jšœ Οmœ1™<—šœ™Jšœ#™#šœ!™!J™-—Icode™)J˜—šΟk ˜ Jšœ žœF˜TJšœžœ ˜$Jšœ žœžœ˜J˜—Jšœž˜#˜Jšœž˜J˜Jšœžœ˜J˜)Jšžœžœžœ˜J˜š œ žœžœž œžœ˜*Jšœžœžœ˜9Jš œžœžœžœžœžœ˜6—šœžœ˜JšœO™OJ˜—Jšœ0™0J˜JšœD™DJšœO™OJšœ7™7J˜š œžœžœž œžœ˜1˜(Jšœ&™&—˜Jšœ9™9—šœžœ)˜OJšœ<™<—Jšœžœžœ˜J˜˜Jšœ™—šœ žœ˜˜JšœT™TJšœ™—šœžœ˜Jšœ"™"—šœžœ˜JšœJ™J—˜JšœJ™JJšœ<™<—J˜—šœžœžœ˜ Jšœ%™%—šœžœ žœž˜:Jšœ ™ —J˜J˜—JšœžœžœΟc ˜0J˜Jšœ(™(š œžœžœž œžœ˜.˜(Jšœ™—J˜˜JšœG™G—šœžœ˜Jšœ;™;——JšœŸ˜J˜J˜—JšžœŸ˜J˜—…—ΰ