[Date Prev][Date Next]
[Chronological]
[Thread]
[Top]
Re: (ITS#7598) Named MDB database incompatible with some flags
> mdb_dbi_open(named database) and thus "mdb_stat -a"
> crash if the main database has the MDB_DUPSORT flag:
> It hits assert(mx != NULL) in mdb_cursor_init().
>
> Fixing to reject mdb_dbi_open(named database) in this
> case, (...)
But then mdb_stat crashes anyway when calling:
mdb_cursor_get(cursor, &key, NULL, MDB_NEXT)
if a key has several data values. mdb_cursor_get(,,,MDB_NEXT)
expects a non-NULL data argument for an MDB_DUPSORT database.
It works with MDB_NEXT_NODUP. I think we can drop the doc
which says MDB_<NEXT,PREV>_NODUP is only for DUPSORT databases.
mdb.c will need no changes that I can see.
Or, it works to pass a pointer to an otherwise unused data.
But that leaves mdb_stat doing more work than it needs.
Another mdb_stat nitpick: It exits with failure after
mdb_cursor_get returns an expected MDB_NOTFOUND. Fixing.
--
Hallvard