347 Commits

Author SHA1 Message Date
Leo Yuriev
91a9d4d916 mdbx: more ntpapi for Windows.
Change-Id: I616b09502302be9e3017db7e99cf4dcf8697f32f
2018-01-07 14:22:17 +03:00
Vladimir Romanov
18a261a6dd Add CMake support 2018-01-04 09:27:09 +03:00
Leo Yuriev
24a8bdec49 mdbx: fix SIGSEGV in case mdbx_env_close_ex() called without mdbx_env_open(). 2017-12-20 14:22:55 +03:00
Leo Yuriev
3e9308eb0e mdbx: check for running write-txn inside mdbx_env_close(). 2017-12-19 16:38:21 +03:00
Leo Yuriev
b1c7fa30c0 mdbx: fix MDBX_BUSY comment/description (typo). 2017-12-19 16:37:20 +03:00
Leo Yuriev
96a0647253 mdbx-windows: fix mmap-resize (add MEM_RESERVE afrer NtExtendSection). 2017-12-19 16:07:30 +03:00
Leo Yuriev
8008e23cfa mdbx-windows: minor fix for legacy Windows SDK. 2017-12-19 16:07:25 +03:00
Leo Yuriev
a5b077b2f0 mdbx: minor clarify mdbx_env_set_geometry(). 2017-12-19 15:33:25 +03:00
Leo Yuriev
46a3d4e0a3 mdbx: fix assertion (minor, not a malfunction).
The `env->me_sync_pending` could be zero
when `mdbx_sync_locked()` called from `mdbx_env_set_geometry()`.

