Annotation of 43BSD/ingres/doc/access/internal.nr, revision 1.1.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.