mirror of
https://git.openldap.org/openldap/openldap.git
synced 2025-01-24 13:24:56 +08:00
Merge remote-tracking branch 'origin/mdb.master'
This commit is contained in:
commit
752fdfd445
@ -16,7 +16,7 @@ LMDB 0.9.9 Release (2013/10/24)
|
||||
Fix mdb_page_merge() cursor fixup (ITS#7722)
|
||||
Fix mdb_cursor_del() on last delete (ITS#7718)
|
||||
Fix adding WRITEMAP on existing env (ITS#7715)
|
||||
Fixes for nested txns (ITS#7515)
|
||||
Fix nested txns (ITS#7515)
|
||||
Fix mdb_env_copy() O_DIRECT bug (ITS#7682)
|
||||
Fix mdb_cursor_set(SET_RANGE) return code (ITS#7681)
|
||||
Fix mdb_rebalance() cursor fixup (ITS#7701)
|
||||
|
@ -263,8 +263,6 @@ typedef int (MDB_cmp_func)(const MDB_val *a, const MDB_val *b);
|
||||
typedef void (MDB_rel_func)(MDB_val *item, void *oldptr, void *newptr, void *relctx);
|
||||
|
||||
/** @defgroup mdb_env Environment Flags
|
||||
*
|
||||
* Values do not overlap Database Flags.
|
||||
* @{
|
||||
*/
|
||||
/** mmap at a fixed address (experimental) */
|
||||
@ -292,8 +290,6 @@ typedef void (MDB_rel_func)(MDB_val *item, void *oldptr, void *newptr, void *rel
|
||||
/** @} */
|
||||
|
||||
/** @defgroup mdb_dbi_open Database Flags
|
||||
*
|
||||
* Values do not overlap Environment Flags.
|
||||
* @{
|
||||
*/
|
||||
/** use reverse string keys */
|
||||
@ -797,15 +793,47 @@ int mdb_env_get_maxreaders(MDB_env *env, unsigned int *readers);
|
||||
*/
|
||||
int mdb_env_set_maxdbs(MDB_env *env, MDB_dbi dbs);
|
||||
|
||||
/** @brief Get the maximum size of a key for the environment.
|
||||
/** @brief Get the maximum size of keys and #MDB_DUPSORT data we can write.
|
||||
*
|
||||
* This is the compile-time constant #MDB_MAXKEYSIZE, default 511.
|
||||
* Depends on the compile-time constant #MDB_MAXKEYSIZE. Default 511.
|
||||
* See @ref MDB_val.
|
||||
* @param[in] env An environment handle returned by #mdb_env_create()
|
||||
* @return The maximum size of a key
|
||||
* @return The maximum size of a key we can write
|
||||
*/
|
||||
int mdb_env_get_maxkeysize(MDB_env *env);
|
||||
|
||||
/** @brief Set application information associated with the #MDB_env.
|
||||
*
|
||||
* @param[in] env An environment handle returned by #mdb_env_create()
|
||||
* @param[in] ctx An arbitrary pointer for whatever the application needs.
|
||||
* @return A non-zero error value on failure and 0 on success.
|
||||
*/
|
||||
int mdb_env_set_userctx(MDB_env *env, void *ctx);
|
||||
|
||||
/** @brief Get the application information associated with the #MDB_env.
|
||||
*
|
||||
* @param[in] env An environment handle returned by #mdb_env_create()
|
||||
* @return The pointer set by #mdb_env_set_userctx().
|
||||
*/
|
||||
void *mdb_env_get_userctx(MDB_env *env);
|
||||
|
||||
/** @brief A callback function for most MDB assert() failures,
|
||||
* called before printing the message and aborting.
|
||||
*
|
||||
* @param[in] env An environment handle returned by #mdb_env_create().
|
||||
* @param[in] msg The assertion message, not including newline.
|
||||
*/
|
||||
typedef void MDB_assert_func(MDB_env *env, const char *msg);
|
||||
|
||||
/** Set or reset the assert() callback of the environment.
|
||||
* Disabled if liblmdb is buillt with NDEBUG.
|
||||
* @note This hack should become obsolete as lmdb's error handling matures.
|
||||
* @param[in] env An environment handle returned by #mdb_env_create().
|
||||
* @parem[in] func An #MDB_assert_func function, or 0.
|
||||
* @return A non-zero error value on failure and 0 on success.
|
||||
*/
|
||||
int mdb_env_set_assert(MDB_env *env, MDB_assert_func *func);
|
||||
|
||||
/** @brief Create a transaction for use with the environment.
|
||||
*
|
||||
* The transaction handle may be discarded using #mdb_txn_abort() or #mdb_txn_commit().
|
||||
@ -1409,7 +1437,7 @@ int mdb_dcmp(MDB_txn *txn, MDB_dbi dbi, const MDB_val *a, const MDB_val *b);
|
||||
*
|
||||
* @param[in] msg The string to be printed.
|
||||
* @param[in] ctx An arbitrary context pointer for the callback.
|
||||
* @return < 0 on failure, 0 on success.
|
||||
* @return < 0 on failure, >= 0 on success.
|
||||
*/
|
||||
typedef int (MDB_msg_func)(const char *msg, void *ctx);
|
||||
|
||||
@ -1418,7 +1446,7 @@ typedef int (MDB_msg_func)(const char *msg, void *ctx);
|
||||
* @param[in] env An environment handle returned by #mdb_env_create()
|
||||
* @param[in] func A #MDB_msg_func function
|
||||
* @param[in] ctx Anything the message function needs
|
||||
* @return < 0 on failure, 0 on success.
|
||||
* @return < 0 on failure, >= 0 on success.
|
||||
*/
|
||||
int mdb_reader_list(MDB_env *env, MDB_msg_func *func, void *ctx);
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -5,7 +5,11 @@
|
||||
mdb_copy \- LMDB environment copy tool
|
||||
.SH SYNOPSIS
|
||||
.B mdb_copy
|
||||
.I srcpath\ [dstpath]
|
||||
[\c
|
||||
.BR \-n ]
|
||||
.B srcpath
|
||||
[\c
|
||||
.BR dstpath ]
|
||||
.SH DESCRIPTION
|
||||
The
|
||||
.B mdb_copy
|
||||
@ -19,6 +23,10 @@ is specified it must be the path of an empty directory
|
||||
for storing the backup. Otherwise, the backup will be
|
||||
written to stdout.
|
||||
|
||||
.SH OPTIONS
|
||||
.BR \-n
|
||||
Open LDMB environment(s) which do not use subdirectories.
|
||||
|
||||
.SH DIAGNOSTICS
|
||||
Exit status is zero if no errors occur.
|
||||
Errors result in a non-zero exit status and
|
||||
|
@ -31,10 +31,18 @@ int main(int argc,char * argv[])
|
||||
{
|
||||
int rc;
|
||||
MDB_env *env;
|
||||
char *envname = argv[1];
|
||||
const char *progname = argv[0], *act;
|
||||
unsigned flags = MDB_RDONLY;
|
||||
|
||||
for (; argc > 1 && argv[1][0] == '-'; argc--, argv++) {
|
||||
if (argv[1][1] == 'n' && argv[1][2] == '\0')
|
||||
flags |= MDB_NOSUBDIR;
|
||||
else
|
||||
argc = 0;
|
||||
}
|
||||
|
||||
if (argc<2 || argc>3) {
|
||||
fprintf(stderr, "usage: %s srcpath [dstpath]\n", argv[0]);
|
||||
fprintf(stderr, "usage: %s [-n] srcpath [dstpath]\n", progname);
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
@ -47,19 +55,21 @@ int main(int argc,char * argv[])
|
||||
signal(SIGINT, sighandle);
|
||||
signal(SIGTERM, sighandle);
|
||||
|
||||
act = "opening environment";
|
||||
rc = mdb_env_create(&env);
|
||||
|
||||
rc = mdb_env_open(env, envname, MDB_RDONLY, 0);
|
||||
if (rc) {
|
||||
printf("mdb_env_open failed, error %d %s\n", rc, mdb_strerror(rc));
|
||||
} else {
|
||||
if (rc == MDB_SUCCESS) {
|
||||
rc = mdb_env_open(env, argv[1], flags, 0);
|
||||
}
|
||||
if (rc == MDB_SUCCESS) {
|
||||
act = "copying";
|
||||
if (argc == 2)
|
||||
rc = mdb_env_copyfd(env, MDB_STDOUT);
|
||||
else
|
||||
rc = mdb_env_copy(env, argv[2]);
|
||||
if (rc)
|
||||
printf("mdb_env_copy failed, error %d %s\n", rc, mdb_strerror(rc));
|
||||
}
|
||||
if (rc)
|
||||
fprintf(stderr, "%s: %s failed, error %d (%s)\n",
|
||||
progname, act, rc, mdb_strerror(rc));
|
||||
mdb_env_close(env);
|
||||
|
||||
return rc ? EXIT_FAILURE : EXIT_SUCCESS;
|
||||
|
@ -20,7 +20,6 @@
|
||||
#include <stdlib.h>
|
||||
#include <errno.h>
|
||||
#include <sys/types.h>
|
||||
#include <assert.h>
|
||||
#include "midl.h"
|
||||
|
||||
/** @defgroup internal MDB Internals
|
||||
@ -150,7 +149,7 @@ int mdb_midl_need( MDB_IDL *idp, unsigned num )
|
||||
num = (num + num/4 + (256 + 2)) & -256;
|
||||
if (!(ids = realloc(ids-1, num * sizeof(MDB_ID))))
|
||||
return ENOMEM;
|
||||
*ids++ = num -= 2;
|
||||
*ids++ = num - 2;
|
||||
*idp = ids;
|
||||
}
|
||||
return 0;
|
||||
@ -306,7 +305,6 @@ int mdb_mid2l_insert( MDB_ID2L ids, MDB_ID2 *id )
|
||||
unsigned x, i;
|
||||
|
||||
x = mdb_mid2l_search( ids, id->mid );
|
||||
assert( x > 0 );
|
||||
|
||||
if( x < 1 ) {
|
||||
/* internal error */
|
||||
|
Loading…
Reference in New Issue
Block a user