Commit Graph

479 Commits

Author SHA1 Message Date
Leonid Yuriev
111befb695 mdbx: refine befree-store inside freelist_save(). 2018-08-12 21:19:18 +03:00
Leonid Yuriev
559e7bc8de mdbx: fix MDBX_EKEYMISMATCH while update multi-value with MDBX_CURRENT. 2018-08-10 18:39:19 +03:00
Leonid Yuriev
1d716c043d mdbx: fix assertions. 2018-08-10 18:33:59 +03:00
Leonid Yuriev
bc45eb30fb mdbx: add checking result from mid2l-functions.
Change-Id: I8c2b4110c335b5632e4c71d6b8304f3ab437696e
2018-08-10 12:32:02 +03:00
Leonid Yuriev
c472300b13 mdbx: add MDBX_PNL_MAX and checking size of lists.
Change-Id: I32e31d2caf676e1e96cc4f82610544b5c5ee3a6d
2018-08-10 12:31:29 +03:00
Leonid Yuriev
b4fd29a67b mdbx: fix assert-condition inside mdbx_pnl_xappend().
Change-Id: Id5ac89c85b7e673c44d60a626c805fe666d221bc
2018-08-10 09:36:03 +03:00
Leo Yuriev
e0fcd6e0ec mdbx: add PTHREAD_MUTEX_ERRORCHECK for shared mutexes.
Change-Id: Ib9520b6bc68b294088298b1901278fab824ea43e
2018-08-02 18:36:45 +03:00
Leo Yuriev
6a51343b89 mdbx: fix 'db_dummy' inside mdbx_dbi_open_ex().
Change-Id: I70a21c9b77a43c5af749da5723fa965487a056b0
2018-08-02 11:14:46 +03:00
Leo Yuriev
d72ba6fd69 mdbx: fix Coverity warning (minor). 2018-08-01 21:31:56 +03:00
Leo Yuriev
275b80e086 mdbx: fix mdbx_page_get().
Fix commit 32c63077a4
Change-Id: I7649c3c65c19013e1b367e7554fbe823ea0511d2
2018-08-01 20:45:49 +03:00
Leo Yuriev
cb70cb18fc mdbx: use 'short' for lck-type (minor). 2018-08-01 18:31:09 +03:00
Leo Yuriev
5ed725dc29 mdbx: minor refine mdbx_txn_renew0(). 2018-08-01 18:31:09 +03:00
Leo Yuriev
e06ab1d2a5 mdbx: explicit call mdbx_rpid_clear(). 2018-08-01 18:31:09 +03:00
Leo Yuriev
ac54a3959d mdbx: add fallback2shared for mdbx_lck_exclusive(). 2018-08-01 18:31:09 +03:00
Leo Yuriev
5a1f388db5 mdbx: drop unused mdbx_lck_upgrade(). 2018-08-01 18:16:40 +03:00
Leo Yuriev
dbf66ec0bb mdbx: add __printf_args into defs.h
Change-Id: I0e6da5115bc427d04eb3ab59184152275c2a7cae
2018-07-28 17:59:56 +03:00
Leo Yuriev
32c63077a4 mdbx: check page bound inside mdbx_page_get().
Change-Id: I7649c3c65c19013e1b367e7554fbe823ea0511d2
2018-07-25 11:36:17 +03:00
Leo Yuriev
21858201e0 mdbx: fix nasty suspend_and_append() bug.
Change-Id: I043adcff2e6c040426a51b5d4b15bac849e6dd9f
2018-07-24 00:18:47 +03:00
Leo Yuriev
dfea68270a mdbx: fix assertion inside mdbx_suspend_threads_before_remap().
Change-Id: If01fc5f655922c55b3955f2b00c93b80328c5232
2018-07-19 08:48:50 +03:00
Leo Yuriev
f425e98eb5 mdbx: fix mdbx_env_compact().
Change-Id: Ie269b45c3d0325cb1b2d82f4ed1c18f8b3fe4212
2018-07-06 15:25:14 +03:00
Leo Yuriev
20a61f273c mdbx: set MDBX_FATAL_ERROR when mdbx_env_open() failed.
Change-Id: If02d670c7ce3a5dd696a87848df28ffe817c6922
2018-07-06 15:08:33 +03:00
Leo Yuriev
8e0f5bea4a mdbx: minor fix to avoid Valgrind false-positive issue.
Change-Id: Ifa4dc51b500ff42a88182d750e22572aa5b2155b
2018-07-01 17:42:35 +03:00
Leo Yuriev
c9d0c8edeb mdbx: create new files with mode=0640 inside mdbx_env_copy().
Change-Id: I468f0fa29d471a2e877ea20a5e61f6358347c6eb
2018-06-30 14:56:28 +03:00
Leo Yuriev
e57d4bbb00 mdbx: remove created file if mdbx_env_copy() failed.
Change-Id: Ie47981b6031c6e7099a5d49f6cd7338ab2c1e040
2018-06-30 14:56:28 +03:00
Leo Yuriev
797bcf9aca mdbx: add mdbx_removefile().
Change-Id: I985926bdef28387d5872317a3ecf47953ce4812c
2018-06-30 14:56:28 +03:00
Leo Yuriev
ba1387b791 mdbX: add few __cold (minor).
Change-Id: I8b99ea4f3829c6b08355cc8de0a11962756370af
2018-06-30 14:18:36 +03:00
Leo Yuriev
d90e6187f7 mdbx: support exclusive mode without lck-file.
Change-Id: I1beef09d62965d0d777f579a8aa6f15c478eebd2
2018-06-30 14:15:24 +03:00
Leo Yuriev
9e81d5b631 mdbx: allow mdbx_env_compact() to fix page leaks.
Don't treat fixing page leaks as an error while copy DB with compactification.

