From 405de05ca9bce6acda66a51b66f63f4b33afe787 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9B=D0=B5=D0=BE=D0=BD=D0=B8=D0=B4=20=D0=AE=D1=80=D1=8C?= =?UTF-8?q?=D0=B5=D0=B2=20=28Leonid=20Yuriev=29?= Date: Thu, 5 May 2022 23:18:01 +0300 Subject: [PATCH] mdbx: return `MDBX_RESULT_TRUE` on empty transaction commit. --- src/core.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/core.c b/src/core.c index 259e2f7a..05745f6f 100644 --- a/src/core.c +++ b/src/core.c @@ -10390,8 +10390,15 @@ int mdbx_txn_commit_ex(MDBX_txn *txn, MDBX_commit_latency *latency) { (txn->mt_flags & (MDBX_TXN_DIRTY | MDBX_TXN_SPILLS)) == 0) { for (int i = txn->mt_numdbs; --i >= 0;) mdbx_tassert(txn, (txn->mt_dbistate[i] & DBI_DIRTY) == 0); - rc = MDBX_SUCCESS; +#if defined(MDBX_NOSUCCESS_EMPTY_COMMIT) && MDBX_NOSUCCESS_EMPTY_COMMIT + rc = mdbx_txn_end(txn, end_mode); + if (unlikely(rc != MDBX_SUCCESS)) + goto fail; + rc = MDBX_RESULT_TRUE; + goto provide_latency; +#else goto done; +#endif /* MDBX_NOSUCCESS_EMPTY_COMMIT */ } mdbx_debug("committing txn %" PRIaTXN " %p on mdbenv %p, root page %" PRIaPGNO