Berkeley DB Reference Guide:
Upgrading Berkeley DB Applications

PrevRefNext

Release 3.0: the DB_ENV structure

The DB_ENV structure is now opaque for applications in the Berkeley DB 3.0 release. Accesses to any fields within that structure by the application should be replaced with method calls. The following example illustrates this using the historic errpfx structure field. In the Berkeley DB 2.X releases, applications set error prefixes using code similar to the following:

DB_ENV *dbenv;

dbenv->errpfx = "my prefix";

in the Berkeley DB 3.X releases, this should be done using the DB_ENV->set_errpfx method, as follows:

DB_ENV *dbenv;

dbenv->set_errpfx(dbenv, "my prefix");

The following table lists the DB_ENV fields previously used by applications and the methods that should now be used to set them.

DB_ENV fieldBerkeley DB 3.X method
db_errcallDB_ENV->set_errcall
db_errfileDB_ENV->set_errfile
db_errpfxDB_ENV->set_errpfx
db_lorderThis field was removed from the DB_ENV structure in the Berkeley DB 3.0 release as no application should have ever used it. Any code using it should be evaluated for potential bugs.
db_paniccallDB_ENV->set_paniccall
db_verboseDB_ENV->set_verbose

Note: the db_verbose field was a simple boolean toggle, the DB_ENV->set_verbose method takes arguments that specify exactly which verbose messages are desired.

lg_maxDB_ENV->set_lg_max
lk_conflictsDB_ENV->set_lk_conflicts
lk_detectDB_ENV->set_lk_detect
lk_maxdbenv->set_lk_max
lk_modesDB_ENV->set_lk_conflicts
mp_mmapsizeDB_ENV->set_mp_mmapsize
mp_sizeDB_ENV->set_cachesize

Note: the DB_ENV->set_cachesize function takes additional arguments. Setting both the second argument (the number of GB in the pool) and the last argument (the number of memory pools to create) to 0 will result in behavior that is backward-compatible with previous Berkeley DB releases.

tx_infoThis field was used by applications as an argument to the transaction subsystem functions. As those functions take references to a DB_ENV structure as arguments in the Berkeley DB 3.0 release, it should no longer be used by any application.
tx_maxDB_ENV->set_tx_max
tx_recoverDB_ENV->set_tx_recover

PrevRefNext

Copyright Sleepycat Software