Sophie

Sophie

distrib > Fedora > 20 > i386 > by-pkgid > bd25a922043039bd471905083b1612dc > files > 61

lmdb-doc-0.9.13-1.fc20.noarch.rpm

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>MDB: MDB API</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
  $(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td style="padding-left: 0.5em;">
   <div id="projectname">MDB
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
      <li><a href="modules.html"><span>Modules</span></a></li>
      <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Pages</a></div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="summary">
<a href="#groups">Modules</a> &#124;
<a href="#nested-classes">Data Structures</a> &#124;
<a href="#define-members">Macros</a> &#124;
<a href="#typedef-members">Typedefs</a> &#124;
<a href="#enum-members">Enumerations</a> &#124;
<a href="#func-members">Functions</a>  </div>
  <div class="headertitle">
<div class="title">MDB API</div>  </div>
</div><!--header-->
<div class="contents">

<p>OpenLDAP Lightning Memory-Mapped Database Manager.  
<a href="#details">More...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="groups"></a>
Modules</h2></td></tr>
<tr class="memitem:group__Version"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Version.html">Version Macros</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:group__mdb__env"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mdb__env.html">Environment Flags</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:group__mdb__dbi__open"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mdb__dbi__open.html">Database Flags</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:group__mdb__put"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mdb__put.html">Write Flags</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:group__errors"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html">Return Codes</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Data Structures</h2></td></tr>
<tr class="memitem:structMDB__val"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mdb.html#structMDB__val">MDB_val</a></td></tr>
<tr class="memdesc:structMDB__val"><td class="mdescLeft">&#160;</td><td class="mdescRight">Generic structure used for passing keys and data in and out of the database.  <a href="group__mdb.html#structMDB__val">More...</a><br/></td></tr>
<tr class="separator:structMDB__val"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:structMDB__stat"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mdb.html#structMDB__stat">MDB_stat</a></td></tr>
<tr class="memdesc:structMDB__stat"><td class="mdescLeft">&#160;</td><td class="mdescRight">Statistics for a database in the environment.  <a href="group__mdb.html#structMDB__stat">More...</a><br/></td></tr>
<tr class="separator:structMDB__stat"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:structMDB__envinfo"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mdb.html#structMDB__envinfo">MDB_envinfo</a></td></tr>
<tr class="memdesc:structMDB__envinfo"><td class="mdescLeft">&#160;</td><td class="mdescRight">Information about the environment.  <a href="group__mdb.html#structMDB__envinfo">More...</a><br/></td></tr>
<tr class="separator:structMDB__envinfo"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:gab69d2d8eea05c0eb11cdb7a1916727bd"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mdb.html#gab69d2d8eea05c0eb11cdb7a1916727bd">mdb_open</a>(txn, name, flags, dbi)&#160;&#160;&#160;<a class="el" href="group__internal.html#gac08cad5b096925642ca359a6d6f0562a">mdb_dbi_open</a>(txn,name,flags,dbi)</td></tr>
<tr class="separator:gab69d2d8eea05c0eb11cdb7a1916727bd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac56dd5b9c0cecaee35d3d6719939212a"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mdb.html#gac56dd5b9c0cecaee35d3d6719939212a">mdb_close</a>(env, dbi)&#160;&#160;&#160;<a class="el" href="group__internal.html#ga52dd98d0c542378370cd6b712ff961b5">mdb_dbi_close</a>(env,dbi)</td></tr>
<tr class="separator:gac56dd5b9c0cecaee35d3d6719939212a"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
Typedefs</h2></td></tr>
<tr class="memitem:gadbe68a06c448dfb62da16443d251a78b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gadbe68a06c448dfb62da16443d251a78b"></a>
typedef unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mdb.html#gadbe68a06c448dfb62da16443d251a78b">MDB_dbi</a></td></tr>
<tr class="memdesc:gadbe68a06c448dfb62da16443d251a78b"><td class="mdescLeft">&#160;</td><td class="mdescRight">A handle for an individual database in the DB environment. <br/></td></tr>
<tr class="separator:gadbe68a06c448dfb62da16443d251a78b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaa8e6e7a6f99bd7142947c48f0c4b970f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaa8e6e7a6f99bd7142947c48f0c4b970f"></a>
typedef int(&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mdb.html#gaa8e6e7a6f99bd7142947c48f0c4b970f">MDB_cmp_func</a> )(const <a class="el" href="group__mdb.html#structMDB__val">MDB_val</a> *a, const <a class="el" href="group__mdb.html#structMDB__val">MDB_val</a> *b)</td></tr>
<tr class="memdesc:gaa8e6e7a6f99bd7142947c48f0c4b970f"><td class="mdescLeft">&#160;</td><td class="mdescRight">A callback function used to compare two keys in a database. <br/></td></tr>
<tr class="separator:gaa8e6e7a6f99bd7142947c48f0c4b970f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaf6dfd3df8c5c6f082c5befc585165747"><td class="memItemLeft" align="right" valign="top">typedef void(&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mdb.html#gaf6dfd3df8c5c6f082c5befc585165747">MDB_rel_func</a> )(<a class="el" href="group__mdb.html#structMDB__val">MDB_val</a> *item, void *oldptr, void *newptr, void *relctx)</td></tr>
<tr class="memdesc:gaf6dfd3df8c5c6f082c5befc585165747"><td class="mdescLeft">&#160;</td><td class="mdescRight">A callback function used to relocate a position-dependent data item in a fixed-address database.  <a href="#gaf6dfd3df8c5c6f082c5befc585165747">More...</a><br/></td></tr>
<tr class="separator:gaf6dfd3df8c5c6f082c5befc585165747"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga949ada362b3e84ec0435197056d82371"><td class="memItemLeft" align="right" valign="top">typedef void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mdb.html#ga949ada362b3e84ec0435197056d82371">MDB_assert_func</a> (<a class="el" href="group__internal.html#structMDB__env">MDB_env</a> *env, const char *msg)</td></tr>
<tr class="memdesc:ga949ada362b3e84ec0435197056d82371"><td class="mdescLeft">&#160;</td><td class="mdescRight">A callback function for most MDB assert() failures, called before printing the message and aborting.  <a href="#ga949ada362b3e84ec0435197056d82371">More...</a><br/></td></tr>
<tr class="separator:ga949ada362b3e84ec0435197056d82371"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaa8c2df73737d92fa83ccaae435af2ce0"><td class="memItemLeft" align="right" valign="top">typedef int(&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mdb.html#gaa8c2df73737d92fa83ccaae435af2ce0">MDB_msg_func</a> )(const char *msg, void *ctx)</td></tr>
<tr class="memdesc:gaa8c2df73737d92fa83ccaae435af2ce0"><td class="mdescLeft">&#160;</td><td class="mdescRight">A callback function used to print a message from the library.  <a href="#gaa8c2df73737d92fa83ccaae435af2ce0">More...</a><br/></td></tr>
<tr class="separator:gaa8c2df73737d92fa83ccaae435af2ce0"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a>
Enumerations</h2></td></tr>
<tr class="memitem:ga1206b2af8b95e7f6b0ef6b28708c9127"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mdb.html#ga1206b2af8b95e7f6b0ef6b28708c9127">MDB_cursor_op</a> { <br/>
&#160;&#160;<a class="el" href="group__mdb.html#gga1206b2af8b95e7f6b0ef6b28708c9127a7fa6e5dfe596e146026309ca4bc1fa8c">MDB_FIRST</a>, 
<a class="el" href="group__mdb.html#gga1206b2af8b95e7f6b0ef6b28708c9127a6d1d6a1b5d2786521cf01199b74e4707">MDB_FIRST_DUP</a>, 
<a class="el" href="group__mdb.html#gga1206b2af8b95e7f6b0ef6b28708c9127af6e8d2250238fc53d63f57a7dfd7fc9d">MDB_GET_BOTH</a>, 
<a class="el" href="group__mdb.html#gga1206b2af8b95e7f6b0ef6b28708c9127a2a35a3f4da5c7e8d24aad482c971def5">MDB_GET_BOTH_RANGE</a>, 
<br/>
&#160;&#160;<a class="el" href="group__mdb.html#gga1206b2af8b95e7f6b0ef6b28708c9127a57c48da61ad7d53ea56323ab3be53643">MDB_GET_CURRENT</a>, 
<a class="el" href="group__mdb.html#gga1206b2af8b95e7f6b0ef6b28708c9127aadfff65301fefedcb29d612a721717a1">MDB_GET_MULTIPLE</a>, 
<a class="el" href="group__mdb.html#gga1206b2af8b95e7f6b0ef6b28708c9127ae651b65401ec2877105ff8bf6d8c8424">MDB_LAST</a>, 
<a class="el" href="group__mdb.html#gga1206b2af8b95e7f6b0ef6b28708c9127aa3fd7b44991227e8590b9f5bac71c051">MDB_LAST_DUP</a>, 
<br/>
&#160;&#160;<a class="el" href="group__mdb.html#gga1206b2af8b95e7f6b0ef6b28708c9127ab4c331a54ff8f314d20c62f03a8c8505">MDB_NEXT</a>, 
<a class="el" href="group__mdb.html#gga1206b2af8b95e7f6b0ef6b28708c9127a184e21dcc148ee01f9325ba644a37bf2">MDB_NEXT_DUP</a>, 
<a class="el" href="group__mdb.html#gga1206b2af8b95e7f6b0ef6b28708c9127a37d22eecd320d77fbba9f905483f99e5">MDB_NEXT_MULTIPLE</a>, 
<a class="el" href="group__mdb.html#gga1206b2af8b95e7f6b0ef6b28708c9127ad1fe99714d88bbf18b36767b5fe4bf26">MDB_NEXT_NODUP</a>, 
<br/>
&#160;&#160;<a class="el" href="group__mdb.html#gga1206b2af8b95e7f6b0ef6b28708c9127ac3f9d31387235be1e0dc85bb947a7f9e">MDB_PREV</a>, 
<a class="el" href="group__mdb.html#gga1206b2af8b95e7f6b0ef6b28708c9127acc8bcecdcf6368f5e5fc15c885097bf7">MDB_PREV_DUP</a>, 
<a class="el" href="group__mdb.html#gga1206b2af8b95e7f6b0ef6b28708c9127ad5a35ed59afffdd86253de2fe03b6a09">MDB_PREV_NODUP</a>, 
<a class="el" href="group__mdb.html#gga1206b2af8b95e7f6b0ef6b28708c9127a0e2a8c96dea14b11fa8dee617ccc1d7e">MDB_SET</a>, 
<br/>
&#160;&#160;<a class="el" href="group__mdb.html#gga1206b2af8b95e7f6b0ef6b28708c9127a60ca5862cebed7f3487a8a622e77831a">MDB_SET_KEY</a>, 
<a class="el" href="group__mdb.html#gga1206b2af8b95e7f6b0ef6b28708c9127af9feb0557c2954dbf7732eee5e1b59e7">MDB_SET_RANGE</a>
<br/>
 }</td></tr>
<tr class="memdesc:ga1206b2af8b95e7f6b0ef6b28708c9127"><td class="mdescLeft">&#160;</td><td class="mdescRight">Cursor Get operations.  <a href="group__mdb.html#ga1206b2af8b95e7f6b0ef6b28708c9127">More...</a><br/></td></tr>
<tr class="separator:ga1206b2af8b95e7f6b0ef6b28708c9127"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ga0e5d7298fc39b3c187fffbe30264c968"><td class="memItemLeft" align="right" valign="top">char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mdb.html#ga0e5d7298fc39b3c187fffbe30264c968">mdb_version</a> (int *major, int *minor, int *patch)</td></tr>
<tr class="memdesc:ga0e5d7298fc39b3c187fffbe30264c968"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the mdb library version information.  <a href="#ga0e5d7298fc39b3c187fffbe30264c968">More...</a><br/></td></tr>
<tr class="separator:ga0e5d7298fc39b3c187fffbe30264c968"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga569e66c1e3edc1a6016b86719ee3d098"><td class="memItemLeft" align="right" valign="top">char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mdb.html#ga569e66c1e3edc1a6016b86719ee3d098">mdb_strerror</a> (int err)</td></tr>
<tr class="memdesc:ga569e66c1e3edc1a6016b86719ee3d098"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return a string describing a given error code.  <a href="#ga569e66c1e3edc1a6016b86719ee3d098">More...</a><br/></td></tr>
<tr class="separator:ga569e66c1e3edc1a6016b86719ee3d098"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaad6be3d8dcd4ea01f8df436f41d158d4"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mdb.html#gaad6be3d8dcd4ea01f8df436f41d158d4">mdb_env_create</a> (<a class="el" href="group__internal.html#structMDB__env">MDB_env</a> **env)</td></tr>
<tr class="memdesc:gaad6be3d8dcd4ea01f8df436f41d158d4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create an MDB environment handle.  <a href="#gaad6be3d8dcd4ea01f8df436f41d158d4">More...</a><br/></td></tr>
<tr class="separator:gaad6be3d8dcd4ea01f8df436f41d158d4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga32a193c6bf4d7d5c5d579e71f22e9340"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mdb.html#ga32a193c6bf4d7d5c5d579e71f22e9340">mdb_env_open</a> (<a class="el" href="group__internal.html#structMDB__env">MDB_env</a> *env, const char *path, unsigned int flags, <a class="el" href="lmdb_8h.html#a6bc5fbe1ea1873df138108acdf04a28d">mdb_mode_t</a> mode)</td></tr>
<tr class="memdesc:ga32a193c6bf4d7d5c5d579e71f22e9340"><td class="mdescLeft">&#160;</td><td class="mdescRight">Open an environment handle.  <a href="#ga32a193c6bf4d7d5c5d579e71f22e9340">More...</a><br/></td></tr>
<tr class="separator:ga32a193c6bf4d7d5c5d579e71f22e9340"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga5d51d6130325f7353db0955dbedbc378"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mdb.html#ga5d51d6130325f7353db0955dbedbc378">mdb_env_copy</a> (<a class="el" href="group__internal.html#structMDB__env">MDB_env</a> *env, const char *path)</td></tr>
<tr class="memdesc:ga5d51d6130325f7353db0955dbedbc378"><td class="mdescLeft">&#160;</td><td class="mdescRight">Copy an MDB environment to the specified path.  <a href="#ga5d51d6130325f7353db0955dbedbc378">More...</a><br/></td></tr>
<tr class="separator:ga5d51d6130325f7353db0955dbedbc378"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga470b0bcc64ac417de5de5930f20b1a28"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mdb.html#ga470b0bcc64ac417de5de5930f20b1a28">mdb_env_copyfd</a> (<a class="el" href="group__internal.html#structMDB__env">MDB_env</a> *env, <a class="el" href="lmdb_8h.html#a6799f2853adc2e3b863dc2e6d9d0064f">mdb_filehandle_t</a> fd)</td></tr>
<tr class="memdesc:ga470b0bcc64ac417de5de5930f20b1a28"><td class="mdescLeft">&#160;</td><td class="mdescRight">Copy an MDB environment to the specified file descriptor.  <a href="#ga470b0bcc64ac417de5de5930f20b1a28">More...</a><br/></td></tr>
<tr class="separator:ga470b0bcc64ac417de5de5930f20b1a28"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaf881dca452050efbd434cd16e4bae255"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mdb.html#gaf881dca452050efbd434cd16e4bae255">mdb_env_stat</a> (<a class="el" href="group__internal.html#structMDB__env">MDB_env</a> *env, <a class="el" href="group__mdb.html#structMDB__stat">MDB_stat</a> *stat)</td></tr>
<tr class="memdesc:gaf881dca452050efbd434cd16e4bae255"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return statistics about the MDB environment.  <a href="#gaf881dca452050efbd434cd16e4bae255">More...</a><br/></td></tr>
<tr class="separator:gaf881dca452050efbd434cd16e4bae255"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga18769362c7e7d6cf91889a028a5c5947"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mdb.html#ga18769362c7e7d6cf91889a028a5c5947">mdb_env_info</a> (<a class="el" href="group__internal.html#structMDB__env">MDB_env</a> *env, <a class="el" href="group__mdb.html#structMDB__envinfo">MDB_envinfo</a> *stat)</td></tr>
<tr class="memdesc:ga18769362c7e7d6cf91889a028a5c5947"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return information about the MDB environment.  <a href="#ga18769362c7e7d6cf91889a028a5c5947">More...</a><br/></td></tr>
<tr class="separator:ga18769362c7e7d6cf91889a028a5c5947"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga85e61f05aa68b520cc6c3b981dba5037"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mdb.html#ga85e61f05aa68b520cc6c3b981dba5037">mdb_env_sync</a> (<a class="el" href="group__internal.html#structMDB__env">MDB_env</a> *env, int force)</td></tr>
<tr class="memdesc:ga85e61f05aa68b520cc6c3b981dba5037"><td class="mdescLeft">&#160;</td><td class="mdescRight">Flush the data buffers to disk.  <a href="#ga85e61f05aa68b520cc6c3b981dba5037">More...</a><br/></td></tr>
<tr class="separator:ga85e61f05aa68b520cc6c3b981dba5037"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga4366c43ada8874588b6a62fbda2d1e95"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mdb.html#ga4366c43ada8874588b6a62fbda2d1e95">mdb_env_close</a> (<a class="el" href="group__internal.html#structMDB__env">MDB_env</a> *env)</td></tr>
<tr class="memdesc:ga4366c43ada8874588b6a62fbda2d1e95"><td class="mdescLeft">&#160;</td><td class="mdescRight">Close the environment and release the memory map.  <a href="#ga4366c43ada8874588b6a62fbda2d1e95">More...</a><br/></td></tr>
<tr class="separator:ga4366c43ada8874588b6a62fbda2d1e95"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga83f66cf02bfd42119451e9468dc58445"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mdb.html#ga83f66cf02bfd42119451e9468dc58445">mdb_env_set_flags</a> (<a class="el" href="group__internal.html#structMDB__env">MDB_env</a> *env, unsigned int flags, int onoff)</td></tr>
<tr class="memdesc:ga83f66cf02bfd42119451e9468dc58445"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set environment flags.  <a href="#ga83f66cf02bfd42119451e9468dc58445">More...</a><br/></td></tr>
<tr class="separator:ga83f66cf02bfd42119451e9468dc58445"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga2733aefc6f50beb49dd0c6eb19b067d9"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mdb.html#ga2733aefc6f50beb49dd0c6eb19b067d9">mdb_env_get_flags</a> (<a class="el" href="group__internal.html#structMDB__env">MDB_env</a> *env, unsigned int *flags)</td></tr>
<tr class="memdesc:ga2733aefc6f50beb49dd0c6eb19b067d9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get environment flags.  <a href="#ga2733aefc6f50beb49dd0c6eb19b067d9">More...</a><br/></td></tr>
<tr class="separator:ga2733aefc6f50beb49dd0c6eb19b067d9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac699fdd8c4f8013577cb933fb6a757fe"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mdb.html#gac699fdd8c4f8013577cb933fb6a757fe">mdb_env_get_path</a> (<a class="el" href="group__internal.html#structMDB__env">MDB_env</a> *env, const char **path)</td></tr>
<tr class="memdesc:gac699fdd8c4f8013577cb933fb6a757fe"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the path that was used in <a class="el" href="group__mdb.html#ga32a193c6bf4d7d5c5d579e71f22e9340" title="Open an environment handle. ">mdb_env_open()</a>.  <a href="#gac699fdd8c4f8013577cb933fb6a757fe">More...</a><br/></td></tr>
<tr class="separator:gac699fdd8c4f8013577cb933fb6a757fe"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaf1570e7c0e5a5d860fef1032cec7d5f2"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mdb.html#gaf1570e7c0e5a5d860fef1032cec7d5f2">mdb_env_get_fd</a> (<a class="el" href="group__internal.html#structMDB__env">MDB_env</a> *env, <a class="el" href="lmdb_8h.html#a6799f2853adc2e3b863dc2e6d9d0064f">mdb_filehandle_t</a> *fd)</td></tr>
<tr class="memdesc:gaf1570e7c0e5a5d860fef1032cec7d5f2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the filedescriptor for the given environment.  <a href="#gaf1570e7c0e5a5d860fef1032cec7d5f2">More...</a><br/></td></tr>
<tr class="separator:gaf1570e7c0e5a5d860fef1032cec7d5f2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaa2506ec8dab3d969b0e609cd82e619e5"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mdb.html#gaa2506ec8dab3d969b0e609cd82e619e5">mdb_env_set_mapsize</a> (<a class="el" href="group__internal.html#structMDB__env">MDB_env</a> *env, size_t size)</td></tr>
<tr class="memdesc:gaa2506ec8dab3d969b0e609cd82e619e5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the size of the memory map to use for this environment.  <a href="#gaa2506ec8dab3d969b0e609cd82e619e5">More...</a><br/></td></tr>
<tr class="separator:gaa2506ec8dab3d969b0e609cd82e619e5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae687966c24b790630be2a41573fe40e2"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mdb.html#gae687966c24b790630be2a41573fe40e2">mdb_env_set_maxreaders</a> (<a class="el" href="group__internal.html#structMDB__env">MDB_env</a> *env, unsigned int readers)</td></tr>
<tr class="memdesc:gae687966c24b790630be2a41573fe40e2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the maximum number of threads/reader slots for the environment.  <a href="#gae687966c24b790630be2a41573fe40e2">More...</a><br/></td></tr>
<tr class="separator:gae687966c24b790630be2a41573fe40e2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga70e143cf11760d869f754c9c9956e6cc"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mdb.html#ga70e143cf11760d869f754c9c9956e6cc">mdb_env_get_maxreaders</a> (<a class="el" href="group__internal.html#structMDB__env">MDB_env</a> *env, unsigned int *readers)</td></tr>
<tr class="memdesc:ga70e143cf11760d869f754c9c9956e6cc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the maximum number of threads/reader slots for the environment.  <a href="#ga70e143cf11760d869f754c9c9956e6cc">More...</a><br/></td></tr>
<tr class="separator:ga70e143cf11760d869f754c9c9956e6cc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaa2fc2f1f37cb1115e733b62cab2fcdbc"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mdb.html#gaa2fc2f1f37cb1115e733b62cab2fcdbc">mdb_env_set_maxdbs</a> (<a class="el" href="group__internal.html#structMDB__env">MDB_env</a> *env, <a class="el" href="group__mdb.html#gadbe68a06c448dfb62da16443d251a78b">MDB_dbi</a> dbs)</td></tr>
<tr class="memdesc:gaa2fc2f1f37cb1115e733b62cab2fcdbc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the maximum number of named databases for the environment.  <a href="#gaa2fc2f1f37cb1115e733b62cab2fcdbc">More...</a><br/></td></tr>
<tr class="separator:gaa2fc2f1f37cb1115e733b62cab2fcdbc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaaf0be004f33828bf2fb09d77eb3cef94"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mdb.html#gaaf0be004f33828bf2fb09d77eb3cef94">mdb_env_get_maxkeysize</a> (<a class="el" href="group__internal.html#structMDB__env">MDB_env</a> *env)</td></tr>
<tr class="memdesc:gaaf0be004f33828bf2fb09d77eb3cef94"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the maximum size of keys and <a class="el" href="group__mdb__dbi__open.html#gae0626566c2562e9007f5c8c9535bab1a">MDB_DUPSORT</a> data we can write.  <a href="#gaaf0be004f33828bf2fb09d77eb3cef94">More...</a><br/></td></tr>
<tr class="separator:gaaf0be004f33828bf2fb09d77eb3cef94"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaf2fe09eb9c96eeb915a76bf713eecc46"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mdb.html#gaf2fe09eb9c96eeb915a76bf713eecc46">mdb_env_set_userctx</a> (<a class="el" href="group__internal.html#structMDB__env">MDB_env</a> *env, void *ctx)</td></tr>
<tr class="memdesc:gaf2fe09eb9c96eeb915a76bf713eecc46"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set application information associated with the <a class="el" href="group__internal.html#structMDB__env" title="Opaque structure for a database environment. ">MDB_env</a>.  <a href="#gaf2fe09eb9c96eeb915a76bf713eecc46">More...</a><br/></td></tr>
<tr class="separator:gaf2fe09eb9c96eeb915a76bf713eecc46"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga45df6a4fb150cda2316b5ae224ba52f1"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mdb.html#ga45df6a4fb150cda2316b5ae224ba52f1">mdb_env_get_userctx</a> (<a class="el" href="group__internal.html#structMDB__env">MDB_env</a> *env)</td></tr>
<tr class="memdesc:ga45df6a4fb150cda2316b5ae224ba52f1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the application information associated with the <a class="el" href="group__internal.html#structMDB__env" title="Opaque structure for a database environment. ">MDB_env</a>.  <a href="#ga45df6a4fb150cda2316b5ae224ba52f1">More...</a><br/></td></tr>
<tr class="separator:ga45df6a4fb150cda2316b5ae224ba52f1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga6df57850b14a8b3f237ea4dc012a4e0b"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mdb.html#ga6df57850b14a8b3f237ea4dc012a4e0b">mdb_env_set_assert</a> (<a class="el" href="group__internal.html#structMDB__env">MDB_env</a> *env, <a class="el" href="group__mdb.html#ga949ada362b3e84ec0435197056d82371">MDB_assert_func</a> *func)</td></tr>
<tr class="separator:ga6df57850b14a8b3f237ea4dc012a4e0b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gad7ea55da06b77513609efebd44b26920"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mdb.html#gad7ea55da06b77513609efebd44b26920">mdb_txn_begin</a> (<a class="el" href="group__internal.html#structMDB__env">MDB_env</a> *env, <a class="el" href="group__internal.html#structMDB__txn">MDB_txn</a> *parent, unsigned int flags, <a class="el" href="group__internal.html#structMDB__txn">MDB_txn</a> **txn)</td></tr>
<tr class="memdesc:gad7ea55da06b77513609efebd44b26920"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a transaction for use with the environment.  <a href="#gad7ea55da06b77513609efebd44b26920">More...</a><br/></td></tr>
<tr class="separator:gad7ea55da06b77513609efebd44b26920"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaeb17735b8aaa2938a78a45cab85c06a0"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__internal.html#structMDB__env">MDB_env</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mdb.html#gaeb17735b8aaa2938a78a45cab85c06a0">mdb_txn_env</a> (<a class="el" href="group__internal.html#structMDB__txn">MDB_txn</a> *txn)</td></tr>
<tr class="memdesc:gaeb17735b8aaa2938a78a45cab85c06a0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the transaction's <a class="el" href="group__internal.html#structMDB__env" title="Opaque structure for a database environment. ">MDB_env</a>.  <a href="#gaeb17735b8aaa2938a78a45cab85c06a0">More...</a><br/></td></tr>
<tr class="separator:gaeb17735b8aaa2938a78a45cab85c06a0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga846fbd6f46105617ac9f4d76476f6597"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mdb.html#ga846fbd6f46105617ac9f4d76476f6597">mdb_txn_commit</a> (<a class="el" href="group__internal.html#structMDB__txn">MDB_txn</a> *txn)</td></tr>
<tr class="memdesc:ga846fbd6f46105617ac9f4d76476f6597"><td class="mdescLeft">&#160;</td><td class="mdescRight">Commit all the operations of a transaction into the database.  <a href="#ga846fbd6f46105617ac9f4d76476f6597">More...</a><br/></td></tr>
<tr class="separator:ga846fbd6f46105617ac9f4d76476f6597"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga73a5938ae4c3239ee11efa07eb22b882"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mdb.html#ga73a5938ae4c3239ee11efa07eb22b882">mdb_txn_abort</a> (<a class="el" href="group__internal.html#structMDB__txn">MDB_txn</a> *txn)</td></tr>
<tr class="memdesc:ga73a5938ae4c3239ee11efa07eb22b882"><td class="mdescLeft">&#160;</td><td class="mdescRight">Abandon all the operations of the transaction instead of saving them.  <a href="#ga73a5938ae4c3239ee11efa07eb22b882">More...</a><br/></td></tr>
<tr class="separator:ga73a5938ae4c3239ee11efa07eb22b882"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga02b06706f8a66249769503c4e88c56cd"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mdb.html#ga02b06706f8a66249769503c4e88c56cd">mdb_txn_reset</a> (<a class="el" href="group__internal.html#structMDB__txn">MDB_txn</a> *txn)</td></tr>
<tr class="memdesc:ga02b06706f8a66249769503c4e88c56cd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reset a read-only transaction.  <a href="#ga02b06706f8a66249769503c4e88c56cd">More...</a><br/></td></tr>
<tr class="separator:ga02b06706f8a66249769503c4e88c56cd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga6c6f917959517ede1c504cf7c720ce6d"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mdb.html#ga6c6f917959517ede1c504cf7c720ce6d">mdb_txn_renew</a> (<a class="el" href="group__internal.html#structMDB__txn">MDB_txn</a> *txn)</td></tr>
<tr class="memdesc:ga6c6f917959517ede1c504cf7c720ce6d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Renew a read-only transaction.  <a href="#ga6c6f917959517ede1c504cf7c720ce6d">More...</a><br/></td></tr>
<tr class="separator:ga6c6f917959517ede1c504cf7c720ce6d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac08cad5b096925642ca359a6d6f0562a"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mdb.html#gac08cad5b096925642ca359a6d6f0562a">mdb_dbi_open</a> (<a class="el" href="group__internal.html#structMDB__txn">MDB_txn</a> *txn, const char *name, unsigned int flags, <a class="el" href="group__mdb.html#gadbe68a06c448dfb62da16443d251a78b">MDB_dbi</a> *dbi)</td></tr>
<tr class="memdesc:gac08cad5b096925642ca359a6d6f0562a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Open a database in the environment.  <a href="#gac08cad5b096925642ca359a6d6f0562a">More...</a><br/></td></tr>
<tr class="separator:gac08cad5b096925642ca359a6d6f0562a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae6c1069febe94299769dbdd032fadef6"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mdb.html#gae6c1069febe94299769dbdd032fadef6">mdb_stat</a> (<a class="el" href="group__internal.html#structMDB__txn">MDB_txn</a> *txn, <a class="el" href="group__mdb.html#gadbe68a06c448dfb62da16443d251a78b">MDB_dbi</a> dbi, <a class="el" href="group__mdb.html#structMDB__stat">MDB_stat</a> *stat)</td></tr>
<tr class="memdesc:gae6c1069febe94299769dbdd032fadef6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieve statistics for a database.  <a href="#gae6c1069febe94299769dbdd032fadef6">More...</a><br/></td></tr>
<tr class="separator:gae6c1069febe94299769dbdd032fadef6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga95ba4cb721035478a8705e57b91ae4d4"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mdb.html#ga95ba4cb721035478a8705e57b91ae4d4">mdb_dbi_flags</a> (<a class="el" href="group__internal.html#structMDB__txn">MDB_txn</a> *txn, <a class="el" href="group__mdb.html#gadbe68a06c448dfb62da16443d251a78b">MDB_dbi</a> dbi, unsigned int *flags)</td></tr>
<tr class="memdesc:ga95ba4cb721035478a8705e57b91ae4d4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieve the DB flags for a database handle.  <a href="#ga95ba4cb721035478a8705e57b91ae4d4">More...</a><br/></td></tr>
<tr class="separator:ga95ba4cb721035478a8705e57b91ae4d4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga52dd98d0c542378370cd6b712ff961b5"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mdb.html#ga52dd98d0c542378370cd6b712ff961b5">mdb_dbi_close</a> (<a class="el" href="group__internal.html#structMDB__env">MDB_env</a> *env, <a class="el" href="group__mdb.html#gadbe68a06c448dfb62da16443d251a78b">MDB_dbi</a> dbi)</td></tr>
<tr class="memdesc:ga52dd98d0c542378370cd6b712ff961b5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Close a database handle. Normally unnecessary. Use with care:  <a href="#ga52dd98d0c542378370cd6b712ff961b5">More...</a><br/></td></tr>
<tr class="separator:ga52dd98d0c542378370cd6b712ff961b5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gab966fab3840fc54a6571dfb32b00f2db"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mdb.html#gab966fab3840fc54a6571dfb32b00f2db">mdb_drop</a> (<a class="el" href="group__internal.html#structMDB__txn">MDB_txn</a> *txn, <a class="el" href="group__mdb.html#gadbe68a06c448dfb62da16443d251a78b">MDB_dbi</a> dbi, int del)</td></tr>
<tr class="memdesc:gab966fab3840fc54a6571dfb32b00f2db"><td class="mdescLeft">&#160;</td><td class="mdescRight">Empty or delete+close a database.  <a href="#gab966fab3840fc54a6571dfb32b00f2db">More...</a><br/></td></tr>
<tr class="separator:gab966fab3840fc54a6571dfb32b00f2db"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga68e47ffcf72eceec553c72b1784ee0fe"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mdb.html#ga68e47ffcf72eceec553c72b1784ee0fe">mdb_set_compare</a> (<a class="el" href="group__internal.html#structMDB__txn">MDB_txn</a> *txn, <a class="el" href="group__mdb.html#gadbe68a06c448dfb62da16443d251a78b">MDB_dbi</a> dbi, <a class="el" href="group__mdb.html#gaa8e6e7a6f99bd7142947c48f0c4b970f">MDB_cmp_func</a> *cmp)</td></tr>
<tr class="memdesc:ga68e47ffcf72eceec553c72b1784ee0fe"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set a custom key comparison function for a database.  <a href="#ga68e47ffcf72eceec553c72b1784ee0fe">More...</a><br/></td></tr>
<tr class="separator:ga68e47ffcf72eceec553c72b1784ee0fe"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gacef4ec3dab0bbd9bc978b73c19c879ae"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mdb.html#gacef4ec3dab0bbd9bc978b73c19c879ae">mdb_set_dupsort</a> (<a class="el" href="group__internal.html#structMDB__txn">MDB_txn</a> *txn, <a class="el" href="group__mdb.html#gadbe68a06c448dfb62da16443d251a78b">MDB_dbi</a> dbi, <a class="el" href="group__mdb.html#gaa8e6e7a6f99bd7142947c48f0c4b970f">MDB_cmp_func</a> *cmp)</td></tr>
<tr class="memdesc:gacef4ec3dab0bbd9bc978b73c19c879ae"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set a custom data comparison function for a <a class="el" href="group__mdb__dbi__open.html#gae0626566c2562e9007f5c8c9535bab1a">MDB_DUPSORT</a> database.  <a href="#gacef4ec3dab0bbd9bc978b73c19c879ae">More...</a><br/></td></tr>
<tr class="separator:gacef4ec3dab0bbd9bc978b73c19c879ae"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga697d82c7afe79f142207ad5adcdebfeb"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mdb.html#ga697d82c7afe79f142207ad5adcdebfeb">mdb_set_relfunc</a> (<a class="el" href="group__internal.html#structMDB__txn">MDB_txn</a> *txn, <a class="el" href="group__mdb.html#gadbe68a06c448dfb62da16443d251a78b">MDB_dbi</a> dbi, <a class="el" href="group__mdb.html#gaf6dfd3df8c5c6f082c5befc585165747">MDB_rel_func</a> *rel)</td></tr>
<tr class="memdesc:ga697d82c7afe79f142207ad5adcdebfeb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set a relocation function for a <a class="el" href="group__mdb__env.html#ga492952277c481bc4a6fa08ef71c29487">MDB_FIXEDMAP</a> database.  <a href="#ga697d82c7afe79f142207ad5adcdebfeb">More...</a><br/></td></tr>
<tr class="separator:ga697d82c7afe79f142207ad5adcdebfeb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga7c34246308cee01724a1839a8f5cc594"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mdb.html#ga7c34246308cee01724a1839a8f5cc594">mdb_set_relctx</a> (<a class="el" href="group__internal.html#structMDB__txn">MDB_txn</a> *txn, <a class="el" href="group__mdb.html#gadbe68a06c448dfb62da16443d251a78b">MDB_dbi</a> dbi, void *ctx)</td></tr>
<tr class="memdesc:ga7c34246308cee01724a1839a8f5cc594"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set a context pointer for a <a class="el" href="group__mdb__env.html#ga492952277c481bc4a6fa08ef71c29487">MDB_FIXEDMAP</a> database's relocation function.  <a href="#ga7c34246308cee01724a1839a8f5cc594">More...</a><br/></td></tr>
<tr class="separator:ga7c34246308cee01724a1839a8f5cc594"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga8bf10cd91d3f3a83a34d04ce6b07992d"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mdb.html#ga8bf10cd91d3f3a83a34d04ce6b07992d">mdb_get</a> (<a class="el" href="group__internal.html#structMDB__txn">MDB_txn</a> *txn, <a class="el" href="group__mdb.html#gadbe68a06c448dfb62da16443d251a78b">MDB_dbi</a> dbi, <a class="el" href="group__mdb.html#structMDB__val">MDB_val</a> *key, <a class="el" href="group__mdb.html#structMDB__val">MDB_val</a> *data)</td></tr>
<tr class="memdesc:ga8bf10cd91d3f3a83a34d04ce6b07992d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get items from a database.  <a href="#ga8bf10cd91d3f3a83a34d04ce6b07992d">More...</a><br/></td></tr>
<tr class="separator:ga8bf10cd91d3f3a83a34d04ce6b07992d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga4fa8573d9236d54687c61827ebf8cac0"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mdb.html#ga4fa8573d9236d54687c61827ebf8cac0">mdb_put</a> (<a class="el" href="group__internal.html#structMDB__txn">MDB_txn</a> *txn, <a class="el" href="group__mdb.html#gadbe68a06c448dfb62da16443d251a78b">MDB_dbi</a> dbi, <a class="el" href="group__mdb.html#structMDB__val">MDB_val</a> *key, <a class="el" href="group__mdb.html#structMDB__val">MDB_val</a> *data, unsigned int flags)</td></tr>
<tr class="memdesc:ga4fa8573d9236d54687c61827ebf8cac0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Store items into a database.  <a href="#ga4fa8573d9236d54687c61827ebf8cac0">More...</a><br/></td></tr>
<tr class="separator:ga4fa8573d9236d54687c61827ebf8cac0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gab8182f9360ea69ac0afd4a4eaab1ddb0"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mdb.html#gab8182f9360ea69ac0afd4a4eaab1ddb0">mdb_del</a> (<a class="el" href="group__internal.html#structMDB__txn">MDB_txn</a> *txn, <a class="el" href="group__mdb.html#gadbe68a06c448dfb62da16443d251a78b">MDB_dbi</a> dbi, <a class="el" href="group__mdb.html#structMDB__val">MDB_val</a> *key, <a class="el" href="group__mdb.html#structMDB__val">MDB_val</a> *data)</td></tr>
<tr class="memdesc:gab8182f9360ea69ac0afd4a4eaab1ddb0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Delete items from a database.  <a href="#gab8182f9360ea69ac0afd4a4eaab1ddb0">More...</a><br/></td></tr>
<tr class="separator:gab8182f9360ea69ac0afd4a4eaab1ddb0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga9ff5d7bd42557fd5ee235dc1d62613aa"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mdb.html#ga9ff5d7bd42557fd5ee235dc1d62613aa">mdb_cursor_open</a> (<a class="el" href="group__internal.html#structMDB__txn">MDB_txn</a> *txn, <a class="el" href="group__mdb.html#gadbe68a06c448dfb62da16443d251a78b">MDB_dbi</a> dbi, <a class="el" href="group__internal.html#structMDB__cursor">MDB_cursor</a> **cursor)</td></tr>
<tr class="memdesc:ga9ff5d7bd42557fd5ee235dc1d62613aa"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a cursor handle.  <a href="#ga9ff5d7bd42557fd5ee235dc1d62613aa">More...</a><br/></td></tr>
<tr class="separator:ga9ff5d7bd42557fd5ee235dc1d62613aa"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gad685f5d73c052715c7bd859cc4c05188"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mdb.html#gad685f5d73c052715c7bd859cc4c05188">mdb_cursor_close</a> (<a class="el" href="group__internal.html#structMDB__cursor">MDB_cursor</a> *cursor)</td></tr>
<tr class="memdesc:gad685f5d73c052715c7bd859cc4c05188"><td class="mdescLeft">&#160;</td><td class="mdescRight">Close a cursor handle.  <a href="#gad685f5d73c052715c7bd859cc4c05188">More...</a><br/></td></tr>
<tr class="separator:gad685f5d73c052715c7bd859cc4c05188"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac8b57befb68793070c85ea813df481af"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mdb.html#gac8b57befb68793070c85ea813df481af">mdb_cursor_renew</a> (<a class="el" href="group__internal.html#structMDB__txn">MDB_txn</a> *txn, <a class="el" href="group__internal.html#structMDB__cursor">MDB_cursor</a> *cursor)</td></tr>
<tr class="memdesc:gac8b57befb68793070c85ea813df481af"><td class="mdescLeft">&#160;</td><td class="mdescRight">Renew a cursor handle.  <a href="#gac8b57befb68793070c85ea813df481af">More...</a><br/></td></tr>
<tr class="separator:gac8b57befb68793070c85ea813df481af"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga7bf0d458f7f36b5232fcb368ebda79e0"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__internal.html#structMDB__txn">MDB_txn</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mdb.html#ga7bf0d458f7f36b5232fcb368ebda79e0">mdb_cursor_txn</a> (<a class="el" href="group__internal.html#structMDB__cursor">MDB_cursor</a> *cursor)</td></tr>
<tr class="memdesc:ga7bf0d458f7f36b5232fcb368ebda79e0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the cursor's transaction handle.  <a href="#ga7bf0d458f7f36b5232fcb368ebda79e0">More...</a><br/></td></tr>
<tr class="separator:ga7bf0d458f7f36b5232fcb368ebda79e0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga2f7092cf70ee816fb3d2c3267a732372"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__mdb.html#gadbe68a06c448dfb62da16443d251a78b">MDB_dbi</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mdb.html#ga2f7092cf70ee816fb3d2c3267a732372">mdb_cursor_dbi</a> (<a class="el" href="group__internal.html#structMDB__cursor">MDB_cursor</a> *cursor)</td></tr>
<tr class="memdesc:ga2f7092cf70ee816fb3d2c3267a732372"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the cursor's database handle.  <a href="#ga2f7092cf70ee816fb3d2c3267a732372">More...</a><br/></td></tr>
<tr class="separator:ga2f7092cf70ee816fb3d2c3267a732372"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga48df35fb102536b32dfbb801a47b4cb0"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mdb.html#ga48df35fb102536b32dfbb801a47b4cb0">mdb_cursor_get</a> (<a class="el" href="group__internal.html#structMDB__cursor">MDB_cursor</a> *cursor, <a class="el" href="group__mdb.html#structMDB__val">MDB_val</a> *key, <a class="el" href="group__mdb.html#structMDB__val">MDB_val</a> *data, <a class="el" href="group__mdb.html#ga1206b2af8b95e7f6b0ef6b28708c9127">MDB_cursor_op</a> op)</td></tr>
<tr class="memdesc:ga48df35fb102536b32dfbb801a47b4cb0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieve by cursor.  <a href="#ga48df35fb102536b32dfbb801a47b4cb0">More...</a><br/></td></tr>
<tr class="separator:ga48df35fb102536b32dfbb801a47b4cb0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga1f83ccb40011837ff37cc32be01ad91e"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mdb.html#ga1f83ccb40011837ff37cc32be01ad91e">mdb_cursor_put</a> (<a class="el" href="group__internal.html#structMDB__cursor">MDB_cursor</a> *cursor, <a class="el" href="group__mdb.html#structMDB__val">MDB_val</a> *key, <a class="el" href="group__mdb.html#structMDB__val">MDB_val</a> *data, unsigned int flags)</td></tr>
<tr class="memdesc:ga1f83ccb40011837ff37cc32be01ad91e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Store by cursor.  <a href="#ga1f83ccb40011837ff37cc32be01ad91e">More...</a><br/></td></tr>
<tr class="separator:ga1f83ccb40011837ff37cc32be01ad91e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga26a52d3efcfd72e5bf6bd6960bf75f95"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mdb.html#ga26a52d3efcfd72e5bf6bd6960bf75f95">mdb_cursor_del</a> (<a class="el" href="group__internal.html#structMDB__cursor">MDB_cursor</a> *cursor, unsigned int flags)</td></tr>
<tr class="memdesc:ga26a52d3efcfd72e5bf6bd6960bf75f95"><td class="mdescLeft">&#160;</td><td class="mdescRight">Delete current key/data pair.  <a href="#ga26a52d3efcfd72e5bf6bd6960bf75f95">More...</a><br/></td></tr>
<tr class="separator:ga26a52d3efcfd72e5bf6bd6960bf75f95"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga4041fd1e1862c6b7d5f10590b86ffbe2"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mdb.html#ga4041fd1e1862c6b7d5f10590b86ffbe2">mdb_cursor_count</a> (<a class="el" href="group__internal.html#structMDB__cursor">MDB_cursor</a> *cursor, size_t *countp)</td></tr>
<tr class="memdesc:ga4041fd1e1862c6b7d5f10590b86ffbe2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return count of duplicates for current key.  <a href="#ga4041fd1e1862c6b7d5f10590b86ffbe2">More...</a><br/></td></tr>
<tr class="separator:ga4041fd1e1862c6b7d5f10590b86ffbe2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaba790a2493f744965b810efac73bac0e"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mdb.html#gaba790a2493f744965b810efac73bac0e">mdb_cmp</a> (<a class="el" href="group__internal.html#structMDB__txn">MDB_txn</a> *txn, <a class="el" href="group__mdb.html#gadbe68a06c448dfb62da16443d251a78b">MDB_dbi</a> dbi, const <a class="el" href="group__mdb.html#structMDB__val">MDB_val</a> *a, const <a class="el" href="group__mdb.html#structMDB__val">MDB_val</a> *b)</td></tr>
<tr class="memdesc:gaba790a2493f744965b810efac73bac0e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Compare two data items according to a particular database.  <a href="#gaba790a2493f744965b810efac73bac0e">More...</a><br/></td></tr>
<tr class="separator:gaba790a2493f744965b810efac73bac0e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac61d3087282b0824c8c5caff6caabdf3"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mdb.html#gac61d3087282b0824c8c5caff6caabdf3">mdb_dcmp</a> (<a class="el" href="group__internal.html#structMDB__txn">MDB_txn</a> *txn, <a class="el" href="group__mdb.html#gadbe68a06c448dfb62da16443d251a78b">MDB_dbi</a> dbi, const <a class="el" href="group__mdb.html#structMDB__val">MDB_val</a> *a, const <a class="el" href="group__mdb.html#structMDB__val">MDB_val</a> *b)</td></tr>
<tr class="memdesc:gac61d3087282b0824c8c5caff6caabdf3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Compare two data items according to a particular database.  <a href="#gac61d3087282b0824c8c5caff6caabdf3">More...</a><br/></td></tr>
<tr class="separator:gac61d3087282b0824c8c5caff6caabdf3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga8550000cd0501a44f57ee6dff0188744"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mdb.html#ga8550000cd0501a44f57ee6dff0188744">mdb_reader_list</a> (<a class="el" href="group__internal.html#structMDB__env">MDB_env</a> *env, <a class="el" href="group__mdb.html#gaa8c2df73737d92fa83ccaae435af2ce0">MDB_msg_func</a> *func, void *ctx)</td></tr>
<tr class="memdesc:ga8550000cd0501a44f57ee6dff0188744"><td class="mdescLeft">&#160;</td><td class="mdescRight">Dump the entries in the reader lock table.  <a href="#ga8550000cd0501a44f57ee6dff0188744">More...</a><br/></td></tr>
<tr class="separator:ga8550000cd0501a44f57ee6dff0188744"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga366923d08bb384b3d9580a98edf5d668"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mdb.html#ga366923d08bb384b3d9580a98edf5d668">mdb_reader_check</a> (<a class="el" href="group__internal.html#structMDB__env">MDB_env</a> *env, int *dead)</td></tr>
<tr class="memdesc:ga366923d08bb384b3d9580a98edf5d668"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check for stale entries in the reader lock table.  <a href="#ga366923d08bb384b3d9580a98edf5d668">More...</a><br/></td></tr>
<tr class="separator:ga366923d08bb384b3d9580a98edf5d668"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<p>OpenLDAP Lightning Memory-Mapped Database Manager. </p>
<hr/><h2 class="groupheader">Data Structure Documentation</h2>
<a name="structMDB__val" id="structMDB__val"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">struct MDB_val</td>
        </tr>
      </table>
</div><div class="memdoc">
<div class="textblock"><p>Generic structure used for passing keys and data in and out of the database. </p>
<p>Values returned from the database are valid only until a subsequent update operation, or the end of the transaction. Do not modify or free them, they commonly point into the database itself.</p>
<p>Key sizes must be between 1 and <a class="el" href="group__mdb.html#gaaf0be004f33828bf2fb09d77eb3cef94" title="Get the maximum size of keys and MDB_DUPSORT data we can write. ">mdb_env_get_maxkeysize()</a> inclusive. The same applies to data sizes in databases with the <a class="el" href="group__mdb__dbi__open.html#gae0626566c2562e9007f5c8c9535bab1a">MDB_DUPSORT</a> flag. Other data items can in theory be from 0 to 0xffffffff bytes long. </p>
</div><table class="memberdecls">
<tr><td colspan="2"><h3>Data Fields</h3></td></tr>
<tr class="memitem:a9e788910dc056d0cff8915672084dabe"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mdb.html#a9e788910dc056d0cff8915672084dabe">mv_size</a></td></tr>
<tr class="separator:a9e788910dc056d0cff8915672084dabe"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a98af99191878ec0a2179482f4e831b91"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mdb.html#a98af99191878ec0a2179482f4e831b91">mv_data</a></td></tr>
<tr class="separator:a98af99191878ec0a2179482f4e831b91"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h4 class="groupheader">Field Documentation</h4>
<a class="anchor" id="a9e788910dc056d0cff8915672084dabe"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">size_t MDB_val::mv_size</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>size of the data item </p>

</div>
</div>
<a class="anchor" id="a98af99191878ec0a2179482f4e831b91"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void* MDB_val::mv_data</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>address of the data item </p>

</div>
</div>

</div>
</div>
<a name="structMDB__stat" id="structMDB__stat"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">struct MDB_stat</td>
        </tr>
      </table>
</div><div class="memdoc">
<div class="textblock"><p>Statistics for a database in the environment. </p>
</div><table class="memberdecls">
<tr><td colspan="2"><h3>Data Fields</h3></td></tr>
<tr class="memitem:a770440a4f2dec8592ae8f86c80895516"><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mdb.html#a770440a4f2dec8592ae8f86c80895516">ms_psize</a></td></tr>
<tr class="separator:a770440a4f2dec8592ae8f86c80895516"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab4e70f35499a7e7c71429b04ac62de68"><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mdb.html#ab4e70f35499a7e7c71429b04ac62de68">ms_depth</a></td></tr>
<tr class="separator:ab4e70f35499a7e7c71429b04ac62de68"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:addee021cbe8ec447fb06e181e24d61db"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mdb.html#addee021cbe8ec447fb06e181e24d61db">ms_branch_pages</a></td></tr>
<tr class="separator:addee021cbe8ec447fb06e181e24d61db"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad63342d9d6925cddc16d9ea38797a0e0"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mdb.html#ad63342d9d6925cddc16d9ea38797a0e0">ms_leaf_pages</a></td></tr>
<tr class="separator:ad63342d9d6925cddc16d9ea38797a0e0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac6daa2ffeddc4f54ad966f25345b3ecd"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mdb.html#ac6daa2ffeddc4f54ad966f25345b3ecd">ms_overflow_pages</a></td></tr>
<tr class="separator:ac6daa2ffeddc4f54ad966f25345b3ecd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a40bc5dfc159505149037bf897aaa7baf"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mdb.html#a40bc5dfc159505149037bf897aaa7baf">ms_entries</a></td></tr>
<tr class="separator:a40bc5dfc159505149037bf897aaa7baf"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h4 class="groupheader">Field Documentation</h4>
<a class="anchor" id="a770440a4f2dec8592ae8f86c80895516"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">unsigned int MDB_stat::ms_psize</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Size of a database page. This is currently the same for all databases. </p>

</div>
</div>
<a class="anchor" id="ab4e70f35499a7e7c71429b04ac62de68"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">unsigned int MDB_stat::ms_depth</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Depth (height) of the B-tree </p>

</div>
</div>
<a class="anchor" id="addee021cbe8ec447fb06e181e24d61db"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">size_t MDB_stat::ms_branch_pages</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Number of internal (non-leaf) pages </p>

</div>
</div>
<a class="anchor" id="ad63342d9d6925cddc16d9ea38797a0e0"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">size_t MDB_stat::ms_leaf_pages</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Number of leaf pages </p>

</div>
</div>
<a class="anchor" id="ac6daa2ffeddc4f54ad966f25345b3ecd"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">size_t MDB_stat::ms_overflow_pages</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Number of overflow pages </p>

</div>
</div>
<a class="anchor" id="a40bc5dfc159505149037bf897aaa7baf"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">size_t MDB_stat::ms_entries</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Number of data items </p>

</div>
</div>

</div>
</div>
<a name="structMDB__envinfo" id="structMDB__envinfo"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">struct MDB_envinfo</td>
        </tr>
      </table>
</div><div class="memdoc">
<div class="textblock"><p>Information about the environment. </p>
</div><table class="memberdecls">
<tr><td colspan="2"><h3>Data Fields</h3></td></tr>
<tr class="memitem:aebb8447a3392f888baf6f134fcadaac2"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mdb.html#aebb8447a3392f888baf6f134fcadaac2">me_mapaddr</a></td></tr>
<tr class="separator:aebb8447a3392f888baf6f134fcadaac2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4bde3c8b676457342cba2fe27aed5fbd"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mdb.html#a4bde3c8b676457342cba2fe27aed5fbd">me_mapsize</a></td></tr>
<tr class="separator:a4bde3c8b676457342cba2fe27aed5fbd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af89fed4b85fabd137f9f2d2b64ddee3a"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mdb.html#af89fed4b85fabd137f9f2d2b64ddee3a">me_last_pgno</a></td></tr>
<tr class="separator:af89fed4b85fabd137f9f2d2b64ddee3a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a63ee435cd237d967ef2cb996996b21ee"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mdb.html#a63ee435cd237d967ef2cb996996b21ee">me_last_txnid</a></td></tr>
<tr class="separator:a63ee435cd237d967ef2cb996996b21ee"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0a55ab3e5584ea6bb51caec3516e134b"><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mdb.html#a0a55ab3e5584ea6bb51caec3516e134b">me_maxreaders</a></td></tr>
<tr class="separator:a0a55ab3e5584ea6bb51caec3516e134b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af20468962fceb98d99e15c314955e290"><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mdb.html#af20468962fceb98d99e15c314955e290">me_numreaders</a></td></tr>
<tr class="separator:af20468962fceb98d99e15c314955e290"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h4 class="groupheader">Field Documentation</h4>
<a class="anchor" id="aebb8447a3392f888baf6f134fcadaac2"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void* MDB_envinfo::me_mapaddr</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Address of map, if fixed </p>

</div>
</div>
<a class="anchor" id="a4bde3c8b676457342cba2fe27aed5fbd"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">size_t MDB_envinfo::me_mapsize</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Size of the data memory map </p>

</div>
</div>
<a class="anchor" id="af89fed4b85fabd137f9f2d2b64ddee3a"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">size_t MDB_envinfo::me_last_pgno</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>ID of the last used page </p>

</div>
</div>
<a class="anchor" id="a63ee435cd237d967ef2cb996996b21ee"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">size_t MDB_envinfo::me_last_txnid</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>ID of the last committed transaction </p>

</div>
</div>
<a class="anchor" id="a0a55ab3e5584ea6bb51caec3516e134b"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">unsigned int MDB_envinfo::me_maxreaders</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>max reader slots in the environment </p>

</div>
</div>
<a class="anchor" id="af20468962fceb98d99e15c314955e290"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">unsigned int MDB_envinfo::me_numreaders</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>max reader slots used in the environment </p>

</div>
</div>

</div>
</div>
<h2 class="groupheader">Macro Definition Documentation</h2>
<a class="anchor" id="gab69d2d8eea05c0eb11cdb7a1916727bd"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define mdb_open</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">txn, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">name, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">flags, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">dbi&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td>&#160;&#160;&#160;<a class="el" href="group__internal.html#gac08cad5b096925642ca359a6d6f0562a">mdb_dbi_open</a>(txn,name,flags,dbi)</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Compat with version &lt;= 0.9.4, avoid clash with libmdb from MDB Tools project </p>

</div>
</div>
<a class="anchor" id="gac56dd5b9c0cecaee35d3d6719939212a"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define mdb_close</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">env, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">dbi&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td>&#160;&#160;&#160;<a class="el" href="group__internal.html#ga52dd98d0c542378370cd6b712ff961b5">mdb_dbi_close</a>(env,dbi)</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Compat with version &lt;= 0.9.4, avoid clash with libmdb from MDB Tools project </p>

</div>
</div>
<h2 class="groupheader">Typedef Documentation</h2>
<a class="anchor" id="gaf6dfd3df8c5c6f082c5befc585165747"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef void( MDB_rel_func)(<a class="el" href="group__mdb.html#structMDB__val">MDB_val</a> *item, void *oldptr, void *newptr, void *relctx)</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>A callback function used to relocate a position-dependent data item in a fixed-address database. </p>
<p>The <b>newptr</b> gives the item's desired address in the memory map, and <b>oldptr</b> gives its previous address. The item's actual data resides at the address in <b>item</b>. This callback is expected to walk through the fields of the record in <b>item</b> and modify any values based at the <b>oldptr</b> address to be relative to the <b>newptr</b> address. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in,out]</td><td class="paramname">item</td><td>The item that is to be relocated. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">oldptr</td><td>The previous address. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">newptr</td><td>The new address to relocate to. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">relctx</td><td>An application-provided context, set by <a class="el" href="group__mdb.html#ga7c34246308cee01724a1839a8f5cc594" title="Set a context pointer for a MDB_FIXEDMAP database&#39;s relocation function. ">mdb_set_relctx()</a>. </td></tr>
  </table>
  </dd>
