Leonid Yuriev
ee7ebe438c
mdbx: fix AddressSanitizer issue for mdbx_page_loose (minor, not a bug).
...
Change-Id: I0e550dabdeda92759c28d4566104ff07a92d83bb
2018-11-22 02:52:25 +03:00
Leonid Yuriev
f626acb398
mdbx: relax DBI-sequences for concurrent open DBI-handles for present tables.
...
Change-Id: I7f07d2e716074bd9c2847aeb062e366f46cca214
2018-11-19 13:31:44 +03:00
Leo Yuriev
eda424ff71
mdbx: rename __always_inline.
2018-11-06 21:08:28 +03:00
Leonid Yuriev
d5320d9252
mdbx: silently put mm_geo.now into [geo.lower...geo.upper] boundaries.
...
Copy-with-compaction by previous version of libmfbx could produce
DB-file less than meta.geo.lower bound, in case actual filling
is low or no data at all.
This is not a problem as there is no damage or loss of data.
Therefore it is better not to consider such situation as an
error, but silently correct it.
Change-Id: Ia662656cc3584c07efcfbdfc80f80e3c76e6dd59
2018-11-05 14:34:12 +03:00
Leonid Yuriev
3c684010e3
mdbx-tools: fix minor MSVC warnings.
...
Change-Id: If8b042e2d84bfed7f8b0a81a4d75d7be7e7aa7a9
2018-11-05 00:31:58 +03:00
Leonid Yuriev
aa52cb395f
mdbx: fix typo in mdbx_limits_dbsize_max().
...
Change-Id: Ie55e3ca108ac6aab9a41d65f316a3d5ff5ff6f1f
2018-11-05 00:18:41 +03:00
Leonid Yuriev
2770e193b6
mdbx: take in account shrink/growing thresholds while copy-with-compactification.
...
Change-Id: Id93e62089819dfcc8cbc83620e0bdd806d8c1950
2018-11-04 20:34:16 +03:00
Leonid Yuriev
83f1effff1
mdbx: refine mdbx_env_copy() internals.
...
Change-Id: I9e8f0dc87398564524a5ec98eda2cb9bde100909
2018-11-04 20:34:16 +03:00
Leonid Yuriev
629637d95e
mdbx-osal: add mdbx_fseek().
...
Change-Id: I5744aa3ba51bd1acaeedd866e6b21a1330c3f711
2018-11-04 20:34:16 +03:00
Leo Yuriev
06cb8b45b2
mdbx: fix PRIuPTR/PRIu64 for 32-bit builds.
...
Change-Id: Ic6462666de666840bc77e0e50fd0d8cd36a125b7
2018-11-04 20:34:16 +03:00
Leonid Yuriev
2d5cba61ed
mdbx: fix assertion.
...
Change-Id: Ib0f19394c42f810f74e3889c21f62ae40ec0f2ea
2018-10-21 21:34:08 +03:00
Leonid Yuriev
124c5a6751
mdbx: fix mdbx_txn_abort().
...
This resolves https://github.com/leo-yuriev/libfpta/issues/20
2018-10-21 20:27:49 +03:00
Leonid Yuriev
3bae0723b7
mdbx: refine mdbx_mutex_failed().
2018-10-21 20:27:49 +03:00
Leonid Yuriev
5400ef6512
mdbx-windows: fix mdbx_assert_fail().
2018-10-21 20:27:49 +03:00
Leonid Yuriev
718f997502
mdbx-windows: workaround for Windows10 bugs.
...
This resolves https://github.com/leo-yuriev/libmdbx/issues/47
2018-10-21 20:27:49 +03:00
Leonid Yuriev
c2f850b566
mdbx-windows: STATIC_ASSERTs for atomic ops.
...
Change-Id: I9797eece26db54e5f4a19f82d004ff18bdc138d6
2018-10-21 20:27:34 +03:00
Leonid Yuriev
f93cca3d14
mdbx-windows: minor simplify MDBX_srwlock.
...
Change-Id: I1db8e7dab2a3c764fdbe64923cfaab238eacc77e
2018-10-21 20:27:05 +03:00
Leonid Yuriev
ecf214ca04
mdbx-windows: add MDBX_AVOID_CRT.
...
Change-Id: I08233d777b318037372ec250c754f093b3047c94
2018-10-19 15:16:33 +03:00
Leonid Yuriev
06e39e2728
mdbx: fix mdbx_dbi_sequence().
...
Change-Id: Ic620896ef42c1c2d85c07c146b72e773ab43a67d
2018-10-19 13:33:54 +03:00
Leonid Yuriev
3c4e9443ae
mdbx: allow devel-signatures (for Miranga-NG).
...
Binary format of v0.1.x and v0.2.x is frozed.
This commit allows to open DBs created early by devel-versions of libmdbx.
It seems to be required for Miranda-NG users, but no one else.
Change-Id: Icf1d0477dcc3d212e03c87ab8c5255c3382425e5
2018-10-15 12:30:24 +03:00
Leonid Yuriev
d2bfb2e489
mdbx: allow pre-define mdbx_malloc/mdbx_free macros.
...
Related to https://github.com/leo-yuriev/libmdbx/issues/43#issuecomment-429625047
Change-Id: Icaee4ba62003e6eacef9f938bdea19426623b5da
2018-10-14 19:06:42 +03:00
Leonid Yuriev
30a80ff07c
mdbx: re-enable usage of lck-file in MDBX_EXCLUSIVE mode.
...
Otherwise we should prohibit running read-only and write
transactions simultaneously, but no reliable way to do this.
Change-Id: I8805f10b37ffcddb612d869309b1cd5e04cfcc1e
2018-10-14 18:15:26 +03:00
Leonid Yuriev
582adda628
mdbx-windows: fix mdbx_strdup() usage.
...
Fix commit e229dbe9dca1ff117a714007cc3811c01ba98b8b (12 of 17 for https://github.com/leo-yuriev/libmdbx/issues/43 ).
Change-Id: Ic63864d736319ccba37518a50590f4e21282a451
2018-10-14 17:36:15 +03:00
Leonid Yuriev
ae83982811
mdbx-windows: setup DllMain() as entry and don't linking with CRT.
...
17 of 17 for https://github.com/leo-yuriev/libmdbx/issues/43
Change-Id: Ie3b37633ab081ca4ba2dc485e67de96df032a3df
2018-10-14 15:03:52 +03:00
Leonid Yuriev
25ab7da33e
mdbx-windows: _NO_CRT_STDIO_INLINE to avoid dependency from CRT.
...
16 of 17 for https://github.com/leo-yuriev/libmdbx/issues/43
Change-Id: Ie5d33e2a4f1fd281a28eaa6686aaf921ecc956b4
2018-10-14 15:03:38 +03:00
Leonid Yuriev
96491db229
mdbx-windows: building and linking mdbx_ntdll_extra.lib
...
15 of 17 for https://github.com/leo-yuriev/libmdbx/issues/43
Change-Id: I6241d08f14dcd59c6c55aa26660bdec233fb3c94
2018-10-14 15:03:17 +03:00
Leonid Yuriev
d520df6a13
mdbx-windows: add ntdll.def for building ntdll.lib
...
14 of 17 for https://github.com/leo-yuriev/libmdbx/issues/43
Change-Id: I492b4be913f0a14540e7a80b53c2a24623dfeb07
2018-10-14 15:01:15 +03:00
Leonid Yuriev
cad9cea33b
mdbx-windows: use _wcsnicmp() instead of wcsnicmp() to avoid dependency from CRT.
...
13 of 17 for https://github.com/leo-yuriev/libmdbx/issues/43
Change-Id: I880433ddaf364a7e2b5de104ccf8689b93754ec5
2018-10-14 15:00:43 +03:00
Leonid Yuriev
e229dbe9dc
mdbx-windows: add mdbx_strdup() to avoid dependency from CRT.
...
12 of 17 for https://github.com/leo-yuriev/libmdbx/issues/43
Change-Id: Ib1379d75dc25e34f56daf8988848c41f59b6cd6b
2018-10-14 15:00:16 +03:00
Leonid Yuriev
b47badb3ee
mdbx-windows: rework mdbx_memalign_alloc()/mdbx_memalign_free() to avoid dependency from CRT.
...
11 of 17 for https://github.com/leo-yuriev/libmdbx/issues/43
Change-Id: Id1a76f88588251cab9a93aa9753021b30159b09a
2018-10-14 14:59:37 +03:00
Leonid Yuriev
f49741b4f8
mdbx-windows: refine mdbx_vasprintf() to avoid dependency from CRT.
...
10 of 17 for https://github.com/leo-yuriev/libmdbx/issues/43
Change-Id: I95c4583c27503eb4e9221b212b34474dfb561e6d
2018-10-14 14:59:09 +03:00
Leonid Yuriev
80ccb31008
mdbx-windows: avoid use strerror() from CRT.
...
9 of 17 for https://github.com/leo-yuriev/libmdbx/issues/43
Change-Id: I53b770e911ff8e7d4e084a323a374d09ea516986
2018-10-14 14:58:30 +03:00
Leonid Yuriev
4dea5c2719
mdbx-windows: use _snprintf() and _vsnprintf() to avoid dependency from CRT.
...
8 of 17 for https://github.com/leo-yuriev/libmdbx/issues/43
Change-Id: I335a12344b0f0d63462ac4195fafdb60f981f182
2018-10-14 14:57:34 +03:00
Leonid Yuriev
ded5269937
mdbx-windows: rework mdbx_assert_fail() and mdbx_panic() to avoid dependency from CRT.
...
7 of 17 for https://github.com/leo-yuriev/libmdbx/issues/43
Change-Id: I40dc8d6a7d1d955c13c7d328ee904f0e6f30b248
2018-10-14 14:57:03 +03:00
Leonid Yuriev
ae2875e248
mdbx: avoid on-stack allocation/chkstk inside mdbx_check4nonlocal().
...
6 of 17 for https://github.com/leo-yuriev/libmdbx/issues/43
Change-Id: Ib55a27c4859ff25e5b779a4514cd2e625ab99013
2018-10-14 14:56:32 +03:00
Leonid Yuriev
aa64597e8b
mdbx: avoid on-stack allocation/chkstk inside mdbx_env_walk().
...
5 of 17 for https://github.com/leo-yuriev/libmdbx/issues/43
Change-Id: Iadb833ff38dbd0922eda69238b365f5906b9109f
2018-10-14 14:56:04 +03:00
Leonid Yuriev
180c605cac
mdbx: avoid on-stack allocation/chkstk inside mdbx_reader_check0().
...
4 of 17 for https://github.com/leo-yuriev/libmdbx/issues/43
Change-Id: I31a8396ccc5db32cbd1816593861d2ee4325d09f
2018-10-14 14:55:30 +03:00
Leonid Yuriev
23d2f0fbb5
mdbx: avoid on-stack allocation/chkstk inside mdbx_kill_page().
...
3 of 17 for https://github.com/leo-yuriev/libmdbx/issues/43
Change-Id: Icff2d67f84283820fb21932c0d439d645c634d25
2018-10-14 14:54:39 +03:00
Leonid Yuriev
9fae7f92d6
mdbx-windows: use LocalAlloc/LocalFree instead of CRT's malloc/free.
...
2 of 17 for https://github.com/leo-yuriev/libmdbx/issues/43
Change-Id: Icb5289b55897d52ac00007f30b36bd84e5a0cbd1
2018-10-14 14:53:57 +03:00
Leonid Yuriev
ace3d1bfa3
mdbx: add mdbx_malloc/mdbx_free, etc.
...
1 of 17 for https://github.com/leo-yuriev/libmdbx/issues/43
Change-Id: Ia5204be9f943fefde42e6a46e652c1be6ab6a96b
2018-10-14 14:53:40 +03:00
Leonid Yuriev
777d1db5c9
mdbx-windows: add MDBX_BUILD_DLL and DllMain().
...
Change-Id: I715f5ea84fe77923eecbc617c4e994e3e5d44605
2018-10-08 02:19:58 +03:00
Leonid Yuriev
c9e3dc373b
mdbx-windows: more for WindowsXP support.
...
Change-Id: Ide34048720989fc010f48e086569e12e8c1edca1
2018-10-08 02:18:32 +03:00
Leonid Yuriev
83f3d820f1
mdbx-windows: refine debug-logging.
2018-10-08 02:17:27 +03:00
Leo Yuriev
0f82db941b
mdbx: add error-logging to mdbx_page_get().
...
Change-Id: I6a1a95ec6fc73aa7bf28875a89b1dd6c02ef5164
2018-10-08 02:14:12 +03:00
Leonid Yuriev
7a3c8743f3
mdbx: fix use _ASSERTE.
...
Change-Id: Iba139ddcfc6cbc93b74f3d7387492b6ae6496dcc
2018-10-08 02:14:12 +03:00
Leo Yuriev
025cf0b00e
mdbx: minor fix mdbx_updage_gc().
...
Change-Id: Ie6bc38e86837ab0863c60500dce0c965e447b209
2018-10-01 18:11:24 +03:00
Leonid Yuriev
0b870648af
mdbx-chk: use txnid as record-number for GC.
2018-09-23 12:04:10 +03:00
Leonid Yuriev
2ff1096c49
mdbx: refine mdbx_update_gc().
2018-09-23 12:03:45 +03:00
Leonid Yuriev
cd1b9ea1cf
mdbx: fix and simplify lifo-cleanup-loop inside update_gc().
2018-09-21 02:36:35 +03:00
Leonid Yuriev
d6c954cd43
mdbx: remove txnid/me_oldest asserts.
...
The `mc->mc_txn->mt_txnid >= *mc->mc_txn->mt_env->me_oldest` assertion may fail
false-positive, becase me_oldest may be not updated in read-only or exclusive modes.
Change-Id: Iad57a38efa30bc9fe2392ac24657727a7ce1f584
2018-09-20 12:29:53 +03:00
Leonid Yuriev
0b4c957bd5
mdbx: fix mdbx_find_oldest() for exclusive mode.
...
Change-Id: I41283bcf0bd22797530c74df125bf94cd3e73d00
2018-09-20 00:05:36 +03:00
Leonid Yuriev
e73df34619
mdbx: fix Coverity warnings (minor).
...
Change-Id: I4fa312f3a943f20e771f5149b2d8ad7c2520bb0e
2018-09-19 22:04:34 +03:00
Leonid Yuriev
f7bd98a4ce
mdbx-chk: allow gap for GC's PNL upto one page.
...
Change-Id: Ie051442947e7588b868cec35ef9374368bf8a1c4
2018-09-19 17:06:56 +03:00
Leonid Yuriev
82c975e174
mdbx: rework/fix cursor tracking inside mdbx_update_gc().
...
Change-Id: I2c320f63901a011992bc912938bc65084f63636b
2018-09-19 17:06:27 +03:00
Leonid Yuriev
4117c9f111
mdbx: move macros/inlines to fix Windows builds.
...
Change-Id: I48aaf6b77466bb8b13294b84de73fb6063c88190
2018-09-19 00:24:49 +03:00
Leonid Yuriev
b52e878c4f
mdbx-chk: allow gap for GC's PNL upto half of page.
...
Change-Id: I6d6d68d1124c336f8356435eba02cb66a08c4e9c
2018-09-19 00:07:39 +03:00
Leonid Yuriev
c4e1c2b488
mdbx: refine assections (minor).
...
Change-Id: Ic924988b8ce043d6106df381c996dd2c8ff9ca1f
2018-09-19 00:07:39 +03:00
Leonid Yuriev
60bba72aa1
mdbx: re-define assert macro via mdbx_assert.
...
Change-Id: I317801ba4200bdf1aa5cacf75d21a8e633fbc48a
2018-09-19 00:07:39 +03:00
Leonid Yuriev
8e8b40e7a2
mdbx: fix update_gc() assertion.
...
Change-Id: I433382de0ddab41ad1530ee674ed22f9003c2779
2018-09-19 00:07:39 +03:00
Leonid Yuriev
ab5668cf29
mdbx: add MDBX_FORCE_ASSERT.
...
Change-Id: I68a9f7b42663ea157c7c0a5a58797c94127b45ed
2018-09-19 00:07:39 +03:00
Leonid Yuriev
d6d03639a2
mdbx: one more fix/refine mdbx_update_gc().
...
Change-Id: I408db79aafb317ad20e8473edc1bc30c3afb6ea9
2018-09-19 00:07:39 +03:00
Leonid Yuriev
c287f88dbd
mdbx: fix update_gc() for rare case when no reclaiming was made before.
...
Change-Id: Ib84da8ad26f9ef538dce2472c9ee89918bf6e25a
2018-09-17 15:25:45 +03:00
Leonid Yuriev
68fd9c9908
mdbx: add mdbx_get2() for testing.
...
Change-Id: Icd0961e464936fa2d24fd3ed87b61de038e955c2
2018-09-17 15:25:45 +03:00
Leonid Yuriev
940138fbda
mdbx: rework prefer_max_scatter inside mdbx_update_gc().
...
Change-Id: I6deceb73f8578d9306528e0204ba0895781057fe
2018-09-17 15:25:45 +03:00
Leonid Yuriev
35cf4bb60f
mdbx: add validation for DUPSORT flags.
...
Change-Id: Id1f3325764fb496413d060ea0468394f7e18ae37
2018-09-17 15:25:45 +03:00
Leonid Yuriev
ff336fa65e
mdbx: fix mdbx_replace().
...
Change-Id: I2af00f101017795ca2b967479f86e5ea7e8ad37b
2018-09-17 00:18:39 +03:00
Leonid Yuriev
49a3e04d92
mdbx: restore MDBX_SET behaviour.
...
Change-Id: I1ddab75fdeeff594bf4ccdb14c7ce0415feb28f8
2018-09-17 00:17:13 +03:00
Leonid Yuriev
bcbf040f5d
mdbx: drop obsolete commented-out mdbx_node_add().
...
Change-Id: I092469e251991921b19abb72afab19dcfb70f862
2018-09-16 19:13:02 +03:00
Leonid Yuriev
40edf7e323
mdbx: refine mdbx_update_gc(), add extra audit.
...
Change-Id: I70b5bba977ab6fadfdffed722226ebe02abe252c
2018-09-15 15:19:16 +03:00
Leonid Yuriev
c945359858
mdbx: remove "" from debug-strings.
...
Change-Id: I27f9052e2d2e318f4386f40f17c321e8cbf005c0
2018-09-15 15:18:15 +03:00
Leo Yuriev
d299a2601d
mdbx: add SLAPD_LMDB_LEGACY option.
2018-09-14 16:09:29 +03:00
Leo Yuriev
1fca3d4c93
mdbx: fix add-node-args asserts.
2018-09-14 16:09:20 +03:00
Leonid Yuriev
30949031c1
mdbx: check for pgno inside mdbx_page_get().
...
Change-Id: I2fed589d592228c7a98a8aa76f5b6489569b13d2
2018-09-14 02:04:25 +03:00
Leonid Yuriev
bf22699fb3
mdbx: avoid empty and unneeded large/overflow pages.
...
Change-Id: I388a60180b999889fc15a1f3f3243c007a15edc6
2018-09-13 21:49:27 +03:00
Leonid Yuriev
e08409d209
mdbx: add mdbx_cursor_check() for audit.
...
Change-Id: Ica2133dea40864fb746f2dea39d8c09364b1243e
2018-09-13 21:45:12 +03:00
Leonid Yuriev
70c796463b
mdbx: fix tracking inside mdbx_cursor_del().
...
Change-Id: Ib1b3f00270d6aec18428da4caf0f173378b9b5b5
2018-09-13 21:20:48 +03:00
Leo Yuriev
561d30518a
mdbx: remove needless assert.
2018-09-13 21:18:02 +03:00
Leo Yuriev
01e016e6aa
mdbx: fix tracking inside mdbx_cursor_del0().
...
Change-Id: If65804a610730cf80d73fc31c1e62fb9bf3b6c82
2018-09-13 21:12:39 +03:00
Leonid Yuriev
94aa20febc
mdbx: rework mdbx_dpage_free(), drop mdbx_page_free().
...
Change-Id: Ida58003b355fe0271a835a50c78b930c73806e87
2018-09-13 21:05:26 +03:00
Leo Yuriev
f22c0856bf
mdbx: fix tracking inside mdbx_rebalance().
2018-09-13 21:05:01 +03:00
Leo Yuriev
76f7c118c6
mdbx: alter mdbx_rebalance().
2018-09-13 21:02:14 +03:00
Leo Yuriev
ff738f1512
mdbx: alter mdbx_page_merge().
...
Change-Id: I33a3523e0efc914f6d85dfbbf69b97dd70d6c721
2018-09-13 20:59:10 +03:00
Leonid Yuriev
36fe81edad
mdbx: refine mdbx_update_key() and mdbx_cursor_put().
...
Change-Id: I26b97f1eecff1f03e578193aebb5592ab48dd38e
2018-09-13 20:51:16 +03:00
Leonid Yuriev
8cd0107e6a
mdbx: alter mdbx_page_loose() and rework mdbx_kill_page().
...
Change-Id: I646b6fb6cdcd05f5058356ee38f888519403a78f
2018-09-13 20:47:24 +03:00
Leo Yuriev
cbd0b42e20
mdbx: alter mdbx_page_split().
2018-09-13 20:37:15 +03:00
Leonid Yuriev
6d33c137f6
mdbx: fix mdbx_cursor_put().
...
Change-Id: I280c6f275372952ce3411e564928ad6c3387b00c
2018-09-13 20:32:07 +03:00
Leonid Yuriev
78143d9a48
mdbx: fix mdbx_node_add_leaf2().
...
Change-Id: I07c5f7c1e3e21cbc4699a4fee69d651ac0779aca
2018-09-13 20:31:16 +03:00
Leo Yuriev
6206b67d32
mdbx: rework move-node and split add-node.
2018-09-13 20:28:40 +03:00
Leonid Yuriev
771ac1928b
mdbx: add more const
(minor).
...
Change-Id: I8aa44db6ed5da6a70bc8a011b83ab49a8f9f47c6
2018-09-13 20:17:12 +03:00
Leonid Yuriev
b6aace0825
mdbx: refine page-type macros.
...
Change-Id: I9f331bf17c1de1a1402d66e8b4081f31133e2b59
2018-09-13 20:06:13 +03:00
Leo Yuriev
a30828b457
mdbx: alter mdbx_node_shrink().
2018-09-13 19:56:53 +03:00
Leo Yuriev
ecb0e268b0
mdbx: more asserts for page-type.
2018-09-13 19:54:02 +03:00
Leonid Yuriev
b2ddd49b77
mdbx: assertions for LEAF/BRANCH-pages mixing.
...
Change-Id: I52ddc64b99fa5c07e2d50a52cc17989db5ab35d5
2018-09-13 19:45:06 +03:00
Leonid Yuriev
69c14f3694
mdbx: minore refine mdbx_page_alloc().
...
Change-Id: Ie5e5db2a0d24547544c55467cafa6237aead8c84
2018-09-13 19:44:32 +03:00
Leo Yuriev
22e7630d53
mdbx: fix MDBX_CORRUPTED due open/shrink collision.
2018-09-13 19:32:03 +03:00
Leo Yuriev
a150b791a4
mdbx: audit freeing large/overflow pages.
2018-09-13 18:15:40 +03:00
Leonid Yuriev
94b1553637
mdbx: fix mdbx_ovpage_free().
...
Change-Id: I453921b356f412fad59efd6ce31ddb75f0d84358
2018-09-13 18:15:40 +03:00
Leonid Yuriev
f1bb2f1ec2
mdbx: fix mdbx_gc_update() for empty list of reclaimed-pages.
...
Change-Id: I7386eab7e663ec8ee330705c4b202429bf9f6793
2018-09-13 18:15:30 +03:00
Leonid Yuriev
64fb9b81f3
mdbx: allow GC's PNL be partially unused.
2018-09-13 17:46:52 +03:00
Leo Yuriev
6fb628d88d
mdbx: require data == NULL for mdbx_cursor_get(MDBX_SET).
2018-09-13 17:45:26 +03:00