mirror of
https://github.com/isar/libmdbx.git
synced 2025-01-02 00:54:14 +08:00
Leo Yuriev
aeea7ebb08
mdbx: backport - ITS#8321 a lot for cursor tracking.
Multiple bugs were fixed in the cursor fixups which adjust other open cursors in response to various write ops. Includes: - ITS#8321 Fix del/dupsort. When deleting a dupsort key, if other cursors pointed at that key, set them to uninit'd, not EOF. They no longer have anything to point at. - ITS#8321 don't skip fixups on splitting cursors. Adjustments can't be skipped, in recursive calls each level must fixup their own level. - ITS#8321 fix mdb_cursor_chk(). It was reporting spurious errors due to uninit'd cursors - ITS#8321 fix mdb_cursor_shadow(). Set a valid txn so that cursor fixup code works on the shadows - ITS#8321 fix mdb_cursor_put. Ignore sub-cursors that shouldn't be fixed up - ITS#8321 track temporary cursors. In rebalance/split operations, temporary cursors need to be visible to propagate fixups - ITS#8321 simplify page_split fixups. - ITS#8321 reorganize page_split fixups. DUPFIXED fixups needed to occur after separator update. MDB_RESERVE handling moved after split fixup. Change-Id: I0c04acf54ebf6e84f32996b5723ec6fafb983ad9
Description
Mirror of the libmdbx repository
Languages
C
67.8%
C++
24.5%
CMake
4.5%
Makefile
1.6%
Shell
1.1%
Other
0.5%