mdbx: fix new API function after the merge.

Change-Id: Ic929444ceb137ccaa2ab4fe82b4f93a3cb5a92aa
This commit is contained in:
Leo Yuriev 2017-07-04 10:46:46 +03:00
parent b34e92d308
commit aec35300c4
2 changed files with 24 additions and 24 deletions

24
mdbx.h
View File

@ -1633,7 +1633,7 @@ LIBMDBX_API int mdbx_dbi_sequence(MDBX_txn *txn, MDBX_dbi dbi, uint64_t *result,
/*----------------------------------------------------------------------------*/
/* attribute support functions for Nexenta */
typedef uint64_t mdbx_attr_t;
typedef uint_fast64_t mdbx_attr_t;
/* Store by cursor with attribute.
*
@ -1668,8 +1668,9 @@ typedef uint64_t mdbx_attr_t;
* - MDBX_TXN_FULL - the transaction has too many dirty pages.
* - MDBX_EACCES - an attempt was made to write in a read-only transaction.
* - MDBX_EINVAL - an invalid parameter was specified. */
int mdbx_cursor_put_attr(MDBX_cursor *cursor, MDBX_val *key, MDBX_val *data,
mdbx_attr_t attr, unsigned flags);
LIBMDBX_API int mdbx_cursor_put_attr(MDBX_cursor *cursor, MDBX_val *key,
MDBX_val *data, mdbx_attr_t attr,
unsigned flags);
/* Store items and attributes into a database.
*
@ -1713,8 +1714,8 @@ int mdbx_cursor_put_attr(MDBX_cursor *cursor, MDBX_val *key, MDBX_val *data,
* - MDBX_TXN_FULL - the transaction has too many dirty pages.
* - MDBX_EACCES - an attempt was made to write in a read-only transaction.
* - MDBX_EINVAL - an invalid parameter was specified. */
int mdbx_put_attr(MDBX_txn *txn, MDBX_dbi dbi, MDBX_val *key, MDBX_val *data,
mdbx_attr_t attr, unsigned flags);
LIBMDBX_API int mdbx_put_attr(MDBX_txn *txn, MDBX_dbi dbi, MDBX_val *key,
MDBX_val *data, mdbx_attr_t attr, unsigned flags);
/* Set items attribute from a database.
*
@ -1733,8 +1734,8 @@ int mdbx_put_attr(MDBX_txn *txn, MDBX_dbi dbi, MDBX_val *key, MDBX_val *data,
* possible errors are:
* - MDBX_NOTFOUND - the key-value pair was not in the database.
* - MDBX_EINVAL - an invalid parameter was specified. */
int mdbx_set_attr(MDBX_txn *txn, MDBX_dbi dbi, MDBX_val *key, MDBX_val *data,
mdbx_attr_t attr);
LIBMDBX_API int mdbx_set_attr(MDBX_txn *txn, MDBX_dbi dbi, MDBX_val *key,
MDBX_val *data, mdbx_attr_t attr);
/* Get items attribute from a database cursor.
*
@ -1753,8 +1754,9 @@ int mdbx_set_attr(MDBX_txn *txn, MDBX_dbi dbi, MDBX_val *key, MDBX_val *data,
* possible errors are:
* - MDBX_NOTFOUND - no matching key found.
* - MDBX_EINVAL - an invalid parameter was specified. */
int mdbx_cursor_get_attr(MDBX_cursor *mc, MDBX_val *key, MDBX_val *data,
mdbx_attr_t *attrptr, MDBX_cursor_op op);
LIBMDBX_API int mdbx_cursor_get_attr(MDBX_cursor *mc, MDBX_val *key,
MDBX_val *data, mdbx_attr_t *attrptr,
MDBX_cursor_op op);
/* Get items attribute from a database.
*
@ -1782,8 +1784,8 @@ int mdbx_cursor_get_attr(MDBX_cursor *mc, MDBX_val *key, MDBX_val *data,
* possible errors are:
* - MDBX_NOTFOUND - the key was not in the database.
* - MDBX_EINVAL - an invalid parameter was specified. */
int mdbx_get_attr(MDBX_txn *txn, MDBX_dbi dbi, MDBX_val *key, MDBX_val *data,
mdbx_attr_t *attrptr);
LIBMDBX_API int mdbx_get_attr(MDBX_txn *txn, MDBX_dbi dbi, MDBX_val *key,
MDBX_val *data, mdbx_attr_t *attrptr);
#ifdef __cplusplus
}

