136 Commits

Author SHA1 Message Date
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
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
7e1e142104 mdbx-chk: fix/refine error handling for sub-DBs.
Change-Id: I42460793bbe47815add1b3f61f3746f671a749d9
2019-07-07 01:47:10 +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
52bc4a7f41 mdbx-check: minor refine to avoid deeply recursion.
Change-Id: I67f83a232ef47899f43c242b7e6295de4d7ec909
2019-06-20 21:08:31 +03:00
Leonid Yuriev
c91cc85c1f mdbx-chk: log sub-DBs when verbose > 0 (cosmetic).
Change-Id: Ie73c0773929b51eb11fb02afe18bb01b59fb2612
2019-06-20 10:12:26 +03:00
Leonid Yuriev
cd75c4f081 mdbx-chk: avoid continuing to check bad records.
Change-Id: I03b9d425c8413d6cacc1b67ed4a8253a10a9d603
2019-06-20 00:52:00 +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
ce0e5d67f5 mdbx-tools: avoid output NaN from mdbx_chk for empty tables.
Change-Id: Ie1ff87da3a5e5e124eac1dafd7d5b456f8bde6e3
2019-06-10 13:28:31 +03:00
Leonid Yuriev
7617cce0c6 mdbx-tools: fix Coverity warning (paranoia).
Change-Id: I3ff33a9eb2c58fe601566fd4101f9c95d76d29de
2019-02-27 23:26:15 +03:00
Leonid Yuriev
0639f54280 mdbx-test: add 'append' testcase.
Change-Id: I71620ea1a019e16b8e3d84a81dcc042961eae5b5
2019-02-04 01:41:11 +03:00
Leonid Yuriev
73bef80347 mdbx-check: add checking for complete duplicates.
Change-Id: I8308b725418ef69188eeadfc656dead4ce9cee27
2019-02-04 01:32:15 +03:00
Leonid Yuriev
460751bc01 mdbx-chk: add '-i' option for custom comparators.
Change-Id: Ie3d7fdb3c3a881a484d351ca9a3160eb467b43b9
2019-02-04 01:32:15 +03:00
Leo Yuriev
309955be75 mdbx-load: add '-a' option for loading dumps of custom-sorted DBs.
Based on http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=commitdiff;h=aa77c832b8e6fc696078017f550d119cdfc0f232

Change-Id: If7de71c8f6ffc29d4316c6074995fab38f2c1b4b

+load