</dl>
<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000001">Todo:</a></b></dt><dd>This feature is currently unimplemented. </dd></dl>

</div>
</div>
<a class="anchor" id="ga949ada362b3e84ec0435197056d82371"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef void MDB_assert_func(<a class="el" href="group__internal.html#structMDB__env">MDB_env</a> *env, const char *msg)</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>A callback function for most MDB assert() failures, called before printing the message and aborting. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">env</td><td>An environment handle returned by <a class="el" href="group__mdb.html#gaad6be3d8dcd4ea01f8df436f41d158d4" title="Create an MDB environment handle. ">mdb_env_create()</a>. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">msg</td><td>The assertion message, not including newline. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="gaa8c2df73737d92fa83ccaae435af2ce0"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef int( MDB_msg_func)(const char *msg, void *ctx)</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>A callback function used to print a message from the library. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">msg</td><td>The string to be printed. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">ctx</td><td>An arbitrary context pointer for the callback. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>&lt; 0 on failure, &gt;= 0 on success. </dd></dl>

</div>
</div>
<h2 class="groupheader">Enumeration Type Documentation</h2>
<a class="anchor" id="ga1206b2af8b95e7f6b0ef6b28708c9127"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">enum <a class="el" href="group__mdb.html#ga1206b2af8b95e7f6b0ef6b28708c9127">MDB_cursor_op</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Cursor Get operations. </p>
<p>This is the set of all operations for retrieving data using a cursor. </p>
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><em><a class="anchor" id="gga1206b2af8b95e7f6b0ef6b28708c9127a7fa6e5dfe596e146026309ca4bc1fa8c"></a>MDB_FIRST</em>&#160;</td><td class="fielddoc">
<p>Position at first key/data item </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga1206b2af8b95e7f6b0ef6b28708c9127a6d1d6a1b5d2786521cf01199b74e4707"></a>MDB_FIRST_DUP</em>&#160;</td><td class="fielddoc">
<p>Position at first data item of current key. Only for <a class="el" href="group__mdb__dbi__open.html#gae0626566c2562e9007f5c8c9535bab1a">MDB_DUPSORT</a> </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga1206b2af8b95e7f6b0ef6b28708c9127af6e8d2250238fc53d63f57a7dfd7fc9d"></a>MDB_GET_BOTH</em>&#160;</td><td class="fielddoc">
<p>Position at key/data pair. Only for <a class="el" href="group__mdb__dbi__open.html#gae0626566c2562e9007f5c8c9535bab1a">MDB_DUPSORT</a> </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga1206b2af8b95e7f6b0ef6b28708c9127a2a35a3f4da5c7e8d24aad482c971def5"></a>MDB_GET_BOTH_RANGE</em>&#160;</td><td class="fielddoc">
<p>position at key, nearest data. Only for <a class="el" href="group__mdb__dbi__open.html#gae0626566c2562e9007f5c8c9535bab1a">MDB_DUPSORT</a> </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga1206b2af8b95e7f6b0ef6b28708c9127a57c48da61ad7d53ea56323ab3be53643"></a>MDB_GET_CURRENT</em>&#160;</td><td class="fielddoc">
<p>Return key/data at current cursor position </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga1206b2af8b95e7f6b0ef6b28708c9127aadfff65301fefedcb29d612a721717a1"></a>MDB_GET_MULTIPLE</em>&#160;</td><td class="fielddoc">
<p>Return key and up to a page of duplicate data items from current cursor position. Move cursor to prepare for <a class="el" href="group__mdb.html#gga1206b2af8b95e7f6b0ef6b28708c9127a37d22eecd320d77fbba9f905483f99e5">MDB_NEXT_MULTIPLE</a>. Only for <a class="el" href="group__mdb__dbi__open.html#ga5acc26f80668d1ebc31265d178c69338">MDB_DUPFIXED</a> </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga1206b2af8b95e7f6b0ef6b28708c9127ae651b65401ec2877105ff8bf6d8c8424"></a>MDB_LAST</em>&#160;</td><td class="fielddoc">
<p>Position at last key/data item </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga1206b2af8b95e7f6b0ef6b28708c9127aa3fd7b44991227e8590b9f5bac71c051"></a>MDB_LAST_DUP</em>&#160;</td><td class="fielddoc">
<p>Position at last data item of current key. Only for <a class="el" href="group__mdb__dbi__open.html#gae0626566c2562e9007f5c8c9535bab1a">MDB_DUPSORT</a> </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga1206b2af8b95e7f6b0ef6b28708c9127ab4c331a54ff8f314d20c62f03a8c8505"></a>MDB_NEXT</em>&#160;</td><td class="fielddoc">
<p>Position at next data item </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga1206b2af8b95e7f6b0ef6b28708c9127a184e21dcc148ee01f9325ba644a37bf2"></a>MDB_NEXT_DUP</em>&#160;</td><td class="fielddoc">
<p>Position at next data item of current key. Only for <a class="el" href="group__mdb__dbi__open.html#gae0626566c2562e9007f5c8c9535bab1a">MDB_DUPSORT</a> </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga1206b2af8b95e7f6b0ef6b28708c9127a37d22eecd320d77fbba9f905483f99e5"></a>MDB_NEXT_MULTIPLE</em>&#160;</td><td class="fielddoc">
<p>Return key and up to a page of duplicate data items from next cursor position. Move cursor to prepare for <a class="el" href="group__mdb.html#gga1206b2af8b95e7f6b0ef6b28708c9127a37d22eecd320d77fbba9f905483f99e5">MDB_NEXT_MULTIPLE</a>. Only for <a class="el" href="group__mdb__dbi__open.html#ga5acc26f80668d1ebc31265d178c69338">MDB_DUPFIXED</a> </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga1206b2af8b95e7f6b0ef6b28708c9127ad1fe99714d88bbf18b36767b5fe4bf26"></a>MDB_NEXT_NODUP</em>&#160;</td><td class="fielddoc">
<p>Position at first data item of next key </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga1206b2af8b95e7f6b0ef6b28708c9127ac3f9d31387235be1e0dc85bb947a7f9e"></a>MDB_PREV</em>&#160;</td><td class="fielddoc">
<p>Position at previous data item </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga1206b2af8b95e7f6b0ef6b28708c9127acc8bcecdcf6368f5e5fc15c885097bf7"></a>MDB_PREV_DUP</em>&#160;</td><td class="fielddoc">
<p>Position at previous data item of current key. Only for <a class="el" href="group__mdb__dbi__open.html#gae0626566c2562e9007f5c8c9535bab1a">MDB_DUPSORT</a> </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga1206b2af8b95e7f6b0ef6b28708c9127ad5a35ed59afffdd86253de2fe03b6a09"></a>MDB_PREV_NODUP</em>&#160;</td><td class="fielddoc">
<p>Position at last data item of previous key </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga1206b2af8b95e7f6b0ef6b28708c9127a0e2a8c96dea14b11fa8dee617ccc1d7e"></a>MDB_SET</em>&#160;</td><td class="fielddoc">
<p>Position at specified key </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga1206b2af8b95e7f6b0ef6b28708c9127a60ca5862cebed7f3487a8a622e77831a"></a>MDB_SET_KEY</em>&#160;</td><td class="fielddoc">
<p>Position at specified key, return key + data </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga1206b2af8b95e7f6b0ef6b28708c9127af9feb0557c2954dbf7732eee5e1b59e7"></a>MDB_SET_RANGE</em>&#160;</td><td class="fielddoc">
<p>Position at first key greater than or equal to specified key. </p>
</td></tr>
</table>

