From 40585b483976d9062e6c971df285f911512ecd5e Mon Sep 17 00:00:00 2001 From: Howard Chu Date: Tue, 9 Feb 2021 23:38:06 +0000 Subject: [PATCH 1/7] ITS#9461 refix ITS#9376 Was setting C_DEL flag gratuitously --- libraries/liblmdb/mdb.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/liblmdb/mdb.c b/libraries/liblmdb/mdb.c index 621cbcfa8f..e6cae8edf2 100644 --- a/libraries/liblmdb/mdb.c +++ b/libraries/liblmdb/mdb.c @@ -8527,10 +8527,10 @@ mdb_cursor_del0(MDB_cursor *mc) } m3->mc_xcursor->mx_cursor.mc_flags |= C_DEL; } - m3->mc_flags |= C_DEL; } } } + m3->mc_flags |= C_DEL; fail: if (rc) From 257847ab71bb181db4fbe9b0115d087bf987f93c Mon Sep 17 00:00:00 2001 From: Howard Chu Date: Tue, 9 Feb 2021 23:41:50 +0000 Subject: [PATCH 2/7] Return to Engineering, ITS#9461 --- libraries/liblmdb/CHANGES | 3 +++ 1 file changed, 3 insertions(+) diff --git a/libraries/liblmdb/CHANGES b/libraries/liblmdb/CHANGES index d1f8307f2d..765c05ee96 100644 --- a/libraries/liblmdb/CHANGES +++ b/libraries/liblmdb/CHANGES @@ -1,5 +1,8 @@ LMDB 0.9 Change Log +LMDB 0.9.29 Engineering + ITS#9461 refix ITS#9376 + LMDB 0.9.28 Release (2021/02/04) ITS#8662 add -a append option to mdb_load From f9c5b46651c4ecd699643c4d90bb3ab7725a6167 Mon Sep 17 00:00:00 2001 From: Howard Chu Date: Thu, 11 Feb 2021 11:34:57 +0000 Subject: [PATCH 3/7] ITS#9461 fix typo --- libraries/liblmdb/mdb.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/liblmdb/mdb.c b/libraries/liblmdb/mdb.c index e6cae8edf2..4062664bf7 100644 --- a/libraries/liblmdb/mdb.c +++ b/libraries/liblmdb/mdb.c @@ -8530,7 +8530,7 @@ mdb_cursor_del0(MDB_cursor *mc) } } } - m3->mc_flags |= C_DEL; + mc->mc_flags |= C_DEL; fail: if (rc) From 56609fb5a6887487afe26cdac67fde6d55e9d092 Mon Sep 17 00:00:00 2001 From: Quanah Gibson-Mount Date: Thu, 18 Feb 2021 16:25:45 +0000 Subject: [PATCH 4/7] ITS#9469 - Typo fixes --- libraries/liblmdb/lmdb.h | 4 ++-- libraries/liblmdb/mdb.c | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/libraries/liblmdb/lmdb.h b/libraries/liblmdb/lmdb.h index bbdc179f21..fcb8c86e16 100644 --- a/libraries/liblmdb/lmdb.h +++ b/libraries/liblmdb/lmdb.h @@ -576,7 +576,7 @@ int mdb_env_create(MDB_env **env); *
  • #MDB_NOTLS * Don't use Thread-Local Storage. Tie reader locktable slots to * #MDB_txn objects instead of to threads. I.e. #mdb_txn_reset() keeps - * the slot reseved for the #MDB_txn object. A thread may use parallel + * the slot reserved for the #MDB_txn object. A thread may use parallel * read-only transactions. A read-only transaction may span threads if * the user synchronizes its use. Applications that multiplex many * user threads over individual OS threads need this option. Such an @@ -928,7 +928,7 @@ void *mdb_env_get_userctx(MDB_env *env); typedef void MDB_assert_func(MDB_env *env, const char *msg); /** Set or reset the assert() callback of the environment. - * Disabled if liblmdb is buillt with NDEBUG. + * Disabled if liblmdb is built with NDEBUG. * @note This hack should become obsolete as lmdb's error handling matures. * @param[in] env An environment handle returned by #mdb_env_create(). * @param[in] func An #MDB_assert_func function, or 0. diff --git a/libraries/liblmdb/mdb.c b/libraries/liblmdb/mdb.c index 4062664bf7..1ebb04c0f5 100644 --- a/libraries/liblmdb/mdb.c +++ b/libraries/liblmdb/mdb.c @@ -493,7 +493,7 @@ static txnid_t mdb_debug_start; * The string is printed literally, with no format processing. */ #define DPUTS(arg) DPRINTF(("%s", arg)) - /** Debuging output value of a cursor DBI: Negative in a sub-cursor. */ + /** Debugging output value of a cursor DBI: Negative in a sub-cursor. */ #define DDBI(mc) \ (((mc)->mc_flags & C_SUB) ? -(int)(mc)->mc_dbi : (int)(mc)->mc_dbi) /** @} */ From f8891d510bc8ddb9599fb30dd4a171304ab8edf9 Mon Sep 17 00:00:00 2001 From: Howard Chu Date: Sun, 14 Mar 2021 14:25:55 +0000 Subject: [PATCH 5/7] ITS#9376 simplify --- libraries/liblmdb/mdb.c | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/libraries/liblmdb/mdb.c b/libraries/liblmdb/mdb.c index 1ebb04c0f5..991c713161 100644 --- a/libraries/liblmdb/mdb.c +++ b/libraries/liblmdb/mdb.c @@ -8481,7 +8481,6 @@ mdb_cursor_del0(MDB_cursor *mc) return rc; } - ki = mc->mc_ki[mc->mc_top]; mp = mc->mc_pg[mc->mc_top]; nkeys = NUMKEYS(mp); @@ -8493,19 +8492,18 @@ mdb_cursor_del0(MDB_cursor *mc) if (m3->mc_snum < mc->mc_snum) continue; if (m3->mc_pg[mc->mc_top] == mp) { + if (m3->mc_ki[mc->mc_top] >= mc->mc_ki[mc->mc_top]) { /* if m3 points past last node in page, find next sibling */ - if (m3->mc_ki[mc->mc_top] >= nkeys) { - rc = mdb_cursor_sibling(m3, 1); - if (rc == MDB_NOTFOUND) { - m3->mc_flags |= C_EOF; - rc = MDB_SUCCESS; - continue; + if (m3->mc_ki[mc->mc_top] >= nkeys) { + rc = mdb_cursor_sibling(m3, 1); + if (rc == MDB_NOTFOUND) { + m3->mc_flags |= C_EOF; + rc = MDB_SUCCESS; + continue; + } + if (rc) + goto fail; } - if (rc) - goto fail; - } - if (m3->mc_ki[mc->mc_top] >= ki || - /* moved to right sibling */ m3->mc_pg[mc->mc_top] != mp) { if (m3->mc_xcursor && !(m3->mc_flags & C_EOF)) { MDB_node *node = NODEPTR(m3->mc_pg[m3->mc_top], m3->mc_ki[m3->mc_top]); /* If this node has dupdata, it may need to be reinited From b167701f864ef3b410d0812ad7ab683f23f9439f Mon Sep 17 00:00:00 2001 From: Howard Chu Date: Sun, 14 Mar 2021 14:29:44 +0000 Subject: [PATCH 6/7] ITS#9500 fix regression from ITS#8662 --- libraries/liblmdb/mdb.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/liblmdb/mdb.c b/libraries/liblmdb/mdb.c index 991c713161..8cecdb2e69 100644 --- a/libraries/liblmdb/mdb.c +++ b/libraries/liblmdb/mdb.c @@ -6992,7 +6992,7 @@ put_sub: xdata.mv_size = 0; xdata.mv_data = ""; leaf = NODEPTR(mc->mc_pg[mc->mc_top], mc->mc_ki[mc->mc_top]); - if (flags == MDB_CURRENT) { + if ((flags & (MDB_CURRENT|MDB_APPENDDUP)) == MDB_CURRENT) { xflags = MDB_CURRENT|MDB_NOSPILL; } else { mdb_xcursor_init1(mc, leaf); From b807a63f2c8b6678c2d4d70505bf38b69a681ec1 Mon Sep 17 00:00:00 2001 From: Quanah Gibson-Mount Date: Mon, 15 Mar 2021 16:14:56 +0000 Subject: [PATCH 7/7] ITS#9500 --- libraries/liblmdb/CHANGES | 1 + 1 file changed, 1 insertion(+) diff --git a/libraries/liblmdb/CHANGES b/libraries/liblmdb/CHANGES index 765c05ee96..0846998652 100644 --- a/libraries/liblmdb/CHANGES +++ b/libraries/liblmdb/CHANGES @@ -2,6 +2,7 @@ LMDB 0.9 Change Log LMDB 0.9.29 Engineering ITS#9461 refix ITS#9376 + ITS#9500 fix regression from ITS#8662 LMDB 0.9.28 Release (2021/02/04) ITS#8662 add -a append option to mdb_load