|
hamsterdb Embedded Database
2.1.1
|
| #define HAM_AUTO_CLEANUP 1 |
Flag for ham_db_close, ham_env_close
Definition at line 1658 of file hamsterdb.h.
Referenced by hamsterdb::db::close(), hamsterdb::env::close(), and main().
| #define HAM_AUTO_RECOVERY 0x00010000 |
Flag for ham_env_open. This flag is non persistent.
Definition at line 1066 of file hamsterdb.h.
| #define HAM_CACHE_STRICT 0x00000400 |
Flag for ham_env_open, ham_env_create. This flag is non persistent.
Definition at line 1050 of file hamsterdb.h.
| #define HAM_CACHE_UNLIMITED 0x00040000 |
Flag for ham_env_open, ham_env_create. This flag is non persistent.
Definition at line 1074 of file hamsterdb.h.
| #define HAM_DIRECT_ACCESS 0x0040 |
Flag for ham_db_find, ham_cursor_find, ham_cursor_move
Definition at line 1407 of file hamsterdb.h.
| #define HAM_DISABLE_MMAP 0x00000200 |
Flag for ham_env_open, ham_env_create. This flag is non persistent.
Definition at line 1046 of file hamsterdb.h.
| #define HAM_DISABLE_VAR_KEYLEN 0x00000040 |
Flag for ham_env_create_db. This flag is non persistent.
Definition at line 1036 of file hamsterdb.h.
| #define HAM_DONT_CLEAR_LOG 2 |
Definition at line 1661 of file hamsterdb.h.
| #define HAM_DUPLICATE 0x0002 |
Flag for ham_db_insert and ham_cursor_insert
Definition at line 1392 of file hamsterdb.h.
Referenced by copy_db(), main(), and run_demo().
| #define HAM_DUPLICATE_INSERT_AFTER 0x0008 |
Flag for ham_cursor_insert
Definition at line 1398 of file hamsterdb.h.
| #define HAM_DUPLICATE_INSERT_BEFORE 0x0004 |
Flag for ham_cursor_insert
Definition at line 1395 of file hamsterdb.h.
| #define HAM_DUPLICATE_INSERT_FIRST 0x0010 |
Flag for ham_cursor_insert
Definition at line 1401 of file hamsterdb.h.
| #define HAM_DUPLICATE_INSERT_LAST 0x0020 |
Flag for ham_cursor_insert
Definition at line 1404 of file hamsterdb.h.
| #define HAM_ENABLE_DUPLICATES 0x00004000 |
Flag for ham_env_create_db. This flag is persisted in the Database.
Definition at line 1058 of file hamsterdb.h.
Referenced by main(), and run_demo().
| #define HAM_ENABLE_EXTENDED_KEYS 0x00080000 |
Flag for ham_env_create_db. This flag is persisted in the Database.
Definition at line 1078 of file hamsterdb.h.
Referenced by main().
| #define HAM_ENABLE_FSYNC 0x00000001 |
Flag for ham_env_open, @ ham_env_create. This flag is non persistent.
Definition at line 1020 of file hamsterdb.h.
| #define HAM_ENABLE_RECOVERY 0x00008000 |
Flag for ham_env_create, ham_env_open. This flag is non persistent.
Definition at line 1062 of file hamsterdb.h.
| #define HAM_ENABLE_TRANSACTIONS 0x00020000 |
Flag for ham_env_create, ham_env_open. This flag is non persistent.
Definition at line 1070 of file hamsterdb.h.
Referenced by main().
| #define HAM_ERASE_ALL_DUPLICATES 1 |
Definition at line 1474 of file hamsterdb.h.
| #define HAM_HINT_APPEND 0x00080000 |
Flag for ham_cursor_insert
Mutually exclusive with flag HAM_HINT_PREPEND.
Hints the hamsterdb engine that the current key will compare as larger than any key already existing in the Database. The hamsterdb engine will verify this postulation and when found not to be true, will revert to a regular insert operation as if this flag was not specified. The incurred cost then is only one additional key comparison.
Definition at line 1425 of file hamsterdb.h.
| #define HAM_HINT_PREPEND 0x00100000 |
Flag for ham_cursor_insert
Mutually exclusive with flag HAM_HINT_APPEND.
Hints the hamsterdb engine that the current key will compare as smaller than any key already existing in the Database. The hamsterdb engine will verify this postulation and when found not to be true, will revert to a regular insert operation as if this flag was not specified. The incurred cost then is only one additional key comparison.
Definition at line 1439 of file hamsterdb.h.
| #define HAM_HINTS_MASK 0x001F0000 |
Flag mask to extract the common hint flags from a find/move/insert/erase flag value.
Definition at line 1445 of file hamsterdb.h.
| #define HAM_IN_MEMORY 0x00000080 |
Flag for ham_env_create. This flag is non persistent.
Definition at line 1040 of file hamsterdb.h.
Referenced by main().
| #define HAM_OVERWRITE 0x0001 |
Flag for ham_db_insert and ham_cursor_insert
When specified with ham_db_insert and in case a key is specified which stores duplicates in the Database, the first duplicate record will be overwritten.
When used with ham_cursor_insert and assuming the same conditions, the duplicate currently referenced by the Cursor will be overwritten.
Definition at line 1389 of file hamsterdb.h.
| #define HAM_PARAM_CACHESIZE 0x00000100 |
Parameter name for ham_env_open, ham_env_create; sets the cache size
Definition at line 1528 of file hamsterdb.h.
| #define HAM_PARAM_DATABASE_NAME 0x00000203 |
Retrieve the Database 'name' number of this ham_db_t Database within the current ham_env_t Environment.
When the Database is not related to an Environment, the reserved 'name' 0xf001 is used for this Database.
Definition at line 1572 of file hamsterdb.h.
| #define HAM_PARAM_FILEMODE 0x00000201 |
Retrieve the filesystem file access mode as was specified at the time of ham_env_create/ham_env_open invocation.
Definition at line 1554 of file hamsterdb.h.
| #define HAM_PARAM_FILENAME 0x00000202 |
Return a const char * pointer to the current Environment/Database file name in the ham_u64_t value member, when the Database is actually stored on disc.
In-memory Databases will return a NULL (0) pointer instead.
Definition at line 1563 of file hamsterdb.h.
| #define HAM_PARAM_FLAGS 0x00000200 |
Retrieve the Database/Environment flags as were specified at the time of ham_env_create/ham_env_open invocation.
Definition at line 1548 of file hamsterdb.h.
| #define HAM_PARAM_KEYSIZE 0x00000102 |
Parameter name for ham_env_create_db; sets the key size
Definition at line 1534 of file hamsterdb.h.
| #define HAM_PARAM_LOG_DIRECTORY 0x00000105 |
Parameter name for ham_env_open, ham_env_create; sets the path of the log files
Definition at line 1542 of file hamsterdb.h.
| #define HAM_PARAM_MAX_DATABASES 0x00000103 |
Parameter name for ham_env_create; sets the number of maximum Databases
Definition at line 1538 of file hamsterdb.h.
| #define HAM_PARAM_MAX_KEYS_PER_PAGE 0x00000204 |
Retrieve the maximum number of keys per page; this number depends on the currently active page and key sizes.
When no Database or Environment is specified with the request, the default settings for all of these will be assumed in order to produce a viable ball park value for this one.
Definition at line 1582 of file hamsterdb.h.
| #define HAM_PARAM_PAGESIZE 0x00000101 |
Parameter name for ham_env_create; sets the page size
Definition at line 1531 of file hamsterdb.h.
| #define HAM_PARTIAL 0x0080 |
Flag for ham_db_insert, ham_cursor_insert, ham_db_find, ham_cursor_find, ham_cursor_move
Definition at line 1411 of file hamsterdb.h.
| #define HAM_READ_ONLY 0x00000004 |
Flag for ham_env_open, ham_env_open_db. This flag is non persistent.
Definition at line 1026 of file hamsterdb.h.
| #define HAM_RECORD_NUMBER 0x00002000 |
Flag for ham_env_create_db. This flag is persisted in the Database.
Definition at line 1054 of file hamsterdb.h.
Referenced by main().
| #define HAM_TXN_AUTO_ABORT 4 |
Automatically abort all open Transactions (the default)
Definition at line 1664 of file hamsterdb.h.
| #define HAM_TXN_AUTO_COMMIT 8 |
Automatically commit all open Transactions
Definition at line 1667 of file hamsterdb.h.
| typedef int HAM_CALLCONV(* ham_compare_func_t)(ham_db_t *db, const ham_u8_t *lhs, ham_size_t lhs_length, const ham_u8_t *rhs, ham_size_t rhs_length) |
Typedef for a key comparison function
Definition at line 1139 of file hamsterdb.h.
| typedef int HAM_CALLCONV(* ham_prefix_compare_func_t)(ham_db_t *db, const ham_u8_t *lhs, ham_size_t lhs_length, ham_size_t lhs_real_length, const ham_u8_t *rhs, ham_size_t rhs_length, ham_size_t rhs_real_length) |
Typedef for a prefix comparison function
Definition at line 1109 of file hamsterdb.h.
| HAM_EXPORT ham_status_t HAM_CALLCONV ham_db_close | ( | ham_db_t * | db, |
| ham_u32_t | flags | ||
| ) |
Closes the Database
This function flushes the Database and then closes the file handle. It also free the memory resources allocated in the db handle.
If the flag HAM_AUTO_CLEANUP is specified, hamsterdb automatically calls ham_cursor_close on all open Cursors. This invalidates the ham_cursor_t handle!
If the flag is not specified, the application must close all Database Cursors with ham_cursor_close to prevent memory leaks.
This function also aborts all Transactions which were not yet committed, and therefore renders all Transaction handles invalid. If the flag HAM_TXN_AUTO_COMMIT is specified, all Transactions will be committed.
| db | A valid Database handle |
| flags | Optional flags for closing the Database. Possible values are:
|
Referenced by hamsterdb::db::close(), and main().
| HAM_EXPORT ham_status_t HAM_CALLCONV ham_db_erase | ( | ham_db_t * | db, |
| ham_txn_t * | txn, | ||
| ham_key_t * | key, | ||
| ham_u32_t | flags | ||
| ) |
Erases a Database item
This function erases a Database item. If the item key does not exist, HAM_KEY_NOT_FOUND is returned.
Note that ham_db_erase can not erase a single duplicate key. If the key has multiple duplicates, all duplicates of this key will be erased. Use ham_cursor_erase to erase a specific duplicate key.
| db | A valid Database handle |
| txn | A Transaction handle, or NULL |
| key | The key to delete |
| flags | Optional flags for erasing; unused, set to 0 |
Referenced by hamsterdb::db::erase(), and main().
| HAM_EXPORT ham_status_t HAM_CALLCONV ham_db_find | ( | ham_db_t * | db, |
| ham_txn_t * | txn, | ||
| ham_key_t * | key, | ||
| ham_record_t * | record, | ||
| ham_u32_t | flags | ||
| ) |
Searches an item in the Database
This function searches the Database for key. If the key is found, record will receive the record of this item and HAM_SUCCESS is returned. If the key is not found, the function returns HAM_KEY_NOT_FOUND.
A ham_record_t structure should be initialized with zeroes before it is being used. This can be done with the C library routines memset(3) or bzero(2).
If the function completes successfully, the record pointer is initialized with the size of the record (in record.size) and the actual record data (in record.data). If the record is empty, size is 0 and data points to NULL.
The data pointer is a temporary pointer and will be overwritten by subsequent hamsterdb API calls using the same Transaction (or, if Transactions are disabled, using the same Database). You can alter this behaviour by allocating the data pointer in the application and setting record.flags to HAM_RECORD_USER_ALLOC. Make sure that the allocated buffer is large enough.
When specifying HAM_DIRECT_ACCESS, the data pointer will point directly to the record that is stored in hamsterdb; the data can be modified, but the pointer must not be reallocated or freed. The flag HAM_DIRECT_ACCESS is only allowed in In-Memory Databases and not if Transactions are enabled.
ham_db_find can not search for duplicate keys. If key has multiple duplicates, only the first duplicate is returned.
You can read only portions of the record by specifying the flag HAM_PARTIAL. In this case, hamsterdb will read record->partial_size bytes of the record data at offset record->partial_offset. If necessary, the record data will be limited to the original record size. The number of actually read bytes is returned in record->size.
HAM_PARTIAL is not allowed if record->size is <= 8 or if Transactions are enabled. In such a case, HAM_INV_PARAMETER is returned.
If Transactions are enabled (see HAM_ENABLE_TRANSACTIONS) and txn is NULL then hamsterdb will create a temporary Transaction. When moving the Cursor, and the new key is currently modified in an active Transaction (one that is not yet committed or aborted) then hamsterdb will skip this key and move to the next/previous one. However if flags are 0 (and the Cursor is not moved), and key or rec is NOT NULL, then hamsterdb will return error HAM_TXN_CONFLICT.
| db | A valid Database handle |
| txn | A Transaction handle, or NULL |
| key | The key of the item |
| record | The record of the item |
| flags | Optional flags for searching, which can be combined with bitwise OR. Possible flags are:
|
Referenced by hamsterdb::db::find(), and main().
Retrieve the Environment handle of a Database
| db | A valid Database handle |
Returns the last error code
| db | A valid Database handle |
Referenced by hamsterdb::db::get_error().
| HAM_EXPORT ham_status_t HAM_CALLCONV ham_db_get_key_count | ( | ham_db_t * | db, |
| ham_txn_t * | txn, | ||
| ham_u32_t | flags, | ||
| ham_u64_t * | keycount | ||
| ) |
Returns the number of keys stored in the Database
You can specify the HAM_SKIP_DUPLICATES if you do now want to include any duplicates in the count. This will also speed up the counting.
| db | A valid Database handle |
| txn | A Transaction handle, or NULL |
| flags | Optional flags:
|
| keycount | A reference to a variable which will receive the calculated key count per page |
Referenced by hamsterdb::db::get_key_count().
| HAM_EXPORT ham_status_t HAM_CALLCONV ham_db_get_parameters | ( | ham_db_t * | db, |
| ham_parameter_t * | param | ||
| ) |
Retrieve the current value for a given Database setting
Only those values requested by the parameter array will be stored.
The following parameters are supported:
| db | A valid Database handle |
| param | An array of ham_parameter_t structures |
Referenced by hamsterdb::db::get_parameters().
| HAM_EXPORT ham_status_t HAM_CALLCONV ham_db_insert | ( | ham_db_t * | db, |
| ham_txn_t * | txn, | ||
| ham_key_t * | key, | ||
| ham_record_t * | record, | ||
| ham_u32_t | flags | ||
| ) |
Inserts a Database item
This function inserts a key/record pair as a new Database item.
If the key already exists in the Database, error HAM_DUPLICATE_KEY is returned.
If you wish to overwrite an existing entry specify the flag HAM_OVERWRITE.
You can write only portions of the record by specifying the flag HAM_PARTIAL. In this case, hamsterdb will write partial_size bytes of the record data at offset partial_offset. The full record size will always be given in record->size! If partial_size+partial_offset exceed record->size then partial_size will be limited. To shrink or grow the record, adjust record->size. HAM_PARTIAL automatically overwrites existing records. Gaps will be filled with null-bytes if the record did not yet exist.
HAM_PARTIAL is not allowed if record->size is <= 8 or if Transactions are enabled. In such a case, HAM_INV_PARAMETER is returned.
If you wish to insert a duplicate key specify the flag HAM_DUPLICATE. (Note that the Database has to be created with HAM_ENABLE_DUPLICATES in order to use duplicate keys.) The duplicate key is inserted after all other duplicate keys (see HAM_DUPLICATE_INSERT_LAST).
Record Number Databases (created with HAM_RECORD_NUMBER) expect either an empty key (with a size of 0 and data pointing to NULL), or a user-supplied key (with key.flag HAM_KEY_USER_ALLOC, a size of 8 and a valid data pointer). If key.size is 0 and key.data is NULL, hamsterdb will temporarily allocate memory for key->data, which will then point to an 8-byte unsigned integer in host-endian.
| db | A valid Database handle |
| txn | A Transaction handle, or NULL |
| key | The key of the new item |
| record | The record of the new item |
| flags | Optional flags for inserting. Possible flags are:
|
Referenced by copy_db(), hamsterdb::db::insert(), and main().
| HAM_EXPORT ham_status_t HAM_CALLCONV ham_db_set_compare_func | ( | ham_db_t * | db, |
| ham_compare_func_t | foo | ||
| ) |
Sets the comparison function
The comparison function compares two index keys. It returns -1 if the first key is smaller, +1 if the second key is smaller or 0 if both keys are equal.
Note that if you use a custom comparison routine in combination with extended keys, it might be useful to disable the prefix comparison, which is based on memcmp(3). See ham_db_set_prefix_compare_func for details.
| db | A valid Database handle |
| foo | A pointer to the compare function |
Referenced by main(), and hamsterdb::db::set_compare_func().
| HAM_EXPORT ham_status_t HAM_CALLCONV ham_db_set_prefix_compare_func | ( | ham_db_t * | db, |
| ham_prefix_compare_func_t | foo | ||
| ) |
Sets the prefix comparison function
The prefix comparison function is called when an index uses keys with variable length and at least one of the two keys is loaded only partially.
| db | A valid Database handle |
| foo | A pointer to the prefix compare function |
Referenced by hamsterdb::db::set_prefix_compare_func().
Returns the kind of key match which produced this key as it was returned by one of the ham_db_find() and ham_cursor_find().
This routine assumes the key was passed back by one of the ham_db_find and ham_cursor_find functions and not used by any other hamsterdb functions after that.
As such, this function produces an answer akin to the 'sign' of the specified key as it was returned by the find operation.
| key | A valid key |
Referenced by hamsterdb::key::get_approximate_match_type().
1.7.6.1