Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
HAMANO Tsukasa
OpenLDAP
Commits
636c2d2a
Commit
636c2d2a
authored
Aug 07, 2013
by
Howard Chu
Browse files
Use proper printf format on Windows
parent
74ed1757
Changes
2
Hide whitespace changes
Inline
Side-by-side
libraries/liblmdb/mdb.c
View file @
636c2d2a
...
...
@@ -162,8 +162,11 @@
#define GET_PAGESIZE(x) {SYSTEM_INFO si; GetSystemInfo(&si); (x) = si.dwPageSize;}
#define close(fd) (CloseHandle(fd) ? 0 : -1)
#define munmap(ptr,len) UnmapViewOfFile(ptr)
#define Z "I"
#else
#define Z "z"
#ifdef MDB_USE_POSIX_SEM
#define LOCK_MUTEX_R(env) mdb_sem_wait((env)->me_rmutex)
...
...
@@ -1166,14 +1169,14 @@ mdb_page_list(MDB_page *mp)
DKBUF
;
nkeys
=
NUMKEYS
(
mp
);
fprintf
(
stderr
,
"Page %
z
u numkeys %d
\n
"
,
mp
->
mp_pgno
,
nkeys
);
fprintf
(
stderr
,
"Page %
"
Z
"
u numkeys %d
\n
"
,
mp
->
mp_pgno
,
nkeys
);
for
(
i
=
0
;
i
<
nkeys
;
i
++
)
{
node
=
NODEPTR
(
mp
,
i
);
key
.
mv_size
=
node
->
mn_ksize
;
key
.
mv_data
=
node
->
mn_data
;
nsize
=
NODESIZE
+
NODEKSZ
(
node
)
+
sizeof
(
indx_t
);
if
(
IS_BRANCH
(
mp
))
{
fprintf
(
stderr
,
"key %d: page %
z
u, %s
\n
"
,
i
,
NODEPGNO
(
node
),
fprintf
(
stderr
,
"key %d: page %
"
Z
"
u, %s
\n
"
,
i
,
NODEPGNO
(
node
),
DKEY
(
&
key
));
}
else
{
if
(
F_ISSET
(
node
->
mn_flags
,
F_BIGDATA
))
...
...
@@ -1655,10 +1658,10 @@ mdb_page_alloc(MDB_cursor *mc, int num, MDB_page **mp)
}
env
->
me_pglast
=
last
;
#if MDB_DEBUG > 1
DPRINTF
(
"IDL read txn %
z
u root %
z
u num %u"
,
DPRINTF
(
"IDL read txn %
"
Z
"
u root %
"
Z
"
u num %u"
,
last
,
txn
->
mt_dbs
[
FREE_DBI
].
md_root
,
i
);
for
(
k
=
i
;
k
;
k
--
)
DPRINTF
(
"IDL %
z
u"
,
idl
[
k
]);
DPRINTF
(
"IDL %
"
Z
"
u"
,
idl
[
k
]);
#endif
/* Merge in descending sorted order */
j
=
mop_len
;
...
...
@@ -1826,7 +1829,7 @@ mdb_page_touch(MDB_cursor *mc)
(
rc
=
mdb_page_alloc
(
mc
,
1
,
&
np
)))
return
rc
;
pgno
=
np
->
mp_pgno
;
DPRINTF
(
"touched db %u page %
z
u -> %
z
u"
,
mc
->
mc_dbi
,
mp
->
mp_pgno
,
pgno
);
DPRINTF
(
"touched db %u page %
"
Z
"
u -> %
"
Z
"
u"
,
mc
->
mc_dbi
,
mp
->
mp_pgno
,
pgno
);
assert
(
mp
->
mp_pgno
!=
pgno
);
mdb_midl_xappend
(
txn
->
mt_free_pgs
,
mp
->
mp_pgno
);
/* Update the parent page, if any, to point to the new page */
...
...
@@ -2180,7 +2183,7 @@ mdb_txn_renew(MDB_txn *txn)
rc
=
mdb_txn_renew0
(
txn
);
if
(
rc
==
MDB_SUCCESS
)
{
DPRINTF
(
"renew txn %
z
u%c %p on mdbenv %p, root page %
z
u"
,
DPRINTF
(
"renew txn %
"
Z
"
u%c %p on mdbenv %p, root page %
"
Z
"
u"
,
txn
->
mt_txnid
,
(
txn
->
mt_flags
&
MDB_TXN_RDONLY
)
?
'r'
:
'w'
,
(
void
*
)
txn
,
(
void
*
)
txn
->
mt_env
,
txn
->
mt_dbs
[
MAIN_DBI
].
md_root
);
}
...
...
@@ -2275,7 +2278,7 @@ mdb_txn_begin(MDB_env *env, MDB_txn *parent, unsigned int flags, MDB_txn **ret)
free
(
txn
);
else
{
*
ret
=
txn
;
DPRINTF
(
"begin txn %
z
u%c %p on mdbenv %p, root page %
z
u"
,
DPRINTF
(
"begin txn %
"
Z
"
u%c %p on mdbenv %p, root page %
"
Z
"
u"
,
txn
->
mt_txnid
,
(
txn
->
mt_flags
&
MDB_TXN_RDONLY
)
?
'r'
:
'w'
,
(
void
*
)
txn
,
(
void
*
)
env
,
txn
->
mt_dbs
[
MAIN_DBI
].
md_root
);
}
...
...
@@ -2322,7 +2325,7 @@ mdb_txn_reset0(MDB_txn *txn, const char *act)
/* Close any DBI handles opened in this txn */
mdb_dbis_update
(
txn
,
0
);
DPRINTF
(
"%s txn %
z
u%c %p on mdbenv %p, root page %
z
u"
,
DPRINTF
(
"%s txn %
"
Z
"
u%c %p on mdbenv %p, root page %
"
Z
"
u"
,
act
,
txn
->
mt_txnid
,
(
txn
->
mt_flags
&
MDB_TXN_RDONLY
)
?
'r'
:
'w'
,
(
void
*
)
txn
,
(
void
*
)
env
,
txn
->
mt_dbs
[
MAIN_DBI
].
md_root
);
...
...
@@ -2465,10 +2468,10 @@ mdb_freelist_save(MDB_txn *txn)
#if MDB_DEBUG > 1
{
unsigned
int
i
=
free_pgs
[
0
];
DPRINTF
(
"IDL write txn %
z
u root %
z
u num %u"
,
DPRINTF
(
"IDL write txn %
"
Z
"
u root %
"
Z
"
u num %u"
,
txn
->
mt_txnid
,
txn
->
mt_dbs
[
FREE_DBI
].
md_root
,
i
);
for
(;
i
;
i
--
)
DPRINTF
(
"IDL %
z
u"
,
free_pgs
[
i
]);
DPRINTF
(
"IDL %
"
Z
"
u"
,
free_pgs
[
i
]);
}
#endif
continue
;
...
...
@@ -2607,7 +2610,7 @@ mdb_page_flush(MDB_txn *txn)
* the write offset, to at least save the overhead of a Seek
* system call.
*/
DPRINTF
(
"committing page %
z
u"
,
pgno
);
DPRINTF
(
"committing page %
"
Z
"
u"
,
pgno
);
memset
(
&
ov
,
0
,
sizeof
(
ov
));
ov
.
Offset
=
pos
&
0xffffffff
;
ov
.
OffsetHigh
=
pos
>>
16
>>
16
;
...
...
@@ -2652,7 +2655,7 @@ mdb_page_flush(MDB_txn *txn)
wpos
=
pos
;
wsize
=
0
;
}
DPRINTF
(
"committing page %
z
u"
,
pgno
);
DPRINTF
(
"committing page %
"
Z
"
u"
,
pgno
);
next_pos
=
pos
+
size
;
iov
[
n
].
iov_len
=
size
;
iov
[
n
].
iov_base
=
(
char
*
)
dp
;
...
...
@@ -2830,7 +2833,7 @@ mdb_txn_commit(MDB_txn *txn)
if
(
!
txn
->
mt_u
.
dirty_list
[
0
].
mid
&&
!
(
txn
->
mt_flags
&
MDB_TXN_DIRTY
))
goto
done
;
DPRINTF
(
"committing txn %
z
u %p on mdbenv %p, root page %
z
u"
,
DPRINTF
(
"committing txn %
"
Z
"
u %p on mdbenv %p, root page %
"
Z
"
u"
,
txn
->
mt_txnid
,
(
void
*
)
txn
,
(
void
*
)
env
,
txn
->
mt_dbs
[
MAIN_DBI
].
md_root
);
/* Update DB root pointers */
...
...
@@ -2925,7 +2928,7 @@ mdb_env_read_header(MDB_env *env, MDB_meta *meta)
p
=
(
MDB_page
*
)
&
pbuf
;
if
(
!
F_ISSET
(
p
->
mp_flags
,
P_META
))
{
DPRINTF
(
"page %
z
u not a meta page"
,
p
->
mp_pgno
);
DPRINTF
(
"page %
"
Z
"
u not a meta page"
,
p
->
mp_pgno
);
return
MDB_INVALID
;
}
...
...
@@ -3030,7 +3033,7 @@ mdb_env_write_meta(MDB_txn *txn)
assert
(
txn
->
mt_env
!=
NULL
);
toggle
=
!
txn
->
mt_toggle
;
DPRINTF
(
"writing meta page %d for root page %
z
u"
,
DPRINTF
(
"writing meta page %d for root page %
"
Z
"
u"
,
toggle
,
txn
->
mt_dbs
[
MAIN_DBI
].
md_root
);
env
=
txn
->
mt_env
;
...
...
@@ -3328,11 +3331,11 @@ mdb_env_open2(MDB_env *env)
env
->
me_metas
[
0
]
->
mm_version
,
env
->
me_psize
);
DPRINTF
(
"using meta page %d"
,
toggle
);
DPRINTF
(
"depth: %u"
,
db
->
md_depth
);
DPRINTF
(
"entries: %
z
u"
,
db
->
md_entries
);
DPRINTF
(
"branch pages: %
z
u"
,
db
->
md_branch_pages
);
DPRINTF
(
"leaf pages: %
z
u"
,
db
->
md_leaf_pages
);
DPRINTF
(
"overflow pages: %
z
u"
,
db
->
md_overflow_pages
);
DPRINTF
(
"root: %
z
u"
,
db
->
md_root
);
DPRINTF
(
"entries: %
"
Z
"
u"
,
db
->
md_entries
);
DPRINTF
(
"branch pages: %
"
Z
"
u"
,
db
->
md_branch_pages
);
DPRINTF
(
"leaf pages: %
"
Z
"
u"
,
db
->
md_leaf_pages
);
DPRINTF
(
"overflow pages: %
"
Z
"
u"
,
db
->
md_overflow_pages
);
DPRINTF
(
"root: %
"
Z
"
u"
,
db
->
md_root
);
}
#endif
...
...
@@ -4288,7 +4291,7 @@ mdb_node_search(MDB_cursor *mc, MDB_val *key, int *exactp)
{
pgno_t
pgno
;
COPY_PGNO
(
pgno
,
mp
->
mp_pgno
);
DPRINTF
(
"searching %u keys in %s %spage %
z
u"
,
DPRINTF
(
"searching %u keys in %s %spage %
"
Z
"
u"
,
nkeys
,
IS_LEAF
(
mp
)
?
"leaf"
:
"branch"
,
IS_SUBP
(
mp
)
?
"sub-"
:
""
,
pgno
);
}
...
...
@@ -4340,7 +4343,7 @@ mdb_node_search(MDB_cursor *mc, MDB_val *key, int *exactp)
DPRINTF
(
"found leaf index %u [%s], rc = %i"
,
i
,
DKEY
(
&
nodekey
),
rc
);
else
DPRINTF
(
"found branch index %u [%s -> %
z
u], rc = %i"
,
DPRINTF
(
"found branch index %u [%s -> %
"
Z
"
u], rc = %i"
,
i
,
DKEY
(
&
nodekey
),
NODEPGNO
(
node
),
rc
);
#endif
if
(
rc
==
0
)
...
...
@@ -4395,7 +4398,7 @@ mdb_cursor_pop(MDB_cursor *mc)
if
(
mc
->
mc_snum
)
mc
->
mc_top
--
;
DPRINTF
(
"popped page %
z
u off db %u cursor %p"
,
top
->
mp_pgno
,
DPRINTF
(
"popped page %
"
Z
"
u off db %u cursor %p"
,
top
->
mp_pgno
,
mc
->
mc_dbi
,
(
void
*
)
mc
);
}
}
...
...
@@ -4404,7 +4407,7 @@ mdb_cursor_pop(MDB_cursor *mc)
static
int
mdb_cursor_push
(
MDB_cursor
*
mc
,
MDB_page
*
mp
)
{
DPRINTF
(
"pushing page %
z
u on db %u cursor %p"
,
mp
->
mp_pgno
,
DPRINTF
(
"pushing page %
"
Z
"
u on db %u cursor %p"
,
mp
->
mp_pgno
,
mc
->
mc_dbi
,
(
void
*
)
mc
);
if
(
mc
->
mc_snum
>=
CURSOR_STACK
)
{
...
...
@@ -4467,7 +4470,7 @@ mdb_page_get(MDB_txn *txn, pgno_t pgno, MDB_page **ret, int *lvl)
level
=
0
;
p
=
(
MDB_page
*
)(
txn
->
mt_env
->
me_map
+
txn
->
mt_env
->
me_psize
*
pgno
);
}
else
{
DPRINTF
(
"page %
z
u not found"
,
pgno
);
DPRINTF
(
"page %
"
Z
"
u not found"
,
pgno
);
assert
(
p
!=
NULL
);
return
MDB_PAGE_NOTFOUND
;
}
...
...
@@ -4501,9 +4504,9 @@ mdb_page_search_root(MDB_cursor *mc, MDB_val *key, int modify)
MDB_node
*
node
;
indx_t
i
;
DPRINTF
(
"branch page %
z
u has %u keys"
,
mp
->
mp_pgno
,
NUMKEYS
(
mp
));
DPRINTF
(
"branch page %
"
Z
"
u has %u keys"
,
mp
->
mp_pgno
,
NUMKEYS
(
mp
));
assert
(
NUMKEYS
(
mp
)
>
1
);
DPRINTF
(
"found index 0 to page %
z
u"
,
NODEPGNO
(
NODEPTR
(
mp
,
0
)));
DPRINTF
(
"found index 0 to page %
"
Z
"
u"
,
NODEPGNO
(
NODEPTR
(
mp
,
0
)));
if
(
key
==
NULL
)
/* Initialize cursor to first page. */
i
=
0
;
...
...
@@ -4550,7 +4553,7 @@ mdb_page_search_root(MDB_cursor *mc, MDB_val *key, int modify)
return
MDB_CORRUPTED
;
}
DPRINTF
(
"found leaf page %
z
u for key [%s]"
,
mp
->
mp_pgno
,
DPRINTF
(
"found leaf page %
"
Z
"
u for key [%s]"
,
mp
->
mp_pgno
,
key
?
DKEY
(
key
)
:
NULL
);
mc
->
mc_flags
|=
C_INITIALIZED
;
mc
->
mc_flags
&=
~
C_EOF
;
...
...
@@ -4657,7 +4660,7 @@ mdb_page_search(MDB_cursor *mc, MDB_val *key, int flags)
mc
->
mc_snum
=
1
;
mc
->
mc_top
=
0
;
DPRINTF
(
"db %u root page %
z
u has flags 0x%X"
,
DPRINTF
(
"db %u root page %
"
Z
"
u has flags 0x%X"
,
mc
->
mc_dbi
,
root
,
mc
->
mc_pg
[
0
]
->
mp_flags
);
if
(
flags
&
MDB_PS_MODIFY
)
{
...
...
@@ -4680,7 +4683,7 @@ mdb_ovpage_free(MDB_cursor *mc, MDB_page *mp)
MDB_env
*
env
=
txn
->
mt_env
;
int
rc
;
DPRINTF
(
"free ov page %
z
u (%d)"
,
pg
,
ovpages
);
DPRINTF
(
"free ov page %
"
Z
"
u (%d)"
,
pg
,
ovpages
);
/* If the page is dirty or on the spill list we just acquired it,
* so we should give it back to our current free list, if any.
* Not currently supported in nested txns.
...
...
@@ -4763,7 +4766,7 @@ mdb_node_read(MDB_txn *txn, MDB_node *leaf, MDB_val *data)
data
->
mv_size
=
NODEDSZ
(
leaf
);
memcpy
(
&
pgno
,
NODEDATA
(
leaf
),
sizeof
(
pgno
));
if
((
rc
=
mdb_page_get
(
txn
,
pgno
,
&
omp
,
NULL
))
!=
0
)
{
DPRINTF
(
"read overflow page %
z
u failed"
,
pgno
);
DPRINTF
(
"read overflow page %
"
Z
"
u failed"
,
pgno
);
return
rc
;
}
data
->
mv_data
=
METADATA
(
omp
);
...
...
@@ -4815,7 +4818,7 @@ mdb_cursor_sibling(MDB_cursor *mc, int move_right)
}
mdb_cursor_pop
(
mc
);
DPRINTF
(
"parent page is page %
z
u, index %u"
,
DPRINTF
(
"parent page is page %
"
Z
"
u, index %u"
,
mc
->
mc_pg
[
mc
->
mc_top
]
->
mp_pgno
,
mc
->
mc_ki
[
mc
->
mc_top
]);
if
(
move_right
?
(
mc
->
mc_ki
[
mc
->
mc_top
]
+
1u
>=
NUMKEYS
(
mc
->
mc_pg
[
mc
->
mc_top
]))
...
...
@@ -4880,7 +4883,7 @@ mdb_cursor_next(MDB_cursor *mc, MDB_val *key, MDB_val *data, MDB_cursor_op op)
}
}
DPRINTF
(
"cursor_next: top page is %
z
u in cursor %p"
,
mp
->
mp_pgno
,
(
void
*
)
mc
);
DPRINTF
(
"cursor_next: top page is %
"
Z
"
u in cursor %p"
,
mp
->
mp_pgno
,
(
void
*
)
mc
);
if
(
mc
->
mc_ki
[
mc
->
mc_top
]
+
1u
>=
NUMKEYS
(
mp
))
{
DPUTS
(
"=====> move to next sibling page"
);
...
...
@@ -4889,11 +4892,11 @@ mdb_cursor_next(MDB_cursor *mc, MDB_val *key, MDB_val *data, MDB_cursor_op op)
return
rc
;
}
mp
=
mc
->
mc_pg
[
mc
->
mc_top
];
DPRINTF
(
"next page is %
z
u, key index %u"
,
mp
->
mp_pgno
,
mc
->
mc_ki
[
mc
->
mc_top
]);
DPRINTF
(
"next page is %
"
Z
"
u, key index %u"
,
mp
->
mp_pgno
,
mc
->
mc_ki
[
mc
->
mc_top
]);
}
else
mc
->
mc_ki
[
mc
->
mc_top
]
++
;
DPRINTF
(
"==> cursor points to page %
z
u with %u keys, key index %u"
,
DPRINTF
(
"==> cursor points to page %
"
Z
"
u with %u keys, key index %u"
,
mp
->
mp_pgno
,
NUMKEYS
(
mp
),
mc
->
mc_ki
[
mc
->
mc_top
]);
if
(
IS_LEAF2
(
mp
))
{
...
...
@@ -4950,7 +4953,7 @@ mdb_cursor_prev(MDB_cursor *mc, MDB_val *key, MDB_val *data, MDB_cursor_op op)
}
}
DPRINTF
(
"cursor_prev: top page is %
z
u in cursor %p"
,
mp
->
mp_pgno
,
(
void
*
)
mc
);
DPRINTF
(
"cursor_prev: top page is %
"
Z
"
u in cursor %p"
,
mp
->
mp_pgno
,
(
void
*
)
mc
);
if
(
mc
->
mc_ki
[
mc
->
mc_top
]
==
0
)
{
DPUTS
(
"=====> move to prev sibling page"
);
...
...
@@ -4959,13 +4962,13 @@ mdb_cursor_prev(MDB_cursor *mc, MDB_val *key, MDB_val *data, MDB_cursor_op op)
}
mp
=
mc
->
mc_pg
[
mc
->
mc_top
];
mc
->
mc_ki
[
mc
->
mc_top
]
=
NUMKEYS
(
mp
)
-
1
;
DPRINTF
(
"prev page is %
z
u, key index %u"
,
mp
->
mp_pgno
,
mc
->
mc_ki
[
mc
->
mc_top
]);
DPRINTF
(
"prev page is %
"
Z
"
u, key index %u"
,
mp
->
mp_pgno
,
mc
->
mc_ki
[
mc
->
mc_top
]);
}
else
mc
->
mc_ki
[
mc
->
mc_top
]
--
;
mc
->
mc_flags
&=
~
C_EOF
;
DPRINTF
(
"==> cursor points to page %
z
u with %u keys, key index %u"
,
DPRINTF
(
"==> cursor points to page %
"
Z
"
u with %u keys, key index %u"
,
mp
->
mp_pgno
,
NUMKEYS
(
mp
),
mc
->
mc_ki
[
mc
->
mc_top
]);
if
(
IS_LEAF2
(
mp
))
{
...
...
@@ -5491,7 +5494,7 @@ mdb_cursor_put(MDB_cursor *mc, MDB_val *key, MDB_val *data,
return
EINVAL
;
#endif
DPRINTF
(
"==> put db %u key [%s], size %
z
u, data size %
z
u"
,
DPRINTF
(
"==> put db %u key [%s], size %
"
Z
"
u, data size %
"
Z
"
u"
,
mc
->
mc_dbi
,
DKEY
(
key
),
key
?
key
->
mv_size
:
0
,
data
->
mv_size
);
dkey
.
mv_size
=
0
;
...
...
@@ -5988,7 +5991,7 @@ mdb_page_new(MDB_cursor *mc, uint32_t flags, int num, MDB_page **mp)
if
((
rc
=
mdb_page_alloc
(
mc
,
num
,
&
np
)))
return
rc
;
DPRINTF
(
"allocated new mpage %
z
u, page size %u"
,
DPRINTF
(
"allocated new mpage %
"
Z
"
u, page size %u"
,
np
->
mp_pgno
,
mc
->
mc_txn
->
mt_env
->
me_psize
);
np
->
mp_flags
=
flags
|
P_DIRTY
;
np
->
mp_lower
=
PAGEHDRSZ
;
...
...
@@ -6087,7 +6090,7 @@ mdb_node_add(MDB_cursor *mc, indx_t indx,
assert
(
mp
->
mp_upper
>=
mp
->
mp_lower
);
DPRINTF
(
"add to %s %spage %
z
u index %i, data size %
z
u key size %
z
u [%s]"
,
DPRINTF
(
"add to %s %spage %
"
Z
"
u index %i, data size %
"
Z
"
u key size %
"
Z
"
u [%s]"
,
IS_LEAF
(
mp
)
?
"leaf"
:
"branch"
,
IS_SUBP
(
mp
)
?
"sub-"
:
""
,
mp
->
mp_pgno
,
indx
,
data
?
data
->
mv_size
:
0
,
...
...
@@ -6121,12 +6124,12 @@ mdb_node_add(MDB_cursor *mc, indx_t indx,
int
ovpages
=
OVPAGES
(
data
->
mv_size
,
mc
->
mc_txn
->
mt_env
->
me_psize
);
int
rc
;
/* Put data on overflow page. */
DPRINTF
(
"data size is %
z
u, node would be %
z
u, put data on overflow page"
,
DPRINTF
(
"data size is %
"
Z
"
u, node would be %
"
Z
"
u, put data on overflow page"
,
data
->
mv_size
,
node_size
+
data
->
mv_size
);
node_size
+=
sizeof
(
pgno_t
);
if
((
rc
=
mdb_page_new
(
mc
,
P_OVERFLOW
,
ovpages
,
&
ofp
)))
return
rc
;
DPRINTF
(
"allocated overflow page %
z
u"
,
ofp
->
mp_pgno
);
DPRINTF
(
"allocated overflow page %
"
Z
"
u"
,
ofp
->
mp_pgno
);
flags
|=
F_BIGDATA
;
}
else
{
node_size
+=
data
->
mv_size
;
...
...
@@ -6135,11 +6138,11 @@ mdb_node_add(MDB_cursor *mc, indx_t indx,
node_size
+=
node_size
&
1
;
if
(
node_size
+
sizeof
(
indx_t
)
>
SIZELEFT
(
mp
))
{
DPRINTF
(
"not enough room in page %
z
u, got %u ptrs"
,
DPRINTF
(
"not enough room in page %
"
Z
"
u, got %u ptrs"
,
mp
->
mp_pgno
,
NUMKEYS
(
mp
));
DPRINTF
(
"upper - lower = %u - %u = %u"
,
mp
->
mp_upper
,
mp
->
mp_lower
,
mp
->
mp_upper
-
mp
->
mp_lower
);
DPRINTF
(
"node size = %
z
u"
,
node_size
);
DPRINTF
(
"node size = %
"
Z
"
u"
,
node_size
);
return
MDB_PAGE_FULL
;
}
...
...
@@ -6208,7 +6211,7 @@ mdb_node_del(MDB_page *mp, indx_t indx, int ksize)
{
pgno_t
pgno
;
COPY_PGNO
(
pgno
,
mp
->
mp_pgno
);
DPRINTF
(
"delete node %u on %s page %
z
u"
,
indx
,
DPRINTF
(
"delete node %u on %s page %
"
Z
"
u"
,
indx
,
IS_LEAF
(
mp
)
?
"leaf"
:
"branch"
,
pgno
);
}
#endif
...
...
@@ -6370,7 +6373,7 @@ mdb_xcursor_init1(MDB_cursor *mc, MDB_node *node)
mx
->
mx_db
.
md_flags
|=
MDB_INTEGERKEY
;
}
}
DPRINTF
(
"Sub-db %u for db %u root page %
z
u"
,
mx
->
mx_cursor
.
mc_dbi
,
mc
->
mc_dbi
,
DPRINTF
(
"Sub-db %u for db %u root page %
"
Z
"
u"
,
mx
->
mx_cursor
.
mc_dbi
,
mc
->
mc_dbi
,
mx
->
mx_db
.
md_root
);
mx
->
mx_dbflag
=
DB_VALID
|
(
F_ISSET
(
mc
->
mc_pg
[
mc
->
mc_top
]
->
mp_flags
,
P_DIRTY
)
?
DB_DIRTY
:
0
);
...
...
@@ -6537,7 +6540,7 @@ mdb_update_key(MDB_cursor *mc, MDB_val *key)
char
kbuf2
[(
MDB_MAXKEYSIZE
*
2
+
1
)];
k2
.
mv_data
=
NODEKEY
(
node
);
k2
.
mv_size
=
node
->
mn_ksize
;
DPRINTF
(
"update key %u (ofs %u) [%s] to [%s] on page %
z
u"
,
DPRINTF
(
"update key %u (ofs %u) [%s] to [%s] on page %
"
Z
"
u"
,
indx
,
ptr
,
mdb_dkey
(
&
k2
,
kbuf2
),
DKEY
(
key
),
...
...
@@ -6665,7 +6668,7 @@ mdb_node_move(MDB_cursor *csrc, MDB_cursor *cdst)
return
rc
;
}
DPRINTF
(
"moving %s node %u [%s] on page %
z
u to node %u on page %
z
u"
,
DPRINTF
(
"moving %s node %u [%s] on page %
"
Z
"
u to node %u on page %
"
Z
"
u"
,
IS_LEAF
(
csrc
->
mc_pg
[
csrc
->
mc_top
])
?
"leaf"
:
"branch"
,
csrc
->
mc_ki
[
csrc
->
mc_top
],
DKEY
(
&
key
),
...
...
@@ -6716,7 +6719,7 @@ mdb_node_move(MDB_cursor *csrc, MDB_cursor *cdst)
key
.
mv_size
=
NODEKSZ
(
srcnode
);
key
.
mv_data
=
NODEKEY
(
srcnode
);
}
DPRINTF
(
"update separator for source page %
z
u to [%s]"
,
DPRINTF
(
"update separator for source page %
"
Z
"
u to [%s]"
,
csrc
->
mc_pg
[
csrc
->
mc_top
]
->
mp_pgno
,
DKEY
(
&
key
));
mdb_cursor_copy
(
csrc
,
&
mn
);
mn
.
mc_snum
--
;
...
...
@@ -6744,7 +6747,7 @@ mdb_node_move(MDB_cursor *csrc, MDB_cursor *cdst)
key
.
mv_size
=
NODEKSZ
(
srcnode
);
key
.
mv_data
=
NODEKEY
(
srcnode
);
}
DPRINTF
(
"update separator for destination page %
z
u to [%s]"
,
DPRINTF
(
"update separator for destination page %
"
Z
"
u to [%s]"
,
cdst
->
mc_pg
[
cdst
->
mc_top
]
->
mp_pgno
,
DKEY
(
&
key
));
mdb_cursor_copy
(
cdst
,
&
mn
);
mn
.
mc_snum
--
;
...
...
@@ -6782,7 +6785,7 @@ mdb_page_merge(MDB_cursor *csrc, MDB_cursor *cdst)
MDB_val
key
,
data
;
unsigned
nkeys
;
DPRINTF
(
"merging page %
z
u into %
z
u"
,
csrc
->
mc_pg
[
csrc
->
mc_top
]
->
mp_pgno
,
DPRINTF
(
"merging page %
"
Z
"
u into %
"
Z
"
u"
,
csrc
->
mc_pg
[
csrc
->
mc_top
]
->
mp_pgno
,
cdst
->
mc_pg
[
cdst
->
mc_top
]
->
mp_pgno
);
assert
(
csrc
->
mc_snum
>
1
);
/* can't merge root page */
...
...
@@ -6835,7 +6838,7 @@ mdb_page_merge(MDB_cursor *csrc, MDB_cursor *cdst)
}
}
DPRINTF
(
"dst page %
z
u now has %u keys (%.1f%% filled)"
,
DPRINTF
(
"dst page %
"
Z
"
u now has %u keys (%.1f%% filled)"
,
cdst
->
mc_pg
[
cdst
->
mc_top
]
->
mp_pgno
,
NUMKEYS
(
cdst
->
mc_pg
[
cdst
->
mc_top
]),
(
float
)
PAGEFILL
(
cdst
->
mc_txn
->
mt_env
,
cdst
->
mc_pg
[
cdst
->
mc_top
])
/
10
);
/* Unlink the src page from parent and add to free list.
...
...
@@ -6926,7 +6929,7 @@ mdb_rebalance(MDB_cursor *mc)
{
pgno_t
pgno
;
COPY_PGNO
(
pgno
,
mc
->
mc_pg
[
mc
->
mc_top
]
->
mp_pgno
);
DPRINTF
(
"rebalancing %s page %
z
u (has %u keys, %.1f%% full)"
,
DPRINTF
(
"rebalancing %s page %
"
Z
"
u (has %u keys, %.1f%% full)"
,
IS_LEAF
(
mc
->
mc_pg
[
mc
->
mc_top
])
?
"leaf"
:
"branch"
,
pgno
,
NUMKEYS
(
mc
->
mc_pg
[
mc
->
mc_top
]),
(
float
)
PAGEFILL
(
mc
->
mc_txn
->
mt_env
,
mc
->
mc_pg
[
mc
->
mc_top
])
/
10
);
}
...
...
@@ -6937,7 +6940,7 @@ mdb_rebalance(MDB_cursor *mc)
#if MDB_DEBUG
pgno_t
pgno
;
COPY_PGNO
(
pgno
,
mc
->
mc_pg
[
mc
->
mc_top
]
->
mp_pgno
);
DPRINTF
(
"no need to rebalance page %
z
u, above fill threshold"
,
DPRINTF
(
"no need to rebalance page %
"
Z
"
u, above fill threshold"
,
pgno
);
#endif
return
MDB_SUCCESS
;
...
...
@@ -7058,7 +7061,7 @@ mdb_rebalance(MDB_cursor *mc)
mc
->
mc_ki
[
mc
->
mc_top
]
=
0
;
}
DPRINTF
(
"found neighbor page %
z
u (%u keys, %.1f%% full)"
,
DPRINTF
(
"found neighbor page %
"
Z
"
u (%u keys, %.1f%% full)"
,
mn
.
mc_pg
[
mn
.
mc_top
]
->
mp_pgno
,
NUMKEYS
(
mn
.
mc_pg
[
mn
.
mc_top
]),
(
float
)
PAGEFILL
(
mc
->
mc_txn
->
mt_env
,
mn
.
mc_pg
[
mn
.
mc_top
])
/
10
);
/* If the neighbor page is above threshold and has enough keys,
...
...
@@ -7219,14 +7222,14 @@ mdb_page_split(MDB_cursor *mc, MDB_val *newkey, MDB_val *newdata, pgno_t newpgno
mp
=
mc
->
mc_pg
[
mc
->
mc_top
];
newindx
=
mc
->
mc_ki
[
mc
->
mc_top
];
DPRINTF
(
"-----> splitting %s page %
z
u and adding [%s] at index %i"
,
DPRINTF
(
"-----> splitting %s page %
"
Z
"
u and adding [%s] at index %i"
,
IS_LEAF
(
mp
)
?
"leaf"
:
"branch"
,
mp
->
mp_pgno
,
DKEY
(
newkey
),
mc
->
mc_ki
[
mc
->
mc_top
]);
/* Create a right sibling. */
if
((
rc
=
mdb_page_new
(
mc
,
mp
->
mp_flags
,
1
,
&
rp
)))
return
rc
;
DPRINTF
(
"new right sibling: page %
z
u"
,
rp
->
mp_pgno
);
DPRINTF
(
"new right sibling: page %
"
Z
"
u"
,
rp
->
mp_pgno
);
if
(
mc
->
mc_snum
<
2
)
{
if
((
rc
=
mdb_page_new
(
mc
,
P_BRANCH
,
1
,
&
pp
)))
...
...
@@ -7237,7 +7240,7 @@ mdb_page_split(MDB_cursor *mc, MDB_val *newkey, MDB_val *newdata, pgno_t newpgno
mc
->
mc_pg
[
0
]
=
pp
;
mc
->
mc_ki
[
0
]
=
0
;
mc
->
mc_db
->
md_root
=
pp
->
mp_pgno
;
DPRINTF
(
"root split! new root = %
z
u"
,
pp
->
mp_pgno
);
DPRINTF
(
"root split! new root = %
"
Z
"
u"
,
pp
->
mp_pgno
);
mc
->
mc_db
->
md_depth
++
;
new_root
=
1
;
...
...
@@ -7255,7 +7258,7 @@ mdb_page_split(MDB_cursor *mc, MDB_val *newkey, MDB_val *newdata, pgno_t newpgno
ptop
=
0
;
}
else
{
ptop
=
mc
->
mc_top
-
1
;
DPRINTF
(
"parent branch page is %
z
u"
,
mc
->
mc_pg
[
ptop
]
->
mp_pgno
);
DPRINTF
(
"parent branch page is %
"
Z
"
u"
,
mc
->
mc_pg
[
ptop
]
->
mp_pgno
);
}
mc
->
mc_flags
|=
C_SPLITTING
;
...
...
@@ -8059,9 +8062,9 @@ int mdb_reader_list(MDB_env *env, MDB_msg_func *func, void *ctx)
int
rc
;
tid
=
mr
[
i
].
mr_tid
;
if
(
mr
[
i
].
mr_txnid
==
(
txnid_t
)
-
1
)
{
sprintf
(
buf
,
"%10d %
z
x -
\n
"
,
mr
[
i
].
mr_pid
,
tid
);
sprintf
(
buf
,
"%10d %
"
Z
"
x -
\n
"
,
mr
[
i
].
mr_pid
,
tid
);
}
else
{
sprintf
(
buf
,
"%10d %
zx %z
u
\n
"
,
mr
[
i
].
mr_pid
,
tid
,
mr
[
i
].
mr_txnid
);
sprintf
(
buf
,
"%10d %
"
Z
"x %"
Z
"
u
\n
"
,
mr
[
i
].
mr_pid
,
tid
,
mr
[
i
].
mr_txnid
);
}
if
(
first
)
{
first
=
0
;
...
...
libraries/liblmdb/mdb_stat.c
View file @
636c2d2a
...
...
@@ -17,16 +17,22 @@
#include <unistd.h>
#include "lmdb.h"
#ifdef _WIN32
#define Z "I"
#else
#define Z "z"
#endif
static
void
prstat
(
MDB_stat
*
ms
)
{
#if 0
printf(" Page size: %u\n", ms->ms_psize);
#endif
printf
(
" Tree depth: %u
\n
"
,
ms
->
ms_depth
);
printf
(
" Branch pages: %
z
u
\n
"
,
ms
->
ms_branch_pages
);
printf
(
" Leaf pages: %
z
u
\n
"
,
ms
->
ms_leaf_pages
);
printf
(
" Overflow pages: %
z
u
\n
"
,
ms
->
ms_overflow_pages
);
printf
(
" Entries: %
z
u
\n
"
,
ms
->
ms_entries
);
printf
(
" Branch pages: %
"
Z
"
u
\n
"
,
ms
->
ms_branch_pages
);
printf
(
" Leaf pages: %
"
Z
"
u
\n
"
,
ms
->
ms_leaf_pages
);
printf
(
" Overflow pages: %
"
Z
"
u
\n
"
,
ms
->
ms_overflow_pages
);
printf
(
" Entries: %
"
Z
"
u
\n
"
,
ms
->
ms_entries
);
}
static
void
usage
(
char
*
prog
)
...
...
@@ -110,11 +116,11 @@ int main(int argc, char *argv[])
rc
=
mdb_env_info
(
env
,
&
mei
);
printf
(
"Environment Info
\n
"
);
printf
(
" Map address: %p
\n
"
,
mei
.
me_mapaddr
);
printf
(
" Map size: %
z
u
\n
"
,
mei
.
me_mapsize
);
printf
(
" Map size: %
"
Z
"
u
\n
"
,
mei
.
me_mapsize
);
printf
(
" Page size: %u
\n
"
,
mst
.
ms_psize
);
printf
(
" Max pages: %
z
u
\n
"
,
mei
.
me_mapsize
/
mst
.
ms_psize
);
printf
(
" Number of pages used: %
z
u
\n
"
,
mei
.
me_last_pgno
+
1
);
printf
(
" Last transaction ID: %
z
u
\n
"
,
mei
.
me_last_txnid
);
printf
(
" Max pages: %
"
Z
"
u
\n
"
,
mei
.
me_mapsize
/
mst
.
ms_psize
);
printf
(
" Number of pages used: %
"
Z
"
u
\n
"
,
mei
.
me_last_pgno
+
1
);
printf
(
" Last transaction ID: %
"
Z
"
u
\n
"
,
mei
.
me_last_txnid
);
printf
(
" Max readers: %u
\n
"
,
mei
.
me_maxreaders
);
printf
(
" Number of readers used: %u
\n
"
,
mei
.
me_numreaders
);
}
...
...
@@ -172,20 +178,20 @@ int main(int argc, char *argv[])
pg
+=
span
;
for
(;
i
>=
span
&&
iptr
[
i
-
span
]
==
pg
;
span
++
,
pg
++
)
;
}
printf
(
" Transaction %
z
u, %
z
d pages, maxspan %
z
d%s
\n
"
,
printf
(
" Transaction %
"
Z
"
u, %
"
Z
"
d pages, maxspan %
"
Z
"
d%s
\n
"
,
*
(
size_t
*
)
key
.
mv_data
,
j
,
span
,
bad
);
if
(
freinfo
>
2
)
{
for
(
--
j
;
j
>=
0
;
)
{
pg
=
iptr
[
j
];
for
(
span
=
1
;
--
j
>=
0
&&
iptr
[
j
]
==
pg
+
span
;
span
++
)
;
printf
(
span
>
1
?
" %9
zu[%z
d]
\n
"
:
" %9
z
u
\n
"
,
printf
(
span
>
1
?
" %9
"
Z
"u[%"
Z
"
d]
\n
"
:
" %9
"
Z
"
u
\n
"
,
pg
,
span
);
}
}
}
}
mdb_cursor_close
(
cursor
);
printf
(
" Free pages: %
z
u
\n
"
,
pages
);
printf
(
" Free pages: %
"
Z
"
u
\n
"
,
pages
);
}
rc
=
mdb_open
(
txn
,
subname
,
0
,
&
dbi
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment