The db5.3_codegen uses a simple description language:
• Lines in the input consist of white-space separated tokens.
• Tokens are case-insensitive.
• Empty lines and lines where the first non-space character is a hash mark (“#”) are ignored. In
addition, hash marks may appear in lines, in which case the content of the line from the hash mark to
the end of the line is ignored.
There are two top-level objects: “environment” and “database”, which correspond to database environments
and databases, respectively. These top-level objects can be associated with keywords to describe their
configuration and relationships.
For example, the following input would create two standalone databases:
database data_one {
type btree
}
database data_two {
type btree
}
In this case, there would be no DB_ENV handle, and the public DB handles would be:
DB *data_one;
DB *data_two;
For example, the following input would create a database environment which contains three databases:
environment myenv {
database data_one {
type btree
}
database data_two {
type btree
}
database data_three {
type btree
}
}
In this case, the public DB_ENV and DB handles would be:
DB_ENV *myenv_dbenv;
DB *myenv_data_one;
DB *myenv_data_two;
DB *myenv_data_three;
A variety of keywords can be specified for the databases and the environments. For example, the cache
size can be specified for the database environment, and the page size can be specified for the database,
as well as for secondary relationships:
environment myenv {
cachesize 2 0 10
database data_one {
type btree
pagesize 1024
}
database data_two {
primary data_one
secondary_offset 10 15
type btree
pagesize 32768
}
database data_three {
type btree
pagesize 512
}
}
EnvironmentKeywordsenvironment Start a database environment block.
There must be three tokens on the line: the keyword, the name of the environment and an
opening brace (“{”).
home Specify the database environment home directory.
There must be two tokens on the line: the keyword and the home directory.
cachesize Specify the database environment cache size.
There must be two tokens on the line: the keyword, the gigabytes of cache, the bytes of
cache, and the number of caches (the number of underlying physical areas into which the
cache is logically divided).
private Specify the database environment is private.
There must be one token on the line: the keyword by itself.
} End the database environment block.
There must be one token on the line: the keyword by itself.
DatabaseKeywordsdatabase Start a database block.
There must be three tokens on the line: the keyword, the name of the database and an
opening brace (“{”).
custom Specify a custom key-comparison routine. This is used when the Btree database requires
a specific sort that db5.3_codegen cannot generate. A stub key comparison routine will
be created and configured for the database which should be modified as necessary. See
the “key_type” keyword for more information.
There must be one token on the line: the keyword by itself.
dupsort Configure the database to support sorted duplicates.
There must be one token on the line: the keyword by itself.
extentsize Configure the size of the Queue database extent files.
There must be two tokens on the line: the keyword and the extent file size, as a number
of pages.
key_type Configure a integral type key-comparison routine. This is used when the Btree database
key is an integral type (such as “unsignedint” or “u_int32_t”). Any C-language
integral type may be specified. See the “custom” keyword for more information. A
Btree comparison routine based on the type of the key will be created and configured.
There must be two tokens on the line: the keyword and the type.
pagesize Configure the database page size.
There must be two tokens on the line: the keyword and the page size in bytes.
primary Configure the database as a secondary index. A stub secondary callback routine will be
created and configured for the database, which should be modified as necessary. See
the “secondary_offset” keyword for more information.
There must be two tokens on the line: the keyword and the name of the primary database
for which this database is a secondary.
recnum Configure the Btree database to support record number access.
There must be one token on the line: the keyword by itself.
re_len Configure the record length for a Queue database or a fixed-length Recno database.
There must be two tokens on the line: the keyword and the length of a record, in bytes.
secondary_offset Configure a secondary callback routine based on a byte string found in the primary
database's data item.
There must be three tokens on the line: the keyword, the byte offset from the beginning
of the primary data item where the secondary key occurs, and the length of the
secondary key in bytes.
transaction Configure the database (and, by extension, the database environment), to be
transactional.
There must be one token on the line: the keyword by itself.
type Configure the database type.
There must be two tokens on the line: the keyword and the type, where the type is one
of “btree”, “hash”, “queue” or “recno”.
} End the database environment block.
There must be one token on the line: the keyword by itself.