Change-Id: I2a575ff9e2b24610172aaca939b5f6957c26ec77
2018-06-30 01:35:27 +03:00
Leo Yuriev
639e639fa3 mdbx_chk: fix GC check for MDBX_EXCLUSIVE/MDBX_RDONLY modes.
Change-Id: I40c8f8321791d0c6ddcbbfcf67f2903347d90f17
2018-06-30 00:33:22 +03:00
Leo Yuriev
f4a01da47f mdbx: avoid weak meta inside mdbx_init_metas().
Change-Id: Ib9c5ab04ad8cff3ad43d94a288cecec45d7ef37d
2018-06-30 00:03:15 +03:00
Leo Yuriev
b9d3eac12e mdbx: minor refine mdbx_env_copy().
Change-Id: I007add822bc4d30b7a8a838981ada6d2812f669a
2018-06-29 23:54:59 +03:00
Leo Yuriev
bc77ab3cca mdbx: refine Coverity warning fix.
Change-Id: I6bbb791f32a6b64712e88e0b2dd87052e353c730
2018-06-21 18:28:30 +03:00
Leo Yuriev
31b5f64054 mdbx: bump version to v0.2.0
Change-Id: I113419b685c38f23c35da6790648f7f994a15f29
2018-06-21 17:54:59 +03:00
Leo Yuriev
9b39b959de mdbx: cleanup formating (cosmetic).
Change-Id: I4a502fa8e43b9556318628bef05447567e5a98be
2018-06-21 17:28:42 +03:00
Leo Yuriev
40ec114048 mdbx: fix Coverity warning (minor, paranoia).
Change-Id: I232377a03244dc33beb4f332c0024b454027f659
2018-06-21 17:28:01 +03:00
Leonid Yuriev
b57c3b2503 mdbx: check for non-local files in non-exclusive mode.
Change-Id: Ibd1bbf48aba42d5ed736069d59b18ac0dd143554
2018-06-20 13:52:08 +03:00
Leonid Yuriev
f625b6cb42 mdbx: restore env-flags when env_open() failed.
Change-Id: I597b242c6f56c16dfef0a3d34c2113f71908cef4
2018-06-20 13:52:08 +03:00
Leo Yuriev
0dfa9cd09a mdbx: add MDBX_EXCLUSIVE instead of mdbx_env_open_ex().
Change-Id: I3c817d58d971385bcd07643df14beaf7122c7836
2018-06-20 13:52:02 +03:00
Leo Yuriev
09ad941a05 mdbx: Windows XP compatibility.
Change-Id: Iafe3a83110610071e42a168ef9fc5f8d3131854f
2018-06-20 13:47:14 +03:00
Leo Yuriev
28eda32c12 mdbx: split-out mdbx_is_file_local().
Change-Id: Ib7d990c4ce19d9b14a4b6739ca321d9d2666c882
2018-06-20 13:47:14 +03:00
Leonid Yuriev
fc41cd64d1 mdbx: add MDBX_CONFIG_MANUAL_TLS_CALLBACK.
Change-Id: I3ed60348f532cc9206f9ec0e7c1d3428b4f037a2
2018-06-20 13:47:14 +03:00
Leo Yuriev
9f2bf6a377 mdbx: provide SRWL stub for Windows XP/2000.
Change-Id: I438373a4952298efc88ca4c1a92c88e173b82f98
2018-06-20 13:47:14 +03:00
Leo Yuriev
685abc7bcb mdbx: more/again reformat by clang-format 6.0 (cosmetic).
Change-Id: I769ee5a80d75a49fc5bb041fefda6f22adc05424
2018-06-20 13:45:11 +03:00
Leo Yuriev
9db090087e mdbx: reformat by clang-format 6.0 (cosmetic). 2018-06-18 21:29:12 +03:00
Leo Yuriev
93e3b4129a mdbx-tools: fix wrong 'bad sequence' error from mdbx_stat. 2018-06-18 16:36:53 +03:00
Leo Yuriev
f314cd6b92 mdbx: windows - fix truncation race while unmap.
Change-Id: I93983d100c78aa3e57c5a7ebd9d5bf2a96081ed7
2018-06-15 02:54:41 +03:00
Leo Yuriev
b6e605b8da mdbx: bump version to v0.1.5 2018-06-14 13:53:05 +03:00
Leo Yuriev
2f983b281d mdbx: drop MDBX_DEVEL.
Change-Id: I5fc1a240e7909b8ecaf2ef19a83a9e59ea5609ba
2018-06-13 11:37:56 +03:00
Leo Yuriev
efdcbd8c35 mdbx: disable non-blocking DB-close under Windows.
Change-Id: If6579467132439b6b627e756f67f6bd35fed8b4f
2018-06-13 02:46:18 +03:00
Leo Yuriev
634efbe34b mdbx: don't block close_env() if other write-txn running.
Change-Id: I1d19afcc245578681b8bc3ee3966ac38bc596ec4
2018-06-12 13:18:17 +03:00
Leo Yuriev
fdc248384e mdbx: skip meta if usedbytes beyond oef.
Change-Id: I1e95136bce7169b7ed612f9746d0cdec43caca14
2018-06-01 13:27:20 +03:00
Leo Yuriev
38369bd24b mdbx: force steady-sync when shrinking DB (fix corruption bug).
Change-Id: I636ee2ad04f28d4038d74bdf2c7061ab885f4b82
2018-06-01 13:15:21 +03:00
Leo Yuriev
ab4c9c9db0 mdbx: return MDBX_CORRUPTED instead of crash if MDBX_DUPSORT mismatch.
Change-Id: I439a3c859dbfcfbe33a3db077c3e8200a1417c31
2018-05-28 20:04:48 +03:00
Leo Yuriev
e86bd88751 mdbx: disable warning #5045 for MSVC (minor). 2018-05-21 16:31:36 +03:00
Leo Yuriev
bea1349dd4 mdbx: bump internal version info to v0.1.4 2018-05-04 13:21:18 +03:00
Leo Yuriev
d0ddc8569b mdbx-windows: fix lck_reader_alive_check().
Change-Id: Icbc54d9b3003f70bba573a3807c5161380339460
2018-05-04 02:17:21 +03:00
Leo Yuriev
f1edd1579a mdbx: fix wrong freeDB search.
Avoid search freeDB while tree is updating.

