1068 Commits

Author SHA1 Message Date
Leonid Yuriev
e7b3a15d54 mdbx: fix/refine mdbx_setup_dxb() for case open existing DB with new geo-params.
Change-Id: Iebb9b19c8f81d8629c4b28ed547d27f1a139dc7f
2019-11-04 00:22:13 +03:00
Leonid Yuriev
3cc8e5222c mdbx: undo/promote geo-changes made by child txn on abort.
Change-Id: Ieb291231909ef8e2a0205ffe1708d66b67ac5af7
2019-11-04 00:22:13 +03:00
Leonid Yuriev
415cb5f886 mdbx: refactor me_dbgeo usage and osal-mmap/mresize().
Change-Id: I1f29c953abcbd4f2bab7ba52e7dd9da85ea48354
2019-11-04 00:22:13 +03:00
Leonid Yuriev
b4729bd1d6 mdbx: minor refine pgno_align2os_bytes() usage.
Change-Id: I4b83792c298aaa4c3ac5f412489a31f639f6d016
2019-11-04 00:22:13 +03:00
Leonid Yuriev
d869e20941 mdbx-chk: don't treat mm_geo.current < dxbfile_pages as an error
This it is valid usual case on Windows, since windows can't shrinking a
mapped file. So we shouldn't see an error while checking such files on Linux.

Change-Id: I830c236c9b2fc1eb21768fceb24e67b9486c0795
2019-11-04 00:22:13 +03:00
Leonid Yuriev
b274c4a730 mdbx: fix to avoid ERROR_USER_MAPPED_FILE on Windows (minor race condition). 2019-11-04 00:22:13 +03:00
Leonid Yuriev
b4a5728455 mdbx: rework readahead management.
Change-Id: Ic1e2f3f5bd7fb2e9fd8d5820816e3d2def6ec1b3
2019-11-04 00:22:13 +03:00
Leonid Yuriev
9c89e7c739 mdbx: refine discarding of unused pages (MADV_FREE/MADV_REMOVE/MADV_DONTNEED).
Change-Id: I657eb7ef9060214d6ed3d75a2deeebc9ff3df5f5
2019-11-04 00:22:13 +03:00
Leonid Yuriev
40f31ea936 mdbx: add atomic_yield().
Change-Id: I0c3be400a880fd97bf1c254fd70a242982aac3f8
2019-11-04 00:22:13 +03:00
Leonid Yuriev
3ee269ddb6 mdbx: support for txnid of the last modification for sub-dbs/kv-spaces.
Change-Id: Ifb6684df57608cda88aa9134b275f442358ff46d
2019-11-04 00:22:09 +03:00
Leonid Yuriev
84bff89eb1 mdbx: conform to and use -Wpedantic.
Change-Id: I3056af7ae53c5a7c3ecbfe828ab1d5ee94c2bc26
2019-10-26 00:02:28 +03:00
Leonid Yuriev
c694325ab7 mdbx: fix minor warnings.
Change-Id: Iaa614a7d4325d3de6d863c20020c62954da7a1bf
2019-10-25 23:09:23 +03:00
Leonid Yuriev
a0ec89e468 mdbx: fix check-for-unique for the case when more than one new database are opening (i.e. with creation of LCK-files).
Change-Id: If712e1ead2e0cdfd72a115bd442d613a8d730839
2019-10-25 21:05:44 +03:00
Leonid Yuriev
42f8154c39 mdbx-cmake: rename MDBX_USE_VALGRIND option.
Change-Id: I985befb6c60e8a8c8db1b5d9dd085eb4645b038b
2019-10-25 08:10:15 +03:00
Leonid Yuriev
b905dea2ee mdbx: fix Coverity warning (insignificant).
Change-Id: I046b0e7d5b16f6f1b91dac4d96616dbcd7c601d2
2019-10-25 08:08:24 +03:00
cryptozoidberg
edf5ddad4f mdbx: get rid of macro redefinition warnings under MSVC.
This resolves https://github.com/leo-yuriev/libmdbx/pull/63