</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="ga0e5d7298fc39b3c187fffbe30264c968"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">char* mdb_version </td>
          <td>(</td>
          <td class="paramtype">int *&#160;</td>
          <td class="paramname"><em>major</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int *&#160;</td>
          <td class="paramname"><em>minor</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int *&#160;</td>
          <td class="paramname"><em>patch</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Return the mdb library version information. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[out]</td><td class="paramname">major</td><td>if non-NULL, the library major version number is copied here </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">minor</td><td>if non-NULL, the library minor version number is copied here </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">patch</td><td>if non-NULL, the library patch version number is copied here </td></tr>
  </table>
  </dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
  <table class="retval">
    <tr><td class="paramname">version string</td><td>The library version as a string</td></tr>
  </table>
  </dd>
</dl>
<p>Return the library version info. </p>

</div>
</div>
<a class="anchor" id="ga569e66c1e3edc1a6016b86719ee3d098"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">char* mdb_strerror </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>err</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Return a string describing a given error code. </p>
<p>This function is a superset of the ANSI C X3.159-1989 (ANSI C) strerror(3) function. If the error code is greater than or equal to 0, then the string returned by the system function strerror(3) is returned. If the error code is less than 0, an error string corresponding to the MDB library error is returned. See <a class="el" href="group__errors.html">Return Codes</a> for a list of MDB-specific error codes. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">err</td><td>The error code </td></tr>
  </table>
  </dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
  <table class="retval">
    <tr><td class="paramname">error message</td><td>The description of the error </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="gaad6be3d8dcd4ea01f8df436f41d158d4"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int mdb_env_create </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__internal.html#structMDB__env">MDB_env</a> **&#160;</td>
          <td class="paramname"><em>env</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Create an MDB environment handle. </p>
<p>This function allocates memory for a <a class="el" href="group__internal.html#structMDB__env" title="Opaque structure for a database environment. ">MDB_env</a> structure. To release the allocated memory and discard the handle, call <a class="el" href="group__mdb.html#ga4366c43ada8874588b6a62fbda2d1e95" title="Close the environment and release the memory map. ">mdb_env_close()</a>. Before the handle may be used, it must be opened using <a class="el" href="group__mdb.html#ga32a193c6bf4d7d5c5d579e71f22e9340" title="Open an environment handle. ">mdb_env_open()</a>. Various other options may also need to be set before opening the handle, e.g. <a class="el" href="group__mdb.html#gaa2506ec8dab3d969b0e609cd82e619e5" title="Set the size of the memory map to use for this environment. ">mdb_env_set_mapsize()</a>, <a class="el" href="group__mdb.html#gae687966c24b790630be2a41573fe40e2" title="Set the maximum number of threads/reader slots for the environment. ">mdb_env_set_maxreaders()</a>, <a class="el" href="group__mdb.html#gaa2fc2f1f37cb1115e733b62cab2fcdbc" title="Set the maximum number of named databases for the environment. ">mdb_env_set_maxdbs()</a>, depending on usage requirements. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[out]</td><td class="paramname">env</td><td>The address where the new handle will be stored </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A non-zero error value on failure and 0 on success. </dd></dl>

</div>
</div>
<a class="anchor" id="ga32a193c6bf4d7d5c5d579e71f22e9340"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int mdb_env_open </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__internal.html#structMDB__env">MDB_env</a> *&#160;</td>
          <td class="paramname"><em>env</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>path</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>flags</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="lmdb_8h.html#a6bc5fbe1ea1873df138108acdf04a28d">mdb_mode_t</a>&#160;</td>
          <td class="paramname"><em>mode</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Open an environment handle. </p>
<p>If this function fails, <a class="el" href="group__mdb.html#ga4366c43ada8874588b6a62fbda2d1e95" title="Close the environment and release the memory map. ">mdb_env_close()</a> must be called to discard the <a class="el" href="group__internal.html#structMDB__env" title="Opaque structure for a database environment. ">MDB_env</a> handle. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">env</td><td>An environment handle returned by <a class="el" href="group__mdb.html#gaad6be3d8dcd4ea01f8df436f41d158d4" title="Create an MDB environment handle. ">mdb_env_create()</a> </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">path</td><td>The directory in which the database files reside. This directory must already exist and be writable. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">flags</td><td>Special options for this environment. This parameter must be set to 0 or by bitwise OR'ing together one or more of the values described here. Flags set by <a class="el" href="group__mdb.html#ga83f66cf02bfd42119451e9468dc58445" title="Set environment flags. ">mdb_env_set_flags()</a> are also used. <ul>
<li>
<a class="el" href="group__mdb__env.html#ga492952277c481bc4a6fa08ef71c29487">MDB_FIXEDMAP</a> use a fixed address for the mmap region. This flag must be specified when creating the environment, and is stored persistently in the environment. If successful, the memory map will always reside at the same virtual address and pointers used to reference data items in the database will be constant across multiple invocations. This option may not always work, depending on how the operating system has allocated memory to shared libraries and other uses. The feature is highly experimental. </li>
<li>
<a class="el" href="group__mdb__env.html#gabf0e3e3b1e18df6526969f6825a388ea">MDB_NOSUBDIR</a> By default, MDB creates its environment in a directory whose pathname is given in <b>path</b>, and creates its data and lock files under that directory. With this option, <b>path</b> is used as-is for the database main data file. The database lock file is the <b>path</b> with "-lock" appended. </li>
<li>
<a class="el" href="group__mdb__env.html#gac4c41c0ae044127b2fc80420c323cac6">MDB_RDONLY</a> Open the environment in read-only mode. No write operations will be allowed. MDB will still modify the lock file - except on read-only filesystems, where MDB does not use locks. </li>
<li>
<a class="el" href="group__mdb__env.html#ga7b81e9fd5f8fae38786d67e1a8387fa7">MDB_WRITEMAP</a> Use a writeable memory map unless MDB_RDONLY is set. This is faster and uses fewer mallocs, but loses protection from application bugs like wild pointer writes and other bad updates into the database. Incompatible with nested transactions. Processes with and without MDB_WRITEMAP on the same environment do not cooperate well. </li>
<li>
<a class="el" href="group__mdb__env.html#ga5021c4e96ffe9f383f5b8ab2af8e4b16">MDB_NOMETASYNC</a> Flush system buffers to disk only once per transaction, omit the metadata flush. Defer that until the system flushes files to disk, or next non-MDB_RDONLY commit or <a class="el" href="group__mdb.html#ga85e61f05aa68b520cc6c3b981dba5037" title="Flush the data buffers to disk. ">mdb_env_sync()</a>. This optimization maintains database integrity, but a system crash may undo the last committed transaction. I.e. it preserves the ACI (atomicity, consistency, isolation) but not D (durability) database property. This flag may be changed at any time using <a class="el" href="group__mdb.html#ga83f66cf02bfd42119451e9468dc58445" title="Set environment flags. ">mdb_env_set_flags()</a>. </li>
<li>
<a class="el" href="group__mdb__env.html#ga5791dd1adb09123f82dd1f331209e12e">MDB_NOSYNC</a> Don't flush system buffers to disk when committing a transaction. This optimization means a system crash can corrupt the database or lose the last transactions if buffers are not yet flushed to disk. The risk is governed by how often the system flushes dirty buffers to disk and how often <a class="el" href="group__mdb.html#ga85e61f05aa68b520cc6c3b981dba5037" title="Flush the data buffers to disk. ">mdb_env_sync()</a> is called. However, if the filesystem preserves write order and the <a class="el" href="group__mdb__env.html#ga7b81e9fd5f8fae38786d67e1a8387fa7">MDB_WRITEMAP</a> flag is not used, transactions exhibit ACI (atomicity, consistency, isolation) properties and only lose D (durability). I.e. database integrity is maintained, but a system crash may undo the final transactions. Note that (<a class="el" href="group__mdb__env.html#ga5791dd1adb09123f82dd1f331209e12e">MDB_NOSYNC</a> | <a class="el" href="group__mdb__env.html#ga7b81e9fd5f8fae38786d67e1a8387fa7">MDB_WRITEMAP</a>) leaves the system with no hint for when to write transactions to disk, unless <a class="el" href="group__mdb.html#ga85e61f05aa68b520cc6c3b981dba5037" title="Flush the data buffers to disk. ">mdb_env_sync()</a> is called. (<a class="el" href="group__mdb__env.html#gab034ed0d8e5938090aef5ee0997f7e94">MDB_MAPASYNC</a> | <a class="el" href="group__mdb__env.html#ga7b81e9fd5f8fae38786d67e1a8387fa7">MDB_WRITEMAP</a>) may be preferable. This flag may be changed at any time using <a class="el" href="group__mdb.html#ga83f66cf02bfd42119451e9468dc58445" title="Set environment flags. ">mdb_env_set_flags()</a>. </li>
<li>
<a class="el" href="group__mdb__env.html#gab034ed0d8e5938090aef5ee0997f7e94">MDB_MAPASYNC</a> When using <a class="el" href="group__mdb__env.html#ga7b81e9fd5f8fae38786d67e1a8387fa7">MDB_WRITEMAP</a>, use asynchronous flushes to disk. As with <a class="el" href="group__mdb__env.html#ga5791dd1adb09123f82dd1f331209e12e">MDB_NOSYNC</a>, a system crash can then corrupt the database or lose the last transactions. Calling <a class="el" href="group__mdb.html#ga85e61f05aa68b520cc6c3b981dba5037" title="Flush the data buffers to disk. ">mdb_env_sync()</a> ensures on-disk database integrity until next commit. This flag may be changed at any time using <a class="el" href="group__mdb.html#ga83f66cf02bfd42119451e9468dc58445" title="Set environment flags. ">mdb_env_set_flags()</a>. </li>
<li>
<a class="el" href="group__mdb__env.html#ga5dca84a576d14b4bfe2deddc2dc622d3">MDB_NOTLS</a> Don't use Thread-Local Storage. Tie reader locktable slots to <a class="el" href="group__internal.html#structMDB__txn" title="Opaque structure for a transaction handle. ">MDB_txn</a> objects instead of to threads. I.e. <a class="el" href="group__mdb.html#ga02b06706f8a66249769503c4e88c56cd" title="Reset a read-only transaction. ">mdb_txn_reset()</a> keeps the slot reseved for the <a class="el" href="group__internal.html#structMDB__txn" title="Opaque structure for a transaction handle. ">MDB_txn</a> object. A thread may use parallel read-only transactions. A read-only transaction may span threads if the user synchronizes its use. Applications that multiplex many user threads over individual OS threads need this option. Such an application must also serialize the write transactions in an OS thread, since MDB's write locking is unaware of the user threads. </li>
<li>
<a class="el" href="group__mdb__env.html#ga9b0450b1a87cb9f22e033550e49e5037">MDB_NOLOCK</a> Don't do any locking. If concurrent access is anticipated, the caller must manage all concurrency itself. For proper operation the caller must enforce single-writer semantics, and must ensure that no readers are using old transactions while a writer is active. The simplest approach is to use an exclusive lock so that no readers may be active at all when a writer begins. </li>
<li>
<a class="el" href="group__mdb__env.html#ga0fcdaf42f0c45749a2dff11ee322303f">MDB_NORDAHEAD</a> Turn off readahead. Most operating systems perform readahead on read requests by default. This option turns it off if the OS supports it. Turning it off may help random read performance when the DB is larger than RAM and system RAM is full. The option is not implemented on Windows. </li>
<li>
<a class="el" href="group__mdb__env.html#gafa035a1f17ebf31376eafb7bd2cdd448">MDB_NOMEMINIT</a> Don't initialize malloc'd memory before writing to unused spaces in the data file. By default, memory for pages written to the data file is obtained using malloc. While these pages may be reused in subsequent transactions, freshly malloc'd pages will be initialized to zeroes before use. This avoids persisting leftover data from other code (that used the heap and subsequently freed the memory) into the data file. Note that many other system libraries may allocate and free memory from the heap for arbitrary uses. E.g., stdio may use the heap for file I/O buffers. This initialization step has a modest performance cost so some applications may want to disable it using this flag. This option can be a problem for applications which handle sensitive data like passwords, and it makes memory checkers like Valgrind noisy. This flag is not needed with <a class="el" href="group__mdb__env.html#ga7b81e9fd5f8fae38786d67e1a8387fa7">MDB_WRITEMAP</a>, which writes directly to the mmap instead of using malloc for pages. The initialization is also skipped if <a class="el" href="group__mdb__put.html#gac0545c6aea719991e3eae6ccc686efcc">MDB_RESERVE</a> is used; the caller is expected to overwrite all of the memory that was reserved in that case. This flag may be changed at any time using <a class="el" href="group__mdb.html#ga83f66cf02bfd42119451e9468dc58445" title="Set environment flags. ">mdb_env_set_flags()</a>. </li>
</ul>
</td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">mode</td><td>The UNIX permissions to set on created files. This parameter is ignored on Windows. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A non-zero error value on failure and 0 on success. Some possible errors are: <ul>
<li>
<a class="el" href="group__errors.html#ga909b2db047fa90fb0d37a78f86a6f99b">MDB_VERSION_MISMATCH</a> - the version of the MDB library doesn't match the version that created the database environment. </li>
<li>
<a class="el" href="group__errors.html#ga9c2257e8cd8ea027cb682588b235a6f0">MDB_INVALID</a> - the environment file headers are corrupted. </li>
<li>
ENOENT - the directory specified by the path parameter doesn't exist. </li>
<li>
EACCES - the user didn't have permission to access the environment files. </li>
<li>
EAGAIN - the environment was locked by another process. </li>
</ul>
</dd></dl>

</div>
</div>
<a class="anchor" id="ga5d51d6130325f7353db0955dbedbc378"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int mdb_env_copy </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__internal.html#structMDB__env">MDB_env</a> *&#160;</td>
          <td class="paramname"><em>env</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>path</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Copy an MDB environment to the specified path. </p>
<p>This function may be used to make a backup of an existing environment. No lockfile is created, since it gets recreated at need. </p>
<dl class="section note"><dt>Note</dt><dd>This call can trigger significant file size growth if run in parallel with write transactions, because it employs a read-only transaction. See long-lived transactions under <a class="el" href="index.html#caveats_sec">Caveats</a>. </dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">env</td><td>An environment handle returned by <a class="el" href="group__mdb.html#gaad6be3d8dcd4ea01f8df436f41d158d4" title="Create an MDB environment handle. ">mdb_env_create()</a>. It must have already been opened successfully. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">path</td><td>The directory in which the copy will reside. This directory must already exist and be writable but must otherwise be empty. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A non-zero error value on failure and 0 on success. </dd></dl>

</div>
</div>
<a class="anchor" id="ga470b0bcc64ac417de5de5930f20b1a28"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int mdb_env_copyfd </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__internal.html#structMDB__env">MDB_env</a> *&#160;</td>
          <td class="paramname"><em>env</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="lmdb_8h.html#a6799f2853adc2e3b863dc2e6d9d0064f">mdb_filehandle_t</a>&#160;</td>
          <td class="paramname"><em>fd</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Copy an MDB environment to the specified file descriptor. </p>
<p>This function may be used to make a backup of an existing environment. No lockfile is created, since it gets recreated at need. </p>
<dl class="section note"><dt>Note</dt><dd>This call can trigger significant file size growth if run in parallel with write transactions, because it employs a read-only transaction. See long-lived transactions under <a class="el" href="index.html#caveats_sec">Caveats</a>. </dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">env</td><td>An environment handle returned by <a class="el" href="group__mdb.html#gaad6be3d8dcd4ea01f8df436f41d158d4" title="Create an MDB environment handle. ">mdb_env_create()</a>. It must have already been opened successfully. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">fd</td><td>The filedescriptor to write the copy to. It must have already been opened for Write access. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A non-zero error value on failure and 0 on success. </dd></dl>

</div>
</div>
<a class="anchor" id="gaf881dca452050efbd434cd16e4bae255"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int mdb_env_stat </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__internal.html#structMDB__env">MDB_env</a> *&#160;</td>
          <td class="paramname"><em>env</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__mdb.html#structMDB__stat">MDB_stat</a> *&#160;</td>
          <td class="paramname"><em>stat</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Return statistics about the MDB environment. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">env</td><td>An environment handle returned by <a class="el" href="group__mdb.html#gaad6be3d8dcd4ea01f8df436f41d158d4" title="Create an MDB environment handle. ">mdb_env_create()</a> </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">stat</td><td>The address of an <a class="el" href="group__mdb.html#structMDB__stat" title="Statistics for a database in the environment. ">MDB_stat</a> structure where the statistics will be copied </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="ga18769362c7e7d6cf91889a028a5c5947"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int mdb_env_info </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__internal.html#structMDB__env">MDB_env</a> *&#160;</td>
          <td class="paramname"><em>env</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__mdb.html#structMDB__envinfo">MDB_envinfo</a> *&#160;</td>
          <td class="paramname"><em>stat</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Return information about the MDB environment. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">env</td><td>An environment handle returned by <a class="el" href="group__mdb.html#gaad6be3d8dcd4ea01f8df436f41d158d4" title="Create an MDB environment handle. ">mdb_env_create()</a> </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">stat</td><td>The address of an <a class="el" href="group__mdb.html#structMDB__envinfo" title="Information about the environment. ">MDB_envinfo</a> structure where the information will be copied </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="ga85e61f05aa68b520cc6c3b981dba5037"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int mdb_env_sync </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__internal.html#structMDB__env">MDB_env</a> *&#160;</td>
          <td class="paramname"><em>env</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>force</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Flush the data buffers to disk. </p>
<p>Data is always written to disk when <a class="el" href="group__mdb.html#ga846fbd6f46105617ac9f4d76476f6597" title="Commit all the operations of a transaction into the database. ">mdb_txn_commit()</a> is called, but the operating system may keep it buffered. MDB always flushes the OS buffers upon commit as well, unless the environment was opened with <a class="el" href="group__mdb__env.html#ga5791dd1adb09123f82dd1f331209e12e">MDB_NOSYNC</a> or in part <a class="el" href="group__mdb__env.html#ga5021c4e96ffe9f383f5b8ab2af8e4b16">MDB_NOMETASYNC</a>. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">env</td><td>An environment handle returned by <a class="el" href="group__mdb.html#gaad6be3d8dcd4ea01f8df436f41d158d4" title="Create an MDB environment handle. ">mdb_env_create()</a> </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">force</td><td>If non-zero, force a synchronous flush. Otherwise if the environment has the <a class="el" href="group__mdb__env.html#ga5791dd1adb09123f82dd1f331209e12e">MDB_NOSYNC</a> flag set the flushes will be omitted, and with <a class="el" href="group__mdb__env.html#gab034ed0d8e5938090aef5ee0997f7e94">MDB_MAPASYNC</a> they will be asynchronous. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A non-zero error value on failure and 0 on success. Some possible errors are: <ul>
<li>
EINVAL - an invalid parameter was specified. </li>
<li>
EIO - an error occurred during synchronization. </li>
</ul>
</dd></dl>

</div>
</div>
<a class="anchor" id="ga4366c43ada8874588b6a62fbda2d1e95"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void mdb_env_close </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__internal.html#structMDB__env">MDB_env</a> *&#160;</td>
          <td class="paramname"><em>env</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Close the environment and release the memory map. </p>
<p>Only a single thread may call this function. All transactions, databases, and cursors must already be closed before calling this function. Attempts to use any such handles after calling this function will cause a SIGSEGV. The environment handle will be freed and must not be used again after this call. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">env</td><td>An environment handle returned by <a class="el" href="group__mdb.html#gaad6be3d8dcd4ea01f8df436f41d158d4" title="Create an MDB environment handle. ">mdb_env_create()</a> </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="ga83f66cf02bfd42119451e9468dc58445"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int mdb_env_set_flags </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__internal.html#structMDB__env">MDB_env</a> *&#160;</td>
          <td class="paramname"><em>env</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>flags</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>onoff</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Set environment flags. </p>
<p>This may be used to set some flags in addition to those from <a class="el" href="group__mdb.html#ga32a193c6bf4d7d5c5d579e71f22e9340" title="Open an environment handle. ">mdb_env_open()</a>, or to unset these flags. If several threads change the flags at the same time, the result is undefined. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">env</td><td>An environment handle returned by <a class="el" href="group__mdb.html#gaad6be3d8dcd4ea01f8df436f41d158d4" title="Create an MDB environment handle. ">mdb_env_create()</a> </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">flags</td><td>The flags to change, bitwise OR'ed together </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">onoff</td><td>A non-zero value sets the flags, zero clears them. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A non-zero error value on failure and 0 on success. Some possible errors are: <ul>
<li>
EINVAL - an invalid parameter was specified. </li>
</ul>
</dd></dl>

</div>
</div>
<a class="anchor" id="ga2733aefc6f50beb49dd0c6eb19b067d9"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int mdb_env_get_flags </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__internal.html#structMDB__env">MDB_env</a> *&#160;</td>
          <td class="paramname"><em>env</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int *&#160;</td>
          <td class="paramname"><em>flags</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Get environment flags. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">env</td><td>An environment handle returned by <a class="el" href="group__mdb.html#gaad6be3d8dcd4ea01f8df436f41d158d4" title="Create an MDB environment handle. ">mdb_env_create()</a> </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">flags</td><td>The address of an integer to store the flags </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A non-zero error value on failure and 0 on success. Some possible errors are: <ul>
<li>
EINVAL - an invalid parameter was specified. </li>
</ul>
</dd></dl>

</div>
</div>
<a class="anchor" id="gac699fdd8c4f8013577cb933fb6a757fe"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int mdb_env_get_path </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__internal.html#structMDB__env">MDB_env</a> *&#160;</td>
          <td class="paramname"><em>env</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char **&#160;</td>
          <td class="paramname"><em>path</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Return the path that was used in <a class="el" href="group__mdb.html#ga32a193c6bf4d7d5c5d579e71f22e9340" title="Open an environment handle. ">mdb_env_open()</a>. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">env</td><td>An environment handle returned by <a class="el" href="group__mdb.html#gaad6be3d8dcd4ea01f8df436f41d158d4" title="Create an MDB environment handle. ">mdb_env_create()</a> </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">path</td><td>Address of a string pointer to contain the path. This is the actual string in the environment, not a copy. It should not be altered in any way. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A non-zero error value on failure and 0 on success. Some possible errors are: <ul>
<li>
EINVAL - an invalid parameter was specified. </li>
</ul>
</dd></dl>

</div>
</div>
<a class="anchor" id="gaf1570e7c0e5a5d860fef1032cec7d5f2"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int mdb_env_get_fd </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__internal.html#structMDB__env">MDB_env</a> *&#160;</td>
          <td class="paramname"><em>env</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="lmdb_8h.html#a6799f2853adc2e3b863dc2e6d9d0064f">mdb_filehandle_t</a> *&#160;</td>
          <td class="paramname"><em>fd</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Return the filedescriptor for the given environment. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">env</td><td>An environment handle returned by <a class="el" href="group__mdb.html#gaad6be3d8dcd4ea01f8df436f41d158d4" title="Create an MDB environment handle. ">mdb_env_create()</a> </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">fd</td><td>Address of a mdb_filehandle_t to contain the descriptor. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A non-zero error value on failure and 0 on success. Some possible errors are: <ul>
<li>
EINVAL - an invalid parameter was specified. </li>
</ul>
</dd></dl>

</div>
</div>
<a class="anchor" id="gaa2506ec8dab3d969b0e609cd82e619e5"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int mdb_env_set_mapsize </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__internal.html#structMDB__env">MDB_env</a> *&#160;</td>
          <td class="paramname"><em>env</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>size</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Set the size of the memory map to use for this environment. </p>
<p>The size should be a multiple of the OS page size. The default is 10485760 bytes. The size of the memory map is also the maximum size of the database. The value should be chosen as large as possible, to accommodate future growth of the database. This function should be called after <a class="el" href="group__mdb.html#gaad6be3d8dcd4ea01f8df436f41d158d4" title="Create an MDB environment handle. ">mdb_env_create()</a> and before <a class="el" href="group__mdb.html#ga32a193c6bf4d7d5c5d579e71f22e9340" title="Open an environment handle. ">mdb_env_open()</a>. It may be called at later times if no transactions are active in this process. Note that the library does not check for this condition, the caller must ensure it explicitly.</p>
<p>If the mapsize is changed by another process, <a class="el" href="group__mdb.html#gad7ea55da06b77513609efebd44b26920" title="Create a transaction for use with the environment. ">mdb_txn_begin()</a> will return <a class="el" href="group__errors.html#ga75c014faa4f02ffd234a5ee0e14baa92">MDB_MAP_RESIZED</a>. This function may be called with a size of zero to adopt the new size.</p>
<p>Any attempt to set a size smaller than the space already consumed by the environment will be silently changed to the current size of the used space. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">env</td><td>An environment handle returned by <a class="el" href="group__mdb.html#gaad6be3d8dcd4ea01f8df436f41d158d4" title="Create an MDB environment handle. ">mdb_env_create()</a> </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">size</td><td>The size in bytes </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A non-zero error value on failure and 0 on success. Some possible errors are: <ul>
<li>
EINVAL - an invalid parameter was specified, or the environment has an active write transaction. </li>
</ul>
</dd></dl>

</div>
</div>
<a class="anchor" id="gae687966c24b790630be2a41573fe40e2"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int mdb_env_set_maxreaders </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__internal.html#structMDB__env">MDB_env</a> *&#160;</td>
          <td class="paramname"><em>env</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>readers</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Set the maximum number of threads/reader slots for the environment. </p>
<p>This defines the number of slots in the lock table that is used to track readers in the the environment. The default is 126. Starting a read-only transaction normally ties a lock table slot to the current thread until the environment closes or the thread exits. If MDB_NOTLS is in use, <a class="el" href="group__mdb.html#gad7ea55da06b77513609efebd44b26920" title="Create a transaction for use with the environment. ">mdb_txn_begin()</a> instead ties the slot to the <a class="el" href="group__internal.html#structMDB__txn" title="Opaque structure for a transaction handle. ">MDB_txn</a> object until it or the <a class="el" href="group__internal.html#structMDB__env" title="Opaque structure for a database environment. ">MDB_env</a> object is destroyed. This function may only be called after <a class="el" href="group__mdb.html#gaad6be3d8dcd4ea01f8df436f41d158d4" title="Create an MDB environment handle. ">mdb_env_create()</a> and before <a class="el" href="group__mdb.html#ga32a193c6bf4d7d5c5d579e71f22e9340" title="Open an environment handle. ">mdb_env_open()</a>. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">env</td><td>An environment handle returned by <a class="el" href="group__mdb.html#gaad6be3d8dcd4ea01f8df436f41d158d4" title="Create an MDB environment handle. ">mdb_env_create()</a> </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">readers</td><td>The maximum number of reader lock table slots </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A non-zero error value on failure and 0 on success. Some possible errors are: <ul>
<li>
EINVAL - an invalid parameter was specified, or the environment is already open. </li>
</ul>
</dd></dl>

</div>
</div>
<a class="anchor" id="ga70e143cf11760d869f754c9c9956e6cc"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int mdb_env_get_maxreaders </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__internal.html#structMDB__env">MDB_env</a> *&#160;</td>
          <td class="paramname"><em>env</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int *&#160;</td>
          <td class="paramname"><em>readers</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Get the maximum number of threads/reader slots for the environment. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">env</td><td>An environment handle returned by <a class="el" href="group__mdb.html#gaad6be3d8dcd4ea01f8df436f41d158d4" title="Create an MDB environment handle. ">mdb_env_create()</a> </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">readers</td><td>Address of an integer to store the number of readers </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A non-zero error value on failure and 0 on success. Some possible errors are: <ul>
<li>
EINVAL - an invalid parameter was specified. </li>
</ul>
</dd></dl>

</div>
</div>
<a class="anchor" id="gaa2fc2f1f37cb1115e733b62cab2fcdbc"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int mdb_env_set_maxdbs </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__internal.html#structMDB__env">MDB_env</a> *&#160;</td>
          <td class="paramname"><em>env</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__mdb.html#gadbe68a06c448dfb62da16443d251a78b">MDB_dbi</a>&#160;</td>
          <td class="paramname"><em>dbs</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Set the maximum number of named databases for the environment. </p>
<p>This function is only needed if multiple databases will be used in the environment. Simpler applications that use the environment as a single unnamed database can ignore this option. This function may only be called after <a class="el" href="group__mdb.html#gaad6be3d8dcd4ea01f8df436f41d158d4" title="Create an MDB environment handle. ">mdb_env_create()</a> and before <a class="el" href="group__mdb.html#ga32a193c6bf4d7d5c5d579e71f22e9340" title="Open an environment handle. ">mdb_env_open()</a>.</p>
<p>Currently a moderate number of slots are cheap but a huge number gets expensive: 7-120 words per transaction, and every <a class="el" href="group__mdb.html#gac08cad5b096925642ca359a6d6f0562a" title="Open a database in the environment. ">mdb_dbi_open()</a> does a linear search of the opened slots. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">env</td><td>An environment handle returned by <a class="el" href="group__mdb.html#gaad6be3d8dcd4ea01f8df436f41d158d4" title="Create an MDB environment handle. ">mdb_env_create()</a> </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">dbs</td><td>The maximum number of databases </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A non-zero error value on failure and 0 on success. Some possible errors are: <ul>
<li>
EINVAL - an invalid parameter was specified, or the environment is already open. </li>
</ul>
</dd></dl>

</div>
</div>
<a class="anchor" id="gaaf0be004f33828bf2fb09d77eb3cef94"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int mdb_env_get_maxkeysize </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__internal.html#structMDB__env">MDB_env</a> *&#160;</td>
          <td class="paramname"><em>env</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Get the maximum size of keys and <a class="el" href="group__mdb__dbi__open.html#gae0626566c2562e9007f5c8c9535bab1a">MDB_DUPSORT</a> data we can write. </p>
<p>Depends on the compile-time constant <a class="el" href="group__internal.html#gac929399f5d93cef85f874b9e9b1d09e0" title="The max size of a key we can write, or 0 for dynamic max. ">MDB_MAXKEYSIZE</a>. Default 511. See <a class="el" href="group__mdb.html#structMDB__val">MDB_val</a>. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">env</td><td>An environment handle returned by <a class="el" href="group__mdb.html#gaad6be3d8dcd4ea01f8df436f41d158d4" title="Create an MDB environment handle. ">mdb_env_create()</a> </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The maximum size of a key we can write </dd></dl>

</div>
</div>
<a class="anchor" id="gaf2fe09eb9c96eeb915a76bf713eecc46"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int mdb_env_set_userctx </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__internal.html#structMDB__env">MDB_env</a> *&#160;</td>
          <td class="paramname"><em>env</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>ctx</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Set application information associated with the <a class="el" href="group__internal.html#structMDB__env" title="Opaque structure for a database environment. ">MDB_env</a>. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">env</td><td>An environment handle returned by <a class="el" href="group__mdb.html#gaad6be3d8dcd4ea01f8df436f41d158d4" title="Create an MDB environment handle. ">mdb_env_create()</a> </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">ctx</td><td>An arbitrary pointer for whatever the application needs. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A non-zero error value on failure and 0 on success. </dd></dl>

</div>
</div>
<a class="anchor" id="ga45df6a4fb150cda2316b5ae224ba52f1"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void* mdb_env_get_userctx </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__internal.html#structMDB__env">MDB_env</a> *&#160;</td>
          <td class="paramname"><em>env</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Get the application information associated with the <a class="el" href="group__internal.html#structMDB__env" title="Opaque structure for a database environment. ">MDB_env</a>. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">env</td><td>An environment handle returned by <a class="el" href="group__mdb.html#gaad6be3d8dcd4ea01f8df436f41d158d4" title="Create an MDB environment handle. ">mdb_env_create()</a> </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The pointer set by <a class="el" href="group__mdb.html#gaf2fe09eb9c96eeb915a76bf713eecc46" title="Set application information associated with the MDB_env. ">mdb_env_set_userctx()</a>. </dd></dl>

</div>
</div>
<a class="anchor" id="ga6df57850b14a8b3f237ea4dc012a4e0b"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int mdb_env_set_assert </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__internal.html#structMDB__env">MDB_env</a> *&#160;</td>
          <td class="paramname"><em>env</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__mdb.html#ga949ada362b3e84ec0435197056d82371">MDB_assert_func</a> *&#160;</td>
          <td class="paramname"><em>func</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Set or reset the assert() callback of the environment. Disabled if liblmdb is buillt with NDEBUG. </p>
<dl class="section note"><dt>Note</dt><dd>This hack should become obsolete as lmdb's error handling matures. </dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">env</td><td>An environment handle returned by <a class="el" href="group__mdb.html#gaad6be3d8dcd4ea01f8df436f41d158d4" title="Create an MDB environment handle. ">mdb_env_create()</a>. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">func</td><td>An <a class="el" href="group__mdb.html#ga949ada362b3e84ec0435197056d82371" title="A callback function for most MDB assert() failures, called before printing the message and aborting...">MDB_assert_func</a> function, or 0. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A non-zero error value on failure and 0 on success. </dd></dl>

</div>
</div>
<a class="anchor" id="gad7ea55da06b77513609efebd44b26920"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int mdb_txn_begin </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__internal.html#structMDB__env">MDB_env</a> *&#160;</td>
          <td class="paramname"><em>env</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__internal.html#structMDB__txn">MDB_txn</a> *&#160;</td>
          <td class="paramname"><em>parent</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>flags</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__internal.html#structMDB__txn">MDB_txn</a> **&#160;</td>
          <td class="paramname"><em>txn</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Create a transaction for use with the environment. </p>
<p>The transaction handle may be discarded using <a class="el" href="group__mdb.html#ga73a5938ae4c3239ee11efa07eb22b882" title="Abandon all the operations of the transaction instead of saving them. ">mdb_txn_abort()</a> or <a class="el" href="group__mdb.html#ga846fbd6f46105617ac9f4d76476f6597" title="Commit all the operations of a transaction into the database. ">mdb_txn_commit()</a>. </p>
<dl class="section note"><dt>Note</dt><dd>A transaction and its cursors must only be used by a single thread, and a thread may only have a single transaction at a time. If <a class="el" href="group__mdb__env.html#ga5dca84a576d14b4bfe2deddc2dc622d3">MDB_NOTLS</a> is in use, this does not apply to read-only transactions. </dd>
<dd>
Cursors may not span transactions. </dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">env</td><td>An environment handle returned by <a class="el" href="group__mdb.html#gaad6be3d8dcd4ea01f8df436f41d158d4" title="Create an MDB environment handle. ">mdb_env_create()</a> </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">parent</td><td>If this parameter is non-NULL, the new transaction will be a nested transaction, with the transaction indicated by <b>parent</b> as its parent. Transactions may be nested to any level. A parent transaction and its cursors may not issue any other operations than mdb_txn_commit and mdb_txn_abort while it has active child transactions. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">flags</td><td>Special options for this transaction. This parameter must be set to 0 or by bitwise OR'ing together one or more of the values described here. <ul>
<li>
<a class="el" href="group__mdb__env.html#gac4c41c0ae044127b2fc80420c323cac6">MDB_RDONLY</a> This transaction will not perform any write operations. </li>
</ul>
</td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">txn</td><td>Address where the new <a class="el" href="group__internal.html#structMDB__txn" title="Opaque structure for a transaction handle. ">MDB_txn</a> handle will be stored </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A non-zero error value on failure and 0 on success. Some possible errors are: <ul>
<li>
<a class="el" href="group__errors.html#gae37b9aedcb3767faba3de8c1cf6d3473">MDB_PANIC</a> - a fatal error occurred earlier and the environment must be shut down. </li>
<li>
<a class="el" href="group__errors.html#ga75c014faa4f02ffd234a5ee0e14baa92">MDB_MAP_RESIZED</a> - another process wrote data beyond this <a class="el" href="group__internal.html#structMDB__env" title="Opaque structure for a database environment. ">MDB_env</a>'s mapsize and this environment's map must be resized as well. See <a class="el" href="group__mdb.html#gaa2506ec8dab3d969b0e609cd82e619e5" title="Set the size of the memory map to use for this environment. ">mdb_env_set_mapsize()</a>. </li>
<li>
<a class="el" href="group__errors.html#gadd6aaa88823710b97cc44f4f8c160799">MDB_READERS_FULL</a> - a read-only transaction was requested and the reader lock table is full. See <a class="el" href="group__mdb.html#gae687966c24b790630be2a41573fe40e2" title="Set the maximum number of threads/reader slots for the environment. ">mdb_env_set_maxreaders()</a>. </li>
<li>
ENOMEM - out of memory. </li>
</ul>
</dd></dl>

</div>
</div>
<a class="anchor" id="gaeb17735b8aaa2938a78a45cab85c06a0"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__internal.html#structMDB__env">MDB_env</a>* mdb_txn_env </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__internal.html#structMDB__txn">MDB_txn</a> *&#160;</td>
          <td class="paramname"><em>txn</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Returns the transaction's <a class="el" href="group__internal.html#structMDB__env" title="Opaque structure for a database environment. ">MDB_env</a>. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">txn</td><td>A transaction handle returned by <a class="el" href="group__mdb.html#gad7ea55da06b77513609efebd44b26920" title="Create a transaction for use with the environment. ">mdb_txn_begin()</a> </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="ga846fbd6f46105617ac9f4d76476f6597"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int mdb_txn_commit </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__internal.html#structMDB__txn">MDB_txn</a> *&#160;</td>
          <td class="paramname"><em>txn</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Commit all the operations of a transaction into the database. </p>
<p>The transaction handle is freed. It and its cursors must not be used again after this call, except with <a class="el" href="group__mdb.html#gac8b57befb68793070c85ea813df481af" title="Renew a cursor handle. ">mdb_cursor_renew()</a>. </p>
<dl class="section note"><dt>Note</dt><dd>Earlier documentation incorrectly said all cursors would be freed. Only write-transactions free cursors. </dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">txn</td><td>A transaction handle returned by <a class="el" href="group__mdb.html#gad7ea55da06b77513609efebd44b26920" title="Create a transaction for use with the environment. ">mdb_txn_begin()</a> </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A non-zero error value on failure and 0 on success. Some possible errors are: <ul>
<li>
EINVAL - an invalid parameter was specified. </li>
<li>
ENOSPC - no more disk space. </li>
<li>
EIO - a low-level I/O error occurred while writing. </li>
<li>
ENOMEM - out of memory. </li>
</ul>
</dd></dl>

</div>
</div>
<a class="anchor" id="ga73a5938ae4c3239ee11efa07eb22b882"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void mdb_txn_abort </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__internal.html#structMDB__txn">MDB_txn</a> *&#160;</td>
          <td class="paramname"><em>txn</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Abandon all the operations of the transaction instead of saving them. </p>
<p>The transaction handle is freed. It and its cursors must not be used again after this call, except with <a class="el" href="group__mdb.html#gac8b57befb68793070c85ea813df481af" title="Renew a cursor handle. ">mdb_cursor_renew()</a>. </p>
<dl class="section note"><dt>Note</dt><dd>Earlier documentation incorrectly said all cursors would be freed. Only write-transactions free cursors. </dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">txn</td><td>A transaction handle returned by <a class="el" href="group__mdb.html#gad7ea55da06b77513609efebd44b26920" title="Create a transaction for use with the environment. ">mdb_txn_begin()</a> </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="ga02b06706f8a66249769503c4e88c56cd"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void mdb_txn_reset </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__internal.html#structMDB__txn">MDB_txn</a> *&#160;</td>
          <td class="paramname"><em>txn</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Reset a read-only transaction. </p>
<p>Abort the transaction like <a class="el" href="group__mdb.html#ga73a5938ae4c3239ee11efa07eb22b882" title="Abandon all the operations of the transaction instead of saving them. ">mdb_txn_abort()</a>, but keep the transaction handle. <a class="el" href="group__mdb.html#ga6c6f917959517ede1c504cf7c720ce6d" title="Renew a read-only transaction. ">mdb_txn_renew()</a> may reuse the handle. This saves allocation overhead if the process will start a new read-only transaction soon, and also locking overhead if <a class="el" href="group__mdb__env.html#ga5dca84a576d14b4bfe2deddc2dc622d3">MDB_NOTLS</a> is in use. The reader table lock is released, but the table slot stays tied to its thread or <a class="el" href="group__internal.html#structMDB__txn" title="Opaque structure for a transaction handle. ">MDB_txn</a>. Use <a class="el" href="group__mdb.html#ga73a5938ae4c3239ee11efa07eb22b882" title="Abandon all the operations of the transaction instead of saving them. ">mdb_txn_abort()</a> to discard a reset handle, and to free its lock table slot if MDB_NOTLS is in use. Cursors opened within the transaction must not be used again after this call, except with <a class="el" href="group__mdb.html#gac8b57befb68793070c85ea813df481af" title="Renew a cursor handle. ">mdb_cursor_renew()</a>. Reader locks generally don't interfere with writers, but they keep old versions of database pages allocated. Thus they prevent the old pages from being reused when writers commit new data, and so under heavy load the database size may grow much more rapidly than otherwise. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">txn</td><td>A transaction handle returned by <a class="el" href="group__mdb.html#gad7ea55da06b77513609efebd44b26920" title="Create a transaction for use with the environment. ">mdb_txn_begin()</a> </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="ga6c6f917959517ede1c504cf7c720ce6d"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int mdb_txn_renew </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__internal.html#structMDB__txn">MDB_txn</a> *&#160;</td>
          <td class="paramname"><em>txn</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Renew a read-only transaction. </p>
<p>This acquires a new reader lock for a transaction handle that had been released by <a class="el" href="group__mdb.html#ga02b06706f8a66249769503c4e88c56cd" title="Reset a read-only transaction. ">mdb_txn_reset()</a>. It must be called before a reset transaction may be used again. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">txn</td><td>A transaction handle returned by <a class="el" href="group__mdb.html#gad7ea55da06b77513609efebd44b26920" title="Create a transaction for use with the environment. ">mdb_txn_begin()</a> </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A non-zero error value on failure and 0 on success. Some possible errors are: <ul>
<li>
<a class="el" href="group__errors.html#gae37b9aedcb3767faba3de8c1cf6d3473">MDB_PANIC</a> - a fatal error occurred earlier and the environment must be shut down. </li>
<li>
EINVAL - an invalid parameter was specified. </li>
</ul>
</dd></dl>

</div>
</div>
<a class="anchor" id="gac08cad5b096925642ca359a6d6f0562a"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int mdb_dbi_open </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__internal.html#structMDB__txn">MDB_txn</a> *&#160;</td>
          <td class="paramname"><em>txn</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>name</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>flags</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__mdb.html#gadbe68a06c448dfb62da16443d251a78b">MDB_dbi</a> *&#160;</td>
          <td class="paramname"><em>dbi</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Open a database in the environment. </p>
<p>A database handle denotes the name and parameters of a database, independently of whether such a database exists. The database handle may be discarded by calling <a class="el" href="group__mdb.html#ga52dd98d0c542378370cd6b712ff961b5" title="Close a database handle. Normally unnecessary. Use with care: ">mdb_dbi_close()</a>. The old database handle is returned if the database was already open. The handle may only be closed once. The database handle will be private to the current transaction until the transaction is successfully committed. If the transaction is aborted the handle will be closed automatically. After a successful commit the handle will reside in the shared environment, and may be used by other transactions. This function must not be called from multiple concurrent transactions. A transaction that uses this function must finish (either commit or abort) before any other transaction may use this function.</p>
<p>To use named databases (with name != NULL), <a class="el" href="group__mdb.html#gaa2fc2f1f37cb1115e733b62cab2fcdbc" title="Set the maximum number of named databases for the environment. ">mdb_env_set_maxdbs()</a> must be called before opening the environment. Database names are kept as keys in the unnamed database. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">txn</td><td>A transaction handle returned by <a class="el" href="group__mdb.html#gad7ea55da06b77513609efebd44b26920" title="Create a transaction for use with the environment. ">mdb_txn_begin()</a> </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">name</td><td>The name of the database to open. If only a single database is needed in the environment, this value may be NULL. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">flags</td><td>Special options for this database. This parameter must be set to 0 or by bitwise OR'ing together one or more of the values described here. <ul>
<li>
<a class="el" href="group__mdb__dbi__open.html#gaea2d873575b7875771ea5296b4c85beb">MDB_REVERSEKEY</a> Keys are strings to be compared in reverse order, from the end of the strings to the beginning. By default, Keys are treated as strings and compared from beginning to end. </li>
<li>
<a class="el" href="group__mdb__dbi__open.html#gae0626566c2562e9007f5c8c9535bab1a">MDB_DUPSORT</a> Duplicate keys may be used in the database. (Or, from another perspective, keys may have multiple data items, stored in sorted order.) By default keys must be unique and may have only a single data item. </li>
<li>
<a class="el" href="group__mdb__dbi__open.html#ga219c5c50d41902fca79c68d8836e7753">MDB_INTEGERKEY</a> Keys are binary integers in native byte order. Setting this option requires all keys to be the same size, typically sizeof(int) or sizeof(size_t). </li>
<li>
<a class="el" href="group__mdb__dbi__open.html#ga5acc26f80668d1ebc31265d178c69338">MDB_DUPFIXED</a> This flag may only be used in combination with <a class="el" href="group__mdb__dbi__open.html#gae0626566c2562e9007f5c8c9535bab1a">MDB_DUPSORT</a>. This option tells the library that the data items for this database are all the same size, which allows further optimizations in storage and retrieval. When all data items are the same size, the <a class="el" href="group__mdb.html#gga1206b2af8b95e7f6b0ef6b28708c9127aadfff65301fefedcb29d612a721717a1">MDB_GET_MULTIPLE</a> and <a class="el" href="group__mdb.html#gga1206b2af8b95e7f6b0ef6b28708c9127a37d22eecd320d77fbba9f905483f99e5">MDB_NEXT_MULTIPLE</a> cursor operations may be used to retrieve multiple items at once. </li>
<li>
<a class="el" href="group__mdb__dbi__open.html#gad9b1b4e231bf2e4fa8d7f90be8ba2765">MDB_INTEGERDUP</a> This option specifies that duplicate data items are also integers, and should be sorted as such. </li>
<li>
<a class="el" href="group__mdb__dbi__open.html#gaf99ce592b75d65e23503f78a7933c297">MDB_REVERSEDUP</a> This option specifies that duplicate data items should be compared as strings in reverse order. </li>
<li>
<a class="el" href="group__mdb__dbi__open.html#gafd47620cff55fb3ec7cd7501d4d1cb4a">MDB_CREATE</a> Create the named database if it doesn't exist. This option is not allowed in a read-only transaction or a read-only environment. </li>
</ul>
</td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">dbi</td><td>Address where the new <a class="el" href="group__mdb.html#gadbe68a06c448dfb62da16443d251a78b" title="A handle for an individual database in the DB environment. ">MDB_dbi</a> handle will be stored </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A non-zero error value on failure and 0 on success. Some possible errors are: <ul>
<li>
<a class="el" href="group__errors.html#gabeb52e4c4be21b329e31c4add1b71926">MDB_NOTFOUND</a> - the specified database doesn't exist in the environment and <a class="el" href="group__mdb__dbi__open.html#gafd47620cff55fb3ec7cd7501d4d1cb4a">MDB_CREATE</a> was not specified. </li>
<li>
<a class="el" href="group__errors.html#ga6288de36b58badda2e5a64ecddd1da70">MDB_DBS_FULL</a> - too many databases have been opened. See <a class="el" href="group__mdb.html#gaa2fc2f1f37cb1115e733b62cab2fcdbc" title="Set the maximum number of named databases for the environment. ">mdb_env_set_maxdbs()</a>. </li>
</ul>
</dd></dl>

</div>
</div>
<a class="anchor" id="gae6c1069febe94299769dbdd032fadef6"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int mdb_stat </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__internal.html#structMDB__txn">MDB_txn</a> *&#160;</td>
          <td class="paramname"><em>txn</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__mdb.html#gadbe68a06c448dfb62da16443d251a78b">MDB_dbi</a>&#160;</td>
          <td class="paramname"><em>dbi</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__mdb.html#structMDB__stat">MDB_stat</a> *&#160;</td>
          <td class="paramname"><em>stat</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Retrieve statistics for a database. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">txn</td><td>A transaction handle returned by <a class="el" href="group__mdb.html#gad7ea55da06b77513609efebd44b26920" title="Create a transaction for use with the environment. ">mdb_txn_begin()</a> </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">dbi</td><td>A database handle returned by <a class="el" href="group__mdb.html#gac08cad5b096925642ca359a6d6f0562a" title="Open a database in the environment. ">mdb_dbi_open()</a> </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">stat</td><td>The address of an <a class="el" href="group__mdb.html#structMDB__stat" title="Statistics for a database in the environment. ">MDB_stat</a> structure where the statistics will be copied </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A non-zero error value on failure and 0 on success. Some possible errors are: <ul>
<li>
EINVAL - an invalid parameter was specified. </li>
</ul>
</dd></dl>

</div>
</div>
<a class="anchor" id="ga95ba4cb721035478a8705e57b91ae4d4"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int mdb_dbi_flags </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__internal.html#structMDB__txn">MDB_txn</a> *&#160;</td>
          <td class="paramname"><em>txn</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__mdb.html#gadbe68a06c448dfb62da16443d251a78b">MDB_dbi</a>&#160;</td>
          <td class="paramname"><em>dbi</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int *&#160;</td>
          <td class="paramname"><em>flags</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Retrieve the DB flags for a database handle. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">txn</td><td>A transaction handle returned by <a class="el" href="group__mdb.html#gad7ea55da06b77513609efebd44b26920" title="Create a transaction for use with the environment. ">mdb_txn_begin()</a> </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">dbi</td><td>A database handle returned by <a class="el" href="group__mdb.html#gac08cad5b096925642ca359a6d6f0562a" title="Open a database in the environment. ">mdb_dbi_open()</a> </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">flags</td><td>Address where the flags will be returned. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A non-zero error value on failure and 0 on success. </dd></dl>

</div>
</div>
<a class="anchor" id="ga52dd98d0c542378370cd6b712ff961b5"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void mdb_dbi_close </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__internal.html#structMDB__env">MDB_env</a> *&#160;</td>
          <td class="paramname"><em>env</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__mdb.html#gadbe68a06c448dfb62da16443d251a78b">MDB_dbi</a>&#160;</td>
          <td class="paramname"><em>dbi</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Close a database handle. Normally unnecessary. Use with care: </p>
<p>This call is not mutex protected. Handles should only be closed by a single thread, and only if no other threads are going to reference the database handle or one of its cursors any further. Do not close a handle if an existing transaction has modified its database. Doing so can cause misbehavior from database corruption to errors like MDB_BAD_VALSIZE (since the DB name is gone).</p>
<p>Closing a database handle is not necessary, but lets <a class="el" href="group__mdb.html#gac08cad5b096925642ca359a6d6f0562a" title="Open a database in the environment. ">mdb_dbi_open()</a> reuse the handle value. Usually it's better to set a bigger <a class="el" href="group__mdb.html#gaa2fc2f1f37cb1115e733b62cab2fcdbc" title="Set the maximum number of named databases for the environment. ">mdb_env_set_maxdbs()</a>, unless that value would be large.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">env</td><td>An environment handle returned by <a class="el" href="group__mdb.html#gaad6be3d8dcd4ea01f8df436f41d158d4" title="Create an MDB environment handle. ">mdb_env_create()</a> </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">dbi</td><td>A database handle returned by <a class="el" href="group__mdb.html#gac08cad5b096925642ca359a6d6f0562a" title="Open a database in the environment. ">mdb_dbi_open()</a> </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="gab966fab3840fc54a6571dfb32b00f2db"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int mdb_drop </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__internal.html#structMDB__txn">MDB_txn</a> *&#160;</td>
          <td class="paramname"><em>txn</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__mdb.html#gadbe68a06c448dfb62da16443d251a78b">MDB_dbi</a>&#160;</td>
          <td class="paramname"><em>dbi</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>del</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Empty or delete+close a database. </p>
<p>See <a class="el" href="group__mdb.html#ga52dd98d0c542378370cd6b712ff961b5" title="Close a database handle. Normally unnecessary. Use with care: ">mdb_dbi_close()</a> for restrictions about closing the DB handle. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">txn</td><td>A transaction handle returned by <a class="el" href="group__mdb.html#gad7ea55da06b77513609efebd44b26920" title="Create a transaction for use with the environment. ">mdb_txn_begin()</a> </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">dbi</td><td>A database handle returned by <a class="el" href="group__mdb.html#gac08cad5b096925642ca359a6d6f0562a" title="Open a database in the environment. ">mdb_dbi_open()</a> </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">del</td><td>0 to empty the DB, 1 to delete it from the environment and close the DB handle. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A non-zero error value on failure and 0 on success. </dd></dl>

</div>
</div>
<a class="anchor" id="ga68e47ffcf72eceec553c72b1784ee0fe"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int mdb_set_compare </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__internal.html#structMDB__txn">MDB_txn</a> *&#160;</td>
          <td class="paramname"><em>txn</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__mdb.html#gadbe68a06c448dfb62da16443d251a78b">MDB_dbi</a>&#160;</td>
          <td class="paramname"><em>dbi</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__mdb.html#gaa8e6e7a6f99bd7142947c48f0c4b970f">MDB_cmp_func</a> *&#160;</td>
          <td class="paramname"><em>cmp</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Set a custom key comparison function for a database. </p>
<p>The comparison function is called whenever it is necessary to compare a key specified by the application with a key currently stored in the database. If no comparison function is specified, and no special key flags were specified with <a class="el" href="group__mdb.html#gac08cad5b096925642ca359a6d6f0562a" title="Open a database in the environment. ">mdb_dbi_open()</a>, the keys are compared lexically, with shorter keys collating before longer keys. </p>
<dl class="section warning"><dt>Warning</dt><dd>This function must be called before any data access functions are used, otherwise data corruption may occur. The same comparison function must be used by every program accessing the database, every time the database is used. </dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">txn</td><td>A transaction handle returned by <a class="el" href="group__mdb.html#gad7ea55da06b77513609efebd44b26920" title="Create a transaction for use with the environment. ">mdb_txn_begin()</a> </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">dbi</td><td>A database handle returned by <a class="el" href="group__mdb.html#gac08cad5b096925642ca359a6d6f0562a" title="Open a database in the environment. ">mdb_dbi_open()</a> </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">cmp</td><td>A <a class="el" href="group__mdb.html#gaa8e6e7a6f99bd7142947c48f0c4b970f" title="A callback function used to compare two keys in a database. ">MDB_cmp_func</a> function </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A non-zero error value on failure and 0 on success. Some possible errors are: <ul>
<li>
EINVAL - an invalid parameter was specified. </li>
</ul>
</dd></dl>

</div>
</div>
<a class="anchor" id="gacef4ec3dab0bbd9bc978b73c19c879ae"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int mdb_set_dupsort </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__internal.html#structMDB__txn">MDB_txn</a> *&#160;</td>
          <td class="paramname"><em>txn</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__mdb.html#gadbe68a06c448dfb62da16443d251a78b">MDB_dbi</a>&#160;</td>
          <td class="paramname"><em>dbi</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__mdb.html#gaa8e6e7a6f99bd7142947c48f0c4b970f">MDB_cmp_func</a> *&#160;</td>
          <td class="paramname"><em>cmp</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Set a custom data comparison function for a <a class="el" href="group__mdb__dbi__open.html#gae0626566c2562e9007f5c8c9535bab1a">MDB_DUPSORT</a> database. </p>
<p>This comparison function is called whenever it is necessary to compare a data item specified by the application with a data item currently stored in the database. This function only takes effect if the database was opened with the <a class="el" href="group__mdb__dbi__open.html#gae0626566c2562e9007f5c8c9535bab1a">MDB_DUPSORT</a> flag. If no comparison function is specified, and no special key flags were specified with <a class="el" href="group__mdb.html#gac08cad5b096925642ca359a6d6f0562a" title="Open a database in the environment. ">mdb_dbi_open()</a>, the data items are compared lexically, with shorter items collating before longer items. </p>
<dl class="section warning"><dt>Warning</dt><dd>This function must be called before any data access functions are used, otherwise data corruption may occur. The same comparison function must be used by every program accessing the database, every time the database is used. </dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">txn</td><td>A transaction handle returned by <a class="el" href="group__mdb.html#gad7ea55da06b77513609efebd44b26920" title="Create a transaction for use with the environment. ">mdb_txn_begin()</a> </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">dbi</td><td>A database handle returned by <a class="el" href="group__mdb.html#gac08cad5b096925642ca359a6d6f0562a" title="Open a database in the environment. ">mdb_dbi_open()</a> </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">cmp</td><td>A <a class="el" href="group__mdb.html#gaa8e6e7a6f99bd7142947c48f0c4b970f" title="A callback function used to compare two keys in a database. ">MDB_cmp_func</a> function </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A non-zero error value on failure and 0 on success. Some possible errors are: <ul>
<li>
EINVAL - an invalid parameter was specified. </li>
</ul>
</dd></dl>

</div>
</div>
<a class="anchor" id="ga697d82c7afe79f142207ad5adcdebfeb"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int mdb_set_relfunc </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__internal.html#structMDB__txn">MDB_txn</a> *&#160;</td>
          <td class="paramname"><em>txn</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__mdb.html#gadbe68a06c448dfb62da16443d251a78b">MDB_dbi</a>&#160;</td>
          <td class="paramname"><em>dbi</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__mdb.html#gaf6dfd3df8c5c6f082c5befc585165747">MDB_rel_func</a> *&#160;</td>
          <td class="paramname"><em>rel</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Set a relocation function for a <a class="el" href="group__mdb__env.html#ga492952277c481bc4a6fa08ef71c29487">MDB_FIXEDMAP</a> database. </p>
<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000002">Todo:</a></b></dt><dd>The relocation function is called whenever it is necessary to move the data of an item to a different position in the database (e.g. through tree balancing operations, shifts as a result of adds or deletes, etc.). It is intended to allow address/position-dependent data items to be stored in a database in an environment opened with the <a class="el" href="group__mdb__env.html#ga492952277c481bc4a6fa08ef71c29487">MDB_FIXEDMAP</a> option. Currently the relocation feature is unimplemented and setting this function has no effect. <dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">txn</td><td>A transaction handle returned by <a class="el" href="group__mdb.html#gad7ea55da06b77513609efebd44b26920" title="Create a transaction for use with the environment. ">mdb_txn_begin()</a> </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">dbi</td><td>A database handle returned by <a class="el" href="group__mdb.html#gac08cad5b096925642ca359a6d6f0562a" title="Open a database in the environment. ">mdb_dbi_open()</a> </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">rel</td><td>A <a class="el" href="group__mdb.html#gaf6dfd3df8c5c6f082c5befc585165747" title="A callback function used to relocate a position-dependent data item in a fixed-address database...">MDB_rel_func</a> function </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A non-zero error value on failure and 0 on success. Some possible errors are: </dd></dl>
</dd></dl>
<ul>
<li>
EINVAL - an invalid parameter was specified. </li>
</ul>

</div>
</div>
<a class="anchor" id="ga7c34246308cee01724a1839a8f5cc594"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int mdb_set_relctx </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__internal.html#structMDB__txn">MDB_txn</a> *&#160;</td>
          <td class="paramname"><em>txn</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__mdb.html#gadbe68a06c448dfb62da16443d251a78b">MDB_dbi</a>&#160;</td>
          <td class="paramname"><em>dbi</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>ctx</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Set a context pointer for a <a class="el" href="group__mdb__env.html#ga492952277c481bc4a6fa08ef71c29487">MDB_FIXEDMAP</a> database's relocation function. </p>
<p>See <a class="el" href="group__mdb.html#ga697d82c7afe79f142207ad5adcdebfeb" title="Set a relocation function for a MDB_FIXEDMAP database. ">mdb_set_relfunc</a> and <a class="el" href="group__mdb.html#gaf6dfd3df8c5c6f082c5befc585165747" title="A callback function used to relocate a position-dependent data item in a fixed-address database...">MDB_rel_func</a> for more details. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">txn</td><td>A transaction handle returned by <a class="el" href="group__mdb.html#gad7ea55da06b77513609efebd44b26920" title="Create a transaction for use with the environment. ">mdb_txn_begin()</a> </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">dbi</td><td>A database handle returned by <a class="el" href="group__mdb.html#gac08cad5b096925642ca359a6d6f0562a" title="Open a database in the environment. ">mdb_dbi_open()</a> </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">ctx</td><td>An arbitrary pointer for whatever the application needs. It will be passed to the callback function set by <a class="el" href="group__mdb.html#ga697d82c7afe79f142207ad5adcdebfeb" title="Set a relocation function for a MDB_FIXEDMAP database. ">mdb_set_relfunc</a> as its <b>relctx</b> parameter whenever the callback is invoked. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A non-zero error value on failure and 0 on success. Some possible errors are: <ul>
<li>
EINVAL - an invalid parameter was specified. </li>
</ul>
</dd></dl>

</div>
</div>
<a class="anchor" id="ga8bf10cd91d3f3a83a34d04ce6b07992d"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int mdb_get </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__internal.html#structMDB__txn">MDB_txn</a> *&#160;</td>
          <td class="paramname"><em>txn</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__mdb.html#gadbe68a06c448dfb62da16443d251a78b">MDB_dbi</a>&#160;</td>
          <td class="paramname"><em>dbi</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__mdb.html#structMDB__val">MDB_val</a> *&#160;</td>
          <td class="paramname"><em>key</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__mdb.html#structMDB__val">MDB_val</a> *&#160;</td>
          <td class="paramname"><em>data</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Get items from a database. </p>
<p>This function retrieves key/data pairs from the database. The address and length of the data associated with the specified <b>key</b> are returned in the structure to which <b>data</b> refers. If the database supports duplicate keys (<a class="el" href="group__mdb__dbi__open.html#gae0626566c2562e9007f5c8c9535bab1a">MDB_DUPSORT</a>) then the first data item for the key will be returned. Retrieval of other items requires the use of <a class="el" href="group__mdb.html#ga48df35fb102536b32dfbb801a47b4cb0" title="Retrieve by cursor. ">mdb_cursor_get()</a>.</p>
<dl class="section note"><dt>Note</dt><dd>The memory pointed to by the returned values is owned by the database. The caller need not dispose of the memory, and may not modify it in any way. For values returned in a read-only transaction any modification attempts will cause a SIGSEGV. </dd>
<dd>
Values returned from the database are valid only until a subsequent update operation, or the end of the transaction. </dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">txn</td><td>A transaction handle returned by <a class="el" href="group__mdb.html#gad7ea55da06b77513609efebd44b26920" title="Create a transaction for use with the environment. ">mdb_txn_begin()</a> </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">dbi</td><td>A database handle returned by <a class="el" href="group__mdb.html#gac08cad5b096925642ca359a6d6f0562a" title="Open a database in the environment. ">mdb_dbi_open()</a> </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">key</td><td>The key to search for in the database </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">data</td><td>The data corresponding to the key </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A non-zero error value on failure and 0 on success. Some possible errors are: <ul>
<li>
<a class="el" href="group__errors.html#gabeb52e4c4be21b329e31c4add1b71926">MDB_NOTFOUND</a> - the key was not in the database. </li>
<li>
EINVAL - an invalid parameter was specified. </li>
</ul>
</dd></dl>

</div>
</div>
<a class="anchor" id="ga4fa8573d9236d54687c61827ebf8cac0"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int mdb_put </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__internal.html#structMDB__txn">MDB_txn</a> *&#160;</td>
          <td class="paramname"><em>txn</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__mdb.html#gadbe68a06c448dfb62da16443d251a78b">MDB_dbi</a>&#160;</td>
          <td class="paramname"><em>dbi</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__mdb.html#structMDB__val">MDB_val</a> *&#160;</td>
          <td class="paramname"><em>key</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__mdb.html#structMDB__val">MDB_val</a> *&#160;</td>
          <td class="paramname"><em>data</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>flags</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Store items into a database. </p>
<p>This function stores key/data pairs in the database. The default behavior is to enter the new key/data pair, replacing any previously existing key if duplicates are disallowed, or adding a duplicate data item if duplicates are allowed (<a class="el" href="group__mdb__dbi__open.html#gae0626566c2562e9007f5c8c9535bab1a">MDB_DUPSORT</a>). </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">txn</td><td>A transaction handle returned by <a class="el" href="group__mdb.html#gad7ea55da06b77513609efebd44b26920" title="Create a transaction for use with the environment. ">mdb_txn_begin()</a> </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">dbi</td><td>A database handle returned by <a class="el" href="group__mdb.html#gac08cad5b096925642ca359a6d6f0562a" title="Open a database in the environment. ">mdb_dbi_open()</a> </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">key</td><td>The key to store in the database </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">data</td><td>The data to store </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">flags</td><td>Special options for this operation. This parameter must be set to 0 or by bitwise OR'ing together one or more of the values described here. <ul>
<li>
<a class="el" href="group__mdb__put.html#ga8d723ae10cf0afdc771ce5eafa8f6c9e">MDB_NODUPDATA</a> - enter the new key/data pair only if it does not already appear in the database. This flag may only be specified if the database was opened with <a class="el" href="group__mdb__dbi__open.html#gae0626566c2562e9007f5c8c9535bab1a">MDB_DUPSORT</a>. The function will return <a class="el" href="group__errors.html#ga05dc5bbcc7da81a7345bd8676e8e0e3b">MDB_KEYEXIST</a> if the key/data pair already appears in the database. </li>
<li>
<a class="el" href="group__mdb__put.html#ga23eb9813f9a4cdf7a7da5e01815b0cfb">MDB_NOOVERWRITE</a> - enter the new key/data pair only if the key does not already appear in the database. The function will return <a class="el" href="group__errors.html#ga05dc5bbcc7da81a7345bd8676e8e0e3b">MDB_KEYEXIST</a> if the key already appears in the database, even if the database supports duplicates (<a class="el" href="group__mdb__dbi__open.html#gae0626566c2562e9007f5c8c9535bab1a">MDB_DUPSORT</a>). The <b>data</b> parameter will be set to point to the existing item. </li>
<li>
<a class="el" href="group__mdb__put.html#gac0545c6aea719991e3eae6ccc686efcc">MDB_RESERVE</a> - reserve space for data of the given size, but don't copy the given data. Instead, return a pointer to the reserved space, which the caller can fill in later - before the next update operation or the transaction ends. This saves an extra memcpy if the data is being generated later. MDB does nothing else with this memory, the caller is expected to modify all of the space requested. </li>
<li>
<a class="el" href="group__mdb__put.html#ga06af7a6e87588fd723e2dd1d7e580e6a">MDB_APPEND</a> - append the given key/data pair to the end of the database. No key comparisons are performed. This option allows fast bulk loading when keys are already known to be in the correct order. Loading unsorted keys with this flag will cause data corruption. </li>
<li>
<a class="el" href="group__mdb__put.html#ga0583fe408057ff1c03b8dd071c0d68d2">MDB_APPENDDUP</a> - as above, but for sorted dup data. </li>
</ul>
</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A non-zero error value on failure and 0 on success. Some possible errors are: <ul>
<li>
<a class="el" href="group__errors.html#ga0a83370402a060c9175100d4bbfb9f25">MDB_MAP_FULL</a> - the database is full, see <a class="el" href="group__mdb.html#gaa2506ec8dab3d969b0e609cd82e619e5" title="Set the size of the memory map to use for this environment. ">mdb_env_set_mapsize()</a>. </li>
<li>
<a class="el" href="group__errors.html#gacba5cdc8618093f59d0339e88e69570e">MDB_TXN_FULL</a> - the transaction has too many dirty pages. </li>
<li>
EACCES - an attempt was made to write in a read-only transaction. </li>
<li>
EINVAL - an invalid parameter was specified. </li>
</ul>
</dd></dl>

</div>
</div>
<a class="anchor" id="gab8182f9360ea69ac0afd4a4eaab1ddb0"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int mdb_del </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__internal.html#structMDB__txn">MDB_txn</a> *&#160;</td>
          <td class="paramname"><em>txn</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__mdb.html#gadbe68a06c448dfb62da16443d251a78b">MDB_dbi</a>&#160;</td>
          <td class="paramname"><em>dbi</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__mdb.html#structMDB__val">MDB_val</a> *&#160;</td>
          <td class="paramname"><em>key</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__mdb.html#structMDB__val">MDB_val</a> *&#160;</td>
          <td class="paramname"><em>data</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Delete items from a database. </p>
<p>This function removes key/data pairs from the database. If the database does not support sorted duplicate data items (<a class="el" href="group__mdb__dbi__open.html#gae0626566c2562e9007f5c8c9535bab1a">MDB_DUPSORT</a>) the data parameter is ignored. If the database supports sorted duplicates and the data parameter is NULL, all of the duplicate data items for the key will be deleted. Otherwise, if the data parameter is non-NULL only the matching data item will be deleted. This function will return <a class="el" href="group__errors.html#gabeb52e4c4be21b329e31c4add1b71926">MDB_NOTFOUND</a> if the specified key/data pair is not in the database. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">txn</td><td>A transaction handle returned by <a class="el" href="group__mdb.html#gad7ea55da06b77513609efebd44b26920" title="Create a transaction for use with the environment. ">mdb_txn_begin()</a> </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">dbi</td><td>A database handle returned by <a class="el" href="group__mdb.html#gac08cad5b096925642ca359a6d6f0562a" title="Open a database in the environment. ">mdb_dbi_open()</a> </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">key</td><td>The key to delete from the database </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">data</td><td>The data to delete </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A non-zero error value on failure and 0 on success. Some possible errors are: <ul>
<li>
EACCES - an attempt was made to write in a read-only transaction. </li>
<li>
EINVAL - an invalid parameter was specified. </li>
</ul>
</dd></dl>

</div>
</div>
<a class="anchor" id="ga9ff5d7bd42557fd5ee235dc1d62613aa"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int mdb_cursor_open </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__internal.html#structMDB__txn">MDB_txn</a> *&#160;</td>
          <td class="paramname"><em>txn</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__mdb.html#gadbe68a06c448dfb62da16443d251a78b">MDB_dbi</a>&#160;</td>
          <td class="paramname"><em>dbi</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__internal.html#structMDB__cursor">MDB_cursor</a> **&#160;</td>
          <td class="paramname"><em>cursor</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Create a cursor handle. </p>
<p>A cursor is associated with a specific transaction and database. A cursor cannot be used when its database handle is closed. Nor when its transaction has ended, except with <a class="el" href="group__mdb.html#gac8b57befb68793070c85ea813df481af" title="Renew a cursor handle. ">mdb_cursor_renew()</a>. It can be discarded with <a class="el" href="group__mdb.html#gad685f5d73c052715c7bd859cc4c05188" title="Close a cursor handle. ">mdb_cursor_close()</a>. A cursor in a write-transaction can be closed before its transaction ends, and will otherwise be closed when its transaction ends. A cursor in a read-only transaction must be closed explicitly, before or after its transaction ends. It can be reused with <a class="el" href="group__mdb.html#gac8b57befb68793070c85ea813df481af" title="Renew a cursor handle. ">mdb_cursor_renew()</a> before finally closing it. </p>
<dl class="section note"><dt>Note</dt><dd>Earlier documentation said that cursors in every transaction were closed when the transaction committed or aborted. </dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">txn</td><td>A transaction handle returned by <a class="el" href="group__mdb.html#gad7ea55da06b77513609efebd44b26920" title="Create a transaction for use with the environment. ">mdb_txn_begin()</a> </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">dbi</td><td>A database handle returned by <a class="el" href="group__mdb.html#gac08cad5b096925642ca359a6d6f0562a" title="Open a database in the environment. ">mdb_dbi_open()</a> </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">cursor</td><td>Address where the new <a class="el" href="group__internal.html#structMDB__cursor" title="Opaque structure for navigating through a database. ">MDB_cursor</a> handle will be stored </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A non-zero error value on failure and 0 on success. Some possible errors are: <ul>
<li>
EINVAL - an invalid parameter was specified. </li>
</ul>
</dd></dl>

</div>
</div>
<a class="anchor" id="gad685f5d73c052715c7bd859cc4c05188"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void mdb_cursor_close </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__internal.html#structMDB__cursor">MDB_cursor</a> *&#160;</td>
          <td class="paramname"><em>cursor</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Close a cursor handle. </p>
<p>The cursor handle will be freed and must not be used again after this call. Its transaction must still be live if it is a write-transaction. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">cursor</td><td>A cursor handle returned by <a class="el" href="group__mdb.html#ga9ff5d7bd42557fd5ee235dc1d62613aa" title="Create a cursor handle. ">mdb_cursor_open()</a> </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="gac8b57befb68793070c85ea813df481af"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int mdb_cursor_renew </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__internal.html#structMDB__txn">MDB_txn</a> *&#160;</td>
          <td class="paramname"><em>txn</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__internal.html#structMDB__cursor">MDB_cursor</a> *&#160;</td>
          <td class="paramname"><em>cursor</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Renew a cursor handle. </p>
<p>A cursor is associated with a specific transaction and database. Cursors that are only used in read-only transactions may be re-used, to avoid unnecessary malloc/free overhead. The cursor may be associated with a new read-only transaction, and referencing the same database handle as it was created with. This may be done whether the previous transaction is live or dead. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">txn</td><td>A transaction handle returned by <a class="el" href="group__mdb.html#gad7ea55da06b77513609efebd44b26920" title="Create a transaction for use with the environment. ">mdb_txn_begin()</a> </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">cursor</td><td>A cursor handle returned by <a class="el" href="group__mdb.html#ga9ff5d7bd42557fd5ee235dc1d62613aa" title="Create a cursor handle. ">mdb_cursor_open()</a> </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A non-zero error value on failure and 0 on success. Some possible errors are: <ul>
<li>
EINVAL - an invalid parameter was specified. </li>
</ul>
</dd></dl>

</div>
</div>
<a class="anchor" id="ga7bf0d458f7f36b5232fcb368ebda79e0"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__internal.html#structMDB__txn">MDB_txn</a>* mdb_cursor_txn </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__internal.html#structMDB__cursor">MDB_cursor</a> *&#160;</td>
          <td class="paramname"><em>cursor</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Return the cursor's transaction handle. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">cursor</td><td>A cursor handle returned by <a class="el" href="group__mdb.html#ga9ff5d7bd42557fd5ee235dc1d62613aa" title="Create a cursor handle. ">mdb_cursor_open()</a> </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="ga2f7092cf70ee816fb3d2c3267a732372"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__mdb.html#gadbe68a06c448dfb62da16443d251a78b">MDB_dbi</a> mdb_cursor_dbi </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__internal.html#structMDB__cursor">MDB_cursor</a> *&#160;</td>
          <td class="paramname"><em>cursor</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Return the cursor's database handle. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">cursor</td><td>A cursor handle returned by <a class="el" href="group__mdb.html#ga9ff5d7bd42557fd5ee235dc1d62613aa" title="Create a cursor handle. ">mdb_cursor_open()</a> </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="ga48df35fb102536b32dfbb801a47b4cb0"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int mdb_cursor_get </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__internal.html#structMDB__cursor">MDB_cursor</a> *&#160;</td>
          <td class="paramname"><em>cursor</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__mdb.html#structMDB__val">MDB_val</a> *&#160;</td>
          <td class="paramname"><em>key</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__mdb.html#structMDB__val">MDB_val</a> *&#160;</td>
          <td class="paramname"><em>data</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__mdb.html#ga1206b2af8b95e7f6b0ef6b28708c9127">MDB_cursor_op</a>&#160;</td>
          <td class="paramname"><em>op</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Retrieve by cursor. </p>
<p>This function retrieves key/data pairs from the database. The address and length of the key are returned in the object to which <b>key</b> refers (except for the case of the <a class="el" href="group__mdb.html#gga1206b2af8b95e7f6b0ef6b28708c9127a0e2a8c96dea14b11fa8dee617ccc1d7e">MDB_SET</a> option, in which the <b>key</b> object is unchanged), and the address and length of the data are returned in the object to which <b>data</b> refers. See <a class="el" href="group__mdb.html#ga8bf10cd91d3f3a83a34d04ce6b07992d" title="Get items from a database. ">mdb_get()</a> for restrictions on using the output values. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">cursor</td><td>A cursor handle returned by <a class="el" href="group__mdb.html#ga9ff5d7bd42557fd5ee235dc1d62613aa" title="Create a cursor handle. ">mdb_cursor_open()</a> </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">key</td><td>The key for a retrieved item </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">data</td><td>The data of a retrieved item </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">op</td><td>A cursor operation <a class="el" href="group__mdb.html#ga1206b2af8b95e7f6b0ef6b28708c9127" title="Cursor Get operations. ">MDB_cursor_op</a> </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A non-zero error value on failure and 0 on success. Some possible errors are: <ul>
<li>
<a class="el" href="group__errors.html#gabeb52e4c4be21b329e31c4add1b71926">MDB_NOTFOUND</a> - no matching key found. </li>
<li>
EINVAL - an invalid parameter was specified. </li>
</ul>
</dd></dl>

</div>
</div>
<a class="anchor" id="ga1f83ccb40011837ff37cc32be01ad91e"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int mdb_cursor_put </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__internal.html#structMDB__cursor">MDB_cursor</a> *&#160;</td>
          <td class="paramname"><em>cursor</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__mdb.html#structMDB__val">MDB_val</a> *&#160;</td>
          <td class="paramname"><em>key</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__mdb.html#structMDB__val">MDB_val</a> *&#160;</td>
          <td class="paramname"><em>data</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>flags</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Store by cursor. </p>
<p>This function stores key/data pairs into the database. The cursor is positioned at the new item, or on failure usually near it. </p>
<dl class="section note"><dt>Note</dt><dd>Earlier documentation incorrectly said errors would leave the state of the cursor unchanged. </dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">cursor</td><td>A cursor handle returned by <a class="el" href="group__mdb.html#ga9ff5d7bd42557fd5ee235dc1d62613aa" title="Create a cursor handle. ">mdb_cursor_open()</a> </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">key</td><td>The key operated on. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">data</td><td>The data operated on. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">flags</td><td>Options for this operation. This parameter must be set to 0 or one of the values described here. <ul>
<li>
<a class="el" href="group__mdb__put.html#ga92f7832a496213db0f03105e6fa9afae">MDB_CURRENT</a> - replace the item at the current cursor position. The <b>key</b> parameter must still be provided, and must match it. So must <b>data</b> if using sorted duplicates (<a class="el" href="group__mdb__dbi__open.html#gae0626566c2562e9007f5c8c9535bab1a">MDB_DUPSORT</a>). </li>
<li>
<a class="el" href="group__mdb__put.html#ga8d723ae10cf0afdc771ce5eafa8f6c9e">MDB_NODUPDATA</a> - enter the new key/data pair only if it does not already appear in the database. This flag may only be specified if the database was opened with <a class="el" href="group__mdb__dbi__open.html#gae0626566c2562e9007f5c8c9535bab1a">MDB_DUPSORT</a>. The function will return <a class="el" href="group__errors.html#ga05dc5bbcc7da81a7345bd8676e8e0e3b">MDB_KEYEXIST</a> if the key/data pair already appears in the database. </li>
<li>
<a class="el" href="group__mdb__put.html#ga23eb9813f9a4cdf7a7da5e01815b0cfb">MDB_NOOVERWRITE</a> - enter the new key/data pair only if the key does not already appear in the database. The function will return <a class="el" href="group__errors.html#ga05dc5bbcc7da81a7345bd8676e8e0e3b">MDB_KEYEXIST</a> if the key already appears in the database, even if the database supports duplicates (<a class="el" href="group__mdb__dbi__open.html#gae0626566c2562e9007f5c8c9535bab1a">MDB_DUPSORT</a>). </li>
<li>
<a class="el" href="group__mdb__put.html#gac0545c6aea719991e3eae6ccc686efcc">MDB_RESERVE</a> - reserve space for data of the given size, but don't copy the given data. Instead, return a pointer to the reserved space, which the caller can fill in later. This saves an extra memcpy if the data is being generated later. </li>
<li>
<a class="el" href="group__mdb__put.html#ga06af7a6e87588fd723e2dd1d7e580e6a">MDB_APPEND</a> - append the given key/data pair to the end of the database. No key comparisons are performed. This option allows fast bulk loading when keys are already known to be in the correct order. Loading unsorted keys with this flag will cause data corruption. </li>
<li>
<a class="el" href="group__mdb__put.html#ga0583fe408057ff1c03b8dd071c0d68d2">MDB_APPENDDUP</a> - as above, but for sorted dup data. </li>
<li>
<a class="el" href="group__mdb__put.html#ga67a8d26a8c8bc56f02f2e03fd07a74b0">MDB_MULTIPLE</a> - store multiple contiguous data elements in a single request. This flag may only be specified if the database was opened with <a class="el" href="group__mdb__dbi__open.html#ga5acc26f80668d1ebc31265d178c69338">MDB_DUPFIXED</a>. The <b>data</b> argument must be an array of two MDB_vals. The mv_size of the first <a class="el" href="group__mdb.html#structMDB__val" title="Generic structure used for passing keys and data in and out of the database. ">MDB_val</a> must be the size of a single data element. The mv_data of the first <a class="el" href="group__mdb.html#structMDB__val" title="Generic structure used for passing keys and data in and out of the database. ">MDB_val</a> must point to the beginning of the array of contiguous data elements. The mv_size of the second <a class="el" href="group__mdb.html#structMDB__val" title="Generic structure used for passing keys and data in and out of the database. ">MDB_val</a> must be the count of the number of data elements to store. On return this field will be set to the count of the number of elements actually written. The mv_data of the second <a class="el" href="group__mdb.html#structMDB__val" title="Generic structure used for passing keys and data in and out of the database. ">MDB_val</a> is unused. </li>
</ul>
</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A non-zero error value on failure and 0 on success. Some possible errors are: <ul>
<li>
<a class="el" href="group__errors.html#ga0a83370402a060c9175100d4bbfb9f25">MDB_MAP_FULL</a> - the database is full, see <a class="el" href="group__mdb.html#gaa2506ec8dab3d969b0e609cd82e619e5" title="Set the size of the memory map to use for this environment. ">mdb_env_set_mapsize()</a>. </li>
<li>
<a class="el" href="group__errors.html#gacba5cdc8618093f59d0339e88e69570e">MDB_TXN_FULL</a> - the transaction has too many dirty pages. </li>
<li>
EACCES - an attempt was made to modify a read-only database. </li>
<li>
EINVAL - an invalid parameter was specified. </li>
</ul>
</dd></dl>

</div>
</div>
<a class="anchor" id="ga26a52d3efcfd72e5bf6bd6960bf75f95"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int mdb_cursor_del </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__internal.html#structMDB__cursor">MDB_cursor</a> *&#160;</td>
          <td class="paramname"><em>cursor</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>flags</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Delete current key/data pair. </p>
<p>This function deletes the key/data pair to which the cursor refers. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">cursor</td><td>A cursor handle returned by <a class="el" href="group__mdb.html#ga9ff5d7bd42557fd5ee235dc1d62613aa" title="Create a cursor handle. ">mdb_cursor_open()</a> </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">flags</td><td>Options for this operation. This parameter must be set to 0 or one of the values described here. <ul>
<li>
<a class="el" href="group__mdb__put.html#ga8d723ae10cf0afdc771ce5eafa8f6c9e">MDB_NODUPDATA</a> - delete all of the data items for the current key. This flag may only be specified if the database was opened with <a class="el" href="group__mdb__dbi__open.html#gae0626566c2562e9007f5c8c9535bab1a">MDB_DUPSORT</a>. </li>
</ul>
</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A non-zero error value on failure and 0 on success. Some possible errors are: <ul>
<li>
EACCES - an attempt was made to modify a read-only database. </li>
<li>
EINVAL - an invalid parameter was specified. </li>
</ul>
</dd></dl>

</div>
</div>
<a class="anchor" id="ga4041fd1e1862c6b7d5f10590b86ffbe2"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int mdb_cursor_count </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__internal.html#structMDB__cursor">MDB_cursor</a> *&#160;</td>
          <td class="paramname"><em>cursor</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t *&#160;</td>
          <td class="paramname"><em>countp</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Return count of duplicates for current key. </p>
<p>This call is only valid on databases that support sorted duplicate data items <a class="el" href="group__mdb__dbi__open.html#gae0626566c2562e9007f5c8c9535bab1a">MDB_DUPSORT</a>. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">cursor</td><td>A cursor handle returned by <a class="el" href="group__mdb.html#ga9ff5d7bd42557fd5ee235dc1d62613aa" title="Create a cursor handle. ">mdb_cursor_open()</a> </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">countp</td><td>Address where the count will be stored </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A non-zero error value on failure and 0 on success. Some possible errors are: <ul>
<li>
EINVAL - cursor is not initialized, or an invalid parameter was specified. </li>
</ul>
</dd></dl>

</div>
</div>
<a class="anchor" id="gaba790a2493f744965b810efac73bac0e"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int mdb_cmp </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__internal.html#structMDB__txn">MDB_txn</a> *&#160;</td>
          <td class="paramname"><em>txn</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__mdb.html#gadbe68a06c448dfb62da16443d251a78b">MDB_dbi</a>&#160;</td>
          <td class="paramname"><em>dbi</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="group__mdb.html#structMDB__val">MDB_val</a> *&#160;</td>
          <td class="paramname"><em>a</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="group__mdb.html#structMDB__val">MDB_val</a> *&#160;</td>
          <td class="paramname"><em>b</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Compare two data items according to a particular database. </p>
<p>This returns a comparison as if the two data items were keys in the specified database. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">txn</td><td>A transaction handle returned by <a class="el" href="group__mdb.html#gad7ea55da06b77513609efebd44b26920" title="Create a transaction for use with the environment. ">mdb_txn_begin()</a> </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">dbi</td><td>A database handle returned by <a class="el" href="group__mdb.html#gac08cad5b096925642ca359a6d6f0562a" title="Open a database in the environment. ">mdb_dbi_open()</a> </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>The first item to compare </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">b</td><td>The second item to compare </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>&lt; 0 if a &lt; b, 0 if a == b, &gt; 0 if a &gt; b </dd></dl>

</div>
</div>
<a class="anchor" id="gac61d3087282b0824c8c5caff6caabdf3"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int mdb_dcmp </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__internal.html#structMDB__txn">MDB_txn</a> *&#160;</td>
          <td class="paramname"><em>txn</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__mdb.html#gadbe68a06c448dfb62da16443d251a78b">MDB_dbi</a>&#160;</td>
          <td class="paramname"><em>dbi</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="group__mdb.html#structMDB__val">MDB_val</a> *&#160;</td>
          <td class="paramname"><em>a</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="group__mdb.html#structMDB__val">MDB_val</a> *&#160;</td>
          <td class="paramname"><em>b</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Compare two data items according to a particular database. </p>
<p>This returns a comparison as if the two items were data items of the specified database. The database must have the <a class="el" href="group__mdb__dbi__open.html#gae0626566c2562e9007f5c8c9535bab1a">MDB_DUPSORT</a> flag. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">txn</td><td>A transaction handle returned by <a class="el" href="group__mdb.html#gad7ea55da06b77513609efebd44b26920" title="Create a transaction for use with the environment. ">mdb_txn_begin()</a> </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">dbi</td><td>A database handle returned by <a class="el" href="group__mdb.html#gac08cad5b096925642ca359a6d6f0562a" title="Open a database in the environment. ">mdb_dbi_open()</a> </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>The first item to compare </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">b</td><td>The second item to compare </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>&lt; 0 if a &lt; b, 0 if a == b, &gt; 0 if a &gt; b </dd></dl>

</div>
</div>
<a class="anchor" id="ga8550000cd0501a44f57ee6dff0188744"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int mdb_reader_list </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__internal.html#structMDB__env">MDB_env</a> *&#160;</td>
          <td class="paramname"><em>env</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__mdb.html#gaa8c2df73737d92fa83ccaae435af2ce0">MDB_msg_func</a> *&#160;</td>
          <td class="paramname"><em>func</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>ctx</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Dump the entries in the reader lock table. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">env</td><td>An environment handle returned by <a class="el" href="group__mdb.html#gaad6be3d8dcd4ea01f8df436f41d158d4" title="Create an MDB environment handle. ">mdb_env_create()</a> </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">func</td><td>A <a class="el" href="group__mdb.html#gaa8c2df73737d92fa83ccaae435af2ce0" title="A callback function used to print a message from the library. ">MDB_msg_func</a> function </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">ctx</td><td>Anything the message function needs </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>&lt; 0 on failure, &gt;= 0 on success. </dd></dl>

</div>
</div>
<a class="anchor" id="ga366923d08bb384b3d9580a98edf5d668"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int mdb_reader_check </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__internal.html#structMDB__env">MDB_env</a> *&#160;</td>
          <td class="paramname"><em>env</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int *&#160;</td>
          <td class="paramname"><em>dead</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Check for stale entries in the reader lock table. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">env</td><td>An environment handle returned by <a class="el" href="group__mdb.html#gaad6be3d8dcd4ea01f8df436f41d158d4" title="Create an MDB environment handle. ">mdb_env_create()</a> </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">dead</td><td>Number of stale slots that were cleared </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 on success, non-zero on failure. </dd></dl>

</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Fri Jul 18 2014 09:17:15 for MDB by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>
</body>
</html>