Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
David Barchiesi
OpenLDAP
Commits
cf81bfb2
Commit
cf81bfb2
authored
Jan 11, 2021
by
Quanah Gibson-Mount
Browse files
Merge remote-tracking branch 'origin/mdb.RE/0.9'
parents
dfe1f649
b4e1e00e
Changes
23
Hide whitespace changes
Inline
Side-by-side
libraries/liblmdb/CHANGES
View file @
cf81bfb2
LMDB 0.9 Change Log
LMDB 0.9.28 Engineering
LMDB 0.9.27 Release (2020/10/26)
ITS#9376 fix repeated DUPSORT cursor deletes
LMDB 0.9.26 Release (2020/08/11)
ITS#9278 fix robust mutex cleanup for FreeBSD
...
...
libraries/liblmdb/COPYRIGHT
View file @
cf81bfb2
Copyright 2011-202
0
Howard Chu, Symas Corp.
Copyright 2011-202
1
Howard Chu, Symas Corp.
All rights reserved.
Redistribution and use in source and binary forms, with or without
...
...
libraries/liblmdb/intro.doc
View file @
cf81bfb2
/*
* Copyright 2015-202
0
Howard Chu, Symas Corp.
* Copyright 2015-202
1
Howard Chu, Symas Corp.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
...
...
libraries/liblmdb/lmdb.h
View file @
cf81bfb2
...
...
@@ -135,7 +135,7 @@
*
* @author Howard Chu, Symas Corporation.
*
* @copyright Copyright 2011-202
0
Howard Chu, Symas Corp. All rights reserved.
* @copyright Copyright 2011-202
1
Howard Chu, Symas Corp. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted only as authorized by the OpenLDAP
...
...
@@ -200,7 +200,7 @@ typedef int mdb_filehandle_t;
/** Library minor version */
#define MDB_VERSION_MINOR 9
/** Library patch version */
#define MDB_VERSION_PATCH 2
6
#define MDB_VERSION_PATCH 2
7
/** Combine args a,b,c into a single integer for easy version comparisons */
#define MDB_VERINT(a,b,c) (((a) << 24) | ((b) << 16) | (c))
...
...
@@ -210,7 +210,7 @@ typedef int mdb_filehandle_t;
MDB_VERINT(MDB_VERSION_MAJOR,MDB_VERSION_MINOR,MDB_VERSION_PATCH)
/** The release date of this library version */
#define MDB_VERSION_DATE "
August 11
, 2020"
#define MDB_VERSION_DATE "
October 26
, 2020"
/** A stringifier for the version info */
#define MDB_VERSTR(a,b,c,d) "LMDB " #a "." #b "." #c ": (" d ")"
...
...
libraries/liblmdb/mdb.c
View file @
cf81bfb2
...
...
@@ -5,7 +5,7 @@
* BerkeleyDB API, but much simplified.
*/
/*
* Copyright 2011-202
0
Howard Chu, Symas Corp.
* Copyright 2011-202
1
Howard Chu, Symas Corp.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
...
...
@@ -5942,16 +5942,12 @@ skip:
if
(
F_ISSET
(
leaf
->
mn_flags
,
F_DUPDATA
))
{
mdb_xcursor_init1
(
mc
,
leaf
);
}
if
(
data
)
{
rc
=
mdb_cursor_first
(
&
mc
->
mc_xcursor
->
mx_cursor
,
data
,
NULL
);
if
(
rc
!=
MDB_SUCCESS
)
return
rc
;
}
else
if
(
data
)
{
if
((
rc
=
mdb_node_read
(
mc
,
leaf
,
data
))
!=
MDB_SUCCESS
)
return
rc
;
if
(
F_ISSET
(
leaf
->
mn_flags
,
F_DUPDATA
))
{
rc
=
mdb_cursor_first
(
&
mc
->
mc_xcursor
->
mx_cursor
,
data
,
NULL
);
if
(
rc
!=
MDB_SUCCESS
)
return
rc
;
}
}
MDB_GET_KEY
(
leaf
,
key
);
...
...
@@ -5975,7 +5971,8 @@ mdb_cursor_prev(MDB_cursor *mc, MDB_val *key, MDB_val *data, MDB_cursor_op op)
mp
=
mc
->
mc_pg
[
mc
->
mc_top
];
if
(
mc
->
mc_db
->
md_flags
&
MDB_DUPSORT
)
{
if
((
mc
->
mc_db
->
md_flags
&
MDB_DUPSORT
)
&&
mc
->
mc_ki
[
mc
->
mc_top
]
<
NUMKEYS
(
mp
))
{
leaf
=
NODEPTR
(
mp
,
mc
->
mc_ki
[
mc
->
mc_top
]);
if
(
F_ISSET
(
leaf
->
mn_flags
,
F_DUPDATA
))
{
if
(
op
==
MDB_PREV
||
op
==
MDB_PREV_DUP
)
{
...
...
@@ -6014,27 +6011,25 @@ mdb_cursor_prev(MDB_cursor *mc, MDB_val *key, MDB_val *data, MDB_cursor_op op)
DPRINTF
((
"==> cursor points to page %"
Z
"u with %u keys, key index %u"
,
mdb_dbg_pgno
(
mp
),
NUMKEYS
(
mp
),
mc
->
mc_ki
[
mc
->
mc_top
]));
if
(
!
IS_LEAF
(
mp
))
return
MDB_CORRUPTED
;
if
(
IS_LEAF2
(
mp
))
{
key
->
mv_size
=
mc
->
mc_db
->
md_pad
;
key
->
mv_data
=
LEAF2KEY
(
mp
,
mc
->
mc_ki
[
mc
->
mc_top
],
key
->
mv_size
);
return
MDB_SUCCESS
;
}
mdb_cassert
(
mc
,
IS_LEAF
(
mp
));
leaf
=
NODEPTR
(
mp
,
mc
->
mc_ki
[
mc
->
mc_top
]);
if
(
F_ISSET
(
leaf
->
mn_flags
,
F_DUPDATA
))
{
mdb_xcursor_init1
(
mc
,
leaf
);
}
if
(
data
)
{
rc
=
mdb_cursor_last
(
&
mc
->
mc_xcursor
->
mx_cursor
,
data
,
NULL
);
if
(
rc
!=
MDB_SUCCESS
)
return
rc
;
}
else
if
(
data
)
{
if
((
rc
=
mdb_node_read
(
mc
,
leaf
,
data
))
!=
MDB_SUCCESS
)
return
rc
;
if
(
F_ISSET
(
leaf
->
mn_flags
,
F_DUPDATA
))
{
rc
=
mdb_cursor_last
(
&
mc
->
mc_xcursor
->
mx_cursor
,
data
,
NULL
);
if
(
rc
!=
MDB_SUCCESS
)
return
rc
;
}
}
MDB_GET_KEY
(
leaf
,
key
);
...
...
@@ -6190,24 +6185,22 @@ set1:
if
(
F_ISSET
(
leaf
->
mn_flags
,
F_DUPDATA
))
{
mdb_xcursor_init1
(
mc
,
leaf
);
}
if
(
data
)
{
if
(
F_ISSET
(
leaf
->
mn_flags
,
F_DUPDATA
))
{
if
(
op
==
MDB_SET
||
op
==
MDB_SET_KEY
||
op
==
MDB_SET_RANGE
)
{
rc
=
mdb_cursor_first
(
&
mc
->
mc_xcursor
->
mx_cursor
,
data
,
NULL
);
if
(
op
==
MDB_SET
||
op
==
MDB_SET_KEY
||
op
==
MDB_SET_RANGE
)
{
rc
=
mdb_cursor_first
(
&
mc
->
mc_xcursor
->
mx_cursor
,
data
,
NULL
);
}
else
{
int
ex2
,
*
ex2p
;
if
(
op
==
MDB_GET_BOTH
)
{
ex2p
=
&
ex2
;
ex2
=
0
;
}
else
{
int
ex2
,
*
ex2p
;
if
(
op
==
MDB_GET_BOTH
)
{
ex2p
=
&
ex2
;
ex2
=
0
;
}
else
{
ex2p
=
NULL
;
}
rc
=
mdb_cursor_set
(
&
mc
->
mc_xcursor
->
mx_cursor
,
data
,
NULL
,
MDB_SET_RANGE
,
ex2p
);
if
(
rc
!=
MDB_SUCCESS
)
return
rc
;
ex2p
=
NULL
;
}
}
else
if
(
op
==
MDB_GET_BOTH
||
op
==
MDB_GET_BOTH_RANGE
)
{
rc
=
mdb_cursor_set
(
&
mc
->
mc_xcursor
->
mx_cursor
,
data
,
NULL
,
MDB_SET_RANGE
,
ex2p
);
if
(
rc
!=
MDB_SUCCESS
)
return
rc
;
}
}
else
if
(
data
)
{
if
(
op
==
MDB_GET_BOTH
||
op
==
MDB_GET_BOTH_RANGE
)
{
MDB_val
olddata
;
MDB_cmp_func
*
dcmp
;
if
((
rc
=
mdb_node_read
(
mc
,
leaf
,
&
olddata
))
!=
MDB_SUCCESS
)
...
...
@@ -6265,22 +6258,23 @@ mdb_cursor_first(MDB_cursor *mc, MDB_val *key, MDB_val *data)
mc
->
mc_ki
[
mc
->
mc_top
]
=
0
;
if
(
IS_LEAF2
(
mc
->
mc_pg
[
mc
->
mc_top
]))
{
key
->
mv_size
=
mc
->
mc_db
->
md_pad
;
key
->
mv_data
=
LEAF2KEY
(
mc
->
mc_pg
[
mc
->
mc_top
],
0
,
key
->
mv_size
);
if
(
key
)
{
key
->
mv_size
=
mc
->
mc_db
->
md_pad
;
key
->
mv_data
=
LEAF2KEY
(
mc
->
mc_pg
[
mc
->
mc_top
],
0
,
key
->
mv_size
);
}
return
MDB_SUCCESS
;
}
if
(
data
)
{
if
(
F_ISSET
(
leaf
->
mn_flags
,
F_DUPDATA
))
{
mdb_xcursor_init1
(
mc
,
leaf
);
rc
=
mdb_cursor_first
(
&
mc
->
mc_xcursor
->
mx_cursor
,
data
,
NULL
);
if
(
rc
)
return
rc
;
}
else
{
if
((
rc
=
mdb_node_read
(
mc
,
leaf
,
data
))
!=
MDB_SUCCESS
)
return
rc
;
}
if
(
F_ISSET
(
leaf
->
mn_flags
,
F_DUPDATA
))
{
mdb_xcursor_init1
(
mc
,
leaf
);
rc
=
mdb_cursor_first
(
&
mc
->
mc_xcursor
->
mx_cursor
,
data
,
NULL
);
if
(
rc
)
return
rc
;
}
else
if
(
data
)
{
if
((
rc
=
mdb_node_read
(
mc
,
leaf
,
data
))
!=
MDB_SUCCESS
)
return
rc
;
}
MDB_GET_KEY
(
leaf
,
key
);
return
MDB_SUCCESS
;
}
...
...
@@ -6307,21 +6301,21 @@ mdb_cursor_last(MDB_cursor *mc, MDB_val *key, MDB_val *data)
leaf
=
NODEPTR
(
mc
->
mc_pg
[
mc
->
mc_top
],
mc
->
mc_ki
[
mc
->
mc_top
]);
if
(
IS_LEAF2
(
mc
->
mc_pg
[
mc
->
mc_top
]))
{
key
->
mv_size
=
mc
->
mc_db
->
md_pad
;
key
->
mv_data
=
LEAF2KEY
(
mc
->
mc_pg
[
mc
->
mc_top
],
mc
->
mc_ki
[
mc
->
mc_top
],
key
->
mv_size
);
if
(
key
)
{
key
->
mv_size
=
mc
->
mc_db
->
md_pad
;
key
->
mv_data
=
LEAF2KEY
(
mc
->
mc_pg
[
mc
->
mc_top
],
mc
->
mc_ki
[
mc
->
mc_top
],
key
->
mv_size
);
}
return
MDB_SUCCESS
;
}
if
(
data
)
{
if
(
F_ISSET
(
leaf
->
mn_flags
,
F_DUPDATA
))
{
mdb_xcursor_init1
(
mc
,
leaf
);
rc
=
mdb_cursor_last
(
&
mc
->
mc_xcursor
->
mx_cursor
,
data
,
NULL
);
if
(
rc
)
return
rc
;
}
else
{
if
((
rc
=
mdb_node_read
(
mc
,
leaf
,
data
))
!=
MDB_SUCCESS
)
return
rc
;
}
if
(
F_ISSET
(
leaf
->
mn_flags
,
F_DUPDATA
))
{
mdb_xcursor_init1
(
mc
,
leaf
);
rc
=
mdb_cursor_last
(
&
mc
->
mc_xcursor
->
mx_cursor
,
data
,
NULL
);
if
(
rc
)
return
rc
;
}
else
if
(
data
)
{
if
((
rc
=
mdb_node_read
(
mc
,
leaf
,
data
))
!=
MDB_SUCCESS
)
return
rc
;
}
MDB_GET_KEY
(
leaf
,
key
);
...
...
@@ -7102,6 +7096,8 @@ mdb_cursor_del(MDB_cursor *mc, unsigned int flags)
return
rc
;
mp
=
mc
->
mc_pg
[
mc
->
mc_top
];
if
(
!
IS_LEAF
(
mp
))
return
MDB_CORRUPTED
;
if
(
IS_LEAF2
(
mp
))
goto
del_key
;
leaf
=
NODEPTR
(
mp
,
mc
->
mc_ki
[
mc
->
mc_top
]);
...
...
@@ -8473,60 +8469,70 @@ mdb_cursor_del0(MDB_cursor *mc)
}
}
rc
=
mdb_rebalance
(
mc
);
if
(
rc
)
goto
fail
;
if
(
rc
==
MDB_SUCCESS
)
{
/* DB is totally empty now, just bail out.
* Other cursors adjustments were already done
* by mdb_rebalance and aren't needed here.
*/
if
(
!
mc
->
mc_snum
)
return
rc
;
/* DB is totally empty now, just bail out.
* Other cursors adjustments were already done
* by mdb_rebalance and aren't needed here.
*/
if
(
!
mc
->
mc_snum
)
{
mc
->
mc_flags
|=
C_EOF
;
return
rc
;
}
mp
=
mc
->
mc_pg
[
mc
->
mc_top
];
nkeys
=
NUMKEYS
(
mp
);
ki
=
mc
->
mc_ki
[
mc
->
mc_top
];
mp
=
mc
->
mc_pg
[
mc
->
mc_top
];
nkeys
=
NUMKEYS
(
mp
);
/* Adjust other cursors pointing to mp */
for
(
m2
=
mc
->
mc_txn
->
mt_cursors
[
dbi
];
!
rc
&&
m2
;
m2
=
m2
->
mc_next
)
{
m3
=
(
mc
->
mc_flags
&
C_SUB
)
?
&
m2
->
mc_xcursor
->
mx_cursor
:
m2
;
if
(
!
(
m2
->
mc_flags
&
m3
->
mc_flags
&
C_INITIALIZED
))
continue
;
if
(
m3
->
mc_snum
<
mc
->
mc_snum
)
continue
;
if
(
m3
->
mc_pg
[
mc
->
mc_top
]
==
mp
)
{
/* if m3 points past last node in page, find next sibling */
if
(
m3
->
mc_ki
[
mc
->
mc_top
]
>=
mc
->
mc_ki
[
mc
->
mc_top
])
{
if
(
m3
->
mc_ki
[
mc
->
mc_top
]
>=
nkeys
)
{
rc
=
mdb_cursor_sibling
(
m3
,
1
);
if
(
rc
==
MDB_NOTFOUND
)
{
m3
->
mc_flags
|=
C_EOF
;
rc
=
MDB_SUCCESS
;
continue
;
}
}
if
(
mc
->
mc_db
->
md_flags
&
MDB_DUPSORT
)
{
MDB_node
*
node
=
NODEPTR
(
m3
->
mc_pg
[
m3
->
mc_top
],
m3
->
mc_ki
[
m3
->
mc_top
]);
/* If this node has dupdata, it may need to be reinited
* because its data has moved.
* If the xcursor was not initd it must be reinited.
* Else if node points to a subDB, nothing is needed.
* Else (xcursor was initd, not a subDB) needs mc_pg[0] reset.
*/
if
(
node
->
mn_flags
&
F_DUPDATA
)
{
if
(
m3
->
mc_xcursor
->
mx_cursor
.
mc_flags
&
C_INITIALIZED
)
{
if
(
!
(
node
->
mn_flags
&
F_SUBDATA
))
m3
->
mc_xcursor
->
mx_cursor
.
mc_pg
[
0
]
=
NODEDATA
(
node
);
}
else
{
mdb_xcursor_init1
(
m3
,
node
);
m3
->
mc_xcursor
->
mx_cursor
.
mc_flags
|=
C_DEL
;
}
/* Adjust other cursors pointing to mp */
for
(
m2
=
mc
->
mc_txn
->
mt_cursors
[
dbi
];
!
rc
&&
m2
;
m2
=
m2
->
mc_next
)
{
m3
=
(
mc
->
mc_flags
&
C_SUB
)
?
&
m2
->
mc_xcursor
->
mx_cursor
:
m2
;
if
(
!
(
m2
->
mc_flags
&
m3
->
mc_flags
&
C_INITIALIZED
))
continue
;
if
(
m3
->
mc_snum
<
mc
->
mc_snum
)
continue
;
if
(
m3
->
mc_pg
[
mc
->
mc_top
]
==
mp
)
{
/* if m3 points past last node in page, find next sibling */
if
(
m3
->
mc_ki
[
mc
->
mc_top
]
>=
nkeys
)
{
rc
=
mdb_cursor_sibling
(
m3
,
1
);
if
(
rc
==
MDB_NOTFOUND
)
{
m3
->
mc_flags
|=
C_EOF
;
rc
=
MDB_SUCCESS
;
continue
;
}
if
(
rc
)
goto
fail
;
}
if
(
m3
->
mc_ki
[
mc
->
mc_top
]
>=
ki
||
/* moved to right sibling */
m3
->
mc_pg
[
mc
->
mc_top
]
!=
mp
)
{
if
(
m3
->
mc_xcursor
&&
!
(
m3
->
mc_flags
&
C_EOF
))
{
MDB_node
*
node
=
NODEPTR
(
m3
->
mc_pg
[
m3
->
mc_top
],
m3
->
mc_ki
[
m3
->
mc_top
]);
/* If this node has dupdata, it may need to be reinited
* because its data has moved.
* If the xcursor was not initd it must be reinited.
* Else if node points to a subDB, nothing is needed.
* Else (xcursor was initd, not a subDB) needs mc_pg[0] reset.
*/
if
(
node
->
mn_flags
&
F_DUPDATA
)
{
if
(
m3
->
mc_xcursor
->
mx_cursor
.
mc_flags
&
C_INITIALIZED
)
{
if
(
!
(
node
->
mn_flags
&
F_SUBDATA
))
m3
->
mc_xcursor
->
mx_cursor
.
mc_pg
[
0
]
=
NODEDATA
(
node
);
}
else
{
mdb_xcursor_init1
(
m3
,
node
);
rc
=
mdb_cursor_first
(
&
m3
->
mc_xcursor
->
mx_cursor
,
NULL
,
NULL
);
if
(
rc
)
goto
fail
;
}
}
m3
->
mc_xcursor
->
mx_cursor
.
mc_flags
|=
C_DEL
;
}
m3
->
mc_flags
|=
C_DEL
;
}
}
mc
->
mc_flags
|=
C_DEL
;
}
fail:
if
(
rc
)
mc
->
mc_txn
->
mt_flags
|=
MDB_TXN_ERROR
;
return
rc
;
...
...
libraries/liblmdb/mdb_copy.1
View file @
cf81bfb2
.TH MDB_COPY 1 "2014/07/01" "LMDB 0.9.14"
.\" Copyright 2012-202
0
Howard Chu, Symas Corp. All Rights Reserved.
.\" Copyright 2012-202
1
Howard Chu, Symas Corp. All Rights Reserved.
.\" Copying restrictions apply. See COPYRIGHT/LICENSE.
.SH NAME
mdb_copy \- LMDB environment copy tool
...
...
libraries/liblmdb/mdb_copy.c
View file @
cf81bfb2
/* mdb_copy.c - memory-mapped database backup tool */
/*
* Copyright 2012-202
0
Howard Chu, Symas Corp.
* Copyright 2012-202
1
Howard Chu, Symas Corp.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
...
...
libraries/liblmdb/mdb_dump.1
View file @
cf81bfb2
.TH MDB_DUMP 1 "2015/09/30" "LMDB 0.9.17"
.\" Copyright 2014-202
0
Howard Chu, Symas Corp. All Rights Reserved.
.\" Copyright 2014-202
1
Howard Chu, Symas Corp. All Rights Reserved.
.\" Copying restrictions apply. See COPYRIGHT/LICENSE.
.SH NAME
mdb_dump \- LMDB environment export tool
...
...
libraries/liblmdb/mdb_dump.c
View file @
cf81bfb2
/* mdb_dump.c - memory-mapped database dump tool */
/*
* Copyright 2011-202
0
Howard Chu, Symas Corp.
* Copyright 2011-202
1
Howard Chu, Symas Corp.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
...
...
libraries/liblmdb/mdb_load.1
View file @
cf81bfb2
.TH MDB_LOAD 1 "2015/09/30" "LMDB 0.9.17"
.\" Copyright 2014-202
0
Howard Chu, Symas Corp. All Rights Reserved.
.\" Copyright 2014-202
1
Howard Chu, Symas Corp. All Rights Reserved.
.\" Copying restrictions apply. See COPYRIGHT/LICENSE.
.SH NAME
mdb_load \- LMDB environment import tool
...
...
libraries/liblmdb/mdb_load.c
View file @
cf81bfb2
/* mdb_load.c - memory-mapped database load tool */
/*
* Copyright 2011-202
0
Howard Chu, Symas Corp.
* Copyright 2011-202
1
Howard Chu, Symas Corp.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
...
...
libraries/liblmdb/mdb_stat.1
View file @
cf81bfb2
.TH MDB_STAT 1 "2015/09/30" "LMDB 0.9.17"
.\" Copyright 2012-202
0
Howard Chu, Symas Corp. All Rights Reserved.
.\" Copyright 2012-202
1
Howard Chu, Symas Corp. All Rights Reserved.
.\" Copying restrictions apply. See COPYRIGHT/LICENSE.
.SH NAME
mdb_stat \- LMDB environment status tool
...
...
libraries/liblmdb/mdb_stat.c
View file @
cf81bfb2
/* mdb_stat.c - memory-mapped database status tool */
/*
* Copyright 2011-202
0
Howard Chu, Symas Corp.
* Copyright 2011-202
1
Howard Chu, Symas Corp.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
...
...
libraries/liblmdb/midl.c
View file @
cf81bfb2
...
...
@@ -3,8 +3,8 @@
/* $OpenLDAP$ */
/* This work is part of OpenLDAP Software <http://www.openldap.org/>.
*
* Copyright 2000-202
0
The OpenLDAP Foundation.
* Portions Copyright 2001-202
0
Howard Chu, Symas Corp.
* Copyright 2000-202
1
The OpenLDAP Foundation.
* Portions Copyright 2001-202
1
Howard Chu, Symas Corp.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
...
...
libraries/liblmdb/midl.h
View file @
cf81bfb2
...
...
@@ -11,8 +11,8 @@
/* $OpenLDAP$ */
/* This work is part of OpenLDAP Software <http://www.openldap.org/>.
*
* Copyright 2000-202
0
The OpenLDAP Foundation.
* Portions Copyright 2001-202
0
Howard Chu, Symas Corp.
* Copyright 2000-202
1
The OpenLDAP Foundation.
* Portions Copyright 2001-202
1
Howard Chu, Symas Corp.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
...
...
libraries/liblmdb/mtest.c
View file @
cf81bfb2
/* mtest.c - memory-mapped database tester/toy */
/*
* Copyright 2011-202
0
Howard Chu, Symas Corp.
* Copyright 2011-202
1
Howard Chu, Symas Corp.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
...
...
libraries/liblmdb/mtest2.c
View file @
cf81bfb2
/* mtest2.c - memory-mapped database tester/toy */
/*
* Copyright 2011-202
0
Howard Chu, Symas Corp.
* Copyright 2011-202
1
Howard Chu, Symas Corp.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
...
...
libraries/liblmdb/mtest3.c
View file @
cf81bfb2
/* mtest3.c - memory-mapped database tester/toy */
/*
* Copyright 2011-202
0
Howard Chu, Symas Corp.
* Copyright 2011-202
1
Howard Chu, Symas Corp.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
...
...
libraries/liblmdb/mtest4.c
View file @
cf81bfb2
/* mtest4.c - memory-mapped database tester/toy */
/*
* Copyright 2011-202
0
Howard Chu, Symas Corp.
* Copyright 2011-202
1
Howard Chu, Symas Corp.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
...
...
libraries/liblmdb/mtest5.c
View file @
cf81bfb2
/* mtest5.c - memory-mapped database tester/toy */
/*
* Copyright 2011-202
0
Howard Chu, Symas Corp.
* Copyright 2011-202
1
Howard Chu, Symas Corp.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
...
...
Prev
1
2
Next
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