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

Comparing BDB/BDB.pm (file contents):
Revision 1.37 by root, Mon Jul 7 14:28:53 2008 UTC vs.
Revision 1.40 by root, Tue Jul 8 08:35:12 2008 UTC

109use strict 'vars'; 109use strict 'vars';
110 110
111use base 'Exporter'; 111use base 'Exporter';
112 112
113BEGIN { 113BEGIN {
114 our $VERSION = '1.5'; 114 our $VERSION = '1.6';
115 115
116 our @BDB_REQ = qw( 116 our @BDB_REQ = qw(
117 db_env_open db_env_close db_env_txn_checkpoint db_env_lock_detect 117 db_env_open db_env_close db_env_txn_checkpoint db_env_lock_detect
118 db_env_memp_sync db_env_memp_trickle 118 db_env_memp_sync db_env_memp_trickle db_env_dbrename db_env_dbremove
119 db_open db_close db_compact db_sync db_upgrade 119 db_open db_close db_compact db_sync db_upgrade
120 db_put db_get db_pget db_del db_key_range 120 db_put db_get db_pget db_del db_key_range
121 db_txn_commit db_txn_abort db_txn_finish 121 db_txn_commit db_txn_abort db_txn_finish
122 db_c_close db_c_count db_c_put db_c_get db_c_pget db_c_del 122 db_c_close db_c_count db_c_put db_c_get db_c_pget db_c_del
123 db_sequence_open db_sequence_close 123 db_sequence_open db_sequence_close
156settings) are method calls on the relevant objects, so the rule of thumb 156settings) are method calls on the relevant objects, so the rule of thumb
157is: if it's a method, it's not blocking, if it's a function, it takes a 157is: if it's a method, it's not blocking, if it's a function, it takes a
158callback as last argument. 158callback as last argument.
159 159
160In the following, C<$int> signifies an integer return value, 160In the following, C<$int> signifies an integer return value,
161C<octetstring> is a "binary string" (i.e. a perl string with no character 161C<bdb_filename> is a "filename" (octets on unix, madness on windows),
162indices >255), C<U32> is an unsigned 32 bit integer, C<int> is some 162C<U32> is an unsigned 32 bit integer, C<int> is some integer, C<NV> is a
163integer, C<NV> is a floating point value. 163floating point value.
164 164
165The C<SV *> types are generic perl scalars (for input and output of data 165The C<SV *> types are generic perl scalars (for input and output of data
166values), and the C<SV *callback> is the optional callback function to call 166values), and the C<SV *callback> is the optional callback function to call
167when the request is completed. 167when the request is completed.
168 168
176Functions in the BDB namespace, exported by default: 176Functions in the BDB namespace, exported by default:
177 177
178 $env = db_env_create (U32 env_flags = 0) 178 $env = db_env_create (U32 env_flags = 0)
179 flags: RPCCLIENT 179 flags: RPCCLIENT
180 180
181 db_env_open (DB_ENV *env, octetstring db_home, U32 open_flags, int mode, SV *callback = &PL_sv_undef) 181 db_env_open (DB_ENV *env, bdb_filename db_home, U32 open_flags, int mode, SV *callback = &PL_sv_undef)
182 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 182 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
183 db_env_close (DB_ENV *env, U32 flags = 0, SV *callback = &PL_sv_undef) 183 db_env_close (DB_ENV *env, U32 flags = 0, SV *callback = &PL_sv_undef)
184 db_env_txn_checkpoint (DB_ENV *env, U32 kbyte = 0, U32 min = 0, U32 flags = 0, SV *callback = &PL_sv_undef) 184 db_env_txn_checkpoint (DB_ENV *env, U32 kbyte = 0, U32 min = 0, U32 flags = 0, SV *callback = &PL_sv_undef)
185 flags: FORCE 185 flags: FORCE
186 db_env_lock_detect (DB_ENV *env, U32 flags = 0, U32 atype = DB_LOCK_DEFAULT, SV *dummy = 0, SV *callback = &PL_sv_undef) 186 db_env_lock_detect (DB_ENV *env, U32 flags = 0, U32 atype = DB_LOCK_DEFAULT, SV *dummy = 0, SV *callback = &PL_sv_undef)
187 atype: LOCK_DEFAULT LOCK_EXPIRE LOCK_MAXLOCKS LOCK_MAXWRITE LOCK_MINLOCKS LOCK_MINWRITE LOCK_OLDEST LOCK_RANDOM LOCK_YOUNGEST 187 atype: LOCK_DEFAULT LOCK_EXPIRE LOCK_MAXLOCKS LOCK_MAXWRITE LOCK_MINLOCKS LOCK_MINWRITE LOCK_OLDEST LOCK_RANDOM LOCK_YOUNGEST
188 db_env_memp_sync (DB_ENV *env, SV *dummy = 0, SV *callback = &PL_sv_undef) 188 db_env_memp_sync (DB_ENV *env, SV *dummy = 0, SV *callback = &PL_sv_undef)
189 db_env_memp_trickle (DB_ENV *env, int percent, SV *dummy = 0, SV *callback = &PL_sv_undef) 189 db_env_memp_trickle (DB_ENV *env, int percent, SV *dummy = 0, SV *callback = &PL_sv_undef)
190 db_env_dbremove (DB_ENV *env, DB_TXN_ornull *txnid, bdb_filename file, bdb_filename database, U32 flags = 0, SV *callback = &PL_sv_undef)
191 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)
190 192
191 $db = db_create (DB_ENV *env = 0, U32 flags = 0) 193 $db = db_create (DB_ENV *env = 0, U32 flags = 0)
192 flags: XA_CREATE 194 flags: XA_CREATE
193 195
194 db_open (DB *db, DB_TXN_ornull *txnid, octetstring file, octetstring database, int type, U32 flags, int mode, SV *callback = &PL_sv_undef) 196 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)
195 flags: AUTO_COMMIT CREATE EXCL MULTIVERSION NOMMAP RDONLY READ_UNCOMMITTED THREAD TRUNCATE 197 flags: AUTO_COMMIT CREATE EXCL MULTIVERSION NOMMAP RDONLY READ_UNCOMMITTED THREAD TRUNCATE
196 db_close (DB *db, U32 flags = 0, SV *callback = &PL_sv_undef) 198 db_close (DB *db, U32 flags = 0, SV *callback = &PL_sv_undef)
197 flags: DB_NOSYNC 199 flags: DB_NOSYNC
198 db_upgrade (DB *db, octetstring file, U32 flags = 0, SV *callback = &PL_sv_undef) 200 db_upgrade (DB *db, bdb_filename file, U32 flags = 0, SV *callback = &PL_sv_undef)
199 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) 201 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)
200 flags: FREELIST_ONLY FREE_SPACE 202 flags: FREELIST_ONLY FREE_SPACE
201 db_sync (DB *db, U32 flags = 0, SV *callback = &PL_sv_undef) 203 db_sync (DB *db, U32 flags = 0, SV *callback = &PL_sv_undef)
202 db_key_range (DB *db, DB_TXN_ornull *txn, SV *key, SV *key_range, U32 flags = 0, SV *callback = &PL_sv_undef) 204 db_key_range (DB *db, DB_TXN_ornull *txn, SV *key, SV *key_range, U32 flags = 0, SV *callback = &PL_sv_undef)
203 db_put (DB *db, DB_TXN_ornull *txn, SV *key, SV *data, U32 flags = 0, SV *callback = &PL_sv_undef) 205 db_put (DB *db, DB_TXN_ornull *txn, SV *key, SV *data, U32 flags = 0, SV *callback = &PL_sv_undef)
276 $int = $env->set_data_dir (const char *dir) 278 $int = $env->set_data_dir (const char *dir)
277 $int = $env->set_tmp_dir (const char *dir) 279 $int = $env->set_tmp_dir (const char *dir)
278 $int = $env->set_lg_dir (const char *dir) 280 $int = $env->set_lg_dir (const char *dir)
279 $int = $env->set_shm_key (long shm_key) 281 $int = $env->set_shm_key (long shm_key)
280 $int = $env->set_cachesize (U32 gbytes, U32 bytes, int ncache = 0) 282 $int = $env->set_cachesize (U32 gbytes, U32 bytes, int ncache = 0)
281 $int = $env->set_flags (U32 flags, int onoff) 283 $int = $env->set_flags (U32 flags, int onoff = 1)
284 $int = $env->log_set_config (U32 flags, int onoff = 1) [v4.7]
285 $int = $env->set_intermediate_dir_mode (const char *modestring) [v4.7]
282 $env->set_errfile (FILE *errfile = 0) 286 $env->set_errfile (FILE *errfile = 0)
283 $env->set_msgfile (FILE *msgfile = 0) 287 $env->set_msgfile (FILE *msgfile = 0)
284 $int = $env->set_verbose (U32 which, int onoff = 1) 288 $int = $env->set_verbose (U32 which, int onoff = 1)
285 $int = $env->set_encrypt (const char *password, U32 flags = 0) 289 $int = $env->set_encrypt (const char *password, U32 flags = 0)
286 $int = $env->set_timeout (NV timeout_seconds, U32 flags = SET_TXN_TIMEOUT) 290 $int = $env->set_timeout (NV timeout_seconds, U32 flags = SET_TXN_TIMEOUT)
536 BDB::poll_wait, BDB::poll_cb 540 BDB::poll_wait, BDB::poll_cb
537 while BDB::nreqs; 541 while BDB::nreqs;
538 542
539=back 543=back
540 544
545=head3 VERSION CHECKING
546
547BerkeleyDB comes in various versions, many of them have minor
548incompatibilities. This means that traditional "at least version x.x"
549checks are often not sufficient.
550
551Example: set the log_autoremove option in a way compatible with <v.47 and
552v4.7. Note the use of & on the constants to avoid triggering a compiletime
553bug when the symbol isn't available.
554
555 $DB_ENV->set_flags (&BDB::LOG_AUTOREMOVE ) if BDB::VERSION v0, v4.7;
556 $DB_ENV->log_set_config (&BDB::LOG_AUTO_REMOVE) if BDB::VERSION v4.7;
557
558=over 4
559
560=item BDB::VERSION
561
562The C<BDB::VERSION> function, when called without arguments, returns the
563Berkeley DB version as a v-string (usually with 3 components). You should
564use C<lt> and C<ge> operators exclusively to make comparisons.
565
566Example: check for at least version 4.7.
567
568 BDB::VERSION ge v4.7 or die;
569
570=item BDB::VERSION min-version
571
572Returns true if the BDB version is at least the given version (specified
573as a v-string), false otherwise.
574
575Example: check for at least version 4.5.
576
577 BDB::VERSION v4.7 or die;
578
579=item BDB::VERSION min-version, max-version
580
581Returns true of the BDB version is at least version C<min-version> (specify C<undef> or C<v0> for any minimum version)
582and less then C<max-version>.
583
584Example: check wether version is strictly less then v4.7.
585
586 BDB::VERSION v0, v4.7
587 or die "version 4.7 is not yet supported";
588
589=back
590
591=cut
592
593sub VERSION {
594 if (@_ > 0) {
595 return undef if VERSION_v lt $_[0];
596 if (@_ > 1) {
597 return undef if VERSION_v ge $_[1];
598 }
599 }
600
601 VERSION_v
602}
603
541=head3 CONTROLLING THE NUMBER OF THREADS 604=head3 CONTROLLING THE NUMBER OF THREADS
542 605
543=over 4 606=over 4
544 607
545=item BDB::min_parallel $nthreads 608=item BDB::min_parallel $nthreads

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines