mdbx: merge branch master into devel.

This commit is contained in:
Леонид Юрьев (Leonid Yuriev) 2022-08-22 21:46:54 +03:00
commit b60d8e78c3
3 changed files with 49 additions and 6 deletions

View File

@ -16,6 +16,7 @@ New:
- Added the `gcrtime_seconds16dot16` counter to the "Page Operation Statistics" that accumulates time spent for GC searching and reclaiming. - Added the `gcrtime_seconds16dot16` counter to the "Page Operation Statistics" that accumulates time spent for GC searching and reclaiming.
- Copy-with-compactification now clears/zeroes unused gaps inside database pages. - Copy-with-compactification now clears/zeroes unused gaps inside database pages.
- The C++ API has been refined to simplify support for `wchar_t` in path names. - The C++ API has been refined to simplify support for `wchar_t` in path names.
- Added explicit error message for Buildroot's Microblaze toolchain maintainers.
Fixes: Fixes:
@ -30,6 +31,7 @@ Minors:
- Using `ldd` to check used dso. - Using `ldd` to check used dso.
- Added `MDBX_WEAK_IMPORT_ATTRIBUTE` macro. - Added `MDBX_WEAK_IMPORT_ATTRIBUTE` macro.
- Use current transaction geometry for untouched parameters when `env_set_geometry()` called within a write transaction. - Use current transaction geometry for untouched parameters when `env_set_geometry()` called within a write transaction.
- Minor clarified `iov_page()` failure case.
## v0.12.0 at 2022-06-19 ## v0.12.0 at 2022-06-19
@ -39,11 +41,43 @@ Not a release but preparation for changing feature set and API.
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
## v0.11.9 (Чирчик-1992) at 2022-08-02 ## v0.11.10 (the TriColor) at 2022-08-22
The stable bugfix release. The stable bugfix release.
It is planned that this will be the last release of the v0.11 branch. It is planned that this will be the last release of the v0.11 branch.
```
14 files changed, 263 insertions(+), 252 deletions(-)
Signed-off-by: Леонид Юрьев (Leonid Yuriev) <leo@yuriev.ru>
```
New:
- The C++ API has been refined to simplify support for `wchar_t` in path names.
- Added explicit error message for Buildroot's Microblaze toolchain maintainers.
Fixes:
- Never use modern `__cxa_thread_atexit()` on Apple's OSes.
- Use `MultiByteToWideChar(CP_THREAD_ACP)` instead of `mbstowcs()`.
- Don't check owner for finished transactions.
- Fixed typo in `MDBX_EINVAL` which breaks MingGW builds with CLANG.
Minors:
- Fixed variable name typo.
- Using `ldd` to check used dso.
- Added `MDBX_WEAK_IMPORT_ATTRIBUTE` macro.
- Use current transaction geometry for untouched parameters when `env_set_geometry()` called within a write transaction.
- Minor clarified `iov_page()` failure case.
-------------------------------------------------------------------------------
## v0.11.9 (Чирчик-1992) at 2022-08-02
The stable bugfix release.
``` ```
18 files changed, 318 insertions(+), 178 deletions(-) 18 files changed, 318 insertions(+), 178 deletions(-)
Signed-off-by: Леонид Юрьев (Leonid Yuriev) <leo@yuriev.ru> Signed-off-by: Леонид Юрьев (Leonid Yuriev) <leo@yuriev.ru>

View File

@ -4814,8 +4814,11 @@ static int txn_spill(MDBX_txn *const txn, MDBX_cursor *const m0,
txn->tw.dirtyroom += spilled; txn->tw.dirtyroom += spilled;
tASSERT(txn, dirtylist_check(txn)); tASSERT(txn, dirtylist_check(txn));
if (ctx.iov_items) if (ctx.iov_items) {
/* iov_page() frees dirty-pages and reset iov_items in case of failure. */
tASSERT(txn, rc == MDBX_SUCCESS);
rc = iov_write(txn, &ctx); rc = iov_write(txn, &ctx);
}
if (unlikely(rc != MDBX_SUCCESS)) if (unlikely(rc != MDBX_SUCCESS))
goto bailout; goto bailout;
@ -9903,8 +9906,11 @@ static int txn_write(MDBX_txn *txn, struct iov_ctx *ctx) {
break; break;
} }
if (ctx->iov_items) if (ctx->iov_items) {
/* iov_page() frees dirty-pages and reset iov_items in case of failure. */
tASSERT(txn, rc == MDBX_SUCCESS);
rc = iov_write(txn, ctx); rc = iov_write(txn, ctx);
}
while (r <= dl->length) while (r <= dl->length)
dl->items[++w] = dl->items[r++]; dl->items[++w] = dl->items[r++];

View File

@ -221,9 +221,12 @@ static int lck_op(const mdbx_filehandle_t fd, int cmd, const int lck,
((uint64_t)offset + (uint64_t)len)); ((uint64_t)offset + (uint64_t)len));
for (;;) { for (;;) {
struct flock lock_op; struct flock lock_op;
STATIC_ASSERT(sizeof(off_t) <= sizeof(lock_op.l_start) && STATIC_ASSERT_MSG(sizeof(off_t) <= sizeof(lock_op.l_start) &&
sizeof(off_t) <= sizeof(lock_op.l_len) && sizeof(off_t) <= sizeof(lock_op.l_len) &&
OFF_T_MAX == (off_t)OFF_T_MAX); OFF_T_MAX == (off_t)OFF_T_MAX,
"Support for large/64-bit-sized files is misconfigured "
"for the target system and/or toolchain. "
"Please fix it or at least disable it completely.");
memset(&lock_op, 0, sizeof(lock_op)); memset(&lock_op, 0, sizeof(lock_op));
lock_op.l_type = lck; lock_op.l_type = lck;
lock_op.l_whence = SEEK_SET; lock_op.l_whence = SEEK_SET;