Change-Id: Id5ca071fe3060b8d508a28fd48ae13430a7e78a8
2019-10-24 22:15:28 +03:00
Leonid Yuriev
8de8072078 mdbx: minor refine options and build-info.
Change-Id: Iadabd8524991c10e76c0d38e4eef10c65224906e
2019-10-24 22:12:14 +03:00
Leonid Yuriev
81fd0beb1a mdbx: rework/fix unaligned access.
Change-Id: Ib0208e78786ac84551384ed57ac580fe0717840e
2019-10-24 22:12:14 +03:00
Leonid Yuriev
b7d27c1b36 mdbx: rework internals for using C99 flexible array member (preparation for -fsanitize=undefined).
Change-Id: I0d1836d6108ef379c43231720ef703ff69fc426d
2019-10-24 22:12:14 +03:00
Leonid Yuriev
70350bad81 mdbx-cmake: require C99 or use C11 when available.
Change-Id: I241e8c38232750efb537a0b581f822540f207cdc
2019-10-24 22:12:14 +03:00
Leonid Yuriev
83a0c31b35 mdbx: converts macros to inline functions, rework page_fill_enough() and thresholds.
Change-Id: I18ff12bdcafac37cc73b6228788ce5bbc752773f
2019-10-24 22:12:14 +03:00
Leonid Yuriev
ed515d4642 mdbx: fix static library build on Windows. 2019-10-24 11:51:25 +03:00
Leonid Yuriev
411ed3e578 mdbx: fix Coverity warnings (minor).
Change-Id: I8636560583c11eeaa6d37ba9f7f66e1afc2232da
2019-10-21 11:46:17 +03:00
Leonid Yuriev
efa855b497 mdbx: drop unused dpl_mark4removal().
Change-Id: I23dcbbad8b0fc4691a755125c2e58fa9b529423b
2019-10-21 10:00:28 +03:00
Leonid Yuriev
2eab9c2957 mdbx: refine/optimize list-related loops.
Change-Id: I15b2305d1400819fdc1ae0ad306df70bc5f20388
2019-10-21 07:50:11 +03:00
Leonid Yuriev
e6462dfe58 mdbx: minor refine mdbx_chk output.
Change-Id: I2c2560910d2908afe0f4a3aee0dc465ca7e24030
2019-10-21 07:50:11 +03:00
Leonid Yuriev
f5d75a85b0 mdbx: minor refine setup_dxb() logging.
Change-Id: I985ded5fce6d829563591d9b5ddb5b172100e43d
2019-10-21 07:50:11 +03:00
Leonid Yuriev
081603e6bc mdbx: alter update-gc for intermediate refunding of pages.
Change-Id: I551e94ed897c04af09f59a3fd96c694ef243d3a5
2019-10-21 07:50:11 +03:00
Leonid Yuriev
4e386be914 mdbx: don't hold dbi-lock during tree deletion inside mdbx_drop().
Change-Id: I29824271ba09a4443196bc1207279a257a8e26c0
2019-10-21 07:50:11 +03:00
Leonid Yuriev
15ce797863 mdbx: refine/optimize mdbx_page_alloc().
Change-Id: Iebbb8a611a82a379cf23b683bb21c9b6626ea9a5
2019-10-21 07:50:11 +03:00
Leonid Yuriev
36477ef408 mdbx: minor refine/optimize mdbx_page_new().
Change-Id: Ie1b227cbeceec8b1fc64630b8d1c12210d98dc20
2019-10-21 07:50:11 +03:00
Leonid Yuriev
b11d655173 mdbx: refine/optimize update-gc (remove anything in our spill list from parent's dirty list).
Change-Id: I945bdbc1431bac39173121210e1a08787e027b0c
2019-10-21 07:50:11 +03:00
Leonid Yuriev
781a814864 mdbx: refine/optimize update-gc (filter-out list of dirty-pages from loose-pages).
Change-Id: I73caa11e8a6378c307eb2e0a8199d0428dc14e05
2019-10-21 07:50:11 +03:00
Leonid Yuriev
363841caf8 mdbx: rework/optimize pages refunding.
Change-Id: I9315ea9187eaff4572536ab9c895fb6995eebd94
2019-10-21 07:50:11 +03:00
Leonid Yuriev
7f0dd35702 mdbx: more checking in mdbx_dirtylist_check().
Change-Id: I4bf5b3ee03a816f34000586b760fd7b01994d3aa
2019-10-21 07:50:11 +03:00
Leonid Yuriev
5c54566c5c mdbx: rework/fix retire-to-parent-txn pages (fix LMDB bug).
Change-Id: I81c3d48f19b4c7e62d77cfecc167235374f66402
2019-10-21 07:50:11 +03:00
Leonid Yuriev
659933d0c9 mdbx: rework mdbx_page_flush(), providing flush_begin & flush_end.
Change-Id: Id7366d427d204b444ab76c880ad1c0757a7de94e
2019-10-21 07:50:11 +03:00
Leonid Yuriev
6a01955810 mdbx: rework atomic-ops & safe64_reset_compare() to avoid use libatomic on true-32-bit arches.
Change-Id: I27aa8dc9505a469e35a7fe06660e9944e4c1974c
2019-10-19 00:16:48 +03:00
Leonid Yuriev
a907109cce mdbx: fix MDBX_node for big-endian.
Change-Id: I436fc01e379908df07bcb829f0d9cf6999c8c133
2019-10-16 14:22:38 +03:00
Leonid Yuriev
0f3994d506 mdbx: fix/refine mdbx_is_dirty().
Change-Id: I70bb46b47e7c313fdfd0b130ee55b82dd75e92d2
2019-10-16 11:34:33 +03:00
Leonid Yuriev
b84bb4f805 mdbx: add MDBX_TXNID_STEP macro for debugging.
Change-Id: I4768c8b39f3317ec3a5da8627d736f2f28bf0d51
2019-10-15 23:53:00 +03:00
Leonid Yuriev
8467552f0b mdbx: fix internal audit.
Change-Id: I9b3360216bbfc1a1a6f6052aca78331b01dc80ec
2019-10-15 23:52:17 +03:00
Leonid Yuriev
5f8ecf0144 mdbx: fix Valgrind support.
Change-Id: I246bddb6536fa03e46d302dcdc6700007ffbe06c
2019-10-15 21:54:38 +03:00
Leonid Yuriev
a0e9c33e54 mdbx: rework page loosing/retirement.
Change-Id: I194bee1ba21f5bac53342924f00555620151a43d
2019-10-15 21:54:31 +03:00
Leonid Yuriev
ee77920a2e mdbx: refine loose-pages refunding.
Change-Id: I7b76476e8c0ac3d35c1de53edfc943a14389d167
2019-10-15 21:48:09 +03:00
Leonid Yuriev
06193f4267 mdbx: refine page-number-list checking.
Change-Id: I89524075b416eb8bc63b1e0910baf3a37d6589f4
2019-10-14 17:28:53 +03:00
Leonid Yuriev
137b19aac2 mdbx: workaround for Apple-LLVM bug.
Change-Id: Ib1b504240d71fe20cc306b81b175bbb63737bea0
2019-10-12 23:05:22 +03:00
Leonid Yuriev
3df5f60a70 mdbx: include <malloc_np.h> for FreeBSD & OpenBSD.
Change-Id: I4b9c29bf63a03c281017f50bbdfe3495740804af
2019-10-12 22:47:27 +03:00
Leonid Yuriev
bb922c208c mdbx: add mdbx_is_readahead_reasonable().
Change-Id: Iac090a9050d6b046b62b2c79cefbc70cc62c9144
2019-10-12 22:38:36 +03:00
Leonid Yuriev
c51a6e6d95 mdbx: move madvise(MADV_RANDOM) to under control of MDBX_NORDAHEAD flag.
Change-Id: Ied2473ad054797a20ec2c177106a9a7e85fab1d1
2019-10-12 11:07:21 +03:00
Leonid Yuriev
e04ea50c18 mdbx: refine madvise(MADV_REMOVE_OR_FREE_OR_DONTNEED), add 256K threshold.
Change-Id: I1fe314fa10062dca0870ec035454370bfacf20f0
2019-10-12 11:07:21 +03:00
Leonid Yuriev
f6ba670cd0 mdbx: minor fix for __gnu_linux__.
Change-Id: Ic262bf863927fe86ab0091d809388569f0d59bec
2019-10-12 11:07:21 +03:00
Leonid Yuriev
8921da2787 mdbx: fix internal comments.
Change-Id: Ica95587f74501e78259805cba4393a430af0437b
2019-10-12 11:07:21 +03:00
Leonid Yuriev
4560ddcd1e mdbx: refine ending of read-only transactions.
Change-Id: I56d07d75e4f5f64fd34e5b780024c145eb8299ed
2019-10-12 11:07:21 +03:00
Leonid Yuriev
99e9956410 mdbx: make mdbx_env_set_geometry() behavior equal to LMDB (i.e. fixed size).
Change-Id: I26dfcbb03362dde6fbf4b0f59530ddbf4e2b0723
2019-10-11 16:54:55 +03:00
Leonid Yuriev
8861f1377c mdbx: roundup buffer size inside env_copy2fd().
Change-Id: Iaa9d1adb934d36a28be3804683ffbaf43552d54b
2019-10-11 14:16:49 +03:00
Leonid Yuriev
4d692821cb mdbx: partial workaround for ASAN false-positive (due internal bug).
Change-Id: Ib86e187e58f3efbb5e5da95219f1b6e990022b9a
2019-10-11 14:16:15 +03:00
Leonid Yuriev
3c4d87520e mdbx: drop NEXT_LOOSE_PAGE macro.
Change-Id: Icee989a7bcd89a5fcd2664c6a9a99cdc546cc8f1
2019-10-11 01:06:26 +03:00
Leonid Yuriev
39c1238d8e mdbx: refine Valgrind support (i.e. avoid false-positives).
Change-Id: I688b2e905d0b705c34ab29df29bfd0a9bcdde8c9
2019-10-11 01:06:26 +03:00
Leonid Yuriev
ab01078cd7 mdbx: refine/fix SORT_IMPL macro.
Change-Id: Ifc2968ead891c97442cec85076f7824a285f84b8
2019-10-11 01:06:12 +03:00
Leonid Yuriev
a6aad9c918 mdbx: use malloc_usable_size() and analogues.
Change-Id: I35b3fe0f1a1c884ba2013c9a861057b38f6a2174
2019-10-10 22:36:53 +03:00
Leonid Yuriev
e519b8f315 mdbx: fix memleak after write-txn state rework.
Change-Id: I001d1d82c8091de1420617e98820ca7d6b69fe4a
2019-10-10 22:15:47 +03:00
Leonid Yuriev
e5caec031f mdbx: fix warnings from old/obsolete clang (minor).
Change-Id: I4eaaa45bf2ebd68efb572dad04ba025e2608f968
2019-10-10 00:29:43 +03:00
Leonid Yuriev
273af26244 mdbx: rework nested transactions and write-transaction state.
This resolves https://github.com/leo-yuriev/libmdbx/issues/62

Change-Id: Icbd762ca69ab1ccf8c3440c71931d2ac14599a1b
2019-10-09 23:27:01 +03:00
Leonid Yuriev
1c9c637701 mdbx: refine internal audit for intermediate state checking.
Change-Id: Iba2b7e5b8df09374c9bf941cc5efa1ed6e826288
2019-10-09 13:37:46 +03:00
Leonid Yuriev
cee1aeaf26 mdbx: fix comment typo.
Change-Id: I2c48e039ee0b135966a66aa2f33ba5c4897a4bc3
2019-10-09 13:37:24 +03:00
Leonid Yuriev
64016c86f6 mdbx: add minor assertions info mdbx_env_walk().
Change-Id: Ibeff6a52088fc858d00b6625a2754aceffb1a382
2019-10-09 13:36:50 +03:00
Leonid Yuriev
6efe0686c9 mdbx: fix Coverity warnings.
Change-Id: I70734c5bf7e3d1088522c0dccd88948865f8192f
2019-10-06 19:05:08 +03:00
Leonid Yuriev
7d621f6f0a mdbx: auto-define _GNU_SOURCE under control of MDBX_DISABLE_GNU_SOURCE.
Change-Id: I314d88b86517e3c44ad35fe02d3a27cb987c6d60
2019-10-06 18:45:52 +03:00
Leonid Yuriev
440bfec193 mdbx: allow 256-byte pages.
Change-Id: I697de67683fb040ea0e360515a5a0839d97e9aa6
2019-10-05 23:36:55 +03:00
Leonid Yuriev
8291de71cb mdbx: support keys and dupsort values upto maxnode (half of a page) size.
Change-Id: I7717d55a0d6a7fdc4dc3caba8f8d3ad46a132f61
2019-10-05 23:36:55 +03:00
Leonid Yuriev
d9e1d7f23a mdbx: fix assertions inside pnl_search().
Change-Id: I735e54823b64a1ca03d7132c9ccc4e443d9b25a5
2019-10-04 18:52:15 +03:00
Leonid Yuriev
aa92d6b7e7 mdbx: add paranoid assertions to qsort and bsearch macros.
Change-Id: I68efcf83576dd01e2f0c37ca8afb30967f5369a9
2019-10-04 18:52:15 +03:00
Leonid Yuriev
529d484884 mdbx: fix audit for retired-pages tracking (minor, i.e. false-negative).
Change-Id: Ied44bc18efec7178ca5cc5f3324cfc75be24125a
2019-10-04 18:52:15 +03:00
Leonid Yuriev
39d43a5b57 mdbx: alter mdbx_cursor_put() paths.
Change-Id: I1836f8237162ffa34ce432038131fb6171fb7104
2019-10-04 18:52:15 +03:00
Leonid Yuriev
9e92ea2372 mdbx: add mdbx_page_check().
Change-Id: I8350d774f841726ca967be732593e33bfa8a6230
2019-10-04 18:52:15 +03:00
Leonid Yuriev
8768641872 mdbx: refine/simplify MDBX_node.
Change-Id: Idb3843727a409c3ef8d1d54e226a6f578a57c32e
2019-10-04 15:59:03 +03:00
Leonid Yuriev
daddd53793 mdbx: refine mdbx_page_copy().
Change-Id: I73ad272b468430e7bf79462750887e75ef71bd60
2019-10-04 15:59:03 +03:00
Leonid Yuriev
bf818ddf1e mdbx: fix assertion inside mdbx_txn_begin().
Change-Id: I0184c094e0f1fdc1a3ed9aede803cbfc2595ff05
2019-10-04 15:59:03 +03:00
Leonid Yuriev
315e58578d mdbx: don't log empty file read error upon creation it.
Change-Id: I9cb9f9bee23817331f91ffd0847c599cf1dc0a25
2019-10-02 00:12:04 +03:00
Leonid Yuriev
4d49112a56 mdbx-test: refix logging.
Change-Id: I8852cca84669b4da2a994f2d5d2cec833e21f2f6
2019-10-02 00:12:04 +03:00
Leonid Yuriev
e1e2e2e935 mdbx: provide additional info via mdbx_env_info_ex().
Change-Id: Icfc751da73f090833800ad5429a9b296b4e34700
2019-10-01 17:09:57 +03:00
crypto.sowle
f918d89408 mdbx: English translation for osal.h
Change-Id: Iec7c3334f1866df243e7fcec89858ef37415a4a2
2019-10-01 16:27:38 +03:00
Leonid Yuriev
f0246463c0 mdbx: rework sync_timestamp.
Change-Id: I0e9ef9722735f89055814ba7eec0610ecdea8f0a
2019-10-01 15:01:33 +03:00
Leonid Yuriev
5693fad51d mdbx: add mdbx_osal_monotime_to_16dot16().
Change-Id: Ia65057def67cebf67252a77665efde4223b14d10
2019-10-01 14:47:26 +03:00
Leonid Yuriev
83da954725 mdbx: rework env_sync() for MDBX_NOMETASYNC, add mdbx_env_sync_poll().
Change-Id: I4d212c663853b00e221d17cb8483353231497b48
2019-09-30 00:15:13 +03:00
Leonid Yuriev
91ee841fc2 mdbx: clarify mdbx_env_set_flags().
Change-Id: I45d9af8cbaf9710e78c93d157c70fc2d305f3100
2019-09-30 00:15:13 +03:00
Leonid Yuriev
87f8c01ac4 mdbx: add space argument for oom-callback.
Change-Id: I27634e02046df375fffae66de3124e8cd90cc61c
2019-09-30 00:15:13 +03:00
Leonid Yuriev
86496e4480 mdbx: refine retired-next-reader insode mdbx_txn_info().
Change-Id: Iba57365cc4b7f4f09a0698502bc7aafcb6e67478
2019-09-28 14:41:49 +03:00
Leonid Yuriev
dcd3c497d9 mdbx-windows: rename mdbx_dll_handler() to avoid confusion with callbacks.
Change-Id: I1ee9e9aa46da33f06cf935d3be059f938416efb5
2019-09-28 00:46:16 +03:00
Leonid Yuriev
e41369fbc6 mdbx-build: minor fix build-info & options.
Change-Id: I72020c99a081845a155d7fda2ff30b7907124760
2019-09-27 11:33:30 +03:00
Leonid Yuriev
20447c877d mdbx: refine mdbx.h and API description, etc (5 of 5).
Change-Id: I851736cccb4d0271d6f351e1358cc5c4e1257bb4
2019-09-27 02:28:17 +03:00
Leonid Yuriev
1ab33333bc mdbx: refine options and build-info.
Change-Id: Ib1a778dd27a0ea8b3a05484b2208e2222736b2d3
2019-09-25 19:03:04 +03:00
Leonid Yuriev
40ee895aae mdbx: refine internal debug facilities.
Change-Id: I934cb8587f07c59268b16a0dd99daeb7ac440e62
2019-09-24 10:07:50 +03:00
Leonid Yuriev
a0025d84fd mdbx: refine txnid-safety for 32-bit archs.
Change-Id: I21d3a50fbc7ae0c625c51e919cb214740c1e97cb
2019-09-23 23:04:39 +03:00
Leonid Yuriev
b3c2118eb4 mdbx: explicity types inside LCK-file, reserve ABA-solver for 32-bit archs.
Change-Id: I2d1235365709858e2deb9f195f0fe8403721c705
2019-09-23 23:04:39 +03:00
Leonid Yuriev
3549744f40 mdbx: incremental/combined linear+binary search for dirty-pages list.
Change-Id: I20f606a0a5d3729bfc92cb20c9db00cc1971d2ad
2019-09-23 14:24:01 +03:00
Leonid Yuriev
f3a51be7ff mdbx: rewrite internal bsearch for pages-lists.
Change-Id: I77615a2146d83d4304c05c3bafb8bfc89a1a4fd0
2019-09-23 14:24:01 +03:00
Leonid Yuriev
aceab9be44 mdbx: replace internal qsort implementation (up to 25% faster).
Change-Id: I20cd1c7cf9d5d7dbf70f5fb1865efeecb4bc42fc
2019-09-23 14:24:01 +03:00
Leonid Yuriev
5a94d734cc mdbx: auto-sorting for dirty-pages list.
Change-Id: I12f3de68c020aeacba2ac80cedf4cae6cb590c6b
2019-09-23 14:23:55 +03:00
Leonid Yuriev
83fbcb660f mdbx: add mdbx_txn_info().
Change-Id: I7bef500c23899874c996694b7cc52a38366730f0
2019-09-21 18:15:43 +03:00
Leonid Yuriev
0b500798df mdbx: refund loose-pages.
Change-Id: I33a5916b1a0876dde28f88658ab20a6a29fdccd7
2019-09-21 18:15:43 +03:00
Leo Yuriev
44d94a76e5 mdbx: maintaining retired pages sequence. 2019-09-21 01:36:55 +03:00
Leo Yuriev
c80a5cabd6 mdbx: internal rename befree to retired.
Change-Id: Ic72449fe242df0f0f88b671e56570e00b5e6202f
2019-09-20 20:44:35 +03:00
Leo Yuriev
8423a0a8bd mdbx: txnid-safety for non-64-bit and/or not-atomic platforms. 2019-09-20 20:23:25 +03:00
Leonid Yuriev
d15a6b935c mdbx: avoid "unused static function" warnings.
Change-Id: I438a9fa3fa099ad96bca5c1af1f528da4a01ddff
2019-09-19 14:04:10 +03:00
Leonid Yuriev
ab456bf376 mdbx-cmake: fix MDBX_BUILD_FLAGS list-case.
Change-Id: I4c2ce187e31ba3f7b225049b1c96a81fbfd9dead
2019-09-19 03:31:48 +03:00
Leonid Yuriev
7c39c16829 mdbx-tools: rework mdbx_reader_list() & mdbx_stat.
Change-Id: I0524cad93ca439e74eba9486cbcbeacf4253dd84
2019-09-19 01:21:35 +03:00
Leonid Yuriev
2f2df1ee76 mdbx: implement MDBX_TXN_CHECKOWNER option.
Change-Id: Ia283dc9c4d984de1e74915481118f7f4fb5ba5c8
2019-09-18 22:34:05 +03:00
Leonid Yuriev
8fa718c5f9 mdbx: refine mdbx.h and API description, etc (4 of 5).
Change-Id: I36955c54f55facfb31b403f12fe6fd16c789e167
2019-09-18 04:00:57 +03:00
Leonid Yuriev
89db804c1a mdbx: refine geo-params management inside txn.
Change-Id: I70acfe4542ea3f8d878bdb7bfba422233dcce8ef
2019-09-17 23:53:38 +03:00
Leonid Yuriev
d1327b016d mdbx: refine PID checking mdbx_env_close_ex() for closing-after-fork.
Change-Id: I5669b3477ef2e5fc30d6211668a01d3ac78ee163
2019-09-17 01:04:25 +03:00
Leonid Yuriev
86f2710c2e mdbx: return MDBX_RESULT_TRUE/FALSE from mdbx_env_sync_ex().
Change-Id: Ia39051ef137df7892181d936e1139ab2a7c94ab4
2019-09-16 22:30:58 +03:00
Leonid Yuriev
e03addc8f9 mdbx: ensure to sync meta-mages in env_sync_ex().
Change-Id: I540c8353d47acc2e46d6c3a26cfe3e4f6d9249bf
2019-09-16 21:54:43 +03:00
Leonid Yuriev
78da9e52c4 mdbx: return consistency info from mdbx_env_stat().
Change-Id: Ia53259a8590118adf01b03a6eb7835c62376ad1f
2019-09-16 20:55:45 +03:00
Leonid Yuriev
0d4092f4ea mdbx: add to env_copy() support for pipe/socket.
Change-Id: Ib2fc0249b494b885f28265f877de9953f089b403
2019-09-16 19:24:36 +03:00
Leonid Yuriev
b19e180fab mdbx: refine mdbx.h and API description, etc (3 of 5).
Change-Id: I05890bdf2e29c6c5a4b1f861f5bfda920e970126
2019-09-16 02:25:06 +03:00
Leonid Yuriev
4022110955 mdbx: reset returning-by-pointer result on error.
Change-Id: I5e0aa1eae343dc9acc36a95e4f7e11104efc83ce
2019-09-15 22:10:39 +03:00
Leonid Yuriev
5f22a5568d mdbx: allow MDBX_MAPASYNC for particular txn.
Change-Id: I0ed1a7567a3f7bfbae2bfa6995ad8f6c327d91a9
2019-09-15 22:10:15 +03:00
Leonid Yuriev
1402a511a4 mdbx: drop dup-defines MDBX_TXN_NOMETASYNC, MDBX_TXN_NOSYNC, MDBX_TXN_RDONLY. etc.
Change-Id: I7edef9477e15cb6c2291fe82c1b014ff81d2383a
2019-09-15 18:19:46 +03:00
Leonid Yuriev
4bcc1eef09 mdbx: disallow multi-opening without MDBX_DBG_LEGACY_MULTIOPEN.
Change-Id: I0e11d686954bd8c89dac9a46b4c5e17bc0dd6419
2019-09-12 21:41:57 +03:00
Leonid Yuriev
c8928675c6 mdbx: automatically create database directory.
Change-Id: Ic1d4c9ce6f29924f5c112afc3065f08584307d39
2019-09-12 14:56:07 +03:00
Leonid Yuriev
1d08f9e673 mdbx: refine mdbx.h and error strings (1 of 5).
Change-Id: Iaa6c4afeb9268d916ef1e8e23fdf12b7f603869f
2019-09-12 14:18:10 +03:00
Leonid Yuriev
eb4159ac88 mdbx-posix: support to close environment after fork() from a child process.
Change-Id: I20ab9cf4525bfcacd10043e2afe7e1aa26a2af6c
2019-09-12 01:19:23 +03:00
Leonid Yuriev
4b979826ec mdbx: fix update_gc() to avoid leaking values from uninit malloc'ed mem.
Change-Id: I5b98fc9f5d26ffdfe90af81d9fdd07f49c1e85c9
2019-09-12 00:09:25 +03:00
Leonid Yuriev
712bad5935 mdbx-cmake: avoid '-NOTFOUND' inside MDBX_BUILD_FLAGS.
Change-Id: Ia8974d0ffa092a5ffbfe553af49926c3532c88a3
2019-09-11 22:04:28 +03:00
Leonid Yuriev
8231aa5b47 mdbx-posix: avoid Coverity warnings (don't try to recover mutex if unlock failed).
Change-Id: Iaa5b567c810b7e3fd6f5003111e41b752d83b8bb
2019-09-11 21:47:31 +03:00
Leonid Yuriev
7d9d3528c5 mdbx-cmake: fix definitions prefix. 2019-09-11 21:32:25 +03:00
Leonid Yuriev
4ea1d2f8d2 mdbx: accept MDBX_EACCESS and MDBX_EPERM for without-LCK read-only mode.
Change-Id: I024243184c06ddf86bcc62d6e4b1b951d21789d5
2019-09-11 20:40:06 +03:00
Leonid Yuriev
6fc3b89f79 mdbx: add reader_check_timestamp info LCK.
Change-Id: I2f53b5996def8ff1d87a011fc662b94e2be3c467
2019-09-11 19:13:24 +03:00
Leonid Yuriev
0d8b59fa3b mdbx: check readers while opening.
Change-Id: Ieefc78d0d3922e3f98efa557f8e67aada68c4841
2019-09-11 18:58:51 +03:00
Leonid Yuriev
8f08e1c7ed mdbx: fix cross-build & qemu-testing issues.
Change-Id: I6b2343cc4e08c3cb706a190c4c515965182733a2
2019-09-11 18:58:51 +03:00
Leonid Yuriev
228a74c41d mdbx-chk: refine/fix for MAX_DBI case.
Change-Id: Ie0deb701bcb35634951c8080d57294682937b5b7
2019-09-11 18:58:51 +03:00
Leonid Yuriev
17ba1f4d22 mdbx-cmake: fix/refine RPATH for tools.
Change-Id: Id97db43475b757f74eb5a5532390e0e65d610df0
2019-09-11 02:09:21 +03:00
Leonid Yuriev
5cfcc0e3c1 mdbx-cmake: add template for build amalgamated source code.
Change-Id: Ie0908ab62460eb51f2f050fcce915fe4e64f61ca
2019-09-11 02:09:21 +03:00
Leonid Yuriev
5e9e417cf6 mdbx-install: refine cmake-install, install man-pages. 2019-09-11 00:56:07 +03:00
Leonid Yuriev
acc6969594 mdbx-tools: minor refine mdbx_chk.
Change-Id: I71db479944a305f03019d985b91a39cd51ba9981
2019-09-10 19:28:07 +03:00
Leonid Yuriev
aa1c609c28 mdbx: set MIN_TXNID=1.
Change-Id: If67d371c0681d7b85886c83b423d1b9c039d18c3
2019-09-10 19:27:46 +03:00
Leonid Yuriev
7433436ec5 mdbx: add man-page for mdbx_chk, refine other.
Change-Id: I0c5026f0b753525ec5b21e11957c23bf570fbe0b
2019-09-10 19:01:39 +03:00
Leonid Yuriev
d1d1258591 mdbx-build: made 'config.h' optional.
Change-Id: Iafc968cb7000f77cf23169ce07b532386bbce029
2019-09-10 15:52:37 +03:00
Leonid Yuriev
3ec081c187 mdbx-build: add 'make dist' target.
Change-Id: I72c2ff2f90e9da4664bf542761fe445bb713a67a
2019-09-10 02:28:41 +03:00
Leonid Yuriev
e7095e9ada mdbx: remove UTF8-BOM (preparation for 'make dist').
Change-Id: I2d0ccc9f7bbed6d57b2fe6ef156f33531a4eeb69
2019-09-10 02:18:50 +03:00
Leonid Yuriev
be72cd81dc mdbx: add MDBX_MIN_PAGESIZE & MDBX_MAX_PAGESIZE.
Change-Id: I66ba4b637ed5acabb734bbd380e618e01019ade2
2019-09-10 02:13:33 +03:00
Leonid Yuriev
449307a69f mdbx-build: sourcery pinning (but cmake requires manually config-files removal for now). 2019-09-09 14:29:05 +03:00
Leonid Yuriev
0667f4f211 mdbx-windows: define the dll's entry point only depending on the MDBX_AVOID_CRT option. 2019-09-09 11:32:50 +03:00
Leonid Yuriev
1829a2a5c1 mdbx: workaround for FreeBSD shared mutexes initialization.
- pass inprocess_neighbor into mdbx_lck_init().
 - don't perform mutexes initialization if LCK already used in the current process.
 - don't perform additional in-process mutex initialization if LCK used in any other process(es), except for FreeBSD.
2019-09-04 11:46:03 +03:00
Leonid Yuriev
a45c0d9026 mdbx-posix: minor fix lck_op(). 2019-09-04 03:51:18 +03:00
Leonid Yuriev
a55cffaae8 mdbx-osx: ignore fcntl(F_RDADVISE) error (RAM-disk, etc). 2019-09-04 03:09:18 +03:00
Leonid Yuriev
b8ac1daae0 mdbx-tools: print git-tree while show version info. 2019-09-03 23:43:29 +03:00
Leonid Yuriev
6495e2f87c mdbx-windows: add cmake-generation of extra-import-library for ntdll.dll 2019-09-03 21:18:05 +03:00
Leonid Yuriev
967900e2e9 mdbx-cmake: refine/fix MDBX_BUILD_TARGET for Windows. 2019-09-03 19:13:26 +03:00
Leonid Yuriev
263837094e mdbx-build: refine CMake scripts, add build options.
Change-Id: Ie3db2f6439d5cc7ef3cd9ebb5b8e5d5d34f743dd
2019-09-03 02:56:01 +03:00
Leonid Yuriev
874418a301 mdbx: rework POSIX-lck and merge with Linux-lck.
Change-Id: Id8fbc81b9a2ad3a3a7499ecf9a012314e1f8062a
2019-09-03 02:43:14 +03:00
Leonid Yuriev
098f8a0d77 mdbx: add MDBX_READERS_LIMIT.
Change-Id: I2ee97004c084aeb6290c56b8f6415adc464a1bcb
2019-09-03 02:43:14 +03:00
Leonid Yuriev
6f39d8228d mdbx-cmake: add MDBX_ALLOY_MODE option.
Change-Id: I486f737fc24a48ecd3444859bee2132c9606aef5
2019-09-03 02:43:09 +03:00
Leonid Yuriev
5a87faf9af mdbx-build: start using CMake (incomplete; no properly installation for now). 2019-09-03 02:33:57 +03:00
Leonid Yuriev
f81374a9ce mdbx-build: amalgamation.
Change-Id: Ic32de6ee119df2bc12136b882f4f7cabaa1314a9
2019-09-03 02:30:55 +03:00
Leonid Yuriev
b42462c484 mdbx: minor/paranoid fix mdbx_strerror(). 2019-08-31 13:34:05 +03:00
Leonid Yuriev
113b29e68d mdbx: add LCK-tracking to resolve double-open issue with POSIX-filelocks.
Change-Id: I29377000e4dde3c43527302b55d0daec58b709f5
2019-08-31 00:55:15 +03:00
Leonid Yuriev
a66cefb198 mdbx-tools: use ANSI2OEM-versions of mdbx_strerror() for Windows.
Change-Id: I15500eec60b20e45c2881499a809a00fb4d661fa
2019-08-30 00:01:38 +03:00
Leonid Yuriev
368b48b41b mdbx-windows: add mdbx_strerror_ANSI2OEM() and mdbx_strerror_r_ANSI2OEM(). 2019-08-30 00:01:38 +03:00
Leonid Yuriev
10ab5dc032 mdbx: refine mdbx_strerror() and mdbx_strerror_r().
Change-Id: I47588cea9f281e71d0e6b81a86a50124e55bc3d4
2019-08-30 00:01:38 +03:00
Leonid Yuriev
51e7159f36 mdbx: dynamically discarding unused tail pages of DB file.
Change-Id: I1a0eee50cd27de26521e65c9f7ea51a527a0424e
2019-08-30 00:01:38 +03:00
Leonid Yuriev
327e5feb97 mdbx-windows: one more fix build for Windows/SDK pair.
Change-Id: Ifa480703b153625d0fa96a15d70bd0c452352cb6
2019-08-29 23:48:51 +03:00
Leonid Yuriev
648f991a5b mdbx-windows: fix build with modern SDK but for legacy Windows.
Change-Id: Ic443815838715be8cc6565d4d7735651af0b58cc
2019-08-29 23:21:22 +03:00
Leonid Yuriev
60d6685665 mdbx: fix typo inside mdbx_setup_debug().
Change-Id: I1df92033889572cefa6ff6a54ec2cff9d977fc12
2019-08-28 04:56:36 +03:00
Leonid Yuriev
25e20315ae mdbx: minor fix for MSVC2019.
Change-Id: I628049e7c3a653ec3b549c45450677ec5ab883a7
2019-08-28 04:53:03 +03:00
Leonid Yuriev
9ddfa4f9c8 mdbx-windows: use PrefetchVirtualMemory(). 2019-08-28 02:35:34 +03:00
Leonid Yuriev
fd0c92927a mdbx: refine usage of posix_fadvise()madvise()/posix_madvise()/F_RDADVISE. 2019-08-27 21:35:43 +03:00
Leonid Yuriev
8329f5b6a1 mdbx-load: fix backslash escaping (for compatibility with ITS#9068).
In fact MDBX not affected by this bug, since a very long time mdbx_dump was fixed to not produce a problematic sequence of backslash.

For compatibility with LMDB after http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=commit;h=5c012bbe033f9bbb273078b07dded59f080d348d

Change-Id: I8ff8e003ae29504605402b937becd4fb37120408
2019-08-27 14:50:19 +03:00
Leonid Yuriev
b3a9b3ca1a mdbx: avoid refs to mdbx_runtime_flags from tools. 2019-08-27 00:29:15 +03:00
Leonid Yuriev
55ca2f0ed1 mdbx: makes handling NDEBUG option more convenient.
Change-Id: Icb8f2ddc66273d4ef4b17f1a27e6a34d2ffadd47
2019-08-26 22:57:14 +03:00
Leonid Yuriev
5eb3b77efe mdbx-posix: rework LCK seize/destroy. 2019-08-25 22:40:35 +03:00
Leonid Yuriev
2536dc47ac mdbx: refine features-macros for xBSD. 2019-08-25 16:04:33 +03:00
Leonid Yuriev
a03c5d1f3f mdbx-posix: destroys shared mutexes in the last process. 2019-08-25 14:18:06 +03:00
Leonid Yuriev
ed58af2512 mdbx-posix: minor fix mdbx_lck_destroy(). 2019-08-25 05:20:58 +03:00
Leonid Yuriev
137d652d77 mdbx: refine attribute-based macros. 2019-08-25 04:37:15 +03:00
Leonid Yuriev
7780b76cf0 mdbx: fix internal typo.
Change-Id: Ib31e8f02d816758a66b5e6b260714e25648f66c2
2019-08-25 04:36:30 +03:00
Leonid Yuriev
93f82f47bd mdbx: refine setup_debug(), add MDBX_DBG_LEGACY_MULTIOPEN.
Change-Id: I5d144f6fa27b8f5885fa0a0fbd11fe1d44bcc41c
2019-08-25 04:36:28 +03:00
Leonid Yuriev
33a4f31f92 mdbx: fix reclaiming_detent() for out-of-txn case.
Change-Id: I5275f4f3676b125e860f6a7c204a5f9cdc65dd5f
2019-08-23 17:46:33 +03:00
Leonid Yuriev
4ceaf842fe mdbx: add timed auto-sync feature.
Change-Id: Ia9b8529fda321d5f78b306f270d157a78f708916
2019-08-23 13:13:20 +03:00
Leonid Yuriev
68e0076ca3 mdbx: rework auto-sync by volume feature.
Change-Id: I0a34a65a974f28c6f0a950c11d55a43cfcfcab22
2019-08-23 12:05:09 +03:00
Leonid Yuriev
6f8238e1e9 mdbx: LCK-format version 3.
The LCK file is re-created at every opportunity when the process that
opens the database is the only one that works with it. Thus the change
of the format of the file LCK creates only minimal compatibility
problems.

Applications using different versions of _libmdbx_ will be able to work
with one database alternately, but not at the same time. This appears to
be an acceptable inconvenience in exchange for new features.

Change-Id: I9414b3fffd53d5519c8172c57345b1eaf6e51c77
2019-08-23 03:38:11 +03:00
Leonid Yuriev
de88707946 mdbx: don't shrink DB less largest reader inside mdbx_env_set_geometry().
Change-Id: I42a5d3a08313fb9590a6730bc0dc06c7b4f16634
2019-08-23 02:34:54 +03:00
Leonid Yuriev
0c63859459 mdbx: minor refine copy_asis().
Change-Id: I5d6240a99cba7e16e39f6466a7e582a068ab746a
2019-08-23 02:34:54 +03:00
Leonid Yuriev
65fd8be9b5 mdbx: fix env_sync_ex() for out-of-txn case.
Change-Id: Ie19bbe1d467ce4fc83f8dfc1e367070f532ee335
2019-08-23 02:34:45 +03:00
Leonid Yuriev
9168f8c69d mdbx: fix NULL-deref bug (Coverity).
Change-Id: If48f1780d2887b6c2041effc6ca0f158eddb29c2
2019-08-21 02:07:02 +03:00
Leonid Yuriev
e04bfc05fa mdbx: rename MDBX_OSX_SPEED_INSTEADOF_DURABILITY option.
Change-Id: I1d0a05880507da0781ccd2bff5fa68610ad884a9
2019-08-20 15:04:52 +03:00
Leonid Yuriev
6f0a11f155 mdbx: merge branch 'osx-try'.
This resolves https://github.com/leo-yuriev/libmdbx/issues/49.

Change-Id: Ib20c3898e99ca229f10e7d41cda3989b8b4a832c
2019-08-20 03:18:31 +03:00
Leonid Yuriev
657d37c9e3 mdbx: add MDBX_OSX_SPEED_OR_DURABILITY build-time #define for MacOS. 2019-08-20 02:48:30 +03:00
Leonid Yuriev
ccbf3a2bcf mdbx: rework mdbx_filesync(). 2019-08-20 00:56:06 +03:00
Leonid Yuriev
261f697d8c mdbx: skip msync(MS_ASYNC) on Linux > 2.6.19.
Change-Id: Ic1f631ef856a09cf62353c2b0092b0341ecf4fa2
2019-08-19 21:31:23 +03:00
Leonid Yuriev
226cb3ac90 mdbx: use F_FULLFSYNC on MacOS. 2019-08-19 20:41:02 +03:00
Leonid Yuriev
91088af935 mdbx: initial OSX support. 2019-08-13 02:10:03 +03:00
Leonid Yuriev
7960f67ea6 mdbx-chk: "backed-pages > file-pages" isn't error in the non-exclusive or read-only modes. 2019-08-12 15:44:15 +03:00
Leonid Yuriev
bceace7a09 mdbx: clarify shrink/grow-related internals. 2019-08-12 15:44:15 +03:00
Leonid Yuriev
5244c1a9c2 mdbx-chk: "backed-pages less filesize" isn't an error on Windows.
Change-Id: Iea212a469225b0617221cdf292352eb1f896b4c6
2019-08-12 12:23:02 +03:00
Leonid Yuriev
cfaed9d761 mdbx-chk: don't use internal mdbx_filesize().
Change-Id: I539b92f345ba7884629b702b2568ca805466be3a
2019-08-12 11:40:58 +03:00
Leonid Yuriev
5b09105a6d mdbx-chk: check filesize/backed-pages/alloc-pages.
Change-Id: I231e461d81d3157441f67d2c28470283eb68920a
2019-08-12 02:55:53 +03:00
Leonid Yuriev
bc3d1a84cc mdbx-chk: use mdbx_env_stat2() and mdbx_env_stat2() to avoid races.
Change-Id: Ib956c19bec0b8bf9999cf1e97b8b630f119a0906
2019-08-12 02:55:53 +03:00
Leonid Yuriev
17407c9ecc mdbx: add mdbx_env_info2(txn) and mdbx_env_stat2(txn).
Change-Id: Ifd128185a084c9dc61da140eeeaaf4b6022d3537
2019-08-12 02:55:53 +03:00
Leonid Yuriev
d6a2f98ef5 mdbx: more env-signature checks.
Change-Id: I0155821e9b03731f755e43640d8dc9e5c12acf62
2019-08-11 22:54:06 +03:00
Leonid Yuriev
a6449f36f6 mdbx-chk: more for false-positive 'wrong idl entry' fix.
Change-Id: I66e42a98c8f4a5c58e12adb666984fed8a70bece
2019-08-11 21:41:01 +03:00
Leonid Yuriev
69f831af0b mdbx: refine lck-posix implementation. 2019-08-11 19:13:29 +03:00
Leonid Yuriev
036144eed4 mdbx-chk: fix false-positive 'wrong idl entry' error(s).
Исторически mdbx_env_info() получает информацию вне контекста
транзакции. Поэтому транзакция чтения, внутри которой проверяются записи
GC, может быть не последней. При этом в более новых транзакциях
последние страницы могут быть возвращены в пул нераспределенных с
уменьшением номера последней выделенной страницы. Тогда в проверяемом
снимке в записях GC могут быть номера страниц больше, чем возвращает
mdbx_env_info() в поле mi_last_pgno, что трактовалось в mdbx_chk как
ошибка.

Change-Id: I51ae102603e1eda77d6b6d511e2094410ab8c2c2
2019-08-11 16:49:15 +03:00
Leonid Yuriev
8917fb30bf mdbx: make lck-wait ops breakable for linux/posix.
Change-Id: Ieb113f3c01bceced99b122988f93331d5619c2be
2019-08-11 12:22:41 +03:00
Leonid Yuriev
bf0e0382fc mdbx: use O_DIRECT for db-copy.
Change-Id: Ib17fcdc2eba3382ed841a1e5e0a4f69f88c2491d
2019-08-11 01:14:52 +03:00
Leonid Yuriev
bdc77df921 mdbx: fix race-with-close for lck-posix.
Change-Id: Ie601ebbec8cc47d26935e12a57abe991aec1cb41
2019-08-11 00:07:21 +03:00
Leonid Yuriev
673f867e3c mdbx: minor refine Linux lck-implementation.
Change-Id: Ib95398f8d86eb94fc55b506066f78eda4a29f4a8
2019-08-10 23:25:17 +03:00
Leonid Yuriev
c6369e68a3 mdbx: draft support for non-Linux POSIX-platforms (FreeBSD, MacOS, etc).
Change-Id: Iaee2dc31b134fe92fc67508d011835a60f3723e6
2019-08-10 23:24:31 +03:00
Leonid Yuriev
ce64c5aa37 mdbx: use OFD (open file) locks on Linux.
Change-Id: Id9718da28d4e367b0ff10976d2afaaf3d18122fb
2019-08-10 12:53:16 +03:00
Leonid Yuriev
a008b0b16f mdbx: description of lck-implementation for Linux.
Change-Id: I8fe5f49a19e5cc61198ecd96dfe479d0e17c10a5
2019-08-09 21:36:02 +03:00
Leonid Yuriev
1798904cf4 mdbx: description of internal lck API.
Change-Id: Ic677ba62ca566409a44234a1c0d8b0b41158fe86
2019-08-09 21:34:19 +03:00
Leonid Yuriev
663f3f3c58 mdbx: conditionally use cacheflush() for linux < 2.6.11
Change-Id: Id34c67797e14f709f767bf1b687319cd2dfef874
2019-07-22 00:19:15 +03:00
Leonid Yuriev
a6bad26e1d mdbx: rename/clarify flush_noncoherent_cpu_writeback().
Change-Id: I05a5df8d2a283159f449fc1e68a14d0a1861a714
2019-07-21 22:52:21 +03:00
Leonid Yuriev
f39044124e mdbx: clarify/rework invalidate_mmap_noncoherent_cache() for MIPS.
Change-Id: I70c279c2ba67191c7cb93cd8875082eb9c8e58b7
2019-07-21 22:52:16 +03:00
Leonid Yuriev
0b8ac37450 mdbx: reduces number of getpid() calls for checking PID against fork().
PID check could be ommited:
 - on Linux when madvise(MADV_DONTFORK) is available. i.e. after the fork()
    mapped pages will not be available for child process.
 - in Windows where fork() not available.

Change-Id: I4dd6bcb209cfc816ae3ec43825ea913d2249663c
2019-07-16 11:52:10 +03:00
Leonid Yuriev
4adb1ab2d8 mdbx: portability - rename lck-posix.c to lck-linux.c
Change-Id: I0ecee2b1a5d8e664eb795e5f5df2fa2d3cb73c83
2019-07-15 00:29:46 +03:00
Leonid Yuriev
2544a621e7 mdbx: portability - support for non-_GNU_SOURCE mode.
Change-Id: I9988d0ea8a9ddc06c799c65c4b2728bd17ff77e7
2019-07-14 15:13:43 +03:00
Leonid Yuriev
41f00485fd mdbx: portability - allows operation without mremap().
Change-Id: I7fed42d51259e582e9dbc401c78f7f829a80f71c
2019-07-14 15:11:59 +03:00
Leonid Yuriev
97e4f66d16 mdbx: portability - support for musl libc.
Change-Id: Ida8a3bd9da896bc6c00bef931ddf3dce65bef8eb
2019-07-14 15:08:10 +03:00
Leonid Yuriev
cf7160bda2 mdbx: portability - don't include malloc.h on BSD.
Change-Id: I67f580c073bfe52fbd2e4ff599354e6d0f597e95
2019-07-14 15:08:02 +03:00
Leonid Yuriev
097b274aa4 mdbx: portability - use C11 aligned_alloc().
Change-Id: I61819614ce355c8a2597c9b26997458b3d16081c
2019-07-14 15:07:54 +03:00
Leonid Yuriev
8f7ea1844b mddx: portability - compatibility with BSD-style __assert().
Change-Id: Ic18f2de8a23597c62fab07041aeb62960e82c37a
2019-07-14 15:07:47 +03:00
Leonid Yuriev
b3286bad16 mdbx: portability - fix __dll_hidden/__hidden typo.
Change-Id: Iccd225d8c77eafdccc7f021809c26843974153e4
2019-07-14 15:07:16 +03:00
Leonid Yuriev
3ac2af61aa mdbx: cleanup msvc-compat feature test defs.
Change-Id: I2c61bcecedc32beb3b0d70180da9e52cb7e6c9eb
2019-07-13 12:07:14 +03:00
Leonid Yuriev
eefbb7f063 mdbx: remove extra prep_backlog_data() inside update_gc().
Change-Id: Ic6250159c5abe03ed0705c7a432c5eb5b17b790e
2019-07-09 15:58:48 +03:00
Leonid Yuriev
4ecf78163d mdbx: fix/refine mdbx_find_largest().
Change-Id: Ib40ca0014da18793be0bdae5133806304ad42819
2019-07-09 03:27:23 +03:00
Leonid Yuriev
53563e75bb mdbx: fix DB-shrinking race with copy-asis & readers.
Change-Id: I1e05616de03d814850a1c8ad20e83941b2d1c911
2019-07-09 00:41:04 +03:00
Leonid Yuriev
bd5078347b mdbx: refine backlog preparation inside update_gc().
Change-Id: Ib18842c2922afba794d6ab69337580bcea29bfe6
2019-07-09 00:41:04 +03:00
Leonid Yuriev
06f16464aa mdbx-test: adds more jitter while DB opening.
Change-Id: Ic0f03f4fbe064ea00f719baa11b28cc24aafcb5b
2019-07-07 21:21:54 +03:00
Leonid Yuriev
1f89c494ff mdbx: refines OFF_T_MAX if it is not defined.
Change-Id: Ic453140e01725493cad0c98e73244c747d5f490e
2019-07-07 20:04:39 +03:00
Leonid Yuriev
8606803344 mdbx: adds paranoid mvcc-checks into read transactions.
Change-Id: I7f0f05010306b02b3b1ab8478217de70ffd211a0
2019-07-07 19:51:06 +03:00
Leonid Yuriev
41de36e93d mdbx: avoids infinite copy_file_range-loop when file is unexpectedly truncated.
Change-Id: I5a542a49fa4ac9ced8ca60266a084d52d3618804
2019-07-07 18:42:14 +03:00
Leonid Yuriev
7e1e142104 mdbx-chk: fix/refine error handling for sub-DBs.
Change-Id: I42460793bbe47815add1b3f61f3746f671a749d9
2019-07-07 01:47:10 +03:00
Leonid Yuriev
e2f37908b9 mdbx: fix/refine error handling while DB-pages walking.
Change-Id: If910e96cc7c30577531aab24b5a9573e5fe9126d
2019-07-06 21:25:11 +03:00
Leonid Yuriev
40112ebd62 mdbx: engage copy_file_range() for env_copy_as_is.
Change-Id: I7ea17914d80500ffa70451b80920d726f0e9c2f8
2019-07-01 18:37:36 +03:00
Leonid Yuriev
6960c45e59 mdbx: avoids EFAULT "Bad address" while copy-as-is if DB is swapped-out from RAM.
Change-Id: I711efc1c54a04745bd561bc5e1db5e6f6d8b7115
2019-07-01 17:55:58 +03:00
Leonid Yuriev
2e60256978 mdbx: drop EPIPE/SIGPIPE handling (since pipes are disallowed).
Change-Id: I56d4539333edea93cc1a2c3606cf959c82b98b19
2019-07-01 16:39:18 +03:00
Leonid Yuriev
38110579ba mdbx: drops mdbx_write(), using mdbx_pwrite() instead of.
Change-Id: Iff3de2d5ef3fa2e92607d46b96d4526e464e593b
2019-07-01 16:39:18 +03:00
Leonid Yuriev
5b88fe819c mdbx: fix pwrite() for WRITE_MAX.
Change-Id: If4924d20c1e267c2d3a190c860b89fc2fda0d517
2019-06-24 02:14:50 +03:00
Leonid Yuriev
cf004dddbc mdbx: use single cursor instance inside mdbx_env_walk().
Change-Id: I72cade64468a42fd27ebb4955d71ecbbabe64987
2019-06-24 02:14:50 +03:00
Leonid Yuriev
728f98d3de mdbx-check: refine leaf-pages info (cosmetics).
Change-Id: I0fdb467f1c1d51bfcdcef5edfe99c8e9ad66037e
2019-06-23 14:26:11 +03:00
Leonid Yuriev
bbf8ef0a4b mdbx-chk: fix space-usage statistics info.
Change-Id: I0cbbbc481f2e6dc37b29f6603ec1ead43b5d1864
2019-06-23 14:07:13 +03:00
Leonid Yuriev
05cf301774 mdbx: bump version to v0.3.0
Change-Id: Ic09361eda834c75d4fdb37dcbe5e8edbf0317f9b
2019-06-22 22:23:25 +03:00
Leonid Yuriev
47beba1782 mdbx: more 'unlikely'.
Change-Id: I472e4a922590cd4680a48416611cfd894fa120db
2019-06-22 22:23:17 +03:00
Leonid Yuriev
e3f8dc5501 mdbx: rework RECLAIMING inside update_gc().
Change-Id: I9cf592476780bfdb346472baa12497d68a3d5aad
2019-06-22 22:23:17 +03:00
Leonid Yuriev
be0ec1d38d mdbx: fix GC corruption due deep recursive rebalance from update_gc().
Change-Id: I810250deb25cd625e737000282b434e3158ef8cc
2019-06-22 02:00:47 +03:00
Leonid Yuriev
eecec74e21 mdbx: more unlikely (minor).
Change-Id: Id6139473b3e6a7c3f099acc64db3180448294d0a
2019-06-21 02:11:28 +03:00
Leonid Yuriev
52bc4a7f41 mdbx-check: minor refine to avoid deeply recursion.
Change-Id: I67f83a232ef47899f43c242b7e6295de4d7ec909
2019-06-20 21:08:31 +03:00