public void upgrade(String file, int flags) throws DbException;
The Db.upgrade method upgrades all of the databases included in the file file, if necessary. If no upgrade is necessary, Db.upgrade always returns success.
Database upgrades are done in place and are destructive. For example, if pages need to be allocated and no disk space is available, the database may be left corrupted. Backups should be made before databases are upgraded. See Upgrading databases for more information.
Unlike all other database operations, Db.upgrade may only be done on a system with the same byte-order as the database.
The flags value must be set to 0 or the following value:
As part of the upgrade from the Berkeley DB 3.0 release to the 3.1 release, the on-disk format of duplicate data items changed. To correctly upgrade the format requires applications to specify whether duplicate data items in the database are sorted or not. Specifying the Db.DB_DUPSORT flag informs Db.upgrade that the duplicates are sorted; otherwise they are assumed to be unsorted. Incorrectly specifying the value of this flag may lead to database corruption.
Further, because the Db.upgrade method upgrades a physical file (including all the databases it contains), it is not possible to use Db.upgrade to upgrade files in which some of the databases it includes have sorted duplicate data items, and some of the databases it includes have unsorted duplicate data items. If the file does not have more than a single database, if the databases do not support duplicate data items, or if all of the databases that support duplicate data items support the same style of duplicates (either sorted or unsorted), Db.upgrade will work correctly as long as the Db.DB_DUPSORT flag is correctly specified. Otherwise, the file cannot be upgraded using Db.upgrade; it must be upgraded manually by dumping and reloading the databases.
The Db.upgrade method throws an exception that encapsulates a non-zero error value on failure.
The Db.upgrade method may fail and throw an exception encapsulating a non-zero error for the following conditions:
The database is not in the same byte-order as the system.
The Db.upgrade method may fail and throw an exception for errors specified for other Berkeley DB and C library or system methods. If a catastrophic error has occurred, the Db.upgrade method may fail and throw a DbRunRecoveryException, in which case all subsequent Berkeley DB calls will fail in the same way.
Copyright Sleepycat Software