X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=libraries%2Flibmdb%2Fmdb.c;h=53e5dde8f86359780343a171edf88f21d2339c53;hb=2f7ddb4103a8b4161b47353d160ea75028c52936;hp=6d90db24b5e60d6a6bc3fc1724feecc8657ca4d0;hpb=2e776bd36eae2369325f32c58b6beaaa5a0aff24;p=openldap diff --git a/libraries/libmdb/mdb.c b/libraries/libmdb/mdb.c index 6d90db24b5..53e5dde8f8 100644 --- a/libraries/libmdb/mdb.c +++ b/libraries/libmdb/mdb.c @@ -1029,7 +1029,8 @@ mdbenv_write_meta(MDB_txn *txn) assert(txn != NULL); assert(txn->mt_env != NULL); - DPRINTF("writing meta page for root page %lu", txn->mt_dbs[MAIN_DBI].md_root); + DPRINTF("writing meta page %d for root page %lu", + !F_ISSET(txn->mt_flags, MDB_TXN_METOGGLE), txn->mt_dbs[MAIN_DBI].md_root); env = txn->mt_env; @@ -1125,7 +1126,7 @@ mdbenv_get_maxreaders(MDB_env *env, int *readers) return MDB_SUCCESS; } -int +static int mdbenv_open2(MDB_env *env, unsigned int flags) { int i, newenv = 0; @@ -2345,6 +2346,23 @@ mdb_cursor_open(MDB_txn *txn, MDB_dbi dbi, MDB_cursor **ret) return MDB_SUCCESS; } +/* Return the count of duplicate data items for the current key */ +int +mdb_cursor_count(MDB_cursor *mc, unsigned long *countp) +{ + if (mc == NULL || countp == NULL) + return EINVAL; + + if (!(mc->mc_txn->mt_dbs[mc->mc_dbi].md_flags & MDB_DUPSORT)) + return EINVAL; + + if (!mc->mc_xcursor->mx_cursor.mc_initialized) + return EINVAL; + + *countp = mc->mc_xcursor->mx_txn.mt_dbs[mc->mc_xcursor->mx_cursor.mc_dbi].md_entries; + return MDB_SUCCESS; +} + void mdb_cursor_close(MDB_cursor *cursor) {