Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
HAMANO Tsukasa
OpenLDAP
Commits
f89d0cc4
Commit
f89d0cc4
authored
Aug 03, 2011
by
Howard Chu
Browse files
More subDBs, compiles now
parent
cb451917
Changes
4
Expand all
Hide whitespace changes
Inline
Side-by-side
libraries/libmdb/mdb.c
View file @
f89d0cc4
This diff is collapsed.
Click to expand it.
libraries/libmdb/mdb.h
View file @
f89d0cc4
...
...
@@ -71,7 +71,7 @@ void mdb_txn_abort(MDB_txn *txn);
int
mdb_open
(
MDB_txn
*
txn
,
const
char
*
name
,
unsigned
int
flags
,
MDB_dbi
*
dbi
);
int
mdb_stat
(
MDB_txn
*
txn
,
MDB_dbi
dbi
,
MDB_stat
*
stat
);
void
mdb_close
(
MDB_
txn
*
txn
,
MDB_dbi
dbi
);
void
mdb_close
(
MDB_
env
*
env
,
MDB_dbi
dbi
);
int
mdb_get
(
MDB_txn
*
txn
,
MDB_dbi
dbi
,
MDB_val
*
key
,
MDB_val
*
data
);
int
mdb_put
(
MDB_txn
*
txn
,
MDB_dbi
dbi
,
MDB_val
*
key
,
MDB_val
*
data
,
...
...
libraries/libmdb/mdb_stat.c
View file @
f89d0cc4
...
...
@@ -7,7 +7,8 @@ int main(int argc,char * argv[])
{
int
rc
;
MDB_env
*
env
;
MDB_db
*
db
;
MDB_txn
*
txn
;
MDB_dbi
dbi
;
MDB_stat
mst
;
char
*
envname
=
argv
[
1
];
char
*
subname
=
NULL
;
...
...
@@ -21,20 +22,26 @@ int main(int argc,char * argv[])
printf
(
"mdbenv_open failed, error %d
\n
"
,
rc
);
exit
(
1
);
}
rc
=
mdb_open
(
env
,
NULL
,
NULL
,
0
,
&
db
);
rc
=
mdb_txn_begin
(
env
,
1
,
&
txn
);
if
(
rc
)
{
printf
(
"mdb_txn_begin failed, error %d
\n
"
,
rc
);
exit
(
1
);
}
rc
=
mdb_open
(
txn
,
subname
,
0
,
&
dbi
);
if
(
rc
)
{
printf
(
"mdb_open failed, error %d
\n
"
,
rc
);
exit
(
1
);
}
rc
=
mdb_stat
(
db
,
&
mst
);
rc
=
mdb_stat
(
txn
,
db
i
,
&
mst
);
printf
(
"Page size: %u
\n
"
,
mst
.
ms_psize
);
printf
(
"Tree depth: %u
\n
"
,
mst
.
ms_depth
);
printf
(
"Branch pages: %lu
\n
"
,
mst
.
ms_branch_pages
);
printf
(
"Leaf pages: %lu
\n
"
,
mst
.
ms_leaf_pages
);
printf
(
"Overflow pages: %lu
\n
"
,
mst
.
ms_overflow_pages
);
printf
(
"Entries: %lu
\n
"
,
mst
.
ms_entries
);
mdb_close
(
db
);
mdb_txn_abort
(
txn
);
mdb_close
(
env
,
dbi
);
mdbenv_close
(
env
);
return
0
;
...
...
libraries/libmdb/mtest.c
View file @
f89d0cc4
...
...
@@ -8,7 +8,7 @@ int main(int argc,char * argv[])
{
int
i
=
0
,
j
=
0
,
rc
;
MDB_env
*
env
;
MDB_db
*
db
;
MDB_db
i
db
i
;
MDB_val
key
,
data
;
MDB_txn
*
txn
;
MDB_stat
mst
;
...
...
@@ -30,7 +30,7 @@ int main(int argc,char * argv[])
rc
=
mdbenv_set_mapsize
(
env
,
10485760
);
rc
=
mdbenv_open
(
env
,
"./testdb"
,
MDB_FIXEDMAP
|
MDB_NOSYNC
,
0664
);
rc
=
mdb_txn_begin
(
env
,
0
,
&
txn
);
rc
=
mdb_open
(
env
,
txn
,
NULL
,
0
,
&
db
);
rc
=
mdb_open
(
txn
,
NULL
,
0
,
&
db
i
);
key
.
mv_size
=
sizeof
(
int
);
key
.
mv_data
=
sval
;
...
...
@@ -40,20 +40,22 @@ int main(int argc,char * argv[])
printf
(
"Adding %d values
\n
"
,
count
);
for
(
i
=
0
;
i
<
count
;
i
++
)
{
sprintf
(
sval
,
"%03x %d foo bar"
,
values
[
i
],
values
[
i
]);
rc
=
mdb_put
(
db
,
txn
,
&
key
,
&
data
,
MDB_NOOVERWRITE
);
rc
=
mdb_put
(
txn
,
dbi
,
&
key
,
&
data
,
MDB_NOOVERWRITE
);
if
(
rc
)
j
++
;
}
if
(
j
)
printf
(
"%d duplicates skipped
\n
"
,
j
);
rc
=
mdb_txn_commit
(
txn
);
rc
=
mdbenv_stat
(
env
,
&
mst
);
rc
=
mdb_cursor_open
(
db
,
NULL
,
&
cursor
);
rc
=
mdb_txn_begin
(
env
,
1
,
&
txn
);
rc
=
mdb_cursor_open
(
txn
,
dbi
,
&
cursor
);
while
((
rc
=
mdb_cursor_get
(
cursor
,
&
key
,
&
data
,
MDB_NEXT
))
==
0
)
{
printf
(
"key: %p %.*s, data: %p %.*s
\n
"
,
key
.
mv_data
,
(
int
)
key
.
mv_size
,
(
char
*
)
key
.
mv_data
,
data
.
mv_data
,
(
int
)
data
.
mv_size
,
(
char
*
)
data
.
mv_data
);
}
mdb_cursor_close
(
cursor
);
mdb_txn_abort
(
txn
);
j
=
0
;
key
.
mv_data
=
sval
;
...
...
@@ -62,7 +64,7 @@ int main(int argc,char * argv[])
txn
=
NULL
;
rc
=
mdb_txn_begin
(
env
,
0
,
&
txn
);
sprintf
(
sval
,
"%03x "
,
values
[
i
]);
rc
=
mdb_del
(
db
,
txn
,
&
key
,
NULL
);
rc
=
mdb_del
(
txn
,
dbi
,
&
key
,
NULL
);
if
(
rc
)
{
j
--
;
mdb_txn_abort
(
txn
);
...
...
@@ -74,7 +76,8 @@ int main(int argc,char * argv[])
printf
(
"Deleted %d values
\n
"
,
j
);
rc
=
mdbenv_stat
(
env
,
&
mst
);
rc
=
mdb_cursor_open
(
db
,
NULL
,
&
cursor
);
rc
=
mdb_txn_begin
(
env
,
1
,
&
txn
);
rc
=
mdb_cursor_open
(
txn
,
dbi
,
&
cursor
);
while
((
rc
=
mdb_cursor_get
(
cursor
,
&
key
,
&
data
,
MDB_NEXT
))
==
0
)
{
printf
(
"key: %.*s, data: %.*s
\n
"
,
(
int
)
key
.
mv_size
,
(
char
*
)
key
.
mv_data
,
...
...
@@ -123,8 +126,9 @@ int main(int argc,char * argv[])
}
#endif
mdb_cursor_close
(
cursor
);
mdb_txn_abort
(
txn
);
mdb_close
(
db
);
mdb_close
(
env
,
db
i
);
mdbenv_close
(
env
);
return
0
;
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new 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