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 field Berkeley DB 3.X method
db_errcall DB_ENV->set_errcall()
db_errfile DB_ENV->set_errfile()
db_errpfx DB_ENV->set_errpfx()
db_lorder This 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_paniccall DB_ENV->set_paniccall
db_verbose DB_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_max DB_ENV->set_lg_max()
lk_conflicts DB_ENV->set_lk_conflicts()
lk_detect DB_ENV->set_lk_detect()
lk_max dbenv->set_lk_max
lk_modes DB_ENV->set_lk_conflicts()
mp_mmapsize DB_ENV->set_mp_mmapsize()
mp_size DB_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_info This 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_max DB_ENV->set_tx_max()
tx_recover dbenv->set_tx_recover