155 lines
3.8 KiB
Plaintext
155 lines
3.8 KiB
Plaintext
|
/*-
|
||
|
* See the file LICENSE for redistribution information.
|
||
|
*
|
||
|
* Copyright (c) 1996, 1997
|
||
|
* Sleepycat Software. All rights reserved.
|
||
|
* @(#)db.src 10.3 (Sleepycat) 8/18/97
|
||
|
*/
|
||
|
#include "config.h"
|
||
|
|
||
|
PREFIX db
|
||
|
|
||
|
/*
|
||
|
* addrem -- Add or remove an entry from a duplicate page.
|
||
|
*
|
||
|
* opcode: identifies if this is an add or delete.
|
||
|
* fileid: file identifier of the file being modified.
|
||
|
* pgno: duplicate page number.
|
||
|
* indx: location at which to insert or delete.
|
||
|
* nbytes: number of bytes added/removed to/from the page.
|
||
|
* hdr: header for the data item.
|
||
|
* dbt: data that is deleted or is to be added.
|
||
|
* pagelsn: former lsn of the page.
|
||
|
*
|
||
|
* If the hdr was NULL then, the dbt is a regular B_KEYDATA.
|
||
|
* If the dbt was NULL then the hdr is a complete item to be
|
||
|
* pasted on the page.
|
||
|
*/
|
||
|
BEGIN addrem
|
||
|
ARG opcode u_int32_t lu
|
||
|
ARG fileid u_int32_t lu
|
||
|
ARG pgno db_pgno_t lu
|
||
|
ARG indx u_int32_t lu
|
||
|
ARG nbytes size_t lu
|
||
|
DBT hdr DBT s
|
||
|
DBT dbt DBT s
|
||
|
POINTER pagelsn DB_LSN * lu
|
||
|
END
|
||
|
|
||
|
/*
|
||
|
* split -- Handles the split of a duplicate page.
|
||
|
*
|
||
|
* opcode: defines whether we are splitting from or splitting onto
|
||
|
* fileid: file identifier of the file being modified.
|
||
|
* pgno: page number being split.
|
||
|
* pageimage: entire page contents.
|
||
|
* pagelsn: former lsn of the page.
|
||
|
*/
|
||
|
BEGIN split
|
||
|
ARG opcode u_int32_t lu
|
||
|
ARG fileid u_int32_t lu
|
||
|
ARG pgno db_pgno_t lu
|
||
|
DBT pageimage DBT s
|
||
|
POINTER pagelsn DB_LSN * lu
|
||
|
END
|
||
|
|
||
|
/*
|
||
|
* big -- Handles addition and deletion of big key/data items.
|
||
|
*
|
||
|
* opcode: identifies get/put.
|
||
|
* fileid: file identifier of the file being modified.
|
||
|
* pgno: page onto which data is being added/removed.
|
||
|
* prev_pgno: the page before the one we are logging.
|
||
|
* next_pgno: the page after the one we are logging.
|
||
|
* dbt: data being written onto the page.
|
||
|
* pagelsn: former lsn of the orig_page.
|
||
|
* prevlsn: former lsn of the prev_pgno.
|
||
|
* nextlsn: former lsn of the next_pgno. This is not currently used, but
|
||
|
* may be used later if we actually do overwrites of big key/
|
||
|
* data items in place.
|
||
|
*/
|
||
|
BEGIN big
|
||
|
ARG opcode u_int32_t lu
|
||
|
ARG fileid u_int32_t lu
|
||
|
ARG pgno db_pgno_t lu
|
||
|
ARG prev_pgno db_pgno_t lu
|
||
|
ARG next_pgno db_pgno_t lu
|
||
|
DBT dbt DBT s
|
||
|
POINTER pagelsn DB_LSN * lu
|
||
|
POINTER prevlsn DB_LSN * lu
|
||
|
POINTER nextlsn DB_LSN * lu
|
||
|
END
|
||
|
|
||
|
/*
|
||
|
* ovref -- Handles increment of overflow page reference count.
|
||
|
*
|
||
|
* fileid: identifies the file being modified.
|
||
|
* pgno: page number being incremented.
|
||
|
* lsn the page's original lsn.
|
||
|
*/
|
||
|
BEGIN ovref
|
||
|
ARG fileid u_int32_t lu
|
||
|
ARG pgno db_pgno_t lu
|
||
|
POINTER lsn DB_LSN * lu
|
||
|
END
|
||
|
|
||
|
/*
|
||
|
* relink -- Handles relinking around a page.
|
||
|
*
|
||
|
* pgno: the page being changed.
|
||
|
* lsn the page's original lsn.
|
||
|
* prev: the previous page.
|
||
|
* lsn_prev: the previous page's original lsn.
|
||
|
* next: the next page.
|
||
|
* lsn_next: the previous page's original lsn.
|
||
|
*/
|
||
|
BEGIN relink
|
||
|
ARG fileid u_int32_t lu
|
||
|
ARG pgno db_pgno_t lu
|
||
|
POINTER lsn DB_LSN * lu
|
||
|
ARG prev db_pgno_t lu
|
||
|
POINTER lsn_prev DB_LSN * lu
|
||
|
ARG next db_pgno_t lu
|
||
|
POINTER lsn_next DB_LSN * lu
|
||
|
END
|
||
|
|
||
|
/*
|
||
|
* Addpage -- Handles adding a new duplicate page onto the end of
|
||
|
* an existing duplicate page.
|
||
|
* fileid: identifies the file being changed.
|
||
|
* pgno: page number to which a new page is being added.
|
||
|
* lsn: lsn of pgno
|
||
|
* nextpgno: new page number being added.
|
||
|
* nextlsn: lsn of nextpgno;
|
||
|
*/
|
||
|
BEGIN addpage
|
||
|
ARG fileid u_int32_t lu
|
||
|
ARG pgno db_pgno_t lu
|
||
|
POINTER lsn DB_LSN * lu
|
||
|
ARG nextpgno db_pgno_t lu
|
||
|
POINTER nextlsn DB_LSN * lu
|
||
|
END
|
||
|
|
||
|
/*
|
||
|
* Debug -- log an operation upon entering an access method.
|
||
|
* op: Operation (cursor, c_close, c_get, c_put, c_del,
|
||
|
* get, put, delete).
|
||
|
* fileid: identifies the file being acted upon.
|
||
|
* key: key paramater
|
||
|
* data: data parameter
|
||
|
* flags: flags parameter
|
||
|
*/
|
||
|
BEGIN debug
|
||
|
DBT op DBT s
|
||
|
ARG fileid u_int32_t lu
|
||
|
DBT key DBT s
|
||
|
DBT data DBT s
|
||
|
ARG arg_flags u_int32_t lu
|
||
|
END
|
||
|
|
||
|
/*
|
||
|
* noop -- do nothing, but get an LSN.
|
||
|
*/
|
||
|
BEGIN noop
|
||
|
END
|