| db.h | | db.h | |
| /* | | /* | |
| * See the file LICENSE for redistribution information. | | * See the file LICENSE for redistribution information. | |
| * | | * | |
|
| * Copyright (c) 1996,2008 Oracle. All rights reserved. | | * Copyright (c) 1996, 2010 Oracle and/or its affiliates. All rights reser
ved. | |
| * | | * | |
|
| * $Id: db.in,v 12.193 2008/05/07 12:33:12 bschmeck Exp $ | | * $Id$ | |
| * | | * | |
| * db.h include file layout: | | * db.h include file layout: | |
| * General. | | * General. | |
| * Database Environment. | | * Database Environment. | |
| * Locking subsystem. | | * Locking subsystem. | |
| * Logging subsystem. | | * Logging subsystem. | |
| * Shared buffer cache (mpool) subsystem. | | * Shared buffer cache (mpool) subsystem. | |
| * Transaction subsystem. | | * Transaction subsystem. | |
| * Access methods. | | * Access methods. | |
| * Access method cursors. | | * Access method cursors. | |
| | | | |
| skipping to change at line 43 | | skipping to change at line 43 | |
| #if defined(__cplusplus) | | #if defined(__cplusplus) | |
| extern "C" { | | extern "C" { | |
| #endif | | #endif | |
| | | | |
| #undef __P | | #undef __P | |
| #define __P(protos) protos | | #define __P(protos) protos | |
| | | | |
| /* | | /* | |
| * Berkeley DB version information. | | * Berkeley DB version information. | |
| */ | | */ | |
|
| #define DB_VERSION_MAJOR 4 | | #define DB_VERSION_FAMILY 11 | |
| #define DB_VERSION_MINOR 7 | | #define DB_VERSION_RELEASE 2 | |
| #define DB_VERSION_PATCH 25 | | #define DB_VERSION_MAJOR 5 | |
| #define DB_VERSION_STRING "Berkeley DB 4.7.25: (May 15, 2008)" | | #define DB_VERSION_MINOR 0 | |
| | | #define DB_VERSION_PATCH 21 | |
| | | #define DB_VERSION_STRING "Berkeley DB 5.0.21: (March 30, 2010 | |
| | | )" | |
| | | #define DB_VERSION_FULL_STRING "Berkeley DB 11g Release 2, library | |
| | | version 11.2.5.0.21: (March 30, 2010)" | |
| | | | |
| /* | | /* | |
| * !!! | | * !!! | |
| * Berkeley DB uses specifically sized types. If they're not provided by | | * Berkeley DB uses specifically sized types. If they're not provided by | |
| * the system, typedef them here. | | * the system, typedef them here. | |
| * | | * | |
| * We protect them against multiple inclusion using __BIT_TYPES_DEFINED__, | | * We protect them against multiple inclusion using __BIT_TYPES_DEFINED__, | |
| * as does BIND and Kerberos, since we don't know for sure what #include | | * as does BIND and Kerberos, since we don't know for sure what #include | |
| * files the user is using. | | * files the user is using. | |
| * | | * | |
| | | | |
| skipping to change at line 157 | | skipping to change at line 160 | |
| struct __db_rep_stat; typedef struct __db_rep_stat DB_REP_STAT; | | struct __db_rep_stat; typedef struct __db_rep_stat DB_REP_STAT; | |
| struct __db_repmgr_site;typedef struct __db_repmgr_site DB_REPMGR_SITE; | | struct __db_repmgr_site;typedef struct __db_repmgr_site DB_REPMGR_SITE; | |
| struct __db_repmgr_stat;typedef struct __db_repmgr_stat DB_REPMGR_STAT; | | struct __db_repmgr_stat;typedef struct __db_repmgr_stat DB_REPMGR_STAT; | |
| struct __db_seq_record; typedef struct __db_seq_record DB_SEQ_RECORD; | | struct __db_seq_record; typedef struct __db_seq_record DB_SEQ_RECORD; | |
| struct __db_seq_stat; typedef struct __db_seq_stat DB_SEQUENCE_STAT; | | struct __db_seq_stat; typedef struct __db_seq_stat DB_SEQUENCE_STAT; | |
| struct __db_sequence; typedef struct __db_sequence DB_SEQUENCE; | | struct __db_sequence; typedef struct __db_sequence DB_SEQUENCE; | |
| struct __db_thread_info;typedef struct __db_thread_info DB_THREAD_INFO; | | struct __db_thread_info;typedef struct __db_thread_info DB_THREAD_INFO; | |
| struct __db_txn; typedef struct __db_txn DB_TXN; | | struct __db_txn; typedef struct __db_txn DB_TXN; | |
| struct __db_txn_active; typedef struct __db_txn_active DB_TXN_ACTIVE
; | | struct __db_txn_active; typedef struct __db_txn_active DB_TXN_ACTIVE
; | |
| struct __db_txn_stat; typedef struct __db_txn_stat DB_TXN_STAT; | | struct __db_txn_stat; typedef struct __db_txn_stat DB_TXN_STAT; | |
|
| | | struct __db_txn_token; typedef struct __db_txn_token DB_TXN_TOKEN; | |
| struct __db_txnmgr; typedef struct __db_txnmgr DB_TXNMGR; | | struct __db_txnmgr; typedef struct __db_txnmgr DB_TXNMGR; | |
| struct __dbc; typedef struct __dbc DBC; | | struct __dbc; typedef struct __dbc DBC; | |
| struct __dbc_internal; typedef struct __dbc_internal DBC_INTERNAL; | | struct __dbc_internal; typedef struct __dbc_internal DBC_INTERNAL; | |
| struct __env; typedef struct __env ENV; | | struct __env; typedef struct __env ENV; | |
| struct __fh_t; typedef struct __fh_t DB_FH; | | struct __fh_t; typedef struct __fh_t DB_FH; | |
| struct __fname; typedef struct __fname FNAME; | | struct __fname; typedef struct __fname FNAME; | |
| struct __key_range; typedef struct __key_range DB_KEY_RANGE; | | struct __key_range; typedef struct __key_range DB_KEY_RANGE; | |
| /*@=incondefs@*/ | | /*@=incondefs@*/ | |
| struct __mpoolfile; typedef struct __mpoolfile MPOOLFILE; | | struct __mpoolfile; typedef struct __mpoolfile MPOOLFILE; | |
|
| | | struct __db_logvrfy_config; | |
| | | typedef struct __db_logvrfy_config DB_LOG_VERIFY_CONFIG; | |
| | | | |
| /* | | /* | |
|
| * The Berkeley DB API flags are automatically-generated -- the following f | | * The Berkeley DB API flags are automatically-generated -- the following f | |
| lag names are | | lag | |
| * no longer used, but remain for compatibility reasons. | | * names are no longer used, but remain for compatibility reasons. | |
| */ | | */ | |
| #define DB_DEGREE_2 DB_READ_COMMITTED | | #define DB_DEGREE_2 DB_READ_COMMITTED | |
| #define DB_DIRTY_READ DB_READ_UNCOMMITTED | | #define DB_DIRTY_READ DB_READ_UNCOMMITTED | |
| #define DB_JOINENV 0x0 | | #define DB_JOINENV 0x0 | |
| | | | |
| /* Key/data structure -- a Data-Base Thang. */ | | /* Key/data structure -- a Data-Base Thang. */ | |
| struct __db_dbt { | | struct __db_dbt { | |
| void *data; /* Key/data */ | | void *data; /* Key/data */ | |
| u_int32_t size; /* key/data length */ | | u_int32_t size; /* key/data length */ | |
| | | | |
| u_int32_t ulen; /* RO: length of user buffer. */ | | u_int32_t ulen; /* RO: length of user buffer. */ | |
| u_int32_t dlen; /* RO: get/put record length. */ | | u_int32_t dlen; /* RO: get/put record length. */ | |
| u_int32_t doff; /* RO: get/put record offset. */ | | u_int32_t doff; /* RO: get/put record offset. */ | |
| | | | |
| void *app_data; | | void *app_data; | |
| | | | |
| #define DB_DBT_APPMALLOC 0x001 /* Callback allocated memory
. */ | | #define DB_DBT_APPMALLOC 0x001 /* Callback allocated memory
. */ | |
|
| #define DB_DBT_DUPOK 0x002 /* Insert if duplicate. */ | | #define DB_DBT_BULK 0x002 /* Internal: Insert if dupli | |
| #define DB_DBT_ISSET 0x004 /* Lower level calls set val | | cate. */ | |
| ue. */ | | #define DB_DBT_DUPOK 0x004 /* Internal: Insert if dupli | |
| #define DB_DBT_MALLOC 0x008 /* Return in malloc'd memory | | cate. */ | |
| . */ | | #define DB_DBT_ISSET 0x008 /* Lower level calls set val | |
| #define DB_DBT_MULTIPLE 0x010 /* References multiple recor | | ue. */ | |
| ds. */ | | #define DB_DBT_MALLOC 0x010 /* Return in malloc'd memory | |
| #define DB_DBT_PARTIAL 0x020 /* Partial put/get. */ | | . */ | |
| #define DB_DBT_REALLOC 0x040 /* Return in realloc'd memor | | #define DB_DBT_MULTIPLE 0x020 /* References multiple recor | |
| y. */ | | ds. */ | |
| #define DB_DBT_USERCOPY 0x080 /* Use the user-supplied cal | | #define DB_DBT_PARTIAL 0x040 /* Partial put/get. */ | |
| lback. */ | | #define DB_DBT_REALLOC 0x080 /* Return in realloc'd memor | |
| #define DB_DBT_USERMEM 0x100 /* Return in user's memory. | | y. */ | |
| */ | | #define DB_DBT_STREAMING 0x100 /* Internal: DBT is being st | |
| | | reamed. */ | |
| | | #define DB_DBT_USERCOPY 0x200 /* Use the user-supplied cal | |
| | | lback. */ | |
| | | #define DB_DBT_USERMEM 0x400 /* Return in user's memory. | |
| | | */ | |
| u_int32_t flags; | | u_int32_t flags; | |
| }; | | }; | |
| | | | |
| /******************************************************* | | /******************************************************* | |
| * Mutexes. | | * Mutexes. | |
| *******************************************************/ | | *******************************************************/ | |
| typedef u_int32_t db_mutex_t; | | typedef u_int32_t db_mutex_t; | |
| | | | |
| struct __db_mutex_stat { | | struct __db_mutex_stat { | |
| /* The following fields are maintained in the region's copy. */ | | /* The following fields are maintained in the region's copy. */ | |
| u_int32_t st_mutex_align; /* Mutex alignment */ | | u_int32_t st_mutex_align; /* Mutex alignment */ | |
| u_int32_t st_mutex_tas_spins; /* Mutex test-and-set spins */ | | u_int32_t st_mutex_tas_spins; /* Mutex test-and-set spins */ | |
| u_int32_t st_mutex_cnt; /* Mutex count */ | | u_int32_t st_mutex_cnt; /* Mutex count */ | |
| u_int32_t st_mutex_free; /* Available mutexes */ | | u_int32_t st_mutex_free; /* Available mutexes */ | |
| u_int32_t st_mutex_inuse; /* Mutexes in use */ | | u_int32_t st_mutex_inuse; /* Mutexes in use */ | |
| u_int32_t st_mutex_inuse_max; /* Maximum mutexes ever in use */ | | u_int32_t st_mutex_inuse_max; /* Maximum mutexes ever in use */ | |
| | | | |
| /* The following fields are filled-in from other places. */ | | /* The following fields are filled-in from other places. */ | |
| #ifndef __TEST_DB_NO_STATISTICS | | #ifndef __TEST_DB_NO_STATISTICS | |
|
| u_int32_t st_region_wait; /* Region lock granted after wait. * | | uintmax_t st_region_wait; /* Region lock granted after wait. * | |
| / | | / | |
| u_int32_t st_region_nowait; /* Region lock granted without wait. | | uintmax_t st_region_nowait; /* Region lock granted without wait. | |
| */ | | */ | |
| roff_t st_regsize; /* Region size. */ | | roff_t st_regsize; /* Region size. */ | |
| #endif | | #endif | |
| }; | | }; | |
| | | | |
| /* This is the length of the buffer passed to DB_ENV->thread_id_string() */ | | /* This is the length of the buffer passed to DB_ENV->thread_id_string() */ | |
| #define DB_THREADID_STRLEN 128 | | #define DB_THREADID_STRLEN 128 | |
| | | | |
| /******************************************************* | | /******************************************************* | |
| * Locking. | | * Locking. | |
| *******************************************************/ | | *******************************************************/ | |
| | | | |
| skipping to change at line 310 | | skipping to change at line 318 | |
| u_int32_t st_maxlocks; /* Maximum number of locks in table.
*/ | | u_int32_t st_maxlocks; /* Maximum number of locks in table.
*/ | |
| u_int32_t st_maxlockers; /* Maximum num of lockers in table.
*/ | | u_int32_t st_maxlockers; /* Maximum num of lockers in table.
*/ | |
| u_int32_t st_maxobjects; /* Maximum num of objects in table.
*/ | | u_int32_t st_maxobjects; /* Maximum num of objects in table.
*/ | |
| u_int32_t st_partitions; /* number of partitions. */ | | u_int32_t st_partitions; /* number of partitions. */ | |
| int st_nmodes; /* Number of lock modes. */ | | int st_nmodes; /* Number of lock modes. */ | |
| u_int32_t st_nlockers; /* Current number of lockers. */ | | u_int32_t st_nlockers; /* Current number of lockers. */ | |
| #ifndef __TEST_DB_NO_STATISTICS | | #ifndef __TEST_DB_NO_STATISTICS | |
| u_int32_t st_nlocks; /* Current number of locks. */ | | u_int32_t st_nlocks; /* Current number of locks. */ | |
| u_int32_t st_maxnlocks; /* Maximum number of locks so far. *
/ | | u_int32_t st_maxnlocks; /* Maximum number of locks so far. *
/ | |
| u_int32_t st_maxhlocks; /* Maximum number of locks in any bu
cket. */ | | u_int32_t st_maxhlocks; /* Maximum number of locks in any bu
cket. */ | |
|
| u_int32_t st_locksteals; /* Number of lock steals so far. */ | | uintmax_t st_locksteals; /* Number of lock steals so far. */ | |
| u_int32_t st_maxlsteals; /* Maximum number steals in any part | | uintmax_t st_maxlsteals; /* Maximum number steals in any part | |
| ition. */ | | ition. */ | |
| u_int32_t st_maxnlockers; /* Maximum number of lockers so far.
*/ | | u_int32_t st_maxnlockers; /* Maximum number of lockers so far.
*/ | |
| u_int32_t st_nobjects; /* Current number of objects. */ | | u_int32_t st_nobjects; /* Current number of objects. */ | |
| u_int32_t st_maxnobjects; /* Maximum number of objects so far.
*/ | | u_int32_t st_maxnobjects; /* Maximum number of objects so far.
*/ | |
| u_int32_t st_maxhobjects; /* Maximum number of objectsin any b
ucket. */ | | u_int32_t st_maxhobjects; /* Maximum number of objectsin any b
ucket. */ | |
|
| u_int32_t st_objectsteals; /* Number of objects steals so far. | | uintmax_t st_objectsteals; /* Number of objects steals so far. | |
| */ | | */ | |
| u_int32_t st_maxosteals; /* Maximum number of steals in any p | | uintmax_t st_maxosteals; /* Maximum number of steals in any p | |
| artition. */ | | artition. */ | |
| u_int32_t st_nrequests; /* Number of lock gets. */ | | uintmax_t st_nrequests; /* Number of lock gets. */ | |
| u_int32_t st_nreleases; /* Number of lock puts. */ | | uintmax_t st_nreleases; /* Number of lock puts. */ | |
| u_int32_t st_nupgrade; /* Number of lock upgrades. */ | | uintmax_t st_nupgrade; /* Number of lock upgrades. */ | |
| u_int32_t st_ndowngrade; /* Number of lock downgrades. */ | | uintmax_t st_ndowngrade; /* Number of lock downgrades. */ | |
| u_int32_t st_lock_wait; /* Lock conflicts w/ subsequent wait | | uintmax_t st_lock_wait; /* Lock conflicts w/ subsequent wait | |
| */ | | */ | |
| u_int32_t st_lock_nowait; /* Lock conflicts w/o subsequent wai | | uintmax_t st_lock_nowait; /* Lock conflicts w/o subsequent wai | |
| t */ | | t */ | |
| u_int32_t st_ndeadlocks; /* Number of lock deadlocks. */ | | uintmax_t st_ndeadlocks; /* Number of lock deadlocks. */ | |
| db_timeout_t st_locktimeout; /* Lock timeout. */ | | db_timeout_t st_locktimeout; /* Lock timeout. */ | |
|
| u_int32_t st_nlocktimeouts; /* Number of lock timeouts. */ | | uintmax_t st_nlocktimeouts; /* Number of lock timeouts. */ | |
| db_timeout_t st_txntimeout; /* Transaction timeout. */ | | db_timeout_t st_txntimeout; /* Transaction timeout. */ | |
|
| u_int32_t st_ntxntimeouts; /* Number of transaction timeouts. * | | uintmax_t st_ntxntimeouts; /* Number of transaction timeouts. * | |
| / | | / | |
| u_int32_t st_part_wait; /* Partition lock granted after wait | | uintmax_t st_part_wait; /* Partition lock granted after wait | |
| . */ | | . */ | |
| u_int32_t st_part_nowait; /* Partition lock granted without wa | | uintmax_t st_part_nowait; /* Partition lock granted without wa | |
| it. */ | | it. */ | |
| u_int32_t st_part_max_wait; /* Max partition lock granted after | | uintmax_t st_part_max_wait; /* Max partition lock granted after | |
| wait. */ | | wait. */ | |
| u_int32_t st_part_max_nowait; /* Max partition lock granted withou | | uintmax_t st_part_max_nowait; /* Max partition lock granted withou | |
| t wait. */ | | t wait. */ | |
| u_int32_t st_objs_wait; /* Object lock granted after wait. * | | uintmax_t st_objs_wait; /* Object lock granted after wait. */ | |
| / | | uintmax_t st_objs_nowait; /* Object lock granted without wait. | |
| u_int32_t st_objs_nowait; /* Object lock granted without wait. | | */ | |
| */ | | uintmax_t st_lockers_wait; /* Locker lock granted after wait. * | |
| u_int32_t st_lockers_wait; /* Locker lock granted after wait. * | | / | |
| / | | uintmax_t st_lockers_nowait; /* Locker lock granted without wait. | |
| u_int32_t st_lockers_nowait; /* Locker lock granted without wait. | | */ | |
| */ | | uintmax_t st_region_wait; /* Region lock granted after wait. * | |
| u_int32_t st_region_wait; /* Region lock granted after wait. * | | / | |
| / | | uintmax_t st_region_nowait; /* Region lock granted without wait. | |
| u_int32_t st_region_nowait; /* Region lock granted without wait. | | */ | |
| */ | | | |
| u_int32_t st_hash_len; /* Max length of bucket. */ | | u_int32_t st_hash_len; /* Max length of bucket. */ | |
| roff_t st_regsize; /* Region size. */ | | roff_t st_regsize; /* Region size. */ | |
| #endif | | #endif | |
| }; | | }; | |
| | | | |
| struct __db_lock_hstat { | | struct __db_lock_hstat { | |
|
| u_int32_t st_nrequests; /* Number of lock gets. */ | | uintmax_t st_nrequests; /* Number of lock gets. */ | |
| u_int32_t st_nreleases; /* Number of lock puts. */ | | uintmax_t st_nreleases; /* Number of lock puts. */ | |
| u_int32_t st_nupgrade; /* Number of lock upgrades. */ | | uintmax_t st_nupgrade; /* Number of lock upgrades. */ | |
| u_int32_t st_ndowngrade; /* Number of lock downgrades. */ | | uintmax_t st_ndowngrade; /* Number of lock downgrades. */ | |
| u_int32_t st_nlocks; /* Current number of locks. */ | | u_int32_t st_nlocks; /* Current number of locks. */ | |
| u_int32_t st_maxnlocks; /* Maximum number of locks so far. *
/ | | u_int32_t st_maxnlocks; /* Maximum number of locks so far. *
/ | |
| u_int32_t st_nobjects; /* Current number of objects. */ | | u_int32_t st_nobjects; /* Current number of objects. */ | |
| u_int32_t st_maxnobjects; /* Maximum number of objects so far.
*/ | | u_int32_t st_maxnobjects; /* Maximum number of objects so far.
*/ | |
|
| u_int32_t st_lock_wait; /* Lock conflicts w/ subsequent wait | | uintmax_t st_lock_wait; /* Lock conflicts w/ subsequent wait | |
| */ | | */ | |
| u_int32_t st_lock_nowait; /* Lock conflicts w/o subsequent wai | | uintmax_t st_lock_nowait; /* Lock conflicts w/o subsequent wai | |
| t */ | | t */ | |
| u_int32_t st_nlocktimeouts; /* Number of lock timeouts. */ | | uintmax_t st_nlocktimeouts; /* Number of lock timeouts. */ | |
| u_int32_t st_ntxntimeouts; /* Number of transaction timeouts. * | | uintmax_t st_ntxntimeouts; /* Number of transaction timeouts. * | |
| / | | / | |
| u_int32_t st_hash_len; /* Max length of bucket. */ | | u_int32_t st_hash_len; /* Max length of bucket. */ | |
| }; | | }; | |
| | | | |
| struct __db_lock_pstat { | | struct __db_lock_pstat { | |
| u_int32_t st_nlocks; /* Current number of locks. */ | | u_int32_t st_nlocks; /* Current number of locks. */ | |
| u_int32_t st_maxnlocks; /* Maximum number of locks so far. *
/ | | u_int32_t st_maxnlocks; /* Maximum number of locks so far. *
/ | |
| u_int32_t st_nobjects; /* Current number of objects. */ | | u_int32_t st_nobjects; /* Current number of objects. */ | |
| u_int32_t st_maxnobjects; /* Maximum number of objects so far.
*/ | | u_int32_t st_maxnobjects; /* Maximum number of objects so far.
*/ | |
|
| u_int32_t st_locksteals; /* Number of lock steals so far. */ | | uintmax_t st_locksteals; /* Number of lock steals so far. */ | |
| u_int32_t st_objectsteals; /* Number of objects steals so far. | | uintmax_t st_objectsteals; /* Number of objects steals so far. | |
| */ | | */ | |
| }; | | }; | |
| | | | |
| /* | | /* | |
| * DB_LOCK_ILOCK -- | | * DB_LOCK_ILOCK -- | |
| * Internal DB access method lock. | | * Internal DB access method lock. | |
| */ | | */ | |
| struct __db_ilock { | | struct __db_ilock { | |
| db_pgno_t pgno; /* Page being locked. */ | | db_pgno_t pgno; /* Page being locked. */ | |
| u_int8_t fileid[DB_FILE_ID_LEN];/* File id. */ | | u_int8_t fileid[DB_FILE_ID_LEN];/* File id. */ | |
| #define DB_HANDLE_LOCK 1 | | #define DB_HANDLE_LOCK 1 | |
| | | | |
| skipping to change at line 407 | | skipping to change at line 415 | |
| db_lockop_t op; /* Operation. */ | | db_lockop_t op; /* Operation. */ | |
| db_lockmode_t mode; /* Requested mode. */ | | db_lockmode_t mode; /* Requested mode. */ | |
| db_timeout_t timeout; /* Time to expire lock. */ | | db_timeout_t timeout; /* Time to expire lock. */ | |
| DBT *obj; /* Object being locked. */ | | DBT *obj; /* Object being locked. */ | |
| DB_LOCK lock; /* Lock returned. */ | | DB_LOCK lock; /* Lock returned. */ | |
| }; | | }; | |
| | | | |
| /******************************************************* | | /******************************************************* | |
| * Logging. | | * Logging. | |
| *******************************************************/ | | *******************************************************/ | |
|
| #define DB_LOGVERSION 14 /* Current log version. */ | | #define DB_LOGVERSION 17 /* Current log version. */ | |
| | | #define DB_LOGVERSION_LATCHING 15 /* Log version using latching. */ | |
| | | #define DB_LOGCHKSUM 12 /* Check sum headers. */ | |
| #define DB_LOGOLDVER 8 /* Oldest log version suppor
ted. */ | | #define DB_LOGOLDVER 8 /* Oldest log version suppor
ted. */ | |
| #define DB_LOGMAGIC 0x040988 | | #define DB_LOGMAGIC 0x040988 | |
| | | | |
| /* | | /* | |
| * A DB_LSN has two parts, a fileid which identifies a specific file, and a
n | | * A DB_LSN has two parts, a fileid which identifies a specific file, and a
n | |
| * offset within that file. The fileid is an unsigned 4-byte quantity that | | * offset within that file. The fileid is an unsigned 4-byte quantity that | |
| * uniquely identifies a file within the log directory -- currently a simpl
e | | * uniquely identifies a file within the log directory -- currently a simpl
e | |
| * counter inside the log. The offset is also an unsigned 4-byte value. T
he | | * counter inside the log. The offset is also an unsigned 4-byte value. T
he | |
| * log manager guarantees the offset is never more than 4 bytes by switchin
g | | * log manager guarantees the offset is never more than 4 bytes by switchin
g | |
| * to a new log file before the maximum length imposed by an unsigned 4-byt
e | | * to a new log file before the maximum length imposed by an unsigned 4-byt
e | |
| | | | |
| skipping to change at line 482 | | skipping to change at line 492 | |
| /* Log statistics structure. */ | | /* Log statistics structure. */ | |
| struct __db_log_stat { | | struct __db_log_stat { | |
| u_int32_t st_magic; /* Log file magic number. */ | | u_int32_t st_magic; /* Log file magic number. */ | |
| u_int32_t st_version; /* Log file version number. */ | | u_int32_t st_version; /* Log file version number. */ | |
| int st_mode; /* Log file permissions mode. */ | | int st_mode; /* Log file permissions mode. */ | |
| u_int32_t st_lg_bsize; /* Log buffer size. */ | | u_int32_t st_lg_bsize; /* Log buffer size. */ | |
| u_int32_t st_lg_size; /* Log file size. */ | | u_int32_t st_lg_size; /* Log file size. */ | |
| u_int32_t st_wc_bytes; /* Bytes to log since checkpoint. */ | | u_int32_t st_wc_bytes; /* Bytes to log since checkpoint. */ | |
| u_int32_t st_wc_mbytes; /* Megabytes to log since checkpoint
. */ | | u_int32_t st_wc_mbytes; /* Megabytes to log since checkpoint
. */ | |
| #ifndef __TEST_DB_NO_STATISTICS | | #ifndef __TEST_DB_NO_STATISTICS | |
|
| u_int32_t st_record; /* Records entered into the log. */ | | uintmax_t st_record; /* Records entered into the log. */ | |
| u_int32_t st_w_bytes; /* Bytes to log. */ | | u_int32_t st_w_bytes; /* Bytes to log. */ | |
| u_int32_t st_w_mbytes; /* Megabytes to log. */ | | u_int32_t st_w_mbytes; /* Megabytes to log. */ | |
|
| u_int32_t st_wcount; /* Total I/O writes to the log. */ | | uintmax_t st_wcount; /* Total I/O writes to the log. */ | |
| u_int32_t st_wcount_fill; /* Overflow writes to the log. */ | | uintmax_t st_wcount_fill; /* Overflow writes to the log. */ | |
| u_int32_t st_rcount; /* Total I/O reads from the log. */ | | uintmax_t st_rcount; /* Total I/O reads from the log. */ | |
| u_int32_t st_scount; /* Total syncs to the log. */ | | uintmax_t st_scount; /* Total syncs to the log. */ | |
| u_int32_t st_region_wait; /* Region lock granted after wait. * | | uintmax_t st_region_wait; /* Region lock granted after wait. * | |
| / | | / | |
| u_int32_t st_region_nowait; /* Region lock granted without wait. | | uintmax_t st_region_nowait; /* Region lock granted without wait. | |
| */ | | */ | |
| u_int32_t st_cur_file; /* Current log file number. */ | | u_int32_t st_cur_file; /* Current log file number. */ | |
| u_int32_t st_cur_offset; /* Current log file offset. */ | | u_int32_t st_cur_offset; /* Current log file offset. */ | |
| u_int32_t st_disk_file; /* Known on disk log file number. */ | | u_int32_t st_disk_file; /* Known on disk log file number. */ | |
| u_int32_t st_disk_offset; /* Known on disk log file offset. */ | | u_int32_t st_disk_offset; /* Known on disk log file offset. */ | |
| u_int32_t st_maxcommitperflush; /* Max number of commits in a flush.
*/ | | u_int32_t st_maxcommitperflush; /* Max number of commits in a flush.
*/ | |
| u_int32_t st_mincommitperflush; /* Min number of commits in a flush.
*/ | | u_int32_t st_mincommitperflush; /* Min number of commits in a flush.
*/ | |
| roff_t st_regsize; /* Region size. */ | | roff_t st_regsize; /* Region size. */ | |
| #endif | | #endif | |
| }; | | }; | |
| | | | |
| /* | | /* | |
| * We need to record the first log record of a transaction. For user | | * We need to record the first log record of a transaction. For user | |
| * defined logging this macro returns the place to put that information, | | * defined logging this macro returns the place to put that information, | |
| * if it is need in rlsnp, otherwise it leaves it unchanged. We also | | * if it is need in rlsnp, otherwise it leaves it unchanged. We also | |
| * need to track the last record of the transaction, this returns the | | * need to track the last record of the transaction, this returns the | |
| * place to put that info. | | * place to put that info. | |
| */ | | */ | |
| #define DB_SET_TXN_LSNP(txn, blsnp, llsnp) \ | | #define DB_SET_TXN_LSNP(txn, blsnp, llsnp) \ | |
| ((txn)->set_txn_lsnp(txn, blsnp, llsnp)) | | ((txn)->set_txn_lsnp(txn, blsnp, llsnp)) | |
| | | | |
|
| | | /* | |
| | | * Definition of the structure which specifies marshalling of log records. | |
| | | */ | |
| | | typedef enum { | |
| | | LOGREC_Done, | |
| | | LOGREC_ARG, | |
| | | LOGREC_HDR, | |
| | | LOGREC_DATA, | |
| | | LOGREC_DB, | |
| | | LOGREC_DBOP, | |
| | | LOGREC_DBT, | |
| | | LOGREC_LOCKS, | |
| | | LOGREC_OP, | |
| | | LOGREC_PGDBT, | |
| | | LOGREC_PGDDBT, | |
| | | LOGREC_PGLIST, | |
| | | LOGREC_POINTER, | |
| | | LOGREC_TIME | |
| | | } log_rec_type_t; | |
| | | | |
| | | typedef const struct __log_rec_spec { | |
| | | log_rec_type_t type; | |
| | | u_int32_t offset; | |
| | | const char *name; | |
| | | const char fmt[4]; | |
| | | } DB_LOG_RECSPEC; | |
| | | | |
| | | /* | |
| | | * Size of a DBT in a log record. | |
| | | */ | |
| | | #define LOG_DBT_SIZE(dbt) | |
| | | \ | |
| | | (sizeof(u_int32_t) + ((dbt) == NULL ? 0 : (dbt)->size)) | |
| | | | |
| /******************************************************* | | /******************************************************* | |
| * Shared buffer cache (mpool). | | * Shared buffer cache (mpool). | |
| *******************************************************/ | | *******************************************************/ | |
| /* Priority values for DB_MPOOLFILE->{put,set_priority}. */ | | /* Priority values for DB_MPOOLFILE->{put,set_priority}. */ | |
| typedef enum { | | typedef enum { | |
| DB_PRIORITY_UNCHANGED=0, | | DB_PRIORITY_UNCHANGED=0, | |
| DB_PRIORITY_VERY_LOW=1, | | DB_PRIORITY_VERY_LOW=1, | |
| DB_PRIORITY_LOW=2, | | DB_PRIORITY_LOW=2, | |
| DB_PRIORITY_DEFAULT=3, | | DB_PRIORITY_DEFAULT=3, | |
| DB_PRIORITY_HIGH=4, | | DB_PRIORITY_HIGH=4, | |
| | | | |
| skipping to change at line 629 | | skipping to change at line 672 | |
| u_int32_t st_bytes; /* Total cache size: B. */ | | u_int32_t st_bytes; /* Total cache size: B. */ | |
| u_int32_t st_ncache; /* Number of cache regions. */ | | u_int32_t st_ncache; /* Number of cache regions. */ | |
| u_int32_t st_max_ncache; /* Maximum number of regions. */ | | u_int32_t st_max_ncache; /* Maximum number of regions. */ | |
| size_t st_mmapsize; /* Maximum file size for mmap. */ | | size_t st_mmapsize; /* Maximum file size for mmap. */ | |
| int st_maxopenfd; /* Maximum number of open fd's. */ | | int st_maxopenfd; /* Maximum number of open fd's. */ | |
| int st_maxwrite; /* Maximum buffers to write. */ | | int st_maxwrite; /* Maximum buffers to write. */ | |
| db_timeout_t st_maxwrite_sleep; /* Sleep after writing max buffers.
*/ | | db_timeout_t st_maxwrite_sleep; /* Sleep after writing max buffers.
*/ | |
| u_int32_t st_pages; /* Total number of pages. */ | | u_int32_t st_pages; /* Total number of pages. */ | |
| #ifndef __TEST_DB_NO_STATISTICS | | #ifndef __TEST_DB_NO_STATISTICS | |
| u_int32_t st_map; /* Pages from mapped files. */ | | u_int32_t st_map; /* Pages from mapped files. */ | |
|
| u_int32_t st_cache_hit; /* Pages found in the cache. */ | | uintmax_t st_cache_hit; /* Pages found in the cache. */ | |
| u_int32_t st_cache_miss; /* Pages not found in the cache. */ | | uintmax_t st_cache_miss; /* Pages not found in the cache. */ | |
| u_int32_t st_page_create; /* Pages created in the cache. */ | | uintmax_t st_page_create; /* Pages created in the cache. */ | |
| u_int32_t st_page_in; /* Pages read in. */ | | uintmax_t st_page_in; /* Pages read in. */ | |
| u_int32_t st_page_out; /* Pages written out. */ | | uintmax_t st_page_out; /* Pages written out. */ | |
| u_int32_t st_ro_evict; /* Clean pages forced from the cache | | uintmax_t st_ro_evict; /* Clean pages forced from the cache | |
| . */ | | . */ | |
| u_int32_t st_rw_evict; /* Dirty pages forced from the cache | | uintmax_t st_rw_evict; /* Dirty pages forced from the cache | |
| . */ | | . */ | |
| u_int32_t st_page_trickle; /* Pages written by memp_trickle. */ | | uintmax_t st_page_trickle; /* Pages written by memp_trickle. */ | |
| u_int32_t st_page_clean; /* Clean pages. */ | | u_int32_t st_page_clean; /* Clean pages. */ | |
| u_int32_t st_page_dirty; /* Dirty pages. */ | | u_int32_t st_page_dirty; /* Dirty pages. */ | |
| u_int32_t st_hash_buckets; /* Number of hash buckets. */ | | u_int32_t st_hash_buckets; /* Number of hash buckets. */ | |
|
| | | u_int32_t st_pagesize; /* Assumed page size. */ | |
| u_int32_t st_hash_searches; /* Total hash chain searches. */ | | u_int32_t st_hash_searches; /* Total hash chain searches. */ | |
| u_int32_t st_hash_longest; /* Longest hash chain searched. */ | | u_int32_t st_hash_longest; /* Longest hash chain searched. */ | |
|
| u_int32_t st_hash_examined; /* Total hash entries searched. */ | | uintmax_t st_hash_examined; /* Total hash entries searched. */ | |
| u_int32_t st_hash_nowait; /* Hash lock granted with nowait. */ | | uintmax_t st_hash_nowait; /* Hash lock granted with nowait. */ | |
| u_int32_t st_hash_wait; /* Hash lock granted after wait. */ | | uintmax_t st_hash_wait; /* Hash lock granted after wait. */ | |
| u_int32_t st_hash_max_nowait; /* Max hash lock granted with nowait | | uintmax_t st_hash_max_nowait; /* Max hash lock granted with nowait | |
| . */ | | . */ | |
| u_int32_t st_hash_max_wait; /* Max hash lock granted after wait. | | uintmax_t st_hash_max_wait; /* Max hash lock granted after wait. | |
| */ | | */ | |
| u_int32_t st_region_nowait; /* Region lock granted with nowait. | | uintmax_t st_region_nowait; /* Region lock granted with nowait. | |
| */ | | */ | |
| u_int32_t st_region_wait; /* Region lock granted after wait. * | | uintmax_t st_region_wait; /* Region lock granted after wait. * | |
| / | | / | |
| u_int32_t st_mvcc_frozen; /* Buffers frozen. */ | | uintmax_t st_mvcc_frozen; /* Buffers frozen. */ | |
| u_int32_t st_mvcc_thawed; /* Buffers thawed. */ | | uintmax_t st_mvcc_thawed; /* Buffers thawed. */ | |
| u_int32_t st_mvcc_freed; /* Frozen buffers freed. */ | | uintmax_t st_mvcc_freed; /* Frozen buffers freed. */ | |
| u_int32_t st_alloc; /* Number of page allocations. */ | | uintmax_t st_alloc; /* Number of page allocations. */ | |
| u_int32_t st_alloc_buckets; /* Buckets checked during allocation | | uintmax_t st_alloc_buckets; /* Buckets checked during allocation | |
| . */ | | . */ | |
| u_int32_t st_alloc_max_buckets; /* Max checked during allocation. */ | | uintmax_t st_alloc_max_buckets;/* Max checked during allocation. */ | |
| u_int32_t st_alloc_pages; /* Pages checked during allocation. | | uintmax_t st_alloc_pages; /* Pages checked during allocation. | |
| */ | | */ | |
| u_int32_t st_alloc_max_pages; /* Max checked during allocation. */ | | uintmax_t st_alloc_max_pages; /* Max checked during allocation. */ | |
| u_int32_t st_io_wait; /* Thread waited on buffer I/O. */ | | uintmax_t st_io_wait; /* Thread waited on buffer I/O. */ | |
| | | uintmax_t st_sync_interrupted; /* Number of times sync interrupted. | |
| | | */ | |
| roff_t st_regsize; /* Region size. */ | | roff_t st_regsize; /* Region size. */ | |
| #endif | | #endif | |
| }; | | }; | |
| | | | |
| /* Mpool file statistics structure. */ | | /* Mpool file statistics structure. */ | |
| struct __db_mpool_fstat { | | struct __db_mpool_fstat { | |
| char *file_name; /* File name. */ | | char *file_name; /* File name. */ | |
| u_int32_t st_pagesize; /* Page size. */ | | u_int32_t st_pagesize; /* Page size. */ | |
| #ifndef __TEST_DB_NO_STATISTICS | | #ifndef __TEST_DB_NO_STATISTICS | |
| u_int32_t st_map; /* Pages from mapped files. */ | | u_int32_t st_map; /* Pages from mapped files. */ | |
|
| u_int32_t st_cache_hit; /* Pages found in the cache. */ | | uintmax_t st_cache_hit; /* Pages found in the cache. */ | |
| u_int32_t st_cache_miss; /* Pages not found in the cache. */ | | uintmax_t st_cache_miss; /* Pages not found in the cache. */ | |
| u_int32_t st_page_create; /* Pages created in the cache. */ | | uintmax_t st_page_create; /* Pages created in the cache. */ | |
| u_int32_t st_page_in; /* Pages read in. */ | | uintmax_t st_page_in; /* Pages read in. */ | |
| u_int32_t st_page_out; /* Pages written out. */ | | uintmax_t st_page_out; /* Pages written out. */ | |
| #endif | | #endif | |
| }; | | }; | |
| | | | |
| /******************************************************* | | /******************************************************* | |
| * Transactions and recovery. | | * Transactions and recovery. | |
| *******************************************************/ | | *******************************************************/ | |
| #define DB_TXNVERSION 1 | | #define DB_TXNVERSION 1 | |
| | | | |
| typedef enum { | | typedef enum { | |
| DB_TXN_ABORT=0, /* Public. */ | | DB_TXN_ABORT=0, /* Public. */ | |
| DB_TXN_APPLY=1, /* Public. */ | | DB_TXN_APPLY=1, /* Public. */ | |
| DB_TXN_BACKWARD_ROLL=3, /* Public. */ | | DB_TXN_BACKWARD_ROLL=3, /* Public. */ | |
| DB_TXN_FORWARD_ROLL=4, /* Public. */ | | DB_TXN_FORWARD_ROLL=4, /* Public. */ | |
| DB_TXN_OPENFILES=5, /* Internal. */ | | DB_TXN_OPENFILES=5, /* Internal. */ | |
| DB_TXN_POPENFILES=6, /* Internal. */ | | DB_TXN_POPENFILES=6, /* Internal. */ | |
|
| DB_TXN_PRINT=7 /* Public. */ | | DB_TXN_PRINT=7, /* Public. */ | |
| | | DB_TXN_LOG_VERIFY=8 /* Internal. */ | |
| } db_recops; | | } db_recops; | |
| | | | |
| /* | | /* | |
| * BACKWARD_ALLOC is used during the forward pass to pick up any aborted | | * BACKWARD_ALLOC is used during the forward pass to pick up any aborted | |
| * allocations for files that were created during the forward pass. | | * allocations for files that were created during the forward pass. | |
| * The main difference between _ALLOC and _ROLL is that the entry for | | * The main difference between _ALLOC and _ROLL is that the entry for | |
| * the file not exist during the rollforward pass. | | * the file not exist during the rollforward pass. | |
| */ | | */ | |
| #define DB_UNDO(op) ((op) == DB_TXN_ABORT || (op) == DB_TXN_BACK
WARD_ROLL) | | #define DB_UNDO(op) ((op) == DB_TXN_ABORT || (op) == DB_TXN_BACK
WARD_ROLL) | |
| #define DB_REDO(op) ((op) == DB_TXN_FORWARD_ROLL || (op) == DB_T
XN_APPLY) | | #define DB_REDO(op) ((op) == DB_TXN_FORWARD_ROLL || (op) == DB_T
XN_APPLY) | |
| | | | |
| struct __db_txn { | | struct __db_txn { | |
| DB_TXNMGR *mgrp; /* Pointer to transaction manager. *
/ | | DB_TXNMGR *mgrp; /* Pointer to transaction manager. *
/ | |
| DB_TXN *parent; /* Pointer to transaction's parent.
*/ | | DB_TXN *parent; /* Pointer to transaction's parent.
*/ | |
| DB_THREAD_INFO *thread_info; /* Pointer to thread information. */ | | DB_THREAD_INFO *thread_info; /* Pointer to thread information. */ | |
| | | | |
| u_int32_t txnid; /* Unique transaction id. */ | | u_int32_t txnid; /* Unique transaction id. */ | |
| char *name; /* Transaction name. */ | | char *name; /* Transaction name. */ | |
| DB_LOCKER *locker; /* Locker for this txn. */ | | DB_LOCKER *locker; /* Locker for this txn. */ | |
| | | | |
|
| db_threadid_t tid; /* Thread id for use in MT XA. */ | | | |
| void *td; /* Detail structure within region. *
/ | | void *td; /* Detail structure within region. *
/ | |
| db_timeout_t lock_timeout; /* Timeout for locks for this txn. *
/ | | db_timeout_t lock_timeout; /* Timeout for locks for this txn. *
/ | |
| db_timeout_t expire; /* Time transaction expires. */ | | db_timeout_t expire; /* Time transaction expires. */ | |
| void *txn_list; /* Undo information for parent. */ | | void *txn_list; /* Undo information for parent. */ | |
| | | | |
| /* | | /* | |
| * !!! | | * !!! | |
| * Explicit representations of structures from queue.h. | | * Explicit representations of structures from queue.h. | |
| * TAILQ_ENTRY(__db_txn) links; | | * TAILQ_ENTRY(__db_txn) links; | |
|
| * TAILQ_ENTRY(__db_txn) xalinks; | | | |
| */ | | */ | |
| struct { | | struct { | |
| struct __db_txn *tqe_next; | | struct __db_txn *tqe_next; | |
| struct __db_txn **tqe_prev; | | struct __db_txn **tqe_prev; | |
| } links; /* Links transactions off manager. *
/ | | } links; /* Links transactions off manager. *
/ | |
|
| struct { | | | |
| struct __db_txn *tqe_next; | | | |
| struct __db_txn **tqe_prev; | | | |
| } xalinks; /* Links active XA transactions. */ | | | |
| | | | |
| /* | | /* | |
| * !!! | | * !!! | |
| * Explicit representations of structures from queue.h. | | * Explicit representations of structures from queue.h. | |
| * TAILQ_HEAD(__kids, __db_txn) kids; | | * TAILQ_HEAD(__kids, __db_txn) kids; | |
| */ | | */ | |
| struct __kids { | | struct __kids { | |
| struct __db_txn *tqh_first; | | struct __db_txn *tqh_first; | |
| struct __db_txn **tqh_last; | | struct __db_txn **tqh_last; | |
| } kids; | | } kids; | |
| | | | |
| skipping to change at line 770 | | skipping to change at line 810 | |
| /* | | /* | |
| * !!! | | * !!! | |
| * Explicit representations of structures from queue.h. | | * Explicit representations of structures from queue.h. | |
| * TAILQ_ENTRY(__db_txn) klinks; | | * TAILQ_ENTRY(__db_txn) klinks; | |
| */ | | */ | |
| struct { | | struct { | |
| struct __db_txn *tqe_next; | | struct __db_txn *tqe_next; | |
| struct __db_txn **tqe_prev; | | struct __db_txn **tqe_prev; | |
| } klinks; | | } klinks; | |
| | | | |
|
| | | /* | |
| | | * !!! | |
| | | * Explicit representations of structures from queue.h. | |
| | | * TAILQ_HEAD(__my_cursors, __dbc) my_cursors; | |
| | | */ | |
| | | struct __my_cursors { | |
| | | struct __dbc *tqh_first; | |
| | | struct __dbc **tqh_last; | |
| | | } my_cursors; | |
| | | | |
| | | DB_TXN_TOKEN *token_buffer; /* User's commit token buffer. */ | |
| void *api_internal; /* C++ API private. */ | | void *api_internal; /* C++ API private. */ | |
| void *xml_internal; /* XML API private. */ | | void *xml_internal; /* XML API private. */ | |
| | | | |
| u_int32_t cursors; /* Number of cursors open for txn */ | | u_int32_t cursors; /* Number of cursors open for txn */ | |
| | | | |
| /* DB_TXN PUBLIC HANDLE LIST BEGIN */ | | /* DB_TXN PUBLIC HANDLE LIST BEGIN */ | |
| int (*abort) __P((DB_TXN *)); | | int (*abort) __P((DB_TXN *)); | |
| int (*commit) __P((DB_TXN *, u_int32_t)); | | int (*commit) __P((DB_TXN *, u_int32_t)); | |
| int (*discard) __P((DB_TXN *, u_int32_t)); | | int (*discard) __P((DB_TXN *, u_int32_t)); | |
| int (*get_name) __P((DB_TXN *, const char **)); | | int (*get_name) __P((DB_TXN *, const char **)); | |
|
| | | int (*get_priority) __P((DB_TXN *, u_int32_t *)); | |
| u_int32_t (*id) __P((DB_TXN *)); | | u_int32_t (*id) __P((DB_TXN *)); | |
| int (*prepare) __P((DB_TXN *, u_int8_t *)); | | int (*prepare) __P((DB_TXN *, u_int8_t *)); | |
|
| | | int (*set_commit_token) __P((DB_TXN *, DB_TXN_TOKEN *)); | |
| int (*set_name) __P((DB_TXN *, const char *)); | | int (*set_name) __P((DB_TXN *, const char *)); | |
|
| | | int (*set_priority) __P((DB_TXN *, u_int32_t)); | |
| int (*set_timeout) __P((DB_TXN *, db_timeout_t, u_int32_t)); | | int (*set_timeout) __P((DB_TXN *, db_timeout_t, u_int32_t)); | |
| /* DB_TXN PUBLIC HANDLE LIST END */ | | /* DB_TXN PUBLIC HANDLE LIST END */ | |
| | | | |
| /* DB_TXN PRIVATE HANDLE LIST BEGIN */ | | /* DB_TXN PRIVATE HANDLE LIST BEGIN */ | |
| void (*set_txn_lsnp) __P((DB_TXN *txn, DB_LSN **, DB_LSN **)); | | void (*set_txn_lsnp) __P((DB_TXN *txn, DB_LSN **, DB_LSN **)); | |
| /* DB_TXN PRIVATE HANDLE LIST END */ | | /* DB_TXN PRIVATE HANDLE LIST END */ | |
| | | | |
|
| #define TXN_CHILDCOMMIT 0x0001 /* Txn has committed. */ | | #define TXN_CHILDCOMMIT 0x00001 /* Txn has committed. */ | |
| #define TXN_CDSGROUP 0x0002 /* CDS group handle. */ | | #define TXN_COMPENSATE 0x00002 /* Compensating transaction. | |
| #define TXN_COMPENSATE 0x0004 /* Compensating transaction. | | */ | |
| */ | | #define TXN_DEADLOCK 0x00004 /* Txn has deadlocked. */ | |
| #define TXN_DEADLOCK 0x0008 /* Txn has deadlocked. */ | | #define TXN_FAMILY 0x00008 /* Cursors/children are inde | |
| #define TXN_LOCKTIMEOUT 0x0010 /* Txn has a lock timeout. * | | pendent. */ | |
| / | | #define TXN_IGNORE_LEASE 0x00010 /* Skip lease check at commi | |
| #define TXN_MALLOC 0x0020 /* Structure allocated by TX | | t time. */ | |
| N system. */ | | #define TXN_INFAMILY 0x00020 /* Part of a transaction fam | |
| #define TXN_NOSYNC 0x0040 /* Do not sync on prepare an | | ily. */ | |
| d commit. */ | | #define TXN_LOCKTIMEOUT 0x00040 /* Txn has a lock timeout. * | |
| #define TXN_NOWAIT 0x0080 /* Do not wait on locks. */ | | / | |
| #define TXN_PRIVATE 0x0100 /* Txn owned by cursor.. */ | | #define TXN_MALLOC 0x00080 /* Structure allocated by TX | |
| #define TXN_READ_COMMITTED 0x0200 /* Txn has degree 2 isolatio | | N system. */ | |
| n. */ | | #define TXN_NOSYNC 0x00100 /* Do not sync on prepare an | |
| #define TXN_READ_UNCOMMITTED 0x0400 /* Txn has degree 1 isolatio | | d commit. */ | |
| n. */ | | #define TXN_NOWAIT 0x00200 /* Do not wait on locks. */ | |
| #define TXN_RESTORED 0x0800 /* Txn has been restored. */ | | #define TXN_PRIVATE 0x00400 /* Txn owned by cursor. */ | |
| #define TXN_SNAPSHOT 0x1000 /* Snapshot Isolation. */ | | #define TXN_READONLY 0x00800 /* CDS group handle. */ | |
| #define TXN_SYNC 0x2000 /* Write and sync on prepare | | #define TXN_READ_COMMITTED 0x01000 /* Txn has degree 2 isolatio | |
| /commit. */ | | n. */ | |
| #define TXN_WRITE_NOSYNC 0x4000 /* Write only on prepare/com | | #define TXN_READ_UNCOMMITTED 0x02000 /* Txn has degree 1 isolatio | |
| mit. */ | | n. */ | |
| | | #define TXN_RESTORED 0x04000 /* Txn has been restored. */ | |
| | | #define TXN_SNAPSHOT 0x08000 /* Snapshot Isolation. */ | |
| | | #define TXN_SYNC 0x10000 /* Write and sync on prepare | |
| | | /commit. */ | |
| | | #define TXN_WRITE_NOSYNC 0x20000 /* Write only on prepare/com | |
| | | mit. */ | |
| u_int32_t flags; | | u_int32_t flags; | |
| }; | | }; | |
| | | | |
| #define TXN_SYNC_FLAGS (TXN_SYNC | TXN_NOSYNC | TXN_WRITE_NOSYNC) | | #define TXN_SYNC_FLAGS (TXN_SYNC | TXN_NOSYNC | TXN_WRITE_NOSYNC) | |
| | | | |
| /* | | /* | |
|
| * Structure used for two phase commit interface. Berkeley DB support for | | * Structure used for two phase commit interface. | |
| two | | * We set the size of our global transaction id (gid) to be 128 in order | |
| * phase commit is compatible with the X/Open XA interface. | | * to match that defined by the XA X/Open standard. | |
| * | | | |
| * The XA #define XIDDATASIZE defines the size of a global transaction ID. | | | |
| We | | | |
| * have our own version here (for name space reasons) which must have the s | | | |
| ame | | | |
| * value. | | | |
| */ | | */ | |
|
| #define DB_XIDDATASIZE 128 | | #define DB_GID_SIZE 128 | |
| struct __db_preplist { | | struct __db_preplist { | |
| DB_TXN *txn; | | DB_TXN *txn; | |
|
| u_int8_t gid[DB_XIDDATASIZE]; | | u_int8_t gid[DB_GID_SIZE]; | |
| }; | | }; | |
| | | | |
| /* Transaction statistics structure. */ | | /* Transaction statistics structure. */ | |
| struct __db_txn_active { | | struct __db_txn_active { | |
| u_int32_t txnid; /* Transaction ID */ | | u_int32_t txnid; /* Transaction ID */ | |
| u_int32_t parentid; /* Transaction ID of parent */ | | u_int32_t parentid; /* Transaction ID of parent */ | |
| pid_t pid; /* Process owning txn ID */ | | pid_t pid; /* Process owning txn ID */ | |
| db_threadid_t tid; /* Thread owning txn ID */ | | db_threadid_t tid; /* Thread owning txn ID */ | |
| | | | |
| DB_LSN lsn; /* LSN when transaction began */ | | DB_LSN lsn; /* LSN when transaction began */ | |
| | | | |
| DB_LSN read_lsn; /* Read LSN for MVCC */ | | DB_LSN read_lsn; /* Read LSN for MVCC */ | |
| u_int32_t mvcc_ref; /* MVCC reference count */ | | u_int32_t mvcc_ref; /* MVCC reference count */ | |
| | | | |
|
| | | u_int32_t priority; /* Deadlock resolution priority */ | |
| | | | |
| #define TXN_ABORTED 1 | | #define TXN_ABORTED 1 | |
| #define TXN_COMMITTED 2 | | #define TXN_COMMITTED 2 | |
| #define TXN_PREPARED 3 | | #define TXN_PREPARED 3 | |
| #define TXN_RUNNING 4 | | #define TXN_RUNNING 4 | |
| u_int32_t status; /* Status of the transaction */ | | u_int32_t status; /* Status of the transaction */ | |
| | | | |
|
| #define TXN_XA_ABORTED 1 | | u_int8_t gid[DB_GID_SIZE]; /* Global transaction ID */ | |
| #define TXN_XA_DEADLOCKED 2 | | | |
| #define TXN_XA_ENDED 3 | | | |
| #define TXN_XA_PREPARED 4 | | | |
| #define TXN_XA_STARTED 5 | | | |
| #define TXN_XA_SUSPENDED 6 | | | |
| u_int32_t xa_status; /* XA status */ | | | |
| | | | |
| u_int8_t xid[DB_XIDDATASIZE]; /* Global transaction ID */ | | | |
| char name[51]; /* 50 bytes of name, nul termination
*/ | | char name[51]; /* 50 bytes of name, nul termination
*/ | |
| }; | | }; | |
| | | | |
| struct __db_txn_stat { | | struct __db_txn_stat { | |
| u_int32_t st_nrestores; /* number of restored transactions | | u_int32_t st_nrestores; /* number of restored transactions | |
| after recovery. */ | | after recovery. */ | |
| #ifndef __TEST_DB_NO_STATISTICS | | #ifndef __TEST_DB_NO_STATISTICS | |
| DB_LSN st_last_ckp; /* lsn of the last checkpoint */ | | DB_LSN st_last_ckp; /* lsn of the last checkpoint */ | |
| time_t st_time_ckp; /* time of last checkpoint */ | | time_t st_time_ckp; /* time of last checkpoint */ | |
| u_int32_t st_last_txnid; /* last transaction id given out */ | | u_int32_t st_last_txnid; /* last transaction id given out */ | |
| u_int32_t st_maxtxns; /* maximum txns possible */ | | u_int32_t st_maxtxns; /* maximum txns possible */ | |
|
| u_int32_t st_naborts; /* number of aborted transactions */ | | uintmax_t st_naborts; /* number of aborted transactions */ | |
| u_int32_t st_nbegins; /* number of begun transactions */ | | uintmax_t st_nbegins; /* number of begun transactions */ | |
| u_int32_t st_ncommits; /* number of committed transactions | | uintmax_t st_ncommits; /* number of committed transactions | |
| */ | | */ | |
| u_int32_t st_nactive; /* number of active transactions */ | | u_int32_t st_nactive; /* number of active transactions */ | |
| u_int32_t st_nsnapshot; /* number of snapshot transactions *
/ | | u_int32_t st_nsnapshot; /* number of snapshot transactions *
/ | |
| u_int32_t st_maxnactive; /* maximum active transactions */ | | u_int32_t st_maxnactive; /* maximum active transactions */ | |
| u_int32_t st_maxnsnapshot; /* maximum snapshot transactions */ | | u_int32_t st_maxnsnapshot; /* maximum snapshot transactions */ | |
| DB_TXN_ACTIVE *st_txnarray; /* array of active transactions */ | | DB_TXN_ACTIVE *st_txnarray; /* array of active transactions */ | |
|
| u_int32_t st_region_wait; /* Region lock granted after wait. * | | uintmax_t st_region_wait; /* Region lock granted after wait. * | |
| / | | / | |
| u_int32_t st_region_nowait; /* Region lock granted without wait. | | uintmax_t st_region_nowait; /* Region lock granted without wait. | |
| */ | | */ | |
| roff_t st_regsize; /* Region size. */ | | roff_t st_regsize; /* Region size. */ | |
| #endif | | #endif | |
| }; | | }; | |
| | | | |
|
| | | #define DB_TXN_TOKEN_SIZE 20 | |
| | | struct __db_txn_token { | |
| | | u_int8_t buf[DB_TXN_TOKEN_SIZE]; | |
| | | }; | |
| | | | |
| /******************************************************* | | /******************************************************* | |
| * Replication. | | * Replication. | |
| *******************************************************/ | | *******************************************************/ | |
| /* Special, out-of-band environment IDs. */ | | /* Special, out-of-band environment IDs. */ | |
| #define DB_EID_BROADCAST -1 | | #define DB_EID_BROADCAST -1 | |
| #define DB_EID_INVALID -2 | | #define DB_EID_INVALID -2 | |
| | | | |
| #define DB_REP_DEFAULT_PRIORITY 100 | | #define DB_REP_DEFAULT_PRIORITY 100 | |
| | | | |
| /* Acknowledgement policies. */ | | /* Acknowledgement policies. */ | |
| | | | |
| skipping to change at line 905 | | skipping to change at line 958 | |
| #define DB_REP_CHECKPOINT_DELAY 2 /* Master checkpoint
delay. */ | | #define DB_REP_CHECKPOINT_DELAY 2 /* Master checkpoint
delay. */ | |
| #define DB_REP_CONNECTION_RETRY 3 /* RepMgr connection
s. */ | | #define DB_REP_CONNECTION_RETRY 3 /* RepMgr connection
s. */ | |
| #define DB_REP_ELECTION_RETRY 4 /* RepMgr elect retr
ies. */ | | #define DB_REP_ELECTION_RETRY 4 /* RepMgr elect retr
ies. */ | |
| #define DB_REP_ELECTION_TIMEOUT 5 /* Rep normal electi
ons. */ | | #define DB_REP_ELECTION_TIMEOUT 5 /* Rep normal electi
ons. */ | |
| #define DB_REP_FULL_ELECTION_TIMEOUT 6 /* Rep full election
s. */ | | #define DB_REP_FULL_ELECTION_TIMEOUT 6 /* Rep full election
s. */ | |
| #define DB_REP_HEARTBEAT_MONITOR 7 /* RepMgr client HB
monitor. */ | | #define DB_REP_HEARTBEAT_MONITOR 7 /* RepMgr client HB
monitor. */ | |
| #define DB_REP_HEARTBEAT_SEND 8 /* RepMgr master sen
d freq. */ | | #define DB_REP_HEARTBEAT_SEND 8 /* RepMgr master sen
d freq. */ | |
| #define DB_REP_LEASE_TIMEOUT 9 /* Master leases. */ | | #define DB_REP_LEASE_TIMEOUT 9 /* Master leases. */ | |
| | | | |
| /* Event notification types. */ | | /* Event notification types. */ | |
|
| #define DB_EVENT_NO_SUCH_EVENT 0 /* out-of-band sentinel va | | #define DB_EVENT_PANIC 0 | |
| lue */ | | #define DB_EVENT_REG_ALIVE 1 | |
| #define DB_EVENT_PANIC 1 | | #define DB_EVENT_REG_PANIC 2 | |
| #define DB_EVENT_REP_CLIENT 2 | | #define DB_EVENT_REP_CLIENT 3 | |
| #define DB_EVENT_REP_ELECTED 3 | | #define DB_EVENT_REP_DUPMASTER 4 | |
| #define DB_EVENT_REP_MASTER 4 | | #define DB_EVENT_REP_ELECTED 5 | |
| #define DB_EVENT_REP_NEWMASTER 5 | | #define DB_EVENT_REP_ELECTION_FAILED 6 | |
| #define DB_EVENT_REP_PERM_FAILED 6 | | #define DB_EVENT_REP_JOIN_FAILURE 7 | |
| #define DB_EVENT_REP_STARTUPDONE 7 | | #define DB_EVENT_REP_MASTER 8 | |
| #define DB_EVENT_WRITE_FAILED 8 | | #define DB_EVENT_REP_MASTER_FAILURE 9 | |
| | | #define DB_EVENT_REP_NEWMASTER 10 | |
| | | #define DB_EVENT_REP_PERM_FAILED 11 | |
| | | #define DB_EVENT_REP_STARTUPDONE 12 | |
| | | #define DB_EVENT_WRITE_FAILED 13 | |
| | | #define DB_EVENT_NO_SUCH_EVENT 0xffffffff /* OOB sentinel | |
| | | value */ | |
| | | | |
| /* Replication Manager site status. */ | | /* Replication Manager site status. */ | |
| struct __db_repmgr_site { | | struct __db_repmgr_site { | |
| int eid; | | int eid; | |
| char *host; | | char *host; | |
| u_int port; | | u_int port; | |
| | | | |
|
| #define DB_REPMGR_CONNECTED 0x01 | | #define DB_REPMGR_CONNECTED 1 | |
| #define DB_REPMGR_DISCONNECTED 0x02 | | #define DB_REPMGR_DISCONNECTED 2 | |
| u_int32_t status; | | u_int32_t status; | |
|
| | | | |
| | | #define DB_REPMGR_ISPEER 0x01 | |
| | | u_int32_t flags; | |
| }; | | }; | |
| | | | |
| /* Replication statistics. */ | | /* Replication statistics. */ | |
| struct __db_rep_stat { | | struct __db_rep_stat { | |
| /* !!! | | /* !!! | |
| * Many replication statistics fields cannot be protected by a mutex | | * Many replication statistics fields cannot be protected by a mutex | |
| * without an unacceptable performance penalty, since most message | | * without an unacceptable performance penalty, since most message | |
| * processing is done without the need to hold a region-wide lock. | | * processing is done without the need to hold a region-wide lock. | |
| * Fields whose comments end with a '+' may be updated without holdi
ng | | * Fields whose comments end with a '+' may be updated without holdi
ng | |
| * the replication or log mutexes (as appropriate), and thus may be | | * the replication or log mutexes (as appropriate), and thus may be | |
| * off somewhat (or, on unreasonable architectures under unlucky | | * off somewhat (or, on unreasonable architectures under unlucky | |
| * circumstances, garbaged). | | * circumstances, garbaged). | |
| */ | | */ | |
|
| u_int32_t st_log_queued; /* Log records currently queued.+ */ | | | |
| u_int32_t st_startup_complete; /* Site completed client sync-up. */ | | u_int32_t st_startup_complete; /* Site completed client sync-up. */ | |
| #ifndef __TEST_DB_NO_STATISTICS | | #ifndef __TEST_DB_NO_STATISTICS | |
|
| | | uintmax_t st_log_queued; /* Log records currently queued.+ */ | |
| u_int32_t st_status; /* Current replication status. */ | | u_int32_t st_status; /* Current replication status. */ | |
| DB_LSN st_next_lsn; /* Next LSN to use or expect. */ | | DB_LSN st_next_lsn; /* Next LSN to use or expect. */ | |
| DB_LSN st_waiting_lsn; /* LSN we're awaiting, if any. */ | | DB_LSN st_waiting_lsn; /* LSN we're awaiting, if any. */ | |
| DB_LSN st_max_perm_lsn; /* Maximum permanent LSN. */ | | DB_LSN st_max_perm_lsn; /* Maximum permanent LSN. */ | |
| db_pgno_t st_next_pg; /* Next pg we expect. */ | | db_pgno_t st_next_pg; /* Next pg we expect. */ | |
| db_pgno_t st_waiting_pg; /* pg we're awaiting, if any. */ | | db_pgno_t st_waiting_pg; /* pg we're awaiting, if any. */ | |
| | | | |
| u_int32_t st_dupmasters; /* # of times a duplicate master | | u_int32_t st_dupmasters; /* # of times a duplicate master | |
| condition was detected.+ */ | | condition was detected.+ */ | |
| int st_env_id; /* Current environment ID. */ | | int st_env_id; /* Current environment ID. */ | |
| u_int32_t st_env_priority; /* Current environment priority. */ | | u_int32_t st_env_priority; /* Current environment priority. */ | |
|
| u_int32_t st_bulk_fills; /* Bulk buffer fills. */ | | uintmax_t st_bulk_fills; /* Bulk buffer fills. */ | |
| u_int32_t st_bulk_overflows; /* Bulk buffer overflows. */ | | uintmax_t st_bulk_overflows; /* Bulk buffer overflows. */ | |
| u_int32_t st_bulk_records; /* Bulk records stored. */ | | uintmax_t st_bulk_records; /* Bulk records stored. */ | |
| u_int32_t st_bulk_transfers; /* Transfers of bulk buffers. */ | | uintmax_t st_bulk_transfers; /* Transfers of bulk buffers. */ | |
| u_int32_t st_client_rerequests; /* Number of forced rerequests. */ | | uintmax_t st_client_rerequests;/* Number of forced rerequests. */ | |
| u_int32_t st_client_svc_req; /* Number of client service requests | | uintmax_t st_client_svc_req; /* Number of client service requests | |
| received by this client. */ | | received by this client. */ | |
|
| u_int32_t st_client_svc_miss; /* Number of client service requests | | uintmax_t st_client_svc_miss; /* Number of client service requests | |
| missing on this client. */ | | missing on this client. */ | |
| u_int32_t st_gen; /* Current generation number. */ | | u_int32_t st_gen; /* Current generation number. */ | |
| u_int32_t st_egen; /* Current election gen number. */ | | u_int32_t st_egen; /* Current election gen number. */ | |
|
| u_int32_t st_log_duplicated; /* Log records received multiply.+ * | | uintmax_t st_log_duplicated; /* Log records received multiply.+ * | |
| / | | / | |
| u_int32_t st_log_queued_max; /* Max. log records queued at once.+ | | uintmax_t st_log_queued_max; /* Max. log records queued at once.+ | |
| */ | | */ | |
| u_int32_t st_log_queued_total; /* Total # of log recs. ever queued. | | uintmax_t st_log_queued_total; /* Total # of log recs. ever queued. | |
| + */ | | + */ | |
| u_int32_t st_log_records; /* Log records received and put.+ */ | | uintmax_t st_log_records; /* Log records received and put.+ */ | |
| u_int32_t st_log_requested; /* Log recs. missed and requested.+ | | uintmax_t st_log_requested; /* Log recs. missed and requested.+ | |
| */ | | */ | |
| int st_master; /* Env. ID of the current master. */ | | int st_master; /* Env. ID of the current master. */ | |
|
| u_int32_t st_master_changes; /* # of times we've switched masters | | uintmax_t st_master_changes; /* # of times we've switched masters | |
| . */ | | . */ | |
| u_int32_t st_msgs_badgen; /* Messages with a bad generation #. | | uintmax_t st_msgs_badgen; /* Messages with a bad generation #. | |
| + */ | | + */ | |
| u_int32_t st_msgs_processed; /* Messages received and processed.+ | | uintmax_t st_msgs_processed; /* Messages received and processed.+ | |
| */ | | */ | |
| u_int32_t st_msgs_recover; /* Messages ignored because this sit | | uintmax_t st_msgs_recover; /* Messages ignored because this sit | |
| e | | e | |
| was a client in recovery.+ */ | | was a client in recovery.+ */ | |
|
| u_int32_t st_msgs_send_failures;/* # of failed message sends.+ */ | | uintmax_t st_msgs_send_failures;/* # of failed message sends.+ */ | |
| u_int32_t st_msgs_sent; /* # of successful message sends.+ * | | uintmax_t st_msgs_sent; /* # of successful message sends.+ */ | |
| / | | uintmax_t st_newsites; /* # of NEWSITE msgs. received.+ */ | |
| u_int32_t st_newsites; /* # of NEWSITE msgs. received.+ */ | | | |
| u_int32_t st_nsites; /* Current number of sites we will | | u_int32_t st_nsites; /* Current number of sites we will | |
| assume during elections. */ | | assume during elections. */ | |
|
| u_int32_t st_nthrottles; /* # of times we were throttled. */ | | uintmax_t st_nthrottles; /* # of times we were throttled. */ | |
| u_int32_t st_outdated; /* # of times we detected and return | | uintmax_t st_outdated; /* # of times we detected and return | |
| ed | | ed | |
| an OUTDATED condition.+ */ | | an OUTDATED condition.+ */ | |
|
| u_int32_t st_pg_duplicated; /* Pages received multiply.+ */ | | uintmax_t st_pg_duplicated; /* Pages received multiply.+ */ | |
| u_int32_t st_pg_records; /* Pages received and stored.+ */ | | uintmax_t st_pg_records; /* Pages received and stored.+ */ | |
| u_int32_t st_pg_requested; /* Pages missed and requested.+ */ | | uintmax_t st_pg_requested; /* Pages missed and requested.+ */ | |
| u_int32_t st_txns_applied; /* # of transactions applied.+ */ | | uintmax_t st_txns_applied; /* # of transactions applied.+ */ | |
| u_int32_t st_startsync_delayed; /* # of STARTSYNC msgs delayed.+ */ | | uintmax_t st_startsync_delayed;/* # of STARTSYNC msgs delayed.+ */ | |
| | | | |
| /* Elections generally. */ | | /* Elections generally. */ | |
|
| u_int32_t st_elections; /* # of elections held.+ */ | | uintmax_t st_elections; /* # of elections held.+ */ | |
| u_int32_t st_elections_won; /* # of elections won by this site.+ | | uintmax_t st_elections_won; /* # of elections won by this site.+ | |
| */ | | */ | |
| | | | |
| /* Statistics about an in-progress election. */ | | /* Statistics about an in-progress election. */ | |
| int st_election_cur_winner; /* Current front-runner. */ | | int st_election_cur_winner; /* Current front-runner. */ | |
| u_int32_t st_election_gen; /* Election generation number. */ | | u_int32_t st_election_gen; /* Election generation number. */ | |
| DB_LSN st_election_lsn; /* Max. LSN of current winner. */ | | DB_LSN st_election_lsn; /* Max. LSN of current winner. */ | |
| u_int32_t st_election_nsites; /* # of "registered voters". */ | | u_int32_t st_election_nsites; /* # of "registered voters". */ | |
| u_int32_t st_election_nvotes; /* # of "registered voters" needed.
*/ | | u_int32_t st_election_nvotes; /* # of "registered voters" needed.
*/ | |
| u_int32_t st_election_priority; /* Current election priority. */ | | u_int32_t st_election_priority; /* Current election priority. */ | |
| int st_election_status; /* Current election status. */ | | int st_election_status; /* Current election status. */ | |
| u_int32_t st_election_tiebreaker;/* Election tiebreaker value. */ | | u_int32_t st_election_tiebreaker;/* Election tiebreaker value. */ | |
| u_int32_t st_election_votes; /* Votes received in this round. */ | | u_int32_t st_election_votes; /* Votes received in this round. */ | |
| u_int32_t st_election_sec; /* Last election time seconds. */ | | u_int32_t st_election_sec; /* Last election time seconds. */ | |
| u_int32_t st_election_usec; /* Last election time useconds. */ | | u_int32_t st_election_usec; /* Last election time useconds. */ | |
| u_int32_t st_max_lease_sec; /* Maximum lease timestamp seconds.
*/ | | u_int32_t st_max_lease_sec; /* Maximum lease timestamp seconds.
*/ | |
| u_int32_t st_max_lease_usec; /* Maximum lease timestamp useconds.
*/ | | u_int32_t st_max_lease_usec; /* Maximum lease timestamp useconds.
*/ | |
|
| | | | |
| | | /* Undocumented statistics only used by the test system. */ | |
| | | #ifdef CONFIG_TEST | |
| | | u_int32_t st_filefail_cleanups; /* # of FILE_FAIL cleanups done. */ | |
| | | #endif | |
| #endif | | #endif | |
| }; | | }; | |
| | | | |
| /* Replication Manager statistics. */ | | /* Replication Manager statistics. */ | |
| struct __db_repmgr_stat { | | struct __db_repmgr_stat { | |
|
| u_int32_t st_perm_failed; /* # of insufficiently ack'ed msgs. | | uintmax_t st_perm_failed; /* # of insufficiently ack'ed msgs. | |
| */ | | */ | |
| u_int32_t st_msgs_queued; /* # msgs queued for network delay. | | uintmax_t st_msgs_queued; /* # msgs queued for network delay. | |
| */ | | */ | |
| u_int32_t st_msgs_dropped; /* # msgs discarded due to excessive | | uintmax_t st_msgs_dropped; /* # msgs discarded due to excessive | |
| queue length. */ | | queue length. */ | |
|
| u_int32_t st_connection_drop; /* Existing connections dropped. */ | | uintmax_t st_connection_drop; /* Existing connections dropped. */ | |
| u_int32_t st_connect_fail; /* Failed new connection attempts. * | | uintmax_t st_connect_fail; /* Failed new connection attempts. * | |
| / | | / | |
| | | uintmax_t st_elect_threads; /* # of active election threads. */ | |
| | | uintmax_t st_max_elect_threads; /* Max concurrent e-threads ever. */ | |
| }; | | }; | |
| | | | |
| /******************************************************* | | /******************************************************* | |
| * Sequences. | | * Sequences. | |
| *******************************************************/ | | *******************************************************/ | |
| /* | | /* | |
| * The storage record for a sequence. | | * The storage record for a sequence. | |
| */ | | */ | |
| struct __db_seq_record { | | struct __db_seq_record { | |
| u_int32_t seq_version; /* Version size/number. */ | | u_int32_t seq_version; /* Version size/number. */ | |
| | | | |
| skipping to change at line 1072 | | skipping to change at line 1141 | |
| int (*set_cachesize) __P((DB_SEQUENCE *, int32_t)); | | int (*set_cachesize) __P((DB_SEQUENCE *, int32_t)); | |
| int (*set_flags) __P((DB_SEQUENCE *, u_int32_t)); | | int (*set_flags) __P((DB_SEQUENCE *, u_int32_t)); | |
| int (*set_range) __P((DB_SEQUENCE *, db_seq_t, db_seq_t)
); | | int (*set_range) __P((DB_SEQUENCE *, db_seq_t, db_seq_t)
); | |
| int (*stat) __P((DB_SEQUENCE *, | | int (*stat) __P((DB_SEQUENCE *, | |
| DB_SEQUENCE_STAT **, u_int32_t)); | | DB_SEQUENCE_STAT **, u_int32_t)); | |
| int (*stat_print) __P((DB_SEQUENCE *, u_int32_t)); | | int (*stat_print) __P((DB_SEQUENCE *, u_int32_t)); | |
| /* DB_SEQUENCE PUBLIC HANDLE LIST END */ | | /* DB_SEQUENCE PUBLIC HANDLE LIST END */ | |
| }; | | }; | |
| | | | |
| struct __db_seq_stat { | | struct __db_seq_stat { | |
|
| u_int32_t st_wait; /* Sequence lock granted w/o wait. * | | uintmax_t st_wait; /* Sequence lock granted w/o wait. * | |
| / | | / | |
| u_int32_t st_nowait; /* Sequence lock granted after wait. | | uintmax_t st_nowait; /* Sequence lock granted after wait. | |
| */ | | */ | |
| db_seq_t st_current; /* Current value in db. */ | | db_seq_t st_current; /* Current value in db. */ | |
| db_seq_t st_value; /* Current cached value. */ | | db_seq_t st_value; /* Current cached value. */ | |
| db_seq_t st_last_value; /* Last cached value. */ | | db_seq_t st_last_value; /* Last cached value. */ | |
| db_seq_t st_min; /* Minimum value. */ | | db_seq_t st_min; /* Minimum value. */ | |
| db_seq_t st_max; /* Maximum value. */ | | db_seq_t st_max; /* Maximum value. */ | |
| int32_t st_cache_size; /* Cache size. */ | | int32_t st_cache_size; /* Cache size. */ | |
| u_int32_t st_flags; /* Flag value. */ | | u_int32_t st_flags; /* Flag value. */ | |
| }; | | }; | |
| | | | |
| /******************************************************* | | /******************************************************* | |
| | | | |
| skipping to change at line 1136 | | skipping to change at line 1205 | |
| #define DB_JOIN_ITEM 12 /* Dbc.get; don't do primary
lookup */ | | #define DB_JOIN_ITEM 12 /* Dbc.get; don't do primary
lookup */ | |
| #define DB_KEYFIRST 13 /* Dbc.put */ | | #define DB_KEYFIRST 13 /* Dbc.put */ | |
| #define DB_KEYLAST 14 /* Dbc.put */ | | #define DB_KEYLAST 14 /* Dbc.put */ | |
| #define DB_LAST 15 /* Dbc.get, DbLogc->get */ | | #define DB_LAST 15 /* Dbc.get, DbLogc->get */ | |
| #define DB_NEXT 16 /* Dbc.get, DbLogc->get */ | | #define DB_NEXT 16 /* Dbc.get, DbLogc->get */ | |
| #define DB_NEXT_DUP 17 /* Dbc.get */ | | #define DB_NEXT_DUP 17 /* Dbc.get */ | |
| #define DB_NEXT_NODUP 18 /* Dbc.get */ | | #define DB_NEXT_NODUP 18 /* Dbc.get */ | |
| #define DB_NODUPDATA 19 /* Db.put, Dbc.put */ | | #define DB_NODUPDATA 19 /* Db.put, Dbc.put */ | |
| #define DB_NOOVERWRITE 20 /* Db.put */ | | #define DB_NOOVERWRITE 20 /* Db.put */ | |
| #define DB_NOSYNC 21 /* Db.close */ | | #define DB_NOSYNC 21 /* Db.close */ | |
|
| #define DB_POSITION 22 /* Dbc.dup */ | | #define DB_OVERWRITE_DUP 22 /* Dbc.put, Db.put; no DB_KE | |
| #define DB_PREV 23 /* Dbc.get, DbLogc->get */ | | YEXIST */ | |
| #define DB_PREV_DUP 24 /* Dbc.get */ | | #define DB_POSITION 23 /* Dbc.dup */ | |
| #define DB_PREV_NODUP 25 /* Dbc.get */ | | #define DB_PREV 24 /* Dbc.get, DbLogc->get */ | |
| #define DB_SET 26 /* Dbc.get, DbLogc->get */ | | #define DB_PREV_DUP 25 /* Dbc.get */ | |
| #define DB_SET_RANGE 27 /* Dbc.get */ | | #define DB_PREV_NODUP 26 /* Dbc.get */ | |
| #define DB_SET_RECNO 28 /* Db.get, Dbc.get */ | | #define DB_SET 27 /* Dbc.get, DbLogc->get */ | |
| #define DB_UPDATE_SECONDARY 29 /* Dbc.get, Dbc.del (interna | | #define DB_SET_RANGE 28 /* Dbc.get */ | |
| l) */ | | #define DB_SET_RECNO 29 /* Db.get, Dbc.get */ | |
| #define DB_WRITECURSOR 30 /* Db.cursor */ | | #define DB_UPDATE_SECONDARY 30 /* Dbc.get, Dbc.del (interna | |
| #define DB_WRITELOCK 31 /* Db.cursor (internal) */ | | l) */ | |
| | | #define DB_SET_LTE 31 /* Dbc.get (internal) */ | |
| | | #define DB_GET_BOTH_LTE 32 /* Dbc.get (internal) */ | |
| | | | |
| /* This has to change when the max opcode hits 255. */ | | /* This has to change when the max opcode hits 255. */ | |
| #define DB_OPFLAGS_MASK 0x000000ff /* Mask for operations flags
. */ | | #define DB_OPFLAGS_MASK 0x000000ff /* Mask for operations flags
. */ | |
| | | | |
| /* | | /* | |
| * DB (user visible) error return codes. | | * DB (user visible) error return codes. | |
| * | | * | |
| * !!! | | * !!! | |
| * We don't want our error returns to conflict with other packages where | | * We don't want our error returns to conflict with other packages where | |
| * possible, so pick a base error value that's hopefully not common. We | | * possible, so pick a base error value that's hopefully not common. We | |
| | | | |
| skipping to change at line 1167 | | skipping to change at line 1237 | |
| */ | | */ | |
| /* DB (public) error return codes. */ | | /* DB (public) error return codes. */ | |
| #define DB_BUFFER_SMALL (-30999)/* User memory too small for
return. */ | | #define DB_BUFFER_SMALL (-30999)/* User memory too small for
return. */ | |
| #define DB_DONOTINDEX (-30998)/* "Null" return from 2ndary
callbk. */ | | #define DB_DONOTINDEX (-30998)/* "Null" return from 2ndary
callbk. */ | |
| #define DB_FOREIGN_CONFLICT (-30997)/* A foreign db constraint t
riggered. */ | | #define DB_FOREIGN_CONFLICT (-30997)/* A foreign db constraint t
riggered. */ | |
| #define DB_KEYEMPTY (-30996)/* Key/data deleted or never
created. */ | | #define DB_KEYEMPTY (-30996)/* Key/data deleted or never
created. */ | |
| #define DB_KEYEXIST (-30995)/* The key/data pair already
exists. */ | | #define DB_KEYEXIST (-30995)/* The key/data pair already
exists. */ | |
| #define DB_LOCK_DEADLOCK (-30994)/* Deadlock. */ | | #define DB_LOCK_DEADLOCK (-30994)/* Deadlock. */ | |
| #define DB_LOCK_NOTGRANTED (-30993)/* Lock unavailable. */ | | #define DB_LOCK_NOTGRANTED (-30993)/* Lock unavailable. */ | |
| #define DB_LOG_BUFFER_FULL (-30992)/* In-memory log buffer full
. */ | | #define DB_LOG_BUFFER_FULL (-30992)/* In-memory log buffer full
. */ | |
|
| #define DB_NOSERVER (-30991)/* Server panic return. */ | | #define DB_LOG_VERIFY_BAD (-30991)/* Log verification failed. | |
| #define DB_NOSERVER_HOME (-30990)/* Bad home sent to server. | | */ | |
| */ | | #define DB_NOSERVER (-30990)/* Server panic return. */ | |
| #define DB_NOSERVER_ID (-30989)/* Bad ID sent to server. */ | | #define DB_NOSERVER_HOME (-30989)/* Bad home sent to server. | |
| #define DB_NOTFOUND (-30988)/* Key/data pair not found ( | | */ | |
| EOF). */ | | #define DB_NOSERVER_ID (-30988)/* Bad ID sent to server. */ | |
| #define DB_OLD_VERSION (-30987)/* Out-of-date version. */ | | #define DB_NOTFOUND (-30987)/* Key/data pair not found ( | |
| #define DB_PAGE_NOTFOUND (-30986)/* Requested page not found. | | EOF). */ | |
| */ | | #define DB_OLD_VERSION (-30986)/* Out-of-date version. */ | |
| #define DB_REP_DUPMASTER (-30985)/* There are two masters. */ | | #define DB_PAGE_NOTFOUND (-30985)/* Requested page not found. | |
| #define DB_REP_HANDLE_DEAD (-30984)/* Rolled back a commit. */ | | */ | |
| #define DB_REP_HOLDELECTION (-30983)/* Time to hold an election. | | #define DB_REP_DUPMASTER (-30984)/* There are two masters. */ | |
| */ | | #define DB_REP_HANDLE_DEAD (-30983)/* Rolled back a commit. */ | |
| #define DB_REP_IGNORE (-30982)/* This msg should be ignore | | #define DB_REP_HOLDELECTION (-30982)/* Time to hold an election. | |
| d.*/ | | */ | |
| #define DB_REP_ISPERM (-30981)/* Cached not written perm w | | #define DB_REP_IGNORE (-30981)/* This msg should be ignore | |
| ritten.*/ | | d.*/ | |
| #define DB_REP_JOIN_FAILURE (-30980)/* Unable to join replicatio | | #define DB_REP_ISPERM (-30980)/* Cached not written perm w | |
| n group. */ | | ritten.*/ | |
| #define DB_REP_LEASE_EXPIRED (-30979)/* Master lease has expired. | | #define DB_REP_JOIN_FAILURE (-30979)/* Unable to join replicatio | |
| */ | | n group. */ | |
| #define DB_REP_LOCKOUT (-30978)/* API/Replication lockout n | | #define DB_REP_LEASE_EXPIRED (-30978)/* Master lease has expired. | |
| ow. */ | | */ | |
| #define DB_REP_NEWSITE (-30977)/* New site entered system. | | #define DB_REP_LOCKOUT (-30977)/* API/Replication lockout n | |
| */ | | ow. */ | |
| #define DB_REP_NOTPERM (-30976)/* Permanent log record not | | #define DB_REP_NEWSITE (-30976)/* New site entered system. | |
| written. */ | | */ | |
| #define DB_REP_UNAVAIL (-30975)/* Site cannot currently be | | #define DB_REP_NOTPERM (-30975)/* Permanent log record not | |
| reached. */ | | written. */ | |
| #define DB_RUNRECOVERY (-30974)/* Panic return. */ | | #define DB_REP_UNAVAIL (-30974)/* Site cannot currently be | |
| #define DB_SECONDARY_BAD (-30973)/* Secondary index corrupt. | | reached. */ | |
| */ | | #define DB_RUNRECOVERY (-30973)/* Panic return. */ | |
| #define DB_VERIFY_BAD (-30972)/* Verify failed; bad format | | #define DB_SECONDARY_BAD (-30972)/* Secondary index corrupt. | |
| . */ | | */ | |
| #define DB_VERSION_MISMATCH (-30971)/* Environment version misma | | #define DB_TIMEOUT (-30971)/* Timed out on read consist | |
| tch. */ | | ency. */ | |
| | | #define DB_VERIFY_BAD (-30970)/* Verify failed; bad format | |
| | | . */ | |
| | | #define DB_VERSION_MISMATCH (-30969)/* Environment version misma | |
| | | tch. */ | |
| | | | |
| /* DB (private) error return codes. */ | | /* DB (private) error return codes. */ | |
| #define DB_ALREADY_ABORTED (-30899) | | #define DB_ALREADY_ABORTED (-30899) | |
| #define DB_DELETED (-30898)/* Recovery file marked dele
ted. */ | | #define DB_DELETED (-30898)/* Recovery file marked dele
ted. */ | |
| #define DB_EVENT_NOT_HANDLED (-30897)/* Forward event to applicat
ion. */ | | #define DB_EVENT_NOT_HANDLED (-30897)/* Forward event to applicat
ion. */ | |
| #define DB_NEEDSPLIT (-30896)/* Page needs to be split. *
/ | | #define DB_NEEDSPLIT (-30896)/* Page needs to be split. *
/ | |
| #define DB_REP_BULKOVF (-30895)/* Rep bulk buffer overflow.
*/ | | #define DB_REP_BULKOVF (-30895)/* Rep bulk buffer overflow.
*/ | |
|
| #define DB_REP_EGENCHG (-30894)/* Egen changed while in ele | | #define DB_REP_LOGREADY (-30894)/* Rep log ready for recover | |
| ction. */ | | y. */ | |
| #define DB_REP_LOGREADY (-30893)/* Rep log ready for recover | | #define DB_REP_NEWMASTER (-30893)/* We have learned of a new | |
| y. */ | | master. */ | |
| #define DB_REP_NEWMASTER (-30892)/* We have learned of a new | | #define DB_REP_PAGEDONE (-30892)/* This page was already don | |
| master. */ | | e. */ | |
| #define DB_REP_PAGEDONE (-30891)/* This page was already don | | #define DB_SURPRISE_KID (-30891)/* Child commit where parent | |
| e. */ | | | |
| #define DB_SURPRISE_KID (-30890)/* Child commit where parent | | | |
| didn't know it was a parent. */ | | didn't know it was a parent. */ | |
|
| #define DB_SWAPBYTES (-30889)/* Database needs byte swapp | | #define DB_SWAPBYTES (-30890)/* Database needs byte swapp | |
| ing. */ | | ing. */ | |
| #define DB_TIMEOUT (-30888)/* Timed out waiting for ele | | #define DB_TXN_CKP (-30889)/* Encountered ckp record in | |
| ction. */ | | log. */ | |
| #define DB_TXN_CKP (-30887)/* Encountered ckp record in | | #define DB_VERIFY_FATAL (-30888)/* DB->verify cannot proceed | |
| log. */ | | . */ | |
| #define DB_VERIFY_FATAL (-30886)/* DB->verify cannot proceed | | | |
| . */ | | | |
| | | | |
| /* Database handle. */ | | /* Database handle. */ | |
| struct __db { | | struct __db { | |
| /******************************************************* | | /******************************************************* | |
| * Public: owned by the application. | | * Public: owned by the application. | |
| *******************************************************/ | | *******************************************************/ | |
| u_int32_t pgsize; /* Database logical page size. */ | | u_int32_t pgsize; /* Database logical page size. */ | |
| DB_CACHE_PRIORITY priority; /* Database priority in cache. */ | | DB_CACHE_PRIORITY priority; /* Database priority in cache. */ | |
| | | | |
| /* Callbacks. */ | | /* Callbacks. */ | |
| | | | |
| skipping to change at line 1234 | | skipping to change at line 1304 | |
| DB_ENV *dbenv; /* Backing public environment. */ | | DB_ENV *dbenv; /* Backing public environment. */ | |
| ENV *env; /* Backing private environment. */ | | ENV *env; /* Backing private environment. */ | |
| | | | |
| DBTYPE type; /* DB access method type. */ | | DBTYPE type; /* DB access method type. */ | |
| | | | |
| DB_MPOOLFILE *mpf; /* Backing buffer pool. */ | | DB_MPOOLFILE *mpf; /* Backing buffer pool. */ | |
| | | | |
| db_mutex_t mutex; /* Synchronization for free threadin
g */ | | db_mutex_t mutex; /* Synchronization for free threadin
g */ | |
| | | | |
| char *fname, *dname; /* File/database passed to DB->open.
*/ | | char *fname, *dname; /* File/database passed to DB->open.
*/ | |
|
| | | const char *dirname; /* Direcory of DB file. */ | |
| u_int32_t open_flags; /* Flags passed to DB->open. */ | | u_int32_t open_flags; /* Flags passed to DB->open. */ | |
| | | | |
| u_int8_t fileid[DB_FILE_ID_LEN];/* File's unique ID for locking. */ | | u_int8_t fileid[DB_FILE_ID_LEN];/* File's unique ID for locking. */ | |
| | | | |
| u_int32_t adj_fileid; /* File's unique ID for curs. adj. *
/ | | u_int32_t adj_fileid; /* File's unique ID for curs. adj. *
/ | |
| | | | |
| #define DB_LOGFILEID_INVALID -1 | | #define DB_LOGFILEID_INVALID -1 | |
| FNAME *log_filename; /* File's naming info for logging. *
/ | | FNAME *log_filename; /* File's naming info for logging. *
/ | |
| | | | |
| db_pgno_t meta_pgno; /* Meta page number */ | | db_pgno_t meta_pgno; /* Meta page number */ | |
| | | | |
| skipping to change at line 1376 | | skipping to change at line 1447 | |
| | | | |
| /* Reference to foreign -- set in the secondary. */ | | /* Reference to foreign -- set in the secondary. */ | |
| DB *s_foreign; | | DB *s_foreign; | |
| | | | |
| /* API-private structure: used by DB 1.85, C++, Java, Perl and Tcl *
/ | | /* API-private structure: used by DB 1.85, C++, Java, Perl and Tcl *
/ | |
| void *api_internal; | | void *api_internal; | |
| | | | |
| /* Subsystem-private structure. */ | | /* Subsystem-private structure. */ | |
| void *bt_internal; /* Btree/Recno access method. */ | | void *bt_internal; /* Btree/Recno access method. */ | |
| void *h_internal; /* Hash access method. */ | | void *h_internal; /* Hash access method. */ | |
|
| | | void *p_internal; /* Partition informaiton. */ | |
| void *q_internal; /* Queue access method. */ | | void *q_internal; /* Queue access method. */ | |
|
| void *xa_internal; /* XA. */ | | | |
| | | | |
| /* DB PUBLIC HANDLE LIST BEGIN */ | | /* DB PUBLIC HANDLE LIST BEGIN */ | |
| int (*associate) __P((DB *, DB_TXN *, DB *, | | int (*associate) __P((DB *, DB_TXN *, DB *, | |
| int (*)(DB *, const DBT *, const DBT *, DBT *), u_int32_t)); | | int (*)(DB *, const DBT *, const DBT *, DBT *), u_int32_t)); | |
| int (*associate_foreign) __P((DB *, DB *, | | int (*associate_foreign) __P((DB *, DB *, | |
| int (*)(DB *, const DBT *, DBT *, const DBT *, int *), | | int (*)(DB *, const DBT *, DBT *, const DBT *, int *), | |
| u_int32_t)); | | u_int32_t)); | |
| int (*close) __P((DB *, u_int32_t)); | | int (*close) __P((DB *, u_int32_t)); | |
| int (*compact) __P((DB *, | | int (*compact) __P((DB *, | |
| DB_TXN *, DBT *, DBT *, DB_COMPACT *, u_int32_t, DBT *)); | | DB_TXN *, DBT *, DBT *, DB_COMPACT *, u_int32_t, DBT *)); | |
| int (*cursor) __P((DB *, DB_TXN *, DBC **, u_int32_t)); | | int (*cursor) __P((DB *, DB_TXN *, DBC **, u_int32_t)); | |
| int (*del) __P((DB *, DB_TXN *, DBT *, u_int32_t)); | | int (*del) __P((DB *, DB_TXN *, DBT *, u_int32_t)); | |
| void (*err) __P((DB *, int, const char *, ...)); | | void (*err) __P((DB *, int, const char *, ...)); | |
| void (*errx) __P((DB *, const char *, ...)); | | void (*errx) __P((DB *, const char *, ...)); | |
| int (*exists) __P((DB *, DB_TXN *, DBT *, u_int32_t)); | | int (*exists) __P((DB *, DB_TXN *, DBT *, u_int32_t)); | |
| int (*fd) __P((DB *, int *)); | | int (*fd) __P((DB *, int *)); | |
| int (*get) __P((DB *, DB_TXN *, DBT *, DBT *, u_int32_t)); | | int (*get) __P((DB *, DB_TXN *, DBT *, DBT *, u_int32_t)); | |
|
| | | int (*get_alloc) __P((DB *, void *(**)(size_t), | |
| | | void *(**)(void *, size_t), void (**)(void *))); | |
| | | int (*get_append_recno) __P((DB *, int (**)(DB *, DBT *, db_recno_t | |
| | | ))); | |
| | | int (*get_bt_compare) | |
| | | __P((DB *, int (**)(DB *, const DBT *, const DBT *))); | |
| | | int (*get_bt_compress) __P((DB *, | |
| | | int (**)(DB *, | |
| | | const DBT *, const DBT *, const DBT *, const DBT *, DBT *), | |
| | | int (**)(DB *, const DBT *, const DBT *, DBT *, DBT *, DBT * | |
| | | ))); | |
| int (*get_bt_minkey) __P((DB *, u_int32_t *)); | | int (*get_bt_minkey) __P((DB *, u_int32_t *)); | |
|
| | | int (*get_bt_prefix) | |
| | | __P((DB *, size_t (**)(DB *, const DBT *, const DBT *))); | |
| int (*get_byteswapped) __P((DB *, int *)); | | int (*get_byteswapped) __P((DB *, int *)); | |
| int (*get_cachesize) __P((DB *, u_int32_t *, u_int32_t *, int *)); | | int (*get_cachesize) __P((DB *, u_int32_t *, u_int32_t *, int *)); | |
|
| | | int (*get_create_dir) __P((DB *, const char **)); | |
| int (*get_dbname) __P((DB *, const char **, const char **)); | | int (*get_dbname) __P((DB *, const char **, const char **)); | |
|
| | | int (*get_dup_compare) | |
| | | __P((DB *, int (**)(DB *, const DBT *, const DBT *))); | |
| int (*get_encrypt_flags) __P((DB *, u_int32_t *)); | | int (*get_encrypt_flags) __P((DB *, u_int32_t *)); | |
| DB_ENV *(*get_env) __P((DB *)); | | DB_ENV *(*get_env) __P((DB *)); | |
| void (*get_errcall) __P((DB *, | | void (*get_errcall) __P((DB *, | |
| void (**)(const DB_ENV *, const char *, const char *))); | | void (**)(const DB_ENV *, const char *, const char *))); | |
| void (*get_errfile) __P((DB *, FILE **)); | | void (*get_errfile) __P((DB *, FILE **)); | |
| void (*get_errpfx) __P((DB *, const char **)); | | void (*get_errpfx) __P((DB *, const char **)); | |
|
| | | int (*get_feedback) __P((DB *, void (**)(DB *, int, int))); | |
| int (*get_flags) __P((DB *, u_int32_t *)); | | int (*get_flags) __P((DB *, u_int32_t *)); | |
|
| | | int (*get_h_compare) | |
| | | __P((DB *, int (**)(DB *, const DBT *, const DBT *))); | |
| int (*get_h_ffactor) __P((DB *, u_int32_t *)); | | int (*get_h_ffactor) __P((DB *, u_int32_t *)); | |
|
| | | int (*get_h_hash) | |
| | | __P((DB *, u_int32_t (**)(DB *, const void *, u_int32_t))); | |
| int (*get_h_nelem) __P((DB *, u_int32_t *)); | | int (*get_h_nelem) __P((DB *, u_int32_t *)); | |
| int (*get_lorder) __P((DB *, int *)); | | int (*get_lorder) __P((DB *, int *)); | |
| DB_MPOOLFILE *(*get_mpf) __P((DB *)); | | DB_MPOOLFILE *(*get_mpf) __P((DB *)); | |
|
| | | void (*get_msgcall) __P((DB *, | |
| | | void (**)(const DB_ENV *, const char *))); | |
| void (*get_msgfile) __P((DB *, FILE **)); | | void (*get_msgfile) __P((DB *, FILE **)); | |
| int (*get_multiple) __P((DB *)); | | int (*get_multiple) __P((DB *)); | |
| int (*get_open_flags) __P((DB *, u_int32_t *)); | | int (*get_open_flags) __P((DB *, u_int32_t *)); | |
| int (*get_pagesize) __P((DB *, u_int32_t *)); | | int (*get_pagesize) __P((DB *, u_int32_t *)); | |
|
| | | int (*get_partition_callback) __P((DB *, | |
| | | u_int32_t *, u_int32_t (**)(DB *, DBT *key))); | |
| | | int (*get_partition_dirs) __P((DB *, const char ***)); | |
| | | int (*get_partition_keys) __P((DB *, u_int32_t *, DBT **)); | |
| int (*get_priority) __P((DB *, DB_CACHE_PRIORITY *)); | | int (*get_priority) __P((DB *, DB_CACHE_PRIORITY *)); | |
| int (*get_q_extentsize) __P((DB *, u_int32_t *)); | | int (*get_q_extentsize) __P((DB *, u_int32_t *)); | |
| int (*get_re_delim) __P((DB *, int *)); | | int (*get_re_delim) __P((DB *, int *)); | |
| int (*get_re_len) __P((DB *, u_int32_t *)); | | int (*get_re_len) __P((DB *, u_int32_t *)); | |
| int (*get_re_pad) __P((DB *, int *)); | | int (*get_re_pad) __P((DB *, int *)); | |
| int (*get_re_source) __P((DB *, const char **)); | | int (*get_re_source) __P((DB *, const char **)); | |
| int (*get_transactional) __P((DB *)); | | int (*get_transactional) __P((DB *)); | |
| int (*get_type) __P((DB *, DBTYPE *)); | | int (*get_type) __P((DB *, DBTYPE *)); | |
| int (*join) __P((DB *, DBC **, DBC **, u_int32_t)); | | int (*join) __P((DB *, DBC **, DBC **, u_int32_t)); | |
| int (*key_range) | | int (*key_range) | |
| | | | |
| skipping to change at line 1437 | | skipping to change at line 1533 | |
| int (*pget) __P((DB *, DB_TXN *, DBT *, DBT *, DBT *, u_int32_t)); | | int (*pget) __P((DB *, DB_TXN *, DBT *, DBT *, DBT *, u_int32_t)); | |
| int (*put) __P((DB *, DB_TXN *, DBT *, DBT *, u_int32_t)); | | int (*put) __P((DB *, DB_TXN *, DBT *, DBT *, u_int32_t)); | |
| int (*remove) __P((DB *, const char *, const char *, u_int32_t)); | | int (*remove) __P((DB *, const char *, const char *, u_int32_t)); | |
| int (*rename) __P((DB *, | | int (*rename) __P((DB *, | |
| const char *, const char *, const char *, u_int32_t)); | | const char *, const char *, const char *, u_int32_t)); | |
| int (*set_alloc) __P((DB *, void *(*)(size_t), | | int (*set_alloc) __P((DB *, void *(*)(size_t), | |
| void *(*)(void *, size_t), void (*)(void *))); | | void *(*)(void *, size_t), void (*)(void *))); | |
| int (*set_append_recno) __P((DB *, int (*)(DB *, DBT *, db_recno_t)
)); | | int (*set_append_recno) __P((DB *, int (*)(DB *, DBT *, db_recno_t)
)); | |
| int (*set_bt_compare) | | int (*set_bt_compare) | |
| __P((DB *, int (*)(DB *, const DBT *, const DBT *))); | | __P((DB *, int (*)(DB *, const DBT *, const DBT *))); | |
|
| | | int (*set_bt_compress) __P((DB *, | |
| | | int (*)(DB *, const DBT *, const DBT *, const DBT *, const D | |
| | | BT *, DBT *), | |
| | | int (*)(DB *, const DBT *, const DBT *, DBT *, DBT *, DBT *) | |
| | | )); | |
| int (*set_bt_minkey) __P((DB *, u_int32_t)); | | int (*set_bt_minkey) __P((DB *, u_int32_t)); | |
| int (*set_bt_prefix) | | int (*set_bt_prefix) | |
| __P((DB *, size_t (*)(DB *, const DBT *, const DBT *))); | | __P((DB *, size_t (*)(DB *, const DBT *, const DBT *))); | |
| int (*set_cachesize) __P((DB *, u_int32_t, u_int32_t, int)); | | int (*set_cachesize) __P((DB *, u_int32_t, u_int32_t, int)); | |
|
| | | int (*set_create_dir) __P((DB *, const char *)); | |
| int (*set_dup_compare) | | int (*set_dup_compare) | |
| __P((DB *, int (*)(DB *, const DBT *, const DBT *))); | | __P((DB *, int (*)(DB *, const DBT *, const DBT *))); | |
| int (*set_encrypt) __P((DB *, const char *, u_int32_t)); | | int (*set_encrypt) __P((DB *, const char *, u_int32_t)); | |
| void (*set_errcall) __P((DB *, | | void (*set_errcall) __P((DB *, | |
| void (*)(const DB_ENV *, const char *, const char *))); | | void (*)(const DB_ENV *, const char *, const char *))); | |
| void (*set_errfile) __P((DB *, FILE *)); | | void (*set_errfile) __P((DB *, FILE *)); | |
| void (*set_errpfx) __P((DB *, const char *)); | | void (*set_errpfx) __P((DB *, const char *)); | |
| int (*set_feedback) __P((DB *, void (*)(DB *, int, int))); | | int (*set_feedback) __P((DB *, void (*)(DB *, int, int))); | |
| int (*set_flags) __P((DB *, u_int32_t)); | | int (*set_flags) __P((DB *, u_int32_t)); | |
| int (*set_h_compare) | | int (*set_h_compare) | |
| __P((DB *, int (*)(DB *, const DBT *, const DBT *))); | | __P((DB *, int (*)(DB *, const DBT *, const DBT *))); | |
| int (*set_h_ffactor) __P((DB *, u_int32_t)); | | int (*set_h_ffactor) __P((DB *, u_int32_t)); | |
| int (*set_h_hash) | | int (*set_h_hash) | |
| __P((DB *, u_int32_t (*)(DB *, const void *, u_int32_t))); | | __P((DB *, u_int32_t (*)(DB *, const void *, u_int32_t))); | |
| int (*set_h_nelem) __P((DB *, u_int32_t)); | | int (*set_h_nelem) __P((DB *, u_int32_t)); | |
| int (*set_lorder) __P((DB *, int)); | | int (*set_lorder) __P((DB *, int)); | |
| void (*set_msgcall) __P((DB *, void (*)(const DB_ENV *, const char *
))); | | void (*set_msgcall) __P((DB *, void (*)(const DB_ENV *, const char *
))); | |
| void (*set_msgfile) __P((DB *, FILE *)); | | void (*set_msgfile) __P((DB *, FILE *)); | |
| int (*set_pagesize) __P((DB *, u_int32_t)); | | int (*set_pagesize) __P((DB *, u_int32_t)); | |
| int (*set_paniccall) __P((DB *, void (*)(DB_ENV *, int))); | | int (*set_paniccall) __P((DB *, void (*)(DB_ENV *, int))); | |
|
| | | int (*set_partition) __P((DB *, | |
| | | u_int32_t, DBT *, u_int32_t (*)(DB *, DBT *key))); | |
| | | int (*set_partition_dirs) __P((DB *, const char **)); | |
| int (*set_priority) __P((DB *, DB_CACHE_PRIORITY)); | | int (*set_priority) __P((DB *, DB_CACHE_PRIORITY)); | |
| int (*set_q_extentsize) __P((DB *, u_int32_t)); | | int (*set_q_extentsize) __P((DB *, u_int32_t)); | |
| int (*set_re_delim) __P((DB *, int)); | | int (*set_re_delim) __P((DB *, int)); | |
| int (*set_re_len) __P((DB *, u_int32_t)); | | int (*set_re_len) __P((DB *, u_int32_t)); | |
| int (*set_re_pad) __P((DB *, int)); | | int (*set_re_pad) __P((DB *, int)); | |
| int (*set_re_source) __P((DB *, const char *)); | | int (*set_re_source) __P((DB *, const char *)); | |
|
| | | int (*sort_multiple) __P((DB *, DBT *, DBT *, u_int32_t)); | |
| int (*stat) __P((DB *, DB_TXN *, void *, u_int32_t)); | | int (*stat) __P((DB *, DB_TXN *, void *, u_int32_t)); | |
| int (*stat_print) __P((DB *, u_int32_t)); | | int (*stat_print) __P((DB *, u_int32_t)); | |
| int (*sync) __P((DB *, u_int32_t)); | | int (*sync) __P((DB *, u_int32_t)); | |
| int (*truncate) __P((DB *, DB_TXN *, u_int32_t *, u_int32_t)); | | int (*truncate) __P((DB *, DB_TXN *, u_int32_t *, u_int32_t)); | |
| int (*upgrade) __P((DB *, const char *, u_int32_t)); | | int (*upgrade) __P((DB *, const char *, u_int32_t)); | |
| int (*verify) | | int (*verify) | |
| __P((DB *, const char *, const char *, FILE *, u_int32_t)); | | __P((DB *, const char *, const char *, FILE *, u_int32_t)); | |
| /* DB PUBLIC HANDLE LIST END */ | | /* DB PUBLIC HANDLE LIST END */ | |
| | | | |
| /* DB PRIVATE HANDLE LIST BEGIN */ | | /* DB PRIVATE HANDLE LIST BEGIN */ | |
| int (*dump) __P((DB *, const char *, | | int (*dump) __P((DB *, const char *, | |
| int (*)(void *, const void *), void *, int, int)); | | int (*)(void *, const void *), void *, int, int)); | |
|
| int (*db_am_remove) __P((DB *, DB_TXN *, const char *, const char * | | int (*db_am_remove) __P((DB *, DB_THREAD_INFO *, | |
| )); | | DB_TXN *, const char *, const char *, u_int32_t)); | |
| int (*db_am_rename) __P((DB *, DB_TXN *, | | int (*db_am_rename) __P((DB *, DB_THREAD_INFO *, | |
| const char *, const char *, const char *)); | | DB_TXN *, const char *, const char *, const char *)); | |
| /* DB PRIVATE HANDLE LIST END */ | | /* DB PRIVATE HANDLE LIST END */ | |
| | | | |
| /* | | /* | |
| * Never called; these are a place to save function pointers | | * Never called; these are a place to save function pointers | |
| * so that we can undo an associate. | | * so that we can undo an associate. | |
| */ | | */ | |
| int (*stored_get) __P((DB *, DB_TXN *, DBT *, DBT *, u_int32_t)); | | int (*stored_get) __P((DB *, DB_TXN *, DBT *, DBT *, u_int32_t)); | |
| int (*stored_close) __P((DB *, u_int32_t)); | | int (*stored_close) __P((DB *, u_int32_t)); | |
| | | | |
|
| | | /* Alternative handle close function, used by C++ API. */ | |
| | | int (*alt_close) __P((DB *, u_int32_t)); | |
| | | | |
| #define DB_OK_BTREE 0x01 | | #define DB_OK_BTREE 0x01 | |
| #define DB_OK_HASH 0x02 | | #define DB_OK_HASH 0x02 | |
| #define DB_OK_QUEUE 0x04 | | #define DB_OK_QUEUE 0x04 | |
| #define DB_OK_RECNO 0x08 | | #define DB_OK_RECNO 0x08 | |
| u_int32_t am_ok; /* Legal AM choices. */ | | u_int32_t am_ok; /* Legal AM choices. */ | |
| | | | |
| /* | | /* | |
| * This field really ought to be an AM_FLAG, but we have | | * This field really ought to be an AM_FLAG, but we have | |
| * have run out of bits. If/when we decide to split up | | * have run out of bits. If/when we decide to split up | |
| * the flags, we can incorporate it. | | * the flags, we can incorporate it. | |
| */ | | */ | |
| int preserve_fid; /* Do not free fileid on close. */ | | int preserve_fid; /* Do not free fileid on close. */ | |
| | | | |
| #define DB_AM_CHKSUM 0x00000001 /* Checksumming */ | | #define DB_AM_CHKSUM 0x00000001 /* Checksumming */ | |
| #define DB_AM_COMPENSATE 0x00000002 /* Created by compensatin
g txn */ | | #define DB_AM_COMPENSATE 0x00000002 /* Created by compensatin
g txn */ | |
|
| #define DB_AM_CREATED 0x00000004 /* Database was created u | | #define DB_AM_COMPRESS 0x00000004 /* Compressed BTree */ | |
| pon open */ | | #define DB_AM_CREATED 0x00000008 /* Database was created u | |
| #define DB_AM_CREATED_MSTR 0x00000008 /* Encompassing file was | | pon open */ | |
| created */ | | #define DB_AM_CREATED_MSTR 0x00000010 /* Encompassing file was | |
| #define DB_AM_DBM_ERROR 0x00000010 /* Error in DBM/NDBM data | | created */ | |
| base */ | | #define DB_AM_DBM_ERROR 0x00000020 /* Error in DBM/NDBM data | |
| #define DB_AM_DELIMITER 0x00000020 /* Variable length delimi | | base */ | |
| ter set */ | | #define DB_AM_DELIMITER 0x00000040 /* Variable length delimi | |
| #define DB_AM_DISCARD 0x00000040 /* Discard any cached pag | | ter set */ | |
| es */ | | #define DB_AM_DISCARD 0x00000080 /* Discard any cached pag | |
| #define DB_AM_DUP 0x00000080 /* DB_DUP */ | | es */ | |
| #define DB_AM_DUPSORT 0x00000100 /* DB_DUPSORT */ | | #define DB_AM_DUP 0x00000100 /* DB_DUP */ | |
| #define DB_AM_ENCRYPT 0x00000200 /* Encryption */ | | #define DB_AM_DUPSORT 0x00000200 /* DB_DUPSORT */ | |
| #define DB_AM_FIXEDLEN 0x00000400 /* Fixed-length records * | | #define DB_AM_ENCRYPT 0x00000400 /* Encryption */ | |
| / | | #define DB_AM_FIXEDLEN 0x00000800 /* Fixed-length records * | |
| #define DB_AM_INMEM 0x00000800 /* In-memory; no sync on | | / | |
| close */ | | #define DB_AM_INMEM 0x00001000 /* In-memory; no sync on | |
| #define DB_AM_INORDER 0x00001000 /* DB_INORDER */ | | close */ | |
| #define DB_AM_IN_RENAME 0x00002000 /* File is being renamed | | #define DB_AM_INORDER 0x00002000 /* DB_INORDER */ | |
| */ | | #define DB_AM_IN_RENAME 0x00004000 /* File is being renamed | |
| #define DB_AM_NOT_DURABLE 0x00004000 /* Do not log changes */ | | */ | |
| #define DB_AM_OPEN_CALLED 0x00008000 /* DB->open called */ | | #define DB_AM_NOT_DURABLE 0x00008000 /* Do not log changes */ | |
| #define DB_AM_PAD 0x00010000 /* Fixed-length record pa | | #define DB_AM_OPEN_CALLED 0x00010000 /* DB->open called */ | |
| d */ | | #define DB_AM_PAD 0x00020000 /* Fixed-length record pa | |
| #define DB_AM_PGDEF 0x00020000 /* Page size was defaulte | | d */ | |
| d */ | | #define DB_AM_PGDEF 0x00040000 /* Page size was defaulte | |
| #define DB_AM_RDONLY 0x00040000 /* Database is readonly * | | d */ | |
| / | | #define DB_AM_RDONLY 0x00080000 /* Database is readonly * | |
| #define DB_AM_READ_UNCOMMITTED 0x00080000 /* Support degree 1 isola | | / | |
| tion */ | | #define DB_AM_READ_UNCOMMITTED 0x00100000 /* Support degree 1 isola | |
| #define DB_AM_RECNUM 0x00100000 /* DB_RECNUM */ | | tion */ | |
| #define DB_AM_RECOVER 0x00200000 /* DB opened by recovery | | #define DB_AM_RECNUM 0x00200000 /* DB_RECNUM */ | |
| routine */ | | #define DB_AM_RECOVER 0x00400000 /* DB opened by recovery | |
| #define DB_AM_RENUMBER 0x00400000 /* DB_RENUMBER */ | | routine */ | |
| #define DB_AM_REVSPLITOFF 0x00800000 /* DB_REVSPLITOFF */ | | #define DB_AM_RENUMBER 0x00800000 /* DB_RENUMBER */ | |
| #define DB_AM_SECONDARY 0x01000000 /* Database is a secondar | | #define DB_AM_REVSPLITOFF 0x01000000 /* DB_REVSPLITOFF */ | |
| y index */ | | #define DB_AM_SECONDARY 0x02000000 /* Database is a secondar | |
| #define DB_AM_SNAPSHOT 0x02000000 /* DB_SNAPSHOT */ | | y index */ | |
| #define DB_AM_SUBDB 0x04000000 /* Subdatabases supported | | #define DB_AM_SNAPSHOT 0x04000000 /* DB_SNAPSHOT */ | |
| */ | | #define DB_AM_SUBDB 0x08000000 /* Subdatabases supported | |
| #define DB_AM_SWAP 0x08000000 /* Pages need to be byte- | | */ | |
| swapped */ | | #define DB_AM_SWAP 0x10000000 /* Pages need to be byte- | |
| #define DB_AM_TXN 0x10000000 /* Opened in a transactio | | swapped */ | |
| n */ | | #define DB_AM_TXN 0x20000000 /* Opened in a transactio | |
| #define DB_AM_VERIFYING 0x20000000 /* DB handle is in the ve | | n */ | |
| rifier */ | | #define DB_AM_VERIFYING 0x40000000 /* DB handle is in the ve | |
| | | rifier */ | |
| u_int32_t orig_flags; /* Flags at open, for refresh */ | | u_int32_t orig_flags; /* Flags at open, for refresh */ | |
| u_int32_t flags; | | u_int32_t flags; | |
| }; | | }; | |
| | | | |
| /* | | /* | |
|
| * Macros for bulk get. These are only intended for the C API. | | * Macros for bulk operations. These are only intended for the C API. | |
| * For C++, use DbMultiple*Iterator. | | * For C++, use DbMultiple*Iterator or DbMultiple*Builder. | |
| | | * | |
| | | * Bulk operations store multiple entries into a single DBT structure. The | |
| | | * following macros assist with creating and reading these Multiple DBTs. | |
| | | * | |
| | | * The basic layout for single data items is: | |
| | | * | |
| | | * ------------------------------------------------------------------------ | |
| | | - | |
| | | * | data1 | ... | dataN | ..... |-1 | dNLen | dNOff | ... | d1Len | d1Off | |
| | | | | |
| | | * ------------------------------------------------------------------------ | |
| | | - | |
| | | * | |
| | | * For the DB_MULTIPLE_KEY* macros, the items are in key/data pairs, so dat | |
| | | a1 | |
| | | * would be a key, and data2 its corresponding value (N is always even). | |
| | | * | |
| | | * For the DB_MULTIPLE_RECNO* macros, the record number is stored along wit | |
| | | h | |
| | | * the len/off pair in the "header" section, and the list is zero terminate | |
| | | d | |
| | | * (since -1 is a valid record number): | |
| | | * | |
| | | * ------------------------------------------------------------------------ | |
| | | -- | |
| | | * | d1 |..| dN |..| 0 | dNLen | dNOff | recnoN |..| d1Len | d1Off | recno1 | |
| | | | | |
| | | * ------------------------------------------------------------------------ | |
| | | -- | |
| */ | | */ | |
| #define DB_MULTIPLE_INIT(pointer, dbt)
\ | | #define DB_MULTIPLE_INIT(pointer, dbt)
\ | |
| (pointer = (u_int8_t *)(dbt)->data + \ | | (pointer = (u_int8_t *)(dbt)->data + \ | |
| (dbt)->ulen - sizeof(u_int32_t)) | | (dbt)->ulen - sizeof(u_int32_t)) | |
|
| | | | |
| #define DB_MULTIPLE_NEXT(pointer, dbt, retdata, retdlen)
\ | | #define DB_MULTIPLE_NEXT(pointer, dbt, retdata, retdlen)
\ | |
| do { \ | | do { \ | |
|
| if (*((u_int32_t *)(pointer)) == (u_int32_t)-1) { \ | | u_int32_t *__p = (u_int32_t *)(pointer); \ | |
| | | if (*__p == (u_int32_t)-1) { \ | |
| retdata = NULL; \ | | retdata = NULL; \ | |
| pointer = NULL; \ | | pointer = NULL; \ | |
| break; \ | | break; \ | |
| } \ | | } \ | |
|
| retdata = (u_int8_t *) \ | | retdata = (u_int8_t *)(dbt)->data + *__p--; \ | |
| (dbt)->data + *(u_int32_t *)(pointer); \ | | retdlen = *__p--; \ | |
| (pointer) = (u_int32_t *)(pointer) - 1; \ | | pointer = __p; \ | |
| retdlen = *(u_int32_t *)(pointer); \ | | if (retdlen == 0 && retdata == (u_int8_t *)(dbt)->data) \ | |
| (pointer) = (u_int32_t *)(pointer) - 1; \ | | | |
| if (retdlen == 0 && \ | | | |
| retdata == (u_int8_t *)(dbt)->data) \ | | | |
| retdata = NULL; \ | | retdata = NULL; \ | |
| } while (0) | | } while (0) | |
|
| | | | |
| #define DB_MULTIPLE_KEY_NEXT(pointer, dbt, retkey, retklen, retdata,
retdlen) \ | | #define DB_MULTIPLE_KEY_NEXT(pointer, dbt, retkey, retklen, retdata,
retdlen) \ | |
| do { \ | | do { \ | |
|
| if (*((u_int32_t *)(pointer)) == (u_int32_t)-1) { \ | | u_int32_t *__p = (u_int32_t *)(pointer); \ | |
| | | if (*__p == (u_int32_t)-1) { \ | |
| retdata = NULL; \ | | retdata = NULL; \ | |
| retkey = NULL; \ | | retkey = NULL; \ | |
| pointer = NULL; \ | | pointer = NULL; \ | |
| break; \ | | break; \ | |
| } \ | | } \ | |
|
| retkey = (u_int8_t *) \ | | retkey = (u_int8_t *)(dbt)->data + *__p--; \ | |
| (dbt)->data + *(u_int32_t *)(pointer); \ | | retklen = *__p--; \ | |
| (pointer) = (u_int32_t *)(pointer) - 1; \ | | retdata = (u_int8_t *)(dbt)->data + *__p--; \ | |
| retklen = *(u_int32_t *)(pointer); \ | | retdlen = *__p--; \ | |
| (pointer) = (u_int32_t *)(pointer) - 1; \ | | pointer = __p; \ | |
| retdata = (u_int8_t *) \ | | | |
| (dbt)->data + *(u_int32_t *)(pointer); \ | | | |
| (pointer) = (u_int32_t *)(pointer) - 1; \ | | | |
| retdlen = *(u_int32_t *)(pointer); \ | | | |
| (pointer) = (u_int32_t *)(pointer) - 1; \ | | | |
| } while (0) | | } while (0) | |
| | | | |
| #define DB_MULTIPLE_RECNO_NEXT(pointer, dbt, recno, retdata, retdlen
) \ | | #define DB_MULTIPLE_RECNO_NEXT(pointer, dbt, recno, retdata, retdlen
) \ | |
| do { \ | | do { \ | |
|
| if (*((u_int32_t *)(pointer)) == (u_int32_t)0) { \ | | u_int32_t *__p = (u_int32_t *)(pointer); \ | |
| | | if (*__p == (u_int32_t)0) { \ | |
| recno = 0; \ | | recno = 0; \ | |
| retdata = NULL; \ | | retdata = NULL; \ | |
| pointer = NULL; \ | | pointer = NULL; \ | |
| break; \ | | break; \ | |
| } \ | | } \ | |
|
| recno = *(u_int32_t *)(pointer); \ | | recno = *__p--; \ | |
| (pointer) = (u_int32_t *)(pointer) - 1; \ | | retdata = (u_int8_t *)(dbt)->data + *__p--; \ | |
| retdata = (u_int8_t *) \ | | retdlen = *__p--; \ | |
| (dbt)->data + *(u_int32_t *)(pointer); \ | | pointer = __p; \ | |
| (pointer) = (u_int32_t *)(pointer) - 1; \ | | } while (0) | |
| retdlen = *(u_int32_t *)(pointer); \ | | | |
| (pointer) = (u_int32_t *)(pointer) - 1; \ | | #define DB_MULTIPLE_WRITE_INIT(pointer, dbt) \ | |
| | | do { \ | |
| | | (dbt)->flags |= DB_DBT_BULK; \ | |
| | | pointer = (u_int8_t *)(dbt)->data + \ | |
| | | (dbt)->ulen - sizeof(u_int32_t); \ | |
| | | *(u_int32_t *)(pointer) = (u_int32_t)-1; \ | |
| | | } while (0) | |
| | | | |
| | | #define DB_MULTIPLE_RESERVE_NEXT(pointer, dbt, writedata, writedlen) \ | |
| | | do { \ | |
| | | u_int32_t *__p = (u_int32_t *)(pointer); \ | |
| | | u_int32_t __off = ((pointer) == (u_int8_t *)(dbt)->data +\ | |
| | | (dbt)->ulen - sizeof(u_int32_t)) ? 0 : __p[1] + __p[2]; | |
| | | \ | |
| | | if ((u_int8_t *)(dbt)->data + __off + (writedlen) > \ | |
| | | (u_int8_t *)(__p - 2)) \ | |
| | | writedata = NULL; \ | |
| | | else { \ | |
| | | writedata = (u_int8_t *)(dbt)->data + __off; \ | |
| | | __p[0] = __off; \ | |
| | | __p[-1] = (u_int32_t)(writedlen); \ | |
| | | __p[-2] = (u_int32_t)-1; \ | |
| | | pointer = __p - 2; \ | |
| | | } \ | |
| | | } while (0) | |
| | | | |
| | | #define DB_MULTIPLE_WRITE_NEXT(pointer, dbt, writedata, writedlen) \ | |
| | | do { \ | |
| | | void *__destd; \ | |
| | | DB_MULTIPLE_RESERVE_NEXT((pointer), (dbt), \ | |
| | | __destd, (writedlen)); \ | |
| | | if (__destd == NULL) \ | |
| | | pointer = NULL; \ | |
| | | else \ | |
| | | memcpy(__destd, (writedata), (writedlen)); \ | |
| | | } while (0) | |
| | | | |
| | | #define DB_MULTIPLE_KEY_RESERVE_NEXT(pointer, dbt, writekey, writeklen, wri | |
| | | tedata, writedlen) \ | |
| | | do { \ | |
| | | u_int32_t *__p = (u_int32_t *)(pointer); \ | |
| | | u_int32_t __off = ((pointer) == (u_int8_t *)(dbt)->data +\ | |
| | | (dbt)->ulen - sizeof(u_int32_t)) ? 0 : __p[1] + __p[2]; | |
| | | \ | |
| | | if ((u_int8_t *)(dbt)->data + __off + (writeklen) + \ | |
| | | (writedlen) > (u_int8_t *)(__p - 4)) { \ | |
| | | writekey = NULL; \ | |
| | | writedata = NULL; \ | |
| | | } else { \ | |
| | | writekey = (u_int8_t *)(dbt)->data + __off; \ | |
| | | __p[0] = __off; \ | |
| | | __p[-1] = (u_int32_t)(writeklen); \ | |
| | | __p -= 2; \ | |
| | | __off += (u_int32_t)(writeklen); \ | |
| | | writedata = (u_int8_t *)(dbt)->data + __off; \ | |
| | | __p[0] = __off; \ | |
| | | __p[-1] = (u_int32_t)(writedlen); \ | |
| | | __p[-2] = (u_int32_t)-1; \ | |
| | | pointer = __p - 2; \ | |
| | | } \ | |
| | | } while (0) | |
| | | | |
| | | #define DB_MULTIPLE_KEY_WRITE_NEXT(pointer, dbt, writekey, writeklen, write | |
| | | data, writedlen) \ | |
| | | do { \ | |
| | | void *__destk, *__destd; \ | |
| | | DB_MULTIPLE_KEY_RESERVE_NEXT((pointer), (dbt), \ | |
| | | __destk, (writeklen), __destd, (writedlen)); \ | |
| | | if (__destk == NULL) \ | |
| | | pointer = NULL; \ | |
| | | else { \ | |
| | | memcpy(__destk, (writekey), (writeklen)); \ | |
| | | if (__destd != NULL) \ | |
| | | memcpy(__destd, (writedata), (writedlen));\ | |
| | | } \ | |
| | | } while (0) | |
| | | | |
| | | #define DB_MULTIPLE_RECNO_WRITE_INIT(pointer, dbt) \ | |
| | | do { \ | |
| | | (dbt)->flags |= DB_DBT_BULK; \ | |
| | | pointer = (u_int8_t *)(dbt)->data + \ | |
| | | (dbt)->ulen - sizeof(u_int32_t); \ | |
| | | *(u_int32_t *)(pointer) = 0; \ | |
| | | } while (0) | |
| | | | |
| | | #define DB_MULTIPLE_RECNO_RESERVE_NEXT(pointer, dbt, recno, writedata, writ | |
| | | edlen) \ | |
| | | do { \ | |
| | | u_int32_t *__p = (u_int32_t *)(pointer); \ | |
| | | u_int32_t __off = ((pointer) == (u_int8_t *)(dbt)->data +\ | |
| | | (dbt)->ulen - sizeof(u_int32_t)) ? 0 : __p[1] + __p[2]; | |
| | | \ | |
| | | if (((u_int8_t *)(dbt)->data + __off) + (writedlen) > \ | |
| | | (u_int8_t *)(__p - 3)) \ | |
| | | writedata = NULL; \ | |
| | | else { \ | |
| | | writedata = (u_int8_t *)(dbt)->data + __off; \ | |
| | | __p[0] = (u_int32_t)(recno); \ | |
| | | __p[-1] = __off; \ | |
| | | __p[-2] = (u_int32_t)(writedlen); \ | |
| | | __p[-3] = 0; \ | |
| | | pointer = __p - 3; \ | |
| | | } \ | |
| | | } while (0) | |
| | | | |
| | | #define DB_MULTIPLE_RECNO_WRITE_NEXT(pointer, dbt, recno, writedata, writed | |
| | | len)\ | |
| | | do { \ | |
| | | void *__destd; \ | |
| | | DB_MULTIPLE_RECNO_RESERVE_NEXT((pointer), (dbt), \ | |
| | | (recno), __destd, (writedlen)); \ | |
| | | if (__destd == NULL) \ | |
| | | pointer = NULL; \ | |
| | | else if ((writedlen) != 0) \ | |
| | | memcpy(__destd, (writedata), (writedlen)); \ | |
| } while (0) | | } while (0) | |
| | | | |
| /******************************************************* | | /******************************************************* | |
| * Access method cursors. | | * Access method cursors. | |
| *******************************************************/ | | *******************************************************/ | |
| struct __dbc { | | struct __dbc { | |
| DB *dbp; /* Backing database */ | | DB *dbp; /* Backing database */ | |
| DB_ENV *dbenv; /* Backing environment */ | | DB_ENV *dbenv; /* Backing environment */ | |
| ENV *env; /* Backing environment */ | | ENV *env; /* Backing environment */ | |
| | | | |
| | | | |
| skipping to change at line 1623 | | skipping to change at line 1856 | |
| * !!! | | * !!! | |
| * Explicit representations of structures from queue.h. | | * Explicit representations of structures from queue.h. | |
| * TAILQ_ENTRY(__dbc) links; | | * TAILQ_ENTRY(__dbc) links; | |
| */ | | */ | |
| struct { | | struct { | |
| DBC *tqe_next; | | DBC *tqe_next; | |
| DBC **tqe_prev; | | DBC **tqe_prev; | |
| } links; | | } links; | |
| | | | |
| /* | | /* | |
|
| | | * Cursor queue of the owning transaction. | |
| | | * | |
| | | * !!! | |
| | | * Explicit representations of structures from queue.h. | |
| | | * TAILQ_ENTRY(__dbc) txn_cursors; | |
| | | */ | |
| | | struct { | |
| | | DBC *tqe_next; /* next element */ | |
| | | DBC **tqe_prev; /* address of previous next element */ | |
| | | } txn_cursors; | |
| | | | |
| | | /* | |
| * The DBT *'s below are used by the cursor routines to return | | * The DBT *'s below are used by the cursor routines to return | |
| * data to the user when DBT flags indicate that DB should manage | | * data to the user when DBT flags indicate that DB should manage | |
| * the returned memory. They point at a DBT containing the buffer | | * the returned memory. They point at a DBT containing the buffer | |
| * and length that will be used, and "belonging" to the handle that | | * and length that will be used, and "belonging" to the handle that | |
| * should "own" this memory. This may be a "my_*" field of this | | * should "own" this memory. This may be a "my_*" field of this | |
| * cursor--the default--or it may be the corresponding field of | | * cursor--the default--or it may be the corresponding field of | |
| * another cursor, a DB handle, a join cursor, etc. In general, it | | * another cursor, a DB handle, a join cursor, etc. In general, it | |
| * will be whatever handle the user originally used for the current | | * will be whatever handle the user originally used for the current | |
| * DB interface call. | | * DB interface call. | |
| */ | | */ | |
| | | | |
| skipping to change at line 1655 | | skipping to change at line 1900 | |
| DB_LOCK mylock; /* CDB lock held on this cursor. */ | | DB_LOCK mylock; /* CDB lock held on this cursor. */ | |
| | | | |
| u_int cl_id; /* Remote client id. */ | | u_int cl_id; /* Remote client id. */ | |
| | | | |
| DBTYPE dbtype; /* Cursor type. */ | | DBTYPE dbtype; /* Cursor type. */ | |
| | | | |
| DBC_INTERNAL *internal; /* Access method private. */ | | DBC_INTERNAL *internal; /* Access method private. */ | |
| | | | |
| /* DBC PUBLIC HANDLE LIST BEGIN */ | | /* DBC PUBLIC HANDLE LIST BEGIN */ | |
| int (*close) __P((DBC *)); | | int (*close) __P((DBC *)); | |
|
| | | int (*cmp) __P((DBC *, DBC *, int *, u_int32_t)); | |
| int (*count) __P((DBC *, db_recno_t *, u_int32_t)); | | int (*count) __P((DBC *, db_recno_t *, u_int32_t)); | |
| int (*del) __P((DBC *, u_int32_t)); | | int (*del) __P((DBC *, u_int32_t)); | |
| int (*dup) __P((DBC *, DBC **, u_int32_t)); | | int (*dup) __P((DBC *, DBC **, u_int32_t)); | |
| int (*get) __P((DBC *, DBT *, DBT *, u_int32_t)); | | int (*get) __P((DBC *, DBT *, DBT *, u_int32_t)); | |
| int (*get_priority) __P((DBC *, DB_CACHE_PRIORITY *)); | | int (*get_priority) __P((DBC *, DB_CACHE_PRIORITY *)); | |
| int (*pget) __P((DBC *, DBT *, DBT *, DBT *, u_int32_t)); | | int (*pget) __P((DBC *, DBT *, DBT *, DBT *, u_int32_t)); | |
| int (*put) __P((DBC *, DBT *, DBT *, u_int32_t)); | | int (*put) __P((DBC *, DBT *, DBT *, u_int32_t)); | |
| int (*set_priority) __P((DBC *, DB_CACHE_PRIORITY)); | | int (*set_priority) __P((DBC *, DB_CACHE_PRIORITY)); | |
| /* DBC PUBLIC HANDLE LIST END */ | | /* DBC PUBLIC HANDLE LIST END */ | |
| | | | |
| | | | |
| skipping to change at line 1677 | | skipping to change at line 1923 | |
| int (*c_count) __P((DBC *, db_recno_t *, u_int32_t)); | | int (*c_count) __P((DBC *, db_recno_t *, u_int32_t)); | |
| int (*c_del) __P((DBC *, u_int32_t)); | | int (*c_del) __P((DBC *, u_int32_t)); | |
| int (*c_dup) __P((DBC *, DBC **, u_int32_t)); | | int (*c_dup) __P((DBC *, DBC **, u_int32_t)); | |
| int (*c_get) __P((DBC *, DBT *, DBT *, u_int32_t)); | | int (*c_get) __P((DBC *, DBT *, DBT *, u_int32_t)); | |
| int (*c_pget) __P((DBC *, DBT *, DBT *, DBT *, u_int32_t)); | | int (*c_pget) __P((DBC *, DBT *, DBT *, DBT *, u_int32_t)); | |
| int (*c_put) __P((DBC *, DBT *, DBT *, u_int32_t)); | | int (*c_put) __P((DBC *, DBT *, DBT *, u_int32_t)); | |
| | | | |
| /* DBC PRIVATE HANDLE LIST BEGIN */ | | /* DBC PRIVATE HANDLE LIST BEGIN */ | |
| int (*am_bulk) __P((DBC *, DBT *, u_int32_t)); | | int (*am_bulk) __P((DBC *, DBT *, u_int32_t)); | |
| int (*am_close) __P((DBC *, db_pgno_t, int *)); | | int (*am_close) __P((DBC *, db_pgno_t, int *)); | |
|
| int (*am_del) __P((DBC *)); | | int (*am_del) __P((DBC *, u_int32_t)); | |
| int (*am_destroy) __P((DBC *)); | | int (*am_destroy) __P((DBC *)); | |
| int (*am_get) __P((DBC *, DBT *, DBT *, u_int32_t, db_pgno_t *)); | | int (*am_get) __P((DBC *, DBT *, DBT *, u_int32_t, db_pgno_t *)); | |
| int (*am_put) __P((DBC *, DBT *, DBT *, u_int32_t, db_pgno_t *)); | | int (*am_put) __P((DBC *, DBT *, DBT *, u_int32_t, db_pgno_t *)); | |
| int (*am_writelock) __P((DBC *)); | | int (*am_writelock) __P((DBC *)); | |
| /* DBC PRIVATE HANDLE LIST END */ | | /* DBC PRIVATE HANDLE LIST END */ | |
| | | | |
| /* | | /* | |
| * DBC_DONTLOCK and DBC_RECOVER are used during recovery and transaction | | * DBC_DONTLOCK and DBC_RECOVER are used during recovery and transaction | |
| * abort. If a transaction is being aborted or recovered then DBC_RECOVER | | * abort. If a transaction is being aborted or recovered then DBC_RECOVER | |
| * will be set and locking and logging will be disabled on this cursor. If | | * will be set and locking and logging will be disabled on this cursor. If | |
| * we are performing a compensating transaction (e.g. free page processing) | | * we are performing a compensating transaction (e.g. free page processing) | |
| * then DB_DONTLOCK will be set to inhibit locking, but logging will still | | * then DB_DONTLOCK will be set to inhibit locking, but logging will still | |
| * be required. DB_DONTLOCK is also used if the whole database is locked. | | * be required. DB_DONTLOCK is also used if the whole database is locked. | |
| */ | | */ | |
|
| #define DBC_ACTIVE 0x0001 /* Cursor in use. */ | | #define DBC_ACTIVE 0x00001 /* Cursor in use. */ | |
| #define DBC_DONTLOCK 0x0002 /* Don't lock on this cursor | | #define DBC_BULK 0x00002 /* Bulk update cursor. */ | |
| . */ | | #define DBC_DONTLOCK 0x00004 /* Don't lock on this cursor | |
| #define DBC_DUPLICATE 0x0004 /* Create a duplicate cursor | | . */ | |
| . */ | | #define DBC_DOWNREV 0x00008 /* Down rev replication mast | |
| #define DBC_MULTIPLE 0x0008 /* Return Multiple data. */ | | er. */ | |
| #define DBC_MULTIPLE_KEY 0x0010 /* Return Multiple keys and | | #define DBC_DUPLICATE 0x00010 /* Create a duplicate cursor | |
| data. */ | | . */ | |
| #define DBC_OPD 0x0020 /* Cursor references off-pag | | #define DBC_FAMILY 0x00020 /* Part of a locker family. | |
| e dups. */ | | */ | |
| #define DBC_OWN_LID 0x0040 /* Free lock id on destroy. | | #define DBC_FROM_DB_GET 0x00040 /* Called from the DB->get() | |
| */ | | method. */ | |
| #define DBC_READ_COMMITTED 0x0080 /* Cursor has degree 2 isola | | #define DBC_MULTIPLE 0x00080 /* Return Multiple data. */ | |
| tion. */ | | #define DBC_MULTIPLE_KEY 0x00100 /* Return Multiple keys and | |
| #define DBC_READ_UNCOMMITTED 0x0100 /* Cursor has degree 1 isola | | data. */ | |
| tion. */ | | #define DBC_OPD 0x00200 /* Cursor references off-pag | |
| #define DBC_RECOVER 0x0200 /* Recovery cursor; don't lo | | e dups. */ | |
| g/lock. */ | | #define DBC_OWN_LID 0x00400 /* Free lock id on destroy. | |
| #define DBC_RMW 0x0400 /* Acquire write flag in rea | | */ | |
| d op. */ | | #define DBC_PARTITIONED 0x00800 /* Cursor for a partitioned | |
| #define DBC_TRANSIENT 0x0800 /* Cursor is transient. */ | | db. */ | |
| #define DBC_WRITECURSOR 0x1000 /* Cursor may be used to wri | | #define DBC_READ_COMMITTED 0x01000 /* Cursor has degree 2 isola | |
| te (CDB). */ | | tion. */ | |
| #define DBC_WRITER 0x2000 /* Cursor immediately writin | | #define DBC_READ_UNCOMMITTED 0x02000 /* Cursor has degree 1 isola | |
| g (CDB). */ | | tion. */ | |
| | | #define DBC_RECOVER 0x04000 /* Recovery cursor; don't lo | |
| | | g/lock. */ | |
| | | #define DBC_RMW 0x08000 /* Acquire write flag in rea | |
| | | d op. */ | |
| | | #define DBC_TRANSIENT 0x10000 /* Cursor is transient. */ | |
| | | #define DBC_WAS_READ_COMMITTED 0x20000 /* Cursor holds a read commi | |
| | | ted lock. */ | |
| | | #define DBC_WRITECURSOR 0x40000 /* Cursor may be used to wri | |
| | | te (CDB). */ | |
| | | #define DBC_WRITER 0x80000 /* Cursor immediately writin | |
| | | g (CDB). */ | |
| u_int32_t flags; | | u_int32_t flags; | |
| }; | | }; | |
| | | | |
| /* Key range statistics structure */ | | /* Key range statistics structure */ | |
| struct __key_range { | | struct __key_range { | |
| double less; | | double less; | |
| double equal; | | double equal; | |
| double greater; | | double greater; | |
| }; | | }; | |
| | | | |
| | | | |
| skipping to change at line 1735 | | skipping to change at line 1987 | |
| u_int32_t bt_minkey; /* Minkey value. */ | | u_int32_t bt_minkey; /* Minkey value. */ | |
| u_int32_t bt_re_len; /* Fixed-length record length. */ | | u_int32_t bt_re_len; /* Fixed-length record length. */ | |
| u_int32_t bt_re_pad; /* Fixed-length record pad. */ | | u_int32_t bt_re_pad; /* Fixed-length record pad. */ | |
| u_int32_t bt_levels; /* Tree levels. */ | | u_int32_t bt_levels; /* Tree levels. */ | |
| u_int32_t bt_int_pg; /* Internal pages. */ | | u_int32_t bt_int_pg; /* Internal pages. */ | |
| u_int32_t bt_leaf_pg; /* Leaf pages. */ | | u_int32_t bt_leaf_pg; /* Leaf pages. */ | |
| u_int32_t bt_dup_pg; /* Duplicate pages. */ | | u_int32_t bt_dup_pg; /* Duplicate pages. */ | |
| u_int32_t bt_over_pg; /* Overflow pages. */ | | u_int32_t bt_over_pg; /* Overflow pages. */ | |
| u_int32_t bt_empty_pg; /* Empty pages. */ | | u_int32_t bt_empty_pg; /* Empty pages. */ | |
| u_int32_t bt_free; /* Pages on the free list. */ | | u_int32_t bt_free; /* Pages on the free list. */ | |
|
| u_int32_t bt_int_pgfree; /* Bytes free in internal pages. */ | | uintmax_t bt_int_pgfree; /* Bytes free in internal pages. */ | |
| u_int32_t bt_leaf_pgfree; /* Bytes free in leaf pages. */ | | uintmax_t bt_leaf_pgfree; /* Bytes free in leaf pages. */ | |
| u_int32_t bt_dup_pgfree; /* Bytes free in duplicate pages. */ | | uintmax_t bt_dup_pgfree; /* Bytes free in duplicate pages. */ | |
| u_int32_t bt_over_pgfree; /* Bytes free in overflow pages. */ | | uintmax_t bt_over_pgfree; /* Bytes free in overflow pages. */ | |
| }; | | }; | |
| | | | |
| struct __db_compact { | | struct __db_compact { | |
| /* Input Parameters. */ | | /* Input Parameters. */ | |
| u_int32_t compact_fillpercent; /* Desired fillfactor: 1-100
*/ | | u_int32_t compact_fillpercent; /* Desired fillfactor: 1-100
*/ | |
| db_timeout_t compact_timeout; /* Lock timeout. */ | | db_timeout_t compact_timeout; /* Lock timeout. */ | |
| u_int32_t compact_pages; /* Max pages to process. */ | | u_int32_t compact_pages; /* Max pages to process. */ | |
| /* Output Stats. */ | | /* Output Stats. */ | |
|
| | | u_int32_t compact_empty_buckets; /* Empty hash buckets found.
*/ | |
| u_int32_t compact_pages_free; /* Number of pages freed. */ | | u_int32_t compact_pages_free; /* Number of pages freed. */ | |
| u_int32_t compact_pages_examine; /* Number of pages examine.
*/ | | u_int32_t compact_pages_examine; /* Number of pages examine.
*/ | |
| u_int32_t compact_levels; /* Number of levels removed.
*/ | | u_int32_t compact_levels; /* Number of levels removed.
*/ | |
| u_int32_t compact_deadlock; /* Number of deadlocks. */ | | u_int32_t compact_deadlock; /* Number of deadlocks. */ | |
| db_pgno_t compact_pages_truncated; /* Pages truncated to OS. *
/ | | db_pgno_t compact_pages_truncated; /* Pages truncated to OS. *
/ | |
| /* Internal. */ | | /* Internal. */ | |
| db_pgno_t compact_truncate; /* Page number for truncatio
n */ | | db_pgno_t compact_truncate; /* Page number for truncatio
n */ | |
| }; | | }; | |
| | | | |
| /* Hash statistics structure. */ | | /* Hash statistics structure. */ | |
| | | | |
| skipping to change at line 1768 | | skipping to change at line 2021 | |
| u_int32_t hash_magic; /* Magic number. */ | | u_int32_t hash_magic; /* Magic number. */ | |
| u_int32_t hash_version; /* Version number. */ | | u_int32_t hash_version; /* Version number. */ | |
| u_int32_t hash_metaflags; /* Metadata flags. */ | | u_int32_t hash_metaflags; /* Metadata flags. */ | |
| u_int32_t hash_nkeys; /* Number of unique keys. */ | | u_int32_t hash_nkeys; /* Number of unique keys. */ | |
| u_int32_t hash_ndata; /* Number of data items. */ | | u_int32_t hash_ndata; /* Number of data items. */ | |
| u_int32_t hash_pagecnt; /* Page count. */ | | u_int32_t hash_pagecnt; /* Page count. */ | |
| u_int32_t hash_pagesize; /* Page size. */ | | u_int32_t hash_pagesize; /* Page size. */ | |
| u_int32_t hash_ffactor; /* Fill factor specified at create.
*/ | | u_int32_t hash_ffactor; /* Fill factor specified at create.
*/ | |
| u_int32_t hash_buckets; /* Number of hash buckets. */ | | u_int32_t hash_buckets; /* Number of hash buckets. */ | |
| u_int32_t hash_free; /* Pages on the free list. */ | | u_int32_t hash_free; /* Pages on the free list. */ | |
|
| u_int32_t hash_bfree; /* Bytes free on bucket pages. */ | | uintmax_t hash_bfree; /* Bytes free on bucket pages. */ | |
| u_int32_t hash_bigpages; /* Number of big key/data pages. */ | | u_int32_t hash_bigpages; /* Number of big key/data pages. */ | |
|
| u_int32_t hash_big_bfree; /* Bytes free on big item pages. */ | | uintmax_t hash_big_bfree; /* Bytes free on big item pages. */ | |
| u_int32_t hash_overflows; /* Number of overflow pages. */ | | u_int32_t hash_overflows; /* Number of overflow pages. */ | |
|
| u_int32_t hash_ovfl_free; /* Bytes free on ovfl pages. */ | | uintmax_t hash_ovfl_free; /* Bytes free on ovfl pages. */ | |
| u_int32_t hash_dup; /* Number of dup pages. */ | | u_int32_t hash_dup; /* Number of dup pages. */ | |
|
| u_int32_t hash_dup_free; /* Bytes free on duplicate pages. */ | | uintmax_t hash_dup_free; /* Bytes free on duplicate pages. */ | |
| }; | | }; | |
| | | | |
| /* Queue statistics structure. */ | | /* Queue statistics structure. */ | |
| struct __db_qam_stat { | | struct __db_qam_stat { | |
| u_int32_t qs_magic; /* Magic number. */ | | u_int32_t qs_magic; /* Magic number. */ | |
| u_int32_t qs_version; /* Version number. */ | | u_int32_t qs_version; /* Version number. */ | |
| u_int32_t qs_metaflags; /* Metadata flags. */ | | u_int32_t qs_metaflags; /* Metadata flags. */ | |
| u_int32_t qs_nkeys; /* Number of unique keys. */ | | u_int32_t qs_nkeys; /* Number of unique keys. */ | |
| u_int32_t qs_ndata; /* Number of data items. */ | | u_int32_t qs_ndata; /* Number of data items. */ | |
| u_int32_t qs_pagesize; /* Page size. */ | | u_int32_t qs_pagesize; /* Page size. */ | |
| | | | |
| skipping to change at line 1846 | | skipping to change at line 2099 | |
| void *(*db_malloc) __P((size_t)); | | void *(*db_malloc) __P((size_t)); | |
| void *(*db_realloc) __P((void *, size_t)); | | void *(*db_realloc) __P((void *, size_t)); | |
| int (*is_alive) __P((DB_ENV *, pid_t, db_threadid_t, u_int32_t)); | | int (*is_alive) __P((DB_ENV *, pid_t, db_threadid_t, u_int32_t)); | |
| void (*thread_id) __P((DB_ENV *, pid_t *, db_threadid_t *)); | | void (*thread_id) __P((DB_ENV *, pid_t *, db_threadid_t *)); | |
| char *(*thread_id_string) __P((DB_ENV *, pid_t, db_threadid_t, char
*)); | | char *(*thread_id_string) __P((DB_ENV *, pid_t, db_threadid_t, char
*)); | |
| | | | |
| /* Application specified paths */ | | /* Application specified paths */ | |
| char *db_log_dir; /* Database log file directory */ | | char *db_log_dir; /* Database log file directory */ | |
| char *db_tmp_dir; /* Database tmp file directory */ | | char *db_tmp_dir; /* Database tmp file directory */ | |
| | | | |
|
| | | char *db_create_dir; /* Create directory for data files *
/ | |
| char **db_data_dir; /* Database data file directories */ | | char **db_data_dir; /* Database data file directories */ | |
| int data_cnt; /* Database data file slots */ | | int data_cnt; /* Database data file slots */ | |
| int data_next; /* Next database data file slot */ | | int data_next; /* Next database data file slot */ | |
| | | | |
| char *intermediate_dir_mode; /* Intermediate directory perms */ | | char *intermediate_dir_mode; /* Intermediate directory perms */ | |
| | | | |
| long shm_key; /* shmget key */ | | long shm_key; /* shmget key */ | |
| | | | |
| char *passwd; /* Cryptography support */ | | char *passwd; /* Cryptography support */ | |
| size_t passwd_len; | | size_t passwd_len; | |
| | | | |
| skipping to change at line 1899 | | skipping to change at line 2153 | |
| | | | |
| /* Memory pool configuration */ | | /* Memory pool configuration */ | |
| u_int32_t mp_gbytes; /* Cache size: GB */ | | u_int32_t mp_gbytes; /* Cache size: GB */ | |
| u_int32_t mp_bytes; /* Cache size: bytes */ | | u_int32_t mp_bytes; /* Cache size: bytes */ | |
| u_int32_t mp_max_gbytes; /* Maximum cache size: GB */ | | u_int32_t mp_max_gbytes; /* Maximum cache size: GB */ | |
| u_int32_t mp_max_bytes; /* Maximum cache size: bytes */ | | u_int32_t mp_max_bytes; /* Maximum cache size: bytes */ | |
| size_t mp_mmapsize; /* Maximum file size for mmap */ | | size_t mp_mmapsize; /* Maximum file size for mmap */ | |
| int mp_maxopenfd; /* Maximum open file descriptors */ | | int mp_maxopenfd; /* Maximum open file descriptors */ | |
| int mp_maxwrite; /* Maximum buffers to write */ | | int mp_maxwrite; /* Maximum buffers to write */ | |
| u_int mp_ncache; /* Initial number of cache regions *
/ | | u_int mp_ncache; /* Initial number of cache regions *
/ | |
|
| | | u_int32_t mp_pagesize; /* Average page size */ | |
| | | u_int32_t mp_tablesize; /* Approximate hash table size */ | |
| /* Sleep after writing max buffers *
/ | | /* Sleep after writing max buffers *
/ | |
| db_timeout_t mp_maxwrite_sleep; | | db_timeout_t mp_maxwrite_sleep; | |
| | | | |
| /* Transaction configuration */ | | /* Transaction configuration */ | |
| u_int32_t tx_max; /* Maximum number of transactions */ | | u_int32_t tx_max; /* Maximum number of transactions */ | |
| time_t tx_timestamp; /* Recover to specific timestamp */ | | time_t tx_timestamp; /* Recover to specific timestamp */ | |
| db_timeout_t tx_timeout; /* Timeout for transactions */ | | db_timeout_t tx_timeout; /* Timeout for transactions */ | |
| | | | |
| /* Thread tracking configuration */ | | /* Thread tracking configuration */ | |
| u_int32_t thr_max; /* Thread count */ | | u_int32_t thr_max; /* Thread count */ | |
| | | | |
| skipping to change at line 1920 | | skipping to change at line 2176 | |
| /* | | /* | |
| * The following fields are not strictly user-owned, but they outliv
e | | * The following fields are not strictly user-owned, but they outliv
e | |
| * the ENV structure, and so are stored here. | | * the ENV structure, and so are stored here. | |
| */ | | */ | |
| DB_FH *registry; /* DB_REGISTER file handle */ | | DB_FH *registry; /* DB_REGISTER file handle */ | |
| u_int32_t registry_off; /* | | u_int32_t registry_off; /* | |
| * Offset of our slot. We can't use | | * Offset of our slot. We can't use | |
| * off_t because its size depends on | | * off_t because its size depends on | |
| * build settings. | | * build settings. | |
| */ | | */ | |
|
| | | db_timeout_t envreg_timeout; /* DB_REGISTER wait timeout */ | |
| | | | |
| #define DB_ENV_AUTO_COMMIT 0x00000001 /* DB_AUTO_COMMIT */ | | #define DB_ENV_AUTO_COMMIT 0x00000001 /* DB_AUTO_COMMIT */ | |
| #define DB_ENV_CDB_ALLDB 0x00000002 /* CDB environment wide l
ocking */ | | #define DB_ENV_CDB_ALLDB 0x00000002 /* CDB environment wide l
ocking */ | |
|
| #define DB_ENV_DIRECT_DB 0x00000004 /* DB_DIRECT_DB set */ | | #define DB_ENV_FAILCHK 0x00000004 /* Failchk is running */ | |
| #define DB_ENV_DSYNC_DB 0x00000008 /* DB_DSYNC_DB set */ | | #define DB_ENV_DIRECT_DB 0x00000008 /* DB_DIRECT_DB set */ | |
| #define DB_ENV_MULTIVERSION 0x00000010 /* DB_MULTIVERSION set */ | | #define DB_ENV_DSYNC_DB 0x00000010 /* DB_DSYNC_DB set */ | |
| #define DB_ENV_NOLOCKING 0x00000020 /* DB_NOLOCKING set */ | | #define DB_ENV_MULTIVERSION 0x00000020 /* DB_MULTIVERSION set */ | |
| #define DB_ENV_NOMMAP 0x00000040 /* DB_NOMMAP set */ | | #define DB_ENV_NOLOCKING 0x00000040 /* DB_NOLOCKING set */ | |
| #define DB_ENV_NOPANIC 0x00000080 /* Okay if panic set */ | | #define DB_ENV_NOMMAP 0x00000080 /* DB_NOMMAP set */ | |
| #define DB_ENV_OVERWRITE 0x00000100 /* DB_OVERWRITE set */ | | #define DB_ENV_NOPANIC 0x00000100 /* Okay if panic set */ | |
| #define DB_ENV_REGION_INIT 0x00000200 /* DB_REGION_INIT set */ | | #define DB_ENV_OVERWRITE 0x00000200 /* DB_OVERWRITE set */ | |
| #define DB_ENV_RPCCLIENT 0x00000400 /* DB_RPCCLIENT set */ | | #define DB_ENV_REGION_INIT 0x00000400 /* DB_REGION_INIT set */ | |
| #define DB_ENV_RPCCLIENT_GIVEN 0x00000800 /* User-supplied RPC clie | | #define DB_ENV_RPCCLIENT 0x00000800 /* DB_RPCCLIENT set */ | |
| nt struct */ | | #define DB_ENV_RPCCLIENT_GIVEN 0x00001000 /* User-supplied RPC clie | |
| #define DB_ENV_TIME_NOTGRANTED 0x00001000 /* DB_TIME_NOTGRANTED set | | nt struct */ | |
| */ | | #define DB_ENV_TIME_NOTGRANTED 0x00002000 /* DB_TIME_NOTGRANTED set | |
| #define DB_ENV_TXN_NOSYNC 0x00002000 /* DB_TXN_NOSYNC set */ | | */ | |
| #define DB_ENV_TXN_NOWAIT 0x00004000 /* DB_TXN_NOWAIT set */ | | #define DB_ENV_TXN_NOSYNC 0x00004000 /* DB_TXN_NOSYNC set */ | |
| #define DB_ENV_TXN_SNAPSHOT 0x00008000 /* DB_TXN_SNAPSHOT set */ | | #define DB_ENV_TXN_NOWAIT 0x00008000 /* DB_TXN_NOWAIT set */ | |
| #define DB_ENV_TXN_WRITE_NOSYNC 0x00010000 /* DB_TXN_WRITE_NOSYNC se | | #define DB_ENV_TXN_SNAPSHOT 0x00010000 /* DB_TXN_SNAPSHOT set */ | |
| t */ | | #define DB_ENV_TXN_WRITE_NOSYNC 0x00020000 /* DB_TXN_WRITE_NOSYNC se | |
| #define DB_ENV_YIELDCPU 0x00020000 /* DB_YIELDCPU set */ | | t */ | |
| | | #define DB_ENV_YIELDCPU 0x00040000 /* DB_YIELDCPU set */ | |
| u_int32_t flags; | | u_int32_t flags; | |
| | | | |
| /* DB_ENV PUBLIC HANDLE LIST BEGIN */ | | /* DB_ENV PUBLIC HANDLE LIST BEGIN */ | |
|
| | | int (*add_data_dir) __P((DB_ENV *, const char *)); | |
| int (*cdsgroup_begin) __P((DB_ENV *, DB_TXN **)); | | int (*cdsgroup_begin) __P((DB_ENV *, DB_TXN **)); | |
| int (*close) __P((DB_ENV *, u_int32_t)); | | int (*close) __P((DB_ENV *, u_int32_t)); | |
| int (*dbremove) __P((DB_ENV *, | | int (*dbremove) __P((DB_ENV *, | |
| DB_TXN *, const char *, const char *, u_int32_t)); | | DB_TXN *, const char *, const char *, u_int32_t)); | |
| int (*dbrename) __P((DB_ENV *, | | int (*dbrename) __P((DB_ENV *, | |
| DB_TXN *, const char *, const char *, const char *, u_int32_
t)); | | DB_TXN *, const char *, const char *, const char *, u_int32_
t)); | |
| void (*err) __P((const DB_ENV *, int, const char *, ...)); | | void (*err) __P((const DB_ENV *, int, const char *, ...)); | |
| void (*errx) __P((const DB_ENV *, const char *, ...)); | | void (*errx) __P((const DB_ENV *, const char *, ...)); | |
| int (*failchk) __P((DB_ENV *, u_int32_t)); | | int (*failchk) __P((DB_ENV *, u_int32_t)); | |
| int (*fileid_reset) __P((DB_ENV *, const char *, u_int32_t)); | | int (*fileid_reset) __P((DB_ENV *, const char *, u_int32_t)); | |
|
| | | int (*get_alloc) __P((DB_ENV *, void *(**)(size_t), | |
| | | void *(**)(void *, size_t), void (**)(void *))); | |
| | | int (*get_app_dispatch) | |
| | | __P((DB_ENV *, int (**)(DB_ENV *, DBT *, DB_LSN *, db_recops | |
| | | ))); | |
| int (*get_cache_max) __P((DB_ENV *, u_int32_t *, u_int32_t *)); | | int (*get_cache_max) __P((DB_ENV *, u_int32_t *, u_int32_t *)); | |
| int (*get_cachesize) __P((DB_ENV *, u_int32_t *, u_int32_t *, int *
)); | | int (*get_cachesize) __P((DB_ENV *, u_int32_t *, u_int32_t *, int *
)); | |
|
| | | int (*get_create_dir) __P((DB_ENV *, const char **)); | |
| int (*get_data_dirs) __P((DB_ENV *, const char ***)); | | int (*get_data_dirs) __P((DB_ENV *, const char ***)); | |
| int (*get_encrypt_flags) __P((DB_ENV *, u_int32_t *)); | | int (*get_encrypt_flags) __P((DB_ENV *, u_int32_t *)); | |
| void (*get_errcall) __P((DB_ENV *, | | void (*get_errcall) __P((DB_ENV *, | |
| void (**)(const DB_ENV *, const char *, const char *))); | | void (**)(const DB_ENV *, const char *, const char *))); | |
| void (*get_errfile) __P((DB_ENV *, FILE **)); | | void (*get_errfile) __P((DB_ENV *, FILE **)); | |
| void (*get_errpfx) __P((DB_ENV *, const char **)); | | void (*get_errpfx) __P((DB_ENV *, const char **)); | |
| int (*get_flags) __P((DB_ENV *, u_int32_t *)); | | int (*get_flags) __P((DB_ENV *, u_int32_t *)); | |
|
| | | int (*get_feedback) __P((DB_ENV *, void (**)(DB_ENV *, int, int))); | |
| int (*get_home) __P((DB_ENV *, const char **)); | | int (*get_home) __P((DB_ENV *, const char **)); | |
| int (*get_intermediate_dir_mode) __P((DB_ENV *, const char **)); | | int (*get_intermediate_dir_mode) __P((DB_ENV *, const char **)); | |
|
| | | int (*get_isalive) __P((DB_ENV *, | |
| | | int (**)(DB_ENV *, pid_t, db_threadid_t, u_int32_t))); | |
| int (*get_lg_bsize) __P((DB_ENV *, u_int32_t *)); | | int (*get_lg_bsize) __P((DB_ENV *, u_int32_t *)); | |
| int (*get_lg_dir) __P((DB_ENV *, const char **)); | | int (*get_lg_dir) __P((DB_ENV *, const char **)); | |
| int (*get_lg_filemode) __P((DB_ENV *, int *)); | | int (*get_lg_filemode) __P((DB_ENV *, int *)); | |
| int (*get_lg_max) __P((DB_ENV *, u_int32_t *)); | | int (*get_lg_max) __P((DB_ENV *, u_int32_t *)); | |
| int (*get_lg_regionmax) __P((DB_ENV *, u_int32_t *)); | | int (*get_lg_regionmax) __P((DB_ENV *, u_int32_t *)); | |
| int (*get_lk_conflicts) __P((DB_ENV *, const u_int8_t **, int *)); | | int (*get_lk_conflicts) __P((DB_ENV *, const u_int8_t **, int *)); | |
| int (*get_lk_detect) __P((DB_ENV *, u_int32_t *)); | | int (*get_lk_detect) __P((DB_ENV *, u_int32_t *)); | |
| int (*get_lk_max_lockers) __P((DB_ENV *, u_int32_t *)); | | int (*get_lk_max_lockers) __P((DB_ENV *, u_int32_t *)); | |
| int (*get_lk_max_locks) __P((DB_ENV *, u_int32_t *)); | | int (*get_lk_max_locks) __P((DB_ENV *, u_int32_t *)); | |
| int (*get_lk_max_objects) __P((DB_ENV *, u_int32_t *)); | | int (*get_lk_max_objects) __P((DB_ENV *, u_int32_t *)); | |
| int (*get_lk_partitions) __P((DB_ENV *, u_int32_t *)); | | int (*get_lk_partitions) __P((DB_ENV *, u_int32_t *)); | |
|
| | | int (*get_lk_priority) __P((DB_ENV *, u_int32_t, u_int32_t *)); | |
| int (*get_mp_max_openfd) __P((DB_ENV *, int *)); | | int (*get_mp_max_openfd) __P((DB_ENV *, int *)); | |
| int (*get_mp_max_write) __P((DB_ENV *, int *, db_timeout_t *)); | | int (*get_mp_max_write) __P((DB_ENV *, int *, db_timeout_t *)); | |
| int (*get_mp_mmapsize) __P((DB_ENV *, size_t *)); | | int (*get_mp_mmapsize) __P((DB_ENV *, size_t *)); | |
|
| | | int (*get_mp_pagesize) __P((DB_ENV *, u_int32_t *)); | |
| | | int (*get_mp_tablesize) __P((DB_ENV *, u_int32_t *)); | |
| | | void (*get_msgcall) | |
| | | __P((DB_ENV *, void (**)(const DB_ENV *, const char *))); | |
| void (*get_msgfile) __P((DB_ENV *, FILE **)); | | void (*get_msgfile) __P((DB_ENV *, FILE **)); | |
| int (*get_open_flags) __P((DB_ENV *, u_int32_t *)); | | int (*get_open_flags) __P((DB_ENV *, u_int32_t *)); | |
| int (*get_shm_key) __P((DB_ENV *, long *)); | | int (*get_shm_key) __P((DB_ENV *, long *)); | |
| int (*get_thread_count) __P((DB_ENV *, u_int32_t *)); | | int (*get_thread_count) __P((DB_ENV *, u_int32_t *)); | |
|
| | | int (*get_thread_id_fn) | |
| | | __P((DB_ENV *, void (**)(DB_ENV *, pid_t *, db_threadid_t *) | |
| | | )); | |
| | | int (*get_thread_id_string_fn) __P((DB_ENV *, | |
| | | char *(**)(DB_ENV *, pid_t, db_threadid_t, char *))); | |
| int (*get_timeout) __P((DB_ENV *, db_timeout_t *, u_int32_t)); | | int (*get_timeout) __P((DB_ENV *, db_timeout_t *, u_int32_t)); | |
| int (*get_tmp_dir) __P((DB_ENV *, const char **)); | | int (*get_tmp_dir) __P((DB_ENV *, const char **)); | |
| int (*get_tx_max) __P((DB_ENV *, u_int32_t *)); | | int (*get_tx_max) __P((DB_ENV *, u_int32_t *)); | |
| int (*get_tx_timestamp) __P((DB_ENV *, time_t *)); | | int (*get_tx_timestamp) __P((DB_ENV *, time_t *)); | |
| int (*get_verbose) __P((DB_ENV *, u_int32_t, int *)); | | int (*get_verbose) __P((DB_ENV *, u_int32_t, int *)); | |
| int (*is_bigendian) __P((void)); | | int (*is_bigendian) __P((void)); | |
| int (*lock_detect) __P((DB_ENV *, u_int32_t, u_int32_t, int *)); | | int (*lock_detect) __P((DB_ENV *, u_int32_t, u_int32_t, int *)); | |
| int (*lock_get) __P((DB_ENV *, | | int (*lock_get) __P((DB_ENV *, | |
|
| u_int32_t, u_int32_t, const DBT *, db_lockmode_t, DB_LOCK *)
); | | u_int32_t, u_int32_t, DBT *, db_lockmode_t, DB_LOCK *)); | |
| int (*lock_id) __P((DB_ENV *, u_int32_t *)); | | int (*lock_id) __P((DB_ENV *, u_int32_t *)); | |
| int (*lock_id_free) __P((DB_ENV *, u_int32_t)); | | int (*lock_id_free) __P((DB_ENV *, u_int32_t)); | |
| int (*lock_put) __P((DB_ENV *, DB_LOCK *)); | | int (*lock_put) __P((DB_ENV *, DB_LOCK *)); | |
| int (*lock_stat) __P((DB_ENV *, DB_LOCK_STAT **, u_int32_t)); | | int (*lock_stat) __P((DB_ENV *, DB_LOCK_STAT **, u_int32_t)); | |
| int (*lock_stat_print) __P((DB_ENV *, u_int32_t)); | | int (*lock_stat_print) __P((DB_ENV *, u_int32_t)); | |
| int (*lock_vec) __P((DB_ENV *, | | int (*lock_vec) __P((DB_ENV *, | |
| u_int32_t, u_int32_t, DB_LOCKREQ *, int, DB_LOCKREQ **)); | | u_int32_t, u_int32_t, DB_LOCKREQ *, int, DB_LOCKREQ **)); | |
| int (*log_archive) __P((DB_ENV *, char **[], u_int32_t)); | | int (*log_archive) __P((DB_ENV *, char **[], u_int32_t)); | |
| int (*log_cursor) __P((DB_ENV *, DB_LOGC **, u_int32_t)); | | int (*log_cursor) __P((DB_ENV *, DB_LOGC **, u_int32_t)); | |
| int (*log_file) __P((DB_ENV *, const DB_LSN *, char *, size_t)); | | int (*log_file) __P((DB_ENV *, const DB_LSN *, char *, size_t)); | |
| int (*log_flush) __P((DB_ENV *, const DB_LSN *)); | | int (*log_flush) __P((DB_ENV *, const DB_LSN *)); | |
| int (*log_get_config) __P((DB_ENV *, u_int32_t, int *)); | | int (*log_get_config) __P((DB_ENV *, u_int32_t, int *)); | |
| int (*log_printf) __P((DB_ENV *, DB_TXN *, const char *, ...)); | | int (*log_printf) __P((DB_ENV *, DB_TXN *, const char *, ...)); | |
| int (*log_put) __P((DB_ENV *, DB_LSN *, const DBT *, u_int32_t)); | | int (*log_put) __P((DB_ENV *, DB_LSN *, const DBT *, u_int32_t)); | |
|
| | | int (*log_put_record) __P((DB_ENV *, DB *, DB_TXN *, DB_LSN *, | |
| | | u_int32_t, u_int32_t, u_int32_t, u_int32_t, | |
| | | DB_LOG_RECSPEC *, ...)); | |
| | | int (*log_read_record) __P((DB_ENV *, DB **, | |
| | | void *, void *, DB_LOG_RECSPEC *, u_int32_t, void **)); | |
| int (*log_set_config) __P((DB_ENV *, u_int32_t, int)); | | int (*log_set_config) __P((DB_ENV *, u_int32_t, int)); | |
| int (*log_stat) __P((DB_ENV *, DB_LOG_STAT **, u_int32_t)); | | int (*log_stat) __P((DB_ENV *, DB_LOG_STAT **, u_int32_t)); | |
| int (*log_stat_print) __P((DB_ENV *, u_int32_t)); | | int (*log_stat_print) __P((DB_ENV *, u_int32_t)); | |
|
| | | int (*log_verify) __P((DB_ENV *, const DB_LOG_VERIFY_CONFIG *)); | |
| int (*lsn_reset) __P((DB_ENV *, const char *, u_int32_t)); | | int (*lsn_reset) __P((DB_ENV *, const char *, u_int32_t)); | |
| int (*memp_fcreate) __P((DB_ENV *, DB_MPOOLFILE **, u_int32_t)); | | int (*memp_fcreate) __P((DB_ENV *, DB_MPOOLFILE **, u_int32_t)); | |
| int (*memp_register) __P((DB_ENV *, int, int (*)(DB_ENV *, db_pgno_
t, | | int (*memp_register) __P((DB_ENV *, int, int (*)(DB_ENV *, db_pgno_
t, | |
| void *, DBT *), int (*)(DB_ENV *, db_pgno_t, void *, DBT *))
); | | void *, DBT *), int (*)(DB_ENV *, db_pgno_t, void *, DBT *))
); | |
| int (*memp_stat) __P((DB_ENV *, | | int (*memp_stat) __P((DB_ENV *, | |
| DB_MPOOL_STAT **, DB_MPOOL_FSTAT ***, u_int32_t)); | | DB_MPOOL_STAT **, DB_MPOOL_FSTAT ***, u_int32_t)); | |
| int (*memp_stat_print) __P((DB_ENV *, u_int32_t)); | | int (*memp_stat_print) __P((DB_ENV *, u_int32_t)); | |
| int (*memp_sync) __P((DB_ENV *, DB_LSN *)); | | int (*memp_sync) __P((DB_ENV *, DB_LSN *)); | |
| int (*memp_trickle) __P((DB_ENV *, int, int *)); | | int (*memp_trickle) __P((DB_ENV *, int, int *)); | |
| int (*mutex_alloc) __P((DB_ENV *, u_int32_t, db_mutex_t *)); | | int (*mutex_alloc) __P((DB_ENV *, u_int32_t, db_mutex_t *)); | |
| | | | |
| skipping to change at line 2073 | | skipping to change at line 2355 | |
| __P((DB_ENV *, u_int *, DB_REPMGR_SITE **)); | | __P((DB_ENV *, u_int *, DB_REPMGR_SITE **)); | |
| int (*repmgr_start) __P((DB_ENV *, int, u_int32_t)); | | int (*repmgr_start) __P((DB_ENV *, int, u_int32_t)); | |
| int (*repmgr_stat) __P((DB_ENV *, DB_REPMGR_STAT **, u_int32_t)); | | int (*repmgr_stat) __P((DB_ENV *, DB_REPMGR_STAT **, u_int32_t)); | |
| int (*repmgr_stat_print) __P((DB_ENV *, u_int32_t)); | | int (*repmgr_stat_print) __P((DB_ENV *, u_int32_t)); | |
| int (*set_alloc) __P((DB_ENV *, void *(*)(size_t), | | int (*set_alloc) __P((DB_ENV *, void *(*)(size_t), | |
| void *(*)(void *, size_t), void (*)(void *))); | | void *(*)(void *, size_t), void (*)(void *))); | |
| int (*set_app_dispatch) | | int (*set_app_dispatch) | |
| __P((DB_ENV *, int (*)(DB_ENV *, DBT *, DB_LSN *, db_recops)
)); | | __P((DB_ENV *, int (*)(DB_ENV *, DBT *, DB_LSN *, db_recops)
)); | |
| int (*set_cache_max) __P((DB_ENV *, u_int32_t, u_int32_t)); | | int (*set_cache_max) __P((DB_ENV *, u_int32_t, u_int32_t)); | |
| int (*set_cachesize) __P((DB_ENV *, u_int32_t, u_int32_t, int)); | | int (*set_cachesize) __P((DB_ENV *, u_int32_t, u_int32_t, int)); | |
|
| | | int (*set_create_dir) __P((DB_ENV *, const char *)); | |
| int (*set_data_dir) __P((DB_ENV *, const char *)); | | int (*set_data_dir) __P((DB_ENV *, const char *)); | |
| int (*set_encrypt) __P((DB_ENV *, const char *, u_int32_t)); | | int (*set_encrypt) __P((DB_ENV *, const char *, u_int32_t)); | |
| void (*set_errcall) __P((DB_ENV *, | | void (*set_errcall) __P((DB_ENV *, | |
| void (*)(const DB_ENV *, const char *, const char *))); | | void (*)(const DB_ENV *, const char *, const char *))); | |
| void (*set_errfile) __P((DB_ENV *, FILE *)); | | void (*set_errfile) __P((DB_ENV *, FILE *)); | |
| void (*set_errpfx) __P((DB_ENV *, const char *)); | | void (*set_errpfx) __P((DB_ENV *, const char *)); | |
| int (*set_event_notify) | | int (*set_event_notify) | |
| __P((DB_ENV *, void (*)(DB_ENV *, u_int32_t, void *))); | | __P((DB_ENV *, void (*)(DB_ENV *, u_int32_t, void *))); | |
| int (*set_feedback) __P((DB_ENV *, void (*)(DB_ENV *, int, int))); | | int (*set_feedback) __P((DB_ENV *, void (*)(DB_ENV *, int, int))); | |
| int (*set_flags) __P((DB_ENV *, u_int32_t, int)); | | int (*set_flags) __P((DB_ENV *, u_int32_t, int)); | |
| | | | |
| skipping to change at line 2097 | | skipping to change at line 2380 | |
| int (*set_lg_dir) __P((DB_ENV *, const char *)); | | int (*set_lg_dir) __P((DB_ENV *, const char *)); | |
| int (*set_lg_filemode) __P((DB_ENV *, int)); | | int (*set_lg_filemode) __P((DB_ENV *, int)); | |
| int (*set_lg_max) __P((DB_ENV *, u_int32_t)); | | int (*set_lg_max) __P((DB_ENV *, u_int32_t)); | |
| int (*set_lg_regionmax) __P((DB_ENV *, u_int32_t)); | | int (*set_lg_regionmax) __P((DB_ENV *, u_int32_t)); | |
| int (*set_lk_conflicts) __P((DB_ENV *, u_int8_t *, int)); | | int (*set_lk_conflicts) __P((DB_ENV *, u_int8_t *, int)); | |
| int (*set_lk_detect) __P((DB_ENV *, u_int32_t)); | | int (*set_lk_detect) __P((DB_ENV *, u_int32_t)); | |
| int (*set_lk_max_lockers) __P((DB_ENV *, u_int32_t)); | | int (*set_lk_max_lockers) __P((DB_ENV *, u_int32_t)); | |
| int (*set_lk_max_locks) __P((DB_ENV *, u_int32_t)); | | int (*set_lk_max_locks) __P((DB_ENV *, u_int32_t)); | |
| int (*set_lk_max_objects) __P((DB_ENV *, u_int32_t)); | | int (*set_lk_max_objects) __P((DB_ENV *, u_int32_t)); | |
| int (*set_lk_partitions) __P((DB_ENV *, u_int32_t)); | | int (*set_lk_partitions) __P((DB_ENV *, u_int32_t)); | |
|
| | | int (*set_lk_priority) __P((DB_ENV *, u_int32_t, u_int32_t)); | |
| int (*set_mp_max_openfd) __P((DB_ENV *, int)); | | int (*set_mp_max_openfd) __P((DB_ENV *, int)); | |
| int (*set_mp_max_write) __P((DB_ENV *, int, db_timeout_t)); | | int (*set_mp_max_write) __P((DB_ENV *, int, db_timeout_t)); | |
| int (*set_mp_mmapsize) __P((DB_ENV *, size_t)); | | int (*set_mp_mmapsize) __P((DB_ENV *, size_t)); | |
|
| | | int (*set_mp_pagesize) __P((DB_ENV *, u_int32_t)); | |
| | | int (*set_mp_tablesize) __P((DB_ENV *, u_int32_t)); | |
| void (*set_msgcall) | | void (*set_msgcall) | |
| __P((DB_ENV *, void (*)(const DB_ENV *, const char *))); | | __P((DB_ENV *, void (*)(const DB_ENV *, const char *))); | |
| void (*set_msgfile) __P((DB_ENV *, FILE *)); | | void (*set_msgfile) __P((DB_ENV *, FILE *)); | |
| int (*set_paniccall) __P((DB_ENV *, void (*)(DB_ENV *, int))); | | int (*set_paniccall) __P((DB_ENV *, void (*)(DB_ENV *, int))); | |
| int (*set_rpc_server) | | int (*set_rpc_server) | |
| __P((DB_ENV *, void *, const char *, long, long, u_int32_t))
; | | __P((DB_ENV *, void *, const char *, long, long, u_int32_t))
; | |
| int (*set_shm_key) __P((DB_ENV *, long)); | | int (*set_shm_key) __P((DB_ENV *, long)); | |
| int (*set_thread_count) __P((DB_ENV *, u_int32_t)); | | int (*set_thread_count) __P((DB_ENV *, u_int32_t)); | |
| int (*set_thread_id) | | int (*set_thread_id) | |
| __P((DB_ENV *, void (*)(DB_ENV *, pid_t *, db_threadid_t *))
); | | __P((DB_ENV *, void (*)(DB_ENV *, pid_t *, db_threadid_t *))
); | |
| int (*set_thread_id_string) __P((DB_ENV *, | | int (*set_thread_id_string) __P((DB_ENV *, | |
| char *(*)(DB_ENV *, pid_t, db_threadid_t, char *))); | | char *(*)(DB_ENV *, pid_t, db_threadid_t, char *))); | |
| int (*set_timeout) __P((DB_ENV *, db_timeout_t, u_int32_t)); | | int (*set_timeout) __P((DB_ENV *, db_timeout_t, u_int32_t)); | |
| int (*set_tmp_dir) __P((DB_ENV *, const char *)); | | int (*set_tmp_dir) __P((DB_ENV *, const char *)); | |
| int (*set_tx_max) __P((DB_ENV *, u_int32_t)); | | int (*set_tx_max) __P((DB_ENV *, u_int32_t)); | |
| int (*set_tx_timestamp) __P((DB_ENV *, time_t *)); | | int (*set_tx_timestamp) __P((DB_ENV *, time_t *)); | |
| int (*set_verbose) __P((DB_ENV *, u_int32_t, int)); | | int (*set_verbose) __P((DB_ENV *, u_int32_t, int)); | |
|
| | | int (*txn_applied) __P((DB_ENV *, | |
| | | DB_TXN_TOKEN *, db_timeout_t, u_int32_t)); | |
| int (*stat_print) __P((DB_ENV *, u_int32_t)); | | int (*stat_print) __P((DB_ENV *, u_int32_t)); | |
| int (*txn_begin) __P((DB_ENV *, DB_TXN *, DB_TXN **, u_int32_t)); | | int (*txn_begin) __P((DB_ENV *, DB_TXN *, DB_TXN **, u_int32_t)); | |
| int (*txn_checkpoint) __P((DB_ENV *, u_int32_t, u_int32_t, u_int32_
t)); | | int (*txn_checkpoint) __P((DB_ENV *, u_int32_t, u_int32_t, u_int32_
t)); | |
|
| int (*txn_recover) | | int (*txn_recover) __P((DB_ENV *, | |
| __P((DB_ENV *, DB_PREPLIST *, long, long *, u_int32_t)); | | DB_PREPLIST *, u_int32_t, u_int32_t *, u_int32_t)); | |
| int (*txn_stat) __P((DB_ENV *, DB_TXN_STAT **, u_int32_t)); | | int (*txn_stat) __P((DB_ENV *, DB_TXN_STAT **, u_int32_t)); | |
| int (*txn_stat_print) __P((DB_ENV *, u_int32_t)); | | int (*txn_stat_print) __P((DB_ENV *, u_int32_t)); | |
| /* DB_ENV PUBLIC HANDLE LIST END */ | | /* DB_ENV PUBLIC HANDLE LIST END */ | |
| | | | |
| /* DB_ENV PRIVATE HANDLE LIST BEGIN */ | | /* DB_ENV PRIVATE HANDLE LIST BEGIN */ | |
| int (*prdbt) __P((DBT *, | | int (*prdbt) __P((DBT *, | |
| int, const char *, void *, int (*)(void *, const void *), in
t)); | | int, const char *, void *, int (*)(void *, const void *), in
t)); | |
| /* DB_ENV PRIVATE HANDLE LIST END */ | | /* DB_ENV PRIVATE HANDLE LIST END */ | |
| }; | | }; | |
| | | | |
| /* | | /* | |
|
| * Dispatch structure for recovery and print routines. Since internal and | | * Dispatch structure for recovery, log verification and print routines. Si | |
| * external routines take different arguments (ENV versus DB_ENV), we need | | nce | |
| * something more elaborate than a single pointer and size. | | * internal and external routines take different arguments (ENV versus DB_E | |
| | | NV), | |
| | | * we need something more elaborate than a single pointer and size. | |
| */ | | */ | |
| struct __db_distab { | | struct __db_distab { | |
| int (**int_dispatch) __P((ENV *, DBT *, DB_LSN *, db_recops, void
*)); | | int (**int_dispatch) __P((ENV *, DBT *, DB_LSN *, db_recops, void
*)); | |
| size_t int_size; | | size_t int_size; | |
| int (**ext_dispatch) __P((DB_ENV *, DBT *, DB_LSN *, db_recops)); | | int (**ext_dispatch) __P((DB_ENV *, DBT *, DB_LSN *, db_recops)); | |
| size_t ext_size; | | size_t ext_size; | |
| }; | | }; | |
| | | | |
|
| #ifndef DB_DBM_HSEARCH | | /* | |
| #define DB_DBM_HSEARCH 0 /* No historic interfaces by | | * Log verification configuration structure. | |
| default. */ | | */ | |
| #endif | | struct __db_logvrfy_config { | |
| | | int continue_after_fail, verbose; | |
| | | u_int32_t cachesize; | |
| | | const char *temp_envhome; | |
| | | const char *dbfile, *dbname; | |
| | | DB_LSN start_lsn, end_lsn; | |
| | | time_t start_time, end_time; | |
| | | }; | |
| | | | |
| #if DB_DBM_HSEARCH != 0 | | #if DB_DBM_HSEARCH != 0 | |
| /******************************************************* | | /******************************************************* | |
| * Dbm/Ndbm historic interfaces. | | * Dbm/Ndbm historic interfaces. | |
| *******************************************************/ | | *******************************************************/ | |
| typedef struct __db DBM; | | typedef struct __db DBM; | |
| | | | |
| #define DBM_INSERT 0 /* Flags to dbm_store(). */ | | #define DBM_INSERT 0 /* Flags to dbm_store(). */ | |
| #define DBM_REPLACE 1 | | #define DBM_REPLACE 1 | |
| | | | |
| /* | | /* | |
| | | | |
| skipping to change at line 2178 | | skipping to change at line 2475 | |
| typedef struct { | | typedef struct { | |
| char *dptr; | | char *dptr; | |
| int dsize; | | int dsize; | |
| } datum; | | } datum; | |
| #endif | | #endif | |
| | | | |
| /* | | /* | |
| * Translate NDBM calls into DB calls so that DB doesn't step on the | | * Translate NDBM calls into DB calls so that DB doesn't step on the | |
| * application's name space. | | * application's name space. | |
| */ | | */ | |
|
| #define dbm_clearerr(a) __db_ndbm_clearerr_rpmdb(a) | | #define dbm_clearerr(a) __db_ndbm_clearerr(a) | |
| #define dbm_close(a) __db_ndbm_close_rpmdb(a) | | #define dbm_close(a) __db_ndbm_close(a) | |
| #define dbm_delete(a, b) __db_ndbm_delete_rpmdb(a, b) | | #define dbm_delete(a, b) __db_ndbm_delete(a, b) | |
| #define dbm_dirfno(a) __db_ndbm_dirfno_rpmdb(a) | | #define dbm_dirfno(a) __db_ndbm_dirfno(a) | |
| #define dbm_error(a) __db_ndbm_error_rpmdb(a) | | #define dbm_error(a) __db_ndbm_error(a) | |
| #define dbm_fetch(a, b) __db_ndbm_fetch_rpmdb(a, b) | | #define dbm_fetch(a, b) __db_ndbm_fetch(a, b) | |
| #define dbm_firstkey(a) __db_ndbm_firstkey_rpmdb(a) | | #define dbm_firstkey(a) __db_ndbm_firstkey(a) | |
| #define dbm_nextkey(a) __db_ndbm_nextkey_rpmdb(a) | | #define dbm_nextkey(a) __db_ndbm_nextkey(a) | |
| #define dbm_open(a, b, c) __db_ndbm_open_rpmdb(a, b, c) | | #define dbm_open(a, b, c) __db_ndbm_open(a, b, c) | |
| #define dbm_pagfno(a) __db_ndbm_pagfno_rpmdb(a) | | #define dbm_pagfno(a) __db_ndbm_pagfno(a) | |
| #define dbm_rdonly(a) __db_ndbm_rdonly_rpmdb(a) | | #define dbm_rdonly(a) __db_ndbm_rdonly(a) | |
| #define dbm_store(a, b, c, d) \ | | #define dbm_store(a, b, c, d) \ | |
|
| __db_ndbm_store_rpmdb(a, b, c, d) | | __db_ndbm_store(a, b, c, d) | |
| | | | |
| /* | | /* | |
| * Translate DBM calls into DB calls so that DB doesn't step on the | | * Translate DBM calls into DB calls so that DB doesn't step on the | |
| * application's name space. | | * application's name space. | |
| * | | * | |
| * The global variables dbrdonly, dirf and pagf were not retained when 4BSD | | * The global variables dbrdonly, dirf and pagf were not retained when 4BSD | |
| * replaced the dbm interface with ndbm, and are not supported here. | | * replaced the dbm interface with ndbm, and are not supported here. | |
| */ | | */ | |
|
| #define dbminit(a) __db_dbm_init_rpmdb(a) | | #define dbminit(a) __db_dbm_init(a) | |
| #define dbmclose __db_dbm_close_rpmdb | | #define dbmclose __db_dbm_close | |
| #if !defined(__cplusplus) | | #if !defined(__cplusplus) | |
|
| #define delete(a) __db_dbm_delete_rpmdb(a) | | #define delete(a) __db_dbm_delete(a) | |
| #endif | | #endif | |
|
| #define fetch(a) __db_dbm_fetch_rpmdb(a) | | #define fetch(a) __db_dbm_fetch(a) | |
| #define firstkey __db_dbm_firstkey_rpmdb | | #define firstkey __db_dbm_firstkey | |
| #define nextkey(a) __db_dbm_nextkey_rpmdb(a) | | #define nextkey(a) __db_dbm_nextkey(a) | |
| #define store(a, b) __db_dbm_store_rpmdb(a, b) | | #define store(a, b) __db_dbm_store(a, b) | |
| | | | |
| /******************************************************* | | /******************************************************* | |
| * Hsearch historic interface. | | * Hsearch historic interface. | |
| *******************************************************/ | | *******************************************************/ | |
| typedef enum { | | typedef enum { | |
| FIND, ENTER | | FIND, ENTER | |
| } ACTION; | | } ACTION; | |
| | | | |
| typedef struct entry { | | typedef struct entry { | |
| char *key; | | char *key; | |
| char *data; | | char *data; | |
| } ENTRY; | | } ENTRY; | |
| | | | |
|
| #define hcreate(a) __db_hcreate_rpmdb(a) | | #define hcreate(a) __db_hcreate(a) | |
| #define hdestroy __db_hdestroy_rpmdb | | #define hdestroy __db_hdestroy | |
| #define hsearch(a, b) __db_hsearch_rpmdb(a, b) | | #define hsearch(a, b) __db_hsearch(a, b) | |
| | | | |
| #endif /* DB_DBM_HSEARCH */ | | #endif /* DB_DBM_HSEARCH */ | |
| | | | |
| #if defined(__cplusplus) | | #if defined(__cplusplus) | |
| } | | } | |
| #endif | | #endif | |
| | | | |
| #endif /* !_DB_H_ */ | | #endif /* !_DB_H_ */ | |
| /* DO NOT EDIT: automatically built by dist/s_apiflags. */ | | /* DO NOT EDIT: automatically built by dist/s_apiflags. */ | |
| #define DB_AGGRESSIVE 0x00000001 | | #define DB_AGGRESSIVE 0x00000001 | |
| #define DB_ARCH_ABS 0x00000001 | | #define DB_ARCH_ABS 0x00000001 | |
| #define DB_ARCH_DATA 0x00000002 | | #define DB_ARCH_DATA 0x00000002 | |
| #define DB_ARCH_LOG 0x00000004 | | #define DB_ARCH_LOG 0x00000004 | |
| #define DB_ARCH_REMOVE 0x00000008 | | #define DB_ARCH_REMOVE 0x00000008 | |
| #define DB_AUTO_COMMIT 0x00000100 | | #define DB_AUTO_COMMIT 0x00000100 | |
|
| #define DB_CDB_ALLDB 0x00000004 | | #define DB_CDB_ALLDB 0x00000040 | |
| #define DB_CHKSUM 0x00000004 | | #define DB_CHKSUM 0x00000008 | |
| #define DB_CKP_INTERNAL 0x00000002 | | #define DB_CKP_INTERNAL 0x00000002 | |
| #define DB_CREATE 0x00000001 | | #define DB_CREATE 0x00000001 | |
|
| | | #define DB_CURSOR_BULK 0x00000001 | |
| | | #define DB_CURSOR_TRANSIENT 0x00000004 | |
| #define DB_CXX_NO_EXCEPTIONS 0x00000002 | | #define DB_CXX_NO_EXCEPTIONS 0x00000002 | |
|
| #define DB_DIRECT 0x00000002 | | #define DB_DIRECT 0x00000010 | |
| #define DB_DIRECT_DB 0x00000040 | | #define DB_DIRECT_DB 0x00000080 | |
| #define DB_DSYNC_DB 0x00000080 | | #define DB_DSYNC_DB 0x00000200 | |
| #define DB_DUP 0x00000008 | | #define DB_DUP 0x00000010 | |
| #define DB_DUPSORT 0x00000002 | | #define DB_DUPSORT 0x00000004 | |
| #define DB_DURABLE_UNKNOWN 0x00000020 | | #define DB_DURABLE_UNKNOWN 0x00000020 | |
| #define DB_ENCRYPT 0x00000001 | | #define DB_ENCRYPT 0x00000001 | |
| #define DB_ENCRYPT_AES 0x00000001 | | #define DB_ENCRYPT_AES 0x00000001 | |
|
| #define DB_EXCL 0x00000400 | | #define DB_EXCL 0x00000040 | |
| #define DB_EXTENT 0x00000004 | | #define DB_EXTENT 0x00000040 | |
| | | #define DB_FAILCHK 0x00000020 | |
| #define DB_FAST_STAT 0x00000001 | | #define DB_FAST_STAT 0x00000001 | |
|
| #define DB_FCNTL_LOCKING 0x00001000 | | #define DB_FCNTL_LOCKING 0x00000800 | |
| #define DB_FLUSH 0x00000001 | | #define DB_FLUSH 0x00000001 | |
| #define DB_FORCE 0x00000001 | | #define DB_FORCE 0x00000001 | |
|
| | | #define DB_FORCESYNC 0x00000001 | |
| #define DB_FOREIGN_ABORT 0x00000001 | | #define DB_FOREIGN_ABORT 0x00000001 | |
| #define DB_FOREIGN_CASCADE 0x00000002 | | #define DB_FOREIGN_CASCADE 0x00000002 | |
| #define DB_FOREIGN_NULLIFY 0x00000004 | | #define DB_FOREIGN_NULLIFY 0x00000004 | |
| #define DB_FREELIST_ONLY 0x00000001 | | #define DB_FREELIST_ONLY 0x00000001 | |
| #define DB_FREE_SPACE 0x00000002 | | #define DB_FREE_SPACE 0x00000002 | |
| #define DB_IGNORE_LEASE 0x00001000 | | #define DB_IGNORE_LEASE 0x00001000 | |
| #define DB_IMMUTABLE_KEY 0x00000002 | | #define DB_IMMUTABLE_KEY 0x00000002 | |
|
| #define DB_INIT_CDB 0x00000020 | | #define DB_INIT_CDB 0x00000040 | |
| #define DB_INIT_LOCK 0x00000040 | | #define DB_INIT_LOCK 0x00000080 | |
| #define DB_INIT_LOG 0x00000080 | | #define DB_INIT_LOG 0x00000100 | |
| #define DB_INIT_MPOOL 0x00000100 | | #define DB_INIT_MPOOL 0x00000200 | |
| #define DB_INIT_REP 0x00000200 | | #define DB_INIT_REP 0x00000400 | |
| #define DB_INIT_TXN 0x00000400 | | #define DB_INIT_TXN 0x00000800 | |
| #define DB_INORDER 0x00000010 | | #define DB_INORDER 0x00000020 | |
| #define DB_JOIN_NOSORT 0x00000001 | | #define DB_JOIN_NOSORT 0x00000001 | |
|
| #define DB_LOCKDOWN 0x00000800 | | #define DB_LOCKDOWN 0x00001000 | |
| #define DB_LOCK_NOWAIT 0x00000001 | | #define DB_LOCK_NOWAIT 0x00000001 | |
| #define DB_LOCK_RECORD 0x00000002 | | #define DB_LOCK_RECORD 0x00000002 | |
| #define DB_LOCK_SET_TIMEOUT 0x00000004 | | #define DB_LOCK_SET_TIMEOUT 0x00000004 | |
| #define DB_LOCK_SWITCH 0x00000008 | | #define DB_LOCK_SWITCH 0x00000008 | |
| #define DB_LOCK_UPGRADE 0x00000010 | | #define DB_LOCK_UPGRADE 0x00000010 | |
|
| #define DB_LOG_AUTO_REMOVE 0x00000004 | | #define DB_LOG_AUTO_REMOVE 0x00000001 | |
| #define DB_LOG_CHKPNT 0x00000002 | | #define DB_LOG_CHKPNT 0x00000002 | |
| #define DB_LOG_COMMIT 0x00000004 | | #define DB_LOG_COMMIT 0x00000004 | |
|
| #define DB_LOG_DIRECT 0x00000001 | | #define DB_LOG_DIRECT 0x00000002 | |
| #define DB_LOG_DSYNC 0x00000002 | | #define DB_LOG_DSYNC 0x00000004 | |
| #define DB_LOG_IN_MEMORY 0x00000008 | | #define DB_LOG_IN_MEMORY 0x00000008 | |
| #define DB_LOG_NOCOPY 0x00000008 | | #define DB_LOG_NOCOPY 0x00000008 | |
| #define DB_LOG_NOT_DURABLE 0x00000010 | | #define DB_LOG_NOT_DURABLE 0x00000010 | |
|
| | | #define DB_LOG_VERIFY_CAF 0x00000001 | |
| | | #define DB_LOG_VERIFY_DBFILE 0x00000002 | |
| | | #define DB_LOG_VERIFY_ERR 0x00000004 | |
| | | #define DB_LOG_VERIFY_FORWARD 0x00000008 | |
| | | #define DB_LOG_VERIFY_INTERR 0x00000010 | |
| | | #define DB_LOG_VERIFY_PARTIAL 0x00000020 | |
| | | #define DB_LOG_VERIFY_VERBOSE 0x00000040 | |
| | | #define DB_LOG_VERIFY_WARNING 0x00000080 | |
| #define DB_LOG_WRNOSYNC 0x00000020 | | #define DB_LOG_WRNOSYNC 0x00000020 | |
| #define DB_LOG_ZERO 0x00000010 | | #define DB_LOG_ZERO 0x00000010 | |
| #define DB_MPOOL_CREATE 0x00000001 | | #define DB_MPOOL_CREATE 0x00000001 | |
| #define DB_MPOOL_DIRTY 0x00000002 | | #define DB_MPOOL_DIRTY 0x00000002 | |
| #define DB_MPOOL_DISCARD 0x00000001 | | #define DB_MPOOL_DISCARD 0x00000001 | |
| #define DB_MPOOL_EDIT 0x00000004 | | #define DB_MPOOL_EDIT 0x00000004 | |
| #define DB_MPOOL_FREE 0x00000008 | | #define DB_MPOOL_FREE 0x00000008 | |
| #define DB_MPOOL_LAST 0x00000010 | | #define DB_MPOOL_LAST 0x00000010 | |
| #define DB_MPOOL_NEW 0x00000020 | | #define DB_MPOOL_NEW 0x00000020 | |
| #define DB_MPOOL_NOFILE 0x00000001 | | #define DB_MPOOL_NOFILE 0x00000001 | |
| #define DB_MPOOL_NOLOCK 0x00000002 | | #define DB_MPOOL_NOLOCK 0x00000002 | |
|
| | | #define DB_MPOOL_TRY 0x00000040 | |
| #define DB_MPOOL_UNLINK 0x00000002 | | #define DB_MPOOL_UNLINK 0x00000002 | |
|
| #define DB_MULTIPLE 0x00002000 | | #define DB_MULTIPLE 0x00000800 | |
| #define DB_MULTIPLE_KEY 0x00000100 | | #define DB_MULTIPLE_KEY 0x00004000 | |
| #define DB_MULTIVERSION 0x00000008 | | #define DB_MULTIVERSION 0x00000004 | |
| #define DB_MUTEX_ALLOCATED 0x00000001 | | #define DB_MUTEX_ALLOCATED 0x00000001 | |
| #define DB_MUTEX_LOCKED 0x00000002 | | #define DB_MUTEX_LOCKED 0x00000002 | |
| #define DB_MUTEX_LOGICAL_LOCK 0x00000004 | | #define DB_MUTEX_LOGICAL_LOCK 0x00000004 | |
| #define DB_MUTEX_PROCESS_ONLY 0x00000008 | | #define DB_MUTEX_PROCESS_ONLY 0x00000008 | |
| #define DB_MUTEX_SELF_BLOCK 0x00000010 | | #define DB_MUTEX_SELF_BLOCK 0x00000010 | |
|
| #define DB_NOLOCKING 0x00000200 | | #define DB_MUTEX_SHARED 0x00000020 | |
| #define DB_NOMMAP 0x00000010 | | #define DB_NOERROR 0x00001000 | |
| | | #define DB_NOLOCKING 0x00000400 | |
| | | #define DB_NOMMAP 0x00000008 | |
| #define DB_NOORDERCHK 0x00000002 | | #define DB_NOORDERCHK 0x00000002 | |
|
| #define DB_NOPANIC 0x00000400 | | #define DB_NOPANIC 0x00000800 | |
| #define DB_NO_AUTO_COMMIT 0x00002000 | | #define DB_NO_AUTO_COMMIT 0x00002000 | |
|
| #define DB_ODDFILESIZE 0x00000040 | | #define DB_ODDFILESIZE 0x00000080 | |
| #define DB_ORDERCHKONLY 0x00000004 | | #define DB_ORDERCHKONLY 0x00000004 | |
| #define DB_OVERWRITE 0x00001000 | | #define DB_OVERWRITE 0x00001000 | |
| #define DB_PANIC_ENVIRONMENT 0x00002000 | | #define DB_PANIC_ENVIRONMENT 0x00002000 | |
| #define DB_PRINTABLE 0x00000008 | | #define DB_PRINTABLE 0x00000008 | |
|
| #define DB_PRIVATE 0x00001000 | | #define DB_PRIVATE 0x00002000 | |
| #define DB_PR_PAGE 0x00000010 | | #define DB_PR_PAGE 0x00000010 | |
| #define DB_PR_RECOVERYTEST 0x00000020 | | #define DB_PR_RECOVERYTEST 0x00000020 | |
|
| #define DB_RDONLY 0x00000080 | | #define DB_RDONLY 0x00000400 | |
| #define DB_RDWRMASTER 0x00004000 | | #define DB_RDWRMASTER 0x00004000 | |
| #define DB_READ_COMMITTED 0x00000400 | | #define DB_READ_COMMITTED 0x00000400 | |
| #define DB_READ_UNCOMMITTED 0x00000200 | | #define DB_READ_UNCOMMITTED 0x00000200 | |
|
| #define DB_RECNUM 0x00000020 | | #define DB_RECNUM 0x00000040 | |
| #define DB_RECOVER 0x00000010 | | #define DB_RECOVER 0x00000002 | |
| #define DB_RECOVER_FATAL 0x00002000 | | #define DB_RECOVER_FATAL 0x00004000 | |
| #define DB_REGION_INIT 0x00004000 | | #define DB_REGION_INIT 0x00004000 | |
|
| #define DB_REGISTER 0x00004000 | | #define DB_REGISTER 0x00008000 | |
| #define DB_RENUMBER 0x00000040 | | #define DB_RENUMBER 0x00000080 | |
| #define DB_REPMGR_CONF_2SITE_STRICT 0x00000001 | | #define DB_REPMGR_CONF_2SITE_STRICT 0x00000001 | |
|
| | | #define DB_REPMGR_CONF_ELECTIONS 0x00000002 | |
| #define DB_REPMGR_PEER 0x00000001 | | #define DB_REPMGR_PEER 0x00000001 | |
| #define DB_REP_ANYWHERE 0x00000001 | | #define DB_REP_ANYWHERE 0x00000001 | |
| #define DB_REP_CLIENT 0x00000001 | | #define DB_REP_CLIENT 0x00000001 | |
|
| #define DB_REP_CONF_BULK 0x00000002 | | #define DB_REP_CONF_AUTOINIT 0x00000004 | |
| #define DB_REP_CONF_DELAYCLIENT 0x00000004 | | #define DB_REP_CONF_BULK 0x00000008 | |
| #define DB_REP_CONF_LEASE 0x00000008 | | #define DB_REP_CONF_DELAYCLIENT 0x00000010 | |
| #define DB_REP_CONF_NOAUTOINIT 0x00000010 | | #define DB_REP_CONF_INMEM 0x00000020 | |
| #define DB_REP_CONF_NOWAIT 0x00000020 | | #define DB_REP_CONF_LEASE 0x00000040 | |
| | | #define DB_REP_CONF_NOWAIT 0x00000080 | |
| #define DB_REP_ELECTION 0x00000004 | | #define DB_REP_ELECTION 0x00000004 | |
| #define DB_REP_MASTER 0x00000002 | | #define DB_REP_MASTER 0x00000002 | |
| #define DB_REP_NOBUFFER 0x00000002 | | #define DB_REP_NOBUFFER 0x00000002 | |
| #define DB_REP_PERMANENT 0x00000004 | | #define DB_REP_PERMANENT 0x00000004 | |
| #define DB_REP_REREQUEST 0x00000008 | | #define DB_REP_REREQUEST 0x00000008 | |
|
| #define DB_REVSPLITOFF 0x00000080 | | #define DB_REVSPLITOFF 0x00000100 | |
| #define DB_RMW 0x00000800 | | #define DB_RMW 0x00002000 | |
| #define DB_RPCCLIENT 0x00000001 | | #define DB_RPCCLIENT 0x00000001 | |
| #define DB_SALVAGE 0x00000040 | | #define DB_SALVAGE 0x00000040 | |
|
| #define DB_SA_SKIPFIRSTKEY 0x00010000 | | #define DB_SA_SKIPFIRSTKEY 0x00000080 | |
| | | #define DB_SA_UNKNOWNKEY 0x00000100 | |
| #define DB_SEQ_DEC 0x00000001 | | #define DB_SEQ_DEC 0x00000001 | |
| #define DB_SEQ_INC 0x00000002 | | #define DB_SEQ_INC 0x00000002 | |
| #define DB_SEQ_RANGE_SET 0x00000004 | | #define DB_SEQ_RANGE_SET 0x00000004 | |
| #define DB_SEQ_WRAP 0x00000008 | | #define DB_SEQ_WRAP 0x00000008 | |
| #define DB_SEQ_WRAPPED 0x00000010 | | #define DB_SEQ_WRAPPED 0x00000010 | |
|
| #define DB_SET_LOCK_TIMEOUT 0x00000002 | | #define DB_SET_LOCK_TIMEOUT 0x00000001 | |
| #define DB_SET_TXN_NOW 0x00000004 | | #define DB_SET_REG_TIMEOUT 0x00000004 | |
| #define DB_SET_TXN_TIMEOUT 0x00000001 | | #define DB_SET_TXN_NOW 0x00000008 | |
| #define DB_SNAPSHOT 0x00000100 | | #define DB_SET_TXN_TIMEOUT 0x00000002 | |
| #define DB_STAT_ALL 0x00000002 | | #define DB_SHALLOW_DUP 0x00000100 | |
| | | #define DB_SNAPSHOT 0x00000200 | |
| | | #define DB_STAT_ALL 0x00000004 | |
| #define DB_STAT_CLEAR 0x00000001 | | #define DB_STAT_CLEAR 0x00000001 | |
|
| #define DB_STAT_LOCK_CONF 0x00000004 | | #define DB_STAT_LOCK_CONF 0x00000008 | |
| #define DB_STAT_LOCK_LOCKERS 0x00000008 | | #define DB_STAT_LOCK_LOCKERS 0x00000010 | |
| #define DB_STAT_LOCK_OBJECTS 0x00000010 | | #define DB_STAT_LOCK_OBJECTS 0x00000020 | |
| #define DB_STAT_LOCK_PARAMS 0x00000020 | | #define DB_STAT_LOCK_PARAMS 0x00000040 | |
| #define DB_STAT_MEMP_HASH 0x00000004 | | #define DB_STAT_MEMP_HASH 0x00000008 | |
| #define DB_STAT_MEMP_NOERROR 0x00000008 | | #define DB_STAT_MEMP_NOERROR 0x00000010 | |
| #define DB_STAT_SUBSYSTEM 0x00000004 | | #define DB_STAT_SUBSYSTEM 0x00000002 | |
| #define DB_ST_DUPOK 0x00000100 | | #define DB_ST_DUPOK 0x00000200 | |
| #define DB_ST_DUPSET 0x00000200 | | #define DB_ST_DUPSET 0x00000400 | |
| #define DB_ST_DUPSORT 0x00000400 | | #define DB_ST_DUPSORT 0x00000800 | |
| #define DB_ST_IS_RECNO 0x00000800 | | #define DB_ST_IS_RECNO 0x00001000 | |
| #define DB_ST_OVFL_LEAF 0x00001000 | | #define DB_ST_OVFL_LEAF 0x00002000 | |
| #define DB_ST_RECNUM 0x00002000 | | #define DB_ST_RECNUM 0x00004000 | |
| #define DB_ST_RELEN 0x00004000 | | #define DB_ST_RELEN 0x00008000 | |
| #define DB_ST_TOPLEVEL 0x00008000 | | #define DB_ST_TOPLEVEL 0x00010000 | |
| #define DB_SYSTEM_MEM 0x00008000 | | #define DB_SYSTEM_MEM 0x00010000 | |
| #define DB_THREAD 0x00000004 | | #define DB_THREAD 0x00000010 | |
| #define DB_TIME_NOTGRANTED 0x00008000 | | #define DB_TIME_NOTGRANTED 0x00008000 | |
| #define DB_TRUNCATE 0x00008000 | | #define DB_TRUNCATE 0x00008000 | |
|
| | | #define DB_TXN_FAMILY 0x00000008 | |
| #define DB_TXN_NOSYNC 0x00000001 | | #define DB_TXN_NOSYNC 0x00000001 | |
|
| #define DB_TXN_NOT_DURABLE 0x00000200 | | #define DB_TXN_NOT_DURABLE 0x00000002 | |
| #define DB_TXN_NOWAIT 0x00000002 | | #define DB_TXN_NOWAIT 0x00000010 | |
| #define DB_TXN_SNAPSHOT 0x00000800 | | #define DB_TXN_SNAPSHOT 0x00000002 | |
| #define DB_TXN_SYNC 0x00000004 | | #define DB_TXN_SYNC 0x00000004 | |
|
| #define DB_TXN_WAIT 0x00000008 | | #define DB_TXN_WAIT 0x00000040 | |
| #define DB_TXN_WRITE_NOSYNC 0x00000020 | | #define DB_TXN_WRITE_NOSYNC 0x00000020 | |
|
| #define DB_UNREF 0x00000080 | | #define DB_UNREF 0x00020000 | |
| #define DB_UPGRADE 0x00000001 | | #define DB_UPGRADE 0x00000001 | |
|
| #define DB_USE_ENVIRON 0x00000002 | | #define DB_USE_ENVIRON 0x00000004 | |
| #define DB_USE_ENVIRON_ROOT 0x00000008 | | #define DB_USE_ENVIRON_ROOT 0x00000008 | |
| #define DB_VERB_DEADLOCK 0x00000001 | | #define DB_VERB_DEADLOCK 0x00000001 | |
| #define DB_VERB_FILEOPS 0x00000002 | | #define DB_VERB_FILEOPS 0x00000002 | |
| #define DB_VERB_FILEOPS_ALL 0x00000004 | | #define DB_VERB_FILEOPS_ALL 0x00000004 | |
| #define DB_VERB_RECOVERY 0x00000008 | | #define DB_VERB_RECOVERY 0x00000008 | |
| #define DB_VERB_REGISTER 0x00000010 | | #define DB_VERB_REGISTER 0x00000010 | |
| #define DB_VERB_REPLICATION 0x00000020 | | #define DB_VERB_REPLICATION 0x00000020 | |
| #define DB_VERB_REPMGR_CONNFAIL 0x00000040 | | #define DB_VERB_REPMGR_CONNFAIL 0x00000040 | |
| #define DB_VERB_REPMGR_MISC 0x00000080 | | #define DB_VERB_REPMGR_MISC 0x00000080 | |
| #define DB_VERB_REP_ELECT 0x00000100 | | #define DB_VERB_REP_ELECT 0x00000100 | |
| #define DB_VERB_REP_LEASE 0x00000200 | | #define DB_VERB_REP_LEASE 0x00000200 | |
| #define DB_VERB_REP_MISC 0x00000400 | | #define DB_VERB_REP_MISC 0x00000400 | |
| #define DB_VERB_REP_MSGS 0x00000800 | | #define DB_VERB_REP_MSGS 0x00000800 | |
| #define DB_VERB_REP_SYNC 0x00001000 | | #define DB_VERB_REP_SYNC 0x00001000 | |
|
| #define DB_VERB_WAITSFOR 0x00002000 | | #define DB_VERB_REP_SYSTEM 0x00002000 | |
| | | #define DB_VERB_REP_TEST 0x00004000 | |
| | | #define DB_VERB_WAITSFOR 0x00008000 | |
| #define DB_VERIFY 0x00000002 | | #define DB_VERIFY 0x00000002 | |
|
| | | #define DB_VERIFY_PARTITION 0x00040000 | |
| | | #define DB_WRITECURSOR 0x00000008 | |
| | | #define DB_WRITELOCK 0x00000010 | |
| #define DB_WRITEOPEN 0x00010000 | | #define DB_WRITEOPEN 0x00010000 | |
|
| #define DB_XA_CREATE 0x00000800 | | | |
| #define DB_YIELDCPU 0x00010000 | | #define DB_YIELDCPU 0x00010000 | |
| | | | |
| /* DO NOT EDIT: automatically built by dist/s_include. */ | | /* DO NOT EDIT: automatically built by dist/s_include. */ | |
|
| #ifndef _DB_EXT_DEF_IN_ | | | |
| #define _DB_EXT_DEF_IN_ | | | |
| | | | |
| /*@-declundef -noparams -fcnuse@*/ | | | |
| #define db_create db_create_rpmdb | | | |
| #define db_strerror db_strerror_rpmdb | | | |
| #define db_env_set_func_close db_env_set_func_close_rpmdb | | | |
| #define db_env_set_func_dirfree db_env_set_func_dirfree_rpmdb | | | |
| #define db_env_set_func_dirlist db_env_set_func_dirlist_rpmdb | | | |
| #define db_env_set_func_exists db_env_set_func_exists_rpmdb | | | |
| #define db_env_set_func_free db_env_set_func_free_rpmdb | | | |
| #define db_env_set_func_fsync db_env_set_func_fsync_rpmdb | | | |
| #define db_env_set_func_ftruncate db_env_set_func_ftruncate_rpmdb | | | |
| #define db_env_set_func_ioinfo db_env_set_func_ioinfo_rpmdb | | | |
| #define db_env_set_func_malloc db_env_set_func_malloc_rpmdb | | | |
| #define db_env_set_func_file_map db_env_set_func_file_map_rpmdb | | | |
| #define db_env_set_func_region_map db_env_set_func_region_map_rpmdb | | | |
| #define db_env_set_func_pread db_env_set_func_pread_rpmdb | | | |
| #define db_env_set_func_pwrite db_env_set_func_pwrite_rpmdb | | | |
| #define db_env_set_func_open db_env_set_func_open_rpmdb | | | |
| #define db_env_set_func_read db_env_set_func_read_rpmdb | | | |
| #define db_env_set_func_realloc db_env_set_func_realloc_rpmdb | | | |
| #define db_env_set_func_rename db_env_set_func_rename_rpmdb | | | |
| #define db_env_set_func_seek db_env_set_func_seek_rpmdb | | | |
| #define db_env_set_func_unlink db_env_set_func_unlink_rpmdb | | | |
| #define db_env_set_func_write db_env_set_func_write_rpmdb | | | |
| #define db_env_set_func_yield db_env_set_func_yield_rpmdb | | | |
| #define db_env_create db_env_create_rpmdb | | | |
| #define db_version db_version_rpmdb | | | |
| #define log_compare log_compare_rpmdb | | | |
| #define db_sequence_create db_sequence_create_rpmdb | | | |
| #if DB_DBM_HSEARCH != 0 | | | |
| #define __db_ndbm_clearerr __db_ndbm_clearerr_rpmdb | | | |
| #define __db_ndbm_close __db_ndbm_close_rpmdb | | | |
| #define __db_ndbm_delete __db_ndbm_delete_rpmdb | | | |
| #define __db_ndbm_dirfno __db_ndbm_dirfno_rpmdb | | | |
| #define __db_ndbm_error __db_ndbm_error_rpmdb | | | |
| #define __db_ndbm_fetch __db_ndbm_fetch_rpmdb | | | |
| #define __db_ndbm_firstkey __db_ndbm_firstkey_rpmdb | | | |
| #define __db_ndbm_nextkey __db_ndbm_nextkey_rpmdb | | | |
| #define __db_ndbm_open __db_ndbm_open_rpmdb | | | |
| #define __db_ndbm_pagfno __db_ndbm_pagfno_rpmdb | | | |
| #define __db_ndbm_rdonly __db_ndbm_rdonly_rpmdb | | | |
| #define __db_ndbm_store __db_ndbm_store_rpmdb | | | |
| #define __db_dbm_close __db_dbm_close_rpmdb | | | |
| #define __db_dbm_delete __db_dbm_delete_rpmdb | | | |
| #define __db_dbm_fetch __db_dbm_fetch_rpmdb | | | |
| #define __db_dbm_firstkey __db_dbm_firstkey_rpmdb | | | |
| #define __db_dbm_init __db_dbm_init_rpmdb | | | |
| #define __db_dbm_nextkey __db_dbm_nextkey_rpmdb | | | |
| #define __db_dbm_store __db_dbm_store_rpmdb | | | |
| #endif | | | |
| #if DB_DBM_HSEARCH != 0 | | | |
| #define __db_hcreate __db_hcreate_rpmdb | | | |
| #define __db_hsearch __db_hsearch_rpmdb | | | |
| #define __db_hdestroy __db_hdestroy_rpmdb | | | |
| #endif | | | |
| #define db_xa_switch db_xa_switch_rpmdb | | | |
| | | | |
| #endif /* !_DB_EXT_DEF_IN_ */ | | | |
| | | | |
| /* DO NOT EDIT: automatically built by dist/s_include. */ | | | |
| #ifndef _DB_EXT_PROT_IN_ | | #ifndef _DB_EXT_PROT_IN_ | |
| #define _DB_EXT_PROT_IN_ | | #define _DB_EXT_PROT_IN_ | |
| | | | |
| #if defined(__cplusplus) | | #if defined(__cplusplus) | |
| extern "C" { | | extern "C" { | |
| #endif | | #endif | |
| | | | |
| int db_create __P((DB **, DB_ENV *, u_int32_t)); | | int db_create __P((DB **, DB_ENV *, u_int32_t)); | |
| char *db_strerror __P((int)); | | char *db_strerror __P((int)); | |
| int db_env_set_func_close __P((int (*)(int))); | | int db_env_set_func_close __P((int (*)(int))); | |
| | | | |
| skipping to change at line 2504 | | skipping to change at line 2764 | |
| int db_env_set_func_open __P((int (*)(const char *, int, ...))); | | int db_env_set_func_open __P((int (*)(const char *, int, ...))); | |
| int db_env_set_func_read __P((ssize_t (*)(int, void *, size_t))); | | int db_env_set_func_read __P((ssize_t (*)(int, void *, size_t))); | |
| int db_env_set_func_realloc __P((void *(*)(void *, size_t))); | | int db_env_set_func_realloc __P((void *(*)(void *, size_t))); | |
| int db_env_set_func_rename __P((int (*)(const char *, const char *))); | | int db_env_set_func_rename __P((int (*)(const char *, const char *))); | |
| int db_env_set_func_seek __P((int (*)(int, off_t, int))); | | int db_env_set_func_seek __P((int (*)(int, off_t, int))); | |
| int db_env_set_func_unlink __P((int (*)(const char *))); | | int db_env_set_func_unlink __P((int (*)(const char *))); | |
| int db_env_set_func_write __P((ssize_t (*)(int, const void *, size_t))); | | int db_env_set_func_write __P((ssize_t (*)(int, const void *, size_t))); | |
| int db_env_set_func_yield __P((int (*)(u_long, u_long))); | | int db_env_set_func_yield __P((int (*)(u_long, u_long))); | |
| int db_env_create __P((DB_ENV **, u_int32_t)); | | int db_env_create __P((DB_ENV **, u_int32_t)); | |
| char *db_version __P((int *, int *, int *)); | | char *db_version __P((int *, int *, int *)); | |
|
| | | char *db_full_version __P((int *, int *, int *, int *, int *)); | |
| int log_compare __P((const DB_LSN *, const DB_LSN *)); | | int log_compare __P((const DB_LSN *, const DB_LSN *)); | |
| int db_sequence_create __P((DB_SEQUENCE **, DB *, u_int32_t)); | | int db_sequence_create __P((DB_SEQUENCE **, DB *, u_int32_t)); | |
|
| #if DB_DBM_HSEARCH != 0 | | #ifdef HAVE_DBM | |
| int __db_ndbm_clearerr __P((DBM *)); | | int __db_ndbm_clearerr __P((DBM *)); | |
| void __db_ndbm_close __P((DBM *)); | | void __db_ndbm_close __P((DBM *)); | |
| int __db_ndbm_delete __P((DBM *, datum)); | | int __db_ndbm_delete __P((DBM *, datum)); | |
| int __db_ndbm_dirfno __P((DBM *)); | | int __db_ndbm_dirfno __P((DBM *)); | |
| int __db_ndbm_error __P((DBM *)); | | int __db_ndbm_error __P((DBM *)); | |
| datum __db_ndbm_fetch __P((DBM *, datum)); | | datum __db_ndbm_fetch __P((DBM *, datum)); | |
| datum __db_ndbm_firstkey __P((DBM *)); | | datum __db_ndbm_firstkey __P((DBM *)); | |
| datum __db_ndbm_nextkey __P((DBM *)); | | datum __db_ndbm_nextkey __P((DBM *)); | |
| DBM *__db_ndbm_open __P((const char *, int, int)); | | DBM *__db_ndbm_open __P((const char *, int, int)); | |
| int __db_ndbm_pagfno __P((DBM *)); | | int __db_ndbm_pagfno __P((DBM *)); | |
| | | | |
End of changes. 164 change blocks. |
| 614 lines changed or deleted | | 908 lines changed or added | |
|
| rpmdb.h | | rpmdb.h | |
| #ifndef H_RPMDB | | #ifndef H_RPMDB | |
| #define H_RPMDB | | #define H_RPMDB | |
| /*@-bounds@*/ | | /*@-bounds@*/ | |
| | | | |
| /** \ingroup rpmdb dbi db1 db3 | | /** \ingroup rpmdb dbi db1 db3 | |
| * \file rpmdb/rpmdb.h | | * \file rpmdb/rpmdb.h | |
| * Access RPM indices using Berkeley DB interface(s). | | * Access RPM indices using Berkeley DB interface(s). | |
| */ | | */ | |
| | | | |
| #include <assert.h> | | #include <assert.h> | |
|
| #include <rpmtypes.h> | | | |
| #include <mire.h> | | #include <mire.h> | |
|
| | | | |
| | | #include <rpmtypes.h> | |
| | | #include <rpmtag.h> /* XXX Header typedef */ | |
| | | | |
| #if defined(_RPMDB_INTERNAL) | | #if defined(_RPMDB_INTERNAL) | |
| #if defined(WITH_DB) | | #if defined(WITH_DB) | |
| #include "db.h" | | #include "db.h" | |
| #else | | #else | |
| #include "db_emu.h" | | #include "db_emu.h" | |
| #endif | | #endif | |
| #endif | | #endif | |
| | | | |
| #if defined(_RPMDB_INTERNAL) | | #if defined(_RPMDB_INTERNAL) | |
| #define DBT_INIT /*@-fullinitblock@*/ {0} /*@-fullinitblock@*/ /* -
Wno-missing-field-initializers */ | | #define DBT_INIT /*@-fullinitblock@*/ {0} /*@-fullinitblock@*/ /* -
Wno-missing-field-initializers */ | |
| #endif | | #endif | |
| | | | |
| /*@-exportlocal@*/ | | /*@-exportlocal@*/ | |
| /*@unchecked@*/ | | /*@unchecked@*/ | |
| extern int _rpmdb_debug; | | extern int _rpmdb_debug; | |
|
| | | /*@unchecked@*/ | |
| | | extern int _rpmmi_debug; | |
| /*@=exportlocal@*/ | | /*@=exportlocal@*/ | |
| | | | |
| #ifdef NOTYET | | #ifdef NOTYET | |
| /** \ingroup rpmdb | | /** \ingroup rpmdb | |
| * Database of headers and tag value indices. | | * Database of headers and tag value indices. | |
| */ | | */ | |
| typedef /*@abstract@*/ /*@refcounted@*/ struct rpmdb_s * rpmdb; | | typedef /*@abstract@*/ /*@refcounted@*/ struct rpmdb_s * rpmdb; | |
| | | | |
| /** \ingroup rpmdb | | /** \ingroup rpmdb | |
| * Database iterator. | | * Database iterator. | |
| */ | | */ | |
|
| typedef /*@abstract@*/ struct rpmmi_s * rpmmi; | | typedef /*@abstract@*/ /*@refcounted@*/ struct rpmmi_s * rpmmi; | |
| #endif | | #endif | |
| | | | |
| /** | | /** | |
| */ | | */ | |
| typedef /*@abstract@*/ struct _dbiIndexItem * dbiIndexItem; | | typedef /*@abstract@*/ struct _dbiIndexItem * dbiIndexItem; | |
| | | | |
| /** \ingroup rpmdb | | /** \ingroup rpmdb | |
| * A single element (i.e. inverted list from tag values) of a database. | | * A single element (i.e. inverted list from tag values) of a database. | |
| */ | | */ | |
| typedef /*@abstract@*/ struct _dbiIndexSet * dbiIndexSet; | | typedef /*@abstract@*/ struct _dbiIndexSet * dbiIndexSet; | |
| | | | |
| /** | | /** | |
| */ | | */ | |
| typedef /*@abstract@*/ struct _dbiIndex * dbiIndex; | | typedef /*@abstract@*/ struct _dbiIndex * dbiIndex; | |
| | | | |
| #if defined(_RPMDB_INTERNAL) | | #if defined(_RPMDB_INTERNAL) | |
| #include <rpmio.h> | | #include <rpmio.h> | |
|
| | | #include <rpmbf.h> | |
| #include <rpmsw.h> | | #include <rpmsw.h> | |
| | | | |
| #if !defined(SWIG) /* XXX inline dbiFoo() need */ | | #if !defined(SWIG) /* XXX inline dbiFoo() need */ | |
| /** \ingroup dbi | | /** \ingroup dbi | |
| * A single item from an index database (i.e. the "data returned"). | | * A single item from an index database (i.e. the "data returned"). | |
| */ | | */ | |
| struct _dbiIndexItem { | | struct _dbiIndexItem { | |
|
| rpmuint32_t hdrNum; /*!< header instance in db * | | uint32_t hdrNum; /*!< header instance in db */ | |
| / | | uint32_t tagNum; /*!< tag index in header */ | |
| rpmuint32_t tagNum; /*!< tag index in header */ | | | |
| rpmuint32_t fpNum; /*!< finger print index */ | | | |
| }; | | }; | |
| | | | |
| /** \ingroup dbi | | /** \ingroup dbi | |
| * Items retrieved from the index database. | | * Items retrieved from the index database. | |
| */ | | */ | |
| struct _dbiIndexSet { | | struct _dbiIndexSet { | |
|
| /*@owned@*/ struct _dbiIndexItem * recs; /*!< array of records */ | | /*@owned@*/ | |
| int count; /*!< number of records */ | | struct _dbiIndexItem * recs; /*!< array of records */ | |
| | | unsigned int count; /*!< number of records */ | |
| }; | | }; | |
| | | | |
| /** \ingroup dbi | | /** \ingroup dbi | |
| * Private methods for accessing an index database. | | * Private methods for accessing an index database. | |
| */ | | */ | |
| struct _dbiVec { | | struct _dbiVec { | |
|
| int dbv_major; /*!< Berkeley db version major */ | | const char * dbv_version; /*!< DB version string */ | |
| int dbv_minor; /*!< Berkeley db version minor */ | | int dbv_major; /*!< DB version major */ | |
| int dbv_patch; /*!< Berkeley db version patch */ | | int dbv_minor; /*!< DB version minor */ | |
| | | int dbv_patch; /*!< DB version patch */ | |
| | | | |
| /** \ingroup dbi | | /** \ingroup dbi | |
| * Return handle for an index database. | | * Return handle for an index database. | |
| * @param rpmdb rpm database | | * @param rpmdb rpm database | |
| * @param tag rpm tag | | * @param tag rpm tag | |
| * @return 0 on success | | * @return 0 on success | |
| */ | | */ | |
| int (*open) (rpmdb rpmdb, rpmTag tag, /*@out@*/ dbiIndex * dbip) | | int (*open) (rpmdb rpmdb, rpmTag tag, /*@out@*/ dbiIndex * dbip) | |
| /*@globals fileSystem @*/ | | /*@globals fileSystem @*/ | |
| /*@modifies *dbip, fileSystem @*/; | | /*@modifies *dbip, fileSystem @*/; | |
| | | | |
| skipping to change at line 130 | | skipping to change at line 137 | |
| * @param flags DB_CREATE or 0 | | * @param flags DB_CREATE or 0 | |
| * @return 0 on success | | * @return 0 on success | |
| */ | | */ | |
| int (*associate) (dbiIndex dbi, dbiIndex dbisecondary, | | int (*associate) (dbiIndex dbi, dbiIndex dbisecondary, | |
| int (*callback) (DB *, const DBT *, const DBT *, DBT *), | | int (*callback) (DB *, const DBT *, const DBT *, DBT *), | |
| unsigned int flags) | | unsigned int flags) | |
| /*@globals fileSystem @*/ | | /*@globals fileSystem @*/ | |
| /*@modifies dbi, fileSystem @*/; | | /*@modifies dbi, fileSystem @*/; | |
| | | | |
| /** \ingroup dbi | | /** \ingroup dbi | |
|
| | | * Associate foreign secondary database with primary. | |
| | | * @param dbi index database handle | |
| | | * @param dbisecondary secondary index database handle | |
| | | * @param callback create secondary key from primary (NULL if DB_RDONLY | |
| | | ) | |
| | | * @param flags DB_CREATE or 0 | |
| | | * @return 0 on success | |
| | | */ | |
| | | int (*associate_foreign) (dbiIndex dbi, dbiIndex dbisecondary, | |
| | | int (*callback) (DB *, const DBT *, DBT *, const DBT *, int | |
| | | *), | |
| | | unsigned int flags) | |
| | | /*@globals fileSystem @*/ | |
| | | /*@modifies dbi, fileSystem @*/; | |
| | | | |
| | | /** \ingroup dbi | |
| * Return join cursor for list of cursors. | | * Return join cursor for list of cursors. | |
| * @param dbi index database handle | | * @param dbi index database handle | |
| * @param curslist NULL terminated list of database cursors | | * @param curslist NULL terminated list of database cursors | |
| * @retval dbcp address of join database cursor | | * @retval dbcp address of join database cursor | |
| * @param flags DB_JOIN_NOSORT or 0 | | * @param flags DB_JOIN_NOSORT or 0 | |
| * @return 0 on success | | * @return 0 on success | |
| */ | | */ | |
| int (*join) (dbiIndex dbi, DBC ** curslist, /*@out@*/ DBC ** dbcp, | | int (*join) (dbiIndex dbi, DBC ** curslist, /*@out@*/ DBC ** dbcp, | |
| unsigned int flags) | | unsigned int flags) | |
| /*@globals fileSystem @*/ | | /*@globals fileSystem @*/ | |
| /*@modifies dbi, *dbcp, fileSystem @*/; | | /*@modifies dbi, *dbcp, fileSystem @*/; | |
| | | | |
| /** \ingroup dbi | | /** \ingroup dbi | |
|
| | | * Return whether key exists in a database. | |
| | | * @param dbi index database handle | |
| | | * @param key retrieve key value/length/flags | |
| | | * @param flags usually 0 | |
| | | * @return 0 if key exists, DB_NOTFOUND if not, else error | |
| | | */ | |
| | | int (*exists) (dbiIndex dbi, DBT * key, unsigned int flags) | |
| | | /*@globals fileSystem @*/ | |
| | | /*@modifies dbi, fileSystem @*/; | |
| | | | |
| | | /** \ingroup dbi | |
| | | * Return next sequence number. | |
| | | * @param dbi index database handle (with attached sequence) | |
| | | * @retval *seqnop IN: delta (0 does seqno++) OUT: returned 64bit seqno | |
| | | * @param flags usually 0 | |
| | | * @return 0 on success | |
| | | */ | |
| | | int (*seqno) (dbiIndex dbi, /*@null@*/ int64_t * seqnop, unsigned int f | |
| | | lags) | |
| | | /*@globals fileSystem @*/ | |
| | | /*@modifies dbi, *seqnop, fileSystem @*/; | |
| | | | |
| | | /** \ingroup dbi | |
| * Open database cursor. | | * Open database cursor. | |
| * @param dbi index database handle | | * @param dbi index database handle | |
| * @param txnid database transaction handle | | * @param txnid database transaction handle | |
| * @retval dbcp address of new database cursor | | * @retval dbcp address of new database cursor | |
| * @param dbiflags DB_WRITECURSOR or 0 | | * @param dbiflags DB_WRITECURSOR or 0 | |
| * @return 0 on success | | * @return 0 on success | |
| */ | | */ | |
| int (*copen) (dbiIndex dbi, /*@null@*/ DB_TXN * txnid, | | int (*copen) (dbiIndex dbi, /*@null@*/ DB_TXN * txnid, | |
| /*@out@*/ DBC ** dbcp, unsigned int dbiflags) | | /*@out@*/ DBC ** dbcp, unsigned int dbiflags) | |
| /*@globals fileSystem @*/ | | /*@globals fileSystem @*/ | |
| | | | |
| skipping to change at line 274 | | skipping to change at line 317 | |
| */ | | */ | |
| int (*stat) (dbiIndex dbi, unsigned int flags) | | int (*stat) (dbiIndex dbi, unsigned int flags) | |
| /*@globals fileSystem @*/ | | /*@globals fileSystem @*/ | |
| /*@modifies dbi, fileSystem @*/; | | /*@modifies dbi, fileSystem @*/; | |
| }; | | }; | |
| | | | |
| /** \ingroup dbi | | /** \ingroup dbi | |
| * Describes an index database (implemented on Berkeley db3 functionality). | | * Describes an index database (implemented on Berkeley db3 functionality). | |
| */ | | */ | |
| struct _dbiIndex { | | struct _dbiIndex { | |
|
| | | struct rpmioItem_s _item; /*!< usage mutex and pool identifier. */ | |
| /*@relnull@*/ | | /*@relnull@*/ | |
| const char * dbi_root; /*!< chroot(2) component of path */ | | const char * dbi_root; /*!< chroot(2) component of path */ | |
| /*@null@*/ | | /*@null@*/ | |
| const char * dbi_home; /*!< directory component of path */ | | const char * dbi_home; /*!< directory component of path */ | |
| /*@relnull@*/ | | /*@relnull@*/ | |
| const char * dbi_file; /*!< file component of path */ | | const char * dbi_file; /*!< file component of path */ | |
| /*@relnull@*/ | | /*@relnull@*/ | |
| const char * dbi_subfile; | | const char * dbi_subfile; | |
| /*@null@*/ | | /*@null@*/ | |
| const char * dbi_tmpdir; /*!< temporary directory */ | | const char * dbi_tmpdir; /*!< temporary directory */ | |
| | | | |
| int dbi_ecflags; /*!< db_env_create flags */ | | int dbi_ecflags; /*!< db_env_create flags */ | |
| int dbi_cflags; /*!< db_create flags */ | | int dbi_cflags; /*!< db_create flags */ | |
| int dbi_oeflags; /*!< common (db,dbenv)->open flags *
/ | | int dbi_oeflags; /*!< common (db,dbenv)->open flags *
/ | |
| int dbi_eflags; /*!< dbenv->open flags */ | | int dbi_eflags; /*!< dbenv->open flags */ | |
| int dbi_oflags; /*!< db->open flags */ | | int dbi_oflags; /*!< db->open flags */ | |
| int dbi_tflags; /*!< dbenv->txn_begin flags */ | | int dbi_tflags; /*!< dbenv->txn_begin flags */ | |
| | | | |
| int dbi_type; /*!< db index type */ | | int dbi_type; /*!< db index type */ | |
| unsigned dbi_mode; /*!< mode to use on open */ | | unsigned dbi_mode; /*!< mode to use on open */ | |
|
| int dbi_perms; /*!< file permission to use on open
*/ | | int dbi_perms; /*!< file permission used when creat
ing */ | |
| long dbi_shmkey; /*!< shared memory base key */ | | long dbi_shmkey; /*!< shared memory base key */ | |
| int dbi_api; /*!< Berkeley API type */ | | int dbi_api; /*!< Berkeley API type */ | |
| | | | |
|
| int dbi_verify_on_close; | | | |
| int dbi_use_dbenv; /*!< use db environment? */ | | int dbi_use_dbenv; /*!< use db environment? */ | |
|
| int dbi_permit_dups; /*!< permit duplicate entries? */ | | | |
| int dbi_no_fsync; /*!< no-op fsync for db */ | | int dbi_no_fsync; /*!< no-op fsync for db */ | |
| int dbi_no_dbsync; /*!< don't call dbiSync */ | | int dbi_no_dbsync; /*!< don't call dbiSync */ | |
| int dbi_lockdbfd; /*!< do fcntl lock on db fd */ | | int dbi_lockdbfd; /*!< do fcntl lock on db fd */ | |
| int dbi_temporary; /*!< non-persistent index/table */ | | int dbi_temporary; /*!< non-persistent index/table */ | |
|
| int dbi_noload; /*!< standalone index/table */ | | | |
| int dbi_debug; | | int dbi_debug; | |
|
| int dbi_byteswapped; | | | |
| | | rpmbf dbi_bf; | |
| | | | |
| /*@null@*/ | | /*@null@*/ | |
| char * dbi_host; | | char * dbi_host; | |
| unsigned long dbi_cl_timeout; | | unsigned long dbi_cl_timeout; | |
| unsigned long dbi_sv_timeout; | | unsigned long dbi_sv_timeout; | |
| | | | |
| /* dbenv parameters */ | | /* dbenv parameters */ | |
| int dbi_lorder; | | int dbi_lorder; | |
| /*@unused@*/ | | /*@unused@*/ | |
| /* XXX db-4.3.14 adds dbenv as 1st arg. */ | | /* XXX db-4.3.14 adds dbenv as 1st arg. */ | |
| void (*db_errcall) (void * dbenv, const char *db_errpfx, char *buffer) | | void (*db_errcall) (void * dbenv, const char *db_errpfx, char *buffer) | |
| /*@globals fileSystem @*/ | | /*@globals fileSystem @*/ | |
| /*@modifies fileSystem @*/; | | /*@modifies fileSystem @*/; | |
| /*@unused@*/ /*@shared@*/ | | /*@unused@*/ /*@shared@*/ | |
| FILE * dbi_errfile; | | FILE * dbi_errfile; | |
| const char * dbi_errpfx; | | const char * dbi_errpfx; | |
|
| int dbi_verbose; | | | |
| int dbi_region_init; | | int dbi_region_init; | |
| unsigned int dbi_thread_count; | | unsigned int dbi_thread_count; | |
|
| | | | |
| /* locking sub-system parameters */ | | /* locking sub-system parameters */ | |
|
| unsigned int dbi_lk_max_lockers; | | | |
| unsigned int dbi_lk_max_locks; | | | |
| unsigned int dbi_lk_max_objects; | | | |
| unsigned int dbi_lk_detect; | | | |
| /*@unused@*/ | | | |
| int dbi_lk_nmodes; | | | |
| /*@unused@*/ | | | |
| unsigned char * dbi_lk_conflicts; | | | |
| /* logging sub-system parameters */ | | /* logging sub-system parameters */ | |
|
| unsigned int dbi_lg_bsize; | | | |
| /*@unused@*/ | | | |
| const char * dbi_lg_dir; | | | |
| /*@unused@*/ | | | |
| unsigned int dbi_lg_filemode; | | | |
| unsigned int dbi_lg_max; | | | |
| unsigned int dbi_lg_regionmax; | | | |
| /* mpool sub-system parameters */ | | /* mpool sub-system parameters */ | |
|
| int dbi_mmapsize; /*!< (10Mb) */ | | | |
| int dbi_cachesize; /*!< (128Kb) */ | | | |
| /* mutex sub-system parameters */ | | /* mutex sub-system parameters */ | |
|
| unsigned int dbi_mutex_align; | | | |
| unsigned int dbi_mutex_increment; | | | |
| unsigned int dbi_mutex_max; | | | |
| unsigned int dbi_mutex_tas_spins; | | | |
| /* replication sub-system parameters */ | | /* replication sub-system parameters */ | |
|
| | | | |
| /* sequences sub-system parameters */ | | /* sequences sub-system parameters */ | |
|
| | | const char * dbi_seq_id; | |
| unsigned int dbi_seq_cachesize; | | unsigned int dbi_seq_cachesize; | |
| unsigned int dbi_seq_flags; | | unsigned int dbi_seq_flags; | |
|
| #if 0 /* needs signed 64 bit type */ | | int64_t dbi_seq_initial; | |
| int64_t dbi_seq_min; | | int64_t dbi_seq_min; | |
| int64_t dbi_seq_max; | | int64_t dbi_seq_max; | |
|
| #endif | | | |
| /* transaction sub-system parameters */ | | /* transaction sub-system parameters */ | |
|
| unsigned int dbi_tx_max; | | | |
| #if 0 | | #if 0 | |
| int (*dbi_tx_recover) (DB_ENV *dbenv, DBT *log_rec, | | int (*dbi_tx_recover) (DB_ENV *dbenv, DBT *log_rec, | |
| DB_LSN *lsnp, int redo, void *info) | | DB_LSN *lsnp, int redo, void *info) | |
| /*@globals fileSystem @*/ | | /*@globals fileSystem @*/ | |
| /*@modifies fileSystem @*/; | | /*@modifies fileSystem @*/; | |
| #endif | | #endif | |
| /* dbinfo parameters */ | | /* dbinfo parameters */ | |
| int dbi_pagesize; /*!< (fs blksize) */ | | int dbi_pagesize; /*!< (fs blksize) */ | |
| /*@unused@*/ /*@null@*/ | | /*@unused@*/ /*@null@*/ | |
| void * (*dbi_malloc) (size_t nbytes) | | void * (*dbi_malloc) (size_t nbytes) | |
| | | | |
| skipping to change at line 400 | | skipping to change at line 422 | |
| /*@*/; | | /*@*/; | |
| /* recno access parameters */ | | /* recno access parameters */ | |
| int dbi_re_flags; | | int dbi_re_flags; | |
| int dbi_re_delim; | | int dbi_re_delim; | |
| unsigned int dbi_re_len; | | unsigned int dbi_re_len; | |
| int dbi_re_pad; | | int dbi_re_pad; | |
| const char * dbi_re_source; | | const char * dbi_re_source; | |
| /* queue access parameters */ | | /* queue access parameters */ | |
| unsigned int dbi_q_extentsize; | | unsigned int dbi_q_extentsize; | |
| | | | |
|
| | | /*@null@*/ | |
| | | const char * dbi_primary; /*!< Primary table for secondary index. */ | |
| | | /*@null@*/ | |
| | | const char * dbi_foreign; | |
| | | | |
| /*@refcounted@*/ | | /*@refcounted@*/ | |
| rpmdb dbi_rpmdb; /*!< the parent rpm database */ | | rpmdb dbi_rpmdb; /*!< the parent rpm database */ | |
| rpmTag dbi_rpmtag; /*!< rpm tag used for index */ | | rpmTag dbi_rpmtag; /*!< rpm tag used for index */ | |
| size_t dbi_jlen; /*!< size of join key */ | | size_t dbi_jlen; /*!< size of join key */ | |
| | | | |
|
| /*@only@*//*@relnull@*/ | | /*@only@*/ /*@relnull@*/ | |
| DB * dbi_db; /*!< Berkeley DB * handle */ | | DB_SEQUENCE * dbi_seq; /*!< Berkeley DB_SEQUENCE handle */ | |
| /*@only@*//*@null@*/ | | /*@only@*/ /*@relnull@*/ | |
| DB_TXN * dbi_txnid; /*!< Bekerley DB_TXN * transaction i | | DB * dbi_db; /*!< Berkeley DB handle */ | |
| d */ | | /*@only@*/ /*@null@*/ | |
| /*@only@*//*@null@*/ | | DB_TXN * dbi_txnid; /*!< Berkeley DB_TXN handle */ | |
| | | /*@only@*/ /*@null@*/ | |
| void * dbi_stats; /*!< Berkeley DB statistics */ | | void * dbi_stats; /*!< Berkeley DB statistics */ | |
| | | | |
| /*@observer@*/ | | /*@observer@*/ | |
| const struct _dbiVec * dbi_vec; /*!< private methods */ | | const struct _dbiVec * dbi_vec; /*!< private methods */ | |
| | | | |
| }; | | }; | |
| #endif /* !defined(SWIG) */ | | #endif /* !defined(SWIG) */ | |
| | | | |
| /** \ingroup rpmdb | | /** \ingroup rpmdb | |
| * Describes the collection of index databases used by rpm. | | * Describes the collection of index databases used by rpm. | |
| */ | | */ | |
| struct rpmdb_s { | | struct rpmdb_s { | |
| struct rpmioItem_s _item; /*!< usage mutex and pool identifier. */ | | struct rpmioItem_s _item; /*!< usage mutex and pool identifier. */ | |
| /*@owned@*/ /*@relnull@*/ | | /*@owned@*/ /*@relnull@*/ | |
| const char * db_root; /*!< rpmdb path prefix */ | | const char * db_root; /*!< rpmdb path prefix */ | |
| /*@owned@*/ | | /*@owned@*/ | |
| const char * db_home; /*!< rpmdb directory path */ | | const char * db_home; /*!< rpmdb directory path */ | |
| int db_flags; | | int db_flags; | |
|
| int db_mode; /*!< rpmdb pen mode */ | | int db_mode; /*!< rpmdb open mode */ | |
| int db_perms; /*!< rpmdb open permissions */ | | int db_perms; /*!< rpmdb open permissions */ | |
| int db_api; /*!< Berkeley API type */ | | int db_api; /*!< Berkeley API type */ | |
| /*@owned@*/ | | /*@owned@*/ | |
| const char * db_errpfx; /*!< Berkeley DB error msg prefix. */ | | const char * db_errpfx; /*!< Berkeley DB error msg prefix. */ | |
| | | | |
| int db_remove_env; /*!< Discard dbenv on close? */ | | int db_remove_env; /*!< Discard dbenv on close? */ | |
|
| int db_filter_dups; /*!< Skip duplicate headers with --r | | uint32_t db_maxkey; /*!< Max. primary key. */ | |
| ebuilddb? */ | | | |
| int db_verifying; | | | |
| | | | |
| int db_chrootDone; /*!< If chroot(2) done, ignore db_ro
ot. */ | | int db_chrootDone; /*!< If chroot(2) done, ignore db_ro
ot. */ | |
| void (*db_errcall) (const char * db_errpfx, char * buffer) | | void (*db_errcall) (const char * db_errpfx, char * buffer) | |
| /*@*/; | | /*@*/; | |
| /*@shared@*/ | | /*@shared@*/ | |
| FILE * db_errfile; /*!< Berkeley DB stderr clone. */ | | FILE * db_errfile; /*!< Berkeley DB stderr clone. */ | |
| /*@only@*/ | | /*@only@*/ | |
| void * (*db_malloc) (size_t nbytes) | | void * (*db_malloc) (size_t nbytes) | |
| /*@*/; | | /*@*/; | |
| /*@only@*/ | | /*@only@*/ | |
| void * (*db_realloc) (/*@only@*//*@null@*/ void * ptr, size_t nbytes) | | void * (*db_realloc) (/*@only@*//*@null@*/ void * ptr, size_t nbytes) | |
| /*@*/; | | /*@*/; | |
| void (*db_free) (/*@only@*/ void * ptr) | | void (*db_free) (/*@only@*/ void * ptr) | |
| /*@modifies *ptr @*/; | | /*@modifies *ptr @*/; | |
| | | | |
| int (*db_export) (rpmdb db, Header h, int adding); | | int (*db_export) (rpmdb db, Header h, int adding); | |
| | | | |
|
| /*@only@*/ /*@null@*/ | | /*@refcounted@*/ | |
| unsigned char * db_bits; /*!< Header instance bit mask. */ | | Header db_h; /*!< Currently active header */ | |
| int db_nbits; /*!< No. of bits in mask. */ | | | |
| rpmdb db_next; /*!< Chain of rpmdbOpen'ed rpmdb's. */ | | rpmdb db_next; /*!< Chain of rpmdbOpen'ed rpmdb's. */ | |
| int db_opens; /*!< No. of opens for this rpmdb. */ | | int db_opens; /*!< No. of opens for this rpmdb. */ | |
|
| /*@only@*/ /*@null@*/ | | | |
| void * db_dbenv; /*!< Berkeley DB_ENV handle. */ | | void * db_dbenv; /*!< Berkeley DB_ENV handle. */ | |
|
| | | void * db_txn; /*!< Berkeley DB_TXN handle */ | |
| | | DB_LOGC * db_logc; /*!< Berkeley DB_LOGC handle */ | |
| | | DB_MPOOLFILE *db_mpf; /*!< Berkeley DB_MPOOLFILE handle */ | |
| | | | |
| tagStore_t db_tags; /*!< Tag name/value mappings. */ | | tagStore_t db_tags; /*!< Tag name/value mappings. */ | |
| size_t db_ndbi; /*!< No. of tag indices. */ | | size_t db_ndbi; /*!< No. of tag indices. */ | |
| /*@only@*/ /*@null@*/ | | /*@only@*/ /*@null@*/ | |
| dbiIndex * _dbi; /*!< Tag indices. */ | | dbiIndex * _dbi; /*!< Tag indices. */ | |
| | | | |
| struct rpmop_s db_getops; /*!< dbiGet statistics. */ | | struct rpmop_s db_getops; /*!< dbiGet statistics. */ | |
| struct rpmop_s db_putops; /*!< dbiPut statistics. */ | | struct rpmop_s db_putops; /*!< dbiPut statistics. */ | |
| struct rpmop_s db_delops; /*!< dbiDel statistics. */ | | struct rpmop_s db_delops; /*!< dbiDel statistics. */ | |
| | | | |
| #if defined(__LCLINT__) | | #if defined(__LCLINT__) | |
| /*@refs@*/ | | /*@refs@*/ | |
| int nrefs; /*!< (unused) keep splint happy */ | | int nrefs; /*!< (unused) keep splint happy */ | |
| #endif | | #endif | |
| }; | | }; | |
| #endif /* defined(_RPMDB_INTERNAL) */ | | #endif /* defined(_RPMDB_INTERNAL) */ | |
| | | | |
|
| /* for RPM's internal use only */ | | | |
| | | | |
| /** \ingroup rpmdb | | | |
| */ | | | |
| enum rpmdbFlags { | | | |
| RPMDB_FLAG_JUSTCHECK = (1 << 0), | | | |
| RPMDB_FLAG_MINIMAL = (1 << 1), | | | |
| /*@-enummemuse@*/ | | | |
| RPMDB_FLAG_CHROOT = (1 << 2) | | | |
| /*@=enummemuse@*/ | | | |
| }; | | | |
| | | | |
| #ifdef __cplusplus | | #ifdef __cplusplus | |
| extern "C" { | | extern "C" { | |
| #endif | | #endif | |
| | | | |
| #if defined(_RPMDB_INTERNAL) | | #if defined(_RPMDB_INTERNAL) | |
| /*@-exportlocal@*/ | | /*@-exportlocal@*/ | |
| #if defined(WITH_DB) || defined(WITH_SQLITE) | | #if defined(WITH_DB) || defined(WITH_SQLITE) | |
| /** \ingroup db3 | | /** \ingroup db3 | |
| * Return new configured index database handle instance. | | * Return new configured index database handle instance. | |
| * @param rpmdb rpm database | | * @param rpmdb rpm database | |
| | | | |
| skipping to change at line 513 | | skipping to change at line 533 | |
| dbiIndex db3New(rpmdb rpmdb, rpmTag tag) | | dbiIndex db3New(rpmdb rpmdb, rpmTag tag) | |
| /*@globals rpmGlobalMacroContext, h_errno, internalState @*/ | | /*@globals rpmGlobalMacroContext, h_errno, internalState @*/ | |
| /*@modifies rpmGlobalMacroContext, internalState @*/; | | /*@modifies rpmGlobalMacroContext, internalState @*/; | |
| | | | |
| /** \ingroup db3 | | /** \ingroup db3 | |
| * Destroy index database handle instance. | | * Destroy index database handle instance. | |
| * @param dbi index database handle | | * @param dbi index database handle | |
| * @return NULL always | | * @return NULL always | |
| */ | | */ | |
| /*@null@*/ | | /*@null@*/ | |
|
| dbiIndex db3Free( /*@only@*/ /*@null@*/ dbiIndex dbi) | | dbiIndex db3Free(/*@only@*/ /*@null@*/ dbiIndex dbi) | |
| /*@*/; | | /*@globals fileSystem, internalState @*/ | |
| | | /*@modifies dbi, fileSystem, internalState @*/; | |
| | | #define db3Free(_dbi) \ | |
| | | ((dbiIndex)rpmioFreePoolItem((rpmioItem)(_dbi), __FUNCTION__, __FILE__, | |
| | | __LINE__)) | |
| | | | |
| /** \ingroup db3 | | /** \ingroup db3 | |
| * Format db3 open flags for debugging print. | | * Format db3 open flags for debugging print. | |
| * @param dbflags db open flags | | * @param dbflags db open flags | |
| * @param print_dbenv_flags format db env flags instead? | | * @param print_dbenv_flags format db env flags instead? | |
| * @return formatted flags (static buffer) | | * @return formatted flags (static buffer) | |
| */ | | */ | |
| /*@-redecl@*/ | | /*@-redecl@*/ | |
| /*@exposed@*/ | | /*@exposed@*/ | |
| extern const char * prDbiOpenFlags(int dbflags, int print_dbenv_flags) | | extern const char * prDbiOpenFlags(int dbflags, int print_dbenv_flags) | |
| | | | |
| skipping to change at line 641 | | skipping to change at line 664 | |
| * @return 0 on success | | * @return 0 on success | |
| */ | | */ | |
| /*@unused@*/ static inline | | /*@unused@*/ static inline | |
| int dbiGet(dbiIndex dbi, /*@null@*/ DBC * dbcursor, DBT * key, DBT * data, | | int dbiGet(dbiIndex dbi, /*@null@*/ DBC * dbcursor, DBT * key, DBT * data, | |
| unsigned int flags) | | unsigned int flags) | |
| /*@globals fileSystem, internalState @*/ | | /*@globals fileSystem, internalState @*/ | |
| /*@modifies dbi, *dbcursor, *key, *data, fileSystem, internalState @
*/ | | /*@modifies dbi, *dbcursor, *key, *data, fileSystem, internalState @
*/ | |
| { | | { | |
| rpmop sw = (rpmop)dbiStatsAccumulator(dbi, 14); /* RPMTS_OP_DBGET */ | | rpmop sw = (rpmop)dbiStatsAccumulator(dbi, 14); /* RPMTS_OP_DBGET */ | |
| int rc; | | int rc; | |
|
| assert((flags == DB_NEXT) || (key->data != NULL && key->size > 0)); | | | |
| (void) rpmswEnter(sw, 0); | | (void) rpmswEnter(sw, 0); | |
| rc = (dbi->dbi_vec->cget) (dbi, dbcursor, key, data, flags); | | rc = (dbi->dbi_vec->cget) (dbi, dbcursor, key, data, flags); | |
| (void) rpmswExit(sw, data->size); | | (void) rpmswExit(sw, data->size); | |
| return rc; | | return rc; | |
| } | | } | |
| | | | |
| /** \ingroup dbi | | /** \ingroup dbi | |
| * Retrieve (key,data) pair using dbcursor->c_pget. | | * Retrieve (key,data) pair using dbcursor->c_pget. | |
| * @param dbi index database handle | | * @param dbi index database handle | |
| * @param dbcursor database cursor (NULL will use db->get) | | * @param dbcursor database cursor (NULL will use db->get) | |
| | | | |
| skipping to change at line 666 | | skipping to change at line 688 | |
| * @return 0 on success | | * @return 0 on success | |
| */ | | */ | |
| /*@unused@*/ static inline | | /*@unused@*/ static inline | |
| int dbiPget(dbiIndex dbi, /*@null@*/ DBC * dbcursor, | | int dbiPget(dbiIndex dbi, /*@null@*/ DBC * dbcursor, | |
| DBT * key, DBT * pkey, DBT * data, unsigned int flags) | | DBT * key, DBT * pkey, DBT * data, unsigned int flags) | |
| /*@globals fileSystem, internalState @*/ | | /*@globals fileSystem, internalState @*/ | |
| /*@modifies dbi, *dbcursor, *key, *pkey, *data, fileSystem, internal
State @*/ | | /*@modifies dbi, *dbcursor, *key, *pkey, *data, fileSystem, internal
State @*/ | |
| { | | { | |
| rpmop sw = (rpmop)dbiStatsAccumulator(dbi, 14); /* RPMTS_OP_DBGET */ | | rpmop sw = (rpmop)dbiStatsAccumulator(dbi, 14); /* RPMTS_OP_DBGET */ | |
| int rc; | | int rc; | |
|
| assert((flags == DB_NEXT) || (key->data != NULL && key->size > 0)); | | | |
| (void) rpmswEnter(sw, 0); | | (void) rpmswEnter(sw, 0); | |
| rc = (dbi->dbi_vec->cpget) (dbi, dbcursor, key, pkey, data, flags); | | rc = (dbi->dbi_vec->cpget) (dbi, dbcursor, key, pkey, data, flags); | |
| (void) rpmswExit(sw, data->size); | | (void) rpmswExit(sw, data->size); | |
| return rc; | | return rc; | |
| } | | } | |
| | | | |
| /** \ingroup dbi | | /** \ingroup dbi | |
| * Store (key,data) pair in index database. | | * Store (key,data) pair in index database. | |
| * @param dbi index database handle | | * @param dbi index database handle | |
| * @param dbcursor database cursor (NULL will use db->put) | | * @param dbcursor database cursor (NULL will use db->put) | |
| | | | |
| skipping to change at line 715 | | skipping to change at line 736 | |
| /*@unused@*/ static inline | | /*@unused@*/ static inline | |
| int dbiCount(dbiIndex dbi, DBC * dbcursor, /*@out@*/ unsigned int * countp, | | int dbiCount(dbiIndex dbi, DBC * dbcursor, /*@out@*/ unsigned int * countp, | |
| unsigned int flags) | | unsigned int flags) | |
| /*@globals fileSystem @*/ | | /*@globals fileSystem @*/ | |
| /*@modifies *dbcursor, fileSystem @*/ | | /*@modifies *dbcursor, fileSystem @*/ | |
| { | | { | |
| return (*dbi->dbi_vec->ccount) (dbi, dbcursor, countp, flags); | | return (*dbi->dbi_vec->ccount) (dbi, dbcursor, countp, flags); | |
| } | | } | |
| | | | |
| /** \ingroup dbi | | /** \ingroup dbi | |
|
| * Verify (and close) index database. | | * Close index database. | |
| * @param dbi index database handle | | * @param dbi index database handle | |
| * @param flags (unused) | | * @param flags (unused) | |
| * @return 0 on success | | * @return 0 on success | |
| */ | | */ | |
| /*@unused@*/ static inline | | /*@unused@*/ static inline | |
|
| int dbiVerify(/*@only@*/ dbiIndex dbi, unsigned int flags) | | int dbiClose(/*@only@*/ dbiIndex dbi, unsigned int flags) | |
| /*@globals fileSystem @*/ | | /*@globals fileSystem @*/ | |
| /*@modifies dbi, fileSystem @*/ | | /*@modifies dbi, fileSystem @*/ | |
| { | | { | |
|
| dbi->dbi_verify_on_close = 1; | | | |
| return (*dbi->dbi_vec->close) (dbi, flags); | | return (*dbi->dbi_vec->close) (dbi, flags); | |
| } | | } | |
| | | | |
| /** \ingroup dbi | | /** \ingroup dbi | |
|
| * Close index database. | | * Flush pending operations to disk. | |
| * @param dbi index database handle | | * @param dbi index database handle | |
| * @param flags (unused) | | * @param flags (unused) | |
| * @return 0 on success | | * @return 0 on success | |
| */ | | */ | |
| /*@unused@*/ static inline | | /*@unused@*/ static inline | |
|
| int dbiClose(/*@only@*/ dbiIndex dbi, unsigned int flags) | | int dbiSync (dbiIndex dbi, unsigned int flags) | |
| /*@globals fileSystem @*/ | | /*@globals fileSystem @*/ | |
|
| /*@modifies dbi, fileSystem @*/ | | /*@modifies fileSystem @*/ | |
| { | | { | |
|
| return (*dbi->dbi_vec->close) (dbi, flags); | | return (*dbi->dbi_vec->sync) (dbi, flags); | |
| } | | } | |
| | | | |
| /** \ingroup dbi | | /** \ingroup dbi | |
|
| * Flush pending operations to disk. | | * Return whether key exists in a database. | |
| * @param dbi index database handle | | * @param dbi index database handle | |
|
| * @param flags (unused) | | * @param key retrieve key value/length/flags | |
| | | * @param flags usually 0 | |
| | | * @return 0 if key exists, DB_NOTFOUND if not, else error | |
| | | */ | |
| | | /*@unused@*/ static inline | |
| | | int dbiExists(dbiIndex dbi, /*@out@*/ DBT * key, unsigned int flags) | |
| | | /*@globals fileSystem @*/ | |
| | | /*@modifies dbi, fileSystem @*/ | |
| | | { | |
| | | return (*dbi->dbi_vec->exists) (dbi, key, flags); | |
| | | } | |
| | | | |
| | | /** \ingroup dbi | |
| | | * Return next sequence number. | |
| | | * @param dbi index database handle (with attached sequence) | |
| | | * @retval *seqnop IN: delta (0 does seqno++) OUT: returned 64bit seqno | |
| | | * @param flags usually 0 | |
| * @return 0 on success | | * @return 0 on success | |
| */ | | */ | |
| /*@unused@*/ static inline | | /*@unused@*/ static inline | |
|
| int dbiSync (dbiIndex dbi, unsigned int flags) | | int dbiSeqno(dbiIndex dbi, /*@null@*/ int64_t * seqnop, unsigned int flags) | |
| /*@globals fileSystem @*/ | | /*@globals fileSystem @*/ | |
|
| /*@modifies fileSystem @*/ | | /*@modifies dbi, *seqnop, fileSystem @*/ | |
| { | | { | |
|
| return (*dbi->dbi_vec->sync) (dbi, flags); | | return (*dbi->dbi_vec->seqno) (dbi, seqnop, flags); | |
| } | | } | |
| | | | |
| /** \ingroup dbi | | /** \ingroup dbi | |
| * Associate secondary database with primary. | | * Associate secondary database with primary. | |
| * @param dbi index database handle | | * @param dbi index database handle | |
| * @param dbisecondary secondary index database handle | | * @param dbisecondary secondary index database handle | |
| * @param callback create secondary key from primary (NULL if DB_RDONLY
) | | * @param callback create secondary key from primary (NULL if DB_RDONLY
) | |
| * @param flags DB_CREATE or 0 | | * @param flags DB_CREATE or 0 | |
| * @return 0 on success | | * @return 0 on success | |
| */ | | */ | |
| | | | |
| skipping to change at line 801 | | skipping to change at line 837 | |
| | | | |
| /** \ingroup dbi | | /** \ingroup dbi | |
| * Is database byte swapped? | | * Is database byte swapped? | |
| * @param dbi index database handle | | * @param dbi index database handle | |
| * @return 0 same order, 1 swapped order | | * @return 0 same order, 1 swapped order | |
| */ | | */ | |
| /*@unused@*/ static inline | | /*@unused@*/ static inline | |
| int dbiByteSwapped(dbiIndex dbi) | | int dbiByteSwapped(dbiIndex dbi) | |
| /*@modifies dbi @*/ | | /*@modifies dbi @*/ | |
| { | | { | |
|
| if (dbi->dbi_byteswapped == -1) | | return (*dbi->dbi_vec->byteswapped) (dbi); | |
| dbi->dbi_byteswapped = (*dbi->dbi_vec->byteswapped) (dbi); | | | |
| return dbi->dbi_byteswapped; | | | |
| } | | } | |
| | | | |
| /** \ingroup dbi | | /** \ingroup dbi | |
| * Return dbi statistics. | | * Return dbi statistics. | |
| * @param dbi index database handle | | * @param dbi index database handle | |
| * @param flags DB_FAST_STAT or 0 | | * @param flags DB_FAST_STAT or 0 | |
| * @return 0 on success | | * @return 0 on success | |
| */ | | */ | |
| /*@unused@*/ static inline | | /*@unused@*/ static inline | |
| int dbiStat(dbiIndex dbi, unsigned int flags) | | int dbiStat(dbiIndex dbi, unsigned int flags) | |
| /*@modifies dbi @*/ | | /*@modifies dbi @*/ | |
| { | | { | |
| return (*dbi->dbi_vec->stat) (dbi, flags); | | return (*dbi->dbi_vec->stat) (dbi, flags); | |
| } | | } | |
| | | | |
| /** \ingroup dbi | | /** \ingroup dbi | |
| * Return dbi transaction id. | | * Return dbi transaction id. | |
| * @param dbi index database handle | | * @param dbi index database handle | |
| * @return transaction id | | * @return transaction id | |
| */ | | */ | |
|
| /*@unused@*/ static inline /*@observer@*/ /*@null@*/ | | /*@unused@*/ static inline /*@null@*/ | |
| DB_TXN * dbiTxnid(dbiIndex dbi) | | DB_TXN * dbiTxnid(dbiIndex dbi) | |
| /*@*/ | | /*@*/ | |
| { | | { | |
|
| return dbi->dbi_txnid; | | rpmdb rpmdb = (dbi ? dbi->dbi_rpmdb : NULL); | |
| | | DB_TXN * _txn = (rpmdb ? rpmdb->db_txn : NULL); | |
| | | return _txn; | |
| | | } | |
| | | | |
| | | #if defined(_RPMDB_INTERNAL) | |
| | | | |
| | | #include <rpmlio.h> /* XXX add to psm.c/fsm.c */ | |
| | | | |
| | | #if !defined(__LCLINT__) | |
| | | /*@unused@*/ static inline | |
| | | int rpmlkId(rpmdb rpmdb, uint32_t *_idp) | |
| | | { | |
| | | DB_ENV * dbenv = rpmdb->db_dbenv; | |
| | | int rc = (rpmdb->_dbi[0]->dbi_eflags & 0x080) | |
| | | ? dbenv->lock_id(dbenv, _idp) : ENOTSUP; | |
| | | if (_rpmdb_debug) | |
| | | fprintf(stderr, "<-- %s(%p,%p) id 0x%x rc %d\n", "dbenv->lock_id", dbenv, _ | |
| | | idp, *_idp, rc); | |
| | | return rc; | |
| | | } | |
| | | | |
| | | /*@unused@*/ static inline | |
| | | int rpmlkIdFree(rpmdb rpmdb, uint32_t _id) | |
| | | { | |
| | | DB_ENV * dbenv = rpmdb->db_dbenv; | |
| | | int rc = (rpmdb->_dbi[0]->dbi_eflags & 0x080) | |
| | | ? dbenv->lock_id_free(dbenv, _id) : ENOTSUP; | |
| | | if (_rpmdb_debug) | |
| | | fprintf(stderr, "<-- %s(%p,%u) rc %d\n", "dbenv->lock_id_free", dbenv, (uns | |
| | | igned)_id, rc); | |
| | | return rc; | |
| | | } | |
| | | | |
| | | /*@unused@*/ static inline | |
| | | int rpmlkGet(rpmdb rpmdb, DBT * _object, uint32_t _lockmode, void * _lock) | |
| | | { | |
| | | DB_ENV * dbenv = rpmdb->db_dbenv; | |
| | | uint32_t _locker = 0x12344321; | |
| | | uint32_t _flags = 0; | |
| | | int rc = (rpmdb->_dbi[0]->dbi_eflags & 0x080) | |
| | | ? dbenv->lock_get(dbenv, _locker, _flags, _object, _lockmode, _lock) | |
| | | : ENOTSUP; | |
| | | if (_rpmdb_debug) | |
| | | fprintf(stderr, "<-- %s(%p,0x%x,0x%x,%p,0x%x,%p) rc %d\n", "dbenv->lock_get | |
| | | ", dbenv, _locker, _flags, _object, _lockmode, _lock, rc); | |
| | | return rc; | |
| | | } | |
| | | | |
| | | /*@unused@*/ static inline | |
| | | int rpmlkPut(rpmdb rpmdb, void * _lock) | |
| | | { | |
| | | DB_ENV * dbenv = rpmdb->db_dbenv; | |
| | | int rc = (rpmdb->_dbi[0]->dbi_eflags & 0x080) | |
| | | ? dbenv->lock_put(dbenv, _lock) | |
| | | : ENOTSUP; | |
| | | if (_rpmdb_debug) | |
| | | fprintf(stderr, "<-- %s(%p,%p) rc %d\n", "dbenv->lock_put", dbenv, _lock, r | |
| | | c); | |
| | | return rc; | |
| | | } | |
| | | | |
| | | /*@unused@*/ static inline | |
| | | int rpmlgcOpen(rpmdb rpmdb) | |
| | | { | |
| | | DB_ENV * dbenv = rpmdb->db_dbenv; | |
| | | DB_LOGC * _logc = NULL; | |
| | | uint32_t _flags = 0; | |
| | | int rc = (rpmdb->_dbi[0]->dbi_eflags & 0x100) | |
| | | ? dbenv->log_cursor(dbenv, &_logc, _flags) : ENOTSUP; | |
| | | rpmdb->db_logc = (!rc ? _logc : NULL); | |
| | | if (_rpmdb_debug) | |
| | | fprintf(stderr, "<-- %s(%p,%p,0x%x) logc %p rc %d\n", "dbenv->log_cursor", | |
| | | dbenv, &_logc, _flags, _logc, rc); | |
| | | return rc; | |
| | | } | |
| | | | |
| | | /*@unused@*/ static inline | |
| | | int rpmlgcGet(rpmdb rpmdb, DB_LSN * _lsn, DBT * data, uint32_t flags) | |
| | | { | |
| | | DB_LOGC * _logc = rpmdb->db_logc; | |
| | | int rc = (_logc ? _logc->get(_logc, _lsn, data, flags) : ENOTSUP); | |
| | | if (_rpmdb_debug) | |
| | | fprintf(stderr, "<-- %s(%p,%p,%p,0x%x) rc %d\n", "logc->get", _logc, _lsn, | |
| | | data, flags, rc); | |
| | | return rc; | |
| | | } | |
| | | | |
| | | /*@unused@*/ static inline | |
| | | int rpmlgcClose(rpmdb rpmdb) | |
| | | { | |
| | | DB_LOGC * _logc = rpmdb->db_logc; | |
| | | uint32_t _flags = 0; | |
| | | int rc = (_logc ? _logc->close(_logc, _flags) : ENOTSUP); | |
| | | rpmdb->db_logc = NULL; | |
| | | if (_rpmdb_debug) | |
| | | fprintf(stderr, "<-- %s(%p) rc %d\n", "logc->close", _logc, rc); | |
| | | return rc; | |
| | | } | |
| | | | |
| | | /*@unused@*/ static inline | |
| | | int rpmlgcFile(rpmdb rpmdb, const DB_LSN * _lsn, char * name, size_t len) | |
| | | { | |
| | | DB_ENV * dbenv = rpmdb->db_dbenv; | |
| | | int rc = dbenv->log_file(dbenv, _lsn, name, len); | |
| | | if (_rpmdb_debug) | |
| | | fprintf(stderr, "<-- %s(%p,%p,%p[%u]) \"%s\" rc %d\n", "dbenv->log_file", d | |
| | | benv, _lsn, name, (unsigned)len, name, rc); | |
| | | return rc; | |
| | | } | |
| | | | |
| | | /*@unused@*/ static inline | |
| | | int rpmlgcFlush(rpmdb rpmdb, const DB_LSN * _lsn) | |
| | | { | |
| | | DB_ENV * dbenv = rpmdb->db_dbenv; | |
| | | int rc = dbenv->log_flush(dbenv, _lsn); | |
| | | if (_rpmdb_debug) | |
| | | fprintf(stderr, "<-- %s(%p,%p) rc %d\n", "dbenv->log_flush", dbenv, _lsn, r | |
| | | c); | |
| | | return rc; | |
| | | } | |
| | | | |
| | | /*@unused@*/ static inline | |
| | | int rpmlgcPrintf(rpmdb rpmdb, const char * fmt, void *_A1, void *_A2, void | |
| | | *_A3, void *_A4, void *_A5) | |
| | | { | |
| | | DB_ENV * dbenv = rpmdb->db_dbenv; | |
| | | DB_TXN * _txnid = rpmdb->db_txn; | |
| | | int rc = dbenv->log_printf(dbenv, _txnid, fmt, _A1, _A2, _A3, _A4, _A5) | |
| | | ; | |
| | | if (_rpmdb_debug) | |
| | | fprintf(stderr, "<-- %s(%p,%p,\"%s\", ...) rc %d\n", "dbenv->log_printf", d | |
| | | benv, _txnid, fmt, rc); | |
| | | return rc; | |
| | | } | |
| | | | |
| | | /*@unused@*/ static inline | |
| | | int rpmlgcPut(rpmdb rpmdb, DB_LSN * _lsn, const DBT * data, uint32_t flags) | |
| | | { | |
| | | DB_ENV * dbenv = rpmdb->db_dbenv; | |
| | | int rc = dbenv->log_put(dbenv, _lsn, data, flags); | |
| | | if (_rpmdb_debug) | |
| | | fprintf(stderr, "<-- %s(%p,%p,%p,0x%x) rc %d\n", "dbenv->log_put", dbenv, _ | |
| | | lsn, data, flags, rc); | |
| | | return rc; | |
| | | } | |
| | | | |
| | | /*@unused@*/ static inline | |
| | | int rpmmpfSyncAll(rpmdb rpmdb) | |
| | | { | |
| | | DB_ENV * dbenv = rpmdb->db_dbenv; | |
| | | DB_LSN * _lsn = NULL; | |
| | | int rc = (rpmdb->_dbi[0]->dbi_eflags & 0x100) | |
| | | ? dbenv->memp_sync(dbenv, _lsn) : ENOTSUP; | |
| | | if (_rpmdb_debug) | |
| | | fprintf(stderr, "<-- %s(%p,%p) rc %d\n", "dbenv->memp_sync", dbenv, _lsn, r | |
| | | c); | |
| | | return rc; | |
| | | } | |
| | | | |
| | | /*@unused@*/ static inline | |
| | | int rpmmpfTrickle(rpmdb rpmdb) | |
| | | { | |
| | | DB_ENV * dbenv = rpmdb->db_dbenv; | |
| | | int _percent = 20; | |
| | | int _nwrote = 0; | |
| | | int rc = (rpmdb->_dbi[0]->dbi_eflags & 0x100) | |
| | | ? dbenv->memp_trickle(dbenv, _percent, &_nwrote) : ENOTSUP; | |
| | | if (_rpmdb_debug) | |
| | | fprintf(stderr, "<-- %s(%p,%d) nwrote %d rc %d\n", "dbenv->memp_trickle", d | |
| | | benv, _percent, _nwrote, rc); | |
| | | return rc; | |
| | | } | |
| | | | |
| | | /*@unused@*/ static inline | |
| | | int rpmmpfClose(rpmdb rpmdb) | |
| | | { | |
| | | DB_MPOOLFILE * mpf = rpmdb->db_mpf; | |
| | | uint32_t _flags = 0; | |
| | | int rc = (mpf ? mpf->close(mpf, _flags) : ENOTSUP); | |
| | | rpmdb->db_mpf = NULL; | |
| | | if (_rpmdb_debug) | |
| | | fprintf(stderr, "<-- %s(%p) rc %d\n", "mpf->close", mpf, rc); | |
| | | return rc; | |
| | | } | |
| | | | |
| | | /*@unused@*/ static inline | |
| | | int rpmmpfGet(rpmdb rpmdb, uint32_t * _pgnop, uint32_t _flags, void ** _pag | |
| | | ep) | |
| | | { | |
| | | DB_MPOOLFILE * mpf = rpmdb->db_mpf; | |
| | | DB_TXN * _txnid = rpmdb->db_txn; | |
| | | int rc = mpf->get(mpf, _pgnop, _txnid, _flags, _pagep); | |
| | | if (_rpmdb_debug) | |
| | | fprintf(stderr, "<-- %s(%p,%p,%p,0x%x,%p) rc %d\n", "mpf->get", mpf, _pgnop | |
| | | , _txnid, _flags, _pagep, rc); | |
| | | return rc; | |
| | | } | |
| | | | |
| | | /*@unused@*/ static inline | |
| | | int rpmmpfOpen(rpmdb rpmdb, /*@null@*/ const char * fn, uint32_t flags) | |
| | | { | |
| | | DB_ENV * dbenv = rpmdb->db_dbenv; | |
| | | DB_MPOOLFILE * mpf = NULL; | |
| | | int _perms = rpmdb->_dbi[0]->dbi_perms; | |
| | | size_t _pagesize = BUFSIZ; | |
| | | uint32_t _fcreate_flags = 0; | |
| | | int rc = (rpmdb->_dbi[0]->dbi_eflags & 0x100) | |
| | | ? dbenv->memp_fcreate(dbenv, &mpf, _fcreate_flags) : ENOTSUP; | |
| | | | |
| | | if (_rpmdb_debug) | |
| | | fprintf(stderr, "<-- %s(%p,&mpf,0x%x) mpf %p rc %d\n", "dbenv->memp_fcreate | |
| | | ", dbenv, _fcreate_flags, mpf, rc); | |
| | | if (rc) goto exit; | |
| | | rc = mpf->open(mpf, fn, flags, _perms, _pagesize); | |
| | | rpmdb->db_mpf = (!rc ? mpf : NULL); /* FIXME: mpf memlea | |
| | | k */ | |
| | | if (_rpmdb_debug) | |
| | | fprintf(stderr, "<-- %s(%p,%s,0x%x) rc %d\n", "mpf->open", mpf, fn, flags, | |
| | | rc); | |
| | | | |
| | | exit: | |
| | | return rc; | |
| | | } | |
| | | | |
| | | /*@unused@*/ static inline | |
| | | int rpmmpfPut(rpmdb rpmdb, void * _page, uint32_t flags) | |
| | | { | |
| | | DB_MPOOLFILE * mpf = rpmdb->db_mpf; | |
| | | uint32_t _priority = DB_PRIORITY_DEFAULT; | |
| | | int rc = mpf->put(mpf, _page, _priority, flags); | |
| | | if (_rpmdb_debug) | |
| | | fprintf(stderr, "<-- %s(%p,%p,0x%x,0x%x) rc %d\n", "mpf->put", mpf, _page, | |
| | | _priority, flags, rc); | |
| | | return rc; | |
| | | } | |
| | | | |
| | | /*@unused@*/ static inline | |
| | | int rpmmpfSync(rpmdb rpmdb) | |
| | | { | |
| | | DB_MPOOLFILE * mpf = rpmdb->db_mpf; | |
| | | int rc = (mpf ? mpf->sync(mpf) : ENOTSUP); | |
| | | if (_rpmdb_debug) | |
| | | fprintf(stderr, "<-- %s(%p) rc %d\n", "mpf->close", mpf, rc); | |
| | | return rc; | |
| } | | } | |
|
| | | #endif /* __LCLINT__ */ | |
| | | | |
| | | #endif /* _RPMDB_INTERNAL */ | |
| /*@=globuse =mustmod @*/ | | /*@=globuse =mustmod @*/ | |
| #endif /* !defined(SWIG) */ | | #endif /* !defined(SWIG) */ | |
| | | | |
| /*@=exportlocal@*/ | | /*@=exportlocal@*/ | |
| | | | |
| /** \ingroup dbi | | /** \ingroup dbi | |
| * Destroy set of index database items. | | * Destroy set of index database items. | |
| * @param set set of index database items | | * @param set set of index database items | |
| * @return NULL always | | * @return NULL always | |
| */ | | */ | |
| | | | |
| skipping to change at line 858 | | skipping to change at line 1119 | |
| */ | | */ | |
| unsigned int dbiIndexSetCount(dbiIndexSet set) | | unsigned int dbiIndexSetCount(dbiIndexSet set) | |
| /*@*/; | | /*@*/; | |
| | | | |
| /** \ingroup dbi | | /** \ingroup dbi | |
| * Return record offset of header from element in index database set. | | * Return record offset of header from element in index database set. | |
| * @param set set of index database items | | * @param set set of index database items | |
| * @param recno index of item in set | | * @param recno index of item in set | |
| * @return record offset of header | | * @return record offset of header | |
| */ | | */ | |
|
| unsigned int dbiIndexRecordOffset(dbiIndexSet set, int recno) | | uint32_t dbiIndexRecordOffset(dbiIndexSet set, unsigned int recno) | |
| /*@*/; | | /*@*/; | |
| | | | |
| /** \ingroup dbi | | /** \ingroup dbi | |
| * Return file index from element in index database set. | | * Return file index from element in index database set. | |
| * @param set set of index database items | | * @param set set of index database items | |
| * @param recno index of item in set | | * @param recno index of item in set | |
| * @return file index | | * @return file index | |
| */ | | */ | |
|
| unsigned int dbiIndexRecordFileNumber(dbiIndexSet set, int recno) | | uint32_t dbiIndexRecordFileNumber(dbiIndexSet set, unsigned int recno) | |
| /*@*/; | | /*@*/; | |
| #endif /* defined(_RPMDB_INTERNAL) */ | | #endif /* defined(_RPMDB_INTERNAL) */ | |
| | | | |
| /** \ingroup rpmdb | | /** \ingroup rpmdb | |
| * Unreference a database instance. | | * Unreference a database instance. | |
| * @param db rpm database | | * @param db rpm database | |
| * @param msg | | * @param msg | |
| * @return NULL always | | * @return NULL always | |
| */ | | */ | |
| /*@unused@*/ /*@null@*/ | | /*@unused@*/ /*@null@*/ | |
| | | | |
| skipping to change at line 900 | | skipping to change at line 1161 | |
| rpmdb rpmdbLink (rpmdb db, const char * msg) | | rpmdb rpmdbLink (rpmdb db, const char * msg) | |
| /*@modifies db @*/; | | /*@modifies db @*/; | |
| #define rpmdbLink(_db, _msg) \ | | #define rpmdbLink(_db, _msg) \ | |
| ((void *)rpmioLinkPoolItem((rpmioItem)(_db), _msg, __FILE__, __LINE_
_)) | | ((void *)rpmioLinkPoolItem((rpmioItem)(_db), _msg, __FILE__, __LINE_
_)) | |
| | | | |
| /** @todo document rpmdbNew | | /** @todo document rpmdbNew | |
| */ | | */ | |
| /*@only@*/ /*@null@*/ | | /*@only@*/ /*@null@*/ | |
| rpmdb rpmdbNew(/*@kept@*/ /*@null@*/ const char * root, | | rpmdb rpmdbNew(/*@kept@*/ /*@null@*/ const char * root, | |
| /*@kept@*/ /*@null@*/ const char * home, | | /*@kept@*/ /*@null@*/ const char * home, | |
|
| int mode, int perms, int flags) | | int mode, mode_t perms, int flags) | |
| /*@globals fileSystem, internalState @*/ | | /*@globals fileSystem, internalState @*/ | |
| /*@modifies fileSystem, internalState @*/; | | /*@modifies fileSystem, internalState @*/; | |
| | | | |
|
| /** @todo document rpmdbOpenDatabase | | | |
| */ | | | |
| int rpmdbOpenDatabase(/*@null@*/ const char * prefix, | | | |
| /*@null@*/ const char * dbpath, | | | |
| int _dbapi, /*@null@*/ /*@out@*/ rpmdb *dbp, | | | |
| int mode, int perms, int flags) | | | |
| /*@globals rpmGlobalMacroContext, h_errno, | | | |
| fileSystem, internalState @*/ | | | |
| /*@modifies *dbp, rpmGlobalMacroContext, | | | |
| fileSystem, internalState @*/; | | | |
| | | | |
| /** \ingroup rpmdb | | /** \ingroup rpmdb | |
| * Open rpm database. | | * Open rpm database. | |
| * @param prefix path to top of install tree | | * @param prefix path to top of install tree | |
| * @retval dbp address of rpm database | | * @retval dbp address of rpm database | |
| * @param mode open(2) flags: O_RDWR or O_RDONLY (O_CREAT also) | | * @param mode open(2) flags: O_RDWR or O_RDONLY (O_CREAT also) | |
| * @param perms database permissions | | * @param perms database permissions | |
| * @return 0 on success | | * @return 0 on success | |
| */ | | */ | |
|
| int rpmdbOpen (/*@null@*/ const char * prefix, /*@null@*/ /*@out@*/ rpmdb * | | int rpmdbOpen(/*@null@*/ const char * prefix, /*@null@*/ /*@out@*/ rpmdb * | |
| dbp, | | dbp, | |
| int mode, int perms) | | int mode, mode_t perms) | |
| /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState
@*/ | | /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState
@*/ | |
| /*@modifies *dbp, rpmGlobalMacroContext, fileSystem, internalState @
*/; | | /*@modifies *dbp, rpmGlobalMacroContext, fileSystem, internalState @
*/; | |
| | | | |
|
| /** \ingroup rpmdb | | | |
| * Initialize database. | | | |
| * @param prefix path to top of install tree | | | |
| * @param perms database permissions | | | |
| * @return 0 on success | | | |
| */ | | | |
| int rpmdbInit(/*@null@*/ const char * prefix, int perms) | | | |
| /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState | | | |
| @*/ | | | |
| /*@modifies rpmGlobalMacroContext, fileSystem, internalState @*/; | | | |
| | | | |
| /** \ingroup rpmdb | | | |
| * Verify all database components. | | | |
| * @param db rpm database | | | |
| * @return 0 on success | | | |
| */ | | | |
| int rpmdbVerifyAllDBI(rpmdb db) | | | |
| /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState | | | |
| @*/ | | | |
| /*@modifies db, rpmGlobalMacroContext, fileSystem, internalState @*/ | | | |
| ; | | | |
| | | | |
| /** \ingroup rpmdb | | | |
| * Open and verify all database components. | | | |
| * @param prefix path to top of install tree | | | |
| * @return 0 on success | | | |
| */ | | | |
| int rpmdbVerify(/*@null@*/ const char * prefix) | | | |
| /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState | | | |
| @*/ | | | |
| /*@modifies rpmGlobalMacroContext, fileSystem, internalState @*/; | | | |
| | | | |
| /** | | /** | |
| * Block access to a single database index. | | * Block access to a single database index. | |
| * @param db rpm database | | * @param db rpm database | |
| * @param tag rpm tag (negative to block) | | * @param tag rpm tag (negative to block) | |
| * @return 0 on success | | * @return 0 on success | |
| */ | | */ | |
| int rpmdbBlockDBI(/*@null@*/ rpmdb db, int tag) | | int rpmdbBlockDBI(/*@null@*/ rpmdb db, int tag) | |
| /*@modifies db @*/; | | /*@modifies db @*/; | |
| | | | |
| /** | | /** | |
| | | | |
| skipping to change at line 985 | | skipping to change at line 1207 | |
| /** \ingroup rpmdb | | /** \ingroup rpmdb | |
| * Close all database indices and free rpmdb. | | * Close all database indices and free rpmdb. | |
| * @param db rpm database | | * @param db rpm database | |
| * @return 0 on success | | * @return 0 on success | |
| */ | | */ | |
| int rpmdbClose (/*@killref@*/ /*@only@*/ /*@null@*/ rpmdb db) | | int rpmdbClose (/*@killref@*/ /*@only@*/ /*@null@*/ rpmdb db) | |
| /*@globals fileSystem @*/ | | /*@globals fileSystem @*/ | |
| /*@modifies db, fileSystem @*/; | | /*@modifies db, fileSystem @*/; | |
| | | | |
| /** \ingroup rpmdb | | /** \ingroup rpmdb | |
|
| * Sync all database indices. | | | |
| * @param db rpm database | | | |
| * @return 0 on success | | | |
| */ | | | |
| int rpmdbSync (/*@null@*/ rpmdb db) | | | |
| /*@globals fileSystem @*/ | | | |
| /*@modifies fileSystem @*/; | | | |
| | | | |
| /** \ingroup rpmdb | | | |
| * Open all database indices. | | * Open all database indices. | |
| * @param db rpm database | | * @param db rpm database | |
| * @return 0 on success | | * @return 0 on success | |
| */ | | */ | |
| /*@-exportlocal@*/ | | /*@-exportlocal@*/ | |
| int rpmdbOpenAll (/*@null@*/ rpmdb db) | | int rpmdbOpenAll (/*@null@*/ rpmdb db) | |
| /*@globals rpmGlobalMacroContext, h_errno, internalState @*/ | | /*@globals rpmGlobalMacroContext, h_errno, internalState @*/ | |
| /*@modifies db, rpmGlobalMacroContext, internalState @*/; | | /*@modifies db, rpmGlobalMacroContext, internalState @*/; | |
| /*@=exportlocal@*/ | | /*@=exportlocal@*/ | |
| | | | |
| | | | |
| skipping to change at line 1020 | | skipping to change at line 1233 | |
| * @return number of instances | | * @return number of instances | |
| */ | | */ | |
| int rpmdbCount(/*@null@*/ rpmdb db, rpmTag tag, | | int rpmdbCount(/*@null@*/ rpmdb db, rpmTag tag, | |
| const void * keyp, size_t keylen) | | const void * keyp, size_t keylen) | |
| /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState
@*/ | | /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState
@*/ | |
| /*@modifies db, rpmGlobalMacroContext, fileSystem, internalState @*/
; | | /*@modifies db, rpmGlobalMacroContext, fileSystem, internalState @*/
; | |
| | | | |
| /** \ingroup rpmdb | | /** \ingroup rpmdb | |
| * Return number of instances of package in Name index. | | * Return number of instances of package in Name index. | |
| * @param db rpm database | | * @param db rpm database | |
|
| * @param name rpm package name | | * @param N rpm package name | |
| * @return number of instances | | * @return number of instances | |
| */ | | */ | |
|
| int rpmdbCountPackages(/*@null@*/ rpmdb db, const char * name) | | int rpmdbCountPackages(/*@null@*/ rpmdb db, const char * N) | |
| /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState
@*/ | | /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState
@*/ | |
| /*@modifies db, rpmGlobalMacroContext, fileSystem, internalState @*/
; | | /*@modifies db, rpmGlobalMacroContext, fileSystem, internalState @*/
; | |
| | | | |
| /** \ingroup rpmdb | | /** \ingroup rpmdb | |
|
| * Return header instance join key for current position of rpmdb iterator. | | * Return header instance for current position of rpmdb iterator. | |
| * @param mi rpm database iterator | | * @param mi rpm database iterator | |
|
| * @return current header join key | | * @return current header instance | |
| */ | | */ | |
|
| unsigned int rpmmiInstance(/*@null@*/ rpmmi mi) | | uint32_t rpmmiInstance(/*@null@*/ rpmmi mi) | |
| /*@*/; | | /*@*/; | |
| | | | |
| /** \ingroup rpmdb | | /** \ingroup rpmdb | |
|
| * Return header tag index join key for current position of rpmdb iterator. | | * Return basename tag for current position of rpmdb iterator. | |
| * @param mi rpm database iterator | | * @param mi rpm database iterator | |
|
| | | * @return current basename tag | |
| */ | | */ | |
|
| unsigned int rpmmiFilenum(rpmmi mi) | | uint32_t rpmmiBNTag(/*@null@*/ rpmmi mi) | |
| /*@*/; | | /*@*/; | |
| | | | |
| /** \ingroup rpmdb | | /** \ingroup rpmdb | |
| * Return number of elements in rpm database iterator. | | * Return number of elements in rpm database iterator. | |
| * @param mi rpm database iterator | | * @param mi rpm database iterator | |
| * @return number of elements | | * @return number of elements | |
| */ | | */ | |
|
| int rpmmiCount(/*@null@*/ rpmmi mi) | | unsigned int rpmmiCount(/*@null@*/ rpmmi mi) | |
| /*@*/; | | /*@*/; | |
| | | | |
| /** \ingroup rpmdb | | /** \ingroup rpmdb | |
| * Append items to set of package instances to iterate. | | * Append items to set of package instances to iterate. | |
| * @param mi rpm database iterator | | * @param mi rpm database iterator | |
| * @param hdrNums array of package instances | | * @param hdrNums array of package instances | |
| * @param nHdrNums number of elements in array | | * @param nHdrNums number of elements in array | |
| * @return 0 on success, 1 on failure (bad args) | | * @return 0 on success, 1 on failure (bad args) | |
| */ | | */ | |
| int rpmmiGrow(/*@null@*/ rpmmi mi, | | int rpmmiGrow(/*@null@*/ rpmmi mi, | |
|
| /*@null@*/ const int * hdrNums, int nHdrNums) | | /*@null@*/ const uint32_t * hdrNums, int nHdrNums) | |
| | | /*@modifies mi @*/; | |
| | | | |
| | | /** \ingroup rpmdb | |
| | | * Append packages containing common basename to iterator. | |
| | | * @param mi rpm database iterator | |
| | | * @param bn basename key | |
| | | * @return 0 on success, 1 on failure (bad args) | |
| | | */ | |
| | | int rpmmiGrowBasename(rpmmi mi, const char * bn) | |
| | | /*@modifies mi @*/; | |
| | | | |
| | | /** \ingroup rpmdb | |
| | | * Sort iterator instances. | |
| | | * @param mi rpm database iterator | |
| | | * @return 0 on success | |
| | | */ | |
| | | int rpmmiSort(/*@null@*/ rpmmi mi) | |
| /*@modifies mi @*/; | | /*@modifies mi @*/; | |
| | | | |
| /** \ingroup rpmdb | | /** \ingroup rpmdb | |
| * Remove items from set of package instances to iterate. | | * Remove items from set of package instances to iterate. | |
| * @note Sorted hdrNums are always passed in rpmlib. | | * @note Sorted hdrNums are always passed in rpmlib. | |
| * @param mi rpm database iterator | | * @param mi rpm database iterator | |
| * @param hdrNums array of package instances | | * @param hdrNums array of package instances | |
| * @param nHdrNums number of elements in array | | * @param nHdrNums number of elements in array | |
| * @param sorted is the array sorted? (array will be sorted on return
) | | * @param sorted is the array sorted? (array will be sorted on return
) | |
| * @return 0 on success, 1 on failure (bad args) | | * @return 0 on success, 1 on failure (bad args) | |
| */ | | */ | |
| int rpmmiPrune(/*@null@*/ rpmmi mi, | | int rpmmiPrune(/*@null@*/ rpmmi mi, | |
|
| /*@null@*/ int * hdrNums, int nHdrNums, int sorted) | | /*@null@*/ uint32_t * hdrNums, int nHdrNums, int sorted) | |
| /*@modifies mi, hdrNums @*/; | | /*@modifies mi, hdrNums @*/; | |
| | | | |
| /** \ingroup rpmdb | | /** \ingroup rpmdb | |
| * Add pattern to iterator selector. | | * Add pattern to iterator selector. | |
| * @param mi rpm database iterator | | * @param mi rpm database iterator | |
| * @param tag rpm tag | | * @param tag rpm tag | |
| * @param mode type of pattern match | | * @param mode type of pattern match | |
| * @param pattern pattern to match | | * @param pattern pattern to match | |
| * @return 0 on success | | * @return 0 on success | |
| */ | | */ | |
| | | | |
| skipping to change at line 1107 | | skipping to change at line 1338 | |
| /** \ingroup rpmdb | | /** \ingroup rpmdb | |
| * Modify iterator to mark header for lazy write on release. | | * Modify iterator to mark header for lazy write on release. | |
| * @param mi rpm database iterator | | * @param mi rpm database iterator | |
| * @param modified new value of modified | | * @param modified new value of modified | |
| * @return previous value | | * @return previous value | |
| */ | | */ | |
| int rpmmiSetModified(/*@null@*/ rpmmi mi, int modified) | | int rpmmiSetModified(/*@null@*/ rpmmi mi, int modified) | |
| /*@modifies mi @*/; | | /*@modifies mi @*/; | |
| | | | |
| /** \ingroup rpmdb | | /** \ingroup rpmdb | |
|
| * Modify iterator to verify retrieved header blobs. | | | |
| * @param mi rpm database iterator | | | |
| * @param ts transaction set | | | |
| * @return 0 always | | | |
| */ | | | |
| int rpmmiSetHdrChk(/*@null@*/ rpmmi mi, /*@null@*/ rpmts ts) | | | |
| /*@modifies mi @*/; | | | |
| | | | |
| /** \ingroup rpmdb | | | |
| * Return database iterator. | | * Return database iterator. | |
| * @param db rpm database | | * @param db rpm database | |
| * @param tag rpm tag | | * @param tag rpm tag | |
| * @param keyp key data (NULL for sequential access) | | * @param keyp key data (NULL for sequential access) | |
| * @param keylen key data length (0 will use strlen(keyp)) | | * @param keylen key data length (0 will use strlen(keyp)) | |
| * @return NULL on failure | | * @return NULL on failure | |
| */ | | */ | |
| /*@only@*/ /*@null@*/ | | /*@only@*/ /*@null@*/ | |
| rpmmi rpmmiInit(/*@null@*/ rpmdb db, rpmTag tag, | | rpmmi rpmmiInit(/*@null@*/ rpmdb db, rpmTag tag, | |
| /*@null@*/ const void * keyp, size_t keylen) | | /*@null@*/ const void * keyp, size_t keylen) | |
| | | | |
| skipping to change at line 1233 | | skipping to change at line 1455 | |
| rpmGlobalMacroContext, fileSystem, internalState @*/; | | rpmGlobalMacroContext, fileSystem, internalState @*/; | |
| | | | |
| /** \ingroup rpmdb | | /** \ingroup rpmdb | |
| * Remove package header from rpm database and indices. | | * Remove package header from rpm database and indices. | |
| * @param db rpm database | | * @param db rpm database | |
| * @param rid (unused) remove transaction id (rid = 0 or -1 to ski
p) | | * @param rid (unused) remove transaction id (rid = 0 or -1 to ski
p) | |
| * @param hdrNum package instance number in database | | * @param hdrNum package instance number in database | |
| * @param ts (unused) transaction set (or NULL) | | * @param ts (unused) transaction set (or NULL) | |
| * @return 0 on success | | * @return 0 on success | |
| */ | | */ | |
|
| int rpmdbRemove(/*@null@*/ rpmdb db, /*@unused@*/ int rid, unsigned int hdr
Num, | | int rpmdbRemove(/*@null@*/ rpmdb db, /*@unused@*/ int rid, uint32_t hdrNum, | |
| /*@null@*/ rpmts ts) | | /*@null@*/ rpmts ts) | |
| /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState
@*/ | | /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState
@*/ | |
| /*@modifies db, ts, | | /*@modifies db, ts, | |
| rpmGlobalMacroContext, fileSystem, internalState @*/; | | rpmGlobalMacroContext, fileSystem, internalState @*/; | |
| | | | |
|
| /** \ingroup rpmdb | | | |
| * Rebuild database indices from package headers. | | | |
| * @param prefix path to top of install tree | | | |
| * @param ts transaction set (or NULL) | | | |
| * @return 0 on success | | | |
| */ | | | |
| int rpmdbRebuild(/*@null@*/ const char * prefix, /*@null@*/ rpmts ts) | | | |
| /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState | | | |
| @*/ | | | |
| /*@modifies ts, rpmGlobalMacroContext, fileSystem, internalState @*/ | | | |
| ; | | | |
| | | | |
| /** | | /** | |
| * Mergesort, same arguments as qsort(2). | | * Mergesort, same arguments as qsort(2). | |
| */ | | */ | |
| /*@unused@*/ | | /*@unused@*/ | |
| int rpm_mergesort(void *base, size_t nmemb, size_t size, | | int rpm_mergesort(void *base, size_t nmemb, size_t size, | |
| int (*cmp) (const void *, const void *)) | | int (*cmp) (const void *, const void *)) | |
| /*@globals errno @*/ | | /*@globals errno @*/ | |
| /*@modifies base, errno @*/; | | /*@modifies base, errno @*/; | |
| | | | |
| #ifdef __cplusplus | | #ifdef __cplusplus | |
| | | | |
End of changes. 75 change blocks. |
| 178 lines changed or deleted | | 405 lines changed or added | |
|