ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/BDB/README
(Generate patch)

Comparing BDB/README (file contents):
Revision 1.14 by root, Tue Oct 21 02:21:25 2008 UTC vs.
Revision 1.18 by root, Thu Jan 18 16:45:27 2018 UTC

25 db_sync $db; 25 db_sync $db;
26 26
27 # when you also use Coro, management is easy: 27 # when you also use Coro, management is easy:
28 use Coro::BDB; 28 use Coro::BDB;
29 29
30 # automatic event loop intergration with AnyEvent: 30 # automatic event loop integration with AnyEvent:
31 use AnyEvent::BDB; 31 use AnyEvent::BDB;
32 32
33 # automatic result processing with EV: 33 # automatic result processing with EV:
34 my $WATCHER = EV::io BDB::poll_fileno, EV::READ, \&BDB::poll_cb; 34 my $WATCHER = EV::io BDB::poll_fileno, EV::READ, \&BDB::poll_cb;
35 35
140 Functions in the BDB namespace, exported by default: 140 Functions in the BDB namespace, exported by default:
141 141
142 $env = db_env_create (U32 env_flags = 0) 142 $env = db_env_create (U32 env_flags = 0)
143 flags: RPCCLIENT 143 flags: RPCCLIENT
144 144
145 db_env_open (DB_ENV *env, bdb_filename db_home, U32 open_flags, int mode, SV *callback = &PL_sv_undef) 145 db_env_open (DB_ENV *env, bdb_filename db_home, U32 open_flags, int mode, SV *callback = 0)
146 open_flags: INIT_CDB INIT_LOCK INIT_LOG INIT_MPOOL INIT_REP INIT_TXN RECOVER RECOVER_FATAL USE_ENVIRON USE_ENVIRON_ROOT CREATE LOCKDOWN PRIVATE REGISTER SYSTEM_MEM 146 open_flags: INIT_CDB INIT_LOCK INIT_LOG INIT_MPOOL INIT_REP INIT_TXN RECOVER RECOVER_FATAL USE_ENVIRON USE_ENVIRON_ROOT CREATE LOCKDOWN PRIVATE REGISTER SYSTEM_MEM
147 db_env_close (DB_ENV *env, U32 flags = 0, SV *callback = &PL_sv_undef) 147 db_env_close (DB_ENV *env, U32 flags = 0, SV *callback = 0)
148 db_env_txn_checkpoint (DB_ENV *env, U32 kbyte = 0, U32 min = 0, U32 flags = 0, SV *callback = &PL_sv_undef) 148 db_env_txn_checkpoint (DB_ENV *env, U32 kbyte = 0, U32 min = 0, U32 flags = 0, SV *callback = 0)
149 flags: FORCE 149 flags: FORCE
150 db_env_lock_detect (DB_ENV *env, U32 flags = 0, U32 atype = DB_LOCK_DEFAULT, SV *dummy = 0, SV *callback = &PL_sv_undef) 150 db_env_lock_detect (DB_ENV *env, U32 flags = 0, U32 atype = DB_LOCK_DEFAULT, SV *dummy = 0, SV *callback = 0)
151 atype: LOCK_DEFAULT LOCK_EXPIRE LOCK_MAXLOCKS LOCK_MAXWRITE LOCK_MINLOCKS LOCK_MINWRITE LOCK_OLDEST LOCK_RANDOM LOCK_YOUNGEST 151 atype: LOCK_DEFAULT LOCK_EXPIRE LOCK_MAXLOCKS LOCK_MAXWRITE LOCK_MINLOCKS LOCK_MINWRITE LOCK_OLDEST LOCK_RANDOM LOCK_YOUNGEST
152 db_env_memp_sync (DB_ENV *env, SV *dummy = 0, SV *callback = &PL_sv_undef) 152 db_env_memp_sync (DB_ENV *env, SV *dummy = 0, SV *callback = 0)
153 db_env_memp_trickle (DB_ENV *env, int percent, SV *dummy = 0, SV *callback = &PL_sv_undef) 153 db_env_memp_trickle (DB_ENV *env, int percent, SV *dummy = 0, SV *callback = 0)
154 db_env_dbremove (DB_ENV *env, DB_TXN_ornull *txnid, bdb_filename file, bdb_filename database, U32 flags = 0, SV *callback = &PL_sv_undef) 154 db_env_dbremove (DB_ENV *env, DB_TXN_ornull *txnid, bdb_filename file, bdb_filename database, U32 flags = 0, SV *callback = 0)
155 db_env_dbrename (DB_ENV *env, DB_TXN_ornull *txnid, bdb_filename file, bdb_filename database, bdb_filename newname, U32 flags = 0, SV *callback = &PL_sv_undef) 155 db_env_dbrename (DB_ENV *env, DB_TXN_ornull *txnid, bdb_filename file, bdb_filename database, bdb_filename newname, U32 flags = 0, SV *callback = 0)
156 db_env_log_archive (DB_ENV *env, SV *listp, U32 flags = 0, SV *callback = &PL_sv_undef) 156 db_env_log_archive (DB_ENV *env, SV *listp, U32 flags = 0, SV *callback = 0)
157 db_env_lsn_reset (DB_ENV *env, bdb_filename db, U32 flags = 0, SV *callback = 0)
158 db_env_fileid_reset (DB_ENV *env, bdb_filename db, U32 flags = 0, SV *callback = 0)
157 159
158 $db = db_create (DB_ENV *env = 0, U32 flags = 0) 160 $db = db_create (DB_ENV *env = 0, U32 flags = 0)
159 flags: XA_CREATE 161 flags: XA_CREATE
160 162
161 db_open (DB *db, DB_TXN_ornull *txnid, bdb_filename file, bdb_filename database, int type, U32 flags, int mode, SV *callback = &PL_sv_undef) 163 db_open (DB *db, DB_TXN_ornull *txnid, bdb_filename file, bdb_filename database, int type, U32 flags, int mode, SV *callback = 0)
162 flags: AUTO_COMMIT CREATE EXCL MULTIVERSION NOMMAP RDONLY READ_UNCOMMITTED THREAD TRUNCATE 164 flags: AUTO_COMMIT CREATE EXCL MULTIVERSION NOMMAP RDONLY READ_UNCOMMITTED THREAD TRUNCATE
163 db_close (DB *db, U32 flags = 0, SV *callback = &PL_sv_undef) 165 db_close (DB *db, U32 flags = 0, SV *callback = 0)
164 flags: DB_NOSYNC 166 flags: DB_NOSYNC
167 db_verify (DB *db, bdb_filename file, bdb_filename database = 0, SV *dummy = 0, U32 flags = 0, SV *callback = 0)
165 db_upgrade (DB *db, bdb_filename file, U32 flags = 0, SV *callback = &PL_sv_undef) 168 db_upgrade (DB *db, bdb_filename file, U32 flags = 0, SV *callback = 0)
166 db_compact (DB *db, DB_TXN_ornull *txn = 0, SV *start = 0, SV *stop = 0, SV *unused1 = 0, U32 flags = DB_FREE_SPACE, SV *unused2 = 0, SV *callback = &PL_sv_undef) 169 db_compact (DB *db, DB_TXN_ornull *txn = 0, SV *start = 0, SV *stop = 0, SV *unused1 = 0, U32 flags = DB_FREE_SPACE, SV *unused2 = 0, SV *callback = 0)
167 flags: FREELIST_ONLY FREE_SPACE 170 flags: FREELIST_ONLY FREE_SPACE
168 db_sync (DB *db, U32 flags = 0, SV *callback = &PL_sv_undef) 171 db_sync (DB *db, U32 flags = 0, SV *callback = 0)
169 db_key_range (DB *db, DB_TXN_ornull *txn, SV *key, SV *key_range, U32 flags = 0, SV *callback = &PL_sv_undef) 172 db_key_range (DB *db, DB_TXN_ornull *txn, SV *key, SV *key_range, U32 flags = 0, SV *callback = 0)
170 db_put (DB *db, DB_TXN_ornull *txn, SV *key, SV *data, U32 flags = 0, SV *callback = &PL_sv_undef) 173 db_put (DB *db, DB_TXN_ornull *txn, SV *key, SV *data, U32 flags = 0, SV *callback = 0)
171 flags: APPEND NODUPDATA NOOVERWRITE 174 flags: APPEND NODUPDATA NOOVERWRITE
172 db_exists (DB *db, DB_TXN_ornull *txn, SV *key, U32 flags = 0, SV *callback = 0) (v4.6) 175 db_exists (DB *db, DB_TXN_ornull *txn, SV *key, U32 flags = 0, SV *callback = 0) (v4.6)
173 db_get (DB *db, DB_TXN_ornull *txn, SV *key, SV *data, U32 flags = 0, SV *callback = &PL_sv_undef) 176 db_get (DB *db, DB_TXN_ornull *txn, SV *key, SV *data, U32 flags = 0, SV *callback = 0)
174 flags: CONSUME CONSUME_WAIT GET_BOTH SET_RECNO MULTIPLE READ_COMMITTED READ_UNCOMMITTED RMW 177 flags: CONSUME CONSUME_WAIT GET_BOTH SET_RECNO MULTIPLE READ_COMMITTED READ_UNCOMMITTED RMW
175 db_pget (DB *db, DB_TXN_ornull *txn, SV *key, SV *pkey, SV *data, U32 flags = 0, SV *callback = &PL_sv_undef) 178 db_pget (DB *db, DB_TXN_ornull *txn, SV *key, SV *pkey, SV *data, U32 flags = 0, SV *callback = 0)
176 flags: CONSUME CONSUME_WAIT GET_BOTH SET_RECNO MULTIPLE READ_COMMITTED READ_UNCOMMITTED RMW 179 flags: CONSUME CONSUME_WAIT GET_BOTH SET_RECNO MULTIPLE READ_COMMITTED READ_UNCOMMITTED RMW
177 db_del (DB *db, DB_TXN_ornull *txn, SV *key, U32 flags = 0, SV *callback = &PL_sv_undef) 180 db_del (DB *db, DB_TXN_ornull *txn, SV *key, U32 flags = 0, SV *callback = 0)
178 db_txn_commit (DB_TXN *txn, U32 flags = 0, SV *callback = &PL_sv_undef) 181 db_txn_commit (DB_TXN *txn, U32 flags = 0, SV *callback = 0)
179 flags: TXN_NOSYNC TXN_SYNC 182 flags: TXN_NOSYNC TXN_SYNC
180 db_txn_abort (DB_TXN *txn, SV *callback = &PL_sv_undef) 183 db_txn_abort (DB_TXN *txn, SV *callback = 0)
181 184
182 db_c_close (DBC *dbc, SV *callback = &PL_sv_undef) 185 db_c_close (DBC *dbc, SV *callback = 0)
183 db_c_count (DBC *dbc, SV *count, U32 flags = 0, SV *callback = &PL_sv_undef) 186 db_c_count (DBC *dbc, SV *count, U32 flags = 0, SV *callback = 0)
184 db_c_put (DBC *dbc, SV *key, SV *data, U32 flags = 0, SV *callback = &PL_sv_undef) 187 db_c_put (DBC *dbc, SV *key, SV *data, U32 flags = 0, SV *callback = 0)
185 flags: AFTER BEFORE CURRENT KEYFIRST KEYLAST NODUPDATA 188 flags: AFTER BEFORE CURRENT KEYFIRST KEYLAST NODUPDATA
186 db_c_get (DBC *dbc, SV *key, SV *data, U32 flags = 0, SV *callback = &PL_sv_undef) 189 db_c_get (DBC *dbc, SV *key, SV *data, U32 flags = 0, SV *callback = 0)
187 flags: CURRENT FIRST GET_BOTH GET_BOTH_RANGE GET_RECNO JOIN_ITEM LAST NEXT NEXT_DUP NEXT_NODUP PREV PREV_DUP PREV_NODUP SET SET_RANGE SET_RECNO READ_UNCOMMITTED MULTIPLE MULTIPLE_KEY RMW 190 flags: CURRENT FIRST GET_BOTH GET_BOTH_RANGE GET_RECNO JOIN_ITEM LAST NEXT NEXT_DUP NEXT_NODUP PREV PREV_DUP PREV_NODUP SET SET_RANGE SET_RECNO READ_UNCOMMITTED MULTIPLE MULTIPLE_KEY RMW
188 db_c_pget (DBC *dbc, SV *key, SV *pkey, SV *data, U32 flags = 0, SV *callback = &PL_sv_undef) 191 db_c_pget (DBC *dbc, SV *key, SV *pkey, SV *data, U32 flags = 0, SV *callback = 0)
189 db_c_del (DBC *dbc, U32 flags = 0, SV *callback = &PL_sv_undef) 192 db_c_del (DBC *dbc, U32 flags = 0, SV *callback = 0)
190 193
191 db_sequence_open (DB_SEQUENCE *seq, DB_TXN_ornull *txnid, SV *key, U32 flags = 0, SV *callback = &PL_sv_undef) 194 db_sequence_open (DB_SEQUENCE *seq, DB_TXN_ornull *txnid, SV *key, U32 flags = 0, SV *callback = 0)
192 flags: CREATE EXCL 195 flags: CREATE EXCL
193 db_sequence_close (DB_SEQUENCE *seq, U32 flags = 0, SV *callback = &PL_sv_undef) 196 db_sequence_close (DB_SEQUENCE *seq, U32 flags = 0, SV *callback = 0)
194 db_sequence_get (DB_SEQUENCE *seq, DB_TXN_ornull *txnid, int delta, SV *seq_value, U32 flags = DB_TXN_NOSYNC, SV *callback = &PL_sv_undef) 197 db_sequence_get (DB_SEQUENCE *seq, DB_TXN_ornull *txnid, int delta, SV *seq_value, U32 flags = DB_TXN_NOSYNC, SV *callback = 0)
195 flags: TXN_NOSYNC 198 flags: TXN_NOSYNC
196 db_sequence_remove (DB_SEQUENCE *seq, DB_TXN_ornull *txnid = 0, U32 flags = 0, SV *callback = &PL_sv_undef) 199 db_sequence_remove (DB_SEQUENCE *seq, DB_TXN_ornull *txnid = 0, U32 flags = 0, SV *callback = 0)
197 flags: TXN_NOSYNC 200 flags: TXN_NOSYNC
198 201
199 db_txn_finish (DB_TXN *txn, U32 flags = 0, SV *callback = &PL_sv_undef) 202 db_txn_finish (DB_TXN *txn, U32 flags = 0, SV *callback = 0)
200 This is not actually a Berkeley DB function but a BDB module extension. 203 This is not actually a Berkeley DB function but a BDB module extension.
201 The background for this exytension is: It is very annoying to have to 204 The background for this exytension is: It is very annoying to have to
202 check every single BDB function for error returns and provide a codepath 205 check every single BDB function for error returns and provide a codepath
203 out of your transaction. While the BDB module still makes this possible, 206 out of your transaction. While the BDB module still makes this possible,
204 it contains the following extensions: 207 it contains the following extensions:
389 flags: SEQ_DEC SEQ_INC SEQ_WRAP 392 flags: SEQ_DEC SEQ_INC SEQ_WRAP
390 $int = $seq->set_range (db_seq_t min, db_seq_t max) 393 $int = $seq->set_range (db_seq_t min, db_seq_t max)
391 394
392 Example: 395 Example:
393 my $seq = $db->sequence; 396 my $seq = $db->sequence;
394 397
395 db_sequence_open $seq, undef, "seq", BDB::CREATE; 398 db_sequence_open $seq, undef, "seq", BDB::CREATE;
396 db_sequence_get $seq, undef, 1, my $value; 399 db_sequence_get $seq, undef, 1, my $value;
397 400
398SUPPORT FUNCTIONS 401SUPPORT FUNCTIONS
399 EVENT PROCESSING AND EVENT LOOP INTEGRATION 402 EVENT PROCESSING AND EVENT LOOP INTEGRATION
400 $msg = BDB::strerror [$errno] 403 $msg = BDB::strerror [$errno]
643 646
644COMMON PITFALLS 647COMMON PITFALLS
645 Unexpected Crashes 648 Unexpected Crashes
646 Remember that, by default, BDB will execute requests in parallel, in 649 Remember that, by default, BDB will execute requests in parallel, in
647 somewhat random order. That means that it is easy to run a "db_get" 650 somewhat random order. That means that it is easy to run a "db_get"
648 request on thesa me database as a concurrent "db_close" request, leading 651 request on the same database as a concurrent "db_close" request, leading
649 to a crash, silent data corruption, eventually the next world war on 652 to a crash, silent data corruption, eventually the next world war on
650 terrorism. 653 terrorism.
651 654
652 If you only ever use foreground requests (without a callback), this will 655 If you only ever use foreground requests (without a callback), this will
653 not be an issue. 656 not be an issue (unless you use threads).
654 657
655 Unexpected Freezes or Deadlocks 658 Unexpected Freezes or Deadlocks
656 Remember that, by default, BDB will execute requests in parallel, which 659 Remember that, by default, BDB will execute requests in parallel, which
657 easily leads to deadlocks (even concurrent put's on the same database 660 easily leads to deadlocks (even concurrent put's on the same database
658 can deadlock). 661 can deadlock).

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines