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.17 by root, Fri Apr 11 04:25:57 2014 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 157
158 $db = db_create (DB_ENV *env = 0, U32 flags = 0) 158 $db = db_create (DB_ENV *env = 0, U32 flags = 0)
159 flags: XA_CREATE 159 flags: XA_CREATE
160 160
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) 161 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 162 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) 163 db_close (DB *db, U32 flags = 0, SV *callback = 0)
164 flags: DB_NOSYNC 164 flags: DB_NOSYNC
165 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) 166 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) 167 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 168 flags: FREELIST_ONLY FREE_SPACE
168 db_sync (DB *db, U32 flags = 0, SV *callback = &PL_sv_undef) 169 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) 170 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) 171 db_put (DB *db, DB_TXN_ornull *txn, SV *key, SV *data, U32 flags = 0, SV *callback = 0)
171 flags: APPEND NODUPDATA NOOVERWRITE 172 flags: APPEND NODUPDATA NOOVERWRITE
172 db_exists (DB *db, DB_TXN_ornull *txn, SV *key, U32 flags = 0, SV *callback = 0) (v4.6) 173 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) 174 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 175 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) 176 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 177 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) 178 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) 179 db_txn_commit (DB_TXN *txn, U32 flags = 0, SV *callback = 0)
179 flags: TXN_NOSYNC TXN_SYNC 180 flags: TXN_NOSYNC TXN_SYNC
180 db_txn_abort (DB_TXN *txn, SV *callback = &PL_sv_undef) 181 db_txn_abort (DB_TXN *txn, SV *callback = 0)
181 182
182 db_c_close (DBC *dbc, SV *callback = &PL_sv_undef) 183 db_c_close (DBC *dbc, SV *callback = 0)
183 db_c_count (DBC *dbc, SV *count, U32 flags = 0, SV *callback = &PL_sv_undef) 184 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) 185 db_c_put (DBC *dbc, SV *key, SV *data, U32 flags = 0, SV *callback = 0)
185 flags: AFTER BEFORE CURRENT KEYFIRST KEYLAST NODUPDATA 186 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) 187 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 188 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) 189 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) 190 db_c_del (DBC *dbc, U32 flags = 0, SV *callback = 0)
190 191
191 db_sequence_open (DB_SEQUENCE *seq, DB_TXN_ornull *txnid, SV *key, U32 flags = 0, SV *callback = &PL_sv_undef) 192 db_sequence_open (DB_SEQUENCE *seq, DB_TXN_ornull *txnid, SV *key, U32 flags = 0, SV *callback = 0)
192 flags: CREATE EXCL 193 flags: CREATE EXCL
193 db_sequence_close (DB_SEQUENCE *seq, U32 flags = 0, SV *callback = &PL_sv_undef) 194 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) 195 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 196 flags: TXN_NOSYNC
196 db_sequence_remove (DB_SEQUENCE *seq, DB_TXN_ornull *txnid = 0, U32 flags = 0, SV *callback = &PL_sv_undef) 197 db_sequence_remove (DB_SEQUENCE *seq, DB_TXN_ornull *txnid = 0, U32 flags = 0, SV *callback = 0)
197 flags: TXN_NOSYNC 198 flags: TXN_NOSYNC
198 199
199 db_txn_finish (DB_TXN *txn, U32 flags = 0, SV *callback = &PL_sv_undef) 200 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. 201 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 202 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 203 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, 204 out of your transaction. While the BDB module still makes this possible,
204 it contains the following extensions: 205 it contains the following extensions:
389 flags: SEQ_DEC SEQ_INC SEQ_WRAP 390 flags: SEQ_DEC SEQ_INC SEQ_WRAP
390 $int = $seq->set_range (db_seq_t min, db_seq_t max) 391 $int = $seq->set_range (db_seq_t min, db_seq_t max)
391 392
392 Example: 393 Example:
393 my $seq = $db->sequence; 394 my $seq = $db->sequence;
394 395
395 db_sequence_open $seq, undef, "seq", BDB::CREATE; 396 db_sequence_open $seq, undef, "seq", BDB::CREATE;
396 db_sequence_get $seq, undef, 1, my $value; 397 db_sequence_get $seq, undef, 1, my $value;
397 398
398SUPPORT FUNCTIONS 399SUPPORT FUNCTIONS
399 EVENT PROCESSING AND EVENT LOOP INTEGRATION 400 EVENT PROCESSING AND EVENT LOOP INTEGRATION
400 $msg = BDB::strerror [$errno] 401 $msg = BDB::strerror [$errno]
643 644
644COMMON PITFALLS 645COMMON PITFALLS
645 Unexpected Crashes 646 Unexpected Crashes
646 Remember that, by default, BDB will execute requests in parallel, in 647 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" 648 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 649 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 650 to a crash, silent data corruption, eventually the next world war on
650 terrorism. 651 terrorism.
651 652
652 If you only ever use foreground requests (without a callback), this will 653 If you only ever use foreground requests (without a callback), this will
653 not be an issue. 654 not be an issue (unless you use threads).
654 655
655 Unexpected Freezes or Deadlocks 656 Unexpected Freezes or Deadlocks
656 Remember that, by default, BDB will execute requests in parallel, which 657 Remember that, by default, BDB will execute requests in parallel, which
657 easily leads to deadlocks (even concurrent put's on the same database 658 easily leads to deadlocks (even concurrent put's on the same database
658 can deadlock). 659 can deadlock).

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines