transformdb (1) - Linux Man Pages

transformdb: The Freeze database migration tool.


transformdb - The Freeze database migration tool.


transformdb -o FILE [-i] [slice-options] [type-options]

Generates descriptors in FILE for a database.

transformdb -o FILE [-i] [slice-options] DBENV

Generates descriptors in FILE for all databases in the environment DBENV.

transformdb [options] [slice-options] [type-options] DBENV DB NEWDBENV

Transform the database DB in the environment DBENV. A database of the same name is created in the environment NEWDBENV.

transformdb [options] [slice-options] DBENV NEWDBENV

Transform all databases from the environment DBENV into the environment NEWDBENV.


The FreezeScript tool transformdb migrates a database created by a Freeze map or evictor. It accomplishes this by comparing the "old" Slice definitions (i.e., the ones that describe the current contents of the database) with the "new" Slice definitions, and making whatever modifications are necessary to ensure that the transformed database is compatible with the new definitions. Full documentation for transformdb is available online at:


-h, --help

Displays a help message.

-v, --version
Displays the Ice version.


Defines the preprocessor symbol NAME.


Defines the preprocessor symbol NAME with the value DEF.


Undefines the preprocessor symbol NAME.


Add the directory DIR to the search path for #include directives.


Print the preprocessor output on stdout.

--output-dir DIR

Place the generated files into directory DIR.

-d, --debug

Print debug information showing the operation of the Slice parser.


Permit use of the normally reserved prefix Ice for identifiers. Use this option only when compiling the source code for the Ice run time.


Permit use of underscores in Slice identifiers.

--old SLICE
--new SLICE

Loads the old or new Slice definitions contained in the file SLICE. These options may be specified multiple times if several files must be loaded. However, it is the user's responsibility to ensure that duplicate definitions do not occur (which is possible when two files are loaded that share a common include file). One strategy for avoiding duplicate definitions is to load a single Slice file that contains only #include statements for each of the Slice files to be loaded. No duplication is possible in this case if the included files use include guards correctly.

--include-old DIR
--include-new DIR

Adds the directory DIR to the set of include paths for the old or new Slice definitions.

--key TYPE[,TYPE]
--value TYPE[,TYPE]

Specifies the Slice type(s) of the database key and value. If the type does not change, then the type only needs to be specified once. Otherwise, the old type is specified first, followed by a comma and the new type. For example, the option --key int,string indicates that the database key is migrating from int to string. On the other hand, the option --key int,int indicates that the key type does not change, and could be given simply as --key int. Type changes are restricted to those allowed by the compatibility rules, but custom migration provides additional flexibility.


Indicates that a Freeze evictor database is being migrated. As a convenience, this option automatically sets the database key and value types to those appropriate for the Freeze evictor, and therefore the --key and --value options are not necessary. Specifically, the key type of a Freeze evictor database is Ice::Identity, and the value type is Freeze::ObjectRecord. The latter is defined in the Slice file Freeze/; however, this file does not need to be loaded into your old and new Slice definitions.


Requests that transformdb ignore type changes that violate the compatibility rules. If this option is not specified, transformdb fails immediately if such a violation occurs. With this option, a warning is displayed but transformdb continues the requested action. The -i option can be specified in analysis or automatic migration modes.

During migration, this option requests that transformdb purge object instances whose type is no longer found in the new Slice definitions.


Use catastrophic recovery on the old Berkeley DB database environment prior to migration.


Suppress duplicate warnings during migration. This option is especially useful to minimize diagnostic messages when transformdb would otherwise emit the same warning many times, such as when it detects the same issue in every record of a database.