public class LMDB
extends java.lang.Object
LMDB is compact, fast, powerful, and robust and implements a simplified variant of the BerkeleyDB (BDB) API.
Everything starts with an environment, created by env_create. Once created, this environment must also be opened with env_open. env_open gets
passed a name which is interpreted as a directory path. Note that this directory must exist already, it is not created for you. Within that directory,
a lock file and a storage file will be generated. If you don't want to use a directory, you can pass the NOSUBDIR option, in which case the path you
provided is used directly as the data file, and another file with a "-lock" suffix added will be used for the lock file.
Once the environment is open, a transaction can be created within it using txn_begin. Transactions may be read-write or read-only, and read-write
transactions may be nested. A transaction must only be used by one thread at a time. Transactions are always required, even for read-only access. The
transaction provides a consistent view of the data.
Once a transaction has been created, a database can be opened within it using dbi_open. If only one database will ever be used in the environment, a
NULL can be passed as the database name. For named databases, the CREATE flag must be used to create the database if it doesn't already exist. Also,
env_set_maxdbs must be called after env_create and before env_open to set the maximum number of named databases you want to support.
Note: a single transaction can open multiple databases. Generally databases should only be opened once, by the first transaction in the process. After the first transaction completes, the database handles can freely be used by all subsequent transactions.
Within a transaction, get and put can store single key/value pairs if that is all you need to do (but see Cursors below if you want to do
more).
A key/value pair is expressed as two MDBVal structures. This struct has two fields, mv_size and mv_data. The data is a void
pointer to an array of mv_size bytes.
Because LMDB is very efficient (and usually zero-copy), the data returned in an MDBVal structure may be memory-mapped straight from disk. In other
words look but do not touch (or free() for that matter). Once a transaction is closed, the values can no longer be used, so make a copy
if you need to keep them after that.
To do more powerful things, we must use a cursor.
Within the transaction, a cursor can be created with cursor_open. With this cursor we can store/retrieve/delete (multiple) values using
cursor_get, cursor_put, and cursor_del.
cursor_get positions itself depending on the cursor operation requested, and for some operations, on the supplied key. For example, to list all
key/value pairs in a database, use operation FIRST for the first call to cursor_get, and NEXT on subsequent calls, until the end is hit.
To retrieve all keys starting from a specified key value, use SET.
When using cursor_put, either the function will position the cursor for you based on the key, or you can use operation CURRENT to use the
current position of the cursor. Note that key must then match the current position's key.
So we have a cursor in a transaction which opened a database in an environment which is opened from a filesystem after it was separately created.
Or, we create an environment, open it from a filesystem, create a transaction within it, open a database within that transaction, and create a cursor within all of the above.
LMDB uses POSIX locks on files, and these locks have issues if one process opens a file multiple times. Because of this, do not env_open a file
multiple times from a single process. Instead, share the LMDB environment that has opened the file across all threads. Otherwise, if a single process
opens the same environment multiple times, closing it once will remove all the locks held on it, and the other instances will be vulnerable to
corruption from other processes.
Also note that a transaction is tied to one thread by default using Thread Local Storage. If you want to pass read-only transactions across threads,
you can use the NOTLS option on the environment.
To actually get anything done, a transaction must be committed using txn_commit. Alternatively, all of a transaction's operations can be discarded
using txn_abort. In a read-only transaction, any cursors will not automatically be freed. In a read-write transaction, all cursors will be
freed and must not be used again.
For read-only transactions, obviously there is nothing to commit to storage. The transaction still must eventually be aborted to close any database handle(s) opened in it, or committed to keep the database handles around for reuse in new transactions.
In addition, as long as a transaction is open, a consistent view of the database is kept alive, which requires storage. A read-only transaction that no longer requires this consistent view should be terminated (committed or aborted) when the view is no longer needed (but see below for an optimization).
There can be multiple simultaneously active read-only transactions but only one that can write. Once a single read-write transaction is opened, all further attempts to begin one will block until the first one is committed or aborted. This has no effect on read-only transactions, however, and they may continue to be opened at any time.
get and put respectively have no and only some support for multiple key/value pairs with identical keys. If there are multiple values for a key,
get will only return the first value.
When multiple values for one key are required, pass the DUPSORT flag to dbi_open. In an DUPSORT database, by default put will not replace the
value for a key if the key existed already. Instead it will add the new value to the key. In addition, del will pay attention to the value field
too, allowing for specific values of a key to be deleted.
Finally, additional cursor operations become available for traversing through and retrieving duplicate values.
If you frequently begin and abort read-only transactions, as an optimization, it is possible to only reset and renew a transaction.
txn_reset releases any old copies of data kept around for a read-only transaction. To reuse this reset transaction, call txn_renew on it. Any
cursors in this transaction must also be renewed using cursor_renew.
Note that txn_reset is similar to txn_abort and will close any databases you opened within the transaction.
To permanently free a transaction, reset or not, use txn_abort.
For read-only transactions, any cursors created within it must be closed using cursor_close.
It is very rarely necessary to close a database handle, and in general they should just be left open.
| Modifier and Type | Field and Description |
|---|---|
static int |
MDB_APPEND
Write flags.
|
static int |
MDB_APPENDDUP
Write flags.
|
static int |
MDB_BAD_DBI
Return codes.
|
static int |
MDB_BAD_RSLOT
Return codes.
|
static int |
MDB_BAD_TXN
Return codes.
|
static int |
MDB_BAD_VALSIZE
Return codes.
|
static int |
MDB_CORRUPTED
Return codes.
|
static int |
MDB_CP_COMPACT
Copy flags.
|
static int |
MDB_CREATE
Database flags.
|
static int |
MDB_CURRENT
Write flags.
|
static int |
MDB_CURSOR_FULL
Return codes.
|
static int |
MDB_DBS_FULL
Return codes.
|
static int |
MDB_DUPFIXED
Database flags.
|
static int |
MDB_DUPSORT
Database flags.
|
static int |
MDB_FIRST
MDB_cursor_op
|
static int |
MDB_FIRST_DUP
MDB_cursor_op
|
static int |
MDB_FIXEDMAP
Environment flags.
|
static int |
MDB_GET_BOTH
MDB_cursor_op
|
static int |
MDB_GET_BOTH_RANGE
MDB_cursor_op
|
static int |
MDB_GET_CURRENT
MDB_cursor_op
|
static int |
MDB_GET_MULTIPLE
MDB_cursor_op
|
static int |
MDB_INCOMPATIBLE
Return codes.
|
static int |
MDB_INTEGERDUP
Database flags.
|
static int |
MDB_INTEGERKEY
Database flags.
|
static int |
MDB_INVALID
Return codes.
|
static int |
MDB_KEYEXIST
Return codes.
|
static int |
MDB_LAST
MDB_cursor_op
|
static int |
MDB_LAST_DUP
MDB_cursor_op
|
static int |
MDB_LAST_ERRCODE
Return codes.
|
static int |
MDB_MAP_FULL
Return codes.
|
static int |
MDB_MAP_RESIZED
Return codes.
|
static int |
MDB_MAPASYNC
Environment flags.
|
static int |
MDB_MULTIPLE
Write flags.
|
static int |
MDB_NEXT
MDB_cursor_op
|
static int |
MDB_NEXT_DUP
MDB_cursor_op
|
static int |
MDB_NEXT_MULTIPLE
MDB_cursor_op
|
static int |
MDB_NEXT_NODUP
MDB_cursor_op
|
static int |
MDB_NODUPDATA
Write flags.
|
static int |
MDB_NOLOCK
Environment flags.
|
static int |
MDB_NOMEMINIT
Environment flags.
|
static int |
MDB_NOMETASYNC
Environment flags.
|
static int |
MDB_NOOVERWRITE
Write flags.
|
static int |
MDB_NORDAHEAD
Environment flags.
|
static int |
MDB_NOSUBDIR
Environment flags.
|
static int |
MDB_NOSYNC
Environment flags.
|
static int |
MDB_NOTFOUND
Return codes.
|
static int |
MDB_NOTLS
Environment flags.
|
static int |
MDB_PAGE_FULL
Return codes.
|
static int |
MDB_PAGE_NOTFOUND
Return codes.
|
static int |
MDB_PANIC
Return codes.
|
static int |
MDB_PREV
MDB_cursor_op
|
static int |
MDB_PREV_DUP
MDB_cursor_op
|
static int |
MDB_PREV_MULTIPLE
MDB_cursor_op
|
static int |
MDB_PREV_NODUP
MDB_cursor_op
|
static int |
MDB_RDONLY
Environment flags.
|
static int |
MDB_READERS_FULL
Return codes.
|
static int |
MDB_RESERVE
Write flags.
|
static int |
MDB_REVERSEDUP
Database flags.
|
static int |
MDB_REVERSEKEY
Database flags.
|
static int |
MDB_SET
MDB_cursor_op
|
static int |
MDB_SET_KEY
MDB_cursor_op
|
static int |
MDB_SET_RANGE
MDB_cursor_op
|
static int |
MDB_SUCCESS
Return codes.
|
static int |
MDB_TLS_FULL
Return codes.
|
static int |
MDB_TXN_FULL
Return codes.
|
static int |
MDB_VERSION_MISMATCH
Return codes.
|
static int |
MDB_WRITEMAP
Environment flags.
|
| Modifier and Type | Method and Description |
|---|---|
static int |
mdb_cmp(long txn,
int dbi,
MDBVal a,
MDBVal b)
Compares two data items according to a particular database.
|
static void |
mdb_cursor_close(long cursor)
Closes a cursor handle.
|
static int |
mdb_cursor_count(long cursor,
org.lwjgl.PointerBuffer countp)
Returns count of duplicates for current key.
|
static int |
mdb_cursor_dbi(long cursor)
Return the cursor's database handle.
|
static int |
mdb_cursor_del(long cursor,
int flags)
Deletes current key/data pair.
|
static int |
mdb_cursor_get(long cursor,
MDBVal key,
MDBVal data,
int op)
Retrieves by cursor.
|
static int |
mdb_cursor_open(long txn,
int dbi,
org.lwjgl.PointerBuffer cursor)
Creates a cursor handle.
|
static int |
mdb_cursor_put(long cursor,
MDBVal key,
MDBVal data,
int flags)
Stores by cursor.
|
static int |
mdb_cursor_renew(long txn,
long cursor)
Renews a cursor handle.
|
static long |
mdb_cursor_txn(long cursor)
Returns the cursor's transaction handle.
|
static void |
mdb_dbi_close(long env,
int dbi)
Closes a database handle.
|
static int |
mdb_dbi_flags(long txn,
int dbi,
int[] flags)
Array version of:
dbi_flags |
static int |
mdb_dbi_flags(long txn,
int dbi,
java.nio.IntBuffer flags)
Retrieve the DB flags for a database handle.
|
static int |
mdb_dbi_open(long txn,
java.nio.ByteBuffer name,
int flags,
int[] dbi)
Array version of:
dbi_open |
static int |
mdb_dbi_open(long txn,
java.nio.ByteBuffer name,
int flags,
java.nio.IntBuffer dbi)
Opens a database in the environment.
|
static int |
mdb_dbi_open(long txn,
java.lang.CharSequence name,
int flags,
int[] dbi)
Array version of:
dbi_open |
static int |
mdb_dbi_open(long txn,
java.lang.CharSequence name,
int flags,
java.nio.IntBuffer dbi)
Opens a database in the environment.
|
static int |
mdb_dcmp(long txn,
int dbi,
MDBVal a,
MDBVal b)
Compares two data items according to a particular database.
|
static int |
mdb_del(long txn,
int dbi,
MDBVal key,
MDBVal data)
Deletes items from a database.
|
static int |
mdb_drop(long txn,
int dbi,
boolean del)
Empties or deletes+closes a database.
|
static void |
mdb_env_close(long env)
Closes the environment and releases the memory map.
|
static int |
mdb_env_copy(long env,
java.nio.ByteBuffer path)
Copies an LMDB environment to the specified path.
|
static int |
mdb_env_copy(long env,
java.lang.CharSequence path)
Copies an LMDB environment to the specified path.
|
static int |
mdb_env_copy2(long env,
java.nio.ByteBuffer path,
int flags)
Copies an LMDB environment to the specified path, with options.
|
static int |
mdb_env_copy2(long env,
java.lang.CharSequence path,
int flags)
Copies an LMDB environment to the specified path, with options.
|
static int |
mdb_env_create(org.lwjgl.PointerBuffer env)
Creates an LMDB environment handle.
|
static int |
mdb_env_get_flags(long env,
int[] flags)
Array version of:
env_get_flags |
static int |
mdb_env_get_flags(long env,
java.nio.IntBuffer flags)
Gets environment flags.
|
static int |
mdb_env_get_maxkeysize(long env)
Gets the maximum size of keys and
DUPSORT data we can write. |
static int |
mdb_env_get_maxreaders(long env,
int[] readers)
Array version of:
env_get_maxreaders |
static int |
mdb_env_get_maxreaders(long env,
java.nio.IntBuffer readers)
Gets the maximum number of threads/reader slots for the environment.
|
static int |
mdb_env_get_path(long env,
org.lwjgl.PointerBuffer path)
Returns the path that was used in
env_open. |
static long |
mdb_env_get_userctx(long env)
Gets the application information associated with the
MDB_env. |
static int |
mdb_env_info(long env,
MDBEnvInfo stat)
Returns information about the LMDB environment.
|
static int |
mdb_env_open(long env,
java.nio.ByteBuffer path,
int flags,
int mode)
Opens an environment handle.
|
static int |
mdb_env_open(long env,
java.lang.CharSequence path,
int flags,
int mode)
Opens an environment handle.
|
static int |
mdb_env_set_flags(long env,
int flags,
boolean onoff)
Sets environment flags.
|
static int |
mdb_env_set_mapsize(long env,
long size)
Sets the size of the memory map to use for this environment.
|
static int |
mdb_env_set_maxdbs(long env,
int dbs)
Sets the maximum number of named databases for the environment.
|
static int |
mdb_env_set_maxreaders(long env,
int readers)
Sets the maximum number of threads/reader slots for the environment.
|
static int |
mdb_env_set_userctx(long env,
long ctx)
Set application information associated with the
MDB_env. |
static int |
mdb_env_stat(long env,
MDBStat stat)
Returns statistics about the LMDB environment.
|
static int |
mdb_env_sync(long env,
boolean force)
Flushes the data buffers to disk.
|
static int |
mdb_get(long txn,
int dbi,
MDBVal key,
MDBVal data)
Gets items from a database.
|
static int |
mdb_put(long txn,
int dbi,
MDBVal key,
MDBVal data,
int flags)
Stores items into a database.
|
static int |
mdb_reader_check(long env,
int[] dead)
Array version of:
reader_check |
static int |
mdb_reader_check(long env,
java.nio.IntBuffer dead)
Checks for stale entries in the reader lock table.
|
static int |
mdb_reader_list(long env,
MDBMsgFuncI func,
long ctx)
Dumps the entries in the reader lock table.
|
static int |
mdb_set_compare(long txn,
int dbi,
MDBCmpFuncI cmp)
Sets a custom key comparison function for a database.
|
static int |
mdb_set_dupsort(long txn,
int dbi,
MDBCmpFuncI cmp)
Sets a custom data comparison function for a
DUPSORT database. |
static int |
mdb_set_relctx(long txn,
int dbi,
long ctx)
Sets a context pointer for a
FIXEDMAP database's relocation function. |
static int |
mdb_set_relfunc(long txn,
int dbi,
MDBRelFuncI rel)
Sets a relocation function for a
FIXEDMAP database. |
static int |
mdb_stat(long txn,
int dbi,
MDBStat stat)
Retrieves statistics for a database.
|
static java.lang.String |
mdb_strerror(int err)
Returns a string describing a given error code.
|
static void |
mdb_txn_abort(long txn)
Abandons all the operations of the transaction instead of saving them.
|
static int |
mdb_txn_begin(long env,
long parent,
int flags,
org.lwjgl.PointerBuffer txn)
Creates a transaction for use with the environment.
|
static int |
mdb_txn_commit(long txn)
Commits all the operations of a transaction into the database.
|
static long |
mdb_txn_env(long txn)
Returns the transaction's
MDB_env. |
static long |
mdb_txn_id(long txn)
Returns the transaction's ID.
|
static int |
mdb_txn_renew(long txn)
Renews a read-only transaction.
|
static void |
mdb_txn_reset(long txn)
Resets a read-only transaction.
|
static java.lang.String |
mdb_version(int[] major,
int[] minor,
int[] patch)
Array version of:
version |
static java.lang.String |
mdb_version(java.nio.IntBuffer major,
java.nio.IntBuffer minor,
java.nio.IntBuffer patch)
Returns the LMDB library version information.
|
static int |
nmdb_cmp(long txn,
int dbi,
long a,
long b)
Unsafe version of:
cmp |
static void |
nmdb_cursor_close(long cursor)
Unsafe version of:
cursor_close |
static int |
nmdb_cursor_count(long cursor,
long countp)
Unsafe version of:
cursor_count |
static int |
nmdb_cursor_dbi(long cursor)
Unsafe version of:
cursor_dbi |
static int |
nmdb_cursor_del(long cursor,
int flags)
Unsafe version of:
cursor_del |
static int |
nmdb_cursor_get(long cursor,
long key,
long data,
int op)
Unsafe version of:
cursor_get |
static int |
nmdb_cursor_open(long txn,
int dbi,
long cursor)
Unsafe version of:
cursor_open |
static int |
nmdb_cursor_put(long cursor,
long key,
long data,
int flags)
Unsafe version of:
cursor_put |
static int |
nmdb_cursor_renew(long txn,
long cursor)
Unsafe version of:
cursor_renew |
static long |
nmdb_cursor_txn(long cursor)
Unsafe version of:
cursor_txn |
static void |
nmdb_dbi_close(long env,
int dbi)
Unsafe version of:
dbi_close |
static int |
nmdb_dbi_flags(long txn,
int dbi,
int[] flags)
Array version of:
nmdb_dbi_flags(long, int, long) |
static int |
nmdb_dbi_flags(long txn,
int dbi,
long flags)
Unsafe version of:
dbi_flags |
static int |
nmdb_dbi_open(long txn,
long name,
int flags,
int[] dbi)
Array version of:
nmdb_dbi_open(long, long, int, long) |
static int |
nmdb_dbi_open(long txn,
long name,
int flags,
long dbi)
Unsafe version of:
dbi_open |
static int |
nmdb_dcmp(long txn,
int dbi,
long a,
long b)
Unsafe version of:
dcmp |
static int |
nmdb_del(long txn,
int dbi,
long key,
long data)
Unsafe version of:
del |
static int |
nmdb_drop(long txn,
int dbi,
int del)
Unsafe version of:
drop |
static void |
nmdb_env_close(long env)
Unsafe version of:
env_close |
static int |
nmdb_env_copy(long env,
long path)
Unsafe version of:
env_copy |
static int |
nmdb_env_copy2(long env,
long path,
int flags)
Unsafe version of:
env_copy2 |
static int |
nmdb_env_create(long env)
Unsafe version of:
env_create |
static int |
nmdb_env_get_flags(long env,
int[] flags)
Array version of:
nmdb_env_get_flags(long, long) |
static int |
nmdb_env_get_flags(long env,
long flags)
Unsafe version of:
env_get_flags |
static int |
nmdb_env_get_maxkeysize(long env)
Unsafe version of:
env_get_maxkeysize |
static int |
nmdb_env_get_maxreaders(long env,
int[] readers)
Array version of:
nmdb_env_get_maxreaders(long, long) |
static int |
nmdb_env_get_maxreaders(long env,
long readers)
Unsafe version of:
env_get_maxreaders |
static int |
nmdb_env_get_path(long env,
long path)
Unsafe version of:
env_get_path |
static long |
nmdb_env_get_userctx(long env)
Unsafe version of:
env_get_userctx |
static int |
nmdb_env_info(long env,
long stat)
Unsafe version of:
env_info |
static int |
nmdb_env_open(long env,
long path,
int flags,
int mode)
Unsafe version of:
env_open |
static int |
nmdb_env_set_flags(long env,
int flags,
int onoff)
Unsafe version of:
env_set_flags |
static int |
nmdb_env_set_mapsize(long env,
long size)
Unsafe version of:
env_set_mapsize |
static int |
nmdb_env_set_maxdbs(long env,
int dbs)
Unsafe version of:
env_set_maxdbs |
static int |
nmdb_env_set_maxreaders(long env,
int readers)
Unsafe version of:
env_set_maxreaders |
static int |
nmdb_env_set_userctx(long env,
long ctx)
Unsafe version of:
env_set_userctx |
static int |
nmdb_env_stat(long env,
long stat)
Unsafe version of:
env_stat |
static int |
nmdb_env_sync(long env,
int force)
Unsafe version of:
env_sync |
static int |
nmdb_get(long txn,
int dbi,
long key,
long data)
Unsafe version of:
get |
static int |
nmdb_put(long txn,
int dbi,
long key,
long data,
int flags)
Unsafe version of:
put |
static int |
nmdb_reader_check(long env,
int[] dead)
Array version of:
nmdb_reader_check(long, long) |
static int |
nmdb_reader_check(long env,
long dead)
Unsafe version of:
reader_check |
static int |
nmdb_reader_list(long env,
long func,
long ctx)
Unsafe version of:
reader_list |
static int |
nmdb_set_compare(long txn,
int dbi,
long cmp)
Unsafe version of:
set_compare |
static int |
nmdb_set_dupsort(long txn,
int dbi,
long cmp)
Unsafe version of:
set_dupsort |
static int |
nmdb_set_relctx(long txn,
int dbi,
long ctx)
Unsafe version of:
set_relctx |
static int |
nmdb_set_relfunc(long txn,
int dbi,
long rel)
Unsafe version of:
set_relfunc |
static int |
nmdb_stat(long txn,
int dbi,
long stat)
Unsafe version of:
stat |
static long |
nmdb_strerror(int err)
Unsafe version of:
strerror |
static void |
nmdb_txn_abort(long txn)
Unsafe version of:
txn_abort |
static int |
nmdb_txn_begin(long env,
long parent,
int flags,
long txn)
Unsafe version of:
txn_begin |
static int |
nmdb_txn_commit(long txn)
Unsafe version of:
txn_commit |
static long |
nmdb_txn_env(long txn)
Unsafe version of:
txn_env |
static long |
nmdb_txn_id(long txn)
Unsafe version of:
txn_id |
static int |
nmdb_txn_renew(long txn)
Unsafe version of:
txn_renew |
static void |
nmdb_txn_reset(long txn)
Unsafe version of:
txn_reset |
static long |
nmdb_version(int[] major,
int[] minor,
int[] patch)
Array version of:
nmdb_version(long, long, long) |
static long |
nmdb_version(long major,
long minor,
long patch)
Unsafe version of:
version |
public static final int MDB_FIXEDMAP
FIXEDMAP - mmap at a fixed address (experimental).NOSUBDIR - No environment directory.NOSYNC - Don't fsync after commit.RDONLY - Read only.NOMETASYNC - Don't fsync metapage after commit.WRITEMAP - Use writable mmap.MAPASYNC - Use asynchronous msync when WRITEMAP is used.NOTLS - Tie reader locktable slots to MDB_txn objects instead of to threads.NOLOCK - Don't do any locking, caller must manage their own locks.NORDAHEAD - Don't do readahead (no effect on Windows).NOMEMINIT - Don't initialize malloc'd memory before writing to datafile.public static final int MDB_NOSUBDIR
FIXEDMAP - mmap at a fixed address (experimental).NOSUBDIR - No environment directory.NOSYNC - Don't fsync after commit.RDONLY - Read only.NOMETASYNC - Don't fsync metapage after commit.WRITEMAP - Use writable mmap.MAPASYNC - Use asynchronous msync when WRITEMAP is used.NOTLS - Tie reader locktable slots to MDB_txn objects instead of to threads.NOLOCK - Don't do any locking, caller must manage their own locks.NORDAHEAD - Don't do readahead (no effect on Windows).NOMEMINIT - Don't initialize malloc'd memory before writing to datafile.public static final int MDB_NOSYNC
FIXEDMAP - mmap at a fixed address (experimental).NOSUBDIR - No environment directory.NOSYNC - Don't fsync after commit.RDONLY - Read only.NOMETASYNC - Don't fsync metapage after commit.WRITEMAP - Use writable mmap.MAPASYNC - Use asynchronous msync when WRITEMAP is used.NOTLS - Tie reader locktable slots to MDB_txn objects instead of to threads.NOLOCK - Don't do any locking, caller must manage their own locks.NORDAHEAD - Don't do readahead (no effect on Windows).NOMEMINIT - Don't initialize malloc'd memory before writing to datafile.public static final int MDB_RDONLY
FIXEDMAP - mmap at a fixed address (experimental).NOSUBDIR - No environment directory.NOSYNC - Don't fsync after commit.RDONLY - Read only.NOMETASYNC - Don't fsync metapage after commit.WRITEMAP - Use writable mmap.MAPASYNC - Use asynchronous msync when WRITEMAP is used.NOTLS - Tie reader locktable slots to MDB_txn objects instead of to threads.NOLOCK - Don't do any locking, caller must manage their own locks.NORDAHEAD - Don't do readahead (no effect on Windows).NOMEMINIT - Don't initialize malloc'd memory before writing to datafile.public static final int MDB_NOMETASYNC
FIXEDMAP - mmap at a fixed address (experimental).NOSUBDIR - No environment directory.NOSYNC - Don't fsync after commit.RDONLY - Read only.NOMETASYNC - Don't fsync metapage after commit.WRITEMAP - Use writable mmap.MAPASYNC - Use asynchronous msync when WRITEMAP is used.NOTLS - Tie reader locktable slots to MDB_txn objects instead of to threads.NOLOCK - Don't do any locking, caller must manage their own locks.NORDAHEAD - Don't do readahead (no effect on Windows).NOMEMINIT - Don't initialize malloc'd memory before writing to datafile.public static final int MDB_WRITEMAP
FIXEDMAP - mmap at a fixed address (experimental).NOSUBDIR - No environment directory.NOSYNC - Don't fsync after commit.RDONLY - Read only.NOMETASYNC - Don't fsync metapage after commit.WRITEMAP - Use writable mmap.MAPASYNC - Use asynchronous msync when WRITEMAP is used.NOTLS - Tie reader locktable slots to MDB_txn objects instead of to threads.NOLOCK - Don't do any locking, caller must manage their own locks.NORDAHEAD - Don't do readahead (no effect on Windows).NOMEMINIT - Don't initialize malloc'd memory before writing to datafile.public static final int MDB_MAPASYNC
FIXEDMAP - mmap at a fixed address (experimental).NOSUBDIR - No environment directory.NOSYNC - Don't fsync after commit.RDONLY - Read only.NOMETASYNC - Don't fsync metapage after commit.WRITEMAP - Use writable mmap.MAPASYNC - Use asynchronous msync when WRITEMAP is used.NOTLS - Tie reader locktable slots to MDB_txn objects instead of to threads.NOLOCK - Don't do any locking, caller must manage their own locks.NORDAHEAD - Don't do readahead (no effect on Windows).NOMEMINIT - Don't initialize malloc'd memory before writing to datafile.public static final int MDB_NOTLS
FIXEDMAP - mmap at a fixed address (experimental).NOSUBDIR - No environment directory.NOSYNC - Don't fsync after commit.RDONLY - Read only.NOMETASYNC - Don't fsync metapage after commit.WRITEMAP - Use writable mmap.MAPASYNC - Use asynchronous msync when WRITEMAP is used.NOTLS - Tie reader locktable slots to MDB_txn objects instead of to threads.NOLOCK - Don't do any locking, caller must manage their own locks.NORDAHEAD - Don't do readahead (no effect on Windows).NOMEMINIT - Don't initialize malloc'd memory before writing to datafile.public static final int MDB_NOLOCK
FIXEDMAP - mmap at a fixed address (experimental).NOSUBDIR - No environment directory.NOSYNC - Don't fsync after commit.RDONLY - Read only.NOMETASYNC - Don't fsync metapage after commit.WRITEMAP - Use writable mmap.MAPASYNC - Use asynchronous msync when WRITEMAP is used.NOTLS - Tie reader locktable slots to MDB_txn objects instead of to threads.NOLOCK - Don't do any locking, caller must manage their own locks.NORDAHEAD - Don't do readahead (no effect on Windows).NOMEMINIT - Don't initialize malloc'd memory before writing to datafile.public static final int MDB_NORDAHEAD
FIXEDMAP - mmap at a fixed address (experimental).NOSUBDIR - No environment directory.NOSYNC - Don't fsync after commit.RDONLY - Read only.NOMETASYNC - Don't fsync metapage after commit.WRITEMAP - Use writable mmap.MAPASYNC - Use asynchronous msync when WRITEMAP is used.NOTLS - Tie reader locktable slots to MDB_txn objects instead of to threads.NOLOCK - Don't do any locking, caller must manage their own locks.NORDAHEAD - Don't do readahead (no effect on Windows).NOMEMINIT - Don't initialize malloc'd memory before writing to datafile.public static final int MDB_NOMEMINIT
FIXEDMAP - mmap at a fixed address (experimental).NOSUBDIR - No environment directory.NOSYNC - Don't fsync after commit.RDONLY - Read only.NOMETASYNC - Don't fsync metapage after commit.WRITEMAP - Use writable mmap.MAPASYNC - Use asynchronous msync when WRITEMAP is used.NOTLS - Tie reader locktable slots to MDB_txn objects instead of to threads.NOLOCK - Don't do any locking, caller must manage their own locks.NORDAHEAD - Don't do readahead (no effect on Windows).NOMEMINIT - Don't initialize malloc'd memory before writing to datafile.public static final int MDB_REVERSEKEY
REVERSEKEY - Use reverse string keys.DUPSORT - Use sorted duplicates.INTEGERKEY - Numeric keys in native byte order: either unsigned int or size_t. The keys must all be of the same size.DUPFIXED - With DUPSORT, sorted dup items have fixed size.INTEGERDUP - With DUPSORT, dups are INTEGERKEY -style integers.REVERSEDUP - With DUPSORT, use reverse string dups.CREATE - Create DB if not already existing.public static final int MDB_DUPSORT
REVERSEKEY - Use reverse string keys.DUPSORT - Use sorted duplicates.INTEGERKEY - Numeric keys in native byte order: either unsigned int or size_t. The keys must all be of the same size.DUPFIXED - With DUPSORT, sorted dup items have fixed size.INTEGERDUP - With DUPSORT, dups are INTEGERKEY -style integers.REVERSEDUP - With DUPSORT, use reverse string dups.CREATE - Create DB if not already existing.public static final int MDB_INTEGERKEY
REVERSEKEY - Use reverse string keys.DUPSORT - Use sorted duplicates.INTEGERKEY - Numeric keys in native byte order: either unsigned int or size_t. The keys must all be of the same size.DUPFIXED - With DUPSORT, sorted dup items have fixed size.INTEGERDUP - With DUPSORT, dups are INTEGERKEY -style integers.REVERSEDUP - With DUPSORT, use reverse string dups.CREATE - Create DB if not already existing.public static final int MDB_DUPFIXED
REVERSEKEY - Use reverse string keys.DUPSORT - Use sorted duplicates.INTEGERKEY - Numeric keys in native byte order: either unsigned int or size_t. The keys must all be of the same size.DUPFIXED - With DUPSORT, sorted dup items have fixed size.INTEGERDUP - With DUPSORT, dups are INTEGERKEY -style integers.REVERSEDUP - With DUPSORT, use reverse string dups.CREATE - Create DB if not already existing.public static final int MDB_INTEGERDUP
REVERSEKEY - Use reverse string keys.DUPSORT - Use sorted duplicates.INTEGERKEY - Numeric keys in native byte order: either unsigned int or size_t. The keys must all be of the same size.DUPFIXED - With DUPSORT, sorted dup items have fixed size.INTEGERDUP - With DUPSORT, dups are INTEGERKEY -style integers.REVERSEDUP - With DUPSORT, use reverse string dups.CREATE - Create DB if not already existing.public static final int MDB_REVERSEDUP
REVERSEKEY - Use reverse string keys.DUPSORT - Use sorted duplicates.INTEGERKEY - Numeric keys in native byte order: either unsigned int or size_t. The keys must all be of the same size.DUPFIXED - With DUPSORT, sorted dup items have fixed size.INTEGERDUP - With DUPSORT, dups are INTEGERKEY -style integers.REVERSEDUP - With DUPSORT, use reverse string dups.CREATE - Create DB if not already existing.public static final int MDB_CREATE
REVERSEKEY - Use reverse string keys.DUPSORT - Use sorted duplicates.INTEGERKEY - Numeric keys in native byte order: either unsigned int or size_t. The keys must all be of the same size.DUPFIXED - With DUPSORT, sorted dup items have fixed size.INTEGERDUP - With DUPSORT, dups are INTEGERKEY -style integers.REVERSEDUP - With DUPSORT, use reverse string dups.CREATE - Create DB if not already existing.public static final int MDB_NOOVERWRITE
NOOVERWRITE - Don't write if the key already exists.NODUPDATA - Remove all duplicate data items.CURRENT - Overwrite the current key/data pair.RESERVE - Just reserve space for data, don't copy it. Return a pointer to the reserved space.APPEND - Data is being appended, don't split full pages.APPENDDUP - Duplicate data is being appended, don't split full pages.MULTIPLE - Store multiple data items in one call. Only for DUPFIXED.public static final int MDB_NODUPDATA
NOOVERWRITE - Don't write if the key already exists.NODUPDATA - Remove all duplicate data items.CURRENT - Overwrite the current key/data pair.RESERVE - Just reserve space for data, don't copy it. Return a pointer to the reserved space.APPEND - Data is being appended, don't split full pages.APPENDDUP - Duplicate data is being appended, don't split full pages.MULTIPLE - Store multiple data items in one call. Only for DUPFIXED.public static final int MDB_CURRENT
NOOVERWRITE - Don't write if the key already exists.NODUPDATA - Remove all duplicate data items.CURRENT - Overwrite the current key/data pair.RESERVE - Just reserve space for data, don't copy it. Return a pointer to the reserved space.APPEND - Data is being appended, don't split full pages.APPENDDUP - Duplicate data is being appended, don't split full pages.MULTIPLE - Store multiple data items in one call. Only for DUPFIXED.public static final int MDB_RESERVE
NOOVERWRITE - Don't write if the key already exists.NODUPDATA - Remove all duplicate data items.CURRENT - Overwrite the current key/data pair.RESERVE - Just reserve space for data, don't copy it. Return a pointer to the reserved space.APPEND - Data is being appended, don't split full pages.APPENDDUP - Duplicate data is being appended, don't split full pages.MULTIPLE - Store multiple data items in one call. Only for DUPFIXED.public static final int MDB_APPEND
NOOVERWRITE - Don't write if the key already exists.NODUPDATA - Remove all duplicate data items.CURRENT - Overwrite the current key/data pair.RESERVE - Just reserve space for data, don't copy it. Return a pointer to the reserved space.APPEND - Data is being appended, don't split full pages.APPENDDUP - Duplicate data is being appended, don't split full pages.MULTIPLE - Store multiple data items in one call. Only for DUPFIXED.public static final int MDB_APPENDDUP
NOOVERWRITE - Don't write if the key already exists.NODUPDATA - Remove all duplicate data items.CURRENT - Overwrite the current key/data pair.RESERVE - Just reserve space for data, don't copy it. Return a pointer to the reserved space.APPEND - Data is being appended, don't split full pages.APPENDDUP - Duplicate data is being appended, don't split full pages.MULTIPLE - Store multiple data items in one call. Only for DUPFIXED.public static final int MDB_MULTIPLE
NOOVERWRITE - Don't write if the key already exists.NODUPDATA - Remove all duplicate data items.CURRENT - Overwrite the current key/data pair.RESERVE - Just reserve space for data, don't copy it. Return a pointer to the reserved space.APPEND - Data is being appended, don't split full pages.APPENDDUP - Duplicate data is being appended, don't split full pages.MULTIPLE - Store multiple data items in one call. Only for DUPFIXED.public static final int MDB_CP_COMPACT
CP_COMPACT - Omit free space from copy, and renumber all pages sequentially.public static final int MDB_FIRST
FIRST - Position at first key/data item.FIRST_DUP - Position at first data item of current key. Only for DUPSORT.GET_BOTH - Position at key/data pair. Only for DUPSORT.GET_BOTH_RANGE - position at key, nearest data. Only for DUPSORT.GET_CURRENT - Return key/data at current cursor position.GET_MULTIPLE - Return up to a page of duplicate data items from current cursor position. Move cursor to prepare for NEXT_MULTIPLE. Only for DUPFIXED.LAST - Position at last key/data item.LAST_DUP - Position at last data item of current key. Only for DUPSORT.NEXT - Position at next data item.NEXT_DUP - Position at next data item of current key. Only for DUPSORT.NEXT_MULTIPLE - Return up to a page of duplicate data items from next cursor position. Move cursor to prepare for NEXT_MULTIPLE. Only for DUPFIXED.NEXT_NODUP - Position at first data item of next key.PREV - Position at previous data item.PREV_DUP - Position at previous data item of current key. Only for DUPSORT.PREV_NODUP - Position at last data item of previous key.SET - Position at specified key.SET_KEY - Position at specified key, return key + data.SET_RANGE - Position at first key greater than or equal to specified key.PREV_MULTIPLE - Position at previous page and return up to a page of duplicate data items. Only for DUPFIXED.public static final int MDB_FIRST_DUP
FIRST - Position at first key/data item.FIRST_DUP - Position at first data item of current key. Only for DUPSORT.GET_BOTH - Position at key/data pair. Only for DUPSORT.GET_BOTH_RANGE - position at key, nearest data. Only for DUPSORT.GET_CURRENT - Return key/data at current cursor position.GET_MULTIPLE - Return up to a page of duplicate data items from current cursor position. Move cursor to prepare for NEXT_MULTIPLE. Only for DUPFIXED.LAST - Position at last key/data item.LAST_DUP - Position at last data item of current key. Only for DUPSORT.NEXT - Position at next data item.NEXT_DUP - Position at next data item of current key. Only for DUPSORT.NEXT_MULTIPLE - Return up to a page of duplicate data items from next cursor position. Move cursor to prepare for NEXT_MULTIPLE. Only for DUPFIXED.NEXT_NODUP - Position at first data item of next key.PREV - Position at previous data item.PREV_DUP - Position at previous data item of current key. Only for DUPSORT.PREV_NODUP - Position at last data item of previous key.SET - Position at specified key.SET_KEY - Position at specified key, return key + data.SET_RANGE - Position at first key greater than or equal to specified key.PREV_MULTIPLE - Position at previous page and return up to a page of duplicate data items. Only for DUPFIXED.public static final int MDB_GET_BOTH
FIRST - Position at first key/data item.FIRST_DUP - Position at first data item of current key. Only for DUPSORT.GET_BOTH - Position at key/data pair. Only for DUPSORT.GET_BOTH_RANGE - position at key, nearest data. Only for DUPSORT.GET_CURRENT - Return key/data at current cursor position.GET_MULTIPLE - Return up to a page of duplicate data items from current cursor position. Move cursor to prepare for NEXT_MULTIPLE. Only for DUPFIXED.LAST - Position at last key/data item.LAST_DUP - Position at last data item of current key. Only for DUPSORT.NEXT - Position at next data item.NEXT_DUP - Position at next data item of current key. Only for DUPSORT.NEXT_MULTIPLE - Return up to a page of duplicate data items from next cursor position. Move cursor to prepare for NEXT_MULTIPLE. Only for DUPFIXED.NEXT_NODUP - Position at first data item of next key.PREV - Position at previous data item.PREV_DUP - Position at previous data item of current key. Only for DUPSORT.PREV_NODUP - Position at last data item of previous key.SET - Position at specified key.SET_KEY - Position at specified key, return key + data.SET_RANGE - Position at first key greater than or equal to specified key.PREV_MULTIPLE - Position at previous page and return up to a page of duplicate data items. Only for DUPFIXED.public static final int MDB_GET_BOTH_RANGE
FIRST - Position at first key/data item.FIRST_DUP - Position at first data item of current key. Only for DUPSORT.GET_BOTH - Position at key/data pair. Only for DUPSORT.GET_BOTH_RANGE - position at key, nearest data. Only for DUPSORT.GET_CURRENT - Return key/data at current cursor position.GET_MULTIPLE - Return up to a page of duplicate data items from current cursor position. Move cursor to prepare for NEXT_MULTIPLE. Only for DUPFIXED.LAST - Position at last key/data item.LAST_DUP - Position at last data item of current key. Only for DUPSORT.NEXT - Position at next data item.NEXT_DUP - Position at next data item of current key. Only for DUPSORT.NEXT_MULTIPLE - Return up to a page of duplicate data items from next cursor position. Move cursor to prepare for NEXT_MULTIPLE. Only for DUPFIXED.NEXT_NODUP - Position at first data item of next key.PREV - Position at previous data item.PREV_DUP - Position at previous data item of current key. Only for DUPSORT.PREV_NODUP - Position at last data item of previous key.SET - Position at specified key.SET_KEY - Position at specified key, return key + data.SET_RANGE - Position at first key greater than or equal to specified key.PREV_MULTIPLE - Position at previous page and return up to a page of duplicate data items. Only for DUPFIXED.public static final int MDB_GET_CURRENT
FIRST - Position at first key/data item.FIRST_DUP - Position at first data item of current key. Only for DUPSORT.GET_BOTH - Position at key/data pair. Only for DUPSORT.GET_BOTH_RANGE - position at key, nearest data. Only for DUPSORT.GET_CURRENT - Return key/data at current cursor position.GET_MULTIPLE - Return up to a page of duplicate data items from current cursor position. Move cursor to prepare for NEXT_MULTIPLE. Only for DUPFIXED.LAST - Position at last key/data item.LAST_DUP - Position at last data item of current key. Only for DUPSORT.NEXT - Position at next data item.NEXT_DUP - Position at next data item of current key. Only for DUPSORT.NEXT_MULTIPLE - Return up to a page of duplicate data items from next cursor position. Move cursor to prepare for NEXT_MULTIPLE. Only for DUPFIXED.NEXT_NODUP - Position at first data item of next key.PREV - Position at previous data item.PREV_DUP - Position at previous data item of current key. Only for DUPSORT.PREV_NODUP - Position at last data item of previous key.SET - Position at specified key.SET_KEY - Position at specified key, return key + data.SET_RANGE - Position at first key greater than or equal to specified key.PREV_MULTIPLE - Position at previous page and return up to a page of duplicate data items. Only for DUPFIXED.public static final int MDB_GET_MULTIPLE
FIRST - Position at first key/data item.FIRST_DUP - Position at first data item of current key. Only for DUPSORT.GET_BOTH - Position at key/data pair. Only for DUPSORT.GET_BOTH_RANGE - position at key, nearest data. Only for DUPSORT.GET_CURRENT - Return key/data at current cursor position.GET_MULTIPLE - Return up to a page of duplicate data items from current cursor position. Move cursor to prepare for NEXT_MULTIPLE. Only for DUPFIXED.LAST - Position at last key/data item.LAST_DUP - Position at last data item of current key. Only for DUPSORT.NEXT - Position at next data item.NEXT_DUP - Position at next data item of current key. Only for DUPSORT.NEXT_MULTIPLE - Return up to a page of duplicate data items from next cursor position. Move cursor to prepare for NEXT_MULTIPLE. Only for DUPFIXED.NEXT_NODUP - Position at first data item of next key.PREV - Position at previous data item.PREV_DUP - Position at previous data item of current key. Only for DUPSORT.PREV_NODUP - Position at last data item of previous key.SET - Position at specified key.SET_KEY - Position at specified key, return key + data.SET_RANGE - Position at first key greater than or equal to specified key.PREV_MULTIPLE - Position at previous page and return up to a page of duplicate data items. Only for DUPFIXED.public static final int MDB_LAST
FIRST - Position at first key/data item.FIRST_DUP - Position at first data item of current key. Only for DUPSORT.GET_BOTH - Position at key/data pair. Only for DUPSORT.GET_BOTH_RANGE - position at key, nearest data. Only for DUPSORT.GET_CURRENT - Return key/data at current cursor position.GET_MULTIPLE - Return up to a page of duplicate data items from current cursor position. Move cursor to prepare for NEXT_MULTIPLE. Only for DUPFIXED.LAST - Position at last key/data item.LAST_DUP - Position at last data item of current key. Only for DUPSORT.NEXT - Position at next data item.NEXT_DUP - Position at next data item of current key. Only for DUPSORT.NEXT_MULTIPLE - Return up to a page of duplicate data items from next cursor position. Move cursor to prepare for NEXT_MULTIPLE. Only for DUPFIXED.NEXT_NODUP - Position at first data item of next key.PREV - Position at previous data item.PREV_DUP - Position at previous data item of current key. Only for DUPSORT.PREV_NODUP - Position at last data item of previous key.SET - Position at specified key.SET_KEY - Position at specified key, return key + data.SET_RANGE - Position at first key greater than or equal to specified key.PREV_MULTIPLE - Position at previous page and return up to a page of duplicate data items. Only for DUPFIXED.public static final int MDB_LAST_DUP
FIRST - Position at first key/data item.FIRST_DUP - Position at first data item of current key. Only for DUPSORT.GET_BOTH - Position at key/data pair. Only for DUPSORT.GET_BOTH_RANGE - position at key, nearest data. Only for DUPSORT.GET_CURRENT - Return key/data at current cursor position.GET_MULTIPLE - Return up to a page of duplicate data items from current cursor position. Move cursor to prepare for NEXT_MULTIPLE. Only for DUPFIXED.LAST - Position at last key/data item.LAST_DUP - Position at last data item of current key. Only for DUPSORT.NEXT - Position at next data item.NEXT_DUP - Position at next data item of current key. Only for DUPSORT.NEXT_MULTIPLE - Return up to a page of duplicate data items from next cursor position. Move cursor to prepare for NEXT_MULTIPLE. Only for DUPFIXED.NEXT_NODUP - Position at first data item of next key.PREV - Position at previous data item.PREV_DUP - Position at previous data item of current key. Only for DUPSORT.PREV_NODUP - Position at last data item of previous key.SET - Position at specified key.SET_KEY - Position at specified key, return key + data.SET_RANGE - Position at first key greater than or equal to specified key.PREV_MULTIPLE - Position at previous page and return up to a page of duplicate data items. Only for DUPFIXED.public static final int MDB_NEXT
FIRST - Position at first key/data item.FIRST_DUP - Position at first data item of current key. Only for DUPSORT.GET_BOTH - Position at key/data pair. Only for DUPSORT.GET_BOTH_RANGE - position at key, nearest data. Only for DUPSORT.GET_CURRENT - Return key/data at current cursor position.GET_MULTIPLE - Return up to a page of duplicate data items from current cursor position. Move cursor to prepare for NEXT_MULTIPLE. Only for DUPFIXED.LAST - Position at last key/data item.LAST_DUP - Position at last data item of current key. Only for DUPSORT.NEXT - Position at next data item.NEXT_DUP - Position at next data item of current key. Only for DUPSORT.NEXT_MULTIPLE - Return up to a page of duplicate data items from next cursor position. Move cursor to prepare for NEXT_MULTIPLE. Only for DUPFIXED.NEXT_NODUP - Position at first data item of next key.PREV - Position at previous data item.PREV_DUP - Position at previous data item of current key. Only for DUPSORT.PREV_NODUP - Position at last data item of previous key.SET - Position at specified key.SET_KEY - Position at specified key, return key + data.SET_RANGE - Position at first key greater than or equal to specified key.PREV_MULTIPLE - Position at previous page and return up to a page of duplicate data items. Only for DUPFIXED.public static final int MDB_NEXT_DUP
FIRST - Position at first key/data item.FIRST_DUP - Position at first data item of current key. Only for DUPSORT.GET_BOTH - Position at key/data pair. Only for DUPSORT.GET_BOTH_RANGE - position at key, nearest data. Only for DUPSORT.GET_CURRENT - Return key/data at current cursor position.GET_MULTIPLE - Return up to a page of duplicate data items from current cursor position. Move cursor to prepare for NEXT_MULTIPLE. Only for DUPFIXED.LAST - Position at last key/data item.LAST_DUP - Position at last data item of current key. Only for DUPSORT.NEXT - Position at next data item.NEXT_DUP - Position at next data item of current key. Only for DUPSORT.NEXT_MULTIPLE - Return up to a page of duplicate data items from next cursor position. Move cursor to prepare for NEXT_MULTIPLE. Only for DUPFIXED.NEXT_NODUP - Position at first data item of next key.PREV - Position at previous data item.PREV_DUP - Position at previous data item of current key. Only for DUPSORT.PREV_NODUP - Position at last data item of previous key.SET - Position at specified key.SET_KEY - Position at specified key, return key + data.SET_RANGE - Position at first key greater than or equal to specified key.PREV_MULTIPLE - Position at previous page and return up to a page of duplicate data items. Only for DUPFIXED.public static final int MDB_NEXT_MULTIPLE
FIRST - Position at first key/data item.FIRST_DUP - Position at first data item of current key. Only for DUPSORT.GET_BOTH - Position at key/data pair. Only for DUPSORT.GET_BOTH_RANGE - position at key, nearest data. Only for DUPSORT.GET_CURRENT - Return key/data at current cursor position.GET_MULTIPLE - Return up to a page of duplicate data items from current cursor position. Move cursor to prepare for NEXT_MULTIPLE. Only for DUPFIXED.LAST - Position at last key/data item.LAST_DUP - Position at last data item of current key. Only for DUPSORT.NEXT - Position at next data item.NEXT_DUP - Position at next data item of current key. Only for DUPSORT.NEXT_MULTIPLE - Return up to a page of duplicate data items from next cursor position. Move cursor to prepare for NEXT_MULTIPLE. Only for DUPFIXED.NEXT_NODUP - Position at first data item of next key.PREV - Position at previous data item.PREV_DUP - Position at previous data item of current key. Only for DUPSORT.PREV_NODUP - Position at last data item of previous key.SET - Position at specified key.SET_KEY - Position at specified key, return key + data.SET_RANGE - Position at first key greater than or equal to specified key.PREV_MULTIPLE - Position at previous page and return up to a page of duplicate data items. Only for DUPFIXED.public static final int MDB_NEXT_NODUP
FIRST - Position at first key/data item.FIRST_DUP - Position at first data item of current key. Only for DUPSORT.GET_BOTH - Position at key/data pair. Only for DUPSORT.GET_BOTH_RANGE - position at key, nearest data. Only for DUPSORT.GET_CURRENT - Return key/data at current cursor position.GET_MULTIPLE - Return up to a page of duplicate data items from current cursor position. Move cursor to prepare for NEXT_MULTIPLE. Only for DUPFIXED.LAST - Position at last key/data item.LAST_DUP - Position at last data item of current key. Only for DUPSORT.NEXT - Position at next data item.NEXT_DUP - Position at next data item of current key. Only for DUPSORT.NEXT_MULTIPLE - Return up to a page of duplicate data items from next cursor position. Move cursor to prepare for NEXT_MULTIPLE. Only for DUPFIXED.NEXT_NODUP - Position at first data item of next key.PREV - Position at previous data item.PREV_DUP - Position at previous data item of current key. Only for DUPSORT.PREV_NODUP - Position at last data item of previous key.SET - Position at specified key.SET_KEY - Position at specified key, return key + data.SET_RANGE - Position at first key greater than or equal to specified key.PREV_MULTIPLE - Position at previous page and return up to a page of duplicate data items. Only for DUPFIXED.public static final int MDB_PREV
FIRST - Position at first key/data item.FIRST_DUP - Position at first data item of current key. Only for DUPSORT.GET_BOTH - Position at key/data pair. Only for DUPSORT.GET_BOTH_RANGE - position at key, nearest data. Only for DUPSORT.GET_CURRENT - Return key/data at current cursor position.GET_MULTIPLE - Return up to a page of duplicate data items from current cursor position. Move cursor to prepare for NEXT_MULTIPLE. Only for DUPFIXED.LAST - Position at last key/data item.LAST_DUP - Position at last data item of current key. Only for DUPSORT.NEXT - Position at next data item.NEXT_DUP - Position at next data item of current key. Only for DUPSORT.NEXT_MULTIPLE - Return up to a page of duplicate data items from next cursor position. Move cursor to prepare for NEXT_MULTIPLE. Only for DUPFIXED.NEXT_NODUP - Position at first data item of next key.PREV - Position at previous data item.PREV_DUP - Position at previous data item of current key. Only for DUPSORT.PREV_NODUP - Position at last data item of previous key.SET - Position at specified key.SET_KEY - Position at specified key, return key + data.SET_RANGE - Position at first key greater than or equal to specified key.PREV_MULTIPLE - Position at previous page and return up to a page of duplicate data items. Only for DUPFIXED.public static final int MDB_PREV_DUP
FIRST - Position at first key/data item.FIRST_DUP - Position at first data item of current key. Only for DUPSORT.GET_BOTH - Position at key/data pair. Only for DUPSORT.GET_BOTH_RANGE - position at key, nearest data. Only for DUPSORT.GET_CURRENT - Return key/data at current cursor position.GET_MULTIPLE - Return up to a page of duplicate data items from current cursor position. Move cursor to prepare for NEXT_MULTIPLE. Only for DUPFIXED.LAST - Position at last key/data item.LAST_DUP - Position at last data item of current key. Only for DUPSORT.NEXT - Position at next data item.NEXT_DUP - Position at next data item of current key. Only for DUPSORT.NEXT_MULTIPLE - Return up to a page of duplicate data items from next cursor position. Move cursor to prepare for NEXT_MULTIPLE. Only for DUPFIXED.NEXT_NODUP - Position at first data item of next key.PREV - Position at previous data item.PREV_DUP - Position at previous data item of current key. Only for DUPSORT.PREV_NODUP - Position at last data item of previous key.SET - Position at specified key.SET_KEY - Position at specified key, return key + data.SET_RANGE - Position at first key greater than or equal to specified key.PREV_MULTIPLE - Position at previous page and return up to a page of duplicate data items. Only for DUPFIXED.public static final int MDB_PREV_NODUP
FIRST - Position at first key/data item.FIRST_DUP - Position at first data item of current key. Only for DUPSORT.GET_BOTH - Position at key/data pair. Only for DUPSORT.GET_BOTH_RANGE - position at key, nearest data. Only for DUPSORT.GET_CURRENT - Return key/data at current cursor position.GET_MULTIPLE - Return up to a page of duplicate data items from current cursor position. Move cursor to prepare for NEXT_MULTIPLE. Only for DUPFIXED.LAST - Position at last key/data item.LAST_DUP - Position at last data item of current key. Only for DUPSORT.NEXT - Position at next data item.NEXT_DUP - Position at next data item of current key. Only for DUPSORT.NEXT_MULTIPLE - Return up to a page of duplicate data items from next cursor position. Move cursor to prepare for NEXT_MULTIPLE. Only for DUPFIXED.NEXT_NODUP - Position at first data item of next key.PREV - Position at previous data item.PREV_DUP - Position at previous data item of current key. Only for DUPSORT.PREV_NODUP - Position at last data item of previous key.SET - Position at specified key.SET_KEY - Position at specified key, return key + data.SET_RANGE - Position at first key greater than or equal to specified key.PREV_MULTIPLE - Position at previous page and return up to a page of duplicate data items. Only for DUPFIXED.public static final int MDB_SET
FIRST - Position at first key/data item.FIRST_DUP - Position at first data item of current key. Only for DUPSORT.GET_BOTH - Position at key/data pair. Only for DUPSORT.GET_BOTH_RANGE - position at key, nearest data. Only for DUPSORT.GET_CURRENT - Return key/data at current cursor position.GET_MULTIPLE - Return up to a page of duplicate data items from current cursor position. Move cursor to prepare for NEXT_MULTIPLE. Only for DUPFIXED.LAST - Position at last key/data item.LAST_DUP - Position at last data item of current key. Only for DUPSORT.NEXT - Position at next data item.NEXT_DUP - Position at next data item of current key. Only for DUPSORT.NEXT_MULTIPLE - Return up to a page of duplicate data items from next cursor position. Move cursor to prepare for NEXT_MULTIPLE. Only for DUPFIXED.NEXT_NODUP - Position at first data item of next key.PREV - Position at previous data item.PREV_DUP - Position at previous data item of current key. Only for DUPSORT.PREV_NODUP - Position at last data item of previous key.SET - Position at specified key.SET_KEY - Position at specified key, return key + data.SET_RANGE - Position at first key greater than or equal to specified key.PREV_MULTIPLE - Position at previous page and return up to a page of duplicate data items. Only for DUPFIXED.public static final int MDB_SET_KEY
FIRST - Position at first key/data item.FIRST_DUP - Position at first data item of current key. Only for DUPSORT.GET_BOTH - Position at key/data pair. Only for DUPSORT.GET_BOTH_RANGE - position at key, nearest data. Only for DUPSORT.GET_CURRENT - Return key/data at current cursor position.GET_MULTIPLE - Return up to a page of duplicate data items from current cursor position. Move cursor to prepare for NEXT_MULTIPLE. Only for DUPFIXED.LAST - Position at last key/data item.LAST_DUP - Position at last data item of current key. Only for DUPSORT.NEXT - Position at next data item.NEXT_DUP - Position at next data item of current key. Only for DUPSORT.NEXT_MULTIPLE - Return up to a page of duplicate data items from next cursor position. Move cursor to prepare for NEXT_MULTIPLE. Only for DUPFIXED.NEXT_NODUP - Position at first data item of next key.PREV - Position at previous data item.PREV_DUP - Position at previous data item of current key. Only for DUPSORT.PREV_NODUP - Position at last data item of previous key.SET - Position at specified key.SET_KEY - Position at specified key, return key + data.SET_RANGE - Position at first key greater than or equal to specified key.PREV_MULTIPLE - Position at previous page and return up to a page of duplicate data items. Only for DUPFIXED.public static final int MDB_SET_RANGE
FIRST - Position at first key/data item.FIRST_DUP - Position at first data item of current key. Only for DUPSORT.GET_BOTH - Position at key/data pair. Only for DUPSORT.GET_BOTH_RANGE - position at key, nearest data. Only for DUPSORT.GET_CURRENT - Return key/data at current cursor position.GET_MULTIPLE - Return up to a page of duplicate data items from current cursor position. Move cursor to prepare for NEXT_MULTIPLE. Only for DUPFIXED.LAST - Position at last key/data item.LAST_DUP - Position at last data item of current key. Only for DUPSORT.NEXT - Position at next data item.NEXT_DUP - Position at next data item of current key. Only for DUPSORT.NEXT_MULTIPLE - Return up to a page of duplicate data items from next cursor position. Move cursor to prepare for NEXT_MULTIPLE. Only for DUPFIXED.NEXT_NODUP - Position at first data item of next key.PREV - Position at previous data item.PREV_DUP - Position at previous data item of current key. Only for DUPSORT.PREV_NODUP - Position at last data item of previous key.SET - Position at specified key.SET_KEY - Position at specified key, return key + data.SET_RANGE - Position at first key greater than or equal to specified key.PREV_MULTIPLE - Position at previous page and return up to a page of duplicate data items. Only for DUPFIXED.public static final int MDB_PREV_MULTIPLE
FIRST - Position at first key/data item.FIRST_DUP - Position at first data item of current key. Only for DUPSORT.GET_BOTH - Position at key/data pair. Only for DUPSORT.GET_BOTH_RANGE - position at key, nearest data. Only for DUPSORT.GET_CURRENT - Return key/data at current cursor position.GET_MULTIPLE - Return up to a page of duplicate data items from current cursor position. Move cursor to prepare for NEXT_MULTIPLE. Only for DUPFIXED.LAST - Position at last key/data item.LAST_DUP - Position at last data item of current key. Only for DUPSORT.NEXT - Position at next data item.NEXT_DUP - Position at next data item of current key. Only for DUPSORT.NEXT_MULTIPLE - Return up to a page of duplicate data items from next cursor position. Move cursor to prepare for NEXT_MULTIPLE. Only for DUPFIXED.NEXT_NODUP - Position at first data item of next key.PREV - Position at previous data item.PREV_DUP - Position at previous data item of current key. Only for DUPSORT.PREV_NODUP - Position at last data item of previous key.SET - Position at specified key.SET_KEY - Position at specified key, return key + data.SET_RANGE - Position at first key greater than or equal to specified key.PREV_MULTIPLE - Position at previous page and return up to a page of duplicate data items. Only for DUPFIXED.public static final int MDB_SUCCESS
SUCCESS - Successful result.KEYEXIST - Key/data pair already exists.NOTFOUND - Key/data pair not found (EOF).PAGE_NOTFOUND - Requested page not found - this usually indicates corruption.CORRUPTED - Located page was wrong type.PANIC - Update of meta page failed or environment had fatal error.VERSION_MISMATCH - Environment version mismatch.INVALID - File is not a valid LMDB file.MAP_FULL - Environment mapsize reached.DBS_FULL - Environment maxdbs reached.READERS_FULL - Environment maxreaders reached.TLS_FULL - Too many TLS keys in use - Windows only.TXN_FULL - Txn has too many dirty pages.CURSOR_FULL - Cursor stack too deep - internal error.PAGE_FULL - Page has not enough space - internal error.MAP_RESIZED - Database contents grew beyond environment mapsize.INCOMPATIBLE -
The operation expects an DUPSORT / DUPFIXED database. Opening a named DB when the unnamed DB has DUPSORT / INTEGERKEY. Accessing a data record as a
database, or vice versa. The database was dropped and recreated with different flags.
BAD_RSLOT - Invalid reuse of reader locktable slot.BAD_TXN - Transaction must abort, has a child, or is invalid.BAD_VALSIZE - Unsupported size of key/DB name/data, or wrong DUPFIXED size.BAD_DBI - The specified DBI was changed unexpectedly.LAST_ERRCODE - The last defined error code.public static final int MDB_KEYEXIST
SUCCESS - Successful result.KEYEXIST - Key/data pair already exists.NOTFOUND - Key/data pair not found (EOF).PAGE_NOTFOUND - Requested page not found - this usually indicates corruption.CORRUPTED - Located page was wrong type.PANIC - Update of meta page failed or environment had fatal error.VERSION_MISMATCH - Environment version mismatch.INVALID - File is not a valid LMDB file.MAP_FULL - Environment mapsize reached.DBS_FULL - Environment maxdbs reached.READERS_FULL - Environment maxreaders reached.TLS_FULL - Too many TLS keys in use - Windows only.TXN_FULL - Txn has too many dirty pages.CURSOR_FULL - Cursor stack too deep - internal error.PAGE_FULL - Page has not enough space - internal error.MAP_RESIZED - Database contents grew beyond environment mapsize.INCOMPATIBLE -
The operation expects an DUPSORT / DUPFIXED database. Opening a named DB when the unnamed DB has DUPSORT / INTEGERKEY. Accessing a data record as a
database, or vice versa. The database was dropped and recreated with different flags.
BAD_RSLOT - Invalid reuse of reader locktable slot.BAD_TXN - Transaction must abort, has a child, or is invalid.BAD_VALSIZE - Unsupported size of key/DB name/data, or wrong DUPFIXED size.BAD_DBI - The specified DBI was changed unexpectedly.LAST_ERRCODE - The last defined error code.public static final int MDB_NOTFOUND
SUCCESS - Successful result.KEYEXIST - Key/data pair already exists.NOTFOUND - Key/data pair not found (EOF).PAGE_NOTFOUND - Requested page not found - this usually indicates corruption.CORRUPTED - Located page was wrong type.PANIC - Update of meta page failed or environment had fatal error.VERSION_MISMATCH - Environment version mismatch.INVALID - File is not a valid LMDB file.MAP_FULL - Environment mapsize reached.DBS_FULL - Environment maxdbs reached.READERS_FULL - Environment maxreaders reached.TLS_FULL - Too many TLS keys in use - Windows only.TXN_FULL - Txn has too many dirty pages.CURSOR_FULL - Cursor stack too deep - internal error.PAGE_FULL - Page has not enough space - internal error.MAP_RESIZED - Database contents grew beyond environment mapsize.INCOMPATIBLE -
The operation expects an DUPSORT / DUPFIXED database. Opening a named DB when the unnamed DB has DUPSORT / INTEGERKEY. Accessing a data record as a
database, or vice versa. The database was dropped and recreated with different flags.
BAD_RSLOT - Invalid reuse of reader locktable slot.BAD_TXN - Transaction must abort, has a child, or is invalid.BAD_VALSIZE - Unsupported size of key/DB name/data, or wrong DUPFIXED size.BAD_DBI - The specified DBI was changed unexpectedly.LAST_ERRCODE - The last defined error code.public static final int MDB_PAGE_NOTFOUND
SUCCESS - Successful result.KEYEXIST - Key/data pair already exists.NOTFOUND - Key/data pair not found (EOF).PAGE_NOTFOUND - Requested page not found - this usually indicates corruption.CORRUPTED - Located page was wrong type.PANIC - Update of meta page failed or environment had fatal error.VERSION_MISMATCH - Environment version mismatch.INVALID - File is not a valid LMDB file.MAP_FULL - Environment mapsize reached.DBS_FULL - Environment maxdbs reached.READERS_FULL - Environment maxreaders reached.TLS_FULL - Too many TLS keys in use - Windows only.TXN_FULL - Txn has too many dirty pages.CURSOR_FULL - Cursor stack too deep - internal error.PAGE_FULL - Page has not enough space - internal error.MAP_RESIZED - Database contents grew beyond environment mapsize.INCOMPATIBLE -
The operation expects an DUPSORT / DUPFIXED database. Opening a named DB when the unnamed DB has DUPSORT / INTEGERKEY. Accessing a data record as a
database, or vice versa. The database was dropped and recreated with different flags.
BAD_RSLOT - Invalid reuse of reader locktable slot.BAD_TXN - Transaction must abort, has a child, or is invalid.BAD_VALSIZE - Unsupported size of key/DB name/data, or wrong DUPFIXED size.BAD_DBI - The specified DBI was changed unexpectedly.LAST_ERRCODE - The last defined error code.public static final int MDB_CORRUPTED
SUCCESS - Successful result.KEYEXIST - Key/data pair already exists.NOTFOUND - Key/data pair not found (EOF).PAGE_NOTFOUND - Requested page not found - this usually indicates corruption.CORRUPTED - Located page was wrong type.PANIC - Update of meta page failed or environment had fatal error.VERSION_MISMATCH - Environment version mismatch.INVALID - File is not a valid LMDB file.MAP_FULL - Environment mapsize reached.DBS_FULL - Environment maxdbs reached.READERS_FULL - Environment maxreaders reached.TLS_FULL - Too many TLS keys in use - Windows only.TXN_FULL - Txn has too many dirty pages.CURSOR_FULL - Cursor stack too deep - internal error.PAGE_FULL - Page has not enough space - internal error.MAP_RESIZED - Database contents grew beyond environment mapsize.INCOMPATIBLE -
The operation expects an DUPSORT / DUPFIXED database. Opening a named DB when the unnamed DB has DUPSORT / INTEGERKEY. Accessing a data record as a
database, or vice versa. The database was dropped and recreated with different flags.
BAD_RSLOT - Invalid reuse of reader locktable slot.BAD_TXN - Transaction must abort, has a child, or is invalid.BAD_VALSIZE - Unsupported size of key/DB name/data, or wrong DUPFIXED size.BAD_DBI - The specified DBI was changed unexpectedly.LAST_ERRCODE - The last defined error code.public static final int MDB_PANIC
SUCCESS - Successful result.KEYEXIST - Key/data pair already exists.NOTFOUND - Key/data pair not found (EOF).PAGE_NOTFOUND - Requested page not found - this usually indicates corruption.CORRUPTED - Located page was wrong type.PANIC - Update of meta page failed or environment had fatal error.VERSION_MISMATCH - Environment version mismatch.INVALID - File is not a valid LMDB file.MAP_FULL - Environment mapsize reached.DBS_FULL - Environment maxdbs reached.READERS_FULL - Environment maxreaders reached.TLS_FULL - Too many TLS keys in use - Windows only.TXN_FULL - Txn has too many dirty pages.CURSOR_FULL - Cursor stack too deep - internal error.PAGE_FULL - Page has not enough space - internal error.MAP_RESIZED - Database contents grew beyond environment mapsize.INCOMPATIBLE -
The operation expects an DUPSORT / DUPFIXED database. Opening a named DB when the unnamed DB has DUPSORT / INTEGERKEY. Accessing a data record as a
database, or vice versa. The database was dropped and recreated with different flags.
BAD_RSLOT - Invalid reuse of reader locktable slot.BAD_TXN - Transaction must abort, has a child, or is invalid.BAD_VALSIZE - Unsupported size of key/DB name/data, or wrong DUPFIXED size.BAD_DBI - The specified DBI was changed unexpectedly.LAST_ERRCODE - The last defined error code.public static final int MDB_VERSION_MISMATCH
SUCCESS - Successful result.KEYEXIST - Key/data pair already exists.NOTFOUND - Key/data pair not found (EOF).PAGE_NOTFOUND - Requested page not found - this usually indicates corruption.CORRUPTED - Located page was wrong type.PANIC - Update of meta page failed or environment had fatal error.VERSION_MISMATCH - Environment version mismatch.INVALID - File is not a valid LMDB file.MAP_FULL - Environment mapsize reached.DBS_FULL - Environment maxdbs reached.READERS_FULL - Environment maxreaders reached.TLS_FULL - Too many TLS keys in use - Windows only.TXN_FULL - Txn has too many dirty pages.CURSOR_FULL - Cursor stack too deep - internal error.PAGE_FULL - Page has not enough space - internal error.MAP_RESIZED - Database contents grew beyond environment mapsize.INCOMPATIBLE -
The operation expects an DUPSORT / DUPFIXED database. Opening a named DB when the unnamed DB has DUPSORT / INTEGERKEY. Accessing a data record as a
database, or vice versa. The database was dropped and recreated with different flags.
BAD_RSLOT - Invalid reuse of reader locktable slot.BAD_TXN - Transaction must abort, has a child, or is invalid.BAD_VALSIZE - Unsupported size of key/DB name/data, or wrong DUPFIXED size.BAD_DBI - The specified DBI was changed unexpectedly.LAST_ERRCODE - The last defined error code.public static final int MDB_INVALID
SUCCESS - Successful result.KEYEXIST - Key/data pair already exists.NOTFOUND - Key/data pair not found (EOF).PAGE_NOTFOUND - Requested page not found - this usually indicates corruption.CORRUPTED - Located page was wrong type.PANIC - Update of meta page failed or environment had fatal error.VERSION_MISMATCH - Environment version mismatch.INVALID - File is not a valid LMDB file.MAP_FULL - Environment mapsize reached.DBS_FULL - Environment maxdbs reached.READERS_FULL - Environment maxreaders reached.TLS_FULL - Too many TLS keys in use - Windows only.TXN_FULL - Txn has too many dirty pages.CURSOR_FULL - Cursor stack too deep - internal error.PAGE_FULL - Page has not enough space - internal error.MAP_RESIZED - Database contents grew beyond environment mapsize.INCOMPATIBLE -
The operation expects an DUPSORT / DUPFIXED database. Opening a named DB when the unnamed DB has DUPSORT / INTEGERKEY. Accessing a data record as a
database, or vice versa. The database was dropped and recreated with different flags.
BAD_RSLOT - Invalid reuse of reader locktable slot.BAD_TXN - Transaction must abort, has a child, or is invalid.BAD_VALSIZE - Unsupported size of key/DB name/data, or wrong DUPFIXED size.BAD_DBI - The specified DBI was changed unexpectedly.LAST_ERRCODE - The last defined error code.public static final int MDB_MAP_FULL
SUCCESS - Successful result.KEYEXIST - Key/data pair already exists.NOTFOUND - Key/data pair not found (EOF).PAGE_NOTFOUND - Requested page not found - this usually indicates corruption.CORRUPTED - Located page was wrong type.PANIC - Update of meta page failed or environment had fatal error.VERSION_MISMATCH - Environment version mismatch.INVALID - File is not a valid LMDB file.MAP_FULL - Environment mapsize reached.DBS_FULL - Environment maxdbs reached.READERS_FULL - Environment maxreaders reached.TLS_FULL - Too many TLS keys in use - Windows only.TXN_FULL - Txn has too many dirty pages.CURSOR_FULL - Cursor stack too deep - internal error.PAGE_FULL - Page has not enough space - internal error.MAP_RESIZED - Database contents grew beyond environment mapsize.INCOMPATIBLE -
The operation expects an DUPSORT / DUPFIXED database. Opening a named DB when the unnamed DB has DUPSORT / INTEGERKEY. Accessing a data record as a
database, or vice versa. The database was dropped and recreated with different flags.
BAD_RSLOT - Invalid reuse of reader locktable slot.BAD_TXN - Transaction must abort, has a child, or is invalid.BAD_VALSIZE - Unsupported size of key/DB name/data, or wrong DUPFIXED size.BAD_DBI - The specified DBI was changed unexpectedly.LAST_ERRCODE - The last defined error code.public static final int MDB_DBS_FULL
SUCCESS - Successful result.KEYEXIST - Key/data pair already exists.NOTFOUND - Key/data pair not found (EOF).PAGE_NOTFOUND - Requested page not found - this usually indicates corruption.CORRUPTED - Located page was wrong type.PANIC - Update of meta page failed or environment had fatal error.VERSION_MISMATCH - Environment version mismatch.INVALID - File is not a valid LMDB file.MAP_FULL - Environment mapsize reached.DBS_FULL - Environment maxdbs reached.READERS_FULL - Environment maxreaders reached.TLS_FULL - Too many TLS keys in use - Windows only.TXN_FULL - Txn has too many dirty pages.CURSOR_FULL - Cursor stack too deep - internal error.PAGE_FULL - Page has not enough space - internal error.MAP_RESIZED - Database contents grew beyond environment mapsize.INCOMPATIBLE -
The operation expects an DUPSORT / DUPFIXED database. Opening a named DB when the unnamed DB has DUPSORT / INTEGERKEY. Accessing a data record as a
database, or vice versa. The database was dropped and recreated with different flags.
BAD_RSLOT - Invalid reuse of reader locktable slot.BAD_TXN - Transaction must abort, has a child, or is invalid.BAD_VALSIZE - Unsupported size of key/DB name/data, or wrong DUPFIXED size.BAD_DBI - The specified DBI was changed unexpectedly.LAST_ERRCODE - The last defined error code.public static final int MDB_READERS_FULL
SUCCESS - Successful result.KEYEXIST - Key/data pair already exists.NOTFOUND - Key/data pair not found (EOF).PAGE_NOTFOUND - Requested page not found - this usually indicates corruption.CORRUPTED - Located page was wrong type.PANIC - Update of meta page failed or environment had fatal error.VERSION_MISMATCH - Environment version mismatch.INVALID - File is not a valid LMDB file.MAP_FULL - Environment mapsize reached.DBS_FULL - Environment maxdbs reached.READERS_FULL - Environment maxreaders reached.TLS_FULL - Too many TLS keys in use - Windows only.TXN_FULL - Txn has too many dirty pages.CURSOR_FULL - Cursor stack too deep - internal error.PAGE_FULL - Page has not enough space - internal error.MAP_RESIZED - Database contents grew beyond environment mapsize.INCOMPATIBLE -
The operation expects an DUPSORT / DUPFIXED database. Opening a named DB when the unnamed DB has DUPSORT / INTEGERKEY. Accessing a data record as a
database, or vice versa. The database was dropped and recreated with different flags.
BAD_RSLOT - Invalid reuse of reader locktable slot.BAD_TXN - Transaction must abort, has a child, or is invalid.BAD_VALSIZE - Unsupported size of key/DB name/data, or wrong DUPFIXED size.BAD_DBI - The specified DBI was changed unexpectedly.LAST_ERRCODE - The last defined error code.public static final int MDB_TLS_FULL
SUCCESS - Successful result.KEYEXIST - Key/data pair already exists.NOTFOUND - Key/data pair not found (EOF).PAGE_NOTFOUND - Requested page not found - this usually indicates corruption.CORRUPTED - Located page was wrong type.PANIC - Update of meta page failed or environment had fatal error.VERSION_MISMATCH - Environment version mismatch.INVALID - File is not a valid LMDB file.MAP_FULL - Environment mapsize reached.DBS_FULL - Environment maxdbs reached.READERS_FULL - Environment maxreaders reached.TLS_FULL - Too many TLS keys in use - Windows only.TXN_FULL - Txn has too many dirty pages.CURSOR_FULL - Cursor stack too deep - internal error.PAGE_FULL - Page has not enough space - internal error.MAP_RESIZED - Database contents grew beyond environment mapsize.INCOMPATIBLE -
The operation expects an DUPSORT / DUPFIXED database. Opening a named DB when the unnamed DB has DUPSORT / INTEGERKEY. Accessing a data record as a
database, or vice versa. The database was dropped and recreated with different flags.
BAD_RSLOT - Invalid reuse of reader locktable slot.BAD_TXN - Transaction must abort, has a child, or is invalid.BAD_VALSIZE - Unsupported size of key/DB name/data, or wrong DUPFIXED size.BAD_DBI - The specified DBI was changed unexpectedly.LAST_ERRCODE - The last defined error code.public static final int MDB_TXN_FULL
SUCCESS - Successful result.KEYEXIST - Key/data pair already exists.NOTFOUND - Key/data pair not found (EOF).PAGE_NOTFOUND - Requested page not found - this usually indicates corruption.CORRUPTED - Located page was wrong type.PANIC - Update of meta page failed or environment had fatal error.VERSION_MISMATCH - Environment version mismatch.INVALID - File is not a valid LMDB file.MAP_FULL - Environment mapsize reached.DBS_FULL - Environment maxdbs reached.READERS_FULL - Environment maxreaders reached.TLS_FULL - Too many TLS keys in use - Windows only.TXN_FULL - Txn has too many dirty pages.CURSOR_FULL - Cursor stack too deep - internal error.PAGE_FULL - Page has not enough space - internal error.MAP_RESIZED - Database contents grew beyond environment mapsize.INCOMPATIBLE -
The operation expects an DUPSORT / DUPFIXED database. Opening a named DB when the unnamed DB has DUPSORT / INTEGERKEY. Accessing a data record as a
database, or vice versa. The database was dropped and recreated with different flags.
BAD_RSLOT - Invalid reuse of reader locktable slot.BAD_TXN - Transaction must abort, has a child, or is invalid.BAD_VALSIZE - Unsupported size of key/DB name/data, or wrong DUPFIXED size.BAD_DBI - The specified DBI was changed unexpectedly.LAST_ERRCODE - The last defined error code.public static final int MDB_CURSOR_FULL
SUCCESS - Successful result.KEYEXIST - Key/data pair already exists.NOTFOUND - Key/data pair not found (EOF).PAGE_NOTFOUND - Requested page not found - this usually indicates corruption.CORRUPTED - Located page was wrong type.PANIC - Update of meta page failed or environment had fatal error.VERSION_MISMATCH - Environment version mismatch.INVALID - File is not a valid LMDB file.MAP_FULL - Environment mapsize reached.DBS_FULL - Environment maxdbs reached.READERS_FULL - Environment maxreaders reached.TLS_FULL - Too many TLS keys in use - Windows only.TXN_FULL - Txn has too many dirty pages.CURSOR_FULL - Cursor stack too deep - internal error.PAGE_FULL - Page has not enough space - internal error.MAP_RESIZED - Database contents grew beyond environment mapsize.INCOMPATIBLE -
The operation expects an DUPSORT / DUPFIXED database. Opening a named DB when the unnamed DB has DUPSORT / INTEGERKEY. Accessing a data record as a
database, or vice versa. The database was dropped and recreated with different flags.
BAD_RSLOT - Invalid reuse of reader locktable slot.BAD_TXN - Transaction must abort, has a child, or is invalid.BAD_VALSIZE - Unsupported size of key/DB name/data, or wrong DUPFIXED size.BAD_DBI - The specified DBI was changed unexpectedly.LAST_ERRCODE - The last defined error code.public static final int MDB_PAGE_FULL
SUCCESS - Successful result.KEYEXIST - Key/data pair already exists.NOTFOUND - Key/data pair not found (EOF).PAGE_NOTFOUND - Requested page not found - this usually indicates corruption.CORRUPTED - Located page was wrong type.PANIC - Update of meta page failed or environment had fatal error.VERSION_MISMATCH - Environment version mismatch.INVALID - File is not a valid LMDB file.MAP_FULL - Environment mapsize reached.DBS_FULL - Environment maxdbs reached.READERS_FULL - Environment maxreaders reached.TLS_FULL - Too many TLS keys in use - Windows only.TXN_FULL - Txn has too many dirty pages.CURSOR_FULL - Cursor stack too deep - internal error.PAGE_FULL - Page has not enough space - internal error.MAP_RESIZED - Database contents grew beyond environment mapsize.INCOMPATIBLE -
The operation expects an DUPSORT / DUPFIXED database. Opening a named DB when the unnamed DB has DUPSORT / INTEGERKEY. Accessing a data record as a
database, or vice versa. The database was dropped and recreated with different flags.
BAD_RSLOT - Invalid reuse of reader locktable slot.BAD_TXN - Transaction must abort, has a child, or is invalid.BAD_VALSIZE - Unsupported size of key/DB name/data, or wrong DUPFIXED size.BAD_DBI - The specified DBI was changed unexpectedly.LAST_ERRCODE - The last defined error code.public static final int MDB_MAP_RESIZED
SUCCESS - Successful result.KEYEXIST - Key/data pair already exists.NOTFOUND - Key/data pair not found (EOF).PAGE_NOTFOUND - Requested page not found - this usually indicates corruption.CORRUPTED - Located page was wrong type.PANIC - Update of meta page failed or environment had fatal error.VERSION_MISMATCH - Environment version mismatch.INVALID - File is not a valid LMDB file.MAP_FULL - Environment mapsize reached.DBS_FULL - Environment maxdbs reached.READERS_FULL - Environment maxreaders reached.TLS_FULL - Too many TLS keys in use - Windows only.TXN_FULL - Txn has too many dirty pages.CURSOR_FULL - Cursor stack too deep - internal error.PAGE_FULL - Page has not enough space - internal error.MAP_RESIZED - Database contents grew beyond environment mapsize.INCOMPATIBLE -
The operation expects an DUPSORT / DUPFIXED database. Opening a named DB when the unnamed DB has DUPSORT / INTEGERKEY. Accessing a data record as a
database, or vice versa. The database was dropped and recreated with different flags.
BAD_RSLOT - Invalid reuse of reader locktable slot.BAD_TXN - Transaction must abort, has a child, or is invalid.BAD_VALSIZE - Unsupported size of key/DB name/data, or wrong DUPFIXED size.BAD_DBI - The specified DBI was changed unexpectedly.LAST_ERRCODE - The last defined error code.public static final int MDB_INCOMPATIBLE
SUCCESS - Successful result.KEYEXIST - Key/data pair already exists.NOTFOUND - Key/data pair not found (EOF).PAGE_NOTFOUND - Requested page not found - this usually indicates corruption.CORRUPTED - Located page was wrong type.PANIC - Update of meta page failed or environment had fatal error.VERSION_MISMATCH - Environment version mismatch.INVALID - File is not a valid LMDB file.MAP_FULL - Environment mapsize reached.DBS_FULL - Environment maxdbs reached.READERS_FULL - Environment maxreaders reached.TLS_FULL - Too many TLS keys in use - Windows only.TXN_FULL - Txn has too many dirty pages.CURSOR_FULL - Cursor stack too deep - internal error.PAGE_FULL - Page has not enough space - internal error.MAP_RESIZED - Database contents grew beyond environment mapsize.INCOMPATIBLE -
The operation expects an DUPSORT / DUPFIXED database. Opening a named DB when the unnamed DB has DUPSORT / INTEGERKEY. Accessing a data record as a
database, or vice versa. The database was dropped and recreated with different flags.
BAD_RSLOT - Invalid reuse of reader locktable slot.BAD_TXN - Transaction must abort, has a child, or is invalid.BAD_VALSIZE - Unsupported size of key/DB name/data, or wrong DUPFIXED size.BAD_DBI - The specified DBI was changed unexpectedly.LAST_ERRCODE - The last defined error code.public static final int MDB_BAD_RSLOT
SUCCESS - Successful result.KEYEXIST - Key/data pair already exists.NOTFOUND - Key/data pair not found (EOF).PAGE_NOTFOUND - Requested page not found - this usually indicates corruption.CORRUPTED - Located page was wrong type.PANIC - Update of meta page failed or environment had fatal error.VERSION_MISMATCH - Environment version mismatch.INVALID - File is not a valid LMDB file.MAP_FULL - Environment mapsize reached.DBS_FULL - Environment maxdbs reached.READERS_FULL - Environment maxreaders reached.TLS_FULL - Too many TLS keys in use - Windows only.TXN_FULL - Txn has too many dirty pages.CURSOR_FULL - Cursor stack too deep - internal error.PAGE_FULL - Page has not enough space - internal error.MAP_RESIZED - Database contents grew beyond environment mapsize.INCOMPATIBLE -
The operation expects an DUPSORT / DUPFIXED database. Opening a named DB when the unnamed DB has DUPSORT / INTEGERKEY. Accessing a data record as a
database, or vice versa. The database was dropped and recreated with different flags.
BAD_RSLOT - Invalid reuse of reader locktable slot.BAD_TXN - Transaction must abort, has a child, or is invalid.BAD_VALSIZE - Unsupported size of key/DB name/data, or wrong DUPFIXED size.BAD_DBI - The specified DBI was changed unexpectedly.LAST_ERRCODE - The last defined error code.public static final int MDB_BAD_TXN
SUCCESS - Successful result.KEYEXIST - Key/data pair already exists.NOTFOUND - Key/data pair not found (EOF).PAGE_NOTFOUND - Requested page not found - this usually indicates corruption.CORRUPTED - Located page was wrong type.PANIC - Update of meta page failed or environment had fatal error.VERSION_MISMATCH - Environment version mismatch.INVALID - File is not a valid LMDB file.MAP_FULL - Environment mapsize reached.DBS_FULL - Environment maxdbs reached.READERS_FULL - Environment maxreaders reached.TLS_FULL - Too many TLS keys in use - Windows only.TXN_FULL - Txn has too many dirty pages.CURSOR_FULL - Cursor stack too deep - internal error.PAGE_FULL - Page has not enough space - internal error.MAP_RESIZED - Database contents grew beyond environment mapsize.INCOMPATIBLE -
The operation expects an DUPSORT / DUPFIXED database. Opening a named DB when the unnamed DB has DUPSORT / INTEGERKEY. Accessing a data record as a
database, or vice versa. The database was dropped and recreated with different flags.
BAD_RSLOT - Invalid reuse of reader locktable slot.BAD_TXN - Transaction must abort, has a child, or is invalid.BAD_VALSIZE - Unsupported size of key/DB name/data, or wrong DUPFIXED size.BAD_DBI - The specified DBI was changed unexpectedly.LAST_ERRCODE - The last defined error code.public static final int MDB_BAD_VALSIZE
SUCCESS - Successful result.KEYEXIST - Key/data pair already exists.NOTFOUND - Key/data pair not found (EOF).PAGE_NOTFOUND - Requested page not found - this usually indicates corruption.CORRUPTED - Located page was wrong type.PANIC - Update of meta page failed or environment had fatal error.VERSION_MISMATCH - Environment version mismatch.INVALID - File is not a valid LMDB file.MAP_FULL - Environment mapsize reached.DBS_FULL - Environment maxdbs reached.READERS_FULL - Environment maxreaders reached.TLS_FULL - Too many TLS keys in use - Windows only.TXN_FULL - Txn has too many dirty pages.CURSOR_FULL - Cursor stack too deep - internal error.PAGE_FULL - Page has not enough space - internal error.MAP_RESIZED - Database contents grew beyond environment mapsize.INCOMPATIBLE -
The operation expects an DUPSORT / DUPFIXED database. Opening a named DB when the unnamed DB has DUPSORT / INTEGERKEY. Accessing a data record as a
database, or vice versa. The database was dropped and recreated with different flags.
BAD_RSLOT - Invalid reuse of reader locktable slot.BAD_TXN - Transaction must abort, has a child, or is invalid.BAD_VALSIZE - Unsupported size of key/DB name/data, or wrong DUPFIXED size.BAD_DBI - The specified DBI was changed unexpectedly.LAST_ERRCODE - The last defined error code.public static final int MDB_BAD_DBI
SUCCESS - Successful result.KEYEXIST - Key/data pair already exists.NOTFOUND - Key/data pair not found (EOF).PAGE_NOTFOUND - Requested page not found - this usually indicates corruption.CORRUPTED - Located page was wrong type.PANIC - Update of meta page failed or environment had fatal error.VERSION_MISMATCH - Environment version mismatch.INVALID - File is not a valid LMDB file.MAP_FULL - Environment mapsize reached.DBS_FULL - Environment maxdbs reached.READERS_FULL - Environment maxreaders reached.TLS_FULL - Too many TLS keys in use - Windows only.TXN_FULL - Txn has too many dirty pages.CURSOR_FULL - Cursor stack too deep - internal error.PAGE_FULL - Page has not enough space - internal error.MAP_RESIZED - Database contents grew beyond environment mapsize.INCOMPATIBLE -
The operation expects an DUPSORT / DUPFIXED database. Opening a named DB when the unnamed DB has DUPSORT / INTEGERKEY. Accessing a data record as a
database, or vice versa. The database was dropped and recreated with different flags.
BAD_RSLOT - Invalid reuse of reader locktable slot.BAD_TXN - Transaction must abort, has a child, or is invalid.BAD_VALSIZE - Unsupported size of key/DB name/data, or wrong DUPFIXED size.BAD_DBI - The specified DBI was changed unexpectedly.LAST_ERRCODE - The last defined error code.public static final int MDB_LAST_ERRCODE
SUCCESS - Successful result.KEYEXIST - Key/data pair already exists.NOTFOUND - Key/data pair not found (EOF).PAGE_NOTFOUND - Requested page not found - this usually indicates corruption.CORRUPTED - Located page was wrong type.PANIC - Update of meta page failed or environment had fatal error.VERSION_MISMATCH - Environment version mismatch.INVALID - File is not a valid LMDB file.MAP_FULL - Environment mapsize reached.DBS_FULL - Environment maxdbs reached.READERS_FULL - Environment maxreaders reached.TLS_FULL - Too many TLS keys in use - Windows only.TXN_FULL - Txn has too many dirty pages.CURSOR_FULL - Cursor stack too deep - internal error.PAGE_FULL - Page has not enough space - internal error.MAP_RESIZED - Database contents grew beyond environment mapsize.INCOMPATIBLE -
The operation expects an DUPSORT / DUPFIXED database. Opening a named DB when the unnamed DB has DUPSORT / INTEGERKEY. Accessing a data record as a
database, or vice versa. The database was dropped and recreated with different flags.
BAD_RSLOT - Invalid reuse of reader locktable slot.BAD_TXN - Transaction must abort, has a child, or is invalid.BAD_VALSIZE - Unsupported size of key/DB name/data, or wrong DUPFIXED size.BAD_DBI - The specified DBI was changed unexpectedly.LAST_ERRCODE - The last defined error code.public static long nmdb_version(long major,
long minor,
long patch)
version@Nullable
public static java.lang.String mdb_version(@Nullable
java.nio.IntBuffer major,
@Nullable
java.nio.IntBuffer minor,
@Nullable
java.nio.IntBuffer patch)
major - if non-NULL, the library major version number is copied hereminor - if non-NULL, the library minor version number is copied herepatch - if non-NULL, the library patch version number is copied herepublic static long nmdb_strerror(int err)
strerrorpublic static java.lang.String mdb_strerror(int err)
This function is a superset of the ANSI C X3.159-1989 (ANSI C) strerror(3) function. If the error code is greater than or equal to 0, then the string returned by the system function strerror(3) is returned. If the error code is less than 0, an error string corresponding to the LMDB library error is returned.
err - the error codepublic static int nmdb_env_create(long env)
env_createpublic static int mdb_env_create(org.lwjgl.PointerBuffer env)
This function allocates memory for a MDB_env structure. To release the allocated memory and discard the handle, call env_close. Before the
handle may be used, it must be opened using env_open. Various other options may also need to be set before opening the handle, e.g.
env_set_mapsize, env_set_maxreaders, env_set_maxdbs, depending on usage requirements.
env - the address where the new handle will be storedpublic static int nmdb_env_open(long env,
long path,
int flags,
int mode)
env_openpublic static int mdb_env_open(long env,
java.nio.ByteBuffer path,
int flags,
int mode)
If this function fails, env_close must be called to discard the MDB_env handle.
env - an environment handle returned by env_createpath - the directory in which the database files reside. This directory must already exist and be writable.flags - Special options for this environment. This parameter must be set to 0 or by bitwise OR'ing together one or more of the values described here. Flags
set by env_set_flags are also used.
FIXEDMAP
Use a fixed address for the mmap region. This flag must be specified when creating the environment, and is stored persistently in the environment. If successful, the memory map will always reside at the same virtual address and pointers used to reference data items in the database will be constant across multiple invocations. This option may not always work, depending on how the operating system has allocated memory to shared libraries and other uses.
The feature is highly experimental.
NOSUBDIR
By default, LMDB creates its environment in a directory whose pathname is given in path, and creates its data and lock files under that
directory. With this option, path is used as-is for the database main data file. The database lock file is the path with
"-lock" appended.
RDONLY
Open the environment in read-only mode. No write operations will be allowed. LMDB will still modify the lock file - except on read-only filesystems, where LMDB does not use locks.
WRITEMAP
Use a writeable memory map unless RDONLY is set. This uses fewer mallocs but loses protection from application bugs like wild pointer writes
and other bad updates into the database. This may be slightly faster for DBs that fit entirely in RAM, but is slower for DBs larger than RAM.
Incompatible with nested transactions.
Do not mix processes with and without WRITEMAP on the same environment. This can defeat durability (env_sync etc).
NOMETASYNC
Flush system buffers to disk only once per transaction, omit the metadata flush. Defer that until the system flushes files to disk, or next
non-RDONLY commit or env_sync. This optimization maintains database integrity, but a system crash may undo the last committed transaction.
I.e. it preserves the ACI (atomicity, consistency, isolation) but not D (durability) database property.
This flag may be changed at any time using env_set_flags.
NOSYNC
Don't flush system buffers to disk when committing a transaction. This optimization means a system crash can corrupt the database or lose the
last transactions if buffers are not yet flushed to disk. The risk is governed by how often the system flushes dirty buffers to disk and how
often env_sync is called. However, if the filesystem preserves write order and the WRITEMAP flag is not used, transactions exhibit ACI
(atomicity, consistency, isolation) properties and only lose D (durability). I.e. database integrity is maintained, but a system crash may undo
the final transactions. Note that (NOSYNC | WRITEMAP) leaves the system with no hint for when to write transactions to disk, unless
env_sync is called. (MAPASYNC | WRITEMAP) may be preferable.
This flag may be changed at any time using env_set_flags.
MAPASYNC
When using WRITEMAP, use asynchronous flushes to disk. As with NOSYNC, a system crash can then corrupt the database or lose the last
transactions. Calling env_sync ensures on-disk database integrity until next commit.
This flag may be changed at any time using env_set_flags.
NOTLS
Don't use Thread-Local Storage. Tie reader locktable slots to MDB_txn objects instead of to threads. I.e. txn_reset keeps the slot
reseved for the MDB_txn object. A thread may use parallel read-only transactions. A read-only transaction may span threads if the user
synchronizes its use. Applications that multiplex many user threads over individual OS threads need this option. Such an application must also
serialize the write transactions in an OS thread, since LMDB's write locking is unaware of the user threads.
NOLOCK
Don't do any locking. If concurrent access is anticipated, the caller must manage all concurrency itself. For proper operation the caller must enforce single-writer semantics, and must ensure that no readers are using old transactions while a writer is active. The simplest approach is to use an exclusive lock so that no readers may be active at all when a writer begins.
NORDAHEAD
Turn off readahead. Most operating systems perform readahead on read requests by default. This option turns it off if the OS supports it. Turning it off may help random read performance when the DB is larger than RAM and system RAM is full.
The option is not implemented on Windows.
NOMEMINIT
Don't initialize malloc'd memory before writing to unused spaces in the data file. By default, memory for pages written to the data file is
obtained using malloc. While these pages may be reused in subsequent transactions, freshly malloc'd pages will be initialized to zeroes before
use. This avoids persisting leftover data from other code (that used the heap and subsequently freed the memory) into the data file. Note that
many other system libraries may allocate and free memory from the heap for arbitrary uses. E.g., stdio may use the heap for file I/O buffers.
This initialization step has a modest performance cost so some applications may want to disable it using this flag. This option can be a
problem for applications which handle sensitive data like passwords, and it makes memory checkers like Valgrind noisy. This flag is not needed
with WRITEMAP, which writes directly to the mmap instead of using malloc for pages. The initialization is also skipped if RESERVE is used;
the caller is expected to overwrite all of the memory that was reserved in that case.
This flag may be changed at any time using env_set_flags.
mode - The UNIX permissions to set on created files and semaphores.
This parameter is ignored on Windows.
VERSION_MISMATCH - the version of the LMDB library doesn't match the version that created the database environment.INVALID - the environment file headers are corrupted.ENOENT - the directory specified by the path parameter doesn't exist.EACCES - the user didn't have permission to access the environment files.EAGAIN - the environment was locked by another process.public static int mdb_env_open(long env,
java.lang.CharSequence path,
int flags,
int mode)
If this function fails, env_close must be called to discard the MDB_env handle.
env - an environment handle returned by env_createpath - the directory in which the database files reside. This directory must already exist and be writable.flags - Special options for this environment. This parameter must be set to 0 or by bitwise OR'ing together one or more of the values described here. Flags
set by env_set_flags are also used.
FIXEDMAP
Use a fixed address for the mmap region. This flag must be specified when creating the environment, and is stored persistently in the environment. If successful, the memory map will always reside at the same virtual address and pointers used to reference data items in the database will be constant across multiple invocations. This option may not always work, depending on how the operating system has allocated memory to shared libraries and other uses.
The feature is highly experimental.
NOSUBDIR
By default, LMDB creates its environment in a directory whose pathname is given in path, and creates its data and lock files under that
directory. With this option, path is used as-is for the database main data file. The database lock file is the path with
"-lock" appended.
RDONLY
Open the environment in read-only mode. No write operations will be allowed. LMDB will still modify the lock file - except on read-only filesystems, where LMDB does not use locks.
WRITEMAP
Use a writeable memory map unless RDONLY is set. This uses fewer mallocs but loses protection from application bugs like wild pointer writes
and other bad updates into the database. This may be slightly faster for DBs that fit entirely in RAM, but is slower for DBs larger than RAM.
Incompatible with nested transactions.
Do not mix processes with and without WRITEMAP on the same environment. This can defeat durability (env_sync etc).
NOMETASYNC
Flush system buffers to disk only once per transaction, omit the metadata flush. Defer that until the system flushes files to disk, or next
non-RDONLY commit or env_sync. This optimization maintains database integrity, but a system crash may undo the last committed transaction.
I.e. it preserves the ACI (atomicity, consistency, isolation) but not D (durability) database property.
This flag may be changed at any time using env_set_flags.
NOSYNC
Don't flush system buffers to disk when committing a transaction. This optimization means a system crash can corrupt the database or lose the
last transactions if buffers are not yet flushed to disk. The risk is governed by how often the system flushes dirty buffers to disk and how
often env_sync is called. However, if the filesystem preserves write order and the WRITEMAP flag is not used, transactions exhibit ACI
(atomicity, consistency, isolation) properties and only lose D (durability). I.e. database integrity is maintained, but a system crash may undo
the final transactions. Note that (NOSYNC | WRITEMAP) leaves the system with no hint for when to write transactions to disk, unless
env_sync is called. (MAPASYNC | WRITEMAP) may be preferable.
This flag may be changed at any time using env_set_flags.
MAPASYNC
When using WRITEMAP, use asynchronous flushes to disk. As with NOSYNC, a system crash can then corrupt the database or lose the last
transactions. Calling env_sync ensures on-disk database integrity until next commit.
This flag may be changed at any time using env_set_flags.
NOTLS
Don't use Thread-Local Storage. Tie reader locktable slots to MDB_txn objects instead of to threads. I.e. txn_reset keeps the slot
reseved for the MDB_txn object. A thread may use parallel read-only transactions. A read-only transaction may span threads if the user
synchronizes its use. Applications that multiplex many user threads over individual OS threads need this option. Such an application must also
serialize the write transactions in an OS thread, since LMDB's write locking is unaware of the user threads.
NOLOCK
Don't do any locking. If concurrent access is anticipated, the caller must manage all concurrency itself. For proper operation the caller must enforce single-writer semantics, and must ensure that no readers are using old transactions while a writer is active. The simplest approach is to use an exclusive lock so that no readers may be active at all when a writer begins.
NORDAHEAD
Turn off readahead. Most operating systems perform readahead on read requests by default. This option turns it off if the OS supports it. Turning it off may help random read performance when the DB is larger than RAM and system RAM is full.
The option is not implemented on Windows.
NOMEMINIT
Don't initialize malloc'd memory before writing to unused spaces in the data file. By default, memory for pages written to the data file is
obtained using malloc. While these pages may be reused in subsequent transactions, freshly malloc'd pages will be initialized to zeroes before
use. This avoids persisting leftover data from other code (that used the heap and subsequently freed the memory) into the data file. Note that
many other system libraries may allocate and free memory from the heap for arbitrary uses. E.g., stdio may use the heap for file I/O buffers.
This initialization step has a modest performance cost so some applications may want to disable it using this flag. This option can be a
problem for applications which handle sensitive data like passwords, and it makes memory checkers like Valgrind noisy. This flag is not needed
with WRITEMAP, which writes directly to the mmap instead of using malloc for pages. The initialization is also skipped if RESERVE is used;
the caller is expected to overwrite all of the memory that was reserved in that case.
This flag may be changed at any time using env_set_flags.
mode - The UNIX permissions to set on created files and semaphores.
This parameter is ignored on Windows.
VERSION_MISMATCH - the version of the LMDB library doesn't match the version that created the database environment.INVALID - the environment file headers are corrupted.ENOENT - the directory specified by the path parameter doesn't exist.EACCES - the user didn't have permission to access the environment files.EAGAIN - the environment was locked by another process.public static int nmdb_env_copy(long env,
long path)
env_copypublic static int mdb_env_copy(long env,
java.nio.ByteBuffer path)
This function may be used to make a backup of an existing environment. No lockfile is created, since it gets recreated at need.
This call can trigger significant file size growth if run in parallel with write transactions, because it employs a read-only transaction.
env - an environment handle returned by env_create. It must have already been opened successfully.path - the directory in which the copy will reside. This directory must already exist and be writable but must otherwise be empty.public static int mdb_env_copy(long env,
java.lang.CharSequence path)
This function may be used to make a backup of an existing environment. No lockfile is created, since it gets recreated at need.
This call can trigger significant file size growth if run in parallel with write transactions, because it employs a read-only transaction.
env - an environment handle returned by env_create. It must have already been opened successfully.path - the directory in which the copy will reside. This directory must already exist and be writable but must otherwise be empty.public static int nmdb_env_copy2(long env,
long path,
int flags)
env_copy2public static int mdb_env_copy2(long env,
java.nio.ByteBuffer path,
int flags)
This function may be used to make a backup of an existing environment. No lockfile is created, since it gets recreated at need.
This call can trigger significant file size growth if run in parallel with write transactions, because it employs a read-only transaction.
env - an environment handle returned by env_create. It must have already been opened successfully.path - the directory in which the copy will reside. This directory must already exist and be writable but must otherwise be empty.flags - special options for this operation. This parameter must be set to 0 or by bitwise OR'ing together one or more of the values described here.
CP_COMPACT - Perform compaction while copying: omit free pages and sequentially renumber all pages in output. This option consumes more CPU
and runs more slowly than the default.public static int mdb_env_copy2(long env,
java.lang.CharSequence path,
int flags)
This function may be used to make a backup of an existing environment. No lockfile is created, since it gets recreated at need.
This call can trigger significant file size growth if run in parallel with write transactions, because it employs a read-only transaction.
env - an environment handle returned by env_create. It must have already been opened successfully.path - the directory in which the copy will reside. This directory must already exist and be writable but must otherwise be empty.flags - special options for this operation. This parameter must be set to 0 or by bitwise OR'ing together one or more of the values described here.
CP_COMPACT - Perform compaction while copying: omit free pages and sequentially renumber all pages in output. This option consumes more CPU
and runs more slowly than the default.public static int nmdb_env_stat(long env,
long stat)
env_statpublic static int mdb_env_stat(long env,
MDBStat stat)
env - an environment handle returned by env_createstat - the address of an MDBStat structure where the statistics will be copiedpublic static int nmdb_env_info(long env,
long stat)
env_infopublic static int mdb_env_info(long env,
MDBEnvInfo stat)
env - an environment handle returned by env_createstat - the address of an MDBEnvInfo structure where the information will be copiedpublic static int nmdb_env_sync(long env,
int force)
env_syncpublic static int mdb_env_sync(long env,
boolean force)
Data is always written to disk when txn_commit is called, but the operating system may keep it buffered. LMDB always flushes the OS buffers upon
commit as well, unless the environment was opened with NOSYNC or in part NOMETASYNC. This call is not valid if the environment was opened with
RDONLY.
env - an environment handle returned by env_createforce - if non-zero, force a synchronous flush. Otherwise if the environment has the NOSYNC flag set the flushes will be omitted, and with MAPASYNC they
will be asynchronous.EACCES - the environment is read-only.EINVAL - an invalid parameter was specified.EIO - an error occurred during synchronization.public static void nmdb_env_close(long env)
env_closepublic static void mdb_env_close(long env)
Only a single thread may call this function. All transactions, databases, and cursors must already be closed before calling this function. Attempts to use any such handles after calling this function will cause a SIGSEGV. The environment handle will be freed and must not be used again after this call.
env - an environment handle returned by env_createpublic static int nmdb_env_set_flags(long env,
int flags,
int onoff)
env_set_flagspublic static int mdb_env_set_flags(long env,
int flags,
boolean onoff)
This may be used to set some flags in addition to those from env_open, or to unset these flags. If several threads change the flags at the same
time, the result is undefined.
env - an environment handle returned by env_createflags - the flags to change, bitwise OR'ed togetheronoff - a non-zero value sets the flags, zero clears them.EINVAL - an invalid parameter was specified.public static int nmdb_env_get_flags(long env,
long flags)
env_get_flagspublic static int mdb_env_get_flags(long env,
java.nio.IntBuffer flags)
env - an environment handle returned by env_createflags - the address of an integer to store the flagspublic static int nmdb_env_get_path(long env,
long path)
env_get_pathpublic static int mdb_env_get_path(long env,
org.lwjgl.PointerBuffer path)
env_open.env - an environment handle returned by env_createpath - address of a string pointer to contain the path. This is the actual string in the environment, not a copy. It should not be altered in any way.public static int nmdb_env_set_mapsize(long env,
long size)
env_set_mapsizepublic static int mdb_env_set_mapsize(long env,
long size)
The size should be a multiple of the OS page size. The default is 10485760 bytes. The size of the memory map is also the maximum size of the database. The value should be chosen as large as possible, to accommodate future growth of the database.
This function should be called after env_create and before env_open. It may be called at later times if no transactions are active in this
process. Note that the library does not check for this condition, the caller must ensure it explicitly.
The new size takes effect immediately for the current process but will not be persisted to any others until a write transaction has been committed by the current process. Also, only mapsize increases are persisted into the environment.
If the mapsize is increased by another process, and data has grown beyond the range of the current mapsize, txn_begin will return MAP_RESIZED. This
function may be called with a size of zero to adopt the new size.
Any attempt to set a size smaller than the space already consumed by the environment will be silently changed to the current size of the used space.
env - an environment handle returned by env_createsize - the size in bytesEINVAL - an invalid parameter was specified, or the environment has an active write transaction.public static int nmdb_env_set_maxreaders(long env,
int readers)
env_set_maxreaderspublic static int mdb_env_set_maxreaders(long env,
int readers)
This defines the number of slots in the lock table that is used to track readers in the environment. The default is 126.
Starting a read-only transaction normally ties a lock table slot to the current thread until the environment closes or the thread exits. If NOTLS is
in use, txn_begin instead ties the slot to the MDB_txn object until it or the MDB_env object is destroyed.
This function may only be called after env_create and before env_open.
env - an environment handle returned by env_createreaders - the maximum number of reader lock table slotsEINVAL - an invalid parameter was specified, or the environment is already open.public static int nmdb_env_get_maxreaders(long env,
long readers)
env_get_maxreaderspublic static int mdb_env_get_maxreaders(long env,
java.nio.IntBuffer readers)
env - an environment handle returned by env_createreaders - address of an integer to store the number of readerspublic static int nmdb_env_set_maxdbs(long env,
int dbs)
env_set_maxdbspublic static int mdb_env_set_maxdbs(long env,
int dbs)
This function is only needed if multiple databases will be used in the environment. Simpler applications that use the environment as a single unnamed database can ignore this option.
This function may only be called after env_create and before env_open.
Currently a moderate number of slots are cheap but a huge number gets expensive: 7-120 words per transaction, and every dbi_open does a linear
search of the opened slots.
env - an environment handle returned by env_createdbs - the maximum number of databasesEINVAL - an invalid parameter was specified, or the environment is already open.public static int nmdb_env_get_maxkeysize(long env)
env_get_maxkeysizepublic static int mdb_env_get_maxkeysize(long env)
DUPSORT data we can write.
Depends on the compile-time constant MAXKEYSIZE. Default 511.
env - an environment handle returned by env_createpublic static int nmdb_env_set_userctx(long env,
long ctx)
env_set_userctxpublic static int mdb_env_set_userctx(long env,
long ctx)
MDB_env.env - an environment handle returned by env_createctx - an arbitrary pointer for whatever the application needspublic static long nmdb_env_get_userctx(long env)
env_get_userctxpublic static long mdb_env_get_userctx(long env)
MDB_env.env - an environment handle returned by env_createpublic static int nmdb_txn_begin(long env,
long parent,
int flags,
long txn)
txn_beginpublic static int mdb_txn_begin(long env,
long parent,
int flags,
org.lwjgl.PointerBuffer txn)
The transaction handle may be discarded using txn_abort or txn_commit.
A transaction and its cursors must only be used by a single thread, and a thread may only have a single transaction at a time. If NOTLS is in use,
this does not apply to read-only transactions.
Cursors may not span transactions.
env - an environment handle returned by env_createparent - if this parameter is non-NULL, the new transaction will be a nested transaction, with the transaction indicated by parent as its parent.
Transactions may be nested to any level. A parent transaction and its cursors may not issue any other operations than txn_commit and
txn_abort while it has active child transactions.flags - special options for this transaction. This parameter must be set to 0 or by bitwise OR'ing together one or more of the values described here.
RDONLY - This transaction will not perform any write operations.txn - address where the new MDB_txn handle will be storedPANIC - a fatal error occurred earlier and the environment must be shut down.MAP_RESIZED - another process wrote data beyond this MDB_env's mapsize and this environment's map must be resized as well. See
env_set_mapsize.READERS_FULL - a read-only transaction was requested and the reader lock table is full. See env_set_maxreaders.ENOMEM - out of memory.public static long nmdb_txn_env(long txn)
txn_envpublic static long mdb_txn_env(long txn)
MDB_env.txn - a transaction handle returned by txn_begin.public static long nmdb_txn_id(long txn)
txn_idpublic static long mdb_txn_id(long txn)
This returns the identifier associated with this transaction. For a read-only transaction, this corresponds to the snapshot being read; concurrent readers will frequently have the same transaction ID.
txn - a transaction handle returned by txn_begin.public static int nmdb_txn_commit(long txn)
txn_commitpublic static int mdb_txn_commit(long txn)
The transaction handle is freed. It and its cursors must not be used again after this call, except with cursor_renew.
Earlier documentation incorrectly said all cursors would be freed. Only write-transactions free cursors.
txn - a transaction handle returned by txn_begin.EINVAL - an invalid parameter was specified.ENOSPC - no more disk space.EIO - a low-level I/O error occurred while writing.ENOMEM - out of memory.public static void nmdb_txn_abort(long txn)
txn_abortpublic static void mdb_txn_abort(long txn)
The transaction handle is freed. It and its cursors must not be used again after this call, except with cursor_renew.
Earlier documentation incorrectly said all cursors would be freed. Only write-transactions free cursors. "
txn - a transaction handle returned by txn_begin.public static void nmdb_txn_reset(long txn)
txn_resetpublic static void mdb_txn_reset(long txn)
Aborts the transaction like txn_abort, but keeps the transaction handle. txn_renew may reuse the handle. This saves allocation overhead if the
process will start a new read-only transaction soon, and also locking overhead if NOTLS is in use. The reader table lock is released, but the table
slot stays tied to its thread or MDB_txn. Use txn_abort to discard a reset handle, and to free its lock table slot if NOTLS is in use.
Cursors opened within the transaction must not be used again after this call, except with cursor_renew.
Reader locks generally don't interfere with writers, but they keep old versions of database pages allocated. Thus they prevent the old pages from being reused when writers commit new data, and so under heavy load the database size may grow much more rapidly than otherwise.
txn - a transaction handle returned by txn_begin.public static int nmdb_txn_renew(long txn)
txn_renewpublic static int mdb_txn_renew(long txn)
This acquires a new reader lock for a transaction handle that had been released by txn_reset. It must be called before a reset transaction may be
used again.
txn - a transaction handle returned by txn_begin.public static int nmdb_dbi_open(long txn,
long name,
int flags,
long dbi)
dbi_openpublic static int mdb_dbi_open(long txn,
@Nullable
java.nio.ByteBuffer name,
int flags,
java.nio.IntBuffer dbi)
A database handle denotes the name and parameters of a database, independently of whether such a database exists. The database handle may be discarded
by calling dbi_close. The old database handle is returned if the database was already open. The handle may only be closed once.
The database handle will be private to the current transaction until the transaction is successfully committed. If the transaction is aborted the handle will be closed automatically. After a successful commit the handle will reside in the shared environment, and may be used by other transactions.
This function must not be called from multiple concurrent transactions in the same process. A transaction that uses this function must finish (either commit or abort) before any other transaction in the process may use this function.
To use named databases (with name != NULL), env_set_maxdbs must be called before opening the environment. Database names are keys in the
unnamed database, and may be read but not written.
txn - a transaction handle returned by txn_begin.name - the name of the database to open. If only a single database is needed in the environment, this value may be NULL.flags - special options for this database. This parameter must be set to 0 or by bitwise OR'ing together one or more of the values described here.
REVERSEKEY
Keys are strings to be compared in reverse order, from the end of the strings to the beginning. By default, Keys are treated as strings and compared from beginning to end.
DUPSORT
Duplicate keys may be used in the database. (Or, from another perspective, keys may have multiple data items, stored in sorted order.) By default keys must be unique and may have only a single data item.
INTEGERKEY
Keys are binary integers in native byte order, either unsigned int or size_t, and will be sorted as such. The keys must all be
of the same size.
DUPFIXED
This flag may only be used in combination with DUPSORT. This option tells the library that the data items for this database are all the same
size, which allows further optimizations in storage and retrieval. When all data items are the same size, the GET_MULTIPLE, NEXT_MULTIPLE and
PREV_MULTIPLE cursor operations may be used to retrieve multiple items at once.
INTEGERDUP
This option specifies that duplicate data items are binary integers, similar to INTEGERKEY keys.
REVERSEDUP
This option specifies that duplicate data items should be compared as strings in reverse order.
CREATE
Create the named database if it doesn't exist. This option is not allowed in a read-only transaction or a read-only environment.
dbi - address where the new MDB_dbi handle will be storedNOTFOUND - the specified database doesn't exist in the environment and CREATE was not specified.DBS_FULL - too many databases have been opened. See env_set_maxdbs.public static int mdb_dbi_open(long txn,
@Nullable
java.lang.CharSequence name,
int flags,
java.nio.IntBuffer dbi)
A database handle denotes the name and parameters of a database, independently of whether such a database exists. The database handle may be discarded
by calling dbi_close. The old database handle is returned if the database was already open. The handle may only be closed once.
The database handle will be private to the current transaction until the transaction is successfully committed. If the transaction is aborted the handle will be closed automatically. After a successful commit the handle will reside in the shared environment, and may be used by other transactions.
This function must not be called from multiple concurrent transactions in the same process. A transaction that uses this function must finish (either commit or abort) before any other transaction in the process may use this function.
To use named databases (with name != NULL), env_set_maxdbs must be called before opening the environment. Database names are keys in the
unnamed database, and may be read but not written.
txn - a transaction handle returned by txn_begin.name - the name of the database to open. If only a single database is needed in the environment, this value may be NULL.flags - special options for this database. This parameter must be set to 0 or by bitwise OR'ing together one or more of the values described here.
REVERSEKEY
Keys are strings to be compared in reverse order, from the end of the strings to the beginning. By default, Keys are treated as strings and compared from beginning to end.
DUPSORT
Duplicate keys may be used in the database. (Or, from another perspective, keys may have multiple data items, stored in sorted order.) By default keys must be unique and may have only a single data item.
INTEGERKEY
Keys are binary integers in native byte order, either unsigned int or size_t, and will be sorted as such. The keys must all be
of the same size.
DUPFIXED
This flag may only be used in combination with DUPSORT. This option tells the library that the data items for this database are all the same
size, which allows further optimizations in storage and retrieval. When all data items are the same size, the GET_MULTIPLE, NEXT_MULTIPLE and
PREV_MULTIPLE cursor operations may be used to retrieve multiple items at once.
INTEGERDUP
This option specifies that duplicate data items are binary integers, similar to INTEGERKEY keys.
REVERSEDUP
This option specifies that duplicate data items should be compared as strings in reverse order.
CREATE
Create the named database if it doesn't exist. This option is not allowed in a read-only transaction or a read-only environment.
dbi - address where the new MDB_dbi handle will be storedNOTFOUND - the specified database doesn't exist in the environment and CREATE was not specified.DBS_FULL - too many databases have been opened. See env_set_maxdbs.public static int nmdb_stat(long txn,
int dbi,
long stat)
statpublic static int mdb_stat(long txn,
int dbi,
MDBStat stat)
public static int nmdb_dbi_flags(long txn,
int dbi,
long flags)
dbi_flagspublic static int mdb_dbi_flags(long txn,
int dbi,
java.nio.IntBuffer flags)
public static void nmdb_dbi_close(long env,
int dbi)
dbi_closepublic static void mdb_dbi_close(long env,
int dbi)
This call is not mutex protected. Handles should only be closed by a single thread, and only if no other threads are going to reference the database
handle or one of its cursors any further. Do not close a handle if an existing transaction has modified its database. Doing so can cause misbehavior
from database corruption to errors like BAD_VALSIZE (since the DB name is gone).
Closing a database handle is not necessary, but lets dbi_open reuse the handle value. Usually it's better to set a bigger env_set_maxdbs, unless
that value would be large.
env - an environment handle returned by env_createdbi - a database handle returned by dbi_openpublic static int nmdb_drop(long txn,
int dbi,
int del)
droppublic static int mdb_drop(long txn,
int dbi,
boolean del)
See dbi_close for restrictions about closing the DB handle.
public static int nmdb_set_compare(long txn,
int dbi,
long cmp)
set_comparepublic static int mdb_set_compare(long txn,
int dbi,
MDBCmpFuncI cmp)
The comparison function is called whenever it is necessary to compare a key specified by the application with a key currently stored in the database.
If no comparison function is specified, and no special key flags were specified with dbi_open, the keys are compared lexically, with shorter keys
collating before longer keys.
This function must be called before any data access functions are used, otherwise data corruption may occur. The same comparison function must be used by every program accessing the database, every time the database is used.
txn - a transaction handle returned by txn_begin.dbi - a database handle returned by dbi_opencmp - an MDBCmpFunc functionpublic static int nmdb_set_dupsort(long txn,
int dbi,
long cmp)
set_dupsortpublic static int mdb_set_dupsort(long txn,
int dbi,
MDBCmpFuncI cmp)
DUPSORT database.
This comparison function is called whenever it is necessary to compare a data item specified by the application with a data item currently stored in the database.
This function only takes effect if the database was opened with the DUPSORT flag.
If no comparison function is specified, and no special key flags were specified with dbi_open, the data items are compared lexically, with shorter
items collating before longer items.
This function must be called before any data access functions are used, otherwise data corruption may occur. The same comparison function must be used by every program accessing the database, every time the database is used.
txn - a transaction handle returned by txn_begin.dbi - a database handle returned by dbi_opencmp - an MDBCmpFunc functionpublic static int nmdb_set_relfunc(long txn,
int dbi,
long rel)
set_relfuncpublic static int mdb_set_relfunc(long txn,
int dbi,
MDBRelFuncI rel)
FIXEDMAP database.
The relocation function is called whenever it is necessary to move the data of an item to a different position in the database (e.g. through tree
balancing operations, shifts as a result of adds or deletes, etc.). It is intended to allow address/position-dependent data items to be stored in a
database in an environment opened with the FIXEDMAP option.
Currently the relocation feature is unimplemented and setting this function has no effect.
txn - a transaction handle returned by txn_begin.dbi - a database handle returned by dbi_openrel - an MDBRelFunc functionpublic static int nmdb_set_relctx(long txn,
int dbi,
long ctx)
set_relctxpublic static int mdb_set_relctx(long txn,
int dbi,
long ctx)
FIXEDMAP database's relocation function.
See set_relfunc and MDBRelFunc for more details.
txn - a transaction handle returned by txn_begin.dbi - a database handle returned by dbi_openctx - an arbitrary pointer for whatever the application needs. It will be passed to the callback function set by MDBRelFunc as its relctx
parameter whenever the callback is invoked.public static int nmdb_get(long txn,
int dbi,
long key,
long data)
getpublic static int mdb_get(long txn,
int dbi,
MDBVal key,
MDBVal data)
This function retrieves key/data pairs from the database. The address and length of the data associated with the specified key are returned in
the structure to which data refers.
If the database supports duplicate keys (DUPSORT) then the first data item for the key will be returned. Retrieval of other items requires the use of
cursor_get.
The memory pointed to by the returned values is owned by the database. The caller need not dispose of the memory, and may not modify it in any way. For values returned in a read-only transaction any modification attempts will cause a SIGSEGV.
Values returned from the database are valid only until a subsequent update operation, or the end of the transaction.
public static int nmdb_put(long txn,
int dbi,
long key,
long data,
int flags)
putpublic static int mdb_put(long txn,
int dbi,
MDBVal key,
MDBVal data,
int flags)
This function stores key/data pairs in the database. The default behavior is to enter the new key/data pair, replacing any previously existing key if
duplicates are disallowed, or adding a duplicate data item if duplicates are allowed (DUPSORT).
txn - a transaction handle returned by txn_begin.dbi - a database handle returned by dbi_openkey - the key to store in the databasedata - the data to storeflags - special options for this operation. This parameter must be set to 0 or by bitwise OR'ing together one or more of the values described here.
NODUPDATA - enter the new key/data pair only if it does not already appear in the database. This flag may only be specified if the database
was opened with DUPSORT. The function will return KEYEXIST if the key/data pair already appears in the database.NOOVERWRITE - enter the new key/data pair only if the key does not already appear in the database. The function will return KEYEXIST if the
key already appears in the database, even if the database supports duplicates (DUPSORT). The data parameter will be set to point to
the existing item.RESERVE - reserve space for data of the given size, but don't copy the given data. Instead, return a pointer to the reserved space, which the
caller can fill in later - before the next update operation or the transaction ends. This saves an extra memcpy if the data is being generated
later.
LMDB does nothing else with this memory, the caller is expected to modify all of the space requested. This flag must not be specified if the
database was opened with DUPSORT.
APPEND - append the given key/data pair to the end of the database. This option allows fast bulk loading when keys are already known to be in
the correct order. Loading unsorted keys with this flag will cause a KEYEXIST error.APPENDDUP - as above, but for sorted dup data.public static int nmdb_del(long txn,
int dbi,
long key,
long data)
delpublic static int mdb_del(long txn,
int dbi,
MDBVal key,
@Nullable
MDBVal data)
This function removes key/data pairs from the database. If the database does not support sorted duplicate data items (DUPSORT) the data parameter is
ignored.
If the database supports sorted duplicates and the data parameter is NULL, all of the duplicate data items for the key will be deleted. Otherwise, if
the data parameter is non-NULL only the matching data item will be deleted.
This function will return NOTFOUND if the specified key/data pair is not in the database.
public static int nmdb_cursor_open(long txn,
int dbi,
long cursor)
cursor_openpublic static int mdb_cursor_open(long txn,
int dbi,
org.lwjgl.PointerBuffer cursor)
A cursor is associated with a specific transaction and database. A cursor cannot be used when its database handle is closed. Nor when its transaction
has ended, except with cursor_renew.
It can be discarded with cursor_close.
A cursor in a write-transaction can be closed before its transaction ends, and will otherwise be closed when its transaction ends.
A cursor in a read-only transaction must be closed explicitly, before or after its transaction ends. It can be reused with cursor_renew before
finally closing it.
Earlier documentation said that cursors in every transaction were closed when the transaction committed or aborted.
public static void nmdb_cursor_close(long cursor)
cursor_closepublic static void mdb_cursor_close(long cursor)
The cursor handle will be freed and must not be used again after this call. Its transaction must still be live if it is a write-transaction.
cursor - a cursor handle returned by cursor_openpublic static int nmdb_cursor_renew(long txn,
long cursor)
cursor_renewpublic static int mdb_cursor_renew(long txn,
long cursor)
A cursor is associated with a specific transaction and database. Cursors that are only used in read-only transactions may be re-used, to avoid unnecessary malloc/free overhead. The cursor may be associated with a new read-only transaction, and referencing the same database handle as it was created with. This may be done whether the previous transaction is live or dead.
txn - a transaction handle returned by txn_begin.cursor - a cursor handle returned by cursor_openpublic static long nmdb_cursor_txn(long cursor)
cursor_txnpublic static long mdb_cursor_txn(long cursor)
cursor - a cursor handle returned by cursor_openpublic static int nmdb_cursor_dbi(long cursor)
cursor_dbipublic static int mdb_cursor_dbi(long cursor)
cursor - a cursor handle returned by cursor_openpublic static int nmdb_cursor_get(long cursor,
long key,
long data,
int op)
cursor_getpublic static int mdb_cursor_get(long cursor,
MDBVal key,
MDBVal data,
int op)
This function retrieves key/data pairs from the database. The address and length of the key are returned in the object to which key refers
(except for the case of the SET option, in which the key object is unchanged), and the address and length of the data are returned in the
object to which data refers.
See get for restrictions on using the output values.
cursor - a cursor handle returned by cursor_openkey - the key for a retrieved itemdata - the data of a retrieved itemop - a cursor operation MDB_cursor_op. One of:FIRST | FIRST_DUP | GET_BOTH | GET_BOTH_RANGE | GET_CURRENT | GET_MULTIPLE | LAST | LAST_DUP | NEXT | NEXT_DUP |
NEXT_MULTIPLE | NEXT_NODUP | PREV | PREV_DUP | PREV_NODUP | SET | SET_KEY | SET_RANGE | PREV_MULTIPLE |
public static int nmdb_cursor_put(long cursor,
long key,
long data,
int flags)
cursor_putpublic static int mdb_cursor_put(long cursor,
MDBVal key,
MDBVal data,
int flags)
This function stores key/data pairs into the database. The cursor is positioned at the new item, or on failure usually near it.
Earlier documentation incorrectly said errors would leave the state of the cursor unchanged.
cursor - a cursor handle returned by cursor_openkey - the key operated ondata - the data operated onflags - options for this operation. This parameter must be set to 0 or one of the values described here.
CURRENT - replace the item at the current cursor position. The key parameter must still be provided, and must match it. If using
sorted duplicates (DUPSORT) the data item must still sort into the same place. This is intended to be used when the new data is the same size
as the old. Otherwise it will simply perform a delete of the old record followed by an insert.NODUPDATA - enter the new key/data pair only if it does not already appear in the database. This flag may only be specified if the database
was opened with DUPSORT. The function will return KEYEXIST if the key/data pair already appears in the database.NOOVERWRITE - enter the new key/data pair only if the key does not already appear in the database. The function will return KEYEXIST if
the key already appears in the database, even if the database supports duplicates (DUPSORT).RESERVE - reserve space for data of the given size, but don't copy the given data. Instead, return a pointer to the reserved space, which
the caller can fill in later - before the next update operation or the transaction ends. This saves an extra memcpy if the data is being
generated later. This flag must not be specified if the database was opened with DUPSORT.APPEND - append the given key/data pair to the end of the database. No key comparisons are performed. This option allows fast bulk loading
when keys are already known to be in the correct order. Loading unsorted keys with this flag will cause a KEYEXIST error.APPENDDUP - as above, but for sorted dup data.MULTIPLE - store multiple contiguous data elements in a single request. This flag may only be specified if the database was opened with
DUPFIXED. The data argument must be an array of two MDBVal. The mv_size of the first MDBVal must be the size of a
single data element. The mv_data of the first MDBVal must point to the beginning of the array of contiguous data elements. The
mv_size of the second MDBVal must be the count of the number of data elements to store. On return this field will be set to the
count of the number of elements actually written. The mv_data of the second MDBVal is unused.public static int nmdb_cursor_del(long cursor,
int flags)
cursor_delpublic static int mdb_cursor_del(long cursor,
int flags)
This function deletes the key/data pair to which the cursor refers.
This does not invalidate the cursor, so operations such as NEXT can still be used on it. Both NEXT and GET_CURRENT will return the same record after
this operation.
cursor - a cursor handle returned by cursor_openflags - options for this operation. This parameter must be set to 0 or one of the values described here.
public static int nmdb_cursor_count(long cursor,
long countp)
cursor_countpublic static int mdb_cursor_count(long cursor,
org.lwjgl.PointerBuffer countp)
This call is only valid on databases that support sorted duplicate data items DUPSORT.
cursor - a cursor handle returned by cursor_opencountp - address where the count will be storedpublic static int nmdb_cmp(long txn,
int dbi,
long a,
long b)
cmppublic static int mdb_cmp(long txn,
int dbi,
MDBVal a,
MDBVal b)
This returns a comparison as if the two data items were keys in the specified database.
public static int nmdb_dcmp(long txn,
int dbi,
long a,
long b)
dcmppublic static int mdb_dcmp(long txn,
int dbi,
MDBVal a,
MDBVal b)
This returns a comparison as if the two items were data items of the specified database. The database must have the DUPSORT flag.
public static int nmdb_reader_list(long env,
long func,
long ctx)
reader_listpublic static int mdb_reader_list(long env,
MDBMsgFuncI func,
long ctx)
env - an environment handle returned by env_createfunc - an MDBMsgFunc functionctx - anything the message function needspublic static int nmdb_reader_check(long env,
long dead)
reader_checkpublic static int mdb_reader_check(long env,
java.nio.IntBuffer dead)
env - an environment handle returned by env_createdead - number of stale slots that were clearedpublic static long nmdb_version(int[] major,
int[] minor,
int[] patch)
nmdb_version(long, long, long)@Nullable
public static java.lang.String mdb_version(@Nullable
int[] major,
@Nullable
int[] minor,
@Nullable
int[] patch)
versionpublic static int nmdb_env_get_flags(long env,
int[] flags)
nmdb_env_get_flags(long, long)public static int mdb_env_get_flags(long env,
int[] flags)
env_get_flagspublic static int nmdb_env_get_maxreaders(long env,
int[] readers)
nmdb_env_get_maxreaders(long, long)public static int mdb_env_get_maxreaders(long env,
int[] readers)
env_get_maxreaderspublic static int nmdb_dbi_open(long txn,
long name,
int flags,
int[] dbi)
nmdb_dbi_open(long, long, int, long)public static int mdb_dbi_open(long txn,
@Nullable
java.nio.ByteBuffer name,
int flags,
int[] dbi)
dbi_openpublic static int mdb_dbi_open(long txn,
@Nullable
java.lang.CharSequence name,
int flags,
int[] dbi)
dbi_openpublic static int nmdb_dbi_flags(long txn,
int dbi,
int[] flags)
nmdb_dbi_flags(long, int, long)public static int mdb_dbi_flags(long txn,
int dbi,
int[] flags)
dbi_flagspublic static int nmdb_reader_check(long env,
int[] dead)
nmdb_reader_check(long, long)public static int mdb_reader_check(long env,
int[] dead)
reader_checkCopyright LWJGL. All Rights Reserved. License terms.