1212 * <http://www.OpenLDAP.org/license.html>. */
1313
1414#define xMDBX_ALLOY 1
15- #define MDBX_BUILD_SOURCERY 783046896c7a0ed430a0f65b28d3632edc41f69d227ca12ff88eeb6719dcc72f_v0_10_5_0_gedda9515
15+ #define MDBX_BUILD_SOURCERY 268e19480a95f8af62408394a79062c88b08bf4199e0200629bf1c06b484c27c_v0_11_0_0_gfcb8cd21
1616#ifdef MDBX_CONFIG_H
1717#include MDBX_CONFIG_H
1818#endif
@@ -2142,7 +2142,7 @@ MDBX_MAYBE_UNUSED static
21422142#define MDBX_MAGIC UINT64_C(/* 56-bit prime */ 0x59659DBDEF4C11)
21432143
21442144/* FROZEN: The version number for a database's datafile format. */
2145- #define MDBX_DATA_VERSION 2
2145+ #define MDBX_DATA_VERSION 3
21462146/* The version number for a database's lockfile format. */
21472147#define MDBX_LOCK_VERSION 4
21482148
@@ -2547,7 +2547,11 @@ typedef struct MDBX_lockinfo {
25472547
25482548#define MDBX_DATA_MAGIC \
25492549 ((MDBX_MAGIC << 8) + MDBX_PNL_ASCENDING * 64 + MDBX_DATA_VERSION)
2550- #define MDBX_DATA_MAGIC_DEVEL ((MDBX_MAGIC << 8) + 255)
2550+
2551+ #define MDBX_DATA_MAGIC_LEGACY_COMPAT \
2552+ ((MDBX_MAGIC << 8) + MDBX_PNL_ASCENDING * 64 + 2)
2553+
2554+ #define MDBX_DATA_MAGIC_LEGACY_DEVEL ((MDBX_MAGIC << 8) + 255)
25512555
25522556#define MDBX_LOCK_MAGIC ((MDBX_MAGIC << 8) + MDBX_LOCK_VERSION)
25532557
@@ -13545,7 +13549,8 @@ static int mdbx_validate_meta(MDBX_env *env, MDBX_meta *const meta,
1354513549 const uint64_t magic_and_version =
1354613550 unaligned_peek_u64(4, &meta->mm_magic_and_version);
1354713551 if (unlikely(magic_and_version != MDBX_DATA_MAGIC &&
13548- magic_and_version != MDBX_DATA_MAGIC_DEVEL)) {
13552+ magic_and_version != MDBX_DATA_MAGIC_LEGACY_COMPAT &&
13553+ magic_and_version != MDBX_DATA_MAGIC_LEGACY_DEVEL)) {
1354913554 mdbx_error("meta[%u] has invalid magic/version %" PRIx64, meta_number,
1355013555 magic_and_version);
1355113556 return ((magic_and_version >> 8) != MDBX_MAGIC) ? MDBX_INVALID
@@ -16537,10 +16542,11 @@ mdbx_page_get_ex(MDBX_cursor *const mc, const pgno_t pgno,
1653716542 mdbx_tassert(txn, front <= txn->mt_front);
1653816543 if (unlikely(pgno >= txn->mt_next_pgno)) {
1653916544 mdbx_error("page #%" PRIaPGNO " beyond next-pgno", pgno);
16545+ notfound:
1654016546 ret.page = nullptr;
16541- corrupted:
16542- mc->mc_txn->mt_flags |= MDBX_TXN_ERROR;
1654316547 ret.err = MDBX_PAGE_NOTFOUND;
16548+ bailout:
16549+ mc->mc_txn->mt_flags |= MDBX_TXN_ERROR;
1654416550 return ret;
1654516551 }
1654616552
@@ -16580,33 +16586,36 @@ mdbx_page_get_ex(MDBX_cursor *const mc, const pgno_t pgno,
1658016586 "mismatch actual pgno (%" PRIaPGNO ") != expected (%" PRIaPGNO
1658116587 ")\n",
1658216588 ret.page->mp_pgno, pgno);
16583- goto corrupted ;
16589+ goto notfound ;
1658416590 }
1658516591
1658616592#if !MDBX_DISABLE_PAGECHECKS
1658716593 if (unlikely(ret.page->mp_flags & P_ILL_BITS)) {
16588- bad_page(ret.page, "invalid page's flags (%u)\n", ret.page->mp_flags);
16589- goto corrupted;
16594+ ret.err =
16595+ bad_page(ret.page, "invalid page's flags (%u)\n", ret.page->mp_flags);
16596+ goto bailout;
1659016597 }
1659116598
1659216599 if (unlikely(ret.page->mp_txnid > front) &&
1659316600 unlikely(ret.page->mp_txnid > txn->mt_front || front < txn->mt_txnid)) {
16594- bad_page(ret.page,
16595- "invalid page txnid (%" PRIaTXN ") for %s' txnid (%" PRIaTXN ")\n",
16596- ret.page->mp_txnid,
16597- (front == txn->mt_front && front != txn->mt_txnid) ? "front-txn"
16598- : "parent-page",
16599- front);
16600- goto corrupted;
16601+ ret.err = bad_page(
16602+ ret.page,
16603+ "invalid page txnid (%" PRIaTXN ") for %s' txnid (%" PRIaTXN ")\n",
16604+ ret.page->mp_txnid,
16605+ (front == txn->mt_front && front != txn->mt_txnid) ? "front-txn"
16606+ : "parent-page",
16607+ front);
16608+ goto bailout;
1660116609 }
1660216610
1660316611 if (unlikely((ret.page->mp_upper < ret.page->mp_lower ||
1660416612 ((ret.page->mp_lower | ret.page->mp_upper) & 1) ||
1660516613 PAGEHDRSZ + ret.page->mp_upper > env->me_psize) &&
1660616614 !IS_OVERFLOW(ret.page))) {
16607- bad_page(ret.page, "invalid page lower(%u)/upper(%u) with limit (%u)\n",
16608- ret.page->mp_lower, ret.page->mp_upper, page_space(env));
16609- goto corrupted;
16615+ ret.err =
16616+ bad_page(ret.page, "invalid page lower(%u)/upper(%u) with limit (%u)\n",
16617+ ret.page->mp_lower, ret.page->mp_upper, page_space(env));
16618+ goto bailout;
1661016619 }
1661116620#endif /* !MDBX_DISABLE_PAGECHECKS */
1661216621
@@ -16851,7 +16860,7 @@ __hot static int mdbx_page_search(MDBX_cursor *mc, const MDBX_val *key,
1685116860 break;
1685216861 }
1685316862 while (unlikely((scan = scan->mt_parent) != nullptr));
16854- if (unlikely((rc = mdbx_page_get(mc, root, &mc->mc_pg[0], pp_txnid) != 0) ))
16863+ if (unlikely((rc = mdbx_page_get(mc, root, &mc->mc_pg[0], pp_txnid)) != 0))
1685516864 return rc;
1685616865 }
1685716866
@@ -28429,7 +28438,7 @@ __cold int mdbx_get_sysraminfo(intptr_t *page_size, intptr_t *total_pages,
2842928438
2843028439
2843128440#if MDBX_VERSION_MAJOR != 0 || \
28432- MDBX_VERSION_MINOR != 10
28441+ MDBX_VERSION_MINOR != 11
2843328442#error "API version mismatch! Had `git fetch --tags` done?"
2843428443#endif
2843528444
@@ -28449,11 +28458,11 @@ __dll_export
2844928458#endif
2845028459 const struct MDBX_version_info mdbx_version = {
2845128460 0,
28452- 10 ,
28453- 5 ,
28461+ 11 ,
28462+ 0 ,
2845428463 0,
28455- {"2021-10-13T16:35:26 +03:00", "31713895aac05dd55b3ebc8cadd419f96b38de54 ", "edda9515d67b4e6d3a6b1e95f1a7f7a20b462038 ",
28456- "v0.10.5 -0-gedda9515 "},
28464+ {"2021-10-21T15:17:18 +03:00", "7faddaf52d678a2afcb4cf2ca87075b8aaaa9e0e ", "fcb8cd214591f37d2738b83fd9f23f3630844774 ",
28465+ "v0.11.0 -0-gfcb8cd21 "},
2845728466 sourcery};
2845828467
2845928468__dll_export
0 commit comments