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