Import BSDDB 4.7.25 (as of svn r89086)
This commit is contained in:
306
db/db.src
Normal file
306
db/db.src
Normal file
@@ -0,0 +1,306 @@
|
||||
/*-
|
||||
* See the file LICENSE for redistribution information.
|
||||
*
|
||||
* Copyright (c) 1996,2008 Oracle. All rights reserved.
|
||||
*
|
||||
* $Id: db.src,v 12.14 2008/01/30 04:30:36 mjc Exp $
|
||||
*/
|
||||
|
||||
DBPRIVATE
|
||||
PREFIX __db
|
||||
|
||||
INCLUDE #include "db_int.h"
|
||||
INCLUDE #include "dbinc/crypto.h"
|
||||
INCLUDE #include "dbinc/db_page.h"
|
||||
INCLUDE #include "dbinc/db_dispatch.h"
|
||||
INCLUDE #include "dbinc/db_am.h"
|
||||
INCLUDE #include "dbinc/log.h"
|
||||
INCLUDE #include "dbinc/txn.h"
|
||||
INCLUDE
|
||||
|
||||
/*
|
||||
* 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 42 41
|
||||
ARG opcode u_int32_t lu
|
||||
DB fileid int32_t ld
|
||||
ARG pgno db_pgno_t lu
|
||||
ARG indx u_int32_t lu
|
||||
ARG nbytes u_int32_t lu
|
||||
DBT hdr DBT s
|
||||
DBT dbt 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 42 43
|
||||
ARG opcode u_int32_t lu
|
||||
DB fileid int32_t ld
|
||||
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/decrement of overflow page reference count.
|
||||
*
|
||||
* fileid: identifies the file being modified.
|
||||
* pgno: page number whose ref count is being incremented/decremented.
|
||||
* adjust: the adjustment being made.
|
||||
* lsn: the page's original lsn.
|
||||
*/
|
||||
BEGIN ovref 42 44
|
||||
DB fileid int32_t ld
|
||||
ARG pgno db_pgno_t lu
|
||||
ARG adjust int32_t ld
|
||||
POINTER lsn DB_LSN * lu
|
||||
END
|
||||
|
||||
/*
|
||||
* relink -- Handles relinking around a page.
|
||||
*
|
||||
* opcode: indicates if this is an addpage or delete 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_COMPAT relink 42 45
|
||||
ARG opcode u_int32_t lu
|
||||
DB fileid int32_t ld
|
||||
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
|
||||
|
||||
/*
|
||||
* 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 42 47
|
||||
DBT op DBT s
|
||||
ARG fileid int32_t ld
|
||||
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 42 48
|
||||
DB fileid int32_t ld
|
||||
ARG pgno db_pgno_t lu
|
||||
POINTER prevlsn DB_LSN * lu
|
||||
END
|
||||
|
||||
/*
|
||||
* pg_alloc: used to record allocating a new page.
|
||||
*
|
||||
* meta_lsn: the original lsn of the page reference by meta_pgno.
|
||||
* meta_pgno the page pointing at the allocated page in the free list.
|
||||
* If the list is unsorted this is the metadata page.
|
||||
* page_lsn: the allocated page's original lsn.
|
||||
* pgno: the page allocated.
|
||||
* ptype: the type of the page allocated.
|
||||
* next: the next page on the free list.
|
||||
* last_pgno: the last page in the file after this op (4.3+).
|
||||
*/
|
||||
BEGIN_COMPAT pg_alloc 42 49
|
||||
DB fileid int32_t ld
|
||||
POINTER meta_lsn DB_LSN * lu
|
||||
ARG meta_pgno db_pgno_t lu
|
||||
POINTER page_lsn DB_LSN * lu
|
||||
ARG pgno db_pgno_t lu
|
||||
ARG ptype u_int32_t lu
|
||||
ARG next db_pgno_t lu
|
||||
END
|
||||
|
||||
BEGIN pg_alloc 43 49
|
||||
DB fileid int32_t ld
|
||||
POINTER meta_lsn DB_LSN * lu
|
||||
ARG meta_pgno db_pgno_t lu
|
||||
POINTER page_lsn DB_LSN * lu
|
||||
ARG pgno db_pgno_t lu
|
||||
ARG ptype u_int32_t lu
|
||||
ARG next db_pgno_t lu
|
||||
ARG last_pgno db_pgno_t lu
|
||||
END
|
||||
|
||||
/*
|
||||
* pg_free: used to record freeing a page.
|
||||
* If we are maintaining a sorted free list (during compact) meta_pgno
|
||||
* will be non-zero and refer to the page that preceeds the one we are freeing
|
||||
* in the free list. Meta_lsn will then be the lsn of that page.
|
||||
*
|
||||
* pgno: the page being freed.
|
||||
* meta_lsn: the meta-data page's original lsn.
|
||||
* meta_pgno: the meta-data page number.
|
||||
* header: the header from the free'd page.
|
||||
* next: the previous next pointer on the metadata page.
|
||||
* last_pgno: the last page in the file before this op (4.3+).
|
||||
*/
|
||||
BEGIN_COMPAT pg_free 42 50
|
||||
DB fileid int32_t ld
|
||||
ARG pgno db_pgno_t lu
|
||||
POINTER meta_lsn DB_LSN * lu
|
||||
ARG meta_pgno db_pgno_t lu
|
||||
PGDBT header DBT s
|
||||
ARG next db_pgno_t lu
|
||||
END
|
||||
|
||||
BEGIN pg_free 43 50
|
||||
DB fileid int32_t ld
|
||||
ARG pgno db_pgno_t lu
|
||||
POINTER meta_lsn DB_LSN * lu
|
||||
ARG meta_pgno db_pgno_t lu
|
||||
PGDBT header DBT s
|
||||
ARG next db_pgno_t lu
|
||||
ARG last_pgno db_pgno_t lu
|
||||
END
|
||||
|
||||
/*
|
||||
* cksum --
|
||||
* This log record is written when we're unable to checksum a page,
|
||||
* before returning DB_RUNRECOVERY. This log record causes normal
|
||||
* recovery to itself return DB_RUNRECOVERY, as only catastrophic
|
||||
* recovery can fix things.
|
||||
*/
|
||||
BEGIN cksum 42 51
|
||||
END
|
||||
|
||||
/*
|
||||
* pg_freedata: used to record freeing a page with data on it.
|
||||
*
|
||||
* pgno: the page being freed.
|
||||
* meta_lsn: the meta-data page's original lsn.
|
||||
* meta_pgno: the meta-data page number.
|
||||
* header: the header and index entries from the free'd page.
|
||||
* data: the data from the free'd page.
|
||||
* next: the previous next pointer on the metadata page.
|
||||
* last_pgno: the last page in the file before this op (4.3+).
|
||||
*/
|
||||
BEGIN_COMPAT pg_freedata 42 52
|
||||
DB fileid int32_t ld
|
||||
ARG pgno db_pgno_t lu
|
||||
POINTER meta_lsn DB_LSN * lu
|
||||
ARG meta_pgno db_pgno_t lu
|
||||
PGDBT header DBT s
|
||||
ARG next db_pgno_t lu
|
||||
PGDDBT data DBT s
|
||||
END
|
||||
|
||||
BEGIN pg_freedata 43 52
|
||||
DB fileid int32_t ld
|
||||
ARG pgno db_pgno_t lu
|
||||
POINTER meta_lsn DB_LSN * lu
|
||||
ARG meta_pgno db_pgno_t lu
|
||||
PGDBT header DBT s
|
||||
ARG next db_pgno_t lu
|
||||
ARG last_pgno db_pgno_t lu
|
||||
PGDDBT data DBT s
|
||||
END
|
||||
|
||||
/*
|
||||
* pg_prepare: used to record an aborted page in a prepared transaction.
|
||||
*
|
||||
* pgno: the page being freed.
|
||||
*/
|
||||
X BEGIN pg_prepare 42 53
|
||||
X DB fileid int32_t ld
|
||||
X ARG pgno db_pgno_t lu
|
||||
X END
|
||||
|
||||
/*
|
||||
* pg_new: used to record a new page put on the free list.
|
||||
*
|
||||
* pgno: the page being freed.
|
||||
* meta_lsn: the meta-data page's original lsn.
|
||||
* meta_pgno: the meta-data page number.
|
||||
* header: the header from the free'd page.
|
||||
* next: the previous next pointer on the metadata page.
|
||||
*/
|
||||
X BEGIN pg_new 42 54
|
||||
X DB fileid int32_t ld
|
||||
X ARG pgno db_pgno_t lu
|
||||
X POINTER meta_lsn DB_LSN * lu
|
||||
X ARG meta_pgno db_pgno_t lu
|
||||
X PGDBT header DBT s
|
||||
X ARG next db_pgno_t lu
|
||||
X END
|
||||
|
||||
/*
|
||||
* pg_init: used to reinitialize a page during truncate.
|
||||
*
|
||||
* pgno: the page being initialized.
|
||||
* header: the header from the page.
|
||||
* data: data that used to be on the page.
|
||||
*/
|
||||
BEGIN pg_init 43 60
|
||||
DB fileid int32_t ld
|
||||
ARG pgno db_pgno_t lu
|
||||
PGDBT header DBT s
|
||||
PGDDBT data DBT s
|
||||
END
|
||||
|
||||
/*
|
||||
* pg_sort: sort the free list
|
||||
*
|
||||
* meta: meta page number
|
||||
* meta_lsn: lsn on meta page.
|
||||
* last_free: page number of new last free page.
|
||||
* last_lsn; lsn of last free page.
|
||||
* last_pgno: current last page number.
|
||||
* list: list of pages and lsns to sort.
|
||||
*/
|
||||
BEGIN pg_sort 44 61
|
||||
DB fileid int32_t ld
|
||||
ARG meta db_pgno_t lu
|
||||
POINTER meta_lsn DB_LSN * lu
|
||||
ARG last_free db_pgno_t lu
|
||||
POINTER last_lsn DB_LSN * lu
|
||||
ARG last_pgno db_pgno_t lu
|
||||
DBT list DBT s
|
||||
END
|
||||
|
||||
Reference in New Issue
Block a user