mirror of
https://github.com/isar/libmdbx.git
synced 2025-01-02 00:14:14 +08:00
mdbx: add mdbx_dbi_flags_ex().
This commit is contained in:
parent
3ca64535b6
commit
6f53dd0719
6
mdbx.h
6
mdbx.h
@ -1104,8 +1104,14 @@ LIBMDBX_API int mdbx_dbi_stat(MDBX_txn *txn, MDBX_dbi dbi, MDBX_stat *stat,
|
||||
* [in] txn A transaction handle returned by mdbx_txn_begin()
|
||||
* [in] dbi A database handle returned by mdbx_dbi_open()
|
||||
* [out] flags Address where the flags will be returned.
|
||||
* [out] state Address where the state will be returned.
|
||||
*
|
||||
* Returns A non-zero error value on failure and 0 on success. */
|
||||
#define MDBX_TBL_DIRTY 0x01 /* DB was written in this txn */
|
||||
#define MDBX_TBL_STALE 0x02 /* Named-DB record is older than txnID */
|
||||
#define MDBX_TBL_NEW 0x04 /* Named-DB handle opened in this txn */
|
||||
LIBMDBX_API int mdbx_dbi_flags_ex(MDBX_txn *txn, MDBX_dbi dbi, unsigned *flags,
|
||||
unsigned *state);
|
||||
LIBMDBX_API int mdbx_dbi_flags(MDBX_txn *txn, MDBX_dbi dbi, unsigned *flags);
|
||||
|
||||
/* Close a database handle. Normally unnecessary.
|
||||
|
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.
|
||||
|
Loading…
x
Reference in New Issue
Block a user