This resolves https://github.com/leo-yuriev/libmdbx/issues/31
Bug was inherited from LMDB.

Change-Id: I0b12f8d9b88bca5aa26ca27db81df9b72c6a19b7
2018-04-25 03:01:12 +03:00
Leo Yuriev
d127c28e83 mdbx-windows: fix srw-release if rdt-lock failed (minor/paranoia). 2018-04-12 00:56:58 +03:00
Leo Yuriev
159d676429 mdbx: fix typo in mdbx_chk output. 2018-04-10 21:12:41 +03:00
Leo Yuriev
f4a9018690 mdbx: bump internal version info to v0.1.3
Change-Id: I7db311c812d531f6628101715f6658005db3ea24
2018-04-03 20:37:07 +03:00
Leo Yuriev
797ae9d1db mdbx: minor fix debug-output for mdbx_thread_key_create().
Change-Id: I718130cf2385b6221187cbcdeedd9d48d05289bb
2018-04-03 20:04:10 +03:00
Leo Yuriev
864be54f01 mdbx: fix/rework rthc counting.
Change-Id: I97fd5bd6dc1a46658138d82db10e937c9595d81f
2018-04-03 19:28:12 +03:00
Leo Yuriev
571b50622e mdbx: restore workaround for glibc's bug #21031.
Workaround for https://sourceware.org/bugzilla/show_bug.cgi?id=21031

