mdbx-tools: replace size_t/PRIuPTR with uint64_t/PRIu64.

This commit is contained in:
Leo Yuriev 2017-05-23 14:47:49 +03:00
parent 0cd30792bb
commit eff0f92fa7
4 changed files with 106 additions and 108 deletions

View File

@ -59,39 +59,39 @@ static void signal_handler(int sig) {
struct {
const char *dbi_names[MAX_DBI];
size_t dbi_pages[MAX_DBI];
size_t dbi_empty_pages[MAX_DBI];
size_t dbi_payload_bytes[MAX_DBI];
size_t dbi_lost_bytes[MAX_DBI];
uint64_t dbi_pages[MAX_DBI];
uint64_t dbi_empty_pages[MAX_DBI];
uint64_t dbi_payload_bytes[MAX_DBI];
uint64_t dbi_lost_bytes[MAX_DBI];
short *pagemap;
size_t total_payload_bytes;
size_t pgcount;
uint64_t total_payload_bytes;
uint64_t pgcount;
} walk;
static __attribute__((constructor)) void init_walk(void) {
walk.dbi_names[0] = "@gc";
}
size_t total_unused_bytes;
uint64_t total_unused_bytes;
int exclusive = 2;
MDB_env *env;
MDB_txn *txn, *locktxn;
MDBX_envinfo envinfo;
MDBX_stat envstat;
size_t maxkeysize, reclaimable_pages, freedb_pages, lastpgno;
size_t userdb_count, skipped_subdb;
size_t maxkeysize, userdb_count, skipped_subdb;
uint64_t reclaimable_pages, freedb_pages, lastpgno;
unsigned verbose, quiet;
const char *only_subdb;
struct problem {
struct problem *pr_next;
size_t count;
uint64_t count;
const char *caption;
};
struct problem *problems_list;
size_t total_problems;
uint64_t total_problems;
static void __attribute__((format(printf, 1, 2))) print(const char *msg, ...) {
if (!quiet) {
@ -156,7 +156,7 @@ static int pagemap_lookup_dbi(const char *dbi) {
return last = i;
}
static void problem_add(const char *object, size_t entry_number,
static void problem_add(const char *object, uint64_t entry_number,
const char *msg, const char *extra, ...) {
total_problems++;
@ -178,7 +178,7 @@ static void problem_add(const char *object, size_t entry_number,
p->count++;
if (verbose > 1) {
print(" %s #%" PRIuPTR ": %s", object, entry_number, msg);
print(" %s #%" PRIu64 ": %s", object, entry_number, msg);
if (extra) {
va_list args;
printf(" (");
@ -200,8 +200,8 @@ static struct problem *problems_push() {
return p;
}
static size_t problems_pop(struct problem *list) {
size_t count = 0;
static uint64_t problems_pop(struct problem *list) {
uint64_t count = 0;
if (problems_list) {
int i;
@ -210,7 +210,7 @@ static size_t problems_pop(struct problem *list) {
for (i = 0; problems_list; ++i) {
struct problem *p = problems_list->pr_next;
count += problems_list->count;
print("%s%s (%" PRIuPTR ")", i ? ", " : "", problems_list->caption,
print("%s%s (%" PRIu64 ")", i ? ", " : "", problems_list->caption,
problems_list->count);
free(problems_list);
problems_list = p;
@ -223,23 +223,23 @@ static size_t problems_pop(struct problem *list) {
return count;
}
static int pgvisitor(size_t pgno, unsigned pgnumber, void *ctx, const char *dbi,
const char *type, int nentries, int payload_bytes,
int header_bytes, int unused_bytes) {
static int pgvisitor(uint64_t pgno, unsigned pgnumber, void *ctx,
const char *dbi, const char *type, int nentries,
int payload_bytes, int header_bytes, int unused_bytes) {
(void)ctx;
if (type) {
size_t page_bytes = payload_bytes + header_bytes + unused_bytes;
size_t page_size = pgnumber * envstat.ms_psize;
uint64_t page_bytes = payload_bytes + header_bytes + unused_bytes;
uint64_t page_size = pgnumber * envstat.ms_psize;
int index = pagemap_lookup_dbi(dbi);
if (index < 0)
return ENOMEM;
if (verbose > 2 && (!only_subdb || strcmp(only_subdb, dbi) == 0)) {
if (pgnumber == 1)
print(" %s-page %" PRIuPTR "", type, pgno);
print(" %s-page %" PRIu64, type, pgno);
else
print(" %s-span %" PRIuPTR "[%u]", type, pgno, pgnumber);
print(" %s-span %" PRIu64 "[%u]", type, pgno, pgnumber);
print(" of %s: header %i, payload %i, unused %i\n", dbi, header_bytes,
payload_bytes, unused_bytes);
}
@ -247,9 +247,8 @@ static int pgvisitor(size_t pgno, unsigned pgnumber, void *ctx, const char *dbi,
walk.pgcount += pgnumber;
if (unused_bytes < 0 || (size_t)unused_bytes > page_size)
problem_add("page", pgno, "illegal unused-bytes",
"%" PRIuPTR " < %i < %" PRIuPTR "", 0, unused_bytes,
envstat.ms_psize);
problem_add("page", pgno, "illegal unused-bytes", "%u < %i < %u", 0,
unused_bytes, envstat.ms_psize);
if (header_bytes < (int)sizeof(long) ||
(size_t)header_bytes >= envstat.ms_psize - sizeof(long))
@ -273,7 +272,7 @@ static int pgvisitor(size_t pgno, unsigned pgnumber, void *ctx, const char *dbi,
if (page_bytes != page_size) {
problem_add("page", pgno, "misused",
"%" PRIuPTR " != %" PRIuPTR " (%ih + %ip + %iu)", page_size,
"%" PRIu64 " != %" PRIu64 " (%ih + %ip + %iu)", page_size,
page_bytes, header_bytes, payload_bytes, unused_bytes);
if (page_size > page_bytes)
walk.dbi_lost_bytes[index] += page_size - page_bytes;
@ -286,7 +285,7 @@ static int pgvisitor(size_t pgno, unsigned pgnumber, void *ctx, const char *dbi,
do {
if (pgno >= lastpgno)
problem_add("page", pgno, "wrong page-no",
"%" PRIuPTR " > %" PRIiPTR "", pgno, lastpgno);
"%" PRIu64 " > %" PRIu64 "", pgno, lastpgno);
else if (walk.pagemap[pgno])
problem_add("page", pgno, "already used", "in %s",
walk.dbi_names[walk.pagemap[pgno]]);
@ -302,11 +301,11 @@ static int pgvisitor(size_t pgno, unsigned pgnumber, void *ctx, const char *dbi,
return gotsignal ? EINTR : MDB_SUCCESS;
}
typedef int(visitor)(const size_t record_number, const MDB_val *key,
typedef int(visitor)(const uint64_t record_number, const MDB_val *key,
const MDB_val *data);
static int process_db(MDB_dbi dbi, char *name, visitor *handler, int silent);
static int handle_userdb(const size_t record_number, const MDB_val *key,
static int handle_userdb(const uint64_t record_number, const MDB_val *key,
const MDB_val *data) {
(void)record_number;
(void)key;
@ -314,11 +313,11 @@ static int handle_userdb(const size_t record_number, const MDB_val *key,
return MDB_SUCCESS;
}
static int handle_freedb(const size_t record_number, const MDB_val *key,
static int handle_freedb(const uint64_t record_number, const MDB_val *key,
const MDB_val *data) {
char *bad = "";
pgno_t pg, prev;
ssize_t i, number, span = 0;
int i, number, span = 0;
pgno_t *iptr = data->mv_data;
txnid_t txnid = *(txnid_t *)key->mv_data;
@ -361,9 +360,8 @@ static int handle_freedb(const size_t record_number, const MDB_val *key,
;
}
if (verbose > 2 && !only_subdb) {
print(" transaction %" PRIaTXN ", %" PRIiPTR
" pages, maxspan %" PRIiPTR "%s\n",
txnid, number, span, bad);
print(" transaction %" PRIaTXN ", %u pages, maxspan %i%s\n", txnid,
number, span, bad);
if (verbose > 3) {
int j = number - 1;
while (j >= 0) {
@ -371,7 +369,7 @@ static int handle_freedb(const size_t record_number, const MDB_val *key,
for (span = 1; --j >= 0 && iptr[j] == pg + span; span++)
;
if (span > 1)
print(" %9" PRIaPGNO "[%" PRIiPTR "]\n", pg, span);
print(" %9" PRIaPGNO "[%i]\n", pg, span);
else
print(" %9" PRIaPGNO "\n", pg);
}
@ -383,7 +381,7 @@ static int handle_freedb(const size_t record_number, const MDB_val *key,
return MDB_SUCCESS;
}
static int handle_maindb(const size_t record_number, const MDB_val *key,
static int handle_maindb(const uint64_t record_number, const MDB_val *key,
const MDB_val *data) {
char *name;
int rc;
@ -416,10 +414,10 @@ static int process_db(MDB_dbi dbi, char *name, visitor *handler, int silent) {
unsigned flags;
int rc, i;
struct problem *saved_list;
size_t problems_count;
uint64_t problems_count;
unsigned record_count = 0, dups = 0;
size_t key_bytes = 0, data_bytes = 0;
uint64_t record_count = 0, dups = 0;
uint64_t key_bytes = 0, data_bytes = 0;
if (0 > (int)dbi) {
rc = mdbx_dbi_open(txn, name, 0, &dbi);
@ -472,10 +470,10 @@ static int process_db(MDB_dbi dbi, char *name, visitor *handler, int silent) {
}
print(" (0x%02X)\n", flags);
if (verbose > 1) {
print(" - page size %u, entries %" PRIuPTR "\n", ms.ms_psize,
print(" - page size %u, entries %" PRIu64 "\n", ms.ms_psize,
ms.ms_entries);
print(" - b-tree depth %u, pages: branch %" PRIuPTR ", leaf %" PRIuPTR
", overflow %" PRIuPTR "\n",
print(" - b-tree depth %u, pages: branch %" PRIu64 ", leaf %" PRIu64
", overflow %" PRIu64 "\n",
ms.ms_depth, ms.ms_branch_pages, ms.ms_leaf_pages,
ms.ms_overflow_pages);
}
@ -501,17 +499,17 @@ static int process_db(MDB_dbi dbi, char *name, visitor *handler, int silent) {
if (key.mv_size > maxkeysize) {
problem_add("entry", record_count, "key length exceeds max-key-size",
"%" PRIuPTR " > %" PRIuPTR "", key.mv_size, maxkeysize);
} else if ((flags & MDB_INTEGERKEY) && key.mv_size != sizeof(size_t) &&
key.mv_size != sizeof(int)) {
"%" PRIuPTR " > %u", key.mv_size, maxkeysize);
} else if ((flags & MDB_INTEGERKEY) && key.mv_size != sizeof(uint64_t) &&
key.mv_size != sizeof(uint32_t)) {
problem_add("entry", record_count, "wrong key length",
"%" PRIuPTR " != %" PRIuPTR "", key.mv_size, sizeof(size_t));
"%" PRIuPTR " != 4or8", key.mv_size);
}
if ((flags & MDB_INTEGERDUP) && data.mv_size != sizeof(size_t) &&
data.mv_size != sizeof(int)) {
if ((flags & MDB_INTEGERDUP) && data.mv_size != sizeof(uint64_t) &&
data.mv_size != sizeof(uint32_t)) {
problem_add("entry", record_count, "wrong data length",
"%" PRIuPTR " != %" PRIuPTR "", data.mv_size, sizeof(size_t));
"%" PRIuPTR " != 4or8", data.mv_size);
}
if (prev_key.mv_data) {
@ -567,9 +565,9 @@ static int process_db(MDB_dbi dbi, char *name, visitor *handler, int silent) {
bailout:
problems_count = problems_pop(saved_list);
if (!silent && verbose) {
print(" - summary: %u records, %u dups, %" PRIuPTR " key's bytes, %" PRIuPTR
" data's "
"bytes, %" PRIuPTR " problems\n",
print(" - summary: %" PRIu64 " records, %" PRIu64 " dups, %" PRIu64
" key's bytes, %" PRIu64 " data's "
"bytes, %" PRIu64 " problems\n",
record_count, dups, key_bytes, data_bytes, problems_count);
fflush(NULL);
}
@ -593,7 +591,7 @@ static void usage(char *prog) {
exit(EXIT_INTERRUPTED);
}
const char *meta_synctype(size_t sign) {
const char *meta_synctype(uint64_t sign) {
switch (sign) {
case 0:
return "no-sync/legacy";
@ -604,8 +602,10 @@ const char *meta_synctype(size_t sign) {
}
}
int meta_lt(size_t txn1, size_t sign1, size_t txn2, size_t sign2) {
return ((sign1 > 1) == (sign2 > 1)) ? txn1 < txn2 : txn2 && sign2 > 1;
int meta_lt(txnid_t txn1, uint64_t sign1, txnid_t txn2, uint64_t sign2) {
return (SIGN_IS_STEADY(sign1) == SIGN_IS_STEADY(sign2))
? txn1 < txn2
: txn2 && SIGN_IS_STEADY(sign2);
}
int main(int argc, char *argv[]) {
@ -615,7 +615,6 @@ int main(int argc, char *argv[]) {
int envflags = MDB_RDONLY;
int problems_maindb = 0, problems_freedb = 0, problems_meta = 0;
int dont_traversal = 0;
size_t n;
struct timespec timestamp_start, timestamp_finish;
double elapsed;
@ -749,37 +748,37 @@ int main(int argc, char *argv[]) {
"KMGTPEZY"; /* LY: Kilo, Mega, Giga, Tera, Peta, Exa, Zetta, Yotta! */
for (i = 0; sf[i + 1] && envinfo.me_mapsize / k > 1000.0; ++i)
k *= 1024;
print(" - map size %" PRIuPTR " (%.2f %cb)\n", envinfo.me_mapsize,
print(" - map size %" PRIu64 " (%.2f %cb)\n", envinfo.me_mapsize,
envinfo.me_mapsize / k, sf[i]);
if (envinfo.me_mapaddr)
print(" - mapaddr %p\n", envinfo.me_mapaddr);
print(" - pagesize %u, max keysize %" PRIuPTR ", max readers %u\n",
envstat.ms_psize, maxkeysize, envinfo.me_maxreaders);
print(" - transactions: last %" PRIuPTR ", bottom %" PRIuPTR
", lag reading %" PRIiPTR "\n",
print(" - transactions: last %" PRIu64 ", bottom %" PRIu64
", lag reading %" PRIi64 "\n",
envinfo.me_last_txnid, envinfo.me_tail_txnid,
envinfo.me_last_txnid - envinfo.me_tail_txnid);
print(" - meta-1: %s %" PRIuPTR ", %s",
meta_synctype(envinfo.me_meta1_sign), envinfo.me_meta1_txnid,
print(" - meta-1: %s %" PRIu64 ", %s", meta_synctype(envinfo.me_meta1_sign),
envinfo.me_meta1_txnid,
meta_lt(envinfo.me_meta1_txnid, envinfo.me_meta1_sign,
envinfo.me_meta2_txnid, envinfo.me_meta2_sign)
? "tail"
: "head");
if (envinfo.me_meta1_txnid > envinfo.me_last_txnid)
print(", rolled-back %" PRIuPTR " (%" PRIuPTR " >>> %" PRIuPTR ")",
print(", rolled-back %" PRIu64 " (%" PRIu64 " >>> %" PRIu64 ")",
envinfo.me_meta1_txnid - envinfo.me_last_txnid,
envinfo.me_meta1_txnid, envinfo.me_last_txnid);
print("\n");
print(" - meta-2: %s %" PRIuPTR ", %s",
meta_synctype(envinfo.me_meta2_sign), envinfo.me_meta2_txnid,
print(" - meta-2: %s %" PRIu64 ", %s", meta_synctype(envinfo.me_meta2_sign),
envinfo.me_meta2_txnid,
meta_lt(envinfo.me_meta2_txnid, envinfo.me_meta2_sign,
envinfo.me_meta1_txnid, envinfo.me_meta1_sign)
? "tail"
: "head");
if (envinfo.me_meta2_txnid > envinfo.me_last_txnid)
print(", rolled-back %" PRIuPTR " (%" PRIuPTR " >>> %" PRIuPTR ")",
print(", rolled-back %" PRIu64 " (%" PRIu64 " >>> %" PRIu64 ")",
envinfo.me_meta2_txnid - envinfo.me_last_txnid,
envinfo.me_meta2_txnid, envinfo.me_last_txnid);
print("\n");
@ -792,7 +791,7 @@ int main(int argc, char *argv[]) {
if (!meta_lt(envinfo.me_meta1_txnid, envinfo.me_meta1_sign,
envinfo.me_meta2_txnid, envinfo.me_meta2_sign) &&
envinfo.me_meta1_txnid != envinfo.me_last_txnid) {
print(" - meta-1 txn-id mismatch last-txn-id (%" PRIiPTR " != %" PRIiPTR
print(" - meta-1 txn-id mismatch last-txn-id (%" PRIi64 " != %" PRIi64
")\n",
envinfo.me_meta1_txnid, envinfo.me_last_txnid);
++problems_meta;
@ -801,7 +800,7 @@ int main(int argc, char *argv[]) {
if (!meta_lt(envinfo.me_meta2_txnid, envinfo.me_meta2_sign,
envinfo.me_meta1_txnid, envinfo.me_meta1_sign) &&
envinfo.me_meta2_txnid != envinfo.me_last_txnid) {
print(" - meta-2 txn-id mismatch last-txn-id (%" PRIiPTR " != %" PRIiPTR
print(" - meta-2 txn-id mismatch last-txn-id (%" PRIi64 " != %" PRIi64
")\n",
envinfo.me_meta2_txnid, envinfo.me_last_txnid);
++problems_meta;
@ -810,12 +809,11 @@ int main(int argc, char *argv[]) {
if (verbose)
print(" - perform lite check last-txn-id with meta-pages (not a "
"monopolistic mode)\n");
size_t last = (envinfo.me_meta2_txnid > envinfo.me_meta1_txnid)
? envinfo.me_meta2_txnid
: envinfo.me_meta1_txnid;
uint64_t last = (envinfo.me_meta2_txnid > envinfo.me_meta1_txnid)
? envinfo.me_meta2_txnid
: envinfo.me_meta1_txnid;
if (last != envinfo.me_last_txnid) {
print(" - last-meta mismatch last-txn-id (%" PRIiPTR " != %" PRIiPTR
")\n",
print(" - last-meta mismatch last-txn-id (%" PRIi64 " != %" PRIi64 ")\n",
last, envinfo.me_last_txnid);
++problems_meta;
}
@ -852,6 +850,7 @@ int main(int argc, char *argv[]) {
goto bailout;
}
uint64_t n;
for (n = 0; n < lastpgno; ++n)
if (!walk.pagemap[n])
walk.dbi_pages[0] += 1;
@ -863,35 +862,34 @@ int main(int argc, char *argv[]) {
}
if (verbose) {
size_t total_page_bytes = walk.pgcount * envstat.ms_psize;
print(" - dbi pages: %" PRIuPTR " total", walk.pgcount);
uint64_t total_page_bytes = walk.pgcount * envstat.ms_psize;
print(" - dbi pages: %" PRIu64 " total", walk.pgcount);
if (verbose > 1)
for (i = 1; i < MAX_DBI && walk.dbi_names[i]; ++i)
print(", %s %" PRIuPTR "", walk.dbi_names[i], walk.dbi_pages[i]);
print(", %s %" PRIuPTR "\n", walk.dbi_names[0], walk.dbi_pages[0]);
print(", %s %" PRIu64 "", walk.dbi_names[i], walk.dbi_pages[i]);
print(", %s %" PRIu64 "\n", walk.dbi_names[0], walk.dbi_pages[0]);
if (verbose > 1) {
print(" - space info: total %" PRIuPTR " bytes, payload %" PRIuPTR
print(" - space info: total %" PRIu64 " bytes, payload %" PRIu64
" (%.1f%%), unused "
"%" PRIuPTR " (%.1f%%)\n",
"%" PRIu64 " (%.1f%%)\n",
total_page_bytes, walk.total_payload_bytes,
walk.total_payload_bytes * 100.0 / total_page_bytes,
total_page_bytes - walk.total_payload_bytes,
(total_page_bytes - walk.total_payload_bytes) * 100.0 /
total_page_bytes);
for (i = 1; i < MAX_DBI && walk.dbi_names[i]; ++i) {
size_t dbi_bytes = walk.dbi_pages[i] * envstat.ms_psize;
print(" %s: subtotal %" PRIuPTR
" bytes (%.1f%%), payload %" PRIuPTR " (%.1f%%), "
"unused %" PRIuPTR " (%.1f%%)",
uint64_t dbi_bytes = walk.dbi_pages[i] * envstat.ms_psize;
print(" %s: subtotal %" PRIu64 " bytes (%.1f%%),"
" payload %" PRIu64 " (%.1f%%), unused %" PRIu64 " (%.1f%%)",
walk.dbi_names[i], dbi_bytes,
dbi_bytes * 100.0 / total_page_bytes, walk.dbi_payload_bytes[i],
walk.dbi_payload_bytes[i] * 100.0 / dbi_bytes,
dbi_bytes - walk.dbi_payload_bytes[i],
(dbi_bytes - walk.dbi_payload_bytes[i]) * 100.0 / dbi_bytes);
if (walk.dbi_empty_pages[i])
print(", %" PRIuPTR " empty pages", walk.dbi_empty_pages[i]);
print(", %" PRIu64 " empty pages", walk.dbi_empty_pages[i]);
if (walk.dbi_lost_bytes[i])
print(", %" PRIuPTR " bytes lost", walk.dbi_lost_bytes[i]);
print(", %" PRIu64 " bytes lost", walk.dbi_lost_bytes[i]);
print("\n");
}
}
@ -914,40 +912,40 @@ int main(int argc, char *argv[]) {
problems_freedb = process_db(0 /* FREE_DBI */, "free", handle_freedb, 0);
if (verbose) {
size_t value = envinfo.me_mapsize / envstat.ms_psize;
uint64_t value = envinfo.me_mapsize / envstat.ms_psize;
double percent = value / 100.0;
print(" - pages info: %" PRIuPTR " total", value);
print(", allocated %" PRIuPTR " (%.1f%%)", lastpgno, lastpgno / percent);
print(" - pages info: %" PRIu64 " total", value);
print(", allocated %" PRIu64 " (%.1f%%)", lastpgno, lastpgno / percent);
if (verbose > 1) {
value = envinfo.me_mapsize / envstat.ms_psize - lastpgno;
print(", remained %" PRIuPTR " (%.1f%%)", value, value / percent);
print(", remained %" PRIu64 " (%.1f%%)", value, value / percent);
value = lastpgno - freedb_pages;
print(", used %" PRIuPTR " (%.1f%%)", value, value / percent);
print(", used %" PRIu64 " (%.1f%%)", value, value / percent);
print(", gc %" PRIuPTR " (%.1f%%)", freedb_pages, freedb_pages / percent);
print(", gc %" PRIu64 " (%.1f%%)", freedb_pages, freedb_pages / percent);
value = freedb_pages - reclaimable_pages;
print(", detained %" PRIuPTR " (%.1f%%)", value, value / percent);
print(", detained %" PRIu64 " (%.1f%%)", value, value / percent);
print(", reclaimable %" PRIuPTR " (%.1f%%)", reclaimable_pages,
print(", reclaimable %" PRIu64 " (%.1f%%)", reclaimable_pages,
reclaimable_pages / percent);
}
value =
envinfo.me_mapsize / envstat.ms_psize - lastpgno + reclaimable_pages;
print(", available %" PRIuPTR " (%.1f%%)\n", value, value / percent);
print(", available %" PRIu64 " (%.1f%%)\n", value, value / percent);
}
if (problems_maindb == 0 && problems_freedb == 0) {
if (!dont_traversal && (exclusive || locktxn)) {
if (walk.pgcount != lastpgno - freedb_pages) {
error("used pages mismatch (%" PRIuPTR " != %" PRIuPTR ")\n",
error("used pages mismatch (%" PRIu64 " != %" PRIu64 ")\n",
walk.pgcount, lastpgno - freedb_pages);
}
if (walk.dbi_pages[0] != freedb_pages) {
error("gc pages mismatch (%" PRIuPTR " != %" PRIuPTR ")\n",
error("gc pages mismatch (%" PRIu64 " != %" PRIu64 ")\n",
walk.dbi_pages[0], freedb_pages);
}
} else if (verbose) {
@ -986,7 +984,7 @@ bailout:
total_problems += problems_meta;
if (total_problems || problems_maindb || problems_freedb) {
print("Total %" PRIuPTR " error(s) is detected, elapsed %.3f seconds.\n",
print("Total %" PRIu64 " error(s) is detected, elapsed %.3f seconds.\n",
total_problems, elapsed);
if (problems_meta || problems_maindb || problems_freedb)
return EXIT_FAILURE_CHECK_MAJOR;

View File

@ -109,7 +109,7 @@ static int dumpit(MDB_txn *txn, MDB_dbi dbi, char *name) {
if (name)
printf("database=%s\n", name);
printf("type=btree\n");
printf("mapsize=%" PRIuPTR "\n", info.me_mapsize);
printf("mapsize=%" PRIu64 "\n", info.me_mapsize);
if (info.me_mapaddr)
printf("mapaddr=%p\n", info.me_mapaddr);
printf("maxreaders=%u\n", info.me_maxreaders);

View File

@ -119,7 +119,7 @@ static void readhdr(void) {
ptr = memchr(dbuf.mv_data, '\n', dbuf.mv_size);
if (ptr)
*ptr = '\0';
i = sscanf((char *)dbuf.mv_data + STRLENOF("mapsize="), "%" PRIuPTR "",
i = sscanf((char *)dbuf.mv_data + STRLENOF("mapsize="), "%" PRIu64 "",
&envinfo.me_mapsize);
if (i != 1) {
fprintf(stderr, "%s: line %" PRIiPTR ": invalid mapsize %s\n", prog,

View File

@ -23,10 +23,10 @@
static void prstat(MDBX_stat *ms) {
printf(" Page size: %u\n", ms->ms_psize);
printf(" Tree depth: %u\n", ms->ms_depth);
printf(" Branch pages: %" PRIuPTR "\n", ms->ms_branch_pages);
printf(" Leaf pages: %" PRIuPTR "\n", ms->ms_leaf_pages);
printf(" Overflow pages: %" PRIuPTR "\n", ms->ms_overflow_pages);
printf(" Entries: %" PRIuPTR "\n", ms->ms_entries);
printf(" Branch pages: %" PRIu64 "\n", ms->ms_branch_pages);
printf(" Leaf pages: %" PRIu64 "\n", ms->ms_leaf_pages);
printf(" Overflow pages: %" PRIu64 "\n", ms->ms_overflow_pages);
printf(" Entries: %" PRIu64 "\n", ms->ms_entries);
}
static void usage(char *prog) {
@ -121,12 +121,12 @@ int main(int argc, char *argv[]) {
(void)mdbx_env_info(env, &mei, sizeof(mei));
printf("Environment Info\n");
printf(" Map address: %p\n", mei.me_mapaddr);
printf(" Map size: %" PRIuPTR "\n", mei.me_mapsize);
printf(" Map size: %" PRIu64 "\n", mei.me_mapsize);
printf(" Page size: %u\n", mst.ms_psize);
printf(" Max pages: %" PRIuPTR "\n", mei.me_mapsize / mst.ms_psize);
printf(" Number of pages used: %" PRIuPTR "\n", mei.me_last_pgno + 1);
printf(" Last transaction ID: %" PRIuPTR "\n", mei.me_last_txnid);
printf(" Tail transaction ID: %" PRIuPTR " (%" PRIiPTR ")\n",
printf(" Max pages: %" PRIu64 "\n", mei.me_mapsize / mst.ms_psize);
printf(" Number of pages used: %" PRIu64 "\n", mei.me_last_pgno + 1);
printf(" Last transaction ID: %" PRIu64 "\n", mei.me_last_txnid);
printf(" Tail transaction ID: %" PRIu64 " (%" PRIi64 ")\n",
mei.me_tail_txnid, mei.me_tail_txnid - mei.me_last_txnid);
printf(" Max readers: %u\n", mei.me_maxreaders);
printf(" Number of readers used: %u\n", mei.me_numreaders);