Leonid Yuriev
6fa2748fc7
mdbx-tools: refine mdbx_stat.
2020-05-15 22:03:29 +03:00
Leonid Yuriev
efe4fd2cc9
mdbx-tools: use equal-or-greater comparator for dont-check-ordering mode.
2020-05-15 22:03:29 +03:00
Leonid Yuriev
3f0d2a6ac2
mdbx-tools: extends dump/load to support all mdbx attributes.
...
Change-Id: I04772ce0083c46b70f5342e92c7509c9a425724d
2020-05-15 22:03:29 +03:00
Leonid Yuriev
8f31aad0fb
mdbx: use MAX_TXN internally (cosmetics).
...
Change-Id: Ic8171dbfa8bb32272e46e939223316f6182d3a7a
2020-05-15 18:13:10 +03:00
Leonid Yuriev
463a8af35b
mdbx: copy unaligned keys/values instead of return error to avoid break compatibility.
...
Change-Id: I2f95674a3836568a5c51155ca70da0683c50b424
2020-05-15 11:30:35 +03:00
Leonid Yuriev
c2c74075e7
mdbx: fix Valgrind minor warning with MDBX_DEBUG > 1.
...
Change-Id: Idb93c6a3843e76071a55cbd6c34ddd22541c77d3
2020-05-15 11:30:35 +03:00
Leonid Yuriev
c6edd6fb91
mdbx: exclude MDBX_NOSUBDIR from persistent flags.
2020-05-15 11:30:35 +03:00
Leonid Yuriev
e28d223d42
mdbx: fix MDBX_NODUPDATA handling for key-value data.
...
More for https://github.com/erthink/libmdbx/issues/99
in continue to 9428efd2ae9f7fe984422b5eb1fc47f732236b51
Change-Id: I56050ddf5e56807a11d8613780c3ba76cc16d324
2020-05-15 11:30:35 +03:00
Leonid Yuriev
8c8c86038a
mdbx: fix unsigned-to-ptrdiff casting inside estimate().
...
Fixup after a238179c23e7378b2019de5229b2166cdfe515c7
Change-Id: I316e4aa1f41462fd0017f8e0a7f6d6e82aa4f3db
2020-05-15 11:30:35 +03:00
Leonid Yuriev
e6b48b613a
mdbx: more checking for MDBX_DEBUG.
...
Change-Id: Ie6bedda942bc5623e5d7cee5d2011e41009ea3d9
2020-05-15 11:30:35 +03:00
Leonid Yuriev
f6fe3b44de
mdbx: fix fetching of first/lower key in case starting from LEAF2-page during page merge.
...
More for b3f375c57f9ff0f1f58e77227374b1cfddcd3278
2020-05-15 11:30:35 +03:00
Leonid Yuriev
57d76d1f7a
mdbx: checking the order of keys on all pages during the audit (squashed).
2020-05-15 11:29:23 +03:00
Leonid Yuriev
30bb2363e1
mdbx: use comparators instead of is_samedata().
2020-05-15 08:59:10 +03:00
Leonid Yuriev
b7fb9bdeb1
mdbx: fix mdbx_xcursor_init1() for prev created databases.
2020-05-15 08:59:10 +03:00
Leonid Yuriev
d986d09b7b
mdbx: rework min/max length checking for keys & values (squashed).
2020-05-15 08:59:03 +03:00
Leonid Yuriev
9736a36efb
mdbx: add branch-less flags_db2sub().
2020-05-11 02:03:55 +03:00
Leonid Yuriev
e4ce115876
mdbx: fix MSVC warnings (minor).
...
Change-Id: I614ee9ec1c21586fbe08c6cedb395ac57a81914f
2020-05-10 03:56:25 +03:00
Leonid Yuriev
5b4b3fa9ea
mdbx-windows: fix MDBX_AVOID_CRT option & ntdll.def distribution.
...
Resolve https://github.com/erthink/libmdbx/issues/100
Change-Id: I18ab055e79e249fca856353b2585739c88e01758
2020-05-10 03:41:28 +03:00
Leonid Yuriev
a238179c23
mdbx: rename/reorganize internal fields for clarity.
...
Change-Id: I9b23a8ca271f30ebedda9cd8d21094b4797f8bb3
2020-05-09 20:00:31 +03:00
Leonid Yuriev
8ee3c6ddb0
mdbx: minor fix return MDBX_EBADSIGN.
...
Change-Id: Ia0da8b4c2a5f0776688c92ad50433eed5e83b73c
2020-05-09 20:00:25 +03:00
Leonid Yuriev
9428efd2ae
mdbx: avoid upsertion (early exit) the same key-value data.
...
Resolve https://github.com/erthink/libmdbx/issues/99
Change-Id: I6aac66d6cb6818951e29bc8a3626c342d6137151
2020-05-09 03:25:20 +03:00
Leonid Yuriev
86dad2d727
mdbx: drop obsolete/unused mn_hi & mn_lo.
...
Change-Id: Ie0099c5afa66ccb679b124f3feb095a364519edc
2020-05-09 03:25:20 +03:00
Leonid Yuriev
db635c9fbb
mdbx: fix/don't clean env-signature if open failed.
2020-05-09 02:48:56 +03:00
Leonid Yuriev
83cf4cd3d5
mdbx: refine/fix mdbx_dbi_open_ex() to safe concurrently opening the same handle from difference threads.
...
Change-Id: Ib01b6015bbb28eb2777f9206d6a5ac2cf9c2575f
2020-05-09 02:46:35 +03:00
Leonid Yuriev
f11607dfa6
mdbx: minor fix/workaround to avoid UBSAN traps for memcpy(ptr, nullptr, 0).
2020-05-03 01:48:12 +03:00
Leonid Yuriev
175c361018
mdbx: avoid gcc-anylyzer false-positive warnings.
2020-05-02 22:38:53 +03:00
Leonid Yuriev
b943466727
mdbx: fix missing comma in err-msg array (Coverity).
...
Change-Id: Ic441e63cf8ed14108dfe7c38e269f819879e21ce
2020-05-01 02:42:28 +03:00
Leonid Yuriev
1488457641
mdbx-tools: hide '-n' option (NOSUBDIR) since now it guessed automatically.
...
Change-Id: I8668ec919f2f90b133270a566f380066dbb8589f
2020-04-30 16:59:46 +03:00
Leonid Yuriev
b3f375c57f
mdbx: fix branch-page merge.
...
Change-Id: I48dce339d1735cd8d270f1ba1c091572daa897a6
2020-04-30 16:57:29 +03:00
Leonid Yuriev
eec465704d
mdbx: fix div-by-zero while copy-with-compaction for non-resizeable DB.
...
Change-Id: Ice7f5675c3b2864195874f2e3c4ade9148cad048
2020-04-29 18:57:00 +03:00
Leonid Yuriev
fac0d47913
mdbx: add MDBX_CP_FORCE_RESIZEABLE option.
...
Change-Id: I5fcdae7933dbbfbf8629e8a0423545a4f6b9f6b6
2020-04-29 18:57:00 +03:00
Leonid Yuriev
37abc146b4
mdbx-tools: minor refine mdbx_chk output.
...
Change-Id: I0d1b70029b861a6048bba8c0239138160c7c6425
2020-04-29 18:39:20 +03:00
Leonid Yuriev
b44520b7d1
mdbx: don't reset last txnid while copy with compactification.
...
Change-Id: Ia7c1b968ab6a21a3c178b45408088c84647276b1
2020-04-29 18:37:37 +03:00
Leonid Yuriev
eea1432e80
mdbx: auto-reset running transaction in mdbx_txn_renew().
...
Change-Id: If93ad13bb5a6dab8dd5fcb80882b5eb83fdf3dad
2020-04-26 03:32:50 +03:00
Leonid Yuriev
3b741a6d5f
mdbx: automatically abort errored transaction in mdbx_txn_commit().
...
Change-Id: I2cfac73c69a8ff46870778f174555724f8363a79
2020-04-26 03:23:04 +03:00
Leonid Yuriev
673570ec2a
mdbx: auto-choose pagesize for a large databases.
...
Change-Id: I3f8279ba077a8c31c70504d32fb619b6601cc5c4
2020-04-23 17:15:55 +03:00
Leonid Yuriev
a5fb85f0fc
mdbx: avoiding MDBX_UTTERLY_NOSYNC as result of flags merge.
...
Change-Id: Ia39de7b60a00b04a92ddf1468c995c4684f45474
2020-04-22 20:35:12 +03:00
Leonid Yuriev
21f9a445e8
mdbx: rework env_open() to auto-handling MDBX_NOSUBDIR for any exists database.
...
Change-Id: Id8a26937c9013c750323646df01c3080a909a4c0
2020-04-22 17:33:59 +03:00
Leonid Yuriev
30f7f15778
mdbx: automatic MDBX_NOSUBDIR while opening existing database.
...
Change-Id: Ieb2042d70b42bc2a572ac1083c160fa3cdbb7556
2020-04-22 16:58:38 +03:00
Leonid Yuriev
5765d92ac7
mdbx: return MDBX_EBADSIGN when mdbx_env_close() called concurrently from several threads.
...
Change-Id: I03a8c87bc51eefc5236baa52cee8b12a9f8aa0e2
2020-04-20 17:00:41 +03:00
Leonid Yuriev
83e303b059
mdbx: alter MDBX_CURSOR_FULL description.
...
Change-Id: I70d13e7503d10c6050bd17e4dd8bd814e46799af
2020-04-19 17:33:32 +03:00
Leonid Yuriev
1e9cc6b0a5
mdbx: more 'const' for API.
...
Change-Id: Iedea253733105acc4010e07a65a594f8ea52ce56
2020-04-19 17:33:32 +03:00
Leonid Yuriev
90bf7eb817
mdbx: fix/refine MDBX_BUILD_SHARED_LIBRARY definition.
...
Change-Id: If4e3d32b0ce360eb7275d962fff4b31e53926054
2020-04-17 00:37:57 +03:00
Leonid Yuriev
971f924c44
mdbx-build: rearrange source files, rework CMakeLists.txt and refine GNUMakefile (squashed).
...
Change-Id: Id73d346695011dab2f670bb9e6293a1e5a1835ca
2020-04-17 00:37:57 +03:00
Jens Alfke
f414876e99
mdbx: fixed AddressSanitizer errors after closing db.
...
Unpoison memory before unmapping, to avoid leaving dangling poisoned
address space. This caused Clang AddressSanitizer false errors after
database was closed.
More for https://github.com/erthink/libmdbx/issues/73
Close https://github.com/erthink/libmdbx/pull/93
Change-Id: I9cf19a06521330a90a62ed15317e1f966f0bd56f
2020-04-15 02:29:05 +03:00
Leonid Yuriev
ab2c98e41c
mdbx: support for Android/Bionic.
...
Change-Id: Ia6a4d8a7848ffe3e488b4a92c9ec53c61c78a9bb
2020-04-13 23:36:56 +03:00
Leonid Yuriev
595482ca57
mdbx: fix typo (extra closing parenthesis).
...
Change-Id: Icae740a640ab59dedc7608a725cc24623dba62bd
2020-04-13 23:35:08 +03:00
Leonid Yuriev
0986cb9379
mdbx-posix: fix feature-testing for PTHREAD_MUTEX_ROBUST.
...
Change-Id: I16f008b8448a70d4145ba2bcfe22b3326c8a0e21
2020-04-13 22:46:55 +03:00
Leonid Yuriev
abf38e97cc
mdbx: minor fix prev commit.
...
More for https://github.com/erthink/libmdbx/issues/97
Change-Id: I09ffe3430aa07bf5b01d9ad991affa004bb998a6
2020-04-11 20:51:24 +03:00
Leonid Yuriev
f89c3eda17
mdbx: crutch for WSL.
...
Fixes https://github.com/erthink/libmdbx/issues/97
Change-Id: Ia863ffc8cd939b1af65f21ab0c5c8197abf4e793
2020-04-11 20:33:36 +03:00
Leonid Yuriev
5a81413f17
mdbx-posix: fix comment typo.
...
Change-Id: I4573926a50ba392222dc738be3a7b9b3fabbb368
2020-04-11 17:21:36 +03:00
Leonid Yuriev
c590eb656f
mdbx: fix null-deref in an ASAN-enabled build while opening DB with error.
...
More for https://github.com/erthink/libmdbx/issues/95
Change-Id: I6250fe7b0fbbcae497c2b5c1da9b4e9f78ecf0f0
2020-04-11 14:55:03 +03:00
Leonid Yuriev
17d7d48281
mdbx: fix null-deref in an ASAN-enabled build while opening DB with MDBX_RDONLY.
...
Fixes https://github.com/erthink/libmdbx/issues/95
Change-Id: I1c000d3a456897f73367a590ef9fbda8ae90391c
2020-04-11 03:06:05 +03:00
Jens Alfke
48b6f76159
mdbx: Don't include <sys/vmmeter.h> on Apple platforms ( #94 )
...
A simpler fix for the issue of this header being missing on iOS.
It's not actually needed at all on Mach-based OSs.
Fixes https://github.com/erthink/libmdbx/issues/92
2020-04-10 21:40:58 +03:00
Leonid Yuriev
99f07f5054
mdbx: add iOS notes to README.
...
Change-Id: Ia46a43376370a73b179dbc4ab65e43956ee8c43a
2020-04-08 02:05:18 +03:00
Leonid Yuriev
81dca1f7e9
mdbx-cmake: add MDBX_BUILD_TOOLS option.
...
Change-Id: Ib6329fdea66dd52720021b80a6fecdaa078ceb2b
2020-04-07 23:06:18 +03:00
Leonid Yuriev
ed6863851e
mdbx: crutch for iOS.
...
Workaround for https://github.com/erthink/libmdbx/issues/92
Change-Id: Id8ed900d1310212ae0edd4bf6ab11bdba9c106a1
2020-04-07 17:35:49 +03:00
Leonid Yuriev
921f43da6f
mdbx: fix ceiling/flooring madvise-edge inside mdbx_sync_locked().
...
Fixes https://github.com/erthink/libmdbx/issues/91
Change-Id: I17da72d9a53a2c7453d81488bd3297063de0b7d1
2020-04-07 03:54:48 +03:00
Leonid Yuriev
94e58d7acc
mdbx: more explicit casting to size_t (paranoia).
...
Change-Id: I1c65943cdcdd77cc12bc27d9ced19765ea7911bb
2020-04-07 03:48:23 +03:00
Leonid Yuriev
bf0cff9a8a
mdbx: add & use floor_powerof2().
...
Change-Id: Ib5be7d5a68dc7944e208d75094050383ccdfa6d0
2020-04-07 03:48:20 +03:00
Leonid Yuriev
a846fb0d21
mdbx: rename roundup_powerof2() to ceil_powerof2().
...
Change-Id: Ie22f10ffa6637ef74f2c705fad5fc45a8d19d22e
2020-04-07 03:45:11 +03:00
Leonid Yuriev
4ad1c2daed
mdbx: minor fix/workaround to avoid GCC 10.x pedantic warnings.
...
Change-Id: If67c1ae593ad2c39130054475c37321dca761f5b
2020-04-07 01:54:58 +03:00
Leo Yuriev
3f7c9846e7
mdbx: use uintptr_t instead of size_t for pointer-wide values and types.
...
More for https://github.com/erthink/libmdbx/issues/88
Change-Id: Ic625096df3c09d0dd578c7b79aa302be35480699
2020-04-04 16:52:44 +03:00
Leo Yuriev
75de63dff1
mdbx: refine type-casting inside mdbx_thread_self() to avoid warning.
...
2 of 2 for https://github.com/erthink/libmdbx/issues/88
Change-Id: Ic4994141d23a5417b18f6b03a3e4038859fb9210
2020-04-04 16:52:42 +03:00
Leo Yuriev
089d7212e7
mdbx: fix mdbx_build_info for undefined flags case.
...
1 of 2 for https://github.com/erthink/libmdbx/issues/88
Change-Id: I079b329abe8f20793dc78c90ea55f874693dde43
2020-04-04 16:52:39 +03:00
Leo Yuriev
d329ea1fe0
mdbx-tools: fix txnid_t casting inside mdbx_stat.
...
Change-Id: I69799d8caca3e6692a433b2e62e7b2867b152b00
2020-04-04 16:01:05 +03:00
Leonid Yuriev
8f5ae79b51
mdbx: bump version to 0.7.x
...
Change-Id: I6cb06fbd7119eed086b54a9760db1e0edf5de07b
2020-03-18 17:19:12 +03:00
Leonid Yuriev
251d34d6e6
mdbx-doc: more for custom comparators.
...
Change-Id: I3326c5bdedbbdb01b1865bff68aa7ba8bc7056cc
2020-03-02 13:50:33 +03:00
Leo Yuriev
76e29c21f1
mdbx: merge branch 'devel' (crutches for Wine).
...
Change-Id: I1779bc6987449e403216584cdd2846e910f34c8a
2020-02-28 19:05:47 +03:00
Leo Yuriev
5072b45026
mdbx: rename MDBX_MAP_RESIZED to MDBX_UNABLE_EXTEND_MAPSIZE.
...
Change-Id: I22fbdb4f08fd7a6ae37da42e6827677ae8a8337b
2020-02-28 16:40:56 +03:00
Leo Yuriev
63449a44c5
mdbx-cmake: #if/#endif instead of cmake-conditions for posix/windows sources.
...
Change-Id: Ic95bd3ba345160cf1d68c79f11d6560d4c41cb2b
2020-02-28 15:51:12 +03:00
Leonid Yuriev
ecffc831fa
mdbx-tools: avoids extra error messages "bad txn" from mdbx_chk when DB is corrupted.
...
Change-Id: I6b92aced83bcf7e0c8e5c7108ddcf60714c9b30c
2020-02-27 16:04:00 +03:00
Leonid Yuriev
6248b67f75
mdbx-windows: more for running under Wine.
...
Wine unable create mapped-view large tran secton size.
More for https://github.com/erthink/libmdbx/issues/83
Change-Id: I93e98d58a827c785f8257cd9cac387a333e59621
2020-02-24 20:46:36 +03:00
Leonid Yuriev
fbf55e17cb
mdbx-windows: one more workaround for Wine.
...
SetFileInformationByHandle() is not implemented by Wine.
Change-Id: I61783c8d173397094cd6cbad7efc9d7aac57b470
002c:Call KERNEL32.SetFileInformationByHandle(00000060,00000006,0022f890,00000008) ret=127dd1b2
002c:fixme:file:SetFileInformationByHandle 0000000000000060, 6, 000000000022F890, 8
002c:Ret KERNEL32.SetFileInformationByHandle() retval=00000000 ret=127dd1b2
Related to https://github.com/erthink/libmdbx/issues/83
2020-02-22 20:02:17 +03:00
Leonid Yuriev
289f2896d0
mdbx-windows: more for Wine.
...
Related to https://github.com/erthink/libmdbx/issues/83 .
UnlockFile() cold return ERROR_LOCK_VIOLATION when file not locked, instead of ERROR_NOT_LOCKED.
Current versions of Wine seem to work correctly.
Change-Id: Ibc5bd4352184efc7f88705e7ae04d6656286a96e
2020-02-21 19:58:32 +03:00
Leonid Yuriev
4fed2d9fc0
mdbx-windows: minor workaround for MSVC "unresolved external symbol __except1 ..."
...
Workaround for MSVC error LNK2019: unresolved external symbol __except1 referenced in function __ftol3_except.
2020-02-19 16:31:25 +03:00
Leo Yuriev
9aa816dc73
mdbx-windows: using RegGetValueA() instead of wchar_t version.
...
Change-Id: I0848eaf2083985ae27fec605358329830b0733c2
2020-02-19 16:00:40 +03:00
Leo Yuriev
f750086bc1
mdbx-windows: rework workaround for Wine.
...
Resolves https://github.com/erthink/libmdbx/issues/83
in accordance with https://bugs.winehq.org/show_bug.cgi?id=48620
Change-Id: Ieb4385efdcd86c865184a783363cf6e90da14f61
2020-02-18 22:51:34 +03:00
Leonid Yuriev
bd3f234bce
mdbx: update github repo address.
...
Change-Id: Ifa8bf0e09b297ba6f495dd8e04e5c67f6626d9cb
2020-02-18 02:22:47 +03:00
Leo Yuriev
60a6560a3b
mdbx: workaround for NtExtendSection() on Wine.
...
This fixes https://github.com/erthink/libmdbx/issues/83
Change-Id: I8e00aa91c86348fad9dbe4285143671d9cb3f802
2020-02-17 22:55:17 +03:00
Leo Yuriev
d1173a1596
mdbx: drop unused WindowsNT API prototypes.
...
Change-Id: Ic929646653d0576671d6150a698e892d2145ae30
2020-02-17 19:44:05 +03:00
Leonid Yuriev
2356f3281b
mdbx: use underscores for GNU-attributes.
...
Change-Id: Iefd371dd91da1db8ee86554208536b3004535317
2020-02-17 14:01:11 +03:00
Leonid Yuriev
cd0d84dbb6
mdbx: fix error message typo.
...
Change-Id: I25db309ff4fb063893c7c39d623e62eaceb8b60f
2020-02-03 23:35:43 +03:00
Leonid Yuriev
8214d674be
mdbx: refine SEARCH_IMPL macro.
...
Change-Id: I975e480c047b88e0200aaf889334e8b83ab760ad
2020-02-03 18:13:17 +03:00
Leonid Yuriev
62a39d84b3
mdbx: fix aligned_alloc() usage.
2020-02-02 20:49:51 +03:00
Leonid Yuriev
6009bac1ed
mdbx: move is_powerof2() and roundup_powerof2() into header.
2020-02-02 20:41:04 +03:00
Leonid Yuriev
e475db7ade
mdbx: add MDBX_DBG_LEGACY_OVERLAP.
...
Change-Id: I7aecb925b553587efd6698dc3d52682ca98aa950
2020-02-02 15:07:04 +03:00
Leonid Yuriev
49d9779c84
mdbx: remove obsolete ASAN-related comment.
...
Corresponding drawback was fixed by 8c7cdfdc79e1ad0a7786d8039a52bffde673f7a5
Change-Id: I43ccf508377dc4b0bf5de6245e88c58dde0fc63e
2020-02-02 02:46:41 +03:00
Leonid Yuriev
a594f79e5f
mdbx: refine/clarify error messages.
...
Change-Id: If2a38bdfb4a9fce176acb87fa452709bcfc5c972
2020-02-02 02:46:41 +03:00
Leonid Yuriev
17fe5f106b
mdbx: check read/write txn overlapping for the same thread (MDBX_TXN_OVERLAPPING).
...
Change-Id: If3488df96bd1903d5e4ca0a1fea504075dbd4a20
2020-02-02 02:46:41 +03:00
Leonid Yuriev
db27654330
mdbx: rename MDBX_LAST_LMDB_ERRCODE and fix description.
...
Change-Id: I9a855871ae8821d0d10472c48b5467fd507c01a5
2020-02-02 02:46:41 +03:00
Leonid Yuriev
1cbad5bd3f
mdbx: don't store thread-id into reader lock-slot in MDBX_NOTLS mode.
...
Change-Id: I8453565a8c0a7c56b6dbd383c31ff5be828c8679
2020-02-01 23:08:07 +03:00
Leonid Yuriev
08753b46a1
mdbx: cleanup tabs (cosmetics).
...
Change-Id: If941ea89d844f98f274da4ddfc3f2ae97986eeb7
2020-02-01 20:44:29 +03:00
Leonid Yuriev
fb1d600597
mdbx: speedup debug/checked build.
...
This resolves https://github.com/leo-yuriev/libmdbx/issues/80
Change-Id: I20596f87db17ce01379dae5f58f4c2b158a04a4a
2020-01-29 03:29:42 +03:00
Leonid Yuriev
c1ad86c368
mdbx: fixes for modern Coverity.
...
This resolves https://github.com/leo-yuriev/libmdbx/issues/81
Change-Id: Id501bf49055b54240da14723aef0115fc3a27672
2020-01-28 19:37:56 +03:00
Leonid Yuriev
7ea1a4e0e8
mdbx: fix key_from_jsonInteger() for MSVC.
...
Change-Id: I3fc6a6da57707750cb2e8429bbaf10ff1de2dde2
2020-01-28 01:47:50 +03:00
Leonid Yuriev
2c08ec21fd
mdbx: fix compatibility (use zero for invalid DBI).
...
Change-Id: I4ab6430eb96d97991cbd0c151dfd98a9930805d2
2020-01-27 03:00:13 +03:00
Leonid Yuriev
d159a8252d
mdbx: refine network-sorting.
...
Change-Id: I086626c3da05b11362612d87eae23371f67ea1b0
2020-01-27 00:47:18 +03:00
Leonid Yuriev
308548e226
mdbx: minor refine/speedup mdbx_page_get().
...
Change-Id: Ia11a76f0255db1a56948438cdc333ebd67d88193
2020-01-26 19:07:00 +03:00
Leonid Yuriev
a8c5daf46a
mdbx: minor refine/speedup mdbx_node_search().
...
Change-Id: Ie3dd42de25e37bff177018cd15108b97cfcb049c
2020-01-26 18:00:35 +03:00
Leonid Yuriev
2ce9ace4d3
mdbx: documenting and checking key and value alignment for MDBX_INTEGERKEY and MDBX_INTEGERDUP.
...
This resolves https://github.com/leo-yuriev/libmdbx/issues/79 .
Change-Id: I819a6eca3018361e5896d5ccce7e4c0ca57c8b38
2020-01-26 14:54:40 +03:00
Leonid Yuriev
1ee1b269e6
mdbx: minor optimization around memcpy().
...
Change-Id: Id0dd4ac693a4ddb6294bdb0f2fc5d2aec69d0efd
2020-01-26 14:44:50 +03:00
Leonid Yuriev
ebcbcbfe31
mdbx: avoud int64-to-double conversion key_from_jsonInteger().
...
More for https://github.com/leo-yuriev/libmdbx/issues/76
This is expected to be a workaround for the MSVC2019 bug
"MSVCRT.lib(ftol3.obj) : error LNK2001: unresolved external symbol __except1".
https://ci.appveyor.com/project/leo-yuriev/libmdbx/builds/30273569/job/lurrftum1nkbu5a3#L109
Change-Id: Ie6da02b14d0b973c7172af063caf4fdc44bf89ac
2020-01-22 19:41:01 +03:00
Leonid Yuriev
b77f4faadd
mdbx: fix major typo in prev commit.
...
More for https://github.com/leo-yuriev/libmdbx/issues/76
Change-Id: I9a3d1adf1467a542b36330978d53cc15f4afbbdb
2020-01-22 03:51:12 +03:00
Leonid Yuriev
bf28856ac5
mdbx: add key-making functions.
...
Related to https://github.com/leo-yuriev/libmdbx/issues/76
Change-Id: I1edc8efd323af9adb53e6c2155e2ea39a1e575f4
2020-01-22 03:43:09 +03:00
Leonid Yuriev
700f3514b3
mdbx: bump version to 0.6.x
...
Change-Id: I925ab0aaefb1a8f9860925c2e8e7c81015428b2e
2020-01-21 00:17:55 +03:00
Leonid Yuriev
2d334185cb
mdbx-tools: rework/fix mdbx_load for custom comparators.
...
Change-Id: I9bc15fb878d1586839768f97567806208bfcc5b8
2020-01-21 00:17:55 +03:00
Leonid Yuriev
2c1d3a3fda
mdbx: refine dbi_open_ex().
...
Change-Id: I32bc1c6609e14ba90b2f4eaf9b8b11ea06f2eb8b
2020-01-21 00:17:55 +03:00
Leonid Yuriev
7d880a37dd
mdbx: refine internal sort.
...
Change-Id: If07d9f6b7a7976e5e048eb1b8b7e0b65c4ed3fdd
2020-01-21 00:17:55 +03:00
Leonid Yuriev
d12b546a7d
mdbx: fix MDBX_APPEND check inside cursor_put().
...
Change-Id: If21dedbd72b3a038252b9dc10c5c6543328362e7
2020-01-21 00:17:55 +03:00
Leonid Yuriev
6184024a80
mdbx: more __has_builtin().
...
Change-Id: Ie23e170e12d96ad47bf2f25c7dde974673109b54
2020-01-21 00:17:55 +03:00
Leonid Yuriev
2bfcbe980e
mdbx: refine/fix dbi_bind().
...
Change-Id: Ic4245c349870198f79efd537cf12d9bdf691b7ca
2020-01-21 00:17:55 +03:00
Leonid Yuriev
0710b07d7c
mdbx: refine/speedup dpl_search().
...
Change-Id: I712e22ea69f23f61c92be976069f09a85831d086
2020-01-21 00:17:55 +03:00
Leonid Yuriev
7c894f0542
mdbx: HNY!
...
Change-Id: Idbd21263408f87ac2715675c9f7ccc6c44d41c9a
2020-01-21 00:17:55 +03:00
Leonid Yuriev
c05875befd
mdbx: refine/speedup internal sort (10-30% faster).
...
- more friendly for Russian Elbrus's predicates (512-bit wide VLIW).
- more CMOV-friendly for x86 (nicely optimized by gcc-9.x and clang-8.x).
- use bitonic sort for small chunks.
- less branches in the outer loop.
Change-Id: I0510f5a0b2c39a19caa9e829a20e34dfbd160a01
2020-01-21 00:17:54 +03:00
Leonid Yuriev
995a26cf19
mdbx-windws: refine/fix handling STATUS_CONFLICTING_ADDRESSES.
...
Change-Id: I501acb2d5d653c74ab210907dd955d7167956af8
2020-01-06 01:23:11 +03:00
Leonid Yuriev
f282ae45e0
mdbx: more unlikely (minor).
...
Change-Id: I9052d89d4b297615af199a0e2f468cda1482297a
2020-01-05 00:49:16 +03:00
Leonid Yuriev
9de65acf3e
mdbx: fix env_set_geometry() for large pagesize.
...
Change-Id: Ide12e705abf76184f839d1670b0ca1c1e1c64da5
2020-01-05 00:49:16 +03:00
Leonid Yuriev
6fa79d49b4
mdbx: fix MDBX_RESULT_TRUE from page_alloc().
...
Change-Id: Ib285e98f967b9aefac8facfba31618a80c5e8129
2019-12-31 20:44:40 +03:00
Leonid Yuriev
66f3c0a77e
mdbx: merge branch 'refine' into devel.
...
Change-Id: I3f6a787c66b4e7fca3c43d72e4b4083782cc94c4
2019-12-31 19:39:22 +03:00
Leonid Yuriev
5eafc6e738
mdbx: minor refine txn_commit().
...
Re-assign `rc` variable to release register from allocation.
Change-Id: Ibafd70efd53591d3bf190417e1b2f3b20299e7d2
2019-12-31 19:38:41 +03:00
Leonid Yuriev
7d1eff5116
mdbx: minor refine cursor_put().
...
Use `rc2` variable to simplify register(s) allocation.
Change-Id: Ie47210a4b494e9aeaa8492830cfbcbbde02b485c
2019-12-31 19:38:41 +03:00
Leonid Yuriev
36c7d7a435
mdbx: minor refine page_alloc (MIN_TXNID).
...
Change-Id: Iac20f79280e5b464b39f7ac5b1efe01585c5bf02
2019-12-31 19:38:41 +03:00
Leonid Yuriev
03a68e87ba
mdbx: fix commit typo (minor).
...
Change-Id: I3e6564eb9a1404c3aaffb7dd9143dc64e7d822af
2019-12-31 19:38:41 +03:00
Leonid Yuriev
8c7cdfdc79
mdbx: fix ASAN issues (minor).
...
This resolves https://github.com/leo-yuriev/libmdbx/issues/73
Change-Id: Ifb59f5ba66321bb362b81085e0f25a82a2d76d5f
2019-12-29 01:19:31 +03:00
Leonid Yuriev
c7ae4ace9d
mdbx: fix assertion for MDBX_NOTLS option.
...
This fixes https://github.com/leo-yuriev/libmdbx/issues/72
Change-Id: I9e2b02e33e7e702eb093c0c1049c54b76d8d23b5
2019-12-28 02:17:38 +03:00
Leonid Yuriev
7b6880bdc9
mdbx-windows: treat STATUS_INVALID_ADDRESS same as STATUS_CONFLICTING_ADDRESSES for some cases.
...
Change-Id: I542c7f4010f880428e3c7b10413e4f98c4aa7b48
2019-12-25 00:46:01 +03:00
Leonid Yuriev
379a789839
mdbx: minor refine MDBX_MMAP_INCOHERENT_FILE_WRITE.
...
Change-Id: I1e77eccc64b470bf3c7aeb8f6b905b72e818f7a0
2019-12-25 00:46:01 +03:00
Leonid Yuriev
bdb4ccb352
mdbx: copy for txn only used dbiseqs.
...
Change-Id: I6fd2d8598b5e86c0d5b8d7eef535e81525cd14ee
2019-12-25 00:46:01 +03:00
Leonid Yuriev
53d5cb0151
mdbx: rework MADV_DONTNEED threshold.
...
Change-Id: I99058b96e9c54c56d37c6c963b01cf18458d37ba
2019-12-24 18:16:04 +03:00
Leonid Yuriev
f2fd2280e4
mdbx: more for QEMU cross-testing.
...
Change-Id: Iad5e7f977c744b2edf1987d38523ba0e1f6e46ab
2019-12-23 00:02:54 +03:00
Leonid Yuriev
2acaaeb2ff
mdbx-chk: fix - don't check some numbers if btree-walking was disabled.
...
Change-Id: I3e1abb7fa7720ecb3fc22e6b4a9b1b56494fb8a0
2019-12-22 14:01:50 +03:00
Leonid Yuriev
a5fb5887f9
mdbx: minor refine/fix lock-related erro logging.
...
Change-Id: Id507819b6b2b0c1a57ec71bd031c5068cb2098e1
2019-12-21 23:33:12 +03:00
Leonid Yuriev
e3d328621e
mdbx-posix: checking for file removal during LCK-seizing.
...
Change-Id: I7626ceda62fc4dac86323bec4194ae46bc19d9d3
2019-12-21 23:33:12 +03:00
Leonid Yuriev
ccb45730f2
mdbx: use page's mp_txnid for basic integrity checking.
...
Change-Id: I50d6f1251e4fd84e535a708e78dd24d84ec53780
2019-12-21 23:33:12 +03:00
Leonid Yuriev
d11bfef36b
mdbx: aligned page-buffer.
...
Change-Id: Id469c353c47a5a486747bf2c21ee8c003cd2d103
2019-12-21 23:33:12 +03:00
Leonid Yuriev
e70a7f620e
mdbx: clarify field description (minor).
...
Change-Id: Ide20e32b4ee6784a7baf2044f52877afbd9ceff1
2019-12-21 23:33:12 +03:00
Leonid Yuriev
7abd625c05
mdbx-tools: print warning about Windows system limitation.
...
Change-Id: I8a7765bfe604dc2a4016d3e27622d41f93f06b04
2019-12-21 23:33:12 +03:00
Leonid Yuriev
c79879f290
mdbx-tools: update mdbx_stat captions.
...
Change-Id: Ic78f7e5bec97a67e8dc3ce21847dcaa1f66a45f9
2019-12-21 23:33:12 +03:00
Leonid Yuriev
e8686a4170
mdbx-cmake: add MDBX_FORCE_ASSERTIONS.
2019-12-21 23:33:12 +03:00
Leonid Yuriev
78e146692a
mdbx: alter rule for wipe of steady-point.
...
Change-Id: Idac7ffd5e89d282aebcbe7382e20a960d5b39f25
2019-12-21 23:33:12 +03:00
Leonid Yuriev
cddf9ca8a2
mdbx: toggle of readers-refresh after wipe steady-point.
...
Change-Id: I43985fb667b727a8b41dcd5c33e6012160dee16e
2019-12-21 23:33:12 +03:00
Leonid Yuriev
c554b5c45d
mdbx: move toggle of readers-refresh to sync_locked().
...
Change-Id: I99adf32fb39d600a37c4b25f7e8ea49e5bac6cf0
2019-12-21 23:33:12 +03:00
Leonid Yuriev
0350fc41f8
mdbx: clean copy for undo meta.
...
Change-Id: I2abc1d701dc52caa268210489aa27803fd7a2c3b
2019-12-21 23:33:12 +03:00
Leonid Yuriev
edbdb682d5
mdbx: refine page_flush().
...
Change-Id: I8270226e4eae721404dbb56d5d591bceaa4613b9
2019-12-21 23:33:12 +03:00
Leonid Yuriev
7f9502fbfe
mdbx: rename txn_dbi_exists().
...
Change-Id: I3a18d73cb49cfa814f1400743ed889d9c3e979ce
2019-12-21 23:33:12 +03:00
Leonid Yuriev
867c537655
mdbx: refine sync-to-disk (lazy/dsync fds).
...
Change-Id: I4bad81a1a0b5ccbefdc598f58a7d683fa7d8b504
2019-12-21 23:33:12 +03:00
Leonid Yuriev
2db5736554
mdbx: purpose-oriented openfile().
...
Change-Id: I657689dab538af9a27c27f58eeb4e5ca43bdbc38
2019-12-20 03:20:26 +03:00
Leonid Yuriev
13d68a1200
mdbx: rework & clarify backlog for gc-update.
...
Change-Id: I31f2b6919810b894e69af34bfee9a5b7f5a513fc
2019-12-19 01:09:54 +03:00
Leonid Yuriev
b6a00a881e
mdbx: refine page_get().
...
Change-Id: I7399782f891d3c6baebedb918f8beffc509e66df
2019-12-18 03:06:07 +03:00
Leonid Yuriev
996b0fa8d3
mdbx: add/remove __hot attribute for internals.
...
Change-Id: Ia2aa7b81cb3f7342aece720b3cf0bd04f6d8ca64
2019-12-18 03:04:50 +03:00
Leonid Yuriev
83a11c1645
mdbx: more __restrict for pointers.
...
Change-Id: Ic58bf084f0e80f16aa695cddf3dd2c5627f8a836
2019-12-18 03:03:38 +03:00
Leonid Yuriev
66ca7a519e
mdbx: rework MDBX_DBG_DUMP to avoid performance degradation.
...
Change-Id: I556ae61e03fdf7d6798072bbc2583ae5d01cbf9f
2019-12-17 18:02:13 +03:00
Leonid Yuriev
4eccf901ea
mdbx: rename MDBX_NOSYNC to MDBX_SAFE_NOSYNC for clarity.
...
Change-Id: I1d04600832cb7c86c578d72f3d6163ee22d134b7
2019-12-15 15:17:24 +03:00
Leonid Yuriev
a77921dc67
mdbx: more __always_inline as workaround for wrong non-inlining of functions.
...
Change-Id: Id4f44de7a883f2d5fbc00e4c3ed915a8c4f07bfe
2019-12-15 00:57:03 +03:00
Leonid Yuriev
61d2e07cf0
mdbx: fix minor typo.
...
Change-Id: Id82209bfeeb6b6ade00e8aaecc0b9ce4b817e832
2019-12-14 00:57:45 +03:00
Leonid Yuriev
76099d951c
mdbx-windows: interpret ERROR_ACCESS_DENIED from OpenProcess() as 'process exists'.
...
Change-Id: I22e3e3d3d72531e76848793f1e3522d0c1767618
2019-12-13 16:17:31 +03:00
Leonid Yuriev
bf6d09a878
mdbx-windows: use manual-reset events to avoid non-atomic races.
...
Change-Id: I93b9f114c7c1a205dba18dcc363cf4ba8a27d7e0
2019-12-09 10:59:57 +03:00
Leonid Yuriev
041188c5e2
mdbx-windows: don't use FILE_FLAG_NO_BUFFERING for compatibility with small DB-pages.
...
Change-Id: Ib8e51ef0ae713455c52e08447f06baede080f368
2019-12-09 10:55:14 +03:00
Leonid Yuriev
60f4134841
mdbx: disable by-default workaround for obsolete E2K bug.
...
Change-Id: I9d6aaf0154e3c9f03dab7948575f4792a13dc988
2019-12-08 14:56:56 +03:00
Leonid Yuriev
f22c127c44
mdbx-tools: reformat (cosmetic).
...
Change-Id: I077a266e0a646f3283453d429bff87545839fada
2019-12-07 03:08:03 +03:00
Leonid Yuriev
8fed86b368
mdbx: avoid use MREMAP_MAYMOVE for simplification, add TODO.
...
Change-Id: I6991a411fcced941ef76d58ece608e34e4cdb355
2019-12-07 03:06:00 +03:00
Leonid Yuriev
3dccbb25a7
mdbx: minor refine man-files.
2019-12-05 01:43:57 +03:00
Leonid Yuriev
ab5f3bc444
mdbx: remove extra MDBX_SYNC_IODQ.
2019-12-05 00:23:56 +03:00
Leonid Yuriev
a659a7a619
mdbx-cmake: fix/refine options.
2019-12-04 23:44:16 +03:00
Leo Yuriev
df4057db6f
mdbx-cmake: refine installation.
...
Change-Id: I085aba06b957eb1a0e9ce24791bcb5bcc496a609
2019-12-04 22:09:57 +03:00
Leonid Yuriev
84323a8a4c
mdbx: minor workaround for LCC 1.23.19 (E2K) bug.
...
Change-Id: Ia575f8759b037832e268ac1e7d437ed92fa2d5e8
2019-12-04 17:07:32 +03:00
Leonid Yuriev
5cb7989e8d
mdbx: fix Valgrind issue (minor).
...
Change-Id: Ia651a29a0eac7a1279dd7cb30b3247a1f41ab37e
2019-12-03 15:45:24 +03:00
Leonid Yuriev
398b90fb1c
mdbx: fix Coverity warnings (minor).
...
Change-Id: I15c6c707cdeef55c9ce82fe7d5ed0d86224391f5
2019-12-03 15:16:23 +03:00
Leonid Yuriev
d1e2749337
mdbx-cmake: add installation.
...
Change-Id: Ie2f67e51ddaf9444b3c0a817cd5f8e7e37ec8d0e
2019-12-03 03:23:39 +03:00
Leonid Yuriev
bf6bbecbd0
mdbx: add __maybe_unused for flush_incoherent_mmap (minor).
...
Change-Id: If9dea7ccebcb9821bdea68281f8d3f0544e82914
2019-12-03 00:45:27 +03:00
Leonid Yuriev
116a6a8cfe
mdbx: don't create steady-checkpoint for db-shrink in utterly-unsync mode without prev steady-points.
...
Change-Id: I1ec0d6cb9c31af0d151964d06d390ec247c2ac41
2019-12-02 21:08:49 +03:00
Leonid Yuriev
8b4be26ca1
mdbx: rework gc-backlog preparation.
...
Change-Id: I003d7995116a25c2bfdd32b663d4e605a796c17d
2019-12-02 21:08:49 +03:00
Leonid Yuriev
ed986ecbb5
mdbx: remove creation obsolete legacy checkpoints.
...
Change-Id: I2d88b5ef4853d9379188fc450e87e11b28754c75
2019-12-01 23:39:07 +03:00
Leonid Yuriev
2b5eec2295
mdbx: drop internal MDBX_ALLOC_KICK.
...
Change-Id: I819277765992c20ea4076043d5b5470f3ca4e827
2019-12-01 23:39:07 +03:00
Leonid Yuriev
90b69aaac2
mdbx: rework auto-sync & wipe-steady from reclaiming.
...
Change-Id: Id0c298ebfaabafc2e5d4031368bee5a3b6c33dab
2019-12-01 23:39:07 +03:00
Leonid Yuriev
ed9d1a1542
mdbx-tools: cleanup tools from deprecated API.
...
Change-Id: Id1c64edfa7a470ad76f0499d1f58ec482458f8d6
2019-11-30 01:29:48 +03:00
Leonid Yuriev
d83de5bd09
mdbx: deprecate some API.
...
Change-Id: I0770f5ec89dc0cc71381dea1d420c2a3b506ce7f
2019-11-30 01:29:48 +03:00
Leonid Yuriev
2cfe7758cd
mdbx-tools: refine built-in help/usage.
...
Change-Id: Ia06666f48f50e088c796c85e263885ca7181c6a0
2019-11-30 01:29:48 +03:00
Leonid Yuriev
7d74aa6ae8
mdbx-load: add -r
(rescue) and -q
(quiet) options.
...
Change-Id: I6dd8003a6f1c8b3fe7a25ce1f6cac3735a2c9734
2019-11-30 01:29:48 +03:00
Leonid Yuriev
e25daab399
mdbx-dump: add -r
(rescue) and -q
(quiet) options.
...
Change-Id: I35b32a61fbf301651099009d818722b3b893a039
2019-11-30 01:29:48 +03:00
Leonid Yuriev
01ae72a570
mdbx-dump: fix output (don't print version caption to stdout).
...
Change-Id: Id9986a79c0bceb3637c3aee4b669adab6a68dc2f
2019-11-30 01:29:48 +03:00
Leonid Yuriev
2f383d8de3
mdbx: use getmntent() for determine filesystem type.
...
Change-Id: I92921c5083a822c891889668e51726e2f1ce98cd
2019-11-30 01:29:48 +03:00
Leonid Yuriev
4e4a56eda2
mdbx-tools: fix mdbx_chk for new limits API.
...
Change-Id: I67f077296a477ea258b0b0d9e02319f2134a8a74
2019-11-30 01:29:48 +03:00
Leonid Yuriev
d80654fa07
mdbx: rework max key-length and limit API.
...
Change-Id: I3d783f69d4ea438d8a8a0505fa9163715fbdcf9c
2019-11-30 01:29:48 +03:00
Leonid Yuriev
9bd88d80d0
mdbx-chk: refine user-break (ctrl+c) handling.
...
Change-Id: I5b1a71a2945990091c0f472d5e2256ace8dc2065
2019-11-28 12:37:42 +03:00
Leonid Yuriev
c00f484813
mdbx: fix nested txn.
...
Change-Id: Iff752d23a880ed4f5322145446be9c989b837479
2019-11-26 15:27:45 +03:00
Leonid Yuriev
acde45ff3a
mdbx: pre-sync range before mresize().
...
Change-Id: Id205394cf488b5a954ec021af7f2924a549c9a0e
2019-11-18 16:29:47 +03:00
Leonid Yuriev
4af2deb8cd
mdbx: drop obsolete assertion & refine related code.
...
Fixes https://github.com/leo-yuriev/libmdbx/issues/69
Change-Id: Iedf988e9788acb250493032bf55f5c75784652cc
2019-11-18 16:29:30 +03:00
Leonid Yuriev
f285ab59e6
mdbx: fix mdbx_runtime_flags for ALLOY-build.
...
Change-Id: I16a7e3475043066cea7733ed31b7e5d5a5824516
2019-11-18 11:50:21 +03:00
Leonid Yuriev
497aa53e28
mdbx: fix minor typos.
...
Change-Id: Ib0c62eace9c766844a3f44124b525a3c6373c620
2019-11-18 00:13:27 +03:00
Leonid Yuriev
72c944974a
mdbx-tools: refine mdbx_chk (use boot-id, explicitly notify about sync-to-disk).
...
Change-Id: I520df734d9b806bc94b53f0817b71cd8223a7a62
2019-11-18 00:09:47 +03:00
Leonid Yuriev
d390300e60
mdbx: fix lck-file mode-flag while opening existent DB.
...
Change-Id: I3b8d446f6a620e911c0d5e325d8d912f2ca19d93
2019-11-18 00:02:37 +03:00
Leonid Yuriev
d20b9d9ed7
mdbx: move boot-id from LCK to meta.
...
Change-Id: I7a371feb1a2c43e3606c516fe7b4c7d7a4ff6e73
2019-11-18 00:02:37 +03:00
Leonid Yuriev
7ef61e12c0
mdbx: refine update_gc() for large-transaction cases.
2019-11-17 23:57:03 +03:00
Leonid Yuriev
c250500afd
mdbx: performs long assertion-loops only when audit enabled.
2019-11-17 23:57:02 +03:00
Leonid Yuriev
baee0be7ad
mdbx-tools: minor refine mdbx_chk (use const strings).
...
Change-Id: I402c8d97cfa860f21b97bd20b6d6feb190af654e
2019-11-17 23:57:02 +03:00
Leonid Yuriev
7703312b88
mdbx-tools: fix mdbx_chk to avoid creation of missing DB.
...
Change-Id: Ieaeee75c1c8f8b1e426817df86ef1769e691e504
2019-11-16 00:23:03 +03:00
Leonid Yuriev
af6aa30c7c
mdbx: don't sync-on-close deleted files.
...
Change-Id: Ie9358dfd79c9c5b26777e690079b3f081f0a7158
2019-11-16 00:23:03 +03:00
Leonid Yuriev
84ae40172e
mdbx: refine/fix madvise(MADV_DONTDUMP).
...
Change-Id: I3cb56d5d704a60c17da9ae2a276587cf495ce30c
2019-11-16 00:23:03 +03:00