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