mdbx: доработка контроля длины ключа внутри cursor_seek().

Ранее проверка внутри cursor_seek() не позволяла искать ключи длиннее чем можно поместить в таблицу,
что при поиске/позиционировании не является ошибкой для ключей переменного размера.
This commit is contained in:
Леонид Юрьев (Leonid Yuriev) 2024-12-27 00:32:09 +03:00
parent 98b28213ce
commit c8c541649c

View File

@ -1701,7 +1701,9 @@ __hot csr_t cursor_seek(MDBX_cursor *mc, MDBX_val *key, MDBX_val *data, MDBX_cur
csr_t ret; csr_t ret;
ret.exact = false; ret.exact = false;
if (unlikely(key->iov_len < mc->clc->k.lmin || key->iov_len > mc->clc->k.lmax)) { if (unlikely(key->iov_len < mc->clc->k.lmin ||
(key->iov_len > mc->clc->k.lmax &&
(mc->clc->k.lmin == mc->clc->k.lmax || MDBX_DEBUG || MDBX_FORCE_ASSERTIONS)))) {
cASSERT(mc, !"Invalid key-size"); cASSERT(mc, !"Invalid key-size");
ret.err = MDBX_BAD_VALSIZE; ret.err = MDBX_BAD_VALSIZE;
return ret; return ret;