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 |