Skip to content

Commit cd6fa0a

Browse files
committed
mdbx: add mdbx_txn_abort_ex() to API (v0.14.1-363-g75544794).
2026-01-30 mdbx: commit child/nested transactions inside `txn_checkpoint()`. 2026-01-29 mdbx++: minor reformat C++ API. 2026-01-29 mdbx: fix overlapping of internal `txn_gc_drained` and `MDBX_TXN_OUSTED`. 2026-01-29 mdbx: add `mdbx_txn_abort_ex()` to API. 2026-01-29 mdbx: refine nested ro-txns and `MDBX_ENABLE_FAKE_NESTED_READONLY_TRANSACTIONS`. 2026-01-29 mdbx-doc: translate build-options descriptions. 2026-01-29 mdbx: fix getting GC-profiling info.
1 parent 0d7c124 commit cd6fa0a

File tree

15 files changed

+307
-195
lines changed

15 files changed

+307
-195
lines changed

CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -514,6 +514,8 @@ add_option(MDBX ENABLE_DBI_SPARSE
514514
add_option(MDBX ENABLE_DBI_LOCKFREE "Support for deferred releasing and a lockfree path to quickly open DBI handles" ON)
515515
add_option(MDBX USE_FALLOCATE "Using posix_fallocate() or fcntl(F_PREALLOCATE) on OSX" AUTO)
516516
mark_as_advanced(MDBX_USE_FALLOCATE)
517+
add_option(MDBX ENABLE_FAKE_NESTED_READONLY_TRANSACTIONS "Enables fake nested read-only transactions, which are much cheaper but do not restore the state of cursors in case of transaction abortion." OFF)
518+
mark_as_advanced(MDBX_ENABLE_FAKE_NESTED_READONLY_TRANSACTIONS)
517519

518520
if((MDBX_BUILD_TOOLS OR MDBX_ENABLE_TESTS) AND MDBX_BUILD_SHARED_LIBRARY)
519521
add_option(MDBX LINK_TOOLS_NONSTATIC "Link MDBX tools with non-static libmdbx" OFF)

VERSION.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{ "git_describe": "v0.14.1-356-gadaf1352", "git_timestamp": "2026-01-29T18:08:07+03:00", "git_tree": "246a9ed8d7ad2d018c9bb365d96efd954af8debd", "git_commit": "adaf135226e1d53dd5cf49e1cba09eea202b32b2", "semver": "0.14.1.356" }
1+
{ "git_describe": "v0.14.1-363-g75544794", "git_timestamp": "2026-01-31T11:23:34+03:00", "git_tree": "03c64f73e55c62cf461069533a78cfec0349c509", "git_commit": "75544794b936cbaf58e82234b924c8c1fad857d2", "semver": "0.14.1.363" }

config.h.in

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
/* This file is part of the libmdbx amalgamated source code (v0.14.1-356-gadaf1352 at 2026-01-29T18:08:07+03:00),
1+
/* This file is part of the libmdbx amalgamated source code (v0.14.1-363-g75544794 at 2026-01-31T11:23:34+03:00),
22
* it is the template for libmdbx's config.h
33
******************************************************************************/
44

@@ -40,6 +40,7 @@
4040
#cmakedefine01 MDBX_ENABLE_PROFGC
4141
#cmakedefine01 MDBX_ENABLE_DBI_SPARSE
4242
#cmakedefine01 MDBX_ENABLE_DBI_LOCKFREE
43+
#cmakedefine01 MDBX_ENABLE_FAKE_NESTED_READONLY_TRANSACTIONS
4344

4445
/* Windows */
4546
/* allowing override MDBX_WITHOUT_MSVC_CRT=ON to build the C++ API in "private" mode only for tests */

mdbx-internals.h

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
/* This file is part of the libmdbx amalgamated source code (v0.14.1-356-gadaf1352 at 2026-01-29T18:08:07+03:00).
1+
/* This file is part of the libmdbx amalgamated source code (v0.14.1-363-g75544794 at 2026-01-31T11:23:34+03:00).
22
*
33
* libmdbx (aka MDBX) is an extremely fast, compact, powerful, embeddedable, transactional key-value storage engine with
44
* open-source code. MDBX has a specific set of properties and capabilities, focused on creating unique lightweight
@@ -24,7 +24,7 @@
2424

2525
#define xMDBX_ALLOY 1 /* alloyed build */
2626

27-
#define MDBX_BUILD_SOURCERY c7d0809cdcee9e26880a00d4c8070c99148713f0b923a83d9c16293e4bf05be8_v0_14_1_356_gadaf1352
27+
#define MDBX_BUILD_SOURCERY 090f5ce3ec346115a6141ff67f0c5abb45476c091e6bd6a98a9e3f5a6cb0b113_v0_14_1_363_g75544794
2828

2929
#define LIBMDBX_INTERNALS
3030
#define MDBX_DEPRECATED
@@ -1795,8 +1795,9 @@ MDBX_MAYBE_UNUSED MDBX_NOTHROW_PURE_FUNCTION static inline uint32_t osal_bswap32
17951795
#error MDBX_DPL_PREALLOC_FOR_RADIXSORT must be defined as 0 or 1
17961796
#endif /* MDBX_DPL_PREALLOC_FOR_RADIXSORT */
17971797

1798-
/** Controls dirty pages tracking, spilling and persisting in `MDBX_WRITEMAP`
1799-
* mode, i.e. disables in-memory database updating with consequent
1798+
/** Controls dirty pages tracking, spilling and persisting in `MDBX_WRITEMAP`.
1799+
*
1800+
* \details In other words, disables in-memory database updating with consequent
18001801
* flush-to-disk/msync syscall.
18011802
*
18021803
* 0/OFF = Don't track dirty pages at all, don't spill ones, and use msync() to
@@ -1816,16 +1817,14 @@ MDBX_MAYBE_UNUSED MDBX_NOTHROW_PURE_FUNCTION static inline uint32_t osal_bswap32
18161817
#error MDBX_AVOID_MSYNC must be defined as 0 or 1
18171818
#endif /* MDBX_AVOID_MSYNC */
18181819

1819-
/** Управляет механизмом поддержки разреженных наборов DBI-хендлов для снижения
1820-
* накладных расходов при запуске и обработке транзакций. */
1820+
/** Controls a supporting sparse sets of DBI-handles to reduce transaction startup and processing overhead. */
18211821
#ifndef MDBX_ENABLE_DBI_SPARSE
18221822
#define MDBX_ENABLE_DBI_SPARSE 1
18231823
#elif !(MDBX_ENABLE_DBI_SPARSE == 0 || MDBX_ENABLE_DBI_SPARSE == 1)
18241824
#error MDBX_ENABLE_DBI_SPARSE must be defined as 0 or 1
18251825
#endif /* MDBX_ENABLE_DBI_SPARSE */
18261826

1827-
/** Управляет механизмом отложенного освобождения и поддержки пути быстрого
1828-
* открытия DBI-хендлов без захвата блокировок. */
1827+
/** Controls support of lock-free opening of DBI-handles and deferred destroying ones. */
18291828
#ifndef MDBX_ENABLE_DBI_LOCKFREE
18301829
#define MDBX_ENABLE_DBI_LOCKFREE 1
18311830
#elif !(MDBX_ENABLE_DBI_LOCKFREE == 0 || MDBX_ENABLE_DBI_LOCKFREE == 1)
@@ -1928,6 +1927,14 @@ MDBX_MAYBE_UNUSED MDBX_NOTHROW_PURE_FUNCTION static inline uint32_t osal_bswap32
19281927
#error MDBX_ENABLE_NON_READONLY_EXPORT must be defined as 0 or 1
19291928
#endif /* MDBX_ENABLE_NON_READONLY_EXPORT */
19301929

1930+
/** Enables fake nested read-only transactions, which are much cheaper but do not restore
1931+
* the state of cursors in case of transaction abortion. */
1932+
#ifndef MDBX_ENABLE_FAKE_NESTED_READONLY_TRANSACTIONS
1933+
#define MDBX_ENABLE_FAKE_NESTED_READONLY_TRANSACTIONS 0
1934+
#elif !(MDBX_ENABLE_FAKE_NESTED_READONLY_TRANSACTIONS == 0 || MDBX_ENABLE_FAKE_NESTED_READONLY_TRANSACTIONS == 1)
1935+
#error MDBX_ENABLE_FAKE_NESTED_READONLY_TRANSACTIONS must be defined as 0 or 1
1936+
#endif /* MDBX_ENABLE_FAKE_NESTED_READONLY_TRANSACTIONS */
1937+
19311938
//------------------------------------------------------------------------------
19321939

19331940
/** Win32 File Locking API for \ref MDBX_LOCKING */

0 commit comments

Comments
 (0)