Therefore `mdbx_assert(env, !META_IS_STEADY(head) || env->me_sync_pending != 0)` at the top of `mdbx_sync_locked()`
could be trigger assertion failure.
2017-12-18 14:39:41 +03:00
Leo Yuriev
fc1bbf3a4b mdbx: disable 'unreachable code' for MSVC.
Change-Id: I4f9887b557885cb9a3829d19a56d332c76656cf8
2017-10-29 03:23:39 +03:00
Leo Yuriev
866ca18970 mdbx: add few __fallthrough and __unreachable.
Change-Id: Ife18986a3a6391c76f63d12f8102bd6670ae63eb
2017-10-29 02:12:05 +03:00
Leo Yuriev
aec2445161 mdbx: rework '_noop' and related macros.
Change-Id: Ic9ff3662a6abeb64aa0816e448007dd524794b1e
2017-10-29 02:12:05 +03:00
Leo Yuriev
db4ab61a0c mdbx: drop '__packed'.
Change-Id: Idf3e510733adb2b12b94fe1dcd22f76e02df955b
2017-10-29 00:59:11 +03:00
Leo Yuriev
6f6b360aba mdbx: add/fix 'fallthrough' for GCC 7.x
Change-Id: I45c57ea910978aaa857086d7794ad92ba0ae7157
2017-10-28 11:45:04 +03:00
Leo Yuriev
d1f04656ab mdbx: more robustness for thread checking while reset/renew/abort of txn. 2017-10-27 18:01:32 +03:00
Leo Yuriev
d4bf0a3332 mdbx: refine/simplify mdbx_find_oldest().
Simplify b6f14780e381300beaf782fa74252b791aae082e
2017-10-27 15:43:06 +03:00
Leo Yuriev
1a27e40701 mdbx: Merge branch 'fix-after-txntry'. 2017-10-27 14:17:43 +03:00
Leo Yuriev
b6f14780e3 mdbx: fix performance degradation in the absence of readers.
Change-Id: I59a51b61918463e68d3e0490c715f4dcc9ecb788
2017-10-27 13:36:10 +03:00
Leo Yuriev
0a7a290d06 mdbx: drop mdbx_txn_trylock(). 2017-10-26 21:49:39 +03:00
Leo Yuriev
5e1721efdd mdbx: fix mdbx_robust_trylock(). 2017-10-26 21:49:38 +03:00
Leo Yuriev
17b8e48bf4 mdbx: cleanup after last pull-request.
Cleanup after 4e40af60e74143aedaa8d295f0f33a3c892a1c9b (Merge pull request #20 from rouzier/feature/txn_try).
2017-10-26 21:49:38 +03:00
James Rouzier
7c466e53f0 Add the ability to not block when opening a write transaction 2017-10-25 19:41:28 -04:00
Leo Yuriev
4f1c846437 mdbx: rollback to not-a-weak instead to steady. 2017-10-10 18:14:07 +03:00
Leo Yuriev
b7121d7711 mdbx: fix meta.mm_psize typecast. 2017-10-09 17:41:13 +03:00
Leo Yuriev
9fd7056b4f mdbx: fix loose/dirty bug.
Change-Id: I725b640cfc29e1c0710abb155e05d44bb7bb3cc3
2017-10-05 09:01:19 +03:00
Leo Yuriev
f4ca6ed6b9 mdbx: fix handling MAX_MAPSIZE32 limit. 2017-10-02 18:01:08 +03:00
Leo Yuriev
2ce817b438 mdbx: ensure checks to avoid using meta-pages.
Change-Id: I21959b8a26961bb65f3bc3b87b24a3c4f6a673f7
2017-09-26 20:13:43 +03:00
Leo Yuriev
dc31d7d1a3 mdbx: fix shrinking below a lower-bound.
Change-Id: Ia6d497e2d7c6d7ee646b23b8df944a01d96445fc
2017-09-26 19:37:34 +03:00
Leo Yuriev
6a2ce93f19 mdbx: minor simplify mdbx_dbi_open_ex().
Simplify prev commit.

Change-Id: Id6a5abd6b18ceefae4cf259935bd6d9d9adb7d76
2017-09-07 09:52:53 +03:00
Leo Yuriev
5b23d7e452 mdbx: fix mdbx_dbi_open_ex(MDBX_CREATE) for rdonly txn.
Fix https://github.com/leo-yuriev/libmdbx/issues/19

Change-Id: I3ae1ab3188482fd8c31de51d62e34591082cd60a
2017-09-07 09:43:44 +03:00
Leo Yuriev
26dab6dee0 mdbx: import - ITS#8722 fix FIRST_DUP/LAST_DUP cursor bounds check.
Change-Id: I6dbba19b594a4bd3545d430a3438cf3b1c5a0a0b
2017-09-07 09:43:43 +03:00
Leo Yuriev
ee9d0903c8 mdbx: use <winternl.h> for Windows. 2017-09-05 21:02:03 +03:00
Leo Yuriev
e6e92134a6 mdbx: fix PVS-Studio warnings. 2017-09-05 21:02:03 +03:00
Leo Yuriev
ace062f4a7 mdbx: fix warning around mode_t.
More for https://github.com/leo-yuriev/libmdbx/issues/15

Change-Id: I1743e01e9111400942fd2a4846a21c475101a148
2017-08-16 11:28:38 +03:00
Leo Yuriev
728252058d mdbx: fix/refine comment.
Change-Id: I8f09ca755ebcc1e58531504a8998391e7a3c8c9a
2017-08-16 09:29:30 +03:00
Leo Yuriev
9b5e28e8e6 mdbx: fix mdbx_setup_dxb() for a case when db-size not (pre)configured by user.
Fix https://github.com/leo-yuriev/libmdbx/issues/11

Change-Id: I6fccd4877fed563cfb3a03f887bbba73eff5ac84
2017-08-16 08:46:20 +03:00
Leo Yuriev
0dc145aa2d mdbx: fix typo and endif comment.
Change-Id: Iae7ae3ce55698c1d6f03111b7d1945f3ac4e9394
2017-08-08 23:42:45 +03:00
Leo Yuriev
7b8a1c9794 mdbx: fix typo.
Change-Id: Ib491469a2a7ebb6bdadf995fa3a964d23fdf7036
2017-07-28 21:53:15 +03:00
Leonid Yuriev
c91885de67 mdbx: use _ASSERTE() for MSVC.
Change-Id: Ibb277e8c98fbfb1e658c85dc49e57769f2683da3
2017-07-28 14:39:44 +03:00
Leonid Yuriev
82a716847b mdbx: fix/workaround mmap-resize for Windows.
Change-Id: I58b5784f1309cd1e88af860828f561fe29f51ff0
2017-07-28 14:37:50 +03:00
Leonid Yuriev
128cc2d308 mdbx: fix pnl_sort().
Change-Id: I57f9a8dd8d61c6f11f8f30d15f8812cf2f850789
2017-07-28 14:37:06 +03:00
Leo Yuriev
0f37ae56d8 mdbx: minor cleanup version-info.
Change-Id: I1c208af0264ed6254d942b29b9e0fc25a745f4e0
2017-07-27 18:10:07 +03:00
Leo Yuriev
c6fc062cfd mdbx: fix MSVC warnings.
Change-Id: Ida49e653510358d7c81fe5da73a0131dcb6268f6
2017-07-27 17:35:00 +03:00
Leo Yuriev
684847db39 mdbx: relax backlog estimation/preparation for freelist_save().
Change-Id: I931b76179855c16cb8b6265db262309061ac196d
2017-07-27 16:58:45 +03:00
Leo Yuriev
aa5403ad38 mdbx: 1/1 as default grow/shrink for MDBX_DEBUG.
Change-Id: I90fa2705113f134984f9ec341ef37131e598d121
2017-07-27 16:58:34 +03:00
Leo Yuriev
c49d1bc97a mdbx: provide refunding pages into unallocated space.
Change-Id: I9d4f953adc6f3b745a9822044f3933adba4ca6fe
2017-07-27 16:58:22 +03:00
Leo Yuriev
dcc179f412 mdbx: more checks for pgno-list ordering.
Change-Id: I6c6093532e8d2c07c42f62d23579ef86cbbd43b7
2017-07-27 16:58:09 +03:00
Leo Yuriev
b8b3ba8e91 mdbx: provide configurable ascending/descending sort-order for pgno-lists.
Change-Id: I3134c100880ff28bb0aaf46ed91affc9f6347110
2017-07-27 16:57:52 +03:00
Leo Yuriev
552b759878 mdbx: refine pgno-lists.
Change-Id: Id38e4aff508437210d4c0e63962067dfe518eb31
2017-07-27 16:53:42 +03:00
Leo Yuriev
592c064873 mdbx: refine freelist_save() to simplify loose-pages handling (preparation for pages refunding).
Change-Id: I1f15487383fbfb6770e1f7128a2d8349a1cfdf25
2017-07-27 16:53:01 +03:00
Leo Yuriev
7ed97d50b1 mdbx: guard put-data inside freelist_save() by C_RECLAIMING (paranoia).
Change-Id: I9cb6bf27717f76dc97259d48e4253a30c2345afd
2017-07-27 16:52:59 +03:00
Howard Chu
7626bcfdde mdbx: backport - ITS#8699 more for cursor_del ITS#8622.
Set C_DEL flag on reinit'd subcursor

Change-Id: I8ad1c10afd481f61b8e521d02c4d2de3be5089d7
2017-07-27 04:45:03 +03:00
Leonid Yuriev
092156ee4f mdbx: fix/redefine ssize_t, PRI*PTR nad PRI*size macros for MSVC.
Change-Id: I6cb565087350cf1d1e1735bff1c5480c3d4c02db
2017-07-26 19:17:11 +03:00
Leo Yuriev
336bef7e51 mdbx: make internal 'atomics' compatible with C++.
Change-Id: I1381f477e977edf4bf56871a2e34af1b302867a0
2017-07-26 17:38:06 +03:00
Leo Yuriev
fb9d7a4471 mdbx: refine freelist_list() to avoid coverity warnings.
Change-Id: I38eee44e4ca926e7d11ef5e3f7f3ce2e92f71259
2017-07-26 17:36:32 +03:00
Leonid Yuriev
a78edd314e mdbx: more fix MSVC '/Wall' warnings.
Change-Id: I359a3056d6bb5db762fe6b6b8a89e8ed066f8a87
2017-07-26 16:02:49 +03:00
Leonid Yuriev
006f531757 mdbx: turn /Wall for MSVC.
Change-Id: Idc264a9fe40a2af8629d96121fb91cba94e7147f
2017-07-26 16:02:19 +03:00
Leo Yuriev
8ca23d8735 mdbx: add missing <signal.h>
Change-Id: I3f2d0587db84598a0157aae50cdff3361935f2b3
2017-07-26 15:11:25 +03:00
Leo Yuriev
88ca23caa5 mdbx: misc refines (minor).
Change-Id: Ia58e2d75e320bbd47dd352e082cf6f41afde075f
2017-07-26 12:43:54 +03:00
Leo Yuriev
1b09605a06 mdbx: clarify mdbx_filesync().
Change-Id: I39029a52fd44c81901aff6114a5c58a62b92098b
2017-07-26 12:43:54 +03:00
Leo Yuriev
1f7f3af16c mdbx: minor refine mdbx_mmap().
Change-Id: Ic5026b6412ca93a00faeb8306975d896d85b475d
2017-07-26 12:43:54 +03:00
Leo Yuriev
f57931f614 mdbx: apply only substantial geo-changes and pre-shink while opening database.
Change-Id: If62ac64cc820ed0201cecf4b89ea3096029abb0a
2017-07-26 12:43:54 +03:00
Leo Yuriev
1dab822324 mdbx: growth/shrink datafile with alignment.
Change-Id: I46deb885654d2bb1d164009159c9364567ab88a9
2017-07-26 12:43:52 +03:00
Leo Yuriev
4f06a38a50 mdbx: use saturated pgno_add() to avoid overflows.
Change-Id: I70000a86a69c9b3399d0a2c345d57ca1908f2881
2017-07-26 12:41:52 +03:00
Leo Yuriev
a9927e7214 mdbx: refine page_alloc().
Change-Id: I9932847ef244132df9d909b41a1760a3e89288ac
2017-07-26 12:30:50 +03:00
Leo Yuriev
3d53f2ff2a mdbx: refine mdbx_reclaiming_detent() for MDBX_UTTERLY_NOSYNC.
Change-Id: I7847f2b375f3792927a55c90bb26d3220e71b576
2017-07-26 12:28:27 +03:00
Leo Yuriev
94af9e02b0 mdbx: fix mdbx_env_close_ex() for MDBX_RDONLY.
Change-Id: I5ff79a93e026d4b40412294956dd222081a1b821
2017-07-26 12:27:34 +03:00
Leo Yuriev
ab8fa36033 mdbx: refine mdbx_meta_ot() and dependents.
Change-Id: I449d501f0c3710fdb906e01931e10300ab3b7c9d
2017-07-26 12:26:02 +03:00
Leo Yuriev
0b07749fba mdbx: major fix - madvise(MADV_REMOVE) only for exclusive mode.
Change-Id: I6799df7b85eaf32a1c46f251ca64a4df4ff092b2
2017-07-26 12:09:57 +03:00
Leo Yuriev
a3ee20e4f6 mdbx: more NUM_METAS inside mdbx_chk and mdbx_stat.
Change-Id: I93f4fddcff6b038c5a5143e52c7db233e77ec30b
2017-07-26 12:09:57 +03:00
Leo Yuriev
9e473ab6f2 mdbx: remove obsolete mlock().
Change-Id: I23df282d545eac9dd7bf9df1bd71dedbccc45cfd
2017-07-26 12:09:57 +03:00
Leo Yuriev
4fa4129add mdbx: cleanup freelist_save().
Change-Id: I552e6d7edac61e66b8954f6b58485d6b07194ab5
2017-07-26 12:09:57 +03:00
Leo Yuriev
1babb0a4f7 mdbx: don't put loose pages into befree in lifo mode.
Change-Id: Ibb409e3447e42f1b9f38ed0a33ecb7715fa54d31
2017-07-26 12:09:57 +03:00
Leo Yuriev
ad48fd54fb mdbx: minor refine freelist_save().
Change-Id: Ifed9b8d363d45d24c44c1b0a803dad34aada96d3
2017-07-26 12:09:57 +03:00
Leo Yuriev
3ba5bebec4 mdbx: refine mdbx_txl_alloc().
Change-Id: I624a92c8a845ab563f13619b3638227d012a780b
2017-07-26 12:09:57 +03:00
Leo Yuriev
d5a8bcebbf mdbx: preserve current meta-extra fields/flags.
Change-Id: Id458a85178839bd196435891633c4dd1f3a51d45
2017-07-23 21:33:17 +03:00
Leo Yuriev
58f7674fa5 mdbx: fix mdbx_set_attr().
Change-Id: I6628a0629a17f99f39098b8ccb76259cd65dd353
2017-07-23 21:07:08 +03:00
Leo Yuriev
b4e0344de7 mdbx: check for oldest-aware corruption by writer in txn_renew().
Change-Id: I1a49e4264feb93dc84963db426b11f467f31fcf6
2017-07-23 21:07:08 +03:00
Leo Yuriev
ddc5b9f34f mdbx: start find_oldest() from steady-point.
Change-Id: Icc102f98f86e557e1ccba9cd74255c3da9225d41
2017-07-23 18:39:31 +03:00
Leo Yuriev
425254aba5 mdbx-tools: hush MSVC's internal warnings.
Change-Id: I2b2bdb149149aa8bafff0bb7df205547f645fe10
2017-07-21 22:45:51 +03:00
Leo Yuriev
f96bb5ef4a mdbx-tools: fix coverity issue (minor).
Change-Id: I8031a59336134a355ea31d6f41b241dbc176f577
2017-07-21 22:39:15 +03:00
Leo Yuriev
c5d1384c64 mdbx-tools: more fix MSVC warnings.
Change-Id: Ib5f78a89fea09dc78d4922519eab6eaed4b1a7e6
2017-07-21 16:54:46 +03:00
Leo Yuriev
63af619080 mdbx: #ifdef-guard for FILE_PROVIDER_EXTERNAL_INFO_V1.
Change-Id: I4bc4eb012f7d6ea874a10abd4a2bfcfb789c4a22
2017-07-21 15:49:05 +03:00
Leo Yuriev
242baf761f mdbx: fix/rework shrinking, add MDBX_SHRINK_ALLOWED.
Change-Id: I014440850aa4be927843aa2a6a268794a4da9b2a
2017-07-21 13:55:21 +03:00
Leo Yuriev
599711a007 mdbx: fix/avoid meta-update from setup_dxb() in read-only mode.
Change-Id: I60359f92aba31bb5a22e9a39ea4658d2393e957d
2017-07-21 13:54:06 +03:00
Leonid Yuriev
c8a5df650b mdbx: fix/rework exclusive-locking for Windows.
Change-Id: I1b129a10ed7523024481480647317f1643f2ea70
2017-07-19 14:13:31 +03:00
Leo Yuriev
17e8429a29 mdbx: rework mmap-functions for osal.
- add 'length' and 'current' fields to mmap-object;
 - drop mdbx_mremap();
 - do remap on-demand inside mdbx_mresize();
 - add mdbx_mapresize() which re-creates Valgrind's region.
 - call resize on txn-begin.

Change-Id: I82780f92c4947804e3f14fb7cb71ee655382f9bb
2017-07-19 14:13:31 +03:00
Leo Yuriev
53c2b0abe4 mdbx: checking and reject network/remote files.
Change-Id: I77e8b8bc94785d705461d162cbc40ad58ead67ca
2017-07-12 03:31:20 +03:00
Leo Yuriev
4d1df6ea11 mdbx: rework rollback on dxb-setup to avoid troubles under Windows. 2017-07-12 03:31:20 +03:00
Leo Yuriev
455de97d36 mdbx: rework using of mdbx_mmap_t and mdbx_msync(). 2017-07-12 03:31:20 +03:00
Leo Yuriev
70d54f6f2c mdbx-msvc: refine IntDir/OutDir for msbuild projects. 2017-07-12 02:21:50 +03:00
Leo Yuriev
0167694457 mdbx: building mdbx-tools for Windows.
Change-Id: I9019c4382b7108ec7c442d2b0d4be044a3cb136a
2017-07-12 02:20:47 +03:00
Leo Yuriev
6f00854034 mdbx: take LTO_ENABLED in account for AddressSanitizer default options.
Change-Id: I691eae23ca2cb60c6e2a9260ab41e3c80c8aaeb8
2017-07-07 00:45:52 +03:00
Leo Yuriev
0047ce4bd6 mdbx: add default AddressSanitizer options.
Change-Id: I99b7aee5010f1d43008b2a61efe3fb9bb023ab31
2017-07-07 00:02:56 +03:00
Leo Yuriev
84b4883f00 mdbx: fix returning MDBX-errors after the merge.
Change-Id: Id49b7f341749709cdee476c88c1066e76b6937c1
2017-07-05 19:38:39 +03:00
Leo Yuriev
d01a97f729 tools: fix minor defects (coverity).
Change-Id: I3a80dcb31c54718d22cdca6272aa028685956243
2017-07-04 13:21:16 +03:00
Leo Yuriev
14484a6f32 mdbx: fix minor defects (coverity).
Change-Id: I1a5b0788a87ab2a138b342140648642fd5855ae3
2017-07-04 13:21:16 +03:00
Leo Yuriev
beda690227 mdbx: fix resource-leak in mdbx_env_open_ex() in case of error (coverity).
Change-Id: I9e808e2de4a64d05205a79c9d90feacc87ec930d
2017-07-04 13:21:16 +03:00
Leo Yuriev
93d92db43d mdbx: fix mischecking in mdbx_reader_check0() (coverity).
Change-Id: I2e3aaba1426c3b152a39b90f6d171380948da0a7
2017-07-04 13:21:16 +03:00
Leo Yuriev
bf8507f3ec mdbx: fix mdbx_env_info() to avoid null-deref in lck-free mode (coverity).
Change-Id: Ica8fe6c7f5a18af3a4d7d38ce8a1a092d5f1b2f7
2017-07-04 11:45:48 +03:00