441 Commits

Author SHA1 Message Date
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
cf004dddbc mdbx: use single cursor instance inside mdbx_env_walk().
Change-Id: I72cade64468a42fd27ebb4955d71ecbbabe64987
2019-06-24 02:14:50 +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
49d0e872a1 mdbx: iterate & check before recursion inside mdbx_env_pgwalk().
Change-Id: I27058a33f6dece0c3f206283a42ff74e5727417f
2019-06-20 21:04:47 +03:00
Leonid Yuriev
2bea60a1a4 mdbx-chk: avoid infinite loop/recursion while checking corrupted DB.
Change-Id: I3edb053e4baedced8ce8e8cfa25f9851eaca35d1
2019-06-19 15:08:50 +03:00
Leonid Yuriev
c05702eacf mdbx: add MDBX_PGWALK-tags and refine pgwalk internals.
Change-Id: I1f4eb79463dc6eec3d94d43baab0b28ceefa8c03
2019-06-19 15:05:10 +03:00
Leonid Yuriev
870c2a6f9c mdbx: symmetrical/invariant mdbx_estimate_range() for MDBX_EPSILON order.
Change-Id: Ida7e07d6429576c457bcd4d877a3c38c88dc2771
2019-05-26 00:59:35 +03:00
Leonid Yuriev
e26b7501eb mdbx: add MDBX_EPSILON support for mdbx_estimate_range().
Change-Id: I2d89a9f20bfa16c8f35a4381709bc54f86f0ff67
2019-05-25 19:10:38 +03:00
Leonid Yuriev
6e3725457d mdbx: fix minor comment typo.
Change-Id: I56a465e820a49d13c49fb3bd05add970b0eebb14
2019-03-14 00:13:13 +03:00
Leo Yuriev
73f8839a97 mdbx: minor refine/clarify estimation internals. 2019-03-06 16:45:49 +03:00
Leo Yuriev
501eb8c6ad mdbx: more __hot/__cold attributes for functions. 2019-03-06 16:45:01 +03:00
Leo Yuriev
ee899a21ed mdbx: treat pagesize == 0/INTPTR_MAX as aliases for MIN_PAGESIZE/MAX_PAGESIZE. 2019-03-05 17:55:33 +03:00
Leo Yuriev
3535e7a6d6 mdbx: returns as-is (i.e. negative) the estimation results for an inverted ranges. 2019-03-05 15:50:45 +03:00
Leonid Yuriev
8ddfd1f34a mdbx: adds functions for distance/move/range estimation (initial).
Change-Id: If59eccf7311123ab6384c4b93f9b1fed5a0a10d1
2019-03-05 02:57:15 +03:00
Leonid Yuriev
14ae9fb2a1 mdbx: env_set_geometry() treat zero-values also as defaults.
Change-Id: If8c6f7d7bbeffe71ae4e28f27184103dd1da257b
2019-03-02 14:26:09 +03:00
Leonid Yuriev
01797cf1bc mdbx: env_open() consider zero mode_t as open-existing flag.
Change-Id: I6f9dbf2059822afaba4c3de8f4ce380613a7dc36
2019-03-02 13:31:08 +03:00
Leo Yuriev
44a067283a mdbx: fix comment typo (minor). 2019-02-12 13:39:16 +03:00
Leonid Yuriev
49fa9b9c35 mdbx: fix handling MDBX_APPENDDUP mode.
Change-Id: I36de2a8dcab5126dab3857a7840ab3904a1d19c8
2019-02-04 01:41:11 +03:00
Howard Chu
bfffaa66b8 mdbx: import - tweak mdb_page_split (ITS#8969).
Bump up number of keys for which we use fine-grained splitpoint search

Change-Id: Icca2e1953cbcd6898b790f657636c2195b397790
2019-02-03 13:07:17 +03:00
Leo Yuriev
9cc9116df3 mdbx: 2019 HNY.
Change-Id: Iec6b7affedef0ea89fad917eb17af7e8201a7482
2019-02-03 12:28:01 +03:00
Leonid Yuriev
08508d34b3 mdbx: MDBX_BAD_DBI instead of MDBX_NOTFOUND in case table was dropped.
Change-Id: I2894a5721d2be2bb982e7c7a607c6a0413f7e3ca
2019-01-27 00:17:57 +03:00
Leonid Yuriev
5fd05db6ea mdbx: minor fix/refine mdbx_txn_straggler() for r/w-txn.
Change-Id: Id44a1db414de457d74a3e1d9d5c96064a7278080
2019-01-17 23:14:25 +03:00
Leonid Yuriev
4708e0cf79 mdbx-winfdows: fix returning negative value on failure.
Change-Id: Iaf5fb1f0cbcc3c14e2d3edf1f57538ecc0dfdf00
2019-01-17 23:10:04 +03:00
Leo Yuriev
f55e1ec5cc mdbx-windows: more safety/robustness for DB shriking. 2018-11-22 17:50:49 +03:00
Leo Yuriev
35f95e8ca2 mdbx-windows: always susppend local threads while resize DB (workaround for Windows kernel bug).
We should not concern about performance on Windows platform,
it just unreasonable. Therefore just always suspend the local
threads to avoid this issue.

This resolves https://github.com/leo-yuriev/libmdbx/issues/48
2018-11-22 14:19:49 +03:00
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
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
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
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
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
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
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
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
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
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
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
83f3d820f1 mdbx-windows: refine debug-logging. 2018-10-08 02:17:27 +03:00