Change-Id: I6cf9e037cc2fc298096b78ec96773f19478ed5c0
2018-04-03 17:44:18 +03:00
Leo Yuriev
36a86bbc6e mdbx: fix cursor tracking inside mdbx_rebalance(). 2018-03-26 20:20:14 +03:00
Leo Yuriev
02fc5fe158 mdbx: update internal version info. 2018-03-23 17:23:28 +03:00
Leo Yuriev
45f159ddd3 mdbx: mdbx_cursor_put(MDBX_APPEND+MDBX_NOOVERWRITE) should return MDBX_KEYEXIST instead of MDBX_EKEYMISMATCH.
When MDBX_APPEND is used the ordering of keys is important.
Therefore MDBX_EKEYMISMATCH should me returned when given key <= last.

On the other hand, if MDBX_NOOVERWRITE is also used
then the MDBX_KEYEXIST should be returned, but not MDBX_EKEYMISMATCH.
2018-03-23 17:21:27 +03:00
Leo Yuriev
6758348046 mdbx: import intrin-includes from t1ha. 2018-03-22 21:11:26 +03:00
Leo Yuriev
61a2c56784 mdbx: fix/rework cache-line alignment. 2018-03-22 21:11:26 +03:00
Leo Yuriev
6a074cb85a mdbx: fix unaligned access to mp_ptrs[] on fake-page.
Based on http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=commitdiff;h=e77918a903d980ff789b7e32f71725481e870510
2018-03-22 21:11:26 +03:00
Leo Yuriev
dbc87a8a5e mdbx: refine MDBX_CACHE_IS_COHERENT. 2018-03-22 20:38:20 +03:00
Leo Yuriev
c52a57dac5 mdbx: fix for MIPS cacheflush(). 2018-03-22 20:37:50 +03:00
Leo Yuriev
5ce40269b3 mdbx: fix gcc warning (minor). 2018-03-22 20:37:50 +03:00
Leo Yuriev
86274513f9 mdbx: more __has_include(). 2018-03-21 22:19:17 +03:00
Leo Yuriev
f5571e4027 mdbx: import byte-order macros from t1ha. 2018-03-21 22:19:17 +03:00
Leo Yuriev
62ae928b40 mdbx: add neutral __ia32__ and __amd64__ marcos. 2018-03-21 22:18:57 +03:00
Leo Yuriev
a282965aa0 mdbx: add check __ALIGNED__ for UNALIGNED_OK macro. 2018-03-21 21:10:57 +03:00
Leo Yuriev
475da5bcfe mdbx: make mdbx_txn_lock() and mdbx_txn_unlock() exportable for mdbx_chk. 2018-03-20 22:19:32 +03:00
Leo Yuriev
679fb56787 mdbx: lookup suitable txnid for rollback to avoid meta-pages clashes. 2018-03-20 22:16:15 +03:00
Leo Yuriev
dd6cb30820 mdbx-chk: directly use mdbx_txn_lock() for write/recovery mode. 2018-03-20 21:37:42 +03:00
Leo Yuriev
e8dd15088a mdbx: add __ARM_FEATURE_UNALIGNED __e2k__ for UNALIGNED_OK. 2018-03-19 19:59:00 +03:00
Leo Yuriev
d0e1c02a8a mdbx-chk: rework/fix read-write mode. 2018-03-19 18:08:45 +03:00
Leo Yuriev
a2ec7f2be1 mdbx: add mdbx_txn_flags(). 2018-03-19 18:08:45 +03:00
Leo Yuriev
64613c9061 mdbx: fix minor memleak (Coverity). 2018-03-19 16:16:31 +03:00
Leo Yuriev
c05d179035 mdbx: temporary workaround for Elbrus's libc bug.
https://bugs.mcst.ru/bugzilla/show_bug.cgi?id=2820
2018-03-19 15:05:56 +03:00
Leo Yuriev
195b53374e mdbx: fix #pragma pack(pop) balance.
Thanks to <Sergey.V.Barannikov@mcst.ru>.
2018-03-14 16:05:43 +03:00
Leo Yuriev
f521b6615e mdbx: fix #endif's comment (cosmetics). 2018-03-14 15:32:32 +03:00
Leo Yuriev
9bbc62f5a0 mdbx: refine internal warnings control. 2018-03-14 15:16:49 +03:00
Leo Yuriev
8c96b1e73b mdbx: fix missing MDBX_DEVEL=0. 2018-03-14 15:07:16 +03:00
Leo Yuriev
483c4abb3f mdbx: remove Elbrus's alignment_reduction_ignored workaround. 2018-03-14 14:57:46 +03:00
Leo Yuriev
c267a71475 mdbx: workaround for "alignment-reduction-ignored" lcc's bug.
Change-Id: I000bfaffd78ef7b6e27d6178bc2a5defc32cc357
2018-03-07 13:59:51 +03:00
Leo Yuriev
a2099586ed mdbx: disable -Wno-constant-logical-operand inplace.
Change-Id: I0f7745f40e3340ba6d14d985a735777667a7bdde
2018-03-07 13:18:30 +03:00
Leo Yuriev
f76c5188fb mdbx: add stubs for __has_warning and __has_include.
Change-Id: Ic037a38d254e6d986b84a5bfd48106e43cf80320
2018-03-07 13:07:17 +03:00
Leo Yuriev
62603aeadc mdbx: add ifdef-guard for clang < 3.8
Change-Id: Iba7a90e2548056cbdf07ae471eb002da7145821c
2018-03-07 13:06:39 +03:00
Leo Yuriev
62f36ea499 mdbx: bump version to 0.1
Change-Id: I31cdcd598c532d1dd96a4aea961495c838ce0b81
2018-03-07 12:25:35 +03:00
Leo Yuriev
ad4c5d8972 mdbx: add __cold/__hot for Elbrus. 2018-03-07 12:24:32 +03:00
Leo Yuriev
a93fafceff mdbx: strip utf8-bom for Elbrus (minor).
Change-Id: I9030abe267c4abfa2c5c2deb439c0b8025b83047
2018-03-07 12:09:43 +03:00
Leo Yuriev
260c1d71dd mdbx: add self_latter_reader_txnid into MDBX_envinfo.
Change-Id: I17ac6e921f99df6ed61096ff0fbfbacf5a7e4608
2018-02-04 17:13:27 +03:00
Leo Yuriev
72557af2b5 mdbx: HNY!
Change-Id: I2a91b986964d96bb3e5f848e3c17408bd7745866
2018-02-04 13:10:54 +03:00
Leo Yuriev
6a0ff097ee mdbx: immediately share dbi-handles for present TBLs (major).
Change-Id: I75c998e06b3ccc25bd22ef389d119052d524d70b
2018-02-04 12:59:47 +03:00
Leo Yuriev
e8ae506773 mdbx: minor refine env-init. 2018-02-02 19:06:14 +03:00