From bff6aa460ac4baa9d7d2bae8fe931e986f845c01 Mon Sep 17 00:00:00 2001 From: Leonid Yuriev Date: Fri, 10 Aug 2018 18:39:19 +0300 Subject: [PATCH] mdbx: backport - fix MDBX_EKEYMISMATCH while update multi-value with MDBX_CURRENT. Change-Id: I3095620a94f694fb2c29b9c4faab9ea02b9bd7b7 --- src/mdbx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mdbx.c b/src/mdbx.c index 9a70a641..0bb416b8 100644 --- a/src/mdbx.c +++ b/src/mdbx.c @@ -7460,7 +7460,7 @@ int mdbx_cursor_put(MDBX_cursor *mc, MDBX_val *key, MDBX_val *data, DVAL((flags & MDBX_RESERVE) ? nullptr : data), data->iov_len); int dupdata_flag = 0; - if (flags & MDBX_CURRENT) { + if ((flags & MDBX_CURRENT) != 0 && (mc->mc_flags & C_SUB) == 0) { /* Опция MDBX_CURRENT означает, что запрошено обновление текущей записи, * на которой сейчас стоит курсор. Проверяем что переданный ключ совпадает * со значением в текущей позиции курсора.