Leo Yuriev
0f82db941b
mdbx: add error-logging to mdbx_page_get().
...
Change-Id: I6a1a95ec6fc73aa7bf28875a89b1dd6c02ef5164
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
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
c4e1c2b488
mdbx: refine assections (minor).
...
Change-Id: Ic924988b8ce043d6106df381c996dd2c8ff9ca1f
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
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
Leo Yuriev
7ffff48fdc
mdbx: rework mdbx_update_gc().
2018-09-13 17:40:55 +03:00
Leo Yuriev
cbafb3f471
mdbx: update DBXs with cursor-tracking.
2018-09-13 17:40:55 +03:00
Leonid Yuriev
7ce1a4c0cf
mdbx: clarify mdbx_backlog_size().
...
Change-Id: I42170dded36b7259f61c028fefb72691ff791388
2018-09-13 17:40:55 +03:00
Leo Yuriev
e00dce3543
mdbx: rework PNL, DPL and TXN lists.
...
Change-Id: I79c7399912516b17cc255fc8e24b5941338e5eb1
2018-09-13 17:40:55 +03:00
Leonid Yuriev
289da70a67
mdbx: fix max_keysize (TODO).
...
Change-Id: I660b1b3e454d9b51a24d3b4cc987c8e2980bd435
2018-09-13 17:19:06 +03:00
Leo Yuriev
0be592530e
mdbx: fix accounting mdbx_ovpage_free().
2018-09-13 17:19:06 +03:00
Leo Yuriev
6ce08100fa
mdbx: fix accounting mdbx_page_loose().
2018-09-13 16:52:12 +03:00
Leonid Yuriev
c3a9ad52ed
mdbx: fix accounting mdbx_page_new().
...
Change-Id: I635c4f4dedeb03ef7011a7c1516c53a446416901
2018-09-13 16:50:52 +03:00
Leo Yuriev
7c5d24f99a
mdbx: fix accounting mdbx_rebalance().
2018-09-13 16:49:25 +03:00
Leo Yuriev
3a8d73b7ef
mdbx: fix accounting mdbx_drop0().
2018-09-13 16:47:25 +03:00
Leo Yuriev
5c06a4c917
mdbx: add mdbx_outer_db().
2018-09-13 16:46:16 +03:00
Leonid Yuriev
02f3230e0c
mdbx: rework cursor's couple (required for further fixing).
...
Change-Id: Ic89c59eaea36d14a26e29d2012c693d92474a748
2018-09-13 16:38:43 +03:00
Leo Yuriev
e25b30b5ce
mdbx: add mdbx_page_befree().
2018-09-13 16:25:46 +03:00
Leonid Yuriev
676fc941f1
mdbx: fix accounting mdbx_cursor_del().
...
Change-Id: I19418e46ac1c692aa4eb346019c3a11539870f94
2018-09-13 16:23:33 +03:00
Leonid Yuriev
f62bb4b6a7
mdbx: fix accounting mdbx_cursor_put().
...
Change-Id: I7e621d62104d2d4e1c8cabf479077369d566f135
2018-09-13 16:22:03 +03:00
Leo Yuriev
e7da946fac
mdbx: reset length of PNL before shrinking.
2018-09-13 16:04:32 +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
ceac458b4e
mdbx: rework internal self-audit.
...
Change-Id: I42a585a61a9040a24d9d8dbd12fe9055d189195c
2018-09-13 00:52:57 +03:00
Leo Yuriev
3c87e02716
mdbx: add unlikely
for comparison result inside mdbx_cursor_set().
2018-09-12 19:51:05 +03:00
Leonid Yuriev
51b89c9690
mdbx: fix memleak after midl2 rework.
...
Change-Id: I211a1c0e2b7e0c5abc44ff82151f83f81ddda754
2018-09-12 19:51:05 +03:00
Leonid Yuriev
ee21afce1e
mdbx: fix comments typo.
...
Change-Id: Ieb8ee5d6d76457efbd54958fe9d894f752880520
2018-09-12 19:51:05 +03:00
Leo Yuriev
8966a1773c
mdbx: add C_GCFREEZE cursor's flag.
...
Change-Id: I813a2c2ac30564d8943f0cf50a601b858dda0bd9
2018-09-12 19:51:05 +03:00
Leonid Yuriev
f373a0ca84
mdbx: rework/speedup filtering of dirty-list from loose-pages inside mdbx_update_gc().
...
Change-Id: Icf4101fa77314ab79be90ee429cf2df639686d7e
2018-09-12 19:48:06 +03:00
Leonid Yuriev
8abff4773f
mdbx: rework ID2L.
...
Change-Id: Ia5b47bcceb176c994bfe59373242f8622389697e
2018-09-12 19:29:25 +03:00
Leonid Yuriev
93a71c29e7
mdbx: add mdbx_mid2l_sort().
...
Change-Id: Ib70a46063611b0657b34524d268b2ee5bd9b1eb8
2018-09-12 19:27:23 +03:00
Leonid Yuriev
30b084724a
mdbx: setup mdbx_cmp_memn() as data-comparator for safety.
2018-09-12 19:25:12 +03:00
Leonid Yuriev
e3ff19a722
mdbx: check comparator for MDBX_GET_BOTH and MDBX_GET_BOTH_RANGE.
2018-09-12 19:24:34 +03:00
Leo Yuriev
f58185afa6
mdbx: don't touch mm_psize
and mm_flags
while provoking bad readers (debug-only).
2018-09-12 19:23:56 +03:00
Leo Yuriev
8364427d02
mdbx: fix concurrent opening with custom pagesize (get pagesize from meta-page early).
2018-09-12 19:22:53 +03:00
Leo Yuriev
c362ad9465
mdbx: fix added limit's API.
2018-08-22 16:19:42 +03:00
Leonid Yuriev
8acc1979bb
mdbx: fix mdbx_env_get_maxkeysize() result type (minor).
...
Change-Id: I8e3a7f8c2b81b5f8ac40801313cbd6f17d2dea64
2018-08-21 22:35:53 +03:00
Leonid Yuriev
f371f10743
mdbx: one more fix/rewrite mdbx_update_gc().
...
Change-Id: I7188f1566488d239d018311286612c3117f58127
2018-08-21 22:19:20 +03:00
Leonid Yuriev
7aab221bf4
mdbx: add mdbx_txl_sort().
...
Change-Id: Idffb3b4a3fa455d125559a36cbe7c88b8a848b02
2018-08-21 22:19:20 +03:00
Leonid Yuriev
a0d10e41b8
mdbx: add mdbx_limits_xyz().
...
Change-Id: I56c79704c59386a0c4d84b001020484c23925e6c
2018-08-21 22:19: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
0f63ab0385
mdbx: refine PN-lists.
...
Change-Id: Ib5ffafe634993b6f3b0fb7e35cc49f7d9b8c95a5
2018-08-21 22:19:20 +03:00
Leonid Yuriev
cb081424ff
mdbx: don't keep extra space while update on overflow-pages.
...
Change-Id: I70f2a87e0e9ec088f692021cfcfcd1b81f287e31
2018-08-21 22:19:20 +03:00
Leonid Yuriev
d3e9626a15
mdbx: fix mdbx_pnl_grow().
...
Change-Id: I414501381a0ffea91677d8e5ef696fa6f645001f
2018-08-21 22:19:20 +03:00
Leonid Yuriev
434f0d5b57
mdbx: fix/rewrite mdbx_update_gc().
...
Change-Id: I580a1ff0cbeeb529e2bcbd50d97bfba7bcf5a546
2018-08-13 01:21:07 +03:00
Leonid Yuriev
c43b7d1aba
mdbx-test: fix minor typos.
...
Change-Id: I4889a0e698bdfdda7eed257a5cd29e8b8089d102
2018-08-13 01:21:07 +03:00
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
6a51343b89
mdbx: fix 'db_dummy' inside mdbx_dbi_open_ex().
...
Change-Id: I70a21c9b77a43c5af749da5723fa965487a056b0
2018-08-02 11:14:46 +03:00