From 02c7cf2a9c1004b3d3dae73cb006c9d7ed008665 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9B=D0=B5=D0=BE=D0=BD=D0=B8=D0=B4=20=D0=AE=D1=80=D1=8C?= =?UTF-8?q?=D0=B5=D0=B2=20=28Leonid=20Yuriev=29?= Date: Tue, 17 Oct 2023 18:16:29 +0300 Subject: [PATCH 1/6] =?UTF-8?q?mdbx:=20=D0=B2=D1=8B=D0=BF=D1=83=D1=81?= =?UTF-8?q?=D0=BA=200.12.8=20"=D0=92=D0=BB=D0=B0=D0=B4=D0=B8=D0=BC=D0=B8?= =?UTF-8?q?=D1=80=20=D0=A3=D1=82=D0=BA=D0=B8=D0=BD"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Стабилизирующий выпуск с исправлением обнаруженных ошибок и устранением недочетов, в день 100-летия со дня рождения выдающегося советского и российского ученого и конструктора [Влади́мира Фёдоровича У́ткина](https://ru.wikipedia.org/wiki/Уткин,_Владимир_Фёдорович). Исправления и доработки: ------------------------ - Устранение регресса/ошибки в пути обработки `put(MDBX_MULTIPLE)` при пакетном/оптовом помещении в БД множественных значений одного ключа (aka multi-value или dupsort). Проявление проблемы зависит от компилятора и опций оптимизации/кодогенерации, но с большой вероятностью возвращется ошибка `MDBX_BAD_VALSIZE` (`-30781`), а в отладочных сборках срабатывает проверка `cASSERT(mc, !"Invalid key-size")`. Сценарии приводящие к другим проявлениям на данный момент не известны. - Реализована перезапись в `mdbx_put(MDBX_CURRENT)` всех текущих мульти-значений ключа при отсутствии флага `MDBX_NOOVERWRITE`. Ранее в такой ситуации возвращалась ошибка `MDBX_EMULTIVAL`. В текущем понимании новое поведение более удобно и не создаёт проблем совместимости с ранее написанным кодом. - Добавлена возможность использовать `mdbx_cursor_get(MDBX_GET_MULTIPLE)` без предварительной установки курсора, совмещая операцию пакетного получения данных с позиционированием курсора на передаваемый ключ. - Микрооптимизация и рефакторинг `cursor_put_nochecklen()` в продолжение исправления регресса/ошибки в пути обработки `put(MDBX_MULTIPLE)`. - Уточнение формулировок в описании API, в том числе пояснений о `SIGSEGV` и недопустимости прямого изменения данных. Более подробная информация в [ChangeLog](https://libmdbx.dqdkfa.ru/md__change_log.html). git diff' stat: 24 commits, 18 files changed, 624 insertions(+), 94 deletions(-) Signed-off-by: Леонид Юрьев (Leonid Yuriev) --- ChangeLog.md | 7 ++++--- src/man1/mdbx_chk.1 | 2 +- src/man1/mdbx_copy.1 | 2 +- src/man1/mdbx_drop.1 | 2 +- src/man1/mdbx_dump.1 | 2 +- src/man1/mdbx_load.1 | 2 +- src/man1/mdbx_stat.1 | 2 +- 7 files changed, 10 insertions(+), 9 deletions(-) diff --git a/ChangeLog.md b/ChangeLog.md index 52632623..12c03a24 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -5,13 +5,14 @@ English version [by Google](https://gitflic-ru.translate.goog/project/erthink/li and [by Yandex](https://translated.turbopages.org/proxy_u/ru-en.en/https/gitflic.ru/project/erthink/libmdbx/blob?file=ChangeLog.md). -## v0.12.8 "Владимир Уткин" (запланировано на 2023-10-17) +## v0.12.8 "Владимир Уткин" от 2023-10-17 Стабилизирующий выпуск с исправлением обнаруженных ошибок и устранением недочетов, в день 100-летия со дня рождения выдающегося советского и российского ученого и конструктора [Влади́мира Фёдоровича У́ткина](https://ru.wikipedia.org/wiki/Уткин,_Владимир_Фёдорович). ``` -git diff' stat: 22 commits, 570 insertions(+), 58 deletions(-) +git diff' stat: 24 commits, 18 files changed, 624 insertions(+), 94 deletions(-) +Signed-off-by: Леонид Юрьев (Leonid Yuriev) ``` Благодарности: @@ -34,7 +35,7 @@ git diff' stat: 22 commits, 570 insertions(+), 58 deletions(-) - Добавлена возможность использовать `mdbx_cursor_get(MDBX_GET_MULTIPLE)` без предварительной установки курсора, совмещая операцию пакетного получения данных с позиционированием курсора на передаваемый ключ. - - Микрооптимизация и рефакториг `cursor_put_nochecklen()` в продолжение исправления + - Микрооптимизация и рефакторинг `cursor_put_nochecklen()` в продолжение исправления регресса/ошибки в пути обработки `put(MDBX_MULTIPLE)`. - Уточнение формулировок в описании API, в том числе пояснений о `SIGSEGV` diff --git a/src/man1/mdbx_chk.1 b/src/man1/mdbx_chk.1 index f09638e8..aa4e9868 100644 --- a/src/man1/mdbx_chk.1 +++ b/src/man1/mdbx_chk.1 @@ -1,6 +1,6 @@ .\" Copyright 2015-2023 Leonid Yuriev . .\" Copying restrictions apply. See COPYRIGHT/LICENSE. -.TH MDBX_CHK 1 "2023-06-16" "MDBX 0.12.7" +.TH MDBX_CHK 1 "2023-10-17" "MDBX 0.12.8" .SH NAME mdbx_chk \- MDBX checking tool .SH SYNOPSIS diff --git a/src/man1/mdbx_copy.1 b/src/man1/mdbx_copy.1 index 933624e6..4e67a5b8 100644 --- a/src/man1/mdbx_copy.1 +++ b/src/man1/mdbx_copy.1 @@ -2,7 +2,7 @@ .\" Copyright 2015,2016 Peter-Service R&D LLC . .\" Copyright 2012-2015 Howard Chu, Symas Corp. All Rights Reserved. .\" Copying restrictions apply. See COPYRIGHT/LICENSE. -.TH MDBX_COPY 1 "2023-06-16" "MDBX 0.12.7" +.TH MDBX_COPY 1 "2023-10-17" "MDBX 0.12.8" .SH NAME mdbx_copy \- MDBX environment copy tool .SH SYNOPSIS diff --git a/src/man1/mdbx_drop.1 b/src/man1/mdbx_drop.1 index 8c58d808..425eecd2 100644 --- a/src/man1/mdbx_drop.1 +++ b/src/man1/mdbx_drop.1 @@ -1,7 +1,7 @@ .\" Copyright 2021-2023 Leonid Yuriev . .\" Copyright 2014-2021 Howard Chu, Symas Corp. All Rights Reserved. .\" Copying restrictions apply. See COPYRIGHT/LICENSE. -.TH MDBX_DROP 1 "2023-06-16" "MDBX 0.12.7" +.TH MDBX_DROP 1 "2023-10-17" "MDBX 0.12.8" .SH NAME mdbx_drop \- MDBX database delete tool .SH SYNOPSIS diff --git a/src/man1/mdbx_dump.1 b/src/man1/mdbx_dump.1 index 90bbe4fc..d236b93c 100644 --- a/src/man1/mdbx_dump.1 +++ b/src/man1/mdbx_dump.1 @@ -2,7 +2,7 @@ .\" Copyright 2015,2016 Peter-Service R&D LLC . .\" Copyright 2014-2015 Howard Chu, Symas Corp. All Rights Reserved. .\" Copying restrictions apply. See COPYRIGHT/LICENSE. -.TH MDBX_DUMP 1 "2023-06-16" "MDBX 0.12.7" +.TH MDBX_DUMP 1 "2023-10-17" "MDBX 0.12.8" .SH NAME mdbx_dump \- MDBX environment export tool .SH SYNOPSIS diff --git a/src/man1/mdbx_load.1 b/src/man1/mdbx_load.1 index 54deb49d..ae8e7596 100644 --- a/src/man1/mdbx_load.1 +++ b/src/man1/mdbx_load.1 @@ -2,7 +2,7 @@ .\" Copyright 2015,2016 Peter-Service R&D LLC . .\" Copyright 2014-2015 Howard Chu, Symas Corp. All Rights Reserved. .\" Copying restrictions apply. See COPYRIGHT/LICENSE. -.TH MDBX_LOAD 1 "2023-06-16" "MDBX 0.12.7" +.TH MDBX_LOAD 1 "2023-10-17" "MDBX 0.12.8" .SH NAME mdbx_load \- MDBX environment import tool .SH SYNOPSIS diff --git a/src/man1/mdbx_stat.1 b/src/man1/mdbx_stat.1 index dacf5596..c330d2e6 100644 --- a/src/man1/mdbx_stat.1 +++ b/src/man1/mdbx_stat.1 @@ -2,7 +2,7 @@ .\" Copyright 2015,2016 Peter-Service R&D LLC . .\" Copyright 2012-2015 Howard Chu, Symas Corp. All Rights Reserved. .\" Copying restrictions apply. See COPYRIGHT/LICENSE. -.TH MDBX_STAT 1 "2023-06-16" "MDBX 0.12.7" +.TH MDBX_STAT 1 "2023-10-17" "MDBX 0.12.8" .SH NAME mdbx_stat \- MDBX environment status tool .SH SYNOPSIS From e2ed55853dbb0c9cba2803fa72c2d6046f322ac7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9B=D0=B5=D0=BE=D0=BD=D0=B8=D0=B4=20=D0=AE=D1=80=D1=8C?= =?UTF-8?q?=D0=B5=D0=B2=20=28Leonid=20Yuriev=29?= Date: Mon, 23 Oct 2023 16:17:05 +0300 Subject: [PATCH 2/6] =?UTF-8?q?mdbx:=20=D1=83=D0=B4=D0=B0=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20=D1=83=D1=81=D1=82=D0=B0=D1=80=D0=B5=D0=B2?= =?UTF-8?q?=D1=88=D0=B8=D1=85=20`mdbx=5Fset=5Fcompare()`=20=D0=B8=20`mdbx?= =?UTF-8?q?=5Fset=5Fdupsort()`.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/core.c | 24 ------------------------ 1 file changed, 24 deletions(-) diff --git a/src/core.c b/src/core.c index cb638d58..899b65af 100644 --- a/src/core.c +++ b/src/core.c @@ -23066,30 +23066,6 @@ bailout: return rc; } -int mdbx_set_compare(MDBX_txn *txn, MDBX_dbi dbi, MDBX_cmp_func *cmp) { - int rc = check_txn(txn, MDBX_TXN_BLOCKED - MDBX_TXN_ERROR); - if (unlikely(rc != MDBX_SUCCESS)) - return rc; - - if (unlikely(!check_dbi(txn, dbi, DBI_USRVALID))) - return MDBX_BAD_DBI; - - txn->mt_dbxs[dbi].md_cmp = cmp; - return MDBX_SUCCESS; -} - -int mdbx_set_dupsort(MDBX_txn *txn, MDBX_dbi dbi, MDBX_cmp_func *cmp) { - int rc = check_txn(txn, MDBX_TXN_BLOCKED - MDBX_TXN_ERROR); - if (unlikely(rc != MDBX_SUCCESS)) - return rc; - - if (unlikely(!check_dbi(txn, dbi, DBI_USRVALID))) - return MDBX_BAD_DBI; - - txn->mt_dbxs[dbi].md_dcmp = cmp; - return MDBX_SUCCESS; -} - __cold int mdbx_reader_list(const MDBX_env *env, MDBX_reader_list_func *func, void *ctx) { int rc = check_env(env, true); From e58b582639b296592a7719b4ef1e3d7813b00c55 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9B=D0=B5=D0=BE=D0=BD=D0=B8=D0=B4=20=D0=AE=D1=80=D1=8C?= =?UTF-8?q?=D0=B5=D0=B2=20=28Leonid=20Yuriev=29?= Date: Mon, 23 Oct 2023 16:19:31 +0300 Subject: [PATCH 3/6] =?UTF-8?q?mdbx:=20=D0=B8=D1=81=D0=BF=D1=80=D0=B0?= =?UTF-8?q?=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5=20`MDBX=5FLAST=5FADDED=5FE?= =?UTF-8?q?RRCODE`.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mdbx.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mdbx.h b/mdbx.h index f702fc46..ece77eda 100644 --- a/mdbx.h +++ b/mdbx.h @@ -1937,7 +1937,7 @@ enum MDBX_error_t { MDBX_DUPLICATED_CLK = -30413, /* The last of MDBX-added error codes */ - MDBX_LAST_ADDED_ERRCODE = MDBX_TXN_OVERLAPPING, + MDBX_LAST_ADDED_ERRCODE = MDBX_DUPLICATED_CLK, #if defined(_WIN32) || defined(_WIN64) MDBX_ENODATA = ERROR_HANDLE_EOF, From 311a6e5d1045000e4c29212085ac640e0ce70638 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9B=D0=B5=D0=BE=D0=BD=D0=B8=D0=B4=20=D0=AE=D1=80=D1=8C?= =?UTF-8?q?=D0=B5=D0=B2=20=28Leonid=20Yuriev=29?= Date: Mon, 23 Oct 2023 16:27:55 +0300 Subject: [PATCH 4/6] =?UTF-8?q?mdbx++:=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=B7=D0=B0=D0=B1=D1=8B=D1=82?= =?UTF-8?q?=D0=BE=D0=B3=D0=BE=20=D0=B8=D1=81=D0=BA=D0=BB=D1=8E=D1=87=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D1=8F=20`mdbx::duplicated=5Flck=5Ffile`.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mdbx.h++ | 1 + src/mdbx.c++ | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/mdbx.h++ b/mdbx.h++ index 385bf9a2..d4cd7077 100644 --- a/mdbx.h++ +++ b/mdbx.h++ @@ -558,6 +558,7 @@ MDBX_DECLARE_EXCEPTION(something_busy); MDBX_DECLARE_EXCEPTION(thread_mismatch); MDBX_DECLARE_EXCEPTION(transaction_full); MDBX_DECLARE_EXCEPTION(transaction_overlapping); +MDBX_DECLARE_EXCEPTION(duplicated_lck_file); #undef MDBX_DECLARE_EXCEPTION [[noreturn]] LIBMDBX_API void throw_too_small_target_buffer(); diff --git a/src/mdbx.c++ b/src/mdbx.c++ index 9ac0d8d5..9ac6cd71 100644 --- a/src/mdbx.c++ +++ b/src/mdbx.c++ @@ -285,7 +285,7 @@ DEFINE_EXCEPTION(something_busy) DEFINE_EXCEPTION(thread_mismatch) DEFINE_EXCEPTION(transaction_full) DEFINE_EXCEPTION(transaction_overlapping) - +DEFINE_EXCEPTION(duplicated_lck_file) #undef DEFINE_EXCEPTION __cold const char *error::what() const noexcept { @@ -371,6 +371,7 @@ __cold void error::throw_exception() const { CASE_EXCEPTION(thread_mismatch, MDBX_THREAD_MISMATCH); CASE_EXCEPTION(transaction_full, MDBX_TXN_FULL); CASE_EXCEPTION(transaction_overlapping, MDBX_TXN_OVERLAPPING); + CASE_EXCEPTION(duplicated_lck_file, MDBX_DUPLICATED_CLK); #undef CASE_EXCEPTION default: if (is_mdbx_error()) From 753cfd00eb6ab44f717d32d69514dd5d904389f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9B=D0=B5=D0=BE=D0=BD=D0=B8=D0=B4=20=D0=AE=D1=80=D1=8C?= =?UTF-8?q?=D0=B5=D0=B2=20=28Leonid=20Yuriev=29?= Date: Mon, 23 Oct 2023 18:12:00 +0300 Subject: [PATCH 5/6] =?UTF-8?q?mdbx:=20=D0=BE=D0=B1=D0=BD=D0=BE=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BF=D0=B0=D1=82=D1=87=D0=B0?= =?UTF-8?q?=20=D0=B4=D0=BB=D1=8F=20=D1=81=D1=82=D0=B0=D1=80=D1=8B=D1=85=20?= =?UTF-8?q?=D0=B2=D0=B5=D1=80=D1=81=D0=B8=D0=B9=20buildroot.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...libmdbx-new-package-library-database.patch | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/packages/buildroot/0001-package-libmdbx-new-package-library-database.patch b/packages/buildroot/0001-package-libmdbx-new-package-library-database.patch index 9ae4139d..2dfe7ee3 100644 --- a/packages/buildroot/0001-package-libmdbx-new-package-library-database.patch +++ b/packages/buildroot/0001-package-libmdbx-new-package-library-database.patch @@ -1,7 +1,7 @@ -From 790cbdc02c2597650964a564e05fbb5af503adc9 Mon Sep 17 00:00:00 2001 +From 3efdf07a80f750c23de126ac80e78fb0545a1b63 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9B=D0=B5=D0=BE=D0=BD=D0=B8=D0=B4=20=D0=AE=D1=80=D1=8C?= =?UTF-8?q?=D0=B5=D0=B2=20=28Leonid=20Yuriev=29?= -Date: Wed, 19 Apr 2023 13:34:37 +0300 +Date: Mon, 23 Oct 2023 18:07:13 +0300 Subject: [PATCH] package/libmdbx: new package (library/database). MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 @@ -15,8 +15,9 @@ This patch adds libmdbx: in terms of reliability, features and performance. - https://gitflic.ru/project/erthink/libmdbx -The v0.12.5 "Dynamo" is stable release of frontward _libmdbx_ branch with new superior features -on the day of 100 anniversary of USSR' «Dynamo» sports and fitness society. +The v0.12.8 "Vladimir Utkin" is stable release of frontward _libmdbx_ +branch with new superior features on the day of 100 anniversary of the birth +of the outstanding Soviet and Russian scientist and engineer Vladimir Fedorovich Utkin. The complete ChangeLog: https://gitflic.ru/project/erthink/libmdbx/blob?file=ChangeLog.md @@ -111,18 +112,18 @@ index 0000000000..a9a4ac45c5 + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_4 diff --git a/package/libmdbx/libmdbx.hash b/package/libmdbx/libmdbx.hash new file mode 100644 -index 0000000000..7a5b19952e +index 0000000000..82cf28d6a9 --- /dev/null +++ b/package/libmdbx/libmdbx.hash @@ -0,0 +1,5 @@ +# Hashes from: https://libmdbx.dqdkfa.ru/release/SHA256SUMS -+sha256 9c3abaaf9079a9518bb7155734817a2e286fffea46f7cc0825dfbd1cf9174075 libmdbx-amalgamated-0.12.5.tar.xz ++sha256 c78c56c53708bbfc519bf53ebf520d1f09d30ee6427a4bedf713316696e671d0 libmdbx-amalgamated-0.12.8.tar.xz + +# Locally calculated +sha256 310fe25c858a9515fc8c8d7d1f24a67c9496f84a91e0a0e41ea9975b1371e569 LICENSE diff --git a/package/libmdbx/libmdbx.mk b/package/libmdbx/libmdbx.mk new file mode 100644 -index 0000000000..9a196eda60 +index 0000000000..d198fe5b22 --- /dev/null +++ b/package/libmdbx/libmdbx.mk @@ -0,0 +1,42 @@ @@ -132,7 +133,7 @@ index 0000000000..9a196eda60 +# +################################################################################ + -+LIBMDBX_VERSION = 0.12.5 ++LIBMDBX_VERSION = 0.12.8 +LIBMDBX_SOURCE = libmdbx-amalgamated-$(LIBMDBX_VERSION).tar.xz +LIBMDBX_SITE = https://libmdbx.dqdkfa.ru/release +LIBMDBX_SUPPORTS_IN_SOURCE_BUILD = NO @@ -169,5 +170,5 @@ index 0000000000..9a196eda60 + +$(eval $(cmake-package)) -- -2.34.1 +2.42.0 From 080875cd6d133f89f1f69abb304307c27f11aa7f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9B=D0=B5=D0=BE=D0=BD=D0=B8=D0=B4=20=D0=AE=D1=80=D1=8C?= =?UTF-8?q?=D0=B5=D0=B2=20=28Leonid=20Yuriev=29?= Date: Mon, 23 Oct 2023 18:13:35 +0300 Subject: [PATCH 6/6] =?UTF-8?q?mdbx:=20=D0=9E=D0=B1=D0=BD=D0=BE=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5=20ChangeLog.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ChangeLog.md | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/ChangeLog.md b/ChangeLog.md index 12c03a24..5a8f0af6 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -5,6 +5,21 @@ English version [by Google](https://gitflic-ru.translate.goog/project/erthink/li and [by Yandex](https://translated.turbopages.org/proxy_u/ru-en.en/https/gitflic.ru/project/erthink/libmdbx/blob?file=ChangeLog.md). +## v0.12.8 (сопровождение и подготовка к релизу) + +Поддержка стабильной ветки. + +Мелочи: + + - Удаление устаревших `mdbx_set_compare()` и `mdbx_set_dupsort()`. + - Корректировка определения `MDBX_LAST_ADDED_ERRCODE`. + - Добавление в C++ API забытого исключения `mdbx::duplicated_lck_file`. + - Обновление патча для старых версий buildroot. + + +-------------------------------------------------------------------------------- + + ## v0.12.8 "Владимир Уткин" от 2023-10-17 Стабилизирующий выпуск с исправлением обнаруженных ошибок и устранением недочетов, @@ -379,7 +394,7 @@ Signed-off-by: Леонид Юрьев (Leonid Yuriev) - Добавлен явный выбор `tls_model("local-dynamic")` для обхода проблемы `relocation R_X86_64_TPOFF32 against FOO cannot be used with -shared` - из-за ошибки в CLANG приводящей к использованию неверного режима `ls_model`. + из-за ошибки в CLANG приводящей к использованию неверного режима `tls_model`. - Изменение тактики слияния страниц при удалении. Теперь слияние выполняется преимущественно с уже измененной/грязной страницей.