View File

@ -11151,9 +11151,9 @@ int mdbx_get_attr(MDBX_txn *txn, MDBX_dbi dbi, MDBX_val *key, MDBX_val *data,
int mdbx_put_attr(MDBX_txn *txn, MDBX_dbi dbi, MDBX_val *key, MDBX_val *data,
mdbx_attr_t attr, unsigned flags) {
MDBX_val reserve = {.iov_base = NULL,
.iov_len =
(data ? data->iov_len : 0) + sizeof(mdbx_attr_t)};
MDBX_val reserve;
reserve.iov_base = NULL;
reserve.iov_len = (data ? data->iov_len : 0) + sizeof(mdbx_attr_t);
int rc = mdbx_put(txn, dbi, key, &reserve, flags | MDBX_RESERVE);
if (unlikely(rc != MDBX_SUCCESS))
@ -11164,9 +11164,9 @@ int mdbx_put_attr(MDBX_txn *txn, MDBX_dbi dbi, MDBX_val *key, MDBX_val *data,
int mdbx_cursor_put_attr(MDBX_cursor *cursor, MDBX_val *key, MDBX_val *data,
mdbx_attr_t attr, unsigned flags) {
MDBX_val reserve = {.iov_base = NULL,
.iov_len =
(data ? data->iov_len : 0) + sizeof(mdbx_attr_t)};
MDBX_val reserve;
reserve.iov_base = NULL;
reserve.iov_len = (data ? data->iov_len : 0) + sizeof(mdbx_attr_t);
int rc = mdbx_cursor_put(cursor, key, &reserve, flags | MDBX_RESERVE);
if (unlikely(rc != MDBX_SUCCESS))
@ -11177,12 +11177,6 @@ int mdbx_cursor_put_attr(MDBX_cursor *cursor, MDBX_val *key, MDBX_val *data,
int mdbx_set_attr(MDBX_txn *txn, MDBX_dbi dbi, MDBX_val *key, MDBX_val *data,
mdbx_attr_t attr) {
MDBX_cursor mc;
MDBX_xcursor mx;
MDBX_val old_data;
mdbx_attr_t old_attr;
int rc;
if (unlikely(!key || !txn))
return EINVAL;
@ -11195,8 +11189,11 @@ int mdbx_set_attr(MDBX_txn *txn, MDBX_dbi dbi, MDBX_val *key, MDBX_val *data,
if (unlikely(txn->mt_flags & (MDBX_TXN_RDONLY | MDBX_TXN_BLOCKED)))
return (txn->mt_flags & MDBX_TXN_RDONLY) ? EACCES : MDBX_BAD_TXN;
MDBX_cursor mc;
MDBX_xcursor mx;
MDBX_val old_data;
mdbx_cursor_init(&mc, txn, dbi, &mx);
rc = mdbx_cursor_set(&mc, key, &old_data, MDBX_SET, NULL);
int rc = mdbx_cursor_set(&mc, key, &old_data, MDBX_SET, NULL);
if (unlikely(rc != MDBX_SUCCESS)) {
if (rc == MDBX_NOTFOUND && data) {
mc.mc_next = txn->mt_cursors[dbi];
@ -11207,6 +11204,7 @@ int mdbx_set_attr(MDBX_txn *txn, MDBX_dbi dbi, MDBX_val *key, MDBX_val *data,
return rc;
}
mdbx_attr_t old_attr;
rc = mdbx_attr_peek(&old_data, &old_attr);
if (unlikely(rc != MDBX_SUCCESS))
return rc;