mirror of
https://github.com/isar/libmdbx.git
synced 2025-08-23 21:14:28 +08:00
mdbx: add mdbx_dbi_flags_ex().
This commit is contained in:
12
src/bits.h
12
src/bits.h
@@ -488,12 +488,12 @@ struct MDBX_txn {
|
||||
unsigned *mt_dbiseqs;
|
||||
|
||||
/* Transaction DB Flags */
|
||||
#define DB_DIRTY 0x01 /* DB was written in this txn */
|
||||
#define DB_STALE 0x02 /* Named-DB record is older than txnID */
|
||||
#define DB_NEW 0x04 /* Named-DB handle opened in this txn */
|
||||
#define DB_VALID 0x08 /* DB handle is valid, see also MDBX_VALID */
|
||||
#define DB_USRVALID 0x10 /* As DB_VALID, but not set for FREE_DBI */
|
||||
#define DB_DUPDATA 0x20 /* DB is MDBX_DUPSORT data */
|
||||
#define DB_DIRTY MDBX_TBL_DIRTY /* DB was written in this txn */
|
||||
#define DB_STALE MDBX_TBL_STALE /* Named-DB record is older than txnID */
|
||||
#define DB_NEW MDBX_TBL_NEW /* Named-DB handle opened in this txn */
|
||||
#define DB_VALID 0x08 /* DB handle is valid, see also MDBX_VALID */
|
||||
#define DB_USRVALID 0x10 /* As DB_VALID, but not set for FREE_DBI */
|
||||
#define DB_DUPDATA 0x20 /* DB is MDBX_DUPSORT data */
|
||||
/* In write txns, array of cursors for each DB */
|
||||
MDBX_cursor **mt_cursors;
|
||||
/* Array of flags for each DB */
|
||||
|
12
src/mdbx.c
12
src/mdbx.c
@@ -9470,8 +9470,9 @@ int mdbx_dbi_close(MDBX_env *env, MDBX_dbi dbi) {
|
||||
return rc;
|
||||
}
|
||||
|
||||
int mdbx_dbi_flags(MDBX_txn *txn, MDBX_dbi dbi, unsigned *flags) {
|
||||
if (unlikely(!txn || !flags))
|
||||
int mdbx_dbi_flags_ex(MDBX_txn *txn, MDBX_dbi dbi, unsigned *flags,
|
||||
unsigned *state) {
|
||||
if (unlikely(!txn || !flags || !state))
|
||||
return MDBX_EINVAL;
|
||||
|
||||
if (unlikely(txn->mt_signature != MDBX_MT_SIGNATURE))
|
||||
@@ -9484,9 +9485,16 @@ int mdbx_dbi_flags(MDBX_txn *txn, MDBX_dbi dbi, unsigned *flags) {
|
||||
return MDBX_EINVAL;
|
||||
|
||||
*flags = txn->mt_dbs[dbi].md_flags & PERSISTENT_FLAGS;
|
||||
*state = txn->mt_dbflags[dbi] & (DB_NEW | DB_DIRTY | DB_STALE);
|
||||
|
||||
return MDBX_SUCCESS;
|
||||
}
|
||||
|
||||
int mdbx_dbi_flags(MDBX_txn *txn, MDBX_dbi dbi, unsigned *flags) {
|
||||
unsigned state;
|
||||
return mdbx_dbi_flags_ex(txn, dbi, flags, &state);
|
||||
}
|
||||
|
||||
/* Add all the DB's pages to the free list.
|
||||
* [in] mc Cursor on the DB to free.
|
||||
* [in] subs non-Zero to check for sub-DBs in this DB.
|
||||
|
Reference in New Issue
Block a user