Change-Id: Iff6cbca2514840ee290f801e3b273edf160913b4
2019-02-04 00:06:39 +03:00
Leo Yuriev
9cc9116df3 mdbx: 2019 HNY.
Change-Id: Iec6b7affedef0ea89fad917eb17af7e8201a7482
2019-02-03 12:28:01 +03:00
Leonid Yuriev
3c684010e3 mdbx-tools: fix minor MSVC warnings.
Change-Id: If8b042e2d84bfed7f8b0a81a4d75d7be7e7aa7a9
2018-11-05 00:31:58 +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
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
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
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
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
c9e3dc373b mdbx-windows: more for WindowsXP support.
Change-Id: Ide34048720989fc010f48e086569e12e8c1edca1
2018-10-08 02:18:32 +03:00
Leonid Yuriev
0b870648af mdbx-chk: use txnid as record-number for GC. 2018-09-23 12:04:10 +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
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
64fb9b81f3 mdbx: allow GC's PNL be partially unused. 2018-09-13 17:46:52 +03:00
Leo Yuriev
e00dce3543 mdbx: rework PNL, DPL and TXN lists.
Change-Id: I79c7399912516b17cc255fc8e24b5941338e5eb1
2018-09-13 17:40:55 +03:00
Leo Yuriev
8f51b6bac2 mdbx-tools: fix ENOMEM for Windows (minor). 2018-09-13 17:40:55 +03:00
Leo Yuriev
7498286e3a mdbx: verification of in-db stats. 2018-09-13 16:04:28 +03:00
Leo Yuriev
3bc339ef19 mdbx: enumeration for page types. 2018-09-13 16:00:33 +03:00
Leo Yuriev
e9d63315d1 mdbx-chk: refine dbi-structure. 2018-09-13 01:10:52 +03:00
Leonid Yuriev
073ee8888c mdbx-tools: add/fix printf-format checking.
Change-Id: I8d6f5c66ad7ff51296e415bfe577d99823743c56
2018-09-13 01:10:41 +03:00
Leo Yuriev
20022658be mdbx-tools: remove "" from printf-strings. 2018-09-13 00:52:56 +03:00
Leonid Yuriev
15a9fb9b98 mdbx-tools: refine 'mismatch idl length' error message.
Change-Id: I64ed835035f2318b295353f9360fc4d4da2afa28
2018-08-23 14:48:20 +03:00
Leonid Yuriev
08fa2c1746 mdbx: drop/replace PNL-constant with MDBX_LIST_MAX.
Change-Id: I71722f06c771ad57e3e7ca84f3d497750cae8419
2018-08-21 22:19:20 +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
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
0dfa9cd09a mdbx: add MDBX_EXCLUSIVE instead of mdbx_env_open_ex().
Change-Id: I3c817d58d971385bcd07643df14beaf7122c7836
2018-06-20 13:52:02 +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
159d676429 mdbx: fix typo in mdbx_chk output. 2018-04-10 21:12:41 +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
d0e1c02a8a mdbx-chk: rework/fix read-write mode. 2018-03-19 18:08:45 +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
72557af2b5 mdbx: HNY!
Change-Id: I2a91b986964d96bb3e5f848e3c17408bd7745866
2018-02-04 13:10:54 +03:00
Leo Yuriev
ab7cb2c39e mdbx-build: minor cleanup after pul-request/merge.
Change-Id: Ia612dbd939be7acd938fca8eb3f93f650560417a
2018-01-14 22:09:52 +03:00
Vladimir Romanov
4ed8eddf42 Improve cmake support. Add rpm generation 2018-01-07 15:10:06 +03:00
Vladimir Romanov
18a261a6dd Add CMake support 2018-01-04 09:27:09 +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
c6fc062cfd mdbx: fix MSVC warnings.
Change-Id: Ida49e653510358d7c81fe5da73a0131dcb6268f6
2017-07-27 17:35:00 +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
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
Leonid Yuriev
006f531757 mdbx: turn /Wall for MSVC.
Change-Id: Idc264a9fe40a2af8629d96121fb91cba94e7147f
2017-07-26 16:02:19 +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
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
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
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
d01a97f729 tools: fix minor defects (coverity).
Change-Id: I3a80dcb31c54718d22cdca6272aa028685956243
2017-07-04 13:21:16 +03:00
Leo Yuriev
9a2fff91f3 mdbx: dynamic mapsize/geometry and API (mostly done).
Change-Id: Ifb768ff3207cae1755c53c211a3ae552c6455e12
2017-06-21 01:42:41 +03:00
Leo Yuriev
151d4540de mdbx: refine internal constant (use UINT32_C, etc minors).
Change-Id: I0f994ee75b5aa1494fcc8ca42a46120865676e25
2017-06-21 01:39:53 +03:00
Leonid Yuriev
bfa6dea784 mdbx: fix size_t/unsigned/int warnings.
Change-Id: Ic5a8684aed232b8b732d6e7a87a6757f3f7afcec
2017-06-06 04:15:08 +03:00
Leo Yuriev
dd33bea1d8 tools: mdbx_chk - don't 'rolled-back' in cooperative more. 2017-05-28 17:02:19 +03:00
Leo Yuriev
d642127d10 tools: fix 'tail' show in mdbx_chk. 2017-05-28 17:02:19 +03:00
Leo Yuriev
1e0654a4a8 tool: show operational txnid in mdbx_chk. 2017-05-28 17:02:19 +03:00
Leo Yuriev
9eeb00f448 mdbx: trinity of meta-pages. 2017-05-28 17:02:19 +03:00
Leo Yuriev
924e81ed92 mdbx: refine includes, drop midl.h and mdbx_osal.h 2017-05-24 17:05:59 +03:00
Leo Yuriev
06de7a5155 mdbx: rename the rest MDBX_xyz. 2017-05-24 02:24:38 +03:00
Leo Yuriev
62ebc59330 mdbx: rework version info (stub for now). 2017-05-24 02:17:10 +03:00
Leo Yuriev
8c18622592 mdbx: rework MDBX_val. 2017-05-23 22:18:21 +03:00
Leo Yuriev
ac8e987346 mdbx: rework MDBX_txn. 2017-05-23 22:18:21 +03:00
Leo Yuriev
eff0f92fa7 mdbx-tools: replace size_t/PRIuPTR with uint64_t/PRIu64. 2017-05-23 19:57:26 +03:00
Leo Yuriev
0cd30792bb mdbx: split MDB_ID into pgno_t and txnid_t. 2017-05-23 19:57:26 +03:00
Leo Yuriev
5c2042c466 tools: internal minor renames (preparation for changes). 2017-05-23 17:45:58 +03:00
Leo Yuriev
8b9e391dd0 mdbx: cleanup internals (mostly formatting, but not only). 2017-05-23 17:45:58 +03:00
Leo Yuriev
398b839b98 mdbx: drops old/obsolete API (mdbx_env_copy and mdbx_env_copydf). 2017-05-23 17:45:58 +03:00
Leo Yuriev
677625ead1 mdbx: add MDBX_WANNA_RECOVERY. 2017-05-18 04:31:54 +03:00
Leo Yuriev
29f01cf3f4 mdbx: use PRIuPTR/PRIiPTR/PRIxPTR instead of %z. 2017-05-10 19:16:23 +03:00
Leo Yuriev
f8eb858ef3 mdbx: drop MDB_MAXKEYSIZE. 2017-03-31 17:04:36 +03:00
Leo Yuriev
7d351f74c4 mdbx: rename mdbx_stat() to mdbx_dbi_stat(). 2017-03-29 18:52:55 +03:00
Leo Yuriev
0f49ed6e53 mdbx: big-bang (initial).
- OS Abstraction Layer;
 - Windows Support.
 - preparation for more changes.

Change-Id: I53772eda9091ba361cbc9a28656190ea0d4c5cee
2017-03-29 00:53:39 +03:00