mirror of
https://git.openldap.org/openldap/openldap.git
synced 2025-12-20 22:59:34 -05:00
If put(NOOVERWRITE) exists, return existing data
This commit is contained in:
parent
a7edb95e64
commit
acdc248f57
2 changed files with 6 additions and 3 deletions
|
|
@ -3283,9 +3283,11 @@ mdb_cursor_put(MDB_cursor *mc, MDB_val *key, MDB_val *data,
|
|||
goto top;
|
||||
} else {
|
||||
int exact = 0;
|
||||
rc = mdb_cursor_set(mc, key, NULL, MDB_SET, &exact);
|
||||
MDB_val d2;
|
||||
rc = mdb_cursor_set(mc, key, &d2, MDB_SET, &exact);
|
||||
if (flags == MDB_NOOVERWRITE && rc == 0) {
|
||||
DPRINTF("duplicate key [%s]", DKEY(key));
|
||||
*data = d2;
|
||||
return MDB_KEYEXIST;
|
||||
}
|
||||
if (rc && rc != MDB_NOTFOUND)
|
||||
|
|
|
|||
|
|
@ -683,7 +683,7 @@ int mdb_get(MDB_txn *txn, MDB_dbi dbi, MDB_val *key, MDB_val *data);
|
|||
* @param[in] txn A transaction handle returned by #mdb_txn_begin()
|
||||
* @param[in] dbi A database handle returned by #mdb_open()
|
||||
* @param[in] key The key to store in the database
|
||||
* @param[in] data The data to store
|
||||
* @param[in,out] data The data to store
|
||||
* @param[in] flags Special options for this operation. This parameter
|
||||
* must be set to 0 or by bitwise OR'ing together one or more of the
|
||||
* values described here.
|
||||
|
|
@ -696,7 +696,8 @@ int mdb_get(MDB_txn *txn, MDB_dbi dbi, MDB_val *key, MDB_val *data);
|
|||
* <li>#MDB_NOOVERWRITE - enter the new key/data pair only if the key
|
||||
* does not already appear in the database. The function will return
|
||||
* #MDB_KEYEXIST if the key already appears in the database, even if
|
||||
* the database supports duplicates (#MDB_DUPSORT).
|
||||
* the database supports duplicates (#MDB_DUPSORT). The \b data
|
||||
* parameter will be set to point to the existing item.
|
||||
* </ul>
|
||||
* @return A non-zero error value on failure and 0 on success. Some possible
|
||||
* errors are:
|
||||
|
|
|
|||
Loading…
Reference in a new issue