Annotation of 43BSD/ingres/doc/access/internal.nr, revision 1.1

1.1     ! root        1: .de am
        !             2: .ne 8
        !             3: .sp 4
        !             4: \\$1 (\\$2)
        !             5: ..
        !             6: .th INTERNAL AM 1/19/79
        !             7: .sh NAME
        !             8: internal routine used by the access methods.
        !             9: .sh SYNOPSIS
        !            10: The functions listed in this section should not be
        !            11: called directly by any higher level program.
        !            12: These functions are all used to implement the
        !            13: access method calls described elsewhere in this manual.
        !            14: .am ACC_CLOSE 9/3/77
        !            15: .sh NAME
        !            16: acc_close - close relations opened by readadmin
        !            17: .sh SYNOPSIS
        !            18: acc_close()
        !            19: .sh DESCRIPTION
        !            20: ACC_CLOSE closes the relation and attribute relations
        !            21: which were opened by READADMIN using the
        !            22: Admin_rel and Admin_att descriptor structs.
        !            23: ACC_CLOSE calls CLEANREL to flush and reset any
        !            24: buffers associated with these two relations.
        !            25: .sh DIAGNOSTICS
        !            26: If an error occurs in CLEANREL
        !            27: a SYSERR is generated.
        !            28: .sh "SEE ALSO"
        !            29: readadmin
        !            30: .am ACC_ERR 9/13/77
        !            31: .sh NAME
        !            32: acc_err - set global Accerror indicator
        !            33: .sh SYNOPSIS
        !            34: .nf
        !            35: acc_err(errnum)
        !            36: int    errnum;
        !            37: .fi
        !            38: .sh DESCRIPTION
        !            39: ACC_ERR will set the global Accerror indicator to the value
        !            40: of ERRNUM and then return that value.
        !            41: The Accerror indicator is printed whenever a SYSERR occurs
        !            42: and its value is non-zero.
        !            43: .sh "TRACE FLAGS"
        !            44: 85.0
        !            45: .sh "SEE ALSO"
        !            46: closer, get_attuples, get_page, openr, pageflush
        !            47: .am ACC_INIT 8/31/77
        !            48: .sh NAME
        !            49: acc_init - initialize access methods
        !            50: .sh SYNOPSIS
        !            51: .nf
        !            52: acc_init()
        !            53: .fi
        !            54: .sh DESCRIPTION
        !            55: ACC_INIT initializes the access methods by setting up
        !            56: all of the access method buffers and all the pointers
        !            57: that link them together.
        !            58: The buffers are organized so that only one buffer can be used
        !            59: by any one relation.
        !            60: This helps so that
        !            61: "there is a little bit of each relation" available since
        !            62: many programs go back and forth between two or more relations.
        !            63: The buffers are allocated in a least recenlty used fashion.
        !            64: ACC_INIT calls READADMIN to initialize the Admin,
        !            65: Admin_rel and Admin_att structures and to
        !            66: open the relation and attribute relations.
        !            67: ACC_INIT also opens the lock device
        !            68: used for concurrency control.
        !            69: .sh DIAGNOSTICS
        !            70: No value is returned.
        !            71: If an error occurs a SYSERR is generated.
        !            72: .sh "TRACE FLAGS"
        !            73: 81.0, 81.1
        !            74: .sh "SEE ALSO"
        !            75: resetacc, readadmin
        !            76: .am ADD_A_PAGE 9/3/77
        !            77: .sh NAME
        !            78: add_a_page - add a page to a relation
        !            79: .sh SYNOPSIS
        !            80: .nf
        !            81: add_a_page(d, tid)
        !            82: struct descriptor      *d;
        !            83: struct tup_id          *tid;
        !            84: .fi
        !            85: .sh DESCRIPTION
        !            86: ADD_A_PAGE adds a page to the given relation.
        !            87: It is assumed that the current access method buffer
        !            88: contains a page from the relation.
        !            89: No linking is done to this page,
        !            90: i.e. no other page is affected by adding a page
        !            91: to a relation using this function.
        !            92: The new page is not written but is marked for writing.
        !            93: TID will contain the page id of the new page.
        !            94: This function is used by MODIFY.
        !            95: .sh DIAGNOSTICS
        !            96: .nf
        !            97: -1 -- pageflush failure on previous page in buffer
        !            98: 0 -- success
        !            99: .fi
        !           100: .sh "SEE ALSO"
        !           101: add_ovflo, add_prim
        !           102: .am ADD_OVFLO 9/6/77
        !           103: .sh NAME
        !           104: add_ovflo - add overflow page to a relation
        !           105: .sh SYNOPSIS
        !           106: .nf
        !           107: add_ovflo(d, tid)
        !           108: struct descriptor      *d;
        !           109: struct tup_id          *tid;
        !           110: .fi
        !           111: .sh DESCRIPTION
        !           112: ADD_OVFLO will add an overflow page to the page
        !           113: in the current access method buffer.
        !           114: The page must be part of the relation described in D.
        !           115: TID will be updated to the id of the new overflow page.
        !           116: .sh DIAGNOSTICS
        !           117: .nf
        !           118: -5, -3 -- get_page failure
        !           119: -4, -2, -1 -- pageflush failure
        !           120: 0 -- success
        !           121: .fi
        !           122: .sh "SEE ALSO"
        !           123: add_a_page, add_prim, findbest
        !           124: .am ADD_PRIM 9/3/77
        !           125: .sh NAME
        !           126: add_prim - add a primary page to a relation
        !           127: .sh SYNOPSIS
        !           128: .nf
        !           129: add_prim(d, tid)
        !           130: struct descriptor      *d;
        !           131: struct tup_id          *tid;
        !           132: .fi
        !           133: .sh DESCRIPTION
        !           134: ADD_PRIM adds a primary page to the given relation.
        !           135: It is assumed that the current access method buffer
        !           136: contains the last primary page of the relation.
        !           137: The new page is marked for writing.
        !           138: TID will contain the page id of the new page.
        !           139: ADD_PRIM is called by MODIFY.
        !           140: .sh DIAGNOSTICS
        !           141: .nf
        !           142: -1, -2 -- pageflush failure
        !           143: 0 -- success
        !           144: .fi
        !           145: .sh "SEE ALSO"
        !           146: add_a_page, add_ovflo
        !           147: .am ADDABYTE 9/7/77
        !           148: .sh NAME
        !           149: addabyte - add byte to hash key
        !           150: .sh SYNOPSIS
        !           151: .nf
        !           152: addabyte(ch, word, knt)
        !           153: char   ch;
        !           154: long   *word;
        !           155: int    knt;
        !           156: .fi
        !           157: .sh DESCRIPTION
        !           158: ADDABYTE takes a byte at a time from CH which is rotated and exclusive-ored
        !           159: into WORD, a long integer.
        !           160: This function is used by RHASH to form the hash key.
        !           161: KNT determines how CH is rotated.
        !           162: .sh DIAGNOSTICS
        !           163: No value is returned.
        !           164: .sh "SEE ALSO"
        !           165: rhash
        !           166: .am CANONICAL 9/13/77
        !           167: .sh NAME
        !           168: canonical - make tuple canonical
        !           169: .sh SYNOPSIS
        !           170: .nf
        !           171: canonical (d, tuple)
        !           172: struct descriptor      *d;
        !           173: char                   tuple[MAXTUP];
        !           174: .fi
        !           175: .sh DESCRIPTION
        !           176: CANONICAL will make TUPLE canonical and return the new length
        !           177: of the tuple.
        !           178: If the relation specified by D is compressed,
        !           179: TUPLE will be compressed and stored in the global Accanon.
        !           180: If the relation is not compressed,
        !           181: all character domains of TUPLE will be blank padded.
        !           182: In either case the global pointer Acctuple
        !           183: will point to the canonical tuple.
        !           184: .sh DIAGNOSTICS
        !           185: No error value is returned.
        !           186: .sh "SEE ALSO"
        !           187: comp_tup, insert, put_tuple, replace
        !           188: .am CHOOSE_BUF 9/3/77
        !           189: .sh NAME
        !           190: choose_buf - select an access method buffer
        !           191: .sh SYNOPSIS
        !           192: .nf
        !           193: struct accbuf  *choose_buf()
        !           194: .fi
        !           195: .sh DESCRIPTION
        !           196: CHOOSE_BUF will scan the access method buffers for a
        !           197: free buffer and return a pointer to the buffer.
        !           198: If there is no free buffer
        !           199: the last buffer in the LRU list is flushed and reset
        !           200: and a pointer to it is returned.
        !           201: .sh DIAGNOSTICS
        !           202: .nf
        !           203: -1 -- pageflush or reset failure
        !           204: .fi
        !           205: .sh "TRACE FLAGS"
        !           206: 82.8
        !           207: .sh "SEE ALSO"
        !           208: formatpg, get_page, resetacc
        !           209: .am COMP_TUP 9/13/77
        !           210: .sh NAME
        !           211: comp_tup - compress a tuple
        !           212: .sh SYNOPSIS
        !           213: .nf
        !           214: comp_tup(d, tuple)
        !           215: struct descriptor      *d;
        !           216: char                   tuple[MAXTUP];
        !           217: .fi
        !           218: .sh DESCRIPTION
        !           219: COMP_TUP will compress TUPLE into the global area Accanon.
        !           220: The compression consists of replacing trailing blanks in character fields
        !           221: with null string terminators.
        !           222: No compression is done on numeric fields.
        !           223: This compression method will never result in a tuple
        !           224: becoming longer than the normal tuple.
        !           225: COMP_TUP will return the length of the compressed tuple.
        !           226: .sh DIAGNOSTICS
        !           227: No error value is returned.
        !           228: .sh "SEE ALSO"
        !           229: canonical, put_tuple, uncomp_tup
        !           230: .am DEL_TUPLE 9/6/77
        !           231: .sh NAME
        !           232: del_tuple - delete specified tuple from current page
        !           233: .sh SYNOPSIS
        !           234: .nf
        !           235: del_tuple(tid, width)
        !           236: struct tup_id  *tid;
        !           237: int            width;
        !           238: .fi
        !           239: .sh DESCRIPTION
        !           240: DEL_TUPLE deletes the tuple specified by TID from the page
        !           241: in the current access method buffer.
        !           242: WIDTH must equal the true width of the tuple in bytes
        !           243: after any compression is performed.
        !           244: No checking is done to guarantee that the page id in TID
        !           245: matches the page in the access method buffer.
        !           246: .sh DIAGNOSTICS
        !           247: No value is returned.
        !           248: .sh "SEE ALSO"
        !           249: delete, replace
        !           250: .am DUMPTID 9/14/77
        !           251: .sh NAME
        !           252: dumptid - print tuple id
        !           253: .sh SYNOPSIS
        !           254: .nf
        !           255: dumptid(tid)
        !           256: struct tup_id  *tid;
        !           257: .fi
        !           258: .sh DESCRIPTION
        !           259: DUMPTID will print the page and line ids of TID
        !           260: on the UNIX standard output.
        !           261: .sh DIAGNOSTICS
        !           262: .nf
        !           263: 0 -- success
        !           264: .fi
        !           265: .am DUP_CHECK 9/14/77
        !           266: .sh NAME
        !           267: dup_check - check page for duplicate tuple
        !           268: .sh SYNOPSIS
        !           269: .nf
        !           270: dup_check(d, tuple)
        !           271: struct descriptor      *d;
        !           272: char                   tuple[MAXTUP];
        !           273: .fi
        !           274: .sh DESCRIPTION
        !           275: DUP_CHECK will scan the page in the current access method buffer
        !           276: for a duplicate of TUPLE.
        !           277: No checking is done to verify that the page in the current access
        !           278: method buffer is part of the relation described by D.
        !           279: .sh DIAGNOSTICS
        !           280: .nf
        !           281: 0 -- no duplicate found
        !           282: 1 -- duplicate found
        !           283: .fi
        !           284: .sh "SEE ALSO"
        !           285: findbest, scan_dups
        !           286: .am FIND_BUF 9/3/77
        !           287: .sh NAME
        !           288: find_buf - find a buffer with a page from the given relation
        !           289: .sh SYNOPSIS
        !           290: .nf
        !           291: struct accbuf          *find_buf(d)
        !           292: struct descriptor      *d;
        !           293: .fi
        !           294: .sh DESCRIPTION
        !           295: FIND_BUF will scan all the access method buffers until it finds
        !           296: a buffer with a relation id that matches the relation id
        !           297: in the descriptor struct,
        !           298: and return a pointer to the buffer.
        !           299: If no buffer is found a zero is returned.
        !           300: If the access method buffers have not been initialized
        !           301: by the time FIND_BUF is called,
        !           302: ACC_INIT is called to initialize them.
        !           303: .sh DIAGNOSTICS
        !           304: If an error occurs in ACC_INIT a SYSERR is generated.
        !           305: .sh "TRACE FLAGS"
        !           306: 82.0
        !           307: .sh "SEE ALSO"
        !           308: acc_init, cleanrel, closer, find, findbest, inpcloser, noclose, get_page
        !           309: .am FINDBEST 9/8/77
        !           310: .sh NAME
        !           311: findbest - determine best page to insert a tuple
        !           312: .sh SYNOPSIS
        !           313: .nf
        !           314: findbest(d, tid, tuple, need, checkdups)
        !           315: struct descriptor      *d;
        !           316: struct tup_id          *tid;
        !           317: char                   tuple[MAXTUP];
        !           318: int                    need, checkdups;
        !           319: .fi
        !           320: .sh DESCRIPTION
        !           321: FINDBEST will find the best page in the relation described
        !           322: by D for TUPLE.
        !           323: NEED indicates how much space is needed to store the tuple.
        !           324: If the relation is stored as a heap,
        !           325: FINDBEST will try to fit the tuple on the current page
        !           326: in the access method buffers.
        !           327: If there is no space,
        !           328: or if the current page is not available,
        !           329: the last page of the relation is selected.
        !           330: For other storage structures,
        !           331: FINDBEST will try to fit the tuple on the correct primary page
        !           332: or on one of its overflow pages that is closest to the primary page.
        !           333: If there is no free space a new overflow page is created.
        !           334: If CHECKDUPS is true,
        !           335: the primary page and all its overflow pages will be scanned
        !           336: for a duplicate of the tuple.
        !           337: If a duplicate is found
        !           338: then the new tuple will not be inserted,
        !           339: otherwise FINDBEST allocates an entry in the line number table
        !           340: of the target page for the tuple being inserted.
        !           341: TID will be set to the location of the new tuple.
        !           342: .sh DIAGNOSTICS
        !           343: .nf
        !           344: -8 -- unidentifiable storage structure in find
        !           345: -5, -3, -1 -- get_page failure
        !           346: -4, -2, -1 -- pageflush failure
        !           347: 1 -- duplicate found
        !           348: .fi
        !           349: .sh "TRACE FLAGS"
        !           350: 88.2
        !           351: .sh "SEE ALSO"
        !           352: dup_check, find, insert, replace, scan_dups
        !           353: .am FULLKEY 9/6/77
        !           354: .sh NAME
        !           355: fullkey - determine if SETKEY has been called
        !           356: for every keyed domain of a relation.
        !           357: .sh SYNOPSIS
        !           358: .nf
        !           359: fullkey(d)
        !           360: struct descriptor      *d;
        !           361: .fi
        !           362: .sh DESCRIPTION
        !           363: FULLKEY will determine if SETKEY was called
        !           364: for every keyed domain of a given relation.
        !           365: This is important for the hashing function
        !           366: since it can only accept keys where a value has
        !           367: been provided for each keyed domain.
        !           368: .sh DIAGNOSTICS
        !           369: .nf
        !           370: 0 -- only a partial key is provided
        !           371: 1 -- a full key is provided
        !           372: .fi
        !           373: .sh "SEE ALSO"
        !           374: find, rhash
        !           375: .am GET_ADDR 9/12/77
        !           376: .sh NAME
        !           377: get_addr - get address of tuple within page
        !           378: .sh SYNOPSIS
        !           379: .nf
        !           380: char *get_addr(tid)
        !           381: struct tup_id  *tid;
        !           382: .fi
        !           383: .sh DESCRIPTION
        !           384: GET_ADDR computes and returns the character address of the tuple specified
        !           385: by TID in the current access method buffer.
        !           386: .sh DIAGNOSTICS
        !           387: No error codes are returned.
        !           388: If an error is detected
        !           389: a SYSERR is generated.
        !           390: .sh "SEE ALSO"
        !           391: get_tuple, put_tuple
        !           392: .am GET_ATTUPLES 9/13/77
        !           393: .sh NAME
        !           394: get_attuples - get tuples from attribute relation
        !           395: .sh SYNOPSIS
        !           396: .nf
        !           397: get_attuples(d)
        !           398: struct descriptor      *d;
        !           399: .fi
        !           400: .sh DESCRIPTION
        !           401: GET_ATTUPLES will fill the attribute template of the descriptor
        !           402: struct D with data from tuples of the attribute relation.
        !           403: The relation must be identified in D,
        !           404: which can be done by calling GET_RELTUPLE.
        !           405: .sh DIAGNOSTICS
        !           406: .nf
        !           407: -8 -- unidentifiable storage structure in find
        !           408: -6 -- missing attributes from attribute relation
        !           409: -2 -- pagelfush failure
        !           410: -1 -- get_page failure or invalid error
        !           411: 0 -- success
        !           412: .fi
        !           413: .sh "TRACE FLAGS"
        !           414: 90.3
        !           415: .sh "SEE ALSO"
        !           416: get_reltuple, openr
        !           417: .am GET_PAGE 4/5/77
        !           418: .sh NAME
        !           419: get_page - get a page from a relation
        !           420: .sh SYNOPSIS
        !           421: .nf
        !           422: get_page(d, tid)
        !           423: struct descriptor      *d;
        !           424: struct tup_id          *tid;
        !           425: .fi
        !           426: .sh DESCRIPTION
        !           427: GET_PAGE will retrieve a page from the UNIX file
        !           428: which corresponds to a given relation,
        !           429: unless the page is already available in one of
        !           430: the access method buffers.
        !           431: If the page has to be read in,
        !           432: it will be placed in a buffer corresponding to the
        !           433: relation specified by D.
        !           434: If there is no such buffer,
        !           435: the last buffer in the LRU buffer queue is flushed
        !           436: and the page is placed in that buffer.
        !           437: The buffer containing the requested page is then placed at the
        !           438: top of the LRU buffer queue.
        !           439: If the relation was opened in read/write mode,
        !           440: a lock is set on the page to maintain proper concurrency control.
        !           441: The current page size is 512 bytes of which
        !           442: 498 bytes are available for tuple storage.
        !           443: .sh DIAGNOSTICS
        !           444: .nf
        !           445: -2 -- pageflush error
        !           446: -1 -- UNIX read error
        !           447: 0 -- success
        !           448: .fi
        !           449: .sh "TRACE FLAGS"
        !           450: 83.0, 83.1, 83.2
        !           451: .sh "SEE ALSO"
        !           452: choose_buf, find_buf, get, resetacc, pageflush, top_acc
        !           453: .am GET_RELTUPLE 9/13/77
        !           454: .sh NAME
        !           455: get_reltuple - get tuple from relation relation
        !           456: .sh SYNOPSIS
        !           457: .nf
        !           458: get_reltuple(d, name)
        !           459: struct descriptor      *d;
        !           460: char                   name[MAXNAME + 1];
        !           461: .fi
        !           462: .sh DESCRIPTION
        !           463: GET_RELTUPLE will get a tuple from the relation relation
        !           464: for the relation specified by NAME
        !           465: and place the tuple in the descriptor struct pointed to by D.
        !           466: Two search attempts are made,
        !           467: the first for a relation owned by the current user,
        !           468: the second for a relation owned by the
        !           469: data base administrator.
        !           470: .sh DIAGNOSTICS
        !           471: .nf
        !           472: -8 -- unidentifiable storage structure in find
        !           473: -2 -- pageflush failure
        !           474: -1 -- get_page failure or invalid error
        !           475: 0 -- success
        !           476: 1 -- no tuples could be found
        !           477: .fi
        !           478: .sh "TRACE FLAGS"
        !           479: 90.1
        !           480: .sh "SEE ALSO"
        !           481: openr, readadmin
        !           482: .am GET_TUPLE 9/12/77
        !           483: .sh NAME
        !           484: get_tuple - get tuple from page
        !           485: .sh SYNOPSIS
        !           486: .nf
        !           487: get_tuple(d, tid, tuple)
        !           488: struct descriptor      *d;
        !           489: struct tup_id          *tid;
        !           490: char                   tuple[MAXTUP];
        !           491: .fi
        !           492: .sh DESCRIPTION
        !           493: GET_TUPLE will move a tuple from the page in the current
        !           494: access method buffer to TUPLE,
        !           495: performing any necessary decompression.
        !           496: The tuple is identified by TID,
        !           497: no checking is done to verify that the current page in the
        !           498: access method buffer corresponds to TID or the relation
        !           499: specified by D.
        !           500: .sh DIAGNOSTICS
        !           501: No value is returned.
        !           502: .sh "SEE ALSO"
        !           503: get, uncomp_tup
        !           504: .am INVALID 9/12/77
        !           505: .sh NAME
        !           506: invalid - check the validity of a tuple id
        !           507: .sh SYNOPSIS
        !           508: .nf
        !           509: invalid(tid)
        !           510: struct tup_id  *tid;
        !           511: .fi
        !           512: .sh DESCRIPTION
        !           513: INVALID checks if the tuple id represents a valid tuple
        !           514: versus one that has been deleted.
        !           515: INVALID assumes that the tuple id is for the
        !           516: page in the current buffer.
        !           517: .sh DIAGNOSTICS
        !           518: .nf
        !           519: -1 -- line id exceeded line number table
        !           520: 0 -- tuple id is valid
        !           521: 2 -- tuple was deleted
        !           522: .fi
        !           523: .sh "SEE ALSO"
        !           524: delete, get, replace
        !           525: .am LAST_PAGE 9/13/77
        !           526: .sh NAME
        !           527: last_page - compute tid for last page in relation
        !           528: .sh SYNOPSIS
        !           529: .nf
        !           530: last_page(d, tid)
        !           531: struct descriptor      *d;
        !           532: struct tup_id          *tid;
        !           533: .fi
        !           534: .sh DESCRIPTION
        !           535: LAST_PAGE computes a tuple id for the last page in the relation specified
        !           536: by D and stores the id in TID.
        !           537: The line id in TID is set to zero.
        !           538: .sh DIAGNOSTICS
        !           539: .nf
        !           540: 0 -- success
        !           541: .fi
        !           542: If an error occurs a SYSERR is generated.
        !           543: .sh "SEE ALSO"
        !           544: add_ovflo, findbest, fstat (UNIX function)
        !           545: .am NDXSEARCH 9/7/77
        !           546: .sh NAME
        !           547: ndxsearch - search ISAM directory
        !           548: .sh SYNOPSIS
        !           549: .nf
        !           550: ndxsearch(d, tid, key, mode, keyok)
        !           551: struct descriptor      *d;
        !           552: struct tup_id          *tid;
        !           553: char                   key[MAXTUP];
        !           554: int                    mode, keyok;
        !           555: .fi
        !           556: .sh DESCRIPTION
        !           557: NDXSEARCH will search the ISAM directory for the given relation.
        !           558: It is assumed that the relation is stored as an ISAM file.
        !           559: It is not necessary to provide values for all keyed domains,
        !           560: but the only values used are those starting with the most
        !           561: significant keyed domain
        !           562: to the first keyed domain that does not have a value
        !           563: provided by SETKEY.
        !           564: If MODE is less than zero,
        !           565: NDXSEARCH will determine the lower limit of a scan
        !           566: according to the key.
        !           567: The limit is returned in TID.
        !           568: If MODE is greater than zero,
        !           569: the upper scan limit is determined.
        !           570: If KEYOK is true (not equal to zero),
        !           571: it is assumed that values for all keyed domains
        !           572: have been provided regardless of whether SETKEY was called.
        !           573: .sh DIAGNOSTICS
        !           574: .nf
        !           575: -2 -- pageflush failure
        !           576: -1 -- get_page failure
        !           577: 0 -- success
        !           578: .fi
        !           579: .sh "SEE ALSO"
        !           580: find, setkey
        !           581: .am NEWLINO 9/13/77
        !           582: .sh NAME
        !           583: newlino - find free line number on page
        !           584: .sh SYNOPSIS
        !           585: .nf
        !           586: newlino(len)
        !           587: int    len;
        !           588: .fi
        !           589: .sh DESCRIPTION
        !           590: NEWLINO will scan the line number table in the page in the
        !           591: current access method buffer,
        !           592: looking for a free table entry.
        !           593: If an entry is found it is allocated for a new tuple,
        !           594: otherwise a new entry is created at the end of the
        !           595: line number table and allocated for a new tuple.
        !           596: Space in the page is also reserved for a tuple
        !           597: of length LEN.
        !           598: NEWLINO returns the line number allocated for a new tuple.
        !           599: .sh DIAGNOSTICS
        !           600: No error value is returned.
        !           601: .sh "SEE ALSO"
        !           602: findbest
        !           603: .am PAGEFLUSH 9/13/77
        !           604: .sh NAME
        !           605: pageflush - flush access method buffers
        !           606: .sh SYNOPSIS
        !           607: .nf
        !           608: pageflush(buf)
        !           609: struct accbuf  *buf;
        !           610: .fi
        !           611: .sh DESCRIPTION
        !           612: PAGEFLUSH will write the access method buffer pointed to
        !           613: by BUF onto disk if the buffer was tagged for writing.
        !           614: PAGEFLUSH can be called with the parameter "Acc_head"
        !           615: which is a global buffer pointer (declared in access.h)
        !           616: which will flush the current access method buffer.
        !           617: PAGEFLUSH can also be called with a 0 (i.e. a null pointer)
        !           618: which will flush all buffers
        !           619: tagged for writing.
        !           620: If a page was locked,
        !           621: it is unlocked after being written to disk.
        !           622: .sh DIAGNOSTICS
        !           623: .nf
        !           624: -2 -- UNIX write error
        !           625: 0 -- success
        !           626: .fi
        !           627: .sh "TRACE FLAGS"
        !           628: 84.0, 84.1, 84.2
        !           629: .sh "SEE ALSO"
        !           630: get_page, resetacc
        !           631: .am PLUCK_PAGE 9/14/77
        !           632: .sh NAME
        !           633: pluck_page - extract page id from tuple id
        !           634: .sh SYNOPSIS
        !           635: .nf
        !           636: pluck_page(tid, pnum)
        !           637: struct tup_id  *tid;
        !           638: long           *pnum;
        !           639: .fi
        !           640: .sh DESCRIPTION
        !           641: PLUCK_PAGE will extract the page id from TID and
        !           642: store it in the long variable pointed to by PNUM.
        !           643: .sh DIAGNOSTICS
        !           644: .nf
        !           645: 0 -- success
        !           646: .fi
        !           647: .sh "SEE ALSO"
        !           648: stuff_page, tup_id
        !           649: .am PUT_TUPLE 9/13/77
        !           650: .sh NAME
        !           651: put_tuple - put tuple in page
        !           652: .sh SYNOPSIS
        !           653: .nf
        !           654: put_tuple(tid, tuple, length)
        !           655: struct tup_id  *tid;
        !           656: char           tuple[MAXTUP];
        !           657: int            length;
        !           658: .fi
        !           659: .sh DESCRIPTION
        !           660: PUT_TUPLE will move TUPLE into the page in the current access method buffer
        !           661: at the location specified by TID.
        !           662: It is assumed that any required compression has already been done
        !           663: and that the correct amount of space has been reserved on the page
        !           664: for the tuple.
        !           665: No checking is done to verify that the page identified by TID
        !           666: corresponds to the page in the current access method buffer.
        !           667: .sh DIAGNOSTICS
        !           668: No value is returned.
        !           669: .sh "TRACE FLAGS"
        !           670: 87.0
        !           671: .sh "SEE ALSO"
        !           672: canonical, get_addr, insert, replace
        !           673: .am READADMIN 9/3/77
        !           674: .sh NAME
        !           675: readadmin - read data from admin file
        !           676: .sh SYNOPSIS
        !           677: .nf
        !           678: readadmin()
        !           679: .fi
        !           680: .sh DESCRIPTION
        !           681: READADMIN will read data from the admin file.
        !           682: The admin file contains two descriptor structs,
        !           683: one for the relation relation and one for the
        !           684: attribute relation.
        !           685: These two descriptors are used by the access methods
        !           686: whenever either of the relations has to be used
        !           687: to retrieve or update information.
        !           688: The two descriptors are globally declared as
        !           689: Admin_rel and Admin_att.
        !           690: The admin file also contains the user id for the data base administrator,
        !           691: which is stored in the Admin_admin struct.
        !           692: .sh DIAGNOSTICS
        !           693: Nothing is returned.
        !           694: If an error occurs a SYSERR is generated.
        !           695: .sh "SEE ALSO"
        !           696: acc_init
        !           697: .am RESETACC 8/31/77
        !           698: .sh NAME
        !           699: resetacc - reset access method buffer
        !           700: .sh SYNOPSIS
        !           701: .nf
        !           702: resetacc(buf)
        !           703: struct accbuf  *buf;
        !           704: .fi
        !           705: .sh DESCRIPTION
        !           706: RESETACC will first flush the given buffer
        !           707: if it contains a dirty page from some relation,
        !           708: then clear the relation identifier and other fields in the buffer.
        !           709: This has
        !           710: the effect of erasing the buffer so that any attempt to access
        !           711: the page that was contained in the buffer will fail unless
        !           712: the page is read back from disk.
        !           713: If the buf parameter equals zero,
        !           714: the current access method buffer is reset.
        !           715: .sh DIAGNOSTICS
        !           716: .nf
        !           717: 0 -- success
        !           718: < 0 -- pageflush fail (see pageflush for error codes)
        !           719: .fi
        !           720: .sh "TRACE FLAGS"
        !           721: 80.0
        !           722: .sh "SEE ALSO"
        !           723: acc_init, choose_buf, cleanrel, pageflush
        !           724: .am RHASH 9/7/77
        !           725: .sh NAME
        !           726: rhash - compute hash key
        !           727: .sh SYNOPSIS
        !           728: .nf
        !           729: long                   rhash(d, key)
        !           730: struct descriptor      *d;
        !           731: char                   key[MAXTUP];
        !           732: .fi
        !           733: .sh DESCRIPTION
        !           734: RHASH will perform a randomizing hash on the full key.
        !           735: Values for the hash function are taken from every keyed domain of KEY.
        !           736: It is important that every keyed domain have a correct value,
        !           737: otherwise the hash result will be incorrect.
        !           738: RHASH returns a page number in the form of a long integer.
        !           739: .sh DIAGNOSTICS
        !           740: None.
        !           741: .sh "TRACE FLAGS"
        !           742: 92.8
        !           743: .sh "SEE ALSO"
        !           744: addabyte, find
        !           745: .am SCAN_DUPS 9/14/77
        !           746: .sh NAME
        !           747: scan_dups - scan for duplicate tuples
        !           748: .sh SYNOPSIS
        !           749: .nf
        !           750: scan_dups(d, tid, tuple)
        !           751: struct descriptor      *d;
        !           752: struct tup_id          *tid;
        !           753: char                   tuple[MAXTUP];
        !           754: .fi
        !           755: .sh DESCRIPTION
        !           756: SCAN_DUPS will look for a duplicate of TUPLE
        !           757: beginning with the page specified by TID.
        !           758: SCAN_DUPS will also check all overflow pages linked
        !           759: to the first page until a duplicate is found.
        !           760: SCAN_DUPS will make sure that the page
        !           761: that was in the current access method buffer upon entry
        !           762: will be there upon exit,
        !           763: as long as that page was part of the relation
        !           764: described by D.
        !           765: .sh DIAGNOSTICS
        !           766: .nf
        !           767: -2 -- pageflush failure
        !           768: -1 -- get_page failure
        !           769: 0 -- no duplicate found
        !           770: 1 -- duplicate found
        !           771: .fi
        !           772: .sh "SEE ALSO"
        !           773: dup_check, findbest, replace
        !           774: .am SPACE_LEFT 9/13/77
        !           775: .sh NAME
        !           776: space_left - compute amount of free space on page
        !           777: .sh DESCRIPTION
        !           778: SPACE_LEFT will determine how much space is left on
        !           779: the current page for tuple storage.
        !           780: The return value is the amount of free space in bytes.
        !           781: .sh DIAGNOSTICS
        !           782: none
        !           783: .sh "SEE ALSO"
        !           784: findbest
        !           785: .am STUFF_PAGE 9/14/77
        !           786: .sh NAME
        !           787: stuff_page - set page id of tuple id
        !           788: .sh SYNOPSIS
        !           789: .nf
        !           790: stuff_page(tid, pnum)
        !           791: struct tup_id  *tid;
        !           792: long           *pnum;
        !           793: .fi
        !           794: .sh DESCRIPTION
        !           795: STUFF_PAGE will take the page number pointed to by PNUM
        !           796: and store it in TID without affecting the
        !           797: line id in TID.
        !           798: .sh DIAGNOSTICS
        !           799: .nf
        !           800: 0 -- success
        !           801: .fi
        !           802: .sh "SEE ALSO"
        !           803: pluck_page, tup_id
        !           804: .am TOP_ACC 9/3/77
        !           805: .sh NAME
        !           806: top_acc - move buffer to top of LRU list
        !           807: .sh SYNOPSIS
        !           808: .nf
        !           809: top_acc(buf)
        !           810: struct accbuf  *buf
        !           811: .fi
        !           812: .sh DESCRIPTION
        !           813: TOP_ACC unlinks the buffer from its current position
        !           814: in the LRU linked list and relinks it at the top of the list.
        !           815: TOP_ACC is called for a buffer every time it is accessed
        !           816: to maintain the LRU sequence of the linked list.
        !           817: .sh DIAGNOSTICS
        !           818: .nf
        !           819: 0 -- success
        !           820: .fi
        !           821: .sh "SEE ALSO"
        !           822: acc_init
        !           823: .am TUP_ID 9/14/77
        !           824: .sh NAME
        !           825: tup_id - tuple id structure
        !           826: .sh SYNOPSIS
        !           827: .nf
        !           828: struct tup_id
        !           829: {
        !           830:        char    pg1, line_id;
        !           831:        int     pg2;
        !           832: }      tid;
        !           833: .fi
        !           834: .sh DESCRIPTION
        !           835: The TUP_ID structure is used to declare tuple id's
        !           836: which are passed as parameters to some of the
        !           837: access method routines.
        !           838: The tuple id uniquely addresses a tuple of a relation.
        !           839: Since tuples can move around within a relation,
        !           840: tuple id's should NOT be saved.
        !           841: It may be desirable to access the tuple id in some
        !           842: special cases to gather statistics on disk usage.
        !           843: At no time should a program modify a tuple id,
        !           844: the access methods take care of initializing
        !           845: and updating tuple id's as necessary.
        !           846: .sh "SEE ALSO"
        !           847: delete, find, get, insert, pluck_page, replace, stuff_page
        !           848: .am TUP_LEN 9/14/77
        !           849: .sh NAME
        !           850: tup_len - determine length of tuple
        !           851: .sh SYNOPSIS
        !           852: .nf
        !           853: tup_len(tid)
        !           854: struct tup_id  *tid;
        !           855: .fi
        !           856: .sh DESCRIPTION
        !           857: TUP_LEN will determine how many bytes in the page in the current access method
        !           858: buffer are used by the tuple
        !           859: pointed to by TID,
        !           860: and return the length.
        !           861: No checking is done to verify that the page specified by TID
        !           862: corresponds to the page in the current access method buffer.
        !           863: .sh DIAGNOSTICS
        !           864: No error value is returned.
        !           865: .sh "TRACE FLAGS"
        !           866: 89.1
        !           867: .sh "SEE ALSO"
        !           868: delete, replace
        !           869: .am UNCOMP_TUP 9/12/77
        !           870: .sh NAME
        !           871: uncomp_tup - decompress tuple
        !           872: .sh SYNOPSIS
        !           873: .nf
        !           874: uncomp_tup(d, cp, tuple)
        !           875: struct descriptor      *d;
        !           876: char                   *cp, tuple[MAXTUP];
        !           877: .fi
        !           878: .sh DESCRIPTION
        !           879: UNCOMP_TUP will decompress the tuple pointed to by CP
        !           880: and store the result in TUPLE.
        !           881: .sh DIAGNOSTICS
        !           882: No value is returned.
        !           883: .sh "SEE ALSO"
        !           884: comp_tup, get_tuple

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.