Leonid Yuriev
d316bde561
mdbx: minor cleanup comment.
2022-01-05 10:45:23 +03:00
Leonid Yuriev
a6340c6b03
mdbx: minor fix open-MADV logging.
2022-01-05 10:45:15 +03:00
Leonid Yuriev
070ba5ded4
mdbx: check for GCC/clang in debug-includes (insignificant internals).
2022-01-04 13:41:25 +03:00
Leonid Yuriev
6866fa3eaa
mdbx: revert returning MDBX_ENODATA
from cursor-next.
2021-12-30 22:12:04 +03:00
Leonid Yuriev
9511bc491a
mdbx: more unlikely()
.
2021-12-30 19:40:22 +03:00
Leonid Yuriev
ae5df65af0
mdbx: refine page_alloc()
and update_gc()
to reduce looping.
...
Resolves https://github.com/erthink/libmdbx/issues/254 .
2021-12-30 17:36:33 +03:00
Leonid Yuriev
2ba90e63b1
mdbx: remove obsolete current retired-list record from gc before reserve/backlogging free-pages to reduce looping.
2021-12-28 00:10:00 +03:00
Leonid Yuriev
b30ccbde9e
mdbx: don't reserve/backlog free-pages if retired-list was already put into gc.
2021-12-28 00:10:00 +03:00
Leonid Yuriev
c3c088b8c3
mdbx: minor unify gc-update debug logging (cosmetics).
2021-12-28 00:10:00 +03:00
Leonid Yuriev
c70d2d62d1
mdbx: fix mdbx_override_meta()
to avoid false-positive assertions.
...
Fixed https://github.com/erthink/libmdbx/issues/253 .
2021-12-13 13:03:49 +03:00
Leonid Yuriev
4e44dc69f9
mdbx: add MDBX_SET_UPPERBOUND
for cursors.
...
Resolves https://github.com/erthink/libmdbx/issues/250 .
2021-12-13 04:24:34 +03:00
Leonid Yuriev
bee5df20fd
mdbx: fix MDBX_SHRINK_ALLOWED
collision with MDBX_ACCEDE
inside mdbx_env_sync_internal()
.
2021-12-13 04:12:43 +03:00
Leonid Yuriev
6f2c1e52ad
mdbx: add mdbx_cursor_get_batch()
.
...
Resolve https://github.com/erthink/libmdbx/issues/236
2021-12-11 05:58:39 +03:00
Leonid Yuriev
0265c847b8
mdbx++: remove preliminary
label from C++ API.
2021-12-09 02:10:08 +03:00
Leonid Yuriev
f4057b2c3b
mdbx: avoid extra looping inside mdbx_env_info_ex()
.
2021-12-07 01:45:41 +03:00
Leonid Yuriev
839da86cac
mdbx: minor fix handling MDBX_SET_LOWERBOUND
to avoid MDBX_BAD_VALSIZE
.
...
Related to https://github.com/erthink/libmdbx/issues/248#issuecomment-986542620 .
2021-12-07 01:30:43 +03:00
Леонид Юрьев (Leonid Yuriev)
a899056fd1
mdbx: fix extra assertion.
...
Fixes https://github.com/erthink/libmdbx/issues/248 .
2021-12-06 23:28:08 +03:00
Леонид Юрьев (Leonid Yuriev)
c484a92933
mdbx: minor refine prev commit.
2021-12-06 23:00:38 +03:00
Леонид Юрьев (Leonid Yuriev)
da855b13a3
mdbx: rework/simplify mdbx_env_sync_internal()
.
2021-12-04 06:56:44 +03:00
Леонид Юрьев (Leonid Yuriev)
8ef8733ddc
mdbx: minor refine mdbx_env_set_option(MDBX_opt_sync_bytes)
.
2021-12-04 06:55:41 +03:00
Leonid Yuriev
4b886e2a58
mdbx: don't return MDBX_RESULT_TRUE
(-1) from mdbx_env_set_option()
.
2021-12-03 15:33:22 +03:00
Леонид Юрьев (Leonid Yuriev)
d2b15b5958
mdbx: more unlikely()
.
2021-12-02 20:22:37 +03:00
Леонид Юрьев (Leonid Yuriev)
d96bc98244
mdbx: minor refine/fix MDBX_ENODATA
for compatibility.
...
Related to https://github.com/erthink/libmdbx/issues/243
2021-12-02 20:22:37 +03:00
Леонид Юрьев (Leonid Yuriev)
c2cab7a6a8
mdbx: using clang-format-13
(cosmetics).
2021-12-02 20:22:31 +03:00
Leonid Yuriev
0cc3aa3af8
mdbx: remove unneeded #undef P_DIRTY
.
2021-11-26 17:51:37 +03:00
Leonid Yuriev
adac03729d
mdbx: remove unneeded usage of <linux/sysctl.h>
.
...
Fixed https://github.com/erthink/libmdbx/issues/245
2021-11-26 17:34:04 +03:00
Leonid Yuriev
76399bd643
mdbx: fix returning MDBX_NOTFOUND
for non-exact seek case of MDBX_GET_BOTH
.
...
Fixed https://github.com/erthink/libmdbx/issues/243
2021-11-25 19:19:04 +03:00
Leonid Yuriev
4f2aba2d22
mdbx: minor fix formatting (cosmetics).
2021-11-25 19:15:02 +03:00
Leonid Yuriev
a2141ceaac
mdbx: slightly more cases to return MDBX_ENODATA
.
2021-11-22 13:48:08 +03:00
Leonid Yuriev
8cb7c0f4fb
mdbx: fix MDBX_PROBLEM
while update an obsolete meta-page.
...
Fixes https://github.com/erthink/libmdbx/issues/242
2021-11-21 02:37:56 +03:00
Леонид Юрьев (Leonid Yuriev)
bfff6cfe85
mdbx: fix nasty sizeof(bytes)
typo.
2021-11-19 16:21:44 +03:00
Leonid Yuriev
79a5802ad4
mdbx: add the note about "Visual Studio 2015 Update 3".
2021-11-11 20:38:39 +03:00
Leonid Yuriev
0e2ca3eb51
mdbx: more parallelable CMP2INT
for E2K.
2021-11-10 03:17:59 +03:00
Leonid Yuriev
e488604448
mdbx: minor fix mdbx_jitter4testing()
for case MDBX_DEBUG >= 2
.
2021-11-10 03:05:51 +03:00
Leonid Yuriev
eaa77c91cd
mdbx: drop obsolete internal mm_flags
macro.
2021-11-10 02:43:43 +03:00
sasgas
74d5a42578
mdbx: fix compilation with devtoolset-9 on CentOS/RHEL 7.
...
devtoolset is always using the old ABI
https://bugzilla.redhat.com/show_bug.cgi?id=1546704
https://stackoverflow.com/questions/49393888/how-can-i-use-the-new-c-11-abi-with-devtoolset-7-on-centos-rhel
2021-11-09 13:29:23 +03:00
Leonid Yuriev
b46e5c4ce8
mdbx: simplify collection of page-ops statistic.
2021-11-07 22:14:33 +03:00
Leonid Yuriev
96139eef48
mdbx: a whole snapshot inside mdbx_env_info_ex()
.
2021-11-07 21:18:10 +03:00
Leonid Yuriev
0c3a5da3cb
mdbx: refine visibility of internal mdbx_osal_jitter()
.
2021-11-07 19:48:14 +03:00
Leonid Yuriev
93a24abbab
mdbx: fix minor/paranoid MSVC warning.
2021-10-24 02:28:28 +03:00
Leonid Yuriev
5babf0872e
mdbx++: add ifndef-guard for _CRT_SECURE_NO_WARNINGS
.
2021-10-22 20:14:12 +03:00
Leonid Yuriev
331232858a
adds updating db-format signature during DB open.
...
Fixes https://github.com/erthink/libmdbx/issues/238 .
2021-10-22 20:13:57 +03:00
Leonid Yuriev
fcb8cd2145
mdbx: alter DB-format' signature and change version to v0.11.x (not a release).
...
Related to https://github.com/erthink/libmdbx/issues/238
Signed-off-by: Leonid Yuriev <leo@yuriev.ru>
2021-10-21 15:17:18 +03:00
Leonid Yuriev
514910621e
mdbx: return MDBX_CORRUPTED
instead of MDBX_PAGE_NOTFOUND
for invalid pages.
2021-10-15 01:11:20 +03:00
Leonid Yuriev
7251f47d5b
mdbx: fix typo which lead any error conversion to the 1
.
2021-10-14 20:03:37 +03:00
Leonid Yuriev
4632df5661
mdbx: cleanup non-persistent flags from meta-model.
2021-10-13 16:34:53 +03:00
Leonid Yuriev
11a5c50591
mdbx: fix turn_for_recovery()
for possibility of meta-pages clashing after turn to a particular meta-page.
2021-10-13 16:34:53 +03:00
Leonid Yuriev
3092078709
mdbx: refine handling of weak or invalid meta-pages while a DB opening.
2021-10-13 16:34:53 +03:00
Leonid Yuriev
cbb71058ca
mdbx: refine providing information for the @MAIN and @GC sub-databases of a last committed modification transaction's ID.
2021-10-13 16:34:25 +03:00
Leonid Yuriev
30745e0621
mdbx: refix #pragma pack
for modern compilers and aligned-required arches (hotfix).
...
Fix a regression after the https://github.com/erthink/libmdbx/issues/235
2021-10-13 16:13:22 +03:00
Leonid Yuriev
64e6fa93fd
mdbx: fix #pragma pack
to avoid misalignment for some compilers.
...
Fixes https://github.com/erthink/libmdbx/issues/235 .
2021-10-09 12:36:40 +03:00
Leonid Yuriev
fa0a38c1ac
mdbx: avoid single-page (too small) shrink threshold by default when MDBX_DEBUG > 0
.
2021-10-09 12:30:39 +03:00
Leonid Yuriev
fe0ec8ceca
mdbx: fix and refine mdbx_update_gc()
to avoid infinite looping possibility (squashed).
2021-10-09 12:29:10 +03:00
Leonid Yuriev
fe7186d549
mdbx: reflow comment (cosmetic).
2021-09-30 16:38:07 +03:00
Leonid Yuriev
d2cba98f70
mdbx: always setup madvise while opening DB.
...
This partially revert 7da64b725d920b1602ec0d307581a6cdca997d05.
Hope fix https://github.com/erthink/libmdbx/issues/231
2021-08-25 14:13:07 +03:00
Leonid Yuriev
99b75b5004
mdbx: fix/model minor Coverity issues.
2021-08-16 23:45:56 +03:00
Leonid Yuriev
42d545e579
mdbx: fix minor zero-length memcmp()
UB.
2021-08-14 17:46:34 +03:00
Leonid Yuriev
b6ffec12e4
"mdbx: ignore legacy P_DIRTY
flag (0x10
) for nested/sub-pages.
2021-08-11 15:49:46 +03:00
Leonid Yuriev
65fa0cf8ed
mdbx++: revive encode/decode to hex/base58/base64 (squashed).
2021-07-26 03:53:11 +03:00
Leonid Yuriev
046dc02f73
mdbx: make MDBX_STRINGIFY
macro public.
2021-07-26 03:53:11 +03:00
Leonid Yuriev
e731260056
mdbx: fix SIGSEGV regression while copying DB with enabled audit.
2021-07-26 02:24:15 +03:00
Leonid Yuriev
7759e52850
mdbx-windows: use MachineGuid
of any size for bootid
generation.
2021-07-19 12:07:45 +03:00
Leonid Yuriev
e7336e1d5e
mdbx: add checks for unexpected LEAF2-pages.
...
The fourth case of https://github.com/erthink/libmdbx/issues/217 .
2021-07-19 12:06:08 +03:00
Leonid Yuriev
68aef96f0a
mdbx-tool: minor clarify mdbx_chk' logic key/data checks.
2021-07-19 12:06:08 +03:00
Leonid Yuriev
0b120b8fa9
mdbx-windows: fix bootid
generation for case of change system' time.
2021-07-19 12:05:55 +03:00
Leonid Yuriev
28c36af67c
mdbx: refine built-in ASAN option.
2021-07-16 16:04:09 +03:00
Leonid Yuriev
d67b9eaf17
mdbx: fix ASAN-regression after 1740043678951c5a1a088e6572722de438162ab2.
...
Related to https://github.com/erthink/libmdbx/issues/217
2021-07-16 16:03:49 +03:00
Leonid Yuriev
6034985686
mdbx: add MDBX_ASAN_(UN)POISON_MEMORY_REGION()
macros.
2021-07-16 16:03:49 +03:00
Leonid Yuriev
7da64b725d
mdbx: perform madvise only for the first process opens a DB.
2021-07-16 16:03:49 +03:00
Leonid Yuriev
8aaf5d071b
mdbx: fix pagecheck()
.
...
Added a check that the data of the BIGDATA node (containing the target page number) is located within the boundaries of the page being checked.
The third case of https://github.com/erthink/libmdbx/issues/217 .
2021-07-16 15:55:18 +03:00
Leonid Yuriev
b6233ae2e5
mdbx-tools: minor fix/unify error counters.
2021-07-14 10:29:54 +03:00
Leonid Yuriev
fe5f008d39
mdbx-tools: skip iteration & checking records if corresponding tree is corrupted.
...
Hope final for https://github.com/erthink/libmdbx/issues/217
2021-07-14 03:59:56 +03:00
Leonid Yuriev
c8743cb9c4
mdbx: fix null-deref while override invalid meta-pages.
...
Related to https://github.com/erthink/libmdbx/issues/217
2021-07-14 03:59:52 +03:00
Leonid Yuriev
4de2dcebb5
mdbx: increase the MDBX_READERS_LIMIT
to 32767
.
...
Fixes https://github.com/erthink/libmdbx/issues/219 .
2021-07-11 02:44:19 +03:00
Leonid Yuriev
678a80dd19
mdbx: fix hang/shutdown on big-endian platforms without __cxa_thread_atexit()
.
...
Change-Id: I1bf706abaaf42d5b40751d85ed7c7a83d02acaf5
2021-07-11 02:25:39 +03:00
Leonid Yuriev
c18bf4f898
mdbx: minor clarify mdbx_mapresize()
.
2021-07-11 02:25:39 +03:00
Leonid Yuriev
728e7f92b2
mdbx: minor fix mdbx_mresize()
to preserve result code for read-only cases.
2021-07-11 02:25:39 +03:00
Leonid Yuriev
1740043678
mdbx: minimize the size of poisoned/unpoisoned regions to avoid ASAN hangs.
...
More for second case of https://github.com/erthink/libmdbx/issues/217
2021-07-11 02:25:26 +03:00
Leonid Yuriev
891d68838a
mdbx: return MDBX_TOO_LARGE
under Valgrind/ASAN if being opened DB is 100 larger than RAM.
...
More for second case of https://github.com/erthink/libmdbx/issues/217
2021-07-11 02:25:07 +03:00
Leonid Yuriev
108398c213
mdbx: refine rollback while opening weak/invalid DB.
...
More for https://github.com/erthink/libmdbx/issues/217
2021-07-11 02:24:51 +03:00
Leonid Yuriev
8bdee27248
mdbx: create/refactoring override_meta()
.
2021-07-11 02:24:51 +03:00
Leonid Yuriev
00c6dc9788
mdbx: re-verify head
and steady
meta-pages while opening db by the first process.
...
Basic fix for https://github.com/erthink/libmdbx/issues/217
2021-07-11 02:24:06 +03:00
Leonid Yuriev
fb67682a79
mdbx: refine mdbx_validate_meta()
.
2021-07-10 17:24:26 +03:00
Leonid Yuriev
5ed50a4739
mdbx: remove filesize
arg from header/meta read functions (refactoring).
2021-07-10 16:10:30 +03:00
Leonid Yuriev
c30c3def8b
mdbx: the filesize
field of mdbx_mmap_t
now is not specific for Windows.
2021-07-10 16:10:30 +03:00
Леонид Юрьев (Leonid Yuriev)
2f74f405ae
mdbx: avoid returning MDBX_TXN_FULL
error when possible.
2021-07-09 18:29:31 +03:00
Leonid Yuriev
39c5e66ed1
mdbx: fix safe64_reset()
for platforms without atomic 64-bit compare-and-swap.
2021-07-09 17:44:27 +03:00
Leonid Yuriev
bd2bb51f0f
mdbx++: rework buffer::silo
to avoid use std::string
.
2021-07-06 13:45:26 +03:00
Leonid Yuriev
cf5f31c577
mdbx: make __cold
attribute first (cosmetic).
2021-07-03 01:51:04 +03:00
Leonid Yuriev
fa49e5a57b
mdbx++: rename slice::from/to_FOO_bytes()
to `slice::envisage_from/to_FOO_length()'.
2021-07-02 21:20:04 +03:00
Leonid Yuriev
5d4281fbbe
mdbx: minor fix spelling.
2021-06-26 18:54:00 +03:00
Leonid Yuriev
a5e10b4ea1
mdbx: minor refine mdbx_cursor_eof()
.
2021-06-18 01:17:48 +03:00
Leonid Yuriev
b8e621cb2f
mdbx: mdbx: avoid log a warning about empty header during DB creation.
...
Resolve https://github.com/erthink/libmdbx/issues/205 .
2021-06-18 01:09:26 +03:00
Leonid Yuriev
5db855d728
mdbx: fix false-negative mdbx_cursor_eof()
result.
...
Fixes https://github.com/erthink/libmdbx/issues/207 .
2021-06-17 21:44:24 +03:00
Leonid Yuriev
d7c06b1337
mdbx: partial fix for recursive SRW-lock with MDBX_NOTLS
on Windows.
...
Here are some changes to avoid recursive acquisition of SRW-lock,
which is still in use:
- Read transactions don't acquire the shared SRW-lock with `MDBX_NOTLS.
- Memory-mapping of DB is always kept while DB opened,
therefore following limitations are:
- DB file can't be shrinked while it used,
including auto-shrink due to auto-compactification with corresponding geometry settings.
- The upper limit of DB size can't be changed while DB is used.
- The DB can grow within the upper size limit defined while opening by a first process,
but this does not work under Wine since there is no `NtExtendSection()` function.
Partially fix https://github.com/erthink/libmdbx/issues/203
2021-06-10 13:42:30 +03:00
Leonid Yuriev
0cd1eac6a8
mdbx: don't check other meta pages if one is specified for verification/recovery.
...
Fixes https://github.com/erthink/libmdbx/issues/202
2021-06-08 20:27:18 +03:00
Leonid Yuriev
f951f246b8
mdbx: allow to predefine/override MDBX_BUILD_TIMESTAMP
for builds reproducibility.
...
Resolve https://github.com/erthink/libmdbx/issues/201
2021-06-02 14:50:22 +03:00
Leonid Yuriev
ea1fcc2246
mdbx: fix insignificantly Coverity warnings.
2021-05-28 00:54:11 +03:00
Leonid Yuriev
8915db5f83
mdbx-tools: cleanup MDBX_NOSUBDIR
(needless).
2021-05-28 00:36:24 +03:00
Leonid Yuriev
a7167ce715
mdbx: allow open DB on 9P/WSL2 filesystem in exclusive mode.
...
Related to https://github.com/erthink/libmdbx/issues/97
2021-05-26 21:08:37 +03:00