Sophie

Sophie

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

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 Internals</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> &#124;
<a href="#var-members">Variables</a>  </div>
  <div class="headertitle">
<div class="title">MDB Internals</div>  </div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="groups"></a>
Modules</h2></td></tr>
<tr class="memitem:group__idls"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__idls.html">ID List Management</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:group__compat"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__compat.html">Compatibility Macros</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:group__debug"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__debug.html">Debug Macros</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:group__readers"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__readers.html">Reader Lock Table</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:group__mdb__page"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mdb__page.html">Page Flags</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:group__mdb__node"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mdb__node.html">Node Flags</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:group__mt__dbflag"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mt__dbflag.html">Transaction DB Flags</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:group__mdb__txn"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mdb__txn.html">Transaction Flags</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:group__mdb__cursor"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mdb__cursor.html">Cursor Flags</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__page"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#structMDB__page">MDB_page</a></td></tr>
<tr class="separator:structMDB__page"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:structMDB__node"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#structMDB__node">MDB_node</a></td></tr>
<tr class="separator:structMDB__node"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:structMDB__db"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#structMDB__db">MDB_db</a></td></tr>
<tr class="separator:structMDB__db"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:structMDB__meta"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#structMDB__meta">MDB_meta</a></td></tr>
<tr class="separator:structMDB__meta"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:unionMDB__metabuf"><td class="memItemLeft" align="right" valign="top">union &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#unionMDB__metabuf">MDB_metabuf</a></td></tr>
<tr class="separator:unionMDB__metabuf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:structMDB__dbx"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#structMDB__dbx">MDB_dbx</a></td></tr>
<tr class="separator:structMDB__dbx"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:structMDB__txn"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#structMDB__txn">MDB_txn</a></td></tr>
<tr class="memdesc:structMDB__txn"><td class="mdescLeft">&#160;</td><td class="mdescRight">Opaque structure for a transaction handle.  <a href="group__internal.html#structMDB__txn">More...</a><br/></td></tr>
<tr class="separator:structMDB__txn"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:structMDB__cursor"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#structMDB__cursor">MDB_cursor</a></td></tr>
<tr class="memdesc:structMDB__cursor"><td class="mdescLeft">&#160;</td><td class="mdescRight">Opaque structure for navigating through a database.  <a href="group__internal.html#structMDB__cursor">More...</a><br/></td></tr>
<tr class="separator:structMDB__cursor"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:structMDB__xcursor"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#structMDB__xcursor">MDB_xcursor</a></td></tr>
<tr class="separator:structMDB__xcursor"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:structMDB__pgstate"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#structMDB__pgstate">MDB_pgstate</a></td></tr>
<tr class="separator:structMDB__pgstate"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:structMDB__env"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#structMDB__env">MDB_env</a></td></tr>
<tr class="memdesc:structMDB__env"><td class="mdescLeft">&#160;</td><td class="mdescRight">Opaque structure for a database environment.  <a href="group__internal.html#structMDB__env">More...</a><br/></td></tr>
<tr class="separator:structMDB__env"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:structMDB__ntxn"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#structMDB__ntxn">MDB_ntxn</a></td></tr>
<tr class="separator:structMDB__ntxn"><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:gafda79679e03da9d0d26c8f6fd74d2f2f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#gafda79679e03da9d0d26c8f6fd74d2f2f">MDB_DSYNC</a>&#160;&#160;&#160;O_DSYNC</td></tr>
<tr class="separator:gafda79679e03da9d0d26c8f6fd74d2f2f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaa42162368bc12873dcb1d1b9383a5ac0"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#gaa42162368bc12873dcb1d1b9383a5ac0">MDB_FDATASYNC</a>&#160;&#160;&#160;fdatasync</td></tr>
<tr class="separator:gaa42162368bc12873dcb1d1b9383a5ac0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga8c53e57bbaa9a196f3643ecbde44aea3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga8c53e57bbaa9a196f3643ecbde44aea3"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>MDB_MSYNC</b>(addr, len, flags)&#160;&#160;&#160;msync(addr,len,flags)</td></tr>
<tr class="separator:ga8c53e57bbaa9a196f3643ecbde44aea3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaee74e153705852ce48dca911f1b94d72"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaee74e153705852ce48dca911f1b94d72"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>MS_SYNC</b>&#160;&#160;&#160;1</td></tr>
<tr class="separator:gaee74e153705852ce48dca911f1b94d72"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga98930d8c4137a6cf3f9e21b2b7c84c24"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga98930d8c4137a6cf3f9e21b2b7c84c24"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>MS_ASYNC</b>&#160;&#160;&#160;0</td></tr>
<tr class="separator:ga98930d8c4137a6cf3f9e21b2b7c84c24"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga68765f8fe2a921fb43537502f7ff09b6"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#ga68765f8fe2a921fb43537502f7ff09b6">MAX_PAGESIZE</a>&#160;&#160;&#160;0x8000</td></tr>
<tr class="memdesc:ga68765f8fe2a921fb43537502f7ff09b6"><td class="mdescLeft">&#160;</td><td class="mdescRight">The maximum size of a database page.  <a href="#ga68765f8fe2a921fb43537502f7ff09b6">More...</a><br/></td></tr>
<tr class="separator:ga68765f8fe2a921fb43537502f7ff09b6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga8384281689ac8f7b6ffc9c727025dbf0"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#ga8384281689ac8f7b6ffc9c727025dbf0">MDB_MINKEYS</a>&#160;&#160;&#160;2</td></tr>
<tr class="separator:ga8384281689ac8f7b6ffc9c727025dbf0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga4cac6326c08147a019e8ddb17ad712f6"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#ga4cac6326c08147a019e8ddb17ad712f6">MDB_MAGIC</a>&#160;&#160;&#160;0xBEEFC0DE</td></tr>
<tr class="separator:ga4cac6326c08147a019e8ddb17ad712f6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga5d462b5ef39d34a85e633eb238655ce2"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#ga5d462b5ef39d34a85e633eb238655ce2">MDB_DATA_VERSION</a>&#160;&#160;&#160;1</td></tr>
<tr class="separator:ga5d462b5ef39d34a85e633eb238655ce2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga1d56e55199f31cd585300a2b73c22d82"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#ga1d56e55199f31cd585300a2b73c22d82">MDB_LOCK_VERSION</a>&#160;&#160;&#160;1</td></tr>
<tr class="separator:ga1d56e55199f31cd585300a2b73c22d82"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac929399f5d93cef85f874b9e9b1d09e0"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#gac929399f5d93cef85f874b9e9b1d09e0">MDB_MAXKEYSIZE</a>&#160;&#160;&#160;511</td></tr>
<tr class="memdesc:gac929399f5d93cef85f874b9e9b1d09e0"><td class="mdescLeft">&#160;</td><td class="mdescRight">The max size of a key we can write, or 0 for dynamic max.  <a href="#gac929399f5d93cef85f874b9e9b1d09e0">More...</a><br/></td></tr>
<tr class="separator:gac929399f5d93cef85f874b9e9b1d09e0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga81fe7e8b859d93e245ac73990bbeb90b"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#ga81fe7e8b859d93e245ac73990bbeb90b">ENV_MAXKEY</a>(env)&#160;&#160;&#160;(<a class="el" href="group__internal.html#gac929399f5d93cef85f874b9e9b1d09e0">MDB_MAXKEYSIZE</a>)</td></tr>
<tr class="separator:ga81fe7e8b859d93e245ac73990bbeb90b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga16c16f9369be4a374a3e621f6d13bb16"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#ga16c16f9369be4a374a3e621f6d13bb16">MAXDATASIZE</a>&#160;&#160;&#160;0xffffffffUL</td></tr>
<tr class="memdesc:ga16c16f9369be4a374a3e621f6d13bb16"><td class="mdescLeft">&#160;</td><td class="mdescRight">The maximum size of a data item.  <a href="#ga16c16f9369be4a374a3e621f6d13bb16">More...</a><br/></td></tr>
<tr class="separator:ga16c16f9369be4a374a3e621f6d13bb16"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gafb2bd421e699f53a889ca61fdc9a1c0e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gafb2bd421e699f53a889ca61fdc9a1c0e"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>DKBUF</b></td></tr>
<tr class="separator:gafb2bd421e699f53a889ca61fdc9a1c0e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga892e3ab33e6c71a04de01439dadb627b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga892e3ab33e6c71a04de01439dadb627b"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>DKEY</b>(x)&#160;&#160;&#160;0</td></tr>
<tr class="separator:ga892e3ab33e6c71a04de01439dadb627b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gab8a290bcd98f0e825c9c950a6c25d01b"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#gab8a290bcd98f0e825c9c950a6c25d01b">P_INVALID</a>&#160;&#160;&#160;(~(<a class="el" href="group__internal.html#gadb65f0424c9d3827bf6409087ad555cd">pgno_t</a>)0)</td></tr>
<tr class="separator:gab8a290bcd98f0e825c9c950a6c25d01b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaa5b968981dd75e8bf30b40b9bf7bc4b8"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#gaa5b968981dd75e8bf30b40b9bf7bc4b8">F_ISSET</a>(w, f)&#160;&#160;&#160;(((w) &amp; (f)) == (f))</td></tr>
<tr class="separator:gaa5b968981dd75e8bf30b40b9bf7bc4b8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaa714d529ede8765c6f6fffe5293b3bd4"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#gaa714d529ede8765c6f6fffe5293b3bd4">EVEN</a>(n)&#160;&#160;&#160;(((n) + 1U) &amp; -2) /* sign-extending -2 to match n+1U */</td></tr>
<tr class="separator:gaa714d529ede8765c6f6fffe5293b3bd4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga506f893519db205966f7988c03c920f5"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#ga506f893519db205966f7988c03c920f5">DEFAULT_MAPSIZE</a>&#160;&#160;&#160;1048576</td></tr>
<tr class="separator:ga506f893519db205966f7988c03c920f5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae25bcf0c0c5c5ead27e82543cbce02e1"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#gae25bcf0c0c5c5ead27e82543cbce02e1">PAGEHDRSZ</a>&#160;&#160;&#160;((unsigned) offsetof(<a class="el" href="group__internal.html#structMDB__page">MDB_page</a>, mp_ptrs))</td></tr>
<tr class="separator:gae25bcf0c0c5c5ead27e82543cbce02e1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga344d0fdca4b5892aba67035a1f9d50e5"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#ga344d0fdca4b5892aba67035a1f9d50e5">METADATA</a>(p)&#160;&#160;&#160;((void *)((char *)(p) + <a class="el" href="group__internal.html#gae25bcf0c0c5c5ead27e82543cbce02e1">PAGEHDRSZ</a>))</td></tr>
<tr class="separator:ga344d0fdca4b5892aba67035a1f9d50e5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga7c4518ae24926f5f96d70a97c14fcad8"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#ga7c4518ae24926f5f96d70a97c14fcad8">NUMKEYS</a>(p)&#160;&#160;&#160;(((p)-&gt;mp_lower - <a class="el" href="group__internal.html#gae25bcf0c0c5c5ead27e82543cbce02e1">PAGEHDRSZ</a>) &gt;&gt; 1)</td></tr>
<tr class="separator:ga7c4518ae24926f5f96d70a97c14fcad8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gadec51e874501c53388b820f27a937654"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#gadec51e874501c53388b820f27a937654">SIZELEFT</a>(p)&#160;&#160;&#160;(<a class="el" href="group__internal.html#ga730e17f748208d77496ebd895c8375dc">indx_t</a>)((p)-&gt;mp_upper - (p)-&gt;mp_lower)</td></tr>
<tr class="separator:gadec51e874501c53388b820f27a937654"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga5c5f96738000941699ea8118631b2792"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#ga5c5f96738000941699ea8118631b2792">PAGEFILL</a>(env, p)</td></tr>
<tr class="separator:ga5c5f96738000941699ea8118631b2792"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga634dcc0977fa832bc40237db6d829597"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#ga634dcc0977fa832bc40237db6d829597">FILL_THRESHOLD</a>&#160;&#160;&#160;250</td></tr>
<tr class="separator:ga634dcc0977fa832bc40237db6d829597"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac047007d585883bfc8cbc82e9a7f041a"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#gac047007d585883bfc8cbc82e9a7f041a">IS_LEAF</a>(p)&#160;&#160;&#160;<a class="el" href="group__internal.html#gaa5b968981dd75e8bf30b40b9bf7bc4b8">F_ISSET</a>((p)-&gt;mp_flags, <a class="el" href="group__mdb__page.html#gac85fb59a9a2eda0d33e58b23a7ca019a">P_LEAF</a>)</td></tr>
<tr class="separator:gac047007d585883bfc8cbc82e9a7f041a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaac1756ae5ed27a7103224a0219b42c75"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#gaac1756ae5ed27a7103224a0219b42c75">IS_LEAF2</a>(p)&#160;&#160;&#160;<a class="el" href="group__internal.html#gaa5b968981dd75e8bf30b40b9bf7bc4b8">F_ISSET</a>((p)-&gt;mp_flags, <a class="el" href="group__mdb__page.html#ga9c80486a549b2efbd5561cdd4df238c4">P_LEAF2</a>)</td></tr>
<tr class="separator:gaac1756ae5ed27a7103224a0219b42c75"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac3a145e1e46a73a21f95e1076717cf38"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#gac3a145e1e46a73a21f95e1076717cf38">IS_BRANCH</a>(p)&#160;&#160;&#160;<a class="el" href="group__internal.html#gaa5b968981dd75e8bf30b40b9bf7bc4b8">F_ISSET</a>((p)-&gt;mp_flags, <a class="el" href="group__mdb__page.html#gad6639bfcad26dbcbf7970dfa28f1a930">P_BRANCH</a>)</td></tr>
<tr class="separator:gac3a145e1e46a73a21f95e1076717cf38"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga4907ee7e1f797f841e8708715c16175c"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#ga4907ee7e1f797f841e8708715c16175c">IS_OVERFLOW</a>(p)&#160;&#160;&#160;<a class="el" href="group__internal.html#gaa5b968981dd75e8bf30b40b9bf7bc4b8">F_ISSET</a>((p)-&gt;mp_flags, <a class="el" href="group__mdb__page.html#ga15141fe5d59efdf035bf8862250c25d7">P_OVERFLOW</a>)</td></tr>
<tr class="separator:ga4907ee7e1f797f841e8708715c16175c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga4ca60a25dcbc659b2a01d5ef6de91119"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#ga4ca60a25dcbc659b2a01d5ef6de91119">IS_SUBP</a>(p)&#160;&#160;&#160;<a class="el" href="group__internal.html#gaa5b968981dd75e8bf30b40b9bf7bc4b8">F_ISSET</a>((p)-&gt;mp_flags, <a class="el" href="group__mdb__page.html#ga77cc6dc98fda40c81fb2f75068fb5551">P_SUBP</a>)</td></tr>
<tr class="separator:ga4ca60a25dcbc659b2a01d5ef6de91119"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gadab9c64629e86234de42d3c1375390f9"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#gadab9c64629e86234de42d3c1375390f9">OVPAGES</a>(size, psize)&#160;&#160;&#160;((<a class="el" href="group__internal.html#gae25bcf0c0c5c5ead27e82543cbce02e1">PAGEHDRSZ</a>-1 + (size)) / (psize) + 1)</td></tr>
<tr class="separator:gadab9c64629e86234de42d3c1375390f9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga7d24748fedf732c90d840cbf0714d8d8"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#ga7d24748fedf732c90d840cbf0714d8d8">NODESIZE</a>&#160;&#160;&#160;offsetof(<a class="el" href="group__internal.html#structMDB__node">MDB_node</a>, mn_data)</td></tr>
<tr class="separator:ga7d24748fedf732c90d840cbf0714d8d8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac226a942178d95066131a42e50c29d79"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#gac226a942178d95066131a42e50c29d79">PGNO_TOPWORD</a>&#160;&#160;&#160;((<a class="el" href="group__internal.html#gadb65f0424c9d3827bf6409087ad555cd">pgno_t</a>)-1 &gt; 0xffffffffu ? 32 : 0)</td></tr>
<tr class="separator:gac226a942178d95066131a42e50c29d79"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae17cd0c2dbe9e5f346e6fefbe64a94b8"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#gae17cd0c2dbe9e5f346e6fefbe64a94b8">INDXSIZE</a>(k)&#160;&#160;&#160;(<a class="el" href="group__internal.html#ga7d24748fedf732c90d840cbf0714d8d8">NODESIZE</a> + ((k) == NULL ? 0 : (k)-&gt;mv_size))</td></tr>
<tr class="separator:gae17cd0c2dbe9e5f346e6fefbe64a94b8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gacf0931b7f08df74abb803b41692ef965"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#gacf0931b7f08df74abb803b41692ef965">LEAFSIZE</a>(k, d)&#160;&#160;&#160;(<a class="el" href="group__internal.html#ga7d24748fedf732c90d840cbf0714d8d8">NODESIZE</a> + (k)-&gt;mv_size + (d)-&gt;mv_size)</td></tr>
<tr class="separator:gacf0931b7f08df74abb803b41692ef965"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gadd8222b06a62d77398a5d719e973a66d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#gadd8222b06a62d77398a5d719e973a66d">NODEPTR</a>(p, i)&#160;&#160;&#160;((<a class="el" href="group__internal.html#structMDB__node">MDB_node</a> *)((char *)(p) + (p)-&gt;mp_ptrs[i]))</td></tr>
<tr class="separator:gadd8222b06a62d77398a5d719e973a66d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga0c2d3ecf490b76fd5ef32aa4082edefe"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#ga0c2d3ecf490b76fd5ef32aa4082edefe">NODEKEY</a>(node)&#160;&#160;&#160;(void *)((node)-&gt;mn_data)</td></tr>
<tr class="separator:ga0c2d3ecf490b76fd5ef32aa4082edefe"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaaa3f3816301d68365052b69a0c1464e1"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#gaaa3f3816301d68365052b69a0c1464e1">NODEDATA</a>(node)&#160;&#160;&#160;(void *)((char *)(node)-&gt;mn_data + (node)-&gt;mn_ksize)</td></tr>
<tr class="separator:gaaa3f3816301d68365052b69a0c1464e1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gabc71d778f3391485aee252505fb06e90"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#gabc71d778f3391485aee252505fb06e90">NODEPGNO</a>(node)</td></tr>
<tr class="separator:gabc71d778f3391485aee252505fb06e90"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga220e51ef0d2da4d4ff58e94065eaa095"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#ga220e51ef0d2da4d4ff58e94065eaa095">SETPGNO</a>(node, pgno)</td></tr>
<tr class="separator:ga220e51ef0d2da4d4ff58e94065eaa095"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga8f307b7c4ebae2194b30328bc87c4070"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#ga8f307b7c4ebae2194b30328bc87c4070">NODEDSZ</a>(node)&#160;&#160;&#160;((node)-&gt;mn_lo | ((unsigned)(node)-&gt;mn_hi &lt;&lt; 16))</td></tr>
<tr class="separator:ga8f307b7c4ebae2194b30328bc87c4070"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga737db862c118cd893ac8d6a87f6175fe"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#ga737db862c118cd893ac8d6a87f6175fe">SETDSZ</a>(node, size)</td></tr>
<tr class="separator:ga737db862c118cd893ac8d6a87f6175fe"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaa680cb94fd0c91a8818205fcef2d1b53"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#gaa680cb94fd0c91a8818205fcef2d1b53">NODEKSZ</a>(node)&#160;&#160;&#160;((node)-&gt;mn_ksize)</td></tr>
<tr class="separator:gaa680cb94fd0c91a8818205fcef2d1b53"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaa2e6eaaa9f8fcfd2078846caf2249895"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#gaa2e6eaaa9f8fcfd2078846caf2249895">COPY_PGNO</a>(dst, src)</td></tr>
<tr class="separator:gaa2e6eaaa9f8fcfd2078846caf2249895"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga7c01a3e255fb83aab9136fc9a840858a"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#ga7c01a3e255fb83aab9136fc9a840858a">LEAF2KEY</a>(p, i, ks)&#160;&#160;&#160;((char *)(p) + <a class="el" href="group__internal.html#gae25bcf0c0c5c5ead27e82543cbce02e1">PAGEHDRSZ</a> + ((i)*(ks)))</td></tr>
<tr class="separator:ga7c01a3e255fb83aab9136fc9a840858a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga8b7a0121acba5d0a49c06bf7d6982de6"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#ga8b7a0121acba5d0a49c06bf7d6982de6">MDB_GET_KEY</a>(node, keyptr)</td></tr>
<tr class="separator:ga8b7a0121acba5d0a49c06bf7d6982de6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaeda61f782c32f78026d0513425308242"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#gaeda61f782c32f78026d0513425308242">MDB_GET_KEY2</a>(node, key)&#160;&#160;&#160;{ key.mv_size = <a class="el" href="group__internal.html#gaa680cb94fd0c91a8818205fcef2d1b53">NODEKSZ</a>(node); key.mv_data = <a class="el" href="group__internal.html#ga0c2d3ecf490b76fd5ef32aa4082edefe">NODEKEY</a>(node); }</td></tr>
<tr class="separator:gaeda61f782c32f78026d0513425308242"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaf63959656ca191ddd4e9e7a119d195e1"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#gaf63959656ca191ddd4e9e7a119d195e1">MDB_VALID</a>&#160;&#160;&#160;0x8000</td></tr>
<tr class="separator:gaf63959656ca191ddd4e9e7a119d195e1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga6555ecf95dd21f4fb70cda4f30764082"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga6555ecf95dd21f4fb70cda4f30764082"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>PERSISTENT_FLAGS</b>&#160;&#160;&#160;(0xffff &amp; ~(MDB_VALID))</td></tr>
<tr class="separator:ga6555ecf95dd21f4fb70cda4f30764082"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga999f0ca5c5a7c2e736a21f3aab93cebc"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><b>VALID_FLAGS</b></td></tr>
<tr class="separator:ga999f0ca5c5a7c2e736a21f3aab93cebc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga3aa4d92eab9197f1d5f24403b1cfaaca"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#ga3aa4d92eab9197f1d5f24403b1cfaaca">FREE_DBI</a>&#160;&#160;&#160;0</td></tr>
<tr class="separator:ga3aa4d92eab9197f1d5f24403b1cfaaca"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gad168f01e88e89311f7056748e634d11d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#gad168f01e88e89311f7056748e634d11d">MAIN_DBI</a>&#160;&#160;&#160;1</td></tr>
<tr class="separator:gad168f01e88e89311f7056748e634d11d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaef453f149efb721c2eb311a6ede48dc8"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#gaef453f149efb721c2eb311a6ede48dc8">CURSOR_STACK</a>&#160;&#160;&#160;32</td></tr>
<tr class="separator:gaef453f149efb721c2eb311a6ede48dc8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaddd9c385c8b6517e7431f832805e96c6"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#gaddd9c385c8b6517e7431f832805e96c6">MDB_COMMIT_PAGES</a>&#160;&#160;&#160;64</td></tr>
<tr class="separator:gaddd9c385c8b6517e7431f832805e96c6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga6ca75cdd9d6e5a1b941ba35c50a77886"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#ga6ca75cdd9d6e5a1b941ba35c50a77886">MAX_WRITE</a>&#160;&#160;&#160;(0x80000000U &gt;&gt; (sizeof(ssize_t) == 4))</td></tr>
<tr class="separator:ga6ca75cdd9d6e5a1b941ba35c50a77886"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga76a6a74e0b638920bf8831c8fed7ea09"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#ga76a6a74e0b638920bf8831c8fed7ea09">TXN_DBI_EXIST</a>(txn, dbi)&#160;&#160;&#160;((txn) &amp;&amp; (dbi) &lt; (txn)-&gt;mt_numdbs &amp;&amp; ((txn)-&gt;mt_dbflags[dbi] &amp; <a class="el" href="group__mt__dbflag.html#gac774963973e18f60ae646b7295219a8d">DB_VALID</a>))</td></tr>
<tr class="separator:ga76a6a74e0b638920bf8831c8fed7ea09"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga06e8b96ef77e8d1834b428a37f81b74c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga06e8b96ef77e8d1834b428a37f81b74c"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>MDB_PS_MODIFY</b>&#160;&#160;&#160;1</td></tr>
<tr class="separator:ga06e8b96ef77e8d1834b428a37f81b74c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga78a7407a7f0ccd64d0ba907372f93e40"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga78a7407a7f0ccd64d0ba907372f93e40"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>MDB_PS_ROOTONLY</b>&#160;&#160;&#160;2</td></tr>
<tr class="separator:ga78a7407a7f0ccd64d0ba907372f93e40"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga2c4075461ed0732c279cc876db3ca205"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga2c4075461ed0732c279cc876db3ca205"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>MDB_PS_FIRST</b>&#160;&#160;&#160;4</td></tr>
<tr class="separator:ga2c4075461ed0732c279cc876db3ca205"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gacab0d55e9ce5016ecfb17bd892557a33"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gacab0d55e9ce5016ecfb17bd892557a33"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>MDB_PS_LAST</b>&#160;&#160;&#160;8</td></tr>
<tr class="separator:gacab0d55e9ce5016ecfb17bd892557a33"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga43ef6688956e10907bc4e1d6dbc2d946"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#ga43ef6688956e10907bc4e1d6dbc2d946">MDB_SPLIT_REPLACE</a>&#160;&#160;&#160;<a class="el" href="group__mdb__put.html#ga0583fe408057ff1c03b8dd071c0d68d2">MDB_APPENDDUP</a></td></tr>
<tr class="separator:ga43ef6688956e10907bc4e1d6dbc2d946"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga93c88511ba939d3bc1b47ce2cefb9607"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga93c88511ba939d3bc1b47ce2cefb9607"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>mdb_env_close0</b>(env, excl)&#160;&#160;&#160;mdb_env_close1(env)</td></tr>
<tr class="separator:ga93c88511ba939d3bc1b47ce2cefb9607"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga2f8f04a538e4d5da1d21c02d3dba3f53"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#ga2f8f04a538e4d5da1d21c02d3dba3f53">mdb_cassert</a>(mc, expr)&#160;&#160;&#160;mdb_assert0((mc)-&gt;mc_txn-&gt;mt_env, expr, #expr)</td></tr>
<tr class="separator:ga2f8f04a538e4d5da1d21c02d3dba3f53"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga58da4ab302f2d7ce9dba812199eb6ceb"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#ga58da4ab302f2d7ce9dba812199eb6ceb">mdb_tassert</a>(mc, expr)&#160;&#160;&#160;mdb_assert0((txn)-&gt;mt_env, expr, #expr)</td></tr>
<tr class="separator:ga58da4ab302f2d7ce9dba812199eb6ceb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga90d50765b3f12b8c239ab259f99ec243"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#ga90d50765b3f12b8c239ab259f99ec243">mdb_eassert</a>(env, expr)&#160;&#160;&#160;mdb_assert0(env, expr, #expr)</td></tr>
<tr class="separator:ga90d50765b3f12b8c239ab259f99ec243"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaf9083a40be65f748798d585f40e26056"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><b>mdb_assert0</b>(env, expr, expr_txt)</td></tr>
<tr class="separator:gaf9083a40be65f748798d585f40e26056"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga48668b62d392a63067c9ce6b3b5e0c64"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga48668b62d392a63067c9ce6b3b5e0c64"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>mdb_txn_reset0</b>(txn, act)&#160;&#160;&#160;mdb_txn_reset0(txn)</td></tr>
<tr class="separator:ga48668b62d392a63067c9ce6b3b5e0c64"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga869f3a387bf2529a5fdba260a82dc1d7"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#ga869f3a387bf2529a5fdba260a82dc1d7">LOCKNAME</a>&#160;&#160;&#160;&quot;/lock.mdb&quot;</td></tr>
<tr class="separator:ga869f3a387bf2529a5fdba260a82dc1d7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gad5a54432b85530e3f2cf9b88488e0eee"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#gad5a54432b85530e3f2cf9b88488e0eee">DATANAME</a>&#160;&#160;&#160;&quot;/data.mdb&quot;</td></tr>
<tr class="separator:gad5a54432b85530e3f2cf9b88488e0eee"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga3deadcb7227066bea0b6907e30a94a6b"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#ga3deadcb7227066bea0b6907e30a94a6b">LOCKSUFF</a>&#160;&#160;&#160;&quot;-lock&quot;</td></tr>
<tr class="separator:ga3deadcb7227066bea0b6907e30a94a6b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga73e66d763b8c4837cce5369052628bbe"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#ga73e66d763b8c4837cce5369052628bbe">CHANGEABLE</a>&#160;&#160;&#160;(<a class="el" href="group__mdb__env.html#ga5791dd1adb09123f82dd1f331209e12e">MDB_NOSYNC</a>|<a class="el" href="group__mdb__env.html#ga5021c4e96ffe9f383f5b8ab2af8e4b16">MDB_NOMETASYNC</a>|<a class="el" href="group__mdb__env.html#gab034ed0d8e5938090aef5ee0997f7e94">MDB_MAPASYNC</a>|<a class="el" href="group__mdb__env.html#gafa035a1f17ebf31376eafb7bd2cdd448">MDB_NOMEMINIT</a>)</td></tr>
<tr class="separator:ga73e66d763b8c4837cce5369052628bbe"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gabcfb3c5c09341252735704ee22684339"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><b>CHANGELESS</b></td></tr>
<tr class="separator:gabcfb3c5c09341252735704ee22684339"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga47f9ed89920d053e13d17c1a443e9643"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#ga47f9ed89920d053e13d17c1a443e9643">mdb_cmp_clong</a>&#160;&#160;&#160;<a class="el" href="group__internal.html#ga2d4077f468b6ac7bb316a24a29c5f8b3">mdb_cmp_cint</a></td></tr>
<tr class="separator:ga47f9ed89920d053e13d17c1a443e9643"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga2216d72d26517bbe3d036007c2f8d20f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#ga2216d72d26517bbe3d036007c2f8d20f">MDB_NOSPILL</a>&#160;&#160;&#160;0x8000</td></tr>
<tr class="separator:ga2216d72d26517bbe3d036007c2f8d20f"><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:gadb65f0424c9d3827bf6409087ad555cd"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="group__idls.html#gad3544b2a0d07ee195d91e92b0e46005e">MDB_ID</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#gadb65f0424c9d3827bf6409087ad555cd">pgno_t</a></td></tr>
<tr class="separator:gadb65f0424c9d3827bf6409087ad555cd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gabbaef7c9c710f8652a62c32d748c040e"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="group__idls.html#gad3544b2a0d07ee195d91e92b0e46005e">MDB_ID</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#gabbaef7c9c710f8652a62c32d748c040e">txnid_t</a></td></tr>
<tr class="separator:gabbaef7c9c710f8652a62c32d748c040e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga730e17f748208d77496ebd895c8375dc"><td class="memItemLeft" align="right" valign="top">typedef uint16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#ga730e17f748208d77496ebd895c8375dc">indx_t</a></td></tr>
<tr class="separator:ga730e17f748208d77496ebd895c8375dc"><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:ga9a1c6ff9e1c49dc7b1fd08ab3781f1d4"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><b>Pidlock_op</b> { <b>Pidset</b> = F_SETLK, 
<b>Pidcheck</b> = F_GETLK
 }</td></tr>
<tr class="separator:ga9a1c6ff9e1c49dc7b1fd08ab3781f1d4"><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:ga979b426d11e7366d1c27fa528c96dbe6"><td class="memItemLeft" align="right" valign="top">static int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#ga979b426d11e7366d1c27fa528c96dbe6">mdb_page_alloc</a> (<a class="el" href="group__internal.html#structMDB__cursor">MDB_cursor</a> *mc, int num, <a class="el" href="group__internal.html#structMDB__page">MDB_page</a> **mp)</td></tr>
<tr class="separator:ga979b426d11e7366d1c27fa528c96dbe6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga4c2a40c60564221e8f075d520be56c58"><td class="memItemLeft" align="right" valign="top">static int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#ga4c2a40c60564221e8f075d520be56c58">mdb_page_new</a> (<a class="el" href="group__internal.html#structMDB__cursor">MDB_cursor</a> *mc, uint32_t flags, int num, <a class="el" href="group__internal.html#structMDB__page">MDB_page</a> **mp)</td></tr>
<tr class="separator:ga4c2a40c60564221e8f075d520be56c58"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gacffbede1a02377fe1cd2dd2594e80ad1"><td class="memItemLeft" align="right" valign="top">static int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#gacffbede1a02377fe1cd2dd2594e80ad1">mdb_page_touch</a> (<a class="el" href="group__internal.html#structMDB__cursor">MDB_cursor</a> *mc)</td></tr>
<tr class="separator:gacffbede1a02377fe1cd2dd2594e80ad1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga19a23c75dee44d012293693edd26d375"><td class="memItemLeft" align="right" valign="top">static int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#ga19a23c75dee44d012293693edd26d375">mdb_page_get</a> (<a class="el" href="group__internal.html#structMDB__txn">MDB_txn</a> *txn, <a class="el" href="group__internal.html#gadb65f0424c9d3827bf6409087ad555cd">pgno_t</a> pgno, <a class="el" href="group__internal.html#structMDB__page">MDB_page</a> **mp, int *lvl)</td></tr>
<tr class="separator:ga19a23c75dee44d012293693edd26d375"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga50669a51cfec605224cc5d1f999d0e47"><td class="memItemLeft" align="right" valign="top">static int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#ga50669a51cfec605224cc5d1f999d0e47">mdb_page_search_root</a> (<a class="el" href="group__internal.html#structMDB__cursor">MDB_cursor</a> *mc, <a class="el" href="group__mdb.html#structMDB__val">MDB_val</a> *key, int modify)</td></tr>
<tr class="separator:ga50669a51cfec605224cc5d1f999d0e47"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga3e177d0d5a802d9eaab25653adcf94b4"><td class="memItemLeft" align="right" valign="top">static int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#ga3e177d0d5a802d9eaab25653adcf94b4">mdb_page_search</a> (<a class="el" href="group__internal.html#structMDB__cursor">MDB_cursor</a> *mc, <a class="el" href="group__mdb.html#structMDB__val">MDB_val</a> *key, int flags)</td></tr>
<tr class="separator:ga3e177d0d5a802d9eaab25653adcf94b4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga6b9c240d754de29637beefac7fad7c49"><td class="memItemLeft" align="right" valign="top">static int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#ga6b9c240d754de29637beefac7fad7c49">mdb_page_merge</a> (<a class="el" href="group__internal.html#structMDB__cursor">MDB_cursor</a> *csrc, <a class="el" href="group__internal.html#structMDB__cursor">MDB_cursor</a> *cdst)</td></tr>
<tr class="separator:ga6b9c240d754de29637beefac7fad7c49"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaaf64f571cd1f1e573d42ec55a0bdcbb1"><td class="memItemLeft" align="right" valign="top">static int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#gaaf64f571cd1f1e573d42ec55a0bdcbb1">mdb_page_split</a> (<a class="el" href="group__internal.html#structMDB__cursor">MDB_cursor</a> *mc, <a class="el" href="group__mdb.html#structMDB__val">MDB_val</a> *newkey, <a class="el" href="group__mdb.html#structMDB__val">MDB_val</a> *newdata, <a class="el" href="group__internal.html#gadb65f0424c9d3827bf6409087ad555cd">pgno_t</a> newpgno, unsigned int nflags)</td></tr>
<tr class="separator:gaaf64f571cd1f1e573d42ec55a0bdcbb1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga740b829c80b191a4f19a15d853bc73fb"><td class="memItemLeft" align="right" valign="top">static int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#ga740b829c80b191a4f19a15d853bc73fb">mdb_env_read_header</a> (<a class="el" href="group__internal.html#structMDB__env">MDB_env</a> *env, <a class="el" href="group__internal.html#structMDB__meta">MDB_meta</a> *meta)</td></tr>
<tr class="separator:ga740b829c80b191a4f19a15d853bc73fb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaeac690b780b6f58b0eb86016852b9c83"><td class="memItemLeft" align="right" valign="top">static int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#gaeac690b780b6f58b0eb86016852b9c83">mdb_env_pick_meta</a> (const <a class="el" href="group__internal.html#structMDB__env">MDB_env</a> *env)</td></tr>
<tr class="separator:gaeac690b780b6f58b0eb86016852b9c83"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga1d1142b1a45101bc8e102175716a1868"><td class="memItemLeft" align="right" valign="top">static int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#ga1d1142b1a45101bc8e102175716a1868">mdb_env_write_meta</a> (<a class="el" href="group__internal.html#structMDB__txn">MDB_txn</a> *txn)</td></tr>
<tr class="separator:ga1d1142b1a45101bc8e102175716a1868"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga06fd686be0835745b81600d6400eba2d"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#ga06fd686be0835745b81600d6400eba2d">mdb_env_close0</a> (<a class="el" href="group__internal.html#structMDB__env">MDB_env</a> *env, int excl)</td></tr>
<tr class="separator:ga06fd686be0835745b81600d6400eba2d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga85b9b4db62130d5ae523970615c5e69a"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="group__internal.html#structMDB__node">MDB_node</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#ga85b9b4db62130d5ae523970615c5e69a">mdb_node_search</a> (<a class="el" href="group__internal.html#structMDB__cursor">MDB_cursor</a> *mc, <a class="el" href="group__mdb.html#structMDB__val">MDB_val</a> *key, int *exactp)</td></tr>
<tr class="separator:ga85b9b4db62130d5ae523970615c5e69a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga288a1ab8d7ef01617f068e7a7fd97234"><td class="memItemLeft" align="right" valign="top">static int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#ga288a1ab8d7ef01617f068e7a7fd97234">mdb_node_add</a> (<a class="el" href="group__internal.html#structMDB__cursor">MDB_cursor</a> *mc, <a class="el" href="group__internal.html#ga730e17f748208d77496ebd895c8375dc">indx_t</a> indx, <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__internal.html#gadb65f0424c9d3827bf6409087ad555cd">pgno_t</a> pgno, unsigned int flags)</td></tr>
<tr class="separator:ga288a1ab8d7ef01617f068e7a7fd97234"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga52d8ac569f2b17cc9b35a2a13485fe74"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#ga52d8ac569f2b17cc9b35a2a13485fe74">mdb_node_del</a> (<a class="el" href="group__internal.html#structMDB__cursor">MDB_cursor</a> *mc, int ksize)</td></tr>
<tr class="separator:ga52d8ac569f2b17cc9b35a2a13485fe74"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga02718a3553f0dedce399c58ffd57be47"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#ga02718a3553f0dedce399c58ffd57be47">mdb_node_shrink</a> (<a class="el" href="group__internal.html#structMDB__page">MDB_page</a> *mp, <a class="el" href="group__internal.html#ga730e17f748208d77496ebd895c8375dc">indx_t</a> indx)</td></tr>
<tr class="separator:ga02718a3553f0dedce399c58ffd57be47"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaeeb09e6602e6e5dacfdb93c6c2575ebb"><td class="memItemLeft" align="right" valign="top">static int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#gaeeb09e6602e6e5dacfdb93c6c2575ebb">mdb_node_move</a> (<a class="el" href="group__internal.html#structMDB__cursor">MDB_cursor</a> *csrc, <a class="el" href="group__internal.html#structMDB__cursor">MDB_cursor</a> *cdst)</td></tr>
<tr class="separator:gaeeb09e6602e6e5dacfdb93c6c2575ebb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga686cd45c8eeca8be97f31b6b5ab7c8cb"><td class="memItemLeft" align="right" valign="top">static int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#ga686cd45c8eeca8be97f31b6b5ab7c8cb">mdb_node_read</a> (<a class="el" href="group__internal.html#structMDB__txn">MDB_txn</a> *txn, <a class="el" href="group__internal.html#structMDB__node">MDB_node</a> *leaf, <a class="el" href="group__mdb.html#structMDB__val">MDB_val</a> *data)</td></tr>
<tr class="separator:ga686cd45c8eeca8be97f31b6b5ab7c8cb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga06ab7513e8c27b9be243ee976545948a"><td class="memItemLeft" align="right" valign="top">static size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#ga06ab7513e8c27b9be243ee976545948a">mdb_leaf_size</a> (<a class="el" href="group__internal.html#structMDB__env">MDB_env</a> *env, <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="separator:ga06ab7513e8c27b9be243ee976545948a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga2ce2b308d3cd41f92376a4be402658d2"><td class="memItemLeft" align="right" valign="top">static size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#ga2ce2b308d3cd41f92376a4be402658d2">mdb_branch_size</a> (<a class="el" href="group__internal.html#structMDB__env">MDB_env</a> *env, <a class="el" href="group__mdb.html#structMDB__val">MDB_val</a> *key)</td></tr>
<tr class="separator:ga2ce2b308d3cd41f92376a4be402658d2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga1c527b36b4ea4b01227e9bf986e3794f"><td class="memItemLeft" align="right" valign="top">static int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#ga1c527b36b4ea4b01227e9bf986e3794f">mdb_rebalance</a> (<a class="el" href="group__internal.html#structMDB__cursor">MDB_cursor</a> *mc)</td></tr>
<tr class="separator:ga1c527b36b4ea4b01227e9bf986e3794f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaabbdf46d2cdf43a48c57b6eddf89b28c"><td class="memItemLeft" align="right" valign="top">static int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#gaabbdf46d2cdf43a48c57b6eddf89b28c">mdb_update_key</a> (<a class="el" href="group__internal.html#structMDB__cursor">MDB_cursor</a> *mc, <a class="el" href="group__mdb.html#structMDB__val">MDB_val</a> *key)</td></tr>
<tr class="separator:gaabbdf46d2cdf43a48c57b6eddf89b28c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac802ed8b8d372be8f821865fb61c7add"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#gac802ed8b8d372be8f821865fb61c7add">mdb_cursor_pop</a> (<a class="el" href="group__internal.html#structMDB__cursor">MDB_cursor</a> *mc)</td></tr>
<tr class="separator:gac802ed8b8d372be8f821865fb61c7add"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac16074490d9e3173891176f9bad2cf1a"><td class="memItemLeft" align="right" valign="top">static int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#gac16074490d9e3173891176f9bad2cf1a">mdb_cursor_push</a> (<a class="el" href="group__internal.html#structMDB__cursor">MDB_cursor</a> *mc, <a class="el" href="group__internal.html#structMDB__page">MDB_page</a> *mp)</td></tr>
<tr class="separator:gac16074490d9e3173891176f9bad2cf1a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae8145233dab5a4b9ff4460252d4330e3"><td class="memItemLeft" align="right" valign="top">static int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#gae8145233dab5a4b9ff4460252d4330e3">mdb_cursor_del0</a> (<a class="el" href="group__internal.html#structMDB__cursor">MDB_cursor</a> *mc)</td></tr>
<tr class="separator:gae8145233dab5a4b9ff4460252d4330e3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae941c67fb6dc07a476cc1cd530d70569"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gae941c67fb6dc07a476cc1cd530d70569"></a>
static int&#160;</td><td class="memItemRight" valign="bottom"><b>mdb_del0</b> (<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 flags)</td></tr>
<tr class="separator:gae941c67fb6dc07a476cc1cd530d70569"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae8730b7b8a2996053c250f9389fbcef8"><td class="memItemLeft" align="right" valign="top">static int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#gae8730b7b8a2996053c250f9389fbcef8">mdb_cursor_sibling</a> (<a class="el" href="group__internal.html#structMDB__cursor">MDB_cursor</a> *mc, int move_right)</td></tr>
<tr class="separator:gae8730b7b8a2996053c250f9389fbcef8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga1820fcf411f3de7d5ed9e44442b66d93"><td class="memItemLeft" align="right" valign="top">static int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#ga1820fcf411f3de7d5ed9e44442b66d93">mdb_cursor_next</a> (<a class="el" href="group__internal.html#structMDB__cursor">MDB_cursor</a> *mc, <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="separator:ga1820fcf411f3de7d5ed9e44442b66d93"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga0b6059c3275244b30d703e5dab9e17c2"><td class="memItemLeft" align="right" valign="top">static int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#ga0b6059c3275244b30d703e5dab9e17c2">mdb_cursor_prev</a> (<a class="el" href="group__internal.html#structMDB__cursor">MDB_cursor</a> *mc, <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="separator:ga0b6059c3275244b30d703e5dab9e17c2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga39f6ca1bb7224eb1311ffb65207b9794"><td class="memItemLeft" align="right" valign="top">static int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#ga39f6ca1bb7224eb1311ffb65207b9794">mdb_cursor_set</a> (<a class="el" href="group__internal.html#structMDB__cursor">MDB_cursor</a> *mc, <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, int *exactp)</td></tr>
<tr class="separator:ga39f6ca1bb7224eb1311ffb65207b9794"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga20150fa80f311ef191ba80e80432a4ac"><td class="memItemLeft" align="right" valign="top">static int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#ga20150fa80f311ef191ba80e80432a4ac">mdb_cursor_first</a> (<a class="el" href="group__internal.html#structMDB__cursor">MDB_cursor</a> *mc, <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="separator:ga20150fa80f311ef191ba80e80432a4ac"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga6508b6561d58faa7c3c9e2f8ee760804"><td class="memItemLeft" align="right" valign="top">static int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#ga6508b6561d58faa7c3c9e2f8ee760804">mdb_cursor_last</a> (<a class="el" href="group__internal.html#structMDB__cursor">MDB_cursor</a> *mc, <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="separator:ga6508b6561d58faa7c3c9e2f8ee760804"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga6f8a9cda751d2e94239d6b8bc0f86a14"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#ga6f8a9cda751d2e94239d6b8bc0f86a14">mdb_cursor_init</a> (<a class="el" href="group__internal.html#structMDB__cursor">MDB_cursor</a> *mc, <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__xcursor">MDB_xcursor</a> *mx)</td></tr>
<tr class="separator:ga6f8a9cda751d2e94239d6b8bc0f86a14"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac7492f6f13279a214496df14b5a5ec28"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#gac7492f6f13279a214496df14b5a5ec28">mdb_xcursor_init0</a> (<a class="el" href="group__internal.html#structMDB__cursor">MDB_cursor</a> *mc)</td></tr>
<tr class="separator:gac7492f6f13279a214496df14b5a5ec28"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga897dee5db166ecfe74cb0b1155b6d3a7"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#ga897dee5db166ecfe74cb0b1155b6d3a7">mdb_xcursor_init1</a> (<a class="el" href="group__internal.html#structMDB__cursor">MDB_cursor</a> *mc, <a class="el" href="group__internal.html#structMDB__node">MDB_node</a> *node)</td></tr>
<tr class="separator:ga897dee5db166ecfe74cb0b1155b6d3a7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaf930e34b5089f0cc79c517b7da043e6a"><td class="memItemLeft" align="right" valign="top">static int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#gaf930e34b5089f0cc79c517b7da043e6a">mdb_drop0</a> (<a class="el" href="group__internal.html#structMDB__cursor">MDB_cursor</a> *mc, int subs)</td></tr>
<tr class="separator:gaf930e34b5089f0cc79c517b7da043e6a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga02418f180f24752f569f821d28801274"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#ga02418f180f24752f569f821d28801274">mdb_default_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)</td></tr>
<tr class="separator:ga02418f180f24752f569f821d28801274"><td class="memSeparator" colspan="2">&#160;</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__internal.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__internal.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:gab9a6cc224933b74077f2208fbe1abae7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gab9a6cc224933b74077f2208fbe1abae7"></a>
static void&#160;</td><td class="memItemRight" valign="bottom"><b>mdb_assert_fail</b> (<a class="el" href="group__internal.html#structMDB__env">MDB_env</a> *env, const char *expr_txt, const char *func, const char *file, int line)</td></tr>
<tr class="separator:gab9a6cc224933b74077f2208fbe1abae7"><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__internal.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__internal.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:ga257f845c7a8f2b4b36d58cb749eee99e"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="group__internal.html#structMDB__page">MDB_page</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#ga257f845c7a8f2b4b36d58cb749eee99e">mdb_page_malloc</a> (<a class="el" href="group__internal.html#structMDB__txn">MDB_txn</a> *txn, unsigned num)</td></tr>
<tr class="separator:ga257f845c7a8f2b4b36d58cb749eee99e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga32acd9b3f7397b2f28c345aada5af109"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#ga32acd9b3f7397b2f28c345aada5af109">mdb_page_free</a> (<a class="el" href="group__internal.html#structMDB__env">MDB_env</a> *env, <a class="el" href="group__internal.html#structMDB__page">MDB_page</a> *mp)</td></tr>
<tr class="separator:ga32acd9b3f7397b2f28c345aada5af109"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga265572d91274cb2a622de75a371d3627"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#ga265572d91274cb2a622de75a371d3627">mdb_dpage_free</a> (<a class="el" href="group__internal.html#structMDB__env">MDB_env</a> *env, <a class="el" href="group__internal.html#structMDB__page">MDB_page</a> *dp)</td></tr>
<tr class="separator:ga265572d91274cb2a622de75a371d3627"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga6f77254f03f9758e360828620d3347d0"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#ga6f77254f03f9758e360828620d3347d0">mdb_dlist_free</a> (<a class="el" href="group__internal.html#structMDB__txn">MDB_txn</a> *txn)</td></tr>
<tr class="separator:ga6f77254f03f9758e360828620d3347d0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga7af44a6e5abb91c371070d9b0c817287"><td class="memItemLeft" align="right" valign="top">static int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#ga7af44a6e5abb91c371070d9b0c817287">mdb_pages_xkeep</a> (<a class="el" href="group__internal.html#structMDB__cursor">MDB_cursor</a> *mc, unsigned pflags, int all)</td></tr>
<tr class="separator:ga7af44a6e5abb91c371070d9b0c817287"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga92ab26eb6b1a40eede16ea7a2a05a078"><td class="memItemLeft" align="right" valign="top">static int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#ga92ab26eb6b1a40eede16ea7a2a05a078">mdb_page_flush</a> (<a class="el" href="group__internal.html#structMDB__txn">MDB_txn</a> *txn, int keep)</td></tr>
<tr class="separator:ga92ab26eb6b1a40eede16ea7a2a05a078"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga069b06dad34fb787dd6066242ca1219c"><td class="memItemLeft" align="right" valign="top">static int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#ga069b06dad34fb787dd6066242ca1219c">mdb_page_spill</a> (<a class="el" href="group__internal.html#structMDB__cursor">MDB_cursor</a> *m0, <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="separator:ga069b06dad34fb787dd6066242ca1219c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga9ac437d8c0988e3968b5901c38ac5639"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="group__internal.html#gabbaef7c9c710f8652a62c32d748c040e">txnid_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#ga9ac437d8c0988e3968b5901c38ac5639">mdb_find_oldest</a> (<a class="el" href="group__internal.html#structMDB__txn">MDB_txn</a> *txn)</td></tr>
<tr class="separator:ga9ac437d8c0988e3968b5901c38ac5639"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga6875ba61becc0753b9aafe6bd6583da1"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#ga6875ba61becc0753b9aafe6bd6583da1">mdb_page_dirty</a> (<a class="el" href="group__internal.html#structMDB__txn">MDB_txn</a> *txn, <a class="el" href="group__internal.html#structMDB__page">MDB_page</a> *mp)</td></tr>
<tr class="separator:ga6875ba61becc0753b9aafe6bd6583da1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga2cc9761d31dc4f5b07ab6ad236ba3086"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#ga2cc9761d31dc4f5b07ab6ad236ba3086">mdb_page_copy</a> (<a class="el" href="group__internal.html#structMDB__page">MDB_page</a> *dst, <a class="el" href="group__internal.html#structMDB__page">MDB_page</a> *src, unsigned int psize)</td></tr>
<tr class="separator:ga2cc9761d31dc4f5b07ab6ad236ba3086"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaf670ed8fe8f72a378e2c081b15898285"><td class="memItemLeft" align="right" valign="top">static int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#gaf670ed8fe8f72a378e2c081b15898285">mdb_page_unspill</a> (<a class="el" href="group__internal.html#structMDB__txn">MDB_txn</a> *txn, <a class="el" href="group__internal.html#structMDB__page">MDB_page</a> *mp, <a class="el" href="group__internal.html#structMDB__page">MDB_page</a> **ret)</td></tr>
<tr class="separator:gaf670ed8fe8f72a378e2c081b15898285"><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__internal.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:ga151dafe0972cec0a29112df9bffbb1ef"><td class="memItemLeft" align="right" valign="top">static int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#ga151dafe0972cec0a29112df9bffbb1ef">mdb_cursor_shadow</a> (<a class="el" href="group__internal.html#structMDB__txn">MDB_txn</a> *src, <a class="el" href="group__internal.html#structMDB__txn">MDB_txn</a> *dst)</td></tr>
<tr class="separator:ga151dafe0972cec0a29112df9bffbb1ef"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaecfd3955976bfaec88b3b9da2724fae1"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#gaecfd3955976bfaec88b3b9da2724fae1">mdb_cursors_close</a> (<a class="el" href="group__internal.html#structMDB__txn">MDB_txn</a> *txn, unsigned merge)</td></tr>
<tr class="separator:gaecfd3955976bfaec88b3b9da2724fae1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga1b1d6a2c079fc7b6e3a014936b303c7b"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#ga1b1d6a2c079fc7b6e3a014936b303c7b">mdb_txn_reset0</a> (<a class="el" href="group__internal.html#structMDB__txn">MDB_txn</a> *txn, const char *act)</td></tr>
<tr class="separator:ga1b1d6a2c079fc7b6e3a014936b303c7b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gafecc7a86bc8dd8bf920ded205ac736ce"><td class="memItemLeft" align="right" valign="top">static int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#gafecc7a86bc8dd8bf920ded205ac736ce">mdb_reader_pid</a> (<a class="el" href="group__internal.html#structMDB__env">MDB_env</a> *env, enum Pidlock_op op, MDB_PID_T pid)</td></tr>
<tr class="separator:gafecc7a86bc8dd8bf920ded205ac736ce"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga59ede8adc74766fbe497cf3d5f633056"><td class="memItemLeft" align="right" valign="top">static int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#ga59ede8adc74766fbe497cf3d5f633056">mdb_txn_renew0</a> (<a class="el" href="group__internal.html#structMDB__txn">MDB_txn</a> *txn)</td></tr>
<tr class="separator:ga59ede8adc74766fbe497cf3d5f633056"><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__internal.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:gaec09fc4062fc4d99882f7f7256570bdb"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#gaec09fc4062fc4d99882f7f7256570bdb">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> **ret)</td></tr>
<tr class="memdesc:gaec09fc4062fc4d99882f7f7256570bdb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a transaction for use with the environment.  <a href="#gaec09fc4062fc4d99882f7f7256570bdb">More...</a><br/></td></tr>
<tr class="separator:gaec09fc4062fc4d99882f7f7256570bdb"><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__internal.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:gab2820c2affaae62d7ac6dc3f0657f59a"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#gab2820c2affaae62d7ac6dc3f0657f59a">mdb_dbis_update</a> (<a class="el" href="group__internal.html#structMDB__txn">MDB_txn</a> *txn, int keep)</td></tr>
<tr class="separator:gab2820c2affaae62d7ac6dc3f0657f59a"><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__internal.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:ga73a5938ae4c3239ee11efa07eb22b882"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.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:ga03e05820d0433f11ce38e511a9a3c629"><td class="memItemLeft" align="right" valign="top">static int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#ga03e05820d0433f11ce38e511a9a3c629">mdb_freelist_save</a> (<a class="el" href="group__internal.html#structMDB__txn">MDB_txn</a> *txn)</td></tr>
<tr class="separator:ga03e05820d0433f11ce38e511a9a3c629"><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__internal.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:gad792b98efe300bb795820976a5a2cbfd"><td class="memItemLeft" align="right" valign="top">static int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#gad792b98efe300bb795820976a5a2cbfd">mdb_env_init_meta</a> (<a class="el" href="group__internal.html#structMDB__env">MDB_env</a> *env, <a class="el" href="group__internal.html#structMDB__meta">MDB_meta</a> *meta)</td></tr>
<tr class="separator:gad792b98efe300bb795820976a5a2cbfd"><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__internal.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:ga13df6317a6d6fd91756e4a8c7325aab7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga13df6317a6d6fd91756e4a8c7325aab7"></a>
static int&#160;</td><td class="memItemRight" valign="bottom"><b>mdb_env_map</b> (<a class="el" href="group__internal.html#structMDB__env">MDB_env</a> *env, void *addr, int newsize)</td></tr>
<tr class="separator:ga13df6317a6d6fd91756e4a8c7325aab7"><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__internal.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:gaa2fc2f1f37cb1115e733b62cab2fcdbc"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.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:gae687966c24b790630be2a41573fe40e2"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.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__internal.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:gaefecf29f303ebda56bbd06446e11b64e"><td class="memItemLeft" align="right" valign="top">static int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#gaefecf29f303ebda56bbd06446e11b64e">mdb_env_open2</a> (<a class="el" href="group__internal.html#structMDB__env">MDB_env</a> *env)</td></tr>
<tr class="separator:gaefecf29f303ebda56bbd06446e11b64e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae8bb5dcae6012a3ac16975822f98abc7"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#gae8bb5dcae6012a3ac16975822f98abc7">mdb_env_reader_dest</a> (void *ptr)</td></tr>
<tr class="separator:gae8bb5dcae6012a3ac16975822f98abc7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae06bb1556681524d6218fdcd44506747"><td class="memItemLeft" align="right" valign="top">static int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#gae06bb1556681524d6218fdcd44506747">mdb_env_share_locks</a> (<a class="el" href="group__internal.html#structMDB__env">MDB_env</a> *env, int *excl)</td></tr>
<tr class="separator:gae06bb1556681524d6218fdcd44506747"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga15ecdabd8c0c55c9ffdae09e7412adf4"><td class="memItemLeft" align="right" valign="top">static int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#ga15ecdabd8c0c55c9ffdae09e7412adf4">mdb_env_excl_lock</a> (<a class="el" href="group__internal.html#structMDB__env">MDB_env</a> *env, int *excl)</td></tr>
<tr class="separator:ga15ecdabd8c0c55c9ffdae09e7412adf4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga0cb04302ea7e9985a8f4be38093a37d4"><td class="memItemLeft" align="right" valign="top">static int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#ga0cb04302ea7e9985a8f4be38093a37d4">mdb_env_setup_locks</a> (<a class="el" href="group__internal.html#structMDB__env">MDB_env</a> *env, char *lpath, int mode, int *excl)</td></tr>
<tr class="separator:ga0cb04302ea7e9985a8f4be38093a37d4"><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__internal.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:gafefae3cd0c77e65ab02ffc7170c292db"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gafefae3cd0c77e65ab02ffc7170c292db"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><b>mdb_env_copyfd</b> (<a class="el" href="group__internal.html#structMDB__env">MDB_env</a> *env, <a class="el" href="group__compat.html#gab521aa5010fb1afb801a899a55569e03">HANDLE</a> fd)</td></tr>
<tr class="separator:gafefae3cd0c77e65ab02ffc7170c292db"><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__internal.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:ga4366c43ada8874588b6a62fbda2d1e95"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.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:ga02385c79b768370777d0466ece9e9e2a"><td class="memItemLeft" align="right" valign="top">static int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#ga02385c79b768370777d0466ece9e9e2a">mdb_cmp_long</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="separator:ga02385c79b768370777d0466ece9e9e2a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga8c8e3aac03984bb37d2b5adf7c4e6732"><td class="memItemLeft" align="right" valign="top">static int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#ga8c8e3aac03984bb37d2b5adf7c4e6732">mdb_cmp_int</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="separator:ga8c8e3aac03984bb37d2b5adf7c4e6732"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga2d4077f468b6ac7bb316a24a29c5f8b3"><td class="memItemLeft" align="right" valign="top">static int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#ga2d4077f468b6ac7bb316a24a29c5f8b3">mdb_cmp_cint</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="separator:ga2d4077f468b6ac7bb316a24a29c5f8b3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga6c7d0a6c4c5f89165354e6b449b0939a"><td class="memItemLeft" align="right" valign="top">static int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#ga6c7d0a6c4c5f89165354e6b449b0939a">mdb_cmp_memn</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="separator:ga6c7d0a6c4c5f89165354e6b449b0939a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga5466b70b4a8c1f35551cf4295ed9bfe1"><td class="memItemLeft" align="right" valign="top">static int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#ga5466b70b4a8c1f35551cf4295ed9bfe1">mdb_cmp_memnr</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="separator:ga5466b70b4a8c1f35551cf4295ed9bfe1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac4b7ee655d296cff5a2d7fd2c69c2cca"><td class="memItemLeft" align="right" valign="top">static int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#gac4b7ee655d296cff5a2d7fd2c69c2cca">mdb_page_search_lowest</a> (<a class="el" href="group__internal.html#structMDB__cursor">MDB_cursor</a> *mc)</td></tr>
<tr class="separator:gac4b7ee655d296cff5a2d7fd2c69c2cca"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga3a35edbe73bf847b123ad5466be2794d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga3a35edbe73bf847b123ad5466be2794d"></a>
static int&#160;</td><td class="memItemRight" valign="bottom"><b>mdb_ovpage_free</b> (<a class="el" href="group__internal.html#structMDB__cursor">MDB_cursor</a> *mc, <a class="el" href="group__internal.html#structMDB__page">MDB_page</a> *mp)</td></tr>
<tr class="separator:ga3a35edbe73bf847b123ad5466be2794d"><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__internal.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:ga9a89df677df185c758470ee67111bd38"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#ga9a89df677df185c758470ee67111bd38">mdb_cursor_get</a> (<a class="el" href="group__internal.html#structMDB__cursor">MDB_cursor</a> *mc, <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:ga9a89df677df185c758470ee67111bd38"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieve by cursor.  <a href="#ga9a89df677df185c758470ee67111bd38">More...</a><br/></td></tr>
<tr class="separator:ga9a89df677df185c758470ee67111bd38"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga380b05ef633d1c1e59a0ae9ae1675310"><td class="memItemLeft" align="right" valign="top">static int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#ga380b05ef633d1c1e59a0ae9ae1675310">mdb_cursor_touch</a> (<a class="el" href="group__internal.html#structMDB__cursor">MDB_cursor</a> *mc)</td></tr>
<tr class="separator:ga380b05ef633d1c1e59a0ae9ae1675310"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaf13a73e97adab038c58aed44066b782e"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#gaf13a73e97adab038c58aed44066b782e">mdb_cursor_put</a> (<a class="el" href="group__internal.html#structMDB__cursor">MDB_cursor</a> *mc, <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:gaf13a73e97adab038c58aed44066b782e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Store by cursor.  <a href="#gaf13a73e97adab038c58aed44066b782e">More...</a><br/></td></tr>
<tr class="separator:gaf13a73e97adab038c58aed44066b782e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaec9d5e29f4cc470e383b6b9f46d9239d"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#gaec9d5e29f4cc470e383b6b9f46d9239d">mdb_cursor_del</a> (<a class="el" href="group__internal.html#structMDB__cursor">MDB_cursor</a> *mc, unsigned int flags)</td></tr>
<tr class="memdesc:gaec9d5e29f4cc470e383b6b9f46d9239d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Delete current key/data pair.  <a href="#gaec9d5e29f4cc470e383b6b9f46d9239d">More...</a><br/></td></tr>
<tr class="separator:gaec9d5e29f4cc470e383b6b9f46d9239d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga6f7ad479fa949270fe28659202c6aa0c"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#ga6f7ad479fa949270fe28659202c6aa0c">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> **ret)</td></tr>
<tr class="memdesc:ga6f7ad479fa949270fe28659202c6aa0c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a cursor handle.  <a href="#ga6f7ad479fa949270fe28659202c6aa0c">More...</a><br/></td></tr>
<tr class="separator:ga6f7ad479fa949270fe28659202c6aa0c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga64f8dec3653d3d4226c87b820265e7e5"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#ga64f8dec3653d3d4226c87b820265e7e5">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> *mc)</td></tr>
<tr class="memdesc:ga64f8dec3653d3d4226c87b820265e7e5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Renew a cursor handle.  <a href="#ga64f8dec3653d3d4226c87b820265e7e5">More...</a><br/></td></tr>
<tr class="separator:ga64f8dec3653d3d4226c87b820265e7e5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gafb422278c217a4d3ff0cccda47048006"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#gafb422278c217a4d3ff0cccda47048006">mdb_cursor_count</a> (<a class="el" href="group__internal.html#structMDB__cursor">MDB_cursor</a> *mc, size_t *countp)</td></tr>
<tr class="memdesc:gafb422278c217a4d3ff0cccda47048006"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return count of duplicates for current key.  <a href="#gafb422278c217a4d3ff0cccda47048006">More...</a><br/></td></tr>
<tr class="separator:gafb422278c217a4d3ff0cccda47048006"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga476c508a1e7a68e75bcef239189be5c7"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#ga476c508a1e7a68e75bcef239189be5c7">mdb_cursor_close</a> (<a class="el" href="group__internal.html#structMDB__cursor">MDB_cursor</a> *mc)</td></tr>
<tr class="memdesc:ga476c508a1e7a68e75bcef239189be5c7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Close a cursor handle.  <a href="#ga476c508a1e7a68e75bcef239189be5c7">More...</a><br/></td></tr>
<tr class="separator:ga476c508a1e7a68e75bcef239189be5c7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gabec1312ed0392d06b73e5a3c9629c673"><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__internal.html#gabec1312ed0392d06b73e5a3c9629c673">mdb_cursor_txn</a> (<a class="el" href="group__internal.html#structMDB__cursor">MDB_cursor</a> *mc)</td></tr>
<tr class="memdesc:gabec1312ed0392d06b73e5a3c9629c673"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the cursor's transaction handle.  <a href="#gabec1312ed0392d06b73e5a3c9629c673">More...</a><br/></td></tr>
<tr class="separator:gabec1312ed0392d06b73e5a3c9629c673"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae49a703a7ee01348b1155c6e3c3bd3e0"><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__internal.html#gae49a703a7ee01348b1155c6e3c3bd3e0">mdb_cursor_dbi</a> (<a class="el" href="group__internal.html#structMDB__cursor">MDB_cursor</a> *mc)</td></tr>
<tr class="memdesc:gae49a703a7ee01348b1155c6e3c3bd3e0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the cursor's database handle.  <a href="#gae49a703a7ee01348b1155c6e3c3bd3e0">More...</a><br/></td></tr>
<tr class="separator:gae49a703a7ee01348b1155c6e3c3bd3e0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga55f9654bc51758e1d98ac644ed48fc7c"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#ga55f9654bc51758e1d98ac644ed48fc7c">mdb_cursor_copy</a> (const <a class="el" href="group__internal.html#structMDB__cursor">MDB_cursor</a> *csrc, <a class="el" href="group__internal.html#structMDB__cursor">MDB_cursor</a> *cdst)</td></tr>
<tr class="separator:ga55f9654bc51758e1d98ac644ed48fc7c"><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__internal.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:ga4fa8573d9236d54687c61827ebf8cac0"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.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:ga12b9706743653a31f81d05a2810e0009"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#ga12b9706743653a31f81d05a2810e0009">mdb_env_set_flags</a> (<a class="el" href="group__internal.html#structMDB__env">MDB_env</a> *env, unsigned int flag, int onoff)</td></tr>
<tr class="memdesc:ga12b9706743653a31f81d05a2810e0009"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set environment flags.  <a href="#ga12b9706743653a31f81d05a2810e0009">More...</a><br/></td></tr>
<tr class="separator:ga12b9706743653a31f81d05a2810e0009"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac2a0381db71418e75fa581cc5cd2df3f"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#gac2a0381db71418e75fa581cc5cd2df3f">mdb_env_get_flags</a> (<a class="el" href="group__internal.html#structMDB__env">MDB_env</a> *env, unsigned int *arg)</td></tr>
<tr class="memdesc:gac2a0381db71418e75fa581cc5cd2df3f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get environment flags.  <a href="#gac2a0381db71418e75fa581cc5cd2df3f">More...</a><br/></td></tr>
<tr class="separator:gac2a0381db71418e75fa581cc5cd2df3f"><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__internal.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__internal.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__internal.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:gaf023352794481365e8a5941cf7d5b03f"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#gaf023352794481365e8a5941cf7d5b03f">mdb_env_get_path</a> (<a class="el" href="group__internal.html#structMDB__env">MDB_env</a> *env, const char **arg)</td></tr>
<tr class="memdesc:gaf023352794481365e8a5941cf7d5b03f"><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="#gaf023352794481365e8a5941cf7d5b03f">More...</a><br/></td></tr>
<tr class="separator:gaf023352794481365e8a5941cf7d5b03f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga2925e245e16c36d7601b65b416c3697e"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#ga2925e245e16c36d7601b65b416c3697e">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> *arg)</td></tr>
<tr class="memdesc:ga2925e245e16c36d7601b65b416c3697e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the filedescriptor for the given environment.  <a href="#ga2925e245e16c36d7601b65b416c3697e">More...</a><br/></td></tr>
<tr class="separator:ga2925e245e16c36d7601b65b416c3697e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga9488ef46e55668afe44e463dc3af15a2"><td class="memItemLeft" align="right" valign="top">static int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#ga9488ef46e55668afe44e463dc3af15a2">mdb_stat0</a> (<a class="el" href="group__internal.html#structMDB__env">MDB_env</a> *env, <a class="el" href="group__internal.html#structMDB__db">MDB_db</a> *db, <a class="el" href="group__mdb.html#structMDB__stat">MDB_stat</a> *arg)</td></tr>
<tr class="separator:ga9488ef46e55668afe44e463dc3af15a2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gadd30aa81cc4d10bd443104c0be19562a"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#gadd30aa81cc4d10bd443104c0be19562a">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> *arg)</td></tr>
<tr class="memdesc:gadd30aa81cc4d10bd443104c0be19562a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return statistics about the MDB environment.  <a href="#gadd30aa81cc4d10bd443104c0be19562a">More...</a><br/></td></tr>
<tr class="separator:gadd30aa81cc4d10bd443104c0be19562a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga6689bbe90d15b1bbc3a944ef0d8e757d"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#ga6689bbe90d15b1bbc3a944ef0d8e757d">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> *arg)</td></tr>
<tr class="memdesc:ga6689bbe90d15b1bbc3a944ef0d8e757d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return information about the MDB environment.  <a href="#ga6689bbe90d15b1bbc3a944ef0d8e757d">More...</a><br/></td></tr>
<tr class="separator:ga6689bbe90d15b1bbc3a944ef0d8e757d"><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__internal.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:ga4682c89a4e6d43a814c3860ffab3a906"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#ga4682c89a4e6d43a814c3860ffab3a906">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> *arg)</td></tr>
<tr class="memdesc:ga4682c89a4e6d43a814c3860ffab3a906"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieve statistics for a database.  <a href="#ga4682c89a4e6d43a814c3860ffab3a906">More...</a><br/></td></tr>
<tr class="separator:ga4682c89a4e6d43a814c3860ffab3a906"><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__internal.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:ga95ba4cb721035478a8705e57b91ae4d4"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.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:gab966fab3840fc54a6571dfb32b00f2db"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.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__internal.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__internal.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__internal.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__internal.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:gaaf0be004f33828bf2fb09d77eb3cef94"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.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:ga8550000cd0501a44f57ee6dff0188744"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.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:ga3586dfb5b1ad377d8d192cfe1aa72bc7"><td class="memItemLeft" align="right" valign="top">static int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#ga3586dfb5b1ad377d8d192cfe1aa72bc7">mdb_pid_insert</a> (MDB_PID_T *ids, MDB_PID_T pid)</td></tr>
<tr class="separator:ga3586dfb5b1ad377d8d192cfe1aa72bc7"><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__internal.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><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="var-members"></a>
Variables</h2></td></tr>
<tr class="memitem:ga400f94a8dbf4515d63ba1089294e174a"><td class="memItemLeft" align="right" valign="top">static char *const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#ga400f94a8dbf4515d63ba1089294e174a">mdb_errstr</a> []</td></tr>
<tr class="separator:ga400f94a8dbf4515d63ba1089294e174a"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<hr/><h2 class="groupheader">Data Structure Documentation</h2>
<a name="structMDB__page" id="structMDB__page"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">struct MDB_page</td>
        </tr>
      </table>
</div><div class="memdoc">
<div class="textblock"><p>Common header for all page types. Overflow records occupy a number of contiguous pages with no headers on any page after the first. </p>
</div><table class="memberdecls">
<tr><td colspan="2"><h3>Data Fields</h3></td></tr>
<tr class="memitem:a7715ba20e7fb292618ab6f6ac8e221e1"><td class="memItemLeft" ><a class="anchor" id="a7715ba20e7fb292618ab6f6ac8e221e1"></a>
union {</td></tr>
<tr class="memitem:a8aa6645cbd68477b44d35b64a1a2dccb"><td class="memItemLeft" >&#160;&#160;&#160;<a class="el" href="group__internal.html#gadb65f0424c9d3827bf6409087ad555cd">pgno_t</a>&#160;&#160;&#160;<a class="el" href="group__internal.html#a6843bdabaf55bcabe210d81df5cd80fb">p_pgno</a></td></tr>
<tr class="separator:a8aa6645cbd68477b44d35b64a1a2dccb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab440fe320319632e2c3e8c9a05edb268"><td class="memItemLeft" >&#160;&#160;&#160;void *&#160;&#160;&#160;<a class="el" href="group__internal.html#aef7cd55b9c33b8e797c0cb5c73951183">p_next</a></td></tr>
<tr class="separator:ab440fe320319632e2c3e8c9a05edb268"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7715ba20e7fb292618ab6f6ac8e221e1"><td class="memItemLeft" valign="top">}&#160;</td><td class="memItemRight" valign="bottom"><b>mp_p</b></td></tr>
<tr class="separator:a7715ba20e7fb292618ab6f6ac8e221e1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a02eb008ff64ead97bfacccf6f154f7fe"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a02eb008ff64ead97bfacccf6f154f7fe"></a>
uint16_t&#160;</td><td class="memItemRight" valign="bottom"><b>mp_pad</b></td></tr>
<tr class="separator:a02eb008ff64ead97bfacccf6f154f7fe"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a851621a8c9f179faf4bdb82eb3b65e1e"><td class="memItemLeft" align="right" valign="top">uint16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#a851621a8c9f179faf4bdb82eb3b65e1e">mp_flags</a></td></tr>
<tr class="separator:a851621a8c9f179faf4bdb82eb3b65e1e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6a5c7b6168987a61759643568e21e654"><td class="memItemLeft" ><a class="anchor" id="a6a5c7b6168987a61759643568e21e654"></a>
union {</td></tr>
<tr class="memitem:a790eedb8eae6c6617fd6e63b36a5450c"><td class="memItemLeft" ><a class="anchor" id="a3c88eef6c7c272bbb40dba3a5dbbbf75"></a>
&#160;&#160;&#160;struct {</td></tr>
<tr class="memitem:a68a8067ae9b5391b207291928a3f478c"><td class="memItemLeft" >&#160;&#160;&#160;&#160;&#160;&#160;<a class="el" href="group__internal.html#ga730e17f748208d77496ebd895c8375dc">indx_t</a>&#160;&#160;&#160;<a class="el" href="group__internal.html#aae5a99c09df21f2cc03bea30ded4cf77">pb_lower</a></td></tr>
<tr class="separator:a68a8067ae9b5391b207291928a3f478c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aebe7b03659ad953d2bc669d770b2dd92"><td class="memItemLeft" >&#160;&#160;&#160;&#160;&#160;&#160;<a class="el" href="group__internal.html#ga730e17f748208d77496ebd895c8375dc">indx_t</a>&#160;&#160;&#160;<a class="el" href="group__internal.html#a1fd74cc370377addbb519ae429718b33">pb_upper</a></td></tr>
<tr class="separator:aebe7b03659ad953d2bc669d770b2dd92"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a790eedb8eae6c6617fd6e63b36a5450c"><td class="memItemLeft" valign="top">&#160;&#160;&#160;}&#160;&#160;&#160;<b>pb</b></td></tr>
<tr class="separator:a790eedb8eae6c6617fd6e63b36a5450c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5cd9e565d72b4c90e938ea3ae9e34f87"><td class="memItemLeft" >&#160;&#160;&#160;uint32_t&#160;&#160;&#160;<a class="el" href="group__internal.html#a85165930b6c7036e9b570fc86a5f4ace">pb_pages</a></td></tr>
<tr class="separator:a5cd9e565d72b4c90e938ea3ae9e34f87"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6a5c7b6168987a61759643568e21e654"><td class="memItemLeft" valign="top">}&#160;</td><td class="memItemRight" valign="bottom"><b>mp_pb</b></td></tr>
<tr class="separator:a6a5c7b6168987a61759643568e21e654"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae0e2d177c6a934322ef3736875d70caf"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__internal.html#ga730e17f748208d77496ebd895c8375dc">indx_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#ae0e2d177c6a934322ef3736875d70caf">mp_ptrs</a> [1]</td></tr>
<tr class="separator:ae0e2d177c6a934322ef3736875d70caf"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h4 class="groupheader">Field Documentation</h4>
<a class="anchor" id="a6843bdabaf55bcabe210d81df5cd80fb"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__internal.html#gadb65f0424c9d3827bf6409087ad555cd">pgno_t</a> MDB_page::p_pgno</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>page number </p>

</div>
</div>
<a class="anchor" id="aef7cd55b9c33b8e797c0cb5c73951183"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void* MDB_page::p_next</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>for in-memory list of freed structs </p>

</div>
</div>
<a class="anchor" id="a851621a8c9f179faf4bdb82eb3b65e1e"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">uint16_t MDB_page::mp_flags</td>
        </tr>
      </table>
</div><div class="memdoc">
<p><a class="el" href="group__mdb__page.html">Page Flags</a> </p>

</div>
</div>
<a class="anchor" id="aae5a99c09df21f2cc03bea30ded4cf77"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__internal.html#ga730e17f748208d77496ebd895c8375dc">indx_t</a> MDB_page::pb_lower</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>lower bound of free space </p>

</div>
</div>
<a class="anchor" id="a1fd74cc370377addbb519ae429718b33"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__internal.html#ga730e17f748208d77496ebd895c8375dc">indx_t</a> MDB_page::pb_upper</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>upper bound of free space </p>

</div>
</div>
<a class="anchor" id="a85165930b6c7036e9b570fc86a5f4ace"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">uint32_t MDB_page::pb_pages</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>number of overflow pages </p>

</div>
</div>
<a class="anchor" id="ae0e2d177c6a934322ef3736875d70caf"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__internal.html#ga730e17f748208d77496ebd895c8375dc">indx_t</a> MDB_page::mp_ptrs[1]</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>dynamic size </p>

</div>
</div>

</div>
</div>
<a name="structMDB__node" id="structMDB__node"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">struct MDB_node</td>
        </tr>
      </table>
</div><div class="memdoc">
<div class="textblock"><p>Header for a single key/data pair within a page. Used in pages of type <a class="el" href="group__mdb__page.html#gad6639bfcad26dbcbf7970dfa28f1a930">P_BRANCH</a> and <a class="el" href="group__mdb__page.html#gac85fb59a9a2eda0d33e58b23a7ca019a">P_LEAF</a> without <a class="el" href="group__mdb__page.html#ga9c80486a549b2efbd5561cdd4df238c4">P_LEAF2</a>. We guarantee 2-byte alignment for '<a class="el" href="group__internal.html#structMDB__node">MDB_node</a>'s. </p>
</div><table class="memberdecls">
<tr><td colspan="2"><h3>Data Fields</h3></td></tr>
<tr class="memitem:a4024788aea30105dcea5fcf6d4381404"><td class="memItemLeft" align="right" valign="top">unsigned short&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#a4024788aea30105dcea5fcf6d4381404">mn_lo</a></td></tr>
<tr class="separator:a4024788aea30105dcea5fcf6d4381404"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0ef414754e56736bcadac31e9a236e86"><td class="memItemLeft" align="right" valign="top">unsigned short&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#a0ef414754e56736bcadac31e9a236e86">mn_hi</a></td></tr>
<tr class="separator:a0ef414754e56736bcadac31e9a236e86"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2c59e19a77ae5f2cc63413017dc20ca1"><td class="memItemLeft" align="right" valign="top">unsigned short&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#a2c59e19a77ae5f2cc63413017dc20ca1">mn_flags</a></td></tr>
<tr class="separator:a2c59e19a77ae5f2cc63413017dc20ca1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0c651711ad2639385a05b64c9e590d84"><td class="memItemLeft" align="right" valign="top">unsigned short&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#a0c651711ad2639385a05b64c9e590d84">mn_ksize</a></td></tr>
<tr class="separator:a0c651711ad2639385a05b64c9e590d84"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa74167594e5b1c4d99f3457c4bbc2844"><td class="memItemLeft" align="right" valign="top">char&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#aa74167594e5b1c4d99f3457c4bbc2844">mn_data</a> [1]</td></tr>
<tr class="separator:aa74167594e5b1c4d99f3457c4bbc2844"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h4 class="groupheader">Field Documentation</h4>
<a class="anchor" id="a4024788aea30105dcea5fcf6d4381404"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">unsigned short MDB_node::mn_lo</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>lo and hi are used for data size on leaf nodes and for child pgno on branch nodes. On 64 bit platforms, flags is also used for pgno. (Branch nodes have no flags). They are in host byte order in case that lets some accesses be optimized into a 32-bit word access. </p>

</div>
</div>
<a class="anchor" id="a0ef414754e56736bcadac31e9a236e86"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">unsigned short MDB_node::mn_hi</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>part of data size or pgno </p>

</div>
</div>
<a class="anchor" id="a2c59e19a77ae5f2cc63413017dc20ca1"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">unsigned short MDB_node::mn_flags</td>
        </tr>
      </table>
</div><div class="memdoc">
<p><a class="el" href="group__mdb__node.html">Node Flags</a> </p>

</div>
</div>
<a class="anchor" id="a0c651711ad2639385a05b64c9e590d84"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">unsigned short MDB_node::mn_ksize</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>key size </p>

</div>
</div>
<a class="anchor" id="aa74167594e5b1c4d99f3457c4bbc2844"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">char MDB_node::mn_data[1]</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>key and data are appended here </p>

</div>
</div>

</div>
</div>
<a name="structMDB__db" id="structMDB__db"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">struct MDB_db</td>
        </tr>
      </table>
</div><div class="memdoc">
<div class="textblock"><p>Information about a single database in the environment. </p>
</div><table class="memberdecls">
<tr><td colspan="2"><h3>Data Fields</h3></td></tr>
<tr class="memitem:a01ca7b28ab02c79ba76b64b32f23cc9a"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#a01ca7b28ab02c79ba76b64b32f23cc9a">md_pad</a></td></tr>
<tr class="separator:a01ca7b28ab02c79ba76b64b32f23cc9a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a91a11c5c8034bd175eb0dd01da528981"><td class="memItemLeft" align="right" valign="top">uint16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#a91a11c5c8034bd175eb0dd01da528981">md_flags</a></td></tr>
<tr class="separator:a91a11c5c8034bd175eb0dd01da528981"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a972437b5350a9306b3e0d6d315b3456a"><td class="memItemLeft" align="right" valign="top">uint16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#a972437b5350a9306b3e0d6d315b3456a">md_depth</a></td></tr>
<tr class="separator:a972437b5350a9306b3e0d6d315b3456a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a656181db923d8349e54d051282e09ad3"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__internal.html#gadb65f0424c9d3827bf6409087ad555cd">pgno_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#a656181db923d8349e54d051282e09ad3">md_branch_pages</a></td></tr>
<tr class="separator:a656181db923d8349e54d051282e09ad3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad5d881546cdc62307869f6aa30b83be9"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__internal.html#gadb65f0424c9d3827bf6409087ad555cd">pgno_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#ad5d881546cdc62307869f6aa30b83be9">md_leaf_pages</a></td></tr>
<tr class="separator:ad5d881546cdc62307869f6aa30b83be9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2142ebea501d00b132d6d4fadf6fbd24"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__internal.html#gadb65f0424c9d3827bf6409087ad555cd">pgno_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#a2142ebea501d00b132d6d4fadf6fbd24">md_overflow_pages</a></td></tr>
<tr class="separator:a2142ebea501d00b132d6d4fadf6fbd24"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af17097c1a609addb72c49ddfcd716c3e"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#af17097c1a609addb72c49ddfcd716c3e">md_entries</a></td></tr>
<tr class="separator:af17097c1a609addb72c49ddfcd716c3e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa082a24262d25759cfbcf69a537f859a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__internal.html#gadb65f0424c9d3827bf6409087ad555cd">pgno_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#aa082a24262d25759cfbcf69a537f859a">md_root</a></td></tr>
<tr class="separator:aa082a24262d25759cfbcf69a537f859a"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h4 class="groupheader">Field Documentation</h4>
<a class="anchor" id="a01ca7b28ab02c79ba76b64b32f23cc9a"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">uint32_t MDB_db::md_pad</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>also ksize for LEAF2 pages </p>

</div>
</div>
<a class="anchor" id="a91a11c5c8034bd175eb0dd01da528981"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">uint16_t MDB_db::md_flags</td>
        </tr>
      </table>
</div><div class="memdoc">
<p><a class="el" href="group__mdb__dbi__open.html">Database Flags</a> </p>

</div>
</div>
<a class="anchor" id="a972437b5350a9306b3e0d6d315b3456a"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">uint16_t MDB_db::md_depth</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>depth of this tree </p>

</div>
</div>
<a class="anchor" id="a656181db923d8349e54d051282e09ad3"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__internal.html#gadb65f0424c9d3827bf6409087ad555cd">pgno_t</a> MDB_db::md_branch_pages</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>number of internal pages </p>

</div>
</div>
<a class="anchor" id="ad5d881546cdc62307869f6aa30b83be9"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__internal.html#gadb65f0424c9d3827bf6409087ad555cd">pgno_t</a> MDB_db::md_leaf_pages</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>number of leaf pages </p>

</div>
</div>
<a class="anchor" id="a2142ebea501d00b132d6d4fadf6fbd24"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__internal.html#gadb65f0424c9d3827bf6409087ad555cd">pgno_t</a> MDB_db::md_overflow_pages</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>number of overflow pages </p>

</div>
</div>
<a class="anchor" id="af17097c1a609addb72c49ddfcd716c3e"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">size_t MDB_db::md_entries</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>number of data items </p>

</div>
</div>
<a class="anchor" id="aa082a24262d25759cfbcf69a537f859a"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__internal.html#gadb65f0424c9d3827bf6409087ad555cd">pgno_t</a> MDB_db::md_root</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>the root page of this tree </p>

</div>
</div>

</div>
</div>
<a name="structMDB__meta" id="structMDB__meta"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">struct MDB_meta</td>
        </tr>
      </table>
</div><div class="memdoc">
<div class="textblock"><p>Meta page content. A meta page is the start point for accessing a database snapshot. Pages 0-1 are meta pages. Transaction N writes meta page #(N % 2). </p>
</div><table class="memberdecls">
<tr><td colspan="2"><h3>Data Fields</h3></td></tr>
<tr class="memitem:a45631452dce29f76434d607005ff4495"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#a45631452dce29f76434d607005ff4495">mm_magic</a></td></tr>
<tr class="separator:a45631452dce29f76434d607005ff4495"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aff649ecae57a8ace4045776e49957d52"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#aff649ecae57a8ace4045776e49957d52">mm_version</a></td></tr>
<tr class="separator:aff649ecae57a8ace4045776e49957d52"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a22a6641d311f707a99231d350308febc"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#a22a6641d311f707a99231d350308febc">mm_address</a></td></tr>
<tr class="separator:a22a6641d311f707a99231d350308febc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a66bcedbcb0bee9f2fc196d942556f68d"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#a66bcedbcb0bee9f2fc196d942556f68d">mm_mapsize</a></td></tr>
<tr class="separator:a66bcedbcb0bee9f2fc196d942556f68d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af0f81944c251bbefcc1ed04a5e6b0200"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__internal.html#structMDB__db">MDB_db</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#af0f81944c251bbefcc1ed04a5e6b0200">mm_dbs</a> [2]</td></tr>
<tr class="separator:af0f81944c251bbefcc1ed04a5e6b0200"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a794e3644abac188a4b57b3f76ee7af40"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__internal.html#gadb65f0424c9d3827bf6409087ad555cd">pgno_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#a794e3644abac188a4b57b3f76ee7af40">mm_last_pg</a></td></tr>
<tr class="separator:a794e3644abac188a4b57b3f76ee7af40"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a776f42e94166a39a4de877ff24a80f68"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__internal.html#gabbaef7c9c710f8652a62c32d748c040e">txnid_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#a776f42e94166a39a4de877ff24a80f68">mm_txnid</a></td></tr>
<tr class="separator:a776f42e94166a39a4de877ff24a80f68"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h4 class="groupheader">Field Documentation</h4>
<a class="anchor" id="a45631452dce29f76434d607005ff4495"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">uint32_t MDB_meta::mm_magic</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Stamp identifying this as an MDB file. It must be set to <a class="el" href="group__internal.html#ga4cac6326c08147a019e8ddb17ad712f6">MDB_MAGIC</a>. </p>

</div>
</div>
<a class="anchor" id="aff649ecae57a8ace4045776e49957d52"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">uint32_t MDB_meta::mm_version</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Version number of this lock file. Must be set to <a class="el" href="group__internal.html#ga5d462b5ef39d34a85e633eb238655ce2">MDB_DATA_VERSION</a>. </p>

</div>
</div>
<a class="anchor" id="a22a6641d311f707a99231d350308febc"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void* MDB_meta::mm_address</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>address for fixed mapping </p>

</div>
</div>
<a class="anchor" id="a66bcedbcb0bee9f2fc196d942556f68d"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">size_t MDB_meta::mm_mapsize</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>size of mmap region </p>

</div>
</div>
<a class="anchor" id="af0f81944c251bbefcc1ed04a5e6b0200"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__internal.html#structMDB__db">MDB_db</a> MDB_meta::mm_dbs[2]</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>first is free space, 2nd is main db </p>

</div>
</div>
<a class="anchor" id="a794e3644abac188a4b57b3f76ee7af40"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__internal.html#gadb65f0424c9d3827bf6409087ad555cd">pgno_t</a> MDB_meta::mm_last_pg</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>last used page in file </p>

</div>
</div>
<a class="anchor" id="a776f42e94166a39a4de877ff24a80f68"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__internal.html#gabbaef7c9c710f8652a62c32d748c040e">txnid_t</a> MDB_meta::mm_txnid</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>txnid that committed this page </p>

</div>
</div>

</div>
</div>
<a name="unionMDB__metabuf" id="unionMDB__metabuf"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">union MDB_metabuf</td>
        </tr>
      </table>
</div><div class="memdoc">
<div class="textblock"><p>Buffer for a stack-allocated meta page. The members define size and alignment, and silence type aliasing warnings. They are not used directly; that could mean incorrectly using several union members in parallel. </p>
</div><table class="memberdecls">
<tr><td colspan="2"><h3>Data Fields</h3></td></tr>
<tr class="memitem:adf60c908715689ce6f32c0c136f74e24"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adf60c908715689ce6f32c0c136f74e24"></a>
<a class="el" href="group__internal.html#structMDB__page">MDB_page</a>&#160;</td><td class="memItemRight" valign="bottom"><b>mb_page</b></td></tr>
<tr class="separator:adf60c908715689ce6f32c0c136f74e24"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae034bbe4fbc085a11d26d748e17d3240"><td class="memItemLeft" ><a class="anchor" id="ae034bbe4fbc085a11d26d748e17d3240"></a>
struct {</td></tr>
<tr class="memitem:a5e7d039865abe3af1bc1cd269f65c217"><td class="memItemLeft" ><a class="anchor" id="a03cf99d172ae3a262bbec31335160a64"></a>
&#160;&#160;&#160;char&#160;&#160;&#160;<b>mm_pad</b> [<a class="el" href="group__internal.html#gae25bcf0c0c5c5ead27e82543cbce02e1">PAGEHDRSZ</a>]</td></tr>
<tr class="separator:a5e7d039865abe3af1bc1cd269f65c217"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aeabd02bc361e2e21f8e8be8df4581382"><td class="memItemLeft" ><a class="anchor" id="adc6ec011a973ce513766d9d4b9761fcc"></a>
&#160;&#160;&#160;<a class="el" href="group__internal.html#structMDB__meta">MDB_meta</a>&#160;&#160;&#160;<b>mm_meta</b></td></tr>
<tr class="separator:aeabd02bc361e2e21f8e8be8df4581382"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae034bbe4fbc085a11d26d748e17d3240"><td class="memItemLeft" valign="top">}&#160;</td><td class="memItemRight" valign="bottom"><b>mb_metabuf</b></td></tr>
<tr class="separator:ae034bbe4fbc085a11d26d748e17d3240"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>

</div>
</div>
<a name="structMDB__dbx" id="structMDB__dbx"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">struct MDB_dbx</td>
        </tr>
      </table>
</div><div class="memdoc">
<div class="textblock"><p>Auxiliary DB info. The information here is mostly static/read-only. There is only a single copy of this record in the environment. </p>
</div><table class="memberdecls">
<tr><td colspan="2"><h3>Data Fields</h3></td></tr>
<tr class="memitem:afcb04fa7b107cf82bd68a4ad8e8ff17b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__mdb.html#structMDB__val">MDB_val</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#afcb04fa7b107cf82bd68a4ad8e8ff17b">md_name</a></td></tr>
<tr class="separator:afcb04fa7b107cf82bd68a4ad8e8ff17b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1fd5cb703a4d606423c30c01d705cd53"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__mdb.html#gaa8e6e7a6f99bd7142947c48f0c4b970f">MDB_cmp_func</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#a1fd5cb703a4d606423c30c01d705cd53">md_cmp</a></td></tr>
<tr class="separator:a1fd5cb703a4d606423c30c01d705cd53"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a79e8f44261045d7390fe69620e31e917"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__mdb.html#gaa8e6e7a6f99bd7142947c48f0c4b970f">MDB_cmp_func</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#a79e8f44261045d7390fe69620e31e917">md_dcmp</a></td></tr>
<tr class="separator:a79e8f44261045d7390fe69620e31e917"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5a507a8a31ca1cec34393e4966765572"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__mdb.html#gaf6dfd3df8c5c6f082c5befc585165747">MDB_rel_func</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#a5a507a8a31ca1cec34393e4966765572">md_rel</a></td></tr>
<tr class="separator:a5a507a8a31ca1cec34393e4966765572"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a284dafb1b3df0d8b701d9cb72875fb95"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#a284dafb1b3df0d8b701d9cb72875fb95">md_relctx</a></td></tr>
<tr class="separator:a284dafb1b3df0d8b701d9cb72875fb95"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h4 class="groupheader">Field Documentation</h4>
<a class="anchor" id="afcb04fa7b107cf82bd68a4ad8e8ff17b"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__mdb.html#structMDB__val">MDB_val</a> MDB_dbx::md_name</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>name of the database </p>

</div>
</div>
<a class="anchor" id="a1fd5cb703a4d606423c30c01d705cd53"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__mdb.html#gaa8e6e7a6f99bd7142947c48f0c4b970f">MDB_cmp_func</a>* MDB_dbx::md_cmp</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>function for comparing keys </p>

</div>
</div>
<a class="anchor" id="a79e8f44261045d7390fe69620e31e917"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__mdb.html#gaa8e6e7a6f99bd7142947c48f0c4b970f">MDB_cmp_func</a>* MDB_dbx::md_dcmp</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>function for comparing data items </p>

</div>
</div>
<a class="anchor" id="a5a507a8a31ca1cec34393e4966765572"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__mdb.html#gaf6dfd3df8c5c6f082c5befc585165747">MDB_rel_func</a>* MDB_dbx::md_rel</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>user relocate function </p>

</div>
</div>
<a class="anchor" id="a284dafb1b3df0d8b701d9cb72875fb95"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void* MDB_dbx::md_relctx</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>user-provided context for md_rel </p>

</div>
</div>

</div>
</div>
<a name="structMDB__txn" id="structMDB__txn"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">struct MDB_txn</td>
        </tr>
      </table>
</div><div class="memdoc">
<div class="textblock"><p>Opaque structure for a transaction handle. </p>
<p>A database transaction. Every operation requires a transaction handle.</p>
<p>All database operations require a transaction handle. Transactions may be read-only or read-write. </p>
</div><table class="memberdecls">
<tr><td colspan="2"><h3>Data Fields</h3></td></tr>
<tr class="memitem:abc63d15f4e57a73ed26089e1ab7fb866"><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__internal.html#abc63d15f4e57a73ed26089e1ab7fb866">mt_parent</a></td></tr>
<tr class="separator:abc63d15f4e57a73ed26089e1ab7fb866"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a58c028bf009e3968696ba65d41f6aa81"><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__internal.html#a58c028bf009e3968696ba65d41f6aa81">mt_child</a></td></tr>
<tr class="separator:a58c028bf009e3968696ba65d41f6aa81"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa805ac6e787ed14ffd131964638901bc"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__internal.html#gadb65f0424c9d3827bf6409087ad555cd">pgno_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#aa805ac6e787ed14ffd131964638901bc">mt_next_pgno</a></td></tr>
<tr class="separator:aa805ac6e787ed14ffd131964638901bc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a26512036328af11cdaeb6c9880859290"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__internal.html#gabbaef7c9c710f8652a62c32d748c040e">txnid_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#a26512036328af11cdaeb6c9880859290">mt_txnid</a></td></tr>
<tr class="separator:a26512036328af11cdaeb6c9880859290"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a03c63e36f8e121d65172f1e5a1d70a55"><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__internal.html#a03c63e36f8e121d65172f1e5a1d70a55">mt_env</a></td></tr>
<tr class="separator:a03c63e36f8e121d65172f1e5a1d70a55"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a587e53ee229e04345eaba8e4f300c84a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__idls.html#ga238cc39c422225e05cb3897e641ca9e5">MDB_IDL</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#a587e53ee229e04345eaba8e4f300c84a">mt_free_pgs</a></td></tr>
<tr class="separator:a587e53ee229e04345eaba8e4f300c84a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1a41741f6a5a601fd60fab7175285fd8"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__idls.html#ga238cc39c422225e05cb3897e641ca9e5">MDB_IDL</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#a1a41741f6a5a601fd60fab7175285fd8">mt_spill_pgs</a></td></tr>
<tr class="separator:a1a41741f6a5a601fd60fab7175285fd8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a60c0eebb3b059fc50b0530ec9449d09b"><td class="memItemLeft" ><a class="anchor" id="a60c0eebb3b059fc50b0530ec9449d09b"></a>
union {</td></tr>
<tr class="memitem:a6e1c48404a6ba4e2a691b47959b6d36d"><td class="memItemLeft" >&#160;&#160;&#160;<a class="el" href="group__idls.html#gafcc5d61c06c726db2be5d088dbc68d51">MDB_ID2L</a>&#160;&#160;&#160;<a class="el" href="group__internal.html#a0a89cc7b39f5aec84f629a2b43bb64d5">dirty_list</a></td></tr>
<tr class="separator:a6e1c48404a6ba4e2a691b47959b6d36d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa41c26596a262142819c1e636c80a6b4"><td class="memItemLeft" >&#160;&#160;&#160;<a class="el" href="group__readers.html#structMDB__reader">MDB_reader</a> *&#160;&#160;&#160;<a class="el" href="group__internal.html#a0ca555e0c624a93f7106cfea434e9557">reader</a></td></tr>
<tr class="separator:aa41c26596a262142819c1e636c80a6b4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a60c0eebb3b059fc50b0530ec9449d09b"><td class="memItemLeft" valign="top">}&#160;</td><td class="memItemRight" valign="bottom"><b>mt_u</b></td></tr>
<tr class="separator:a60c0eebb3b059fc50b0530ec9449d09b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa837e463f7e79368b55bec22baa0233b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__internal.html#structMDB__dbx">MDB_dbx</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#aa837e463f7e79368b55bec22baa0233b">mt_dbxs</a></td></tr>
<tr class="separator:aa837e463f7e79368b55bec22baa0233b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4e24dfe1a2ade2e1bf4c7305cef267b3"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__internal.html#structMDB__db">MDB_db</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#a4e24dfe1a2ade2e1bf4c7305cef267b3">mt_dbs</a></td></tr>
<tr class="separator:a4e24dfe1a2ade2e1bf4c7305cef267b3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa8a8241adc1169c76b95498432540ce7"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__internal.html#structMDB__cursor">MDB_cursor</a> **&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#aa8a8241adc1169c76b95498432540ce7">mt_cursors</a></td></tr>
<tr class="separator:aa8a8241adc1169c76b95498432540ce7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a484dbc29f7f03b58676463d65cb628f1"><td class="memItemLeft" align="right" valign="top">unsigned char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#a484dbc29f7f03b58676463d65cb628f1">mt_dbflags</a></td></tr>
<tr class="separator:a484dbc29f7f03b58676463d65cb628f1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad4ead449fef79be9fb69c8c4279a6163"><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__internal.html#ad4ead449fef79be9fb69c8c4279a6163">mt_numdbs</a></td></tr>
<tr class="separator:ad4ead449fef79be9fb69c8c4279a6163"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6daba5db3d626e789a7d4c8ee3d8c840"><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#a6daba5db3d626e789a7d4c8ee3d8c840">mt_flags</a></td></tr>
<tr class="separator:a6daba5db3d626e789a7d4c8ee3d8c840"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab62f1ad8141d56c66c8548934b7e0977"><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#ab62f1ad8141d56c66c8548934b7e0977">mt_dirty_room</a></td></tr>
<tr class="separator:ab62f1ad8141d56c66c8548934b7e0977"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h4 class="groupheader">Field Documentation</h4>
<a class="anchor" id="abc63d15f4e57a73ed26089e1ab7fb866"></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_txn::mt_parent</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>parent of a nested txn </p>

</div>
</div>
<a class="anchor" id="a58c028bf009e3968696ba65d41f6aa81"></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_txn::mt_child</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>nested txn under this txn </p>

</div>
</div>
<a class="anchor" id="aa805ac6e787ed14ffd131964638901bc"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__internal.html#gadb65f0424c9d3827bf6409087ad555cd">pgno_t</a> MDB_txn::mt_next_pgno</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>next unallocated page </p>

</div>
</div>
<a class="anchor" id="a26512036328af11cdaeb6c9880859290"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__internal.html#gabbaef7c9c710f8652a62c32d748c040e">txnid_t</a> MDB_txn::mt_txnid</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>The ID of this transaction. IDs are integers incrementing from 1. Only committed write transactions increment the ID. If a transaction aborts, the ID may be re-used by the next writer. </p>

</div>
</div>
<a class="anchor" id="a03c63e36f8e121d65172f1e5a1d70a55"></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::mt_env</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>the DB environment </p>

</div>
</div>
<a class="anchor" id="a587e53ee229e04345eaba8e4f300c84a"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__idls.html#ga238cc39c422225e05cb3897e641ca9e5">MDB_IDL</a> MDB_txn::mt_free_pgs</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>The list of pages that became unused during this transaction. </p>

</div>
</div>
<a class="anchor" id="a1a41741f6a5a601fd60fab7175285fd8"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__idls.html#ga238cc39c422225e05cb3897e641ca9e5">MDB_IDL</a> MDB_txn::mt_spill_pgs</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>The sorted list of dirty pages we temporarily wrote to disk because the dirty list was full. page numbers in here are shifted left by 1, deleted slots have the LSB set. </p>

</div>
</div>
<a class="anchor" id="a0a89cc7b39f5aec84f629a2b43bb64d5"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__idls.html#gafcc5d61c06c726db2be5d088dbc68d51">MDB_ID2L</a> MDB_txn::dirty_list</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>For write txns: Modified pages. Sorted when not MDB_WRITEMAP. </p>

</div>
</div>
<a class="anchor" id="a0ca555e0c624a93f7106cfea434e9557"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__readers.html#structMDB__reader">MDB_reader</a>* MDB_txn::reader</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>For read txns: This thread/txn's reader table slot, or NULL. </p>

</div>
</div>
<a class="anchor" id="aa837e463f7e79368b55bec22baa0233b"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__internal.html#structMDB__dbx">MDB_dbx</a>* MDB_txn::mt_dbxs</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Array of records for each DB known in the environment. </p>

</div>
</div>
<a class="anchor" id="a4e24dfe1a2ade2e1bf4c7305cef267b3"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__internal.html#structMDB__db">MDB_db</a>* MDB_txn::mt_dbs</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Array of <a class="el" href="group__internal.html#structMDB__db">MDB_db</a> records for each known DB </p>

</div>
</div>
<a class="anchor" id="aa8a8241adc1169c76b95498432540ce7"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__internal.html#structMDB__cursor">MDB_cursor</a>** MDB_txn::mt_cursors</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>In write txns, array of cursors for each DB </p>

</div>
</div>
<a class="anchor" id="a484dbc29f7f03b58676463d65cb628f1"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">unsigned char* MDB_txn::mt_dbflags</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Array of flags for each DB </p>

</div>
</div>
<a class="anchor" id="ad4ead449fef79be9fb69c8c4279a6163"></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_txn::mt_numdbs</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Number of DB records in use. This number only ever increments; we don't decrement it when individual DB handles are closed. </p>

</div>
</div>
<a class="anchor" id="a6daba5db3d626e789a7d4c8ee3d8c840"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">unsigned int MDB_txn::mt_flags</td>
        </tr>
      </table>
</div><div class="memdoc">
<p><a class="el" href="group__mdb__txn.html">Transaction Flags</a> </p>

</div>
</div>
<a class="anchor" id="ab62f1ad8141d56c66c8548934b7e0977"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">unsigned int MDB_txn::mt_dirty_room</td>
        </tr>
      </table>
</div><div class="memdoc">
<p><a class="el" href="group__internal.html#a0a89cc7b39f5aec84f629a2b43bb64d5">dirty_list</a> room: Array size - #dirty pages visible to this txn. Includes ancestor txns' dirty pages not hidden by other txns' dirty/spilled pages. Thus commit(nested txn) has room to merge dirty_list into mt_parent after freeing hidden mt_parent pages. </p>

</div>
</div>

</div>
</div>
<a name="structMDB__cursor" id="structMDB__cursor"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">struct MDB_cursor</td>
        </tr>
      </table>
</div><div class="memdoc">
<div class="textblock"><p>Opaque structure for navigating through a database. </p>
<p>Cursors are used for all DB operations. A cursor holds a path of (page pointer, key index) from the DB root to a position in the DB, plus other state. <a class="el" href="group__mdb__dbi__open.html#gae0626566c2562e9007f5c8c9535bab1a">MDB_DUPSORT</a> cursors include an xcursor to the current data item. Write txns track their cursors and keep them up to date when data moves. Exception: An xcursor's pointer to a <a class="el" href="group__mdb__page.html#ga77cc6dc98fda40c81fb2f75068fb5551">P_SUBP</a> page can be stale. (A node with <a class="el" href="group__mdb__node.html#ga6e93fc5b62c03a0b85d0755b7d19bee5">F_DUPDATA</a> but no <a class="el" href="group__mdb__node.html#ga5323896692f7418870f72d7a5f1b2bab">F_SUBDATA</a> contains a subpage). </p>
</div><table class="memberdecls">
<tr><td colspan="2"><h3>Data Fields</h3></td></tr>
<tr class="memitem:a411862030a3c01cf536ec202c88b5b18"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__internal.html#structMDB__cursor">MDB_cursor</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#a411862030a3c01cf536ec202c88b5b18">mc_next</a></td></tr>
<tr class="separator:a411862030a3c01cf536ec202c88b5b18"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a128b96da79453c2cadfebe649094276f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__internal.html#structMDB__cursor">MDB_cursor</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#a128b96da79453c2cadfebe649094276f">mc_backup</a></td></tr>
<tr class="separator:a128b96da79453c2cadfebe649094276f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af7b8db7b9c6d16e437a4f2863059b560"><td class="memItemLeft" align="right" valign="top">struct <a class="el" href="group__internal.html#structMDB__xcursor">MDB_xcursor</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#af7b8db7b9c6d16e437a4f2863059b560">mc_xcursor</a></td></tr>
<tr class="separator:af7b8db7b9c6d16e437a4f2863059b560"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a15053edbec5a11acad196428db6604ed"><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__internal.html#a15053edbec5a11acad196428db6604ed">mc_txn</a></td></tr>
<tr class="separator:a15053edbec5a11acad196428db6604ed"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a44eb2040bafbb4f0824ab42e36ffce50"><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__internal.html#a44eb2040bafbb4f0824ab42e36ffce50">mc_dbi</a></td></tr>
<tr class="separator:a44eb2040bafbb4f0824ab42e36ffce50"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a607ef0e65f7f18bbc0842dfd66e9ea73"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__internal.html#structMDB__db">MDB_db</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#a607ef0e65f7f18bbc0842dfd66e9ea73">mc_db</a></td></tr>
<tr class="separator:a607ef0e65f7f18bbc0842dfd66e9ea73"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae47065c198fe591153cbcb6211e4b049"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__internal.html#structMDB__dbx">MDB_dbx</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#ae47065c198fe591153cbcb6211e4b049">mc_dbx</a></td></tr>
<tr class="separator:ae47065c198fe591153cbcb6211e4b049"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a45bf21bcb00312d52c46f0b3b21e6858"><td class="memItemLeft" align="right" valign="top">unsigned char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#a45bf21bcb00312d52c46f0b3b21e6858">mc_dbflag</a></td></tr>
<tr class="separator:a45bf21bcb00312d52c46f0b3b21e6858"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adb751d5d6cf4135650fa2af70ec85b2e"><td class="memItemLeft" align="right" valign="top">unsigned short&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#adb751d5d6cf4135650fa2af70ec85b2e">mc_snum</a></td></tr>
<tr class="separator:adb751d5d6cf4135650fa2af70ec85b2e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8c9f0954ac7f204e06c785b0b2b0a646"><td class="memItemLeft" align="right" valign="top">unsigned short&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#a8c9f0954ac7f204e06c785b0b2b0a646">mc_top</a></td></tr>
<tr class="separator:a8c9f0954ac7f204e06c785b0b2b0a646"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9af6c760c16043b451b8592f8d1690c0"><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#a9af6c760c16043b451b8592f8d1690c0">mc_flags</a></td></tr>
<tr class="separator:a9af6c760c16043b451b8592f8d1690c0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a38c7d46de8e44dd644ae28fb18e0eef0"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__internal.html#structMDB__page">MDB_page</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#a38c7d46de8e44dd644ae28fb18e0eef0">mc_pg</a> [<a class="el" href="group__internal.html#gaef453f149efb721c2eb311a6ede48dc8">CURSOR_STACK</a>]</td></tr>
<tr class="separator:a38c7d46de8e44dd644ae28fb18e0eef0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8f1d553e9b663b477ad2f2e0c2483cea"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__internal.html#ga730e17f748208d77496ebd895c8375dc">indx_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#a8f1d553e9b663b477ad2f2e0c2483cea">mc_ki</a> [<a class="el" href="group__internal.html#gaef453f149efb721c2eb311a6ede48dc8">CURSOR_STACK</a>]</td></tr>
<tr class="separator:a8f1d553e9b663b477ad2f2e0c2483cea"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h4 class="groupheader">Field Documentation</h4>
<a class="anchor" id="a411862030a3c01cf536ec202c88b5b18"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__internal.html#structMDB__cursor">MDB_cursor</a>* MDB_cursor::mc_next</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Next cursor on this DB in this txn </p>

</div>
</div>
<a class="anchor" id="a128b96da79453c2cadfebe649094276f"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__internal.html#structMDB__cursor">MDB_cursor</a>* MDB_cursor::mc_backup</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Backup of the original cursor if this cursor is a shadow </p>

</div>
</div>
<a class="anchor" id="af7b8db7b9c6d16e437a4f2863059b560"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">struct <a class="el" href="group__internal.html#structMDB__xcursor">MDB_xcursor</a>* MDB_cursor::mc_xcursor</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Context used for databases with <a class="el" href="group__mdb__dbi__open.html#gae0626566c2562e9007f5c8c9535bab1a">MDB_DUPSORT</a>, otherwise NULL </p>

</div>
</div>
<a class="anchor" id="a15053edbec5a11acad196428db6604ed"></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::mc_txn</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>The transaction that owns this cursor </p>

</div>
</div>
<a class="anchor" id="a44eb2040bafbb4f0824ab42e36ffce50"></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::mc_dbi</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>The database handle this cursor operates on </p>

</div>
</div>
<a class="anchor" id="a607ef0e65f7f18bbc0842dfd66e9ea73"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__internal.html#structMDB__db">MDB_db</a>* MDB_cursor::mc_db</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>The database record for this cursor </p>

</div>
</div>
<a class="anchor" id="ae47065c198fe591153cbcb6211e4b049"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__internal.html#structMDB__dbx">MDB_dbx</a>* MDB_cursor::mc_dbx</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>The database auxiliary record for this cursor </p>

</div>
</div>
<a class="anchor" id="a45bf21bcb00312d52c46f0b3b21e6858"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">unsigned char* MDB_cursor::mc_dbflag</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>The <a class="el" href="group__mt__dbflag.html">Transaction DB Flags</a> for this database </p>

</div>
</div>
<a class="anchor" id="adb751d5d6cf4135650fa2af70ec85b2e"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">unsigned short MDB_cursor::mc_snum</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>number of pushed pages </p>

</div>
</div>
<a class="anchor" id="a8c9f0954ac7f204e06c785b0b2b0a646"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">unsigned short MDB_cursor::mc_top</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>index of top page, normally mc_snum-1 </p>

</div>
</div>
<a class="anchor" id="a9af6c760c16043b451b8592f8d1690c0"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">unsigned int MDB_cursor::mc_flags</td>
        </tr>
      </table>
</div><div class="memdoc">
<p><a class="el" href="group__mdb__cursor.html">Cursor Flags</a> </p>

</div>
</div>
<a class="anchor" id="a38c7d46de8e44dd644ae28fb18e0eef0"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__internal.html#structMDB__page">MDB_page</a>* MDB_cursor::mc_pg[<a class="el" href="group__internal.html#gaef453f149efb721c2eb311a6ede48dc8">CURSOR_STACK</a>]</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>stack of pushed pages </p>

</div>
</div>
<a class="anchor" id="a8f1d553e9b663b477ad2f2e0c2483cea"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__internal.html#ga730e17f748208d77496ebd895c8375dc">indx_t</a> MDB_cursor::mc_ki[<a class="el" href="group__internal.html#gaef453f149efb721c2eb311a6ede48dc8">CURSOR_STACK</a>]</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>stack of page indices </p>

</div>
</div>

</div>
</div>
<a name="structMDB__xcursor" id="structMDB__xcursor"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">struct MDB_xcursor</td>
        </tr>
      </table>
</div><div class="memdoc">
<div class="textblock"><p>Context for sorted-dup records. We could have gone to a fully recursive design, with arbitrarily deep nesting of sub-databases. But for now we only handle these levels - main DB, optional sub-DB, sorted-duplicate DB. </p>
</div><table class="memberdecls">
<tr><td colspan="2"><h3>Data Fields</h3></td></tr>
<tr class="memitem:a296385e0aee20fed6c311784459943a5"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__internal.html#structMDB__cursor">MDB_cursor</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#a296385e0aee20fed6c311784459943a5">mx_cursor</a></td></tr>
<tr class="separator:a296385e0aee20fed6c311784459943a5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a40d92cd9b6d087fd6feb32ef270fc6e8"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__internal.html#structMDB__db">MDB_db</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#a40d92cd9b6d087fd6feb32ef270fc6e8">mx_db</a></td></tr>
<tr class="separator:a40d92cd9b6d087fd6feb32ef270fc6e8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7799c836fd4ba7a94943a6be037bbc99"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__internal.html#structMDB__dbx">MDB_dbx</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#a7799c836fd4ba7a94943a6be037bbc99">mx_dbx</a></td></tr>
<tr class="separator:a7799c836fd4ba7a94943a6be037bbc99"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1763a0629d63d352f9f61c1e277304b5"><td class="memItemLeft" align="right" valign="top">unsigned char&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#a1763a0629d63d352f9f61c1e277304b5">mx_dbflag</a></td></tr>
<tr class="separator:a1763a0629d63d352f9f61c1e277304b5"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h4 class="groupheader">Field Documentation</h4>
<a class="anchor" id="a296385e0aee20fed6c311784459943a5"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__internal.html#structMDB__cursor">MDB_cursor</a> MDB_xcursor::mx_cursor</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>A sub-cursor for traversing the Dup DB </p>

</div>
</div>
<a class="anchor" id="a40d92cd9b6d087fd6feb32ef270fc6e8"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__internal.html#structMDB__db">MDB_db</a> MDB_xcursor::mx_db</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>The database record for this Dup DB </p>

</div>
</div>
<a class="anchor" id="a7799c836fd4ba7a94943a6be037bbc99"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__internal.html#structMDB__dbx">MDB_dbx</a> MDB_xcursor::mx_dbx</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>The auxiliary DB record for this Dup DB </p>

</div>
</div>
<a class="anchor" id="a1763a0629d63d352f9f61c1e277304b5"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">unsigned char MDB_xcursor::mx_dbflag</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>The <a class="el" href="group__mt__dbflag.html">Transaction DB Flags</a> for this Dup DB </p>

</div>
</div>

</div>
</div>
<a name="structMDB__pgstate" id="structMDB__pgstate"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">struct MDB_pgstate</td>
        </tr>
      </table>
</div><div class="memdoc">
<div class="textblock"><p>State of FreeDB old pages, stored in the <a class="el" href="group__internal.html#structMDB__env" title="Opaque structure for a database environment. ">MDB_env</a> </p>
</div><table class="memberdecls">
<tr><td colspan="2"><h3>Data Fields</h3></td></tr>
<tr class="memitem:a87885b2e082589287b381554cb8f7e7a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__internal.html#gadb65f0424c9d3827bf6409087ad555cd">pgno_t</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#a87885b2e082589287b381554cb8f7e7a">mf_pghead</a></td></tr>
<tr class="separator:a87885b2e082589287b381554cb8f7e7a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4a9a958ac39b45693ca27140bd4f63de"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__internal.html#gabbaef7c9c710f8652a62c32d748c040e">txnid_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#a4a9a958ac39b45693ca27140bd4f63de">mf_pglast</a></td></tr>
<tr class="separator:a4a9a958ac39b45693ca27140bd4f63de"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h4 class="groupheader">Field Documentation</h4>
<a class="anchor" id="a87885b2e082589287b381554cb8f7e7a"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__internal.html#gadb65f0424c9d3827bf6409087ad555cd">pgno_t</a>* MDB_pgstate::mf_pghead</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Reclaimed freeDB pages, or NULL before use </p>

</div>
</div>
<a class="anchor" id="a4a9a958ac39b45693ca27140bd4f63de"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__internal.html#gabbaef7c9c710f8652a62c32d748c040e">txnid_t</a> MDB_pgstate::mf_pglast</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>ID of last used record, or 0 if !mf_pghead </p>

</div>
</div>

</div>
</div>
<a name="structMDB__env" id="structMDB__env"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">struct MDB_env</td>
        </tr>
      </table>
</div><div class="memdoc">
<div class="textblock"><p>Opaque structure for a database environment. </p>
<p>The database environment.</p>
<p>A DB environment supports multiple databases, all residing in the same shared-memory map. </p>
</div><table class="memberdecls">
<tr><td colspan="2"><h3>Data Fields</h3></td></tr>
<tr class="memitem:adff94c258f5af201410ef61e51a2f8a0"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__compat.html#gab521aa5010fb1afb801a899a55569e03">HANDLE</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#adff94c258f5af201410ef61e51a2f8a0">me_fd</a></td></tr>
<tr class="separator:adff94c258f5af201410ef61e51a2f8a0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a74decfb0ded4cd870c8fafe0208abefc"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__compat.html#gab521aa5010fb1afb801a899a55569e03">HANDLE</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#a74decfb0ded4cd870c8fafe0208abefc">me_lfd</a></td></tr>
<tr class="separator:a74decfb0ded4cd870c8fafe0208abefc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8c5f5f596781bc4d39f0e76f244930b7"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__compat.html#gab521aa5010fb1afb801a899a55569e03">HANDLE</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#a8c5f5f596781bc4d39f0e76f244930b7">me_mfd</a></td></tr>
<tr class="separator:a8c5f5f596781bc4d39f0e76f244930b7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaa9e268acef9c8f260ec10e967f12b58"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#aaa9e268acef9c8f260ec10e967f12b58">me_flags</a></td></tr>
<tr class="separator:aaa9e268acef9c8f260ec10e967f12b58"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afdddd82c8660afbdbe45fd7e5353ec53"><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#afdddd82c8660afbdbe45fd7e5353ec53">me_psize</a></td></tr>
<tr class="separator:afdddd82c8660afbdbe45fd7e5353ec53"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae79524ce1389402e6c5065472b63a64d"><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#ae79524ce1389402e6c5065472b63a64d">me_os_psize</a></td></tr>
<tr class="separator:ae79524ce1389402e6c5065472b63a64d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9049837fe4c45b663201ac4e078eaf19"><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#a9049837fe4c45b663201ac4e078eaf19">me_maxreaders</a></td></tr>
<tr class="separator:a9049837fe4c45b663201ac4e078eaf19"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0ed6345efcb4c580d32cdfc902e11f33"><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#a0ed6345efcb4c580d32cdfc902e11f33">me_numreaders</a></td></tr>
<tr class="separator:a0ed6345efcb4c580d32cdfc902e11f33"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac34d9780c87bbf2d69bab073bb1964bd"><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__internal.html#ac34d9780c87bbf2d69bab073bb1964bd">me_numdbs</a></td></tr>
<tr class="separator:ac34d9780c87bbf2d69bab073bb1964bd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad34d8970e43557e28d1db2df5ffc6d8c"><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__internal.html#ad34d8970e43557e28d1db2df5ffc6d8c">me_maxdbs</a></td></tr>
<tr class="separator:ad34d8970e43557e28d1db2df5ffc6d8c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a417b6c74fbbde9f6474358517c577a96"><td class="memItemLeft" align="right" valign="top">MDB_PID_T&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#a417b6c74fbbde9f6474358517c577a96">me_pid</a></td></tr>
<tr class="separator:a417b6c74fbbde9f6474358517c577a96"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a54e99a5b36b889bda5d78f783f724e13"><td class="memItemLeft" align="right" valign="top">char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#a54e99a5b36b889bda5d78f783f724e13">me_path</a></td></tr>
<tr class="separator:a54e99a5b36b889bda5d78f783f724e13"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a58d7b9c0502757390c1631caa51cf96b"><td class="memItemLeft" align="right" valign="top">char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#a58d7b9c0502757390c1631caa51cf96b">me_map</a></td></tr>
<tr class="separator:a58d7b9c0502757390c1631caa51cf96b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae0082e483c3bb1a0d6572d21f7da3010"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__readers.html#structMDB__txninfo">MDB_txninfo</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#ae0082e483c3bb1a0d6572d21f7da3010">me_txns</a></td></tr>
<tr class="separator:ae0082e483c3bb1a0d6572d21f7da3010"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9a8a081d268506576b774274579e8dca"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__internal.html#structMDB__meta">MDB_meta</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#a9a8a081d268506576b774274579e8dca">me_metas</a> [2]</td></tr>
<tr class="separator:a9a8a081d268506576b774274579e8dca"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1700deb7f48b9a1837007d82dd47da94"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#a1700deb7f48b9a1837007d82dd47da94">me_pbuf</a></td></tr>
<tr class="separator:a1700deb7f48b9a1837007d82dd47da94"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a41f4abc70ee54d822f4674d48d4c4461"><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__internal.html#a41f4abc70ee54d822f4674d48d4c4461">me_txn</a></td></tr>
<tr class="separator:a41f4abc70ee54d822f4674d48d4c4461"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af18b544f80b1e46b0884c8f751d7ad23"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#af18b544f80b1e46b0884c8f751d7ad23">me_mapsize</a></td></tr>
<tr class="separator:af18b544f80b1e46b0884c8f751d7ad23"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad6d73a08b30a6c370cefb129ee2313d8"><td class="memItemLeft" align="right" valign="top">off_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#ad6d73a08b30a6c370cefb129ee2313d8">me_size</a></td></tr>
<tr class="separator:ad6d73a08b30a6c370cefb129ee2313d8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a898e1efb92a2cdfe352dfdb6f6dfbc40"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__internal.html#gadb65f0424c9d3827bf6409087ad555cd">pgno_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#a898e1efb92a2cdfe352dfdb6f6dfbc40">me_maxpg</a></td></tr>
<tr class="separator:a898e1efb92a2cdfe352dfdb6f6dfbc40"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3de13263d5176b1985c3581c4c728ed7"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__internal.html#structMDB__dbx">MDB_dbx</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#a3de13263d5176b1985c3581c4c728ed7">me_dbxs</a></td></tr>
<tr class="separator:a3de13263d5176b1985c3581c4c728ed7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a84e30bf602ca2810dc1f5ff8a474b86d"><td class="memItemLeft" align="right" valign="top">uint16_t *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#a84e30bf602ca2810dc1f5ff8a474b86d">me_dbflags</a></td></tr>
<tr class="separator:a84e30bf602ca2810dc1f5ff8a474b86d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2f9ec605ad2ed099b970527d9aabb786"><td class="memItemLeft" align="right" valign="top">pthread_key_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#a2f9ec605ad2ed099b970527d9aabb786">me_txkey</a></td></tr>
<tr class="separator:a2f9ec605ad2ed099b970527d9aabb786"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0db706a72d88cfe0e32f7ab80a4afa8b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__internal.html#structMDB__pgstate">MDB_pgstate</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#a0db706a72d88cfe0e32f7ab80a4afa8b">me_pgstate</a></td></tr>
<tr class="separator:a0db706a72d88cfe0e32f7ab80a4afa8b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aeeb32fbf8557f37a933c762f391090ce"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__internal.html#structMDB__page">MDB_page</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#aeeb32fbf8557f37a933c762f391090ce">me_dpages</a></td></tr>
<tr class="separator:aeeb32fbf8557f37a933c762f391090ce"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a440e7c52dc9d6bc4828c7484f78d2b9b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__idls.html#ga238cc39c422225e05cb3897e641ca9e5">MDB_IDL</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#a440e7c52dc9d6bc4828c7484f78d2b9b">me_free_pgs</a></td></tr>
<tr class="separator:a440e7c52dc9d6bc4828c7484f78d2b9b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a42dac152902b215639f9c8468b16608c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__idls.html#gafcc5d61c06c726db2be5d088dbc68d51">MDB_ID2L</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#a42dac152902b215639f9c8468b16608c">me_dirty_list</a></td></tr>
<tr class="separator:a42dac152902b215639f9c8468b16608c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa428623a5a2731349c49a611fddd3d73"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#aa428623a5a2731349c49a611fddd3d73">me_maxfree_1pg</a></td></tr>
<tr class="separator:aa428623a5a2731349c49a611fddd3d73"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a718cafb69c2a74164b79a874f6aee9e0"><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#a718cafb69c2a74164b79a874f6aee9e0">me_nodemax</a></td></tr>
<tr class="separator:a718cafb69c2a74164b79a874f6aee9e0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab0aee4c3cd1006e27d8d76c4634c742e"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#ab0aee4c3cd1006e27d8d76c4634c742e">me_live_reader</a></td></tr>
<tr class="separator:ab0aee4c3cd1006e27d8d76c4634c742e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac71142f4e056b082f9d866d1561764e5"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#ac71142f4e056b082f9d866d1561764e5">me_userctx</a></td></tr>
<tr class="separator:ac71142f4e056b082f9d866d1561764e5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adac96bf9a61afe2859f3beee7ee224e8"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__mdb.html#ga949ada362b3e84ec0435197056d82371">MDB_assert_func</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#adac96bf9a61afe2859f3beee7ee224e8">me_assert_func</a></td></tr>
<tr class="separator:adac96bf9a61afe2859f3beee7ee224e8"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h4 class="groupheader">Field Documentation</h4>
<a class="anchor" id="adff94c258f5af201410ef61e51a2f8a0"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__compat.html#gab521aa5010fb1afb801a899a55569e03">HANDLE</a> MDB_env::me_fd</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>The main data file </p>

</div>
</div>
<a class="anchor" id="a74decfb0ded4cd870c8fafe0208abefc"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__compat.html#gab521aa5010fb1afb801a899a55569e03">HANDLE</a> MDB_env::me_lfd</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>The lock file </p>

</div>
</div>
<a class="anchor" id="a8c5f5f596781bc4d39f0e76f244930b7"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__compat.html#gab521aa5010fb1afb801a899a55569e03">HANDLE</a> MDB_env::me_mfd</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>just for writing the meta pages </p>

</div>
</div>
<a class="anchor" id="aaa9e268acef9c8f260ec10e967f12b58"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">uint32_t MDB_env::me_flags</td>
        </tr>
      </table>
</div><div class="memdoc">
<p><a class="el" href="group__mdb__env.html">Environment Flags</a> </p>

</div>
</div>
<a class="anchor" id="afdddd82c8660afbdbe45fd7e5353ec53"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">unsigned int MDB_env::me_psize</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>DB page size, inited from me_os_psize </p>

</div>
</div>
<a class="anchor" id="ae79524ce1389402e6c5065472b63a64d"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">unsigned int MDB_env::me_os_psize</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>OS page size, from <a class="el" href="group__compat.html#ga948570910e2e84a556977f585cbfa2bf">GET_PAGESIZE</a> </p>

</div>
</div>
<a class="anchor" id="a9049837fe4c45b663201ac4e078eaf19"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">unsigned int MDB_env::me_maxreaders</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>size of the reader table </p>

</div>
</div>
<a class="anchor" id="a0ed6345efcb4c580d32cdfc902e11f33"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">unsigned int MDB_env::me_numreaders</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>max numreaders set by this env </p>

</div>
</div>
<a class="anchor" id="ac34d9780c87bbf2d69bab073bb1964bd"></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_env::me_numdbs</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>number of DBs opened </p>

</div>
</div>
<a class="anchor" id="ad34d8970e43557e28d1db2df5ffc6d8c"></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_env::me_maxdbs</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>size of the DB table </p>

</div>
</div>
<a class="anchor" id="a417b6c74fbbde9f6474358517c577a96"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">MDB_PID_T MDB_env::me_pid</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>process ID of this env </p>

</div>
</div>
<a class="anchor" id="a54e99a5b36b889bda5d78f783f724e13"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">char* MDB_env::me_path</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>path to the DB files </p>

</div>
</div>
<a class="anchor" id="a58d7b9c0502757390c1631caa51cf96b"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">char* MDB_env::me_map</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>the memory map of the data file </p>

</div>
</div>
<a class="anchor" id="ae0082e483c3bb1a0d6572d21f7da3010"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__readers.html#structMDB__txninfo">MDB_txninfo</a>* MDB_env::me_txns</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>the memory map of the lock file or NULL </p>

</div>
</div>
<a class="anchor" id="a9a8a081d268506576b774274579e8dca"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__internal.html#structMDB__meta">MDB_meta</a>* MDB_env::me_metas[2]</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>pointers to the two meta pages </p>

</div>
</div>
<a class="anchor" id="a1700deb7f48b9a1837007d82dd47da94"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void* MDB_env::me_pbuf</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>scratch area for DUPSORT put() </p>

</div>
</div>
<a class="anchor" id="a41f4abc70ee54d822f4674d48d4c4461"></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_env::me_txn</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>current write transaction </p>

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

</div>
</div>
<a class="anchor" id="ad6d73a08b30a6c370cefb129ee2313d8"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">off_t MDB_env::me_size</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>current file size </p>

</div>
</div>
<a class="anchor" id="a898e1efb92a2cdfe352dfdb6f6dfbc40"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__internal.html#gadb65f0424c9d3827bf6409087ad555cd">pgno_t</a> MDB_env::me_maxpg</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>me_mapsize / me_psize </p>

</div>
</div>
<a class="anchor" id="a3de13263d5176b1985c3581c4c728ed7"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__internal.html#structMDB__dbx">MDB_dbx</a>* MDB_env::me_dbxs</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>array of static DB info </p>

</div>
</div>
<a class="anchor" id="a84e30bf602ca2810dc1f5ff8a474b86d"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">uint16_t* MDB_env::me_dbflags</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>array of flags from <a class="el" href="group__internal.html#a91a11c5c8034bd175eb0dd01da528981">MDB_db.md_flags</a> </p>

</div>
</div>
<a class="anchor" id="a2f9ec605ad2ed099b970527d9aabb786"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">pthread_key_t MDB_env::me_txkey</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>thread-key for readers </p>

</div>
</div>
<a class="anchor" id="a0db706a72d88cfe0e32f7ab80a4afa8b"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__internal.html#structMDB__pgstate">MDB_pgstate</a> MDB_env::me_pgstate</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>state of old pages from freeDB </p>

</div>
</div>
<a class="anchor" id="aeeb32fbf8557f37a933c762f391090ce"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__internal.html#structMDB__page">MDB_page</a>* MDB_env::me_dpages</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>list of malloc'd blocks for re-use </p>

</div>
</div>
<a class="anchor" id="a440e7c52dc9d6bc4828c7484f78d2b9b"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__idls.html#ga238cc39c422225e05cb3897e641ca9e5">MDB_IDL</a> MDB_env::me_free_pgs</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>IDL of pages that became unused in a write txn </p>

</div>
</div>
<a class="anchor" id="a42dac152902b215639f9c8468b16608c"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__idls.html#gafcc5d61c06c726db2be5d088dbc68d51">MDB_ID2L</a> MDB_env::me_dirty_list</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>ID2L of pages written during a write txn. Length MDB_IDL_UM_SIZE. </p>

</div>
</div>
<a class="anchor" id="aa428623a5a2731349c49a611fddd3d73"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int MDB_env::me_maxfree_1pg</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Max number of freelist items that can fit in a single overflow page </p>

</div>
</div>
<a class="anchor" id="a718cafb69c2a74164b79a874f6aee9e0"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">unsigned int MDB_env::me_nodemax</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Max size of a node on a page </p>

</div>
</div>
<a class="anchor" id="ab0aee4c3cd1006e27d8d76c4634c742e"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int MDB_env::me_live_reader</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>have liveness lock in reader table </p>

</div>
</div>
<a class="anchor" id="ac71142f4e056b082f9d866d1561764e5"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void* MDB_env::me_userctx</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>User-settable context </p>

</div>
</div>
<a class="anchor" id="adac96bf9a61afe2859f3beee7ee224e8"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__mdb.html#ga949ada362b3e84ec0435197056d82371">MDB_assert_func</a>* MDB_env::me_assert_func</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Callback for assertion failures </p>

</div>
</div>

</div>
</div>
<a name="structMDB__ntxn" id="structMDB__ntxn"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">struct MDB_ntxn</td>
        </tr>
      </table>
</div><div class="memdoc">
<div class="textblock"><p>Nested transaction </p>
</div><table class="memberdecls">
<tr><td colspan="2"><h3>Data Fields</h3></td></tr>
<tr class="memitem:ac27cfb66da175236abbde2ed9ac75b9c"><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__internal.html#ac27cfb66da175236abbde2ed9ac75b9c">mnt_txn</a></td></tr>
<tr class="separator:ac27cfb66da175236abbde2ed9ac75b9c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1d2719c610db245bf989b72bfd2c8db8"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__internal.html#structMDB__pgstate">MDB_pgstate</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__internal.html#a1d2719c610db245bf989b72bfd2c8db8">mnt_pgstate</a></td></tr>
<tr class="separator:a1d2719c610db245bf989b72bfd2c8db8"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h4 class="groupheader">Field Documentation</h4>
<a class="anchor" id="ac27cfb66da175236abbde2ed9ac75b9c"></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_ntxn::mnt_txn</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>the transaction </p>

</div>
</div>
<a class="anchor" id="a1d2719c610db245bf989b72bfd2c8db8"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__internal.html#structMDB__pgstate">MDB_pgstate</a> MDB_ntxn::mnt_pgstate</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>parent transaction's saved freestate </p>

</div>
</div>

</div>
</div>
<h2 class="groupheader">Macro Definition Documentation</h2>
<a class="anchor" id="gafda79679e03da9d0d26c8f6fd74d2f2f"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define MDB_DSYNC&#160;&#160;&#160;O_DSYNC</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>A flag for opening a file and requesting synchronous data writes. This is only used when writing a meta page. It's not strictly needed; we could just do a normal write and then immediately perform a flush. But if this flag is available it saves us an extra system call.</p>
<dl class="section note"><dt>Note</dt><dd>If O_DSYNC is undefined but exists in /usr/include, preferably set some compiler flag to get the definition. Otherwise compile with the less efficient -DMDB_DSYNC=O_SYNC. </dd></dl>

</div>
</div>
<a class="anchor" id="gaa42162368bc12873dcb1d1b9383a5ac0"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define MDB_FDATASYNC&#160;&#160;&#160;fdatasync</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Function for flushing the data of a file. Define this to fsync if fdatasync() is not supported. </p>

</div>
</div>
<a class="anchor" id="ga68765f8fe2a921fb43537502f7ff09b6"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define MAX_PAGESIZE&#160;&#160;&#160;0x8000</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>The maximum size of a database page. </p>
<p>This is 32k, since it must fit in <a class="el" href="group__internal.html#structMDB__page">MDB_page</a>.mp_upper.</p>
<p>LMDB will use database pages &lt; OS pages if needed. That causes more I/O in write transactions: The OS must know (read) the whole page before writing a partial page.</p>
<p>Note that we don't currently support Huge pages. On Linux, regular data files cannot use Huge pages, and in general Huge pages aren't actually pageable. We rely on the OS demand-pager to read our data and page it out when memory pressure from other processes is high. So until OSs have actual paging support for Huge pages, they're not viable. </p>

</div>
</div>
<a class="anchor" id="ga8384281689ac8f7b6ffc9c727025dbf0"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define MDB_MINKEYS&#160;&#160;&#160;2</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>The minimum number of keys required in a database page. Setting this to a larger value will place a smaller bound on the maximum size of a data item. Data items larger than this size will be pushed into overflow pages instead of being stored directly in the B-tree node. This value used to default to 4. With a page size of 4096 bytes that meant that any item larger than 1024 bytes would go into an overflow page. That also meant that on average 2-3KB of each overflow page was wasted space. The value cannot be lower than 2 because then there would no longer be a tree structure. With this value, items larger than 2KB will go into overflow pages, and on average only 1KB will be wasted. </p>

</div>
</div>
<a class="anchor" id="ga4cac6326c08147a019e8ddb17ad712f6"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define MDB_MAGIC&#160;&#160;&#160;0xBEEFC0DE</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>A stamp that identifies a file as an MDB file. There's nothing special about this value other than that it is easily recognizable, and it will reflect any byte order mismatches. </p>

</div>
</div>
<a class="anchor" id="ga5d462b5ef39d34a85e633eb238655ce2"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define MDB_DATA_VERSION&#160;&#160;&#160;1</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>The version number for a database's datafile format. </p>

</div>
</div>
<a class="anchor" id="ga1d56e55199f31cd585300a2b73c22d82"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define MDB_LOCK_VERSION&#160;&#160;&#160;1</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>The version number for a database's lockfile format. </p>

</div>
</div>
<a class="anchor" id="gac929399f5d93cef85f874b9e9b1d09e0"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define MDB_MAXKEYSIZE&#160;&#160;&#160;511</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>The max size of a key we can write, or 0 for dynamic max. </p>
<p>Define this as 0 to compute the max from the page size. 511 is default for backwards compat: liblmdb &lt;= 0.9.10 can break when modifying a DB with keys/dupsort data bigger than its max.</p>
<p>Data items in an <a class="el" href="group__mdb__dbi__open.html#gae0626566c2562e9007f5c8c9535bab1a">MDB_DUPSORT</a> database are also limited to this size, since they're actually keys of a sub-DB. Keys and <a class="el" href="group__mdb__dbi__open.html#gae0626566c2562e9007f5c8c9535bab1a">MDB_DUPSORT</a> data items must fit on a node in a regular page. </p>

</div>
</div>
<a class="anchor" id="ga81fe7e8b859d93e245ac73990bbeb90b"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define ENV_MAXKEY</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">env</td><td>)</td>
          <td>&#160;&#160;&#160;(<a class="el" href="group__internal.html#gac929399f5d93cef85f874b9e9b1d09e0">MDB_MAXKEYSIZE</a>)</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>The maximum size of a key we can write to the environment. </p>

</div>
</div>
<a class="anchor" id="ga16c16f9369be4a374a3e621f6d13bb16"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define MAXDATASIZE&#160;&#160;&#160;0xffffffffUL</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>The maximum size of a data item. </p>
<p>We only store a 32 bit value for node sizes. </p>

</div>
</div>
<a class="anchor" id="gab8a290bcd98f0e825c9c950a6c25d01b"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define P_INVALID&#160;&#160;&#160;(~(<a class="el" href="group__internal.html#gadb65f0424c9d3827bf6409087ad555cd">pgno_t</a>)0)</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>An invalid page number. Mainly used to denote an empty tree. </p>

</div>
</div>
<a class="anchor" id="gaa5b968981dd75e8bf30b40b9bf7bc4b8"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define F_ISSET</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">w, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">f&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td>&#160;&#160;&#160;(((w) &amp; (f)) == (f))</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Test if the flags <b>f</b> are set in a flag word <b>w</b>. </p>

</div>
</div>
<a class="anchor" id="gaa714d529ede8765c6f6fffe5293b3bd4"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define EVEN</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">n</td><td>)</td>
          <td>&#160;&#160;&#160;(((n) + 1U) &amp; -2) /* sign-extending -2 to match n+1U */</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Round <b>n</b> up to an even number. </p>

</div>
</div>
<a class="anchor" id="ga506f893519db205966f7988c03c920f5"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define DEFAULT_MAPSIZE&#160;&#160;&#160;1048576</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Default size of memory map. This is certainly too small for any actual applications. Apps should always set the size explicitly using <a class="el" href="group__internal.html#gaa2506ec8dab3d969b0e609cd82e619e5" title="Set the size of the memory map to use for this environment. ">mdb_env_set_mapsize()</a>. </p>

</div>
</div>
<a class="anchor" id="gae25bcf0c0c5c5ead27e82543cbce02e1"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define PAGEHDRSZ&#160;&#160;&#160;((unsigned) offsetof(<a class="el" href="group__internal.html#structMDB__page">MDB_page</a>, mp_ptrs))</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Size of the page header, excluding dynamic data at the end </p>

</div>
</div>
<a class="anchor" id="ga344d0fdca4b5892aba67035a1f9d50e5"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define METADATA</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">p</td><td>)</td>
          <td>&#160;&#160;&#160;((void *)((char *)(p) + <a class="el" href="group__internal.html#gae25bcf0c0c5c5ead27e82543cbce02e1">PAGEHDRSZ</a>))</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Address of first usable data byte in a page, after the header </p>

</div>
</div>
<a class="anchor" id="ga7c4518ae24926f5f96d70a97c14fcad8"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define NUMKEYS</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">p</td><td>)</td>
          <td>&#160;&#160;&#160;(((p)-&gt;mp_lower - <a class="el" href="group__internal.html#gae25bcf0c0c5c5ead27e82543cbce02e1">PAGEHDRSZ</a>) &gt;&gt; 1)</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Number of nodes on a page </p>

</div>
</div>
<a class="anchor" id="gadec51e874501c53388b820f27a937654"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define SIZELEFT</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">p</td><td>)</td>
          <td>&#160;&#160;&#160;(<a class="el" href="group__internal.html#ga730e17f748208d77496ebd895c8375dc">indx_t</a>)((p)-&gt;mp_upper - (p)-&gt;mp_lower)</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>The amount of space remaining in the page </p>

</div>
</div>
<a class="anchor" id="ga5c5f96738000941699ea8118631b2792"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define PAGEFILL</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">p&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line">(1000L * ((env)-&gt;me_psize - <a class="code" href="group__internal.html#gae25bcf0c0c5c5ead27e82543cbce02e1">PAGEHDRSZ</a> - <a class="code" href="group__internal.html#gadec51e874501c53388b820f27a937654">SIZELEFT</a>(p)) / \</div>
<div class="line">                ((env)-&gt;me_psize - <a class="code" href="group__internal.html#gae25bcf0c0c5c5ead27e82543cbce02e1">PAGEHDRSZ</a>))</div>
<div class="ttc" id="group__internal_html_gae25bcf0c0c5c5ead27e82543cbce02e1"><div class="ttname"><a href="group__internal.html#gae25bcf0c0c5c5ead27e82543cbce02e1">PAGEHDRSZ</a></div><div class="ttdeci">#define PAGEHDRSZ</div><div class="ttdef"><b>Definition:</b> mdb.c:670</div></div>
<div class="ttc" id="group__internal_html_gadec51e874501c53388b820f27a937654"><div class="ttname"><a href="group__internal.html#gadec51e874501c53388b820f27a937654">SIZELEFT</a></div><div class="ttdeci">#define SIZELEFT(p)</div><div class="ttdef"><b>Definition:</b> mdb.c:679</div></div>
</div><!-- fragment --><p>The percentage of space used in the page, in tenths of a percent. </p>

</div>
</div>
<a class="anchor" id="ga634dcc0977fa832bc40237db6d829597"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define FILL_THRESHOLD&#160;&#160;&#160;250</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>The minimum page fill factor, in tenths of a percent. Pages emptier than this are candidates for merging. </p>

</div>
</div>
<a class="anchor" id="gac047007d585883bfc8cbc82e9a7f041a"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define IS_LEAF</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">p</td><td>)</td>
          <td>&#160;&#160;&#160;<a class="el" href="group__internal.html#gaa5b968981dd75e8bf30b40b9bf7bc4b8">F_ISSET</a>((p)-&gt;mp_flags, <a class="el" href="group__mdb__page.html#gac85fb59a9a2eda0d33e58b23a7ca019a">P_LEAF</a>)</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Test if a page is a leaf page </p>

</div>
</div>
<a class="anchor" id="gaac1756ae5ed27a7103224a0219b42c75"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define IS_LEAF2</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">p</td><td>)</td>
          <td>&#160;&#160;&#160;<a class="el" href="group__internal.html#gaa5b968981dd75e8bf30b40b9bf7bc4b8">F_ISSET</a>((p)-&gt;mp_flags, <a class="el" href="group__mdb__page.html#ga9c80486a549b2efbd5561cdd4df238c4">P_LEAF2</a>)</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Test if a page is a LEAF2 page </p>

</div>
</div>
<a class="anchor" id="gac3a145e1e46a73a21f95e1076717cf38"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define IS_BRANCH</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">p</td><td>)</td>
          <td>&#160;&#160;&#160;<a class="el" href="group__internal.html#gaa5b968981dd75e8bf30b40b9bf7bc4b8">F_ISSET</a>((p)-&gt;mp_flags, <a class="el" href="group__mdb__page.html#gad6639bfcad26dbcbf7970dfa28f1a930">P_BRANCH</a>)</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Test if a page is a branch page </p>

</div>
</div>
<a class="anchor" id="ga4907ee7e1f797f841e8708715c16175c"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define IS_OVERFLOW</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">p</td><td>)</td>
          <td>&#160;&#160;&#160;<a class="el" href="group__internal.html#gaa5b968981dd75e8bf30b40b9bf7bc4b8">F_ISSET</a>((p)-&gt;mp_flags, <a class="el" href="group__mdb__page.html#ga15141fe5d59efdf035bf8862250c25d7">P_OVERFLOW</a>)</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Test if a page is an overflow page </p>

</div>
</div>
<a class="anchor" id="ga4ca60a25dcbc659b2a01d5ef6de91119"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define IS_SUBP</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">p</td><td>)</td>
          <td>&#160;&#160;&#160;<a class="el" href="group__internal.html#gaa5b968981dd75e8bf30b40b9bf7bc4b8">F_ISSET</a>((p)-&gt;mp_flags, <a class="el" href="group__mdb__page.html#ga77cc6dc98fda40c81fb2f75068fb5551">P_SUBP</a>)</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Test if a page is a sub page </p>

</div>
</div>
<a class="anchor" id="gadab9c64629e86234de42d3c1375390f9"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define OVPAGES</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">size, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">psize&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td>&#160;&#160;&#160;((<a class="el" href="group__internal.html#gae25bcf0c0c5c5ead27e82543cbce02e1">PAGEHDRSZ</a>-1 + (size)) / (psize) + 1)</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>The number of overflow pages needed to store the given size. </p>

</div>
</div>
<a class="anchor" id="ga7d24748fedf732c90d840cbf0714d8d8"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define NODESIZE&#160;&#160;&#160;offsetof(<a class="el" href="group__internal.html#structMDB__node">MDB_node</a>, mn_data)</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Size of the node header, excluding dynamic data at the end </p>

</div>
</div>
<a class="anchor" id="gac226a942178d95066131a42e50c29d79"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define PGNO_TOPWORD&#160;&#160;&#160;((<a class="el" href="group__internal.html#gadb65f0424c9d3827bf6409087ad555cd">pgno_t</a>)-1 &gt; 0xffffffffu ? 32 : 0)</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Bit position of top word in page number, for shifting mn_flags </p>

</div>
</div>
<a class="anchor" id="gae17cd0c2dbe9e5f346e6fefbe64a94b8"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define INDXSIZE</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">k</td><td>)</td>
          <td>&#160;&#160;&#160;(<a class="el" href="group__internal.html#ga7d24748fedf732c90d840cbf0714d8d8">NODESIZE</a> + ((k) == NULL ? 0 : (k)-&gt;mv_size))</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Size of a node in a branch page with a given key. This is just the node header plus the key, there is no data. </p>

</div>
</div>
<a class="anchor" id="gacf0931b7f08df74abb803b41692ef965"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define LEAFSIZE</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">k, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">d&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td>&#160;&#160;&#160;(<a class="el" href="group__internal.html#ga7d24748fedf732c90d840cbf0714d8d8">NODESIZE</a> + (k)-&gt;mv_size + (d)-&gt;mv_size)</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Size of a node in a leaf page with a given key and data. This is node header plus key plus data size. </p>

</div>
</div>
<a class="anchor" id="gadd8222b06a62d77398a5d719e973a66d"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define NODEPTR</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">p, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">i&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td>&#160;&#160;&#160;((<a class="el" href="group__internal.html#structMDB__node">MDB_node</a> *)((char *)(p) + (p)-&gt;mp_ptrs[i]))</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Address of node <b>i</b> in page <b>p</b> </p>

</div>
</div>
<a class="anchor" id="ga0c2d3ecf490b76fd5ef32aa4082edefe"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define NODEKEY</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">node</td><td>)</td>
          <td>&#160;&#160;&#160;(void *)((node)-&gt;mn_data)</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Address of the key for the node </p>

</div>
</div>
<a class="anchor" id="gaaa3f3816301d68365052b69a0c1464e1"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define NODEDATA</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">node</td><td>)</td>
          <td>&#160;&#160;&#160;(void *)((char *)(node)-&gt;mn_data + (node)-&gt;mn_ksize)</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Address of the data for a node </p>

</div>
</div>
<a class="anchor" id="gabc71d778f3391485aee252505fb06e90"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define NODEPGNO</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">node</td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line">((node)-&gt;mn_lo | ((<a class="code" href="group__internal.html#gadb65f0424c9d3827bf6409087ad555cd">pgno_t</a>) (node)-&gt;mn_hi &lt;&lt; 16) | \</div>
<div class="line">     (<a class="code" href="group__internal.html#gac226a942178d95066131a42e50c29d79">PGNO_TOPWORD</a> ? ((<a class="code" href="group__internal.html#gadb65f0424c9d3827bf6409087ad555cd">pgno_t</a>) (node)-&gt;mn_flags &lt;&lt; <a class="code" href="group__internal.html#gac226a942178d95066131a42e50c29d79">PGNO_TOPWORD</a>) : 0))</div>
<div class="ttc" id="group__internal_html_gac226a942178d95066131a42e50c29d79"><div class="ttname"><a href="group__internal.html#gac226a942178d95066131a42e50c29d79">PGNO_TOPWORD</a></div><div class="ttdeci">#define PGNO_TOPWORD</div><div class="ttdef"><b>Definition:</b> mdb.c:741</div></div>
<div class="ttc" id="group__internal_html_gadb65f0424c9d3827bf6409087ad555cd"><div class="ttname"><a href="group__internal.html#gadb65f0424c9d3827bf6409087ad555cd">pgno_t</a></div><div class="ttdeci">MDB_ID pgno_t</div><div class="ttdef"><b>Definition:</b> mdb.c:313</div></div>
</div><!-- fragment --><p>Get the page number pointed to by a branch node </p>

</div>
</div>
<a class="anchor" id="ga220e51ef0d2da4d4ff58e94065eaa095"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define SETPGNO</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">node, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">pgno&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line"><span class="keywordflow">do</span> { \</div>
<div class="line">    (node)-&gt;mn_lo = (pgno) &amp; 0xffff; (node)-&gt;mn_hi = (pgno) &gt;&gt; 16; \</div>
<div class="line">    if (<a class="code" href="group__internal.html#gac226a942178d95066131a42e50c29d79">PGNO_TOPWORD</a>) (node)-&gt;mn_flags = (pgno) &gt;&gt; <a class="code" href="group__internal.html#gac226a942178d95066131a42e50c29d79">PGNO_TOPWORD</a>; } <span class="keywordflow">while</span>(0)</div>
<div class="ttc" id="group__internal_html_gac226a942178d95066131a42e50c29d79"><div class="ttname"><a href="group__internal.html#gac226a942178d95066131a42e50c29d79">PGNO_TOPWORD</a></div><div class="ttdeci">#define PGNO_TOPWORD</div><div class="ttdef"><b>Definition:</b> mdb.c:741</div></div>
</div><!-- fragment --><p>Set the page number in a branch node </p>

</div>
</div>
<a class="anchor" id="ga8f307b7c4ebae2194b30328bc87c4070"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define NODEDSZ</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">node</td><td>)</td>
          <td>&#160;&#160;&#160;((node)-&gt;mn_lo | ((unsigned)(node)-&gt;mn_hi &lt;&lt; 16))</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Get the size of the data in a leaf node </p>

</div>
</div>
<a class="anchor" id="ga737db862c118cd893ac8d6a87f6175fe"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define SETDSZ</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">node, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">size&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line"><span class="keywordflow">do</span> { \</div>
<div class="line">    (node)-&gt;mn_lo = (size) &amp; 0xffff; (node)-&gt;mn_hi = (size) &gt;&gt; 16;} <span class="keywordflow">while</span>(0)</div>
</div><!-- fragment --><p>Set the size of the data for a leaf node </p>

</div>
</div>
<a class="anchor" id="gaa680cb94fd0c91a8818205fcef2d1b53"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define NODEKSZ</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">node</td><td>)</td>
          <td>&#160;&#160;&#160;((node)-&gt;mn_ksize)</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>The size of a key in a node </p>

</div>
</div>
<a class="anchor" id="gaa2e6eaaa9f8fcfd2078846caf2249895"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define COPY_PGNO</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">dst, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">src&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line"><span class="keywordflow">do</span> { \</div>
<div class="line">    unsigned <span class="keywordtype">short</span> *s, *d;  \</div>
<div class="line">    s = (<span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> *)&amp;(src);   \</div>
<div class="line">    d = (<span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> *)&amp;(dst);   \</div>
<div class="line">    *d++ = *s++;    \</div>
<div class="line">    *d++ = *s++;    \</div>
<div class="line">    *d++ = *s++;    \</div>
<div class="line">    *d = *s;    \</div>
<div class="line">} <span class="keywordflow">while</span> (0)</div>
</div><!-- fragment --><p>Copy a page number from src to dst </p>

</div>
</div>
<a class="anchor" id="ga7c01a3e255fb83aab9136fc9a840858a"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define LEAF2KEY</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">p, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">i, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">ks&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td>&#160;&#160;&#160;((char *)(p) + <a class="el" href="group__internal.html#gae25bcf0c0c5c5ead27e82543cbce02e1">PAGEHDRSZ</a> + ((i)*(ks)))</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>The address of a key in a LEAF2 page. LEAF2 pages are used for <a class="el" href="group__mdb__dbi__open.html#ga5acc26f80668d1ebc31265d178c69338">MDB_DUPFIXED</a> sorted-duplicate sub-DBs. There are no node headers, keys are stored contiguously. </p>

</div>
</div>
<a class="anchor" id="ga8b7a0121acba5d0a49c06bf7d6982de6"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define MDB_GET_KEY</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">node, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">keyptr&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line">{ <span class="keywordflow">if</span> ((keyptr) != NULL) { \</div>
<div class="line">    (keyptr)-&gt;mv_size = <a class="code" href="group__internal.html#gaa680cb94fd0c91a8818205fcef2d1b53">NODEKSZ</a>(node); (keyptr)-&gt;mv_data = <a class="code" href="group__internal.html#ga0c2d3ecf490b76fd5ef32aa4082edefe">NODEKEY</a>(node); } }</div>
<div class="ttc" id="group__internal_html_ga0c2d3ecf490b76fd5ef32aa4082edefe"><div class="ttname"><a href="group__internal.html#ga0c2d3ecf490b76fd5ef32aa4082edefe">NODEKEY</a></div><div class="ttdeci">#define NODEKEY(node)</div><div class="ttdef"><b>Definition:</b> mdb.c:757</div></div>
<div class="ttc" id="group__internal_html_gaa680cb94fd0c91a8818205fcef2d1b53"><div class="ttname"><a href="group__internal.html#gaa680cb94fd0c91a8818205fcef2d1b53">NODEKSZ</a></div><div class="ttdeci">#define NODEKSZ(node)</div><div class="ttdef"><b>Definition:</b> mdb.c:777</div></div>
</div><!-- fragment --><p>Set the <b>node's</b> key into <b>keyptr</b>, if requested. </p>

</div>
</div>
<a class="anchor" id="gaeda61f782c32f78026d0513425308242"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define MDB_GET_KEY2</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">node, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">key&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td>&#160;&#160;&#160;{ key.mv_size = <a class="el" href="group__internal.html#gaa680cb94fd0c91a8818205fcef2d1b53">NODEKSZ</a>(node); key.mv_data = <a class="el" href="group__internal.html#ga0c2d3ecf490b76fd5ef32aa4082edefe">NODEKEY</a>(node); }</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Set the <b>node's</b> key into <b>key</b>. </p>

</div>
</div>
<a class="anchor" id="gaf63959656ca191ddd4e9e7a119d195e1"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define MDB_VALID&#160;&#160;&#160;0x8000</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>mdb_dbi_open flags DB handle is valid, for me_dbflags </p>

</div>
</div>
<a class="anchor" id="ga999f0ca5c5a7c2e736a21f3aab93cebc"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define VALID_FLAGS</td>
        </tr>
      </table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line">(<a class="code" href="group__mdb__dbi__open.html#gaea2d873575b7875771ea5296b4c85beb">MDB_REVERSEKEY</a>|<a class="code" href="group__mdb__dbi__open.html#gae0626566c2562e9007f5c8c9535bab1a">MDB_DUPSORT</a>|<a class="code" href="group__mdb__dbi__open.html#ga219c5c50d41902fca79c68d8836e7753">MDB_INTEGERKEY</a>|<a class="code" href="group__mdb__dbi__open.html#ga5acc26f80668d1ebc31265d178c69338">MDB_DUPFIXED</a>|<a class="code" href="group__mdb__dbi__open.html#gad9b1b4e231bf2e4fa8d7f90be8ba2765">\</a></div>
<div class="line"><a class="code" href="group__mdb__dbi__open.html#gad9b1b4e231bf2e4fa8d7f90be8ba2765">	MDB_INTEGERDUP</a>|<a class="code" href="group__mdb__dbi__open.html#gaf99ce592b75d65e23503f78a7933c297">MDB_REVERSEDUP</a>|<a class="code" href="group__mdb__dbi__open.html#gafd47620cff55fb3ec7cd7501d4d1cb4a">MDB_CREATE</a>)</div>
<div class="ttc" id="group__mdb__dbi__open_html_gaf99ce592b75d65e23503f78a7933c297"><div class="ttname"><a href="group__mdb__dbi__open.html#gaf99ce592b75d65e23503f78a7933c297">MDB_REVERSEDUP</a></div><div class="ttdeci">#define MDB_REVERSEDUP</div><div class="ttdef"><b>Definition:</b> lmdb.h:307</div></div>
<div class="ttc" id="group__mdb__dbi__open_html_gafd47620cff55fb3ec7cd7501d4d1cb4a"><div class="ttname"><a href="group__mdb__dbi__open.html#gafd47620cff55fb3ec7cd7501d4d1cb4a">MDB_CREATE</a></div><div class="ttdeci">#define MDB_CREATE</div><div class="ttdef"><b>Definition:</b> lmdb.h:309</div></div>
<div class="ttc" id="group__mdb__dbi__open_html_gad9b1b4e231bf2e4fa8d7f90be8ba2765"><div class="ttname"><a href="group__mdb__dbi__open.html#gad9b1b4e231bf2e4fa8d7f90be8ba2765">MDB_INTEGERDUP</a></div><div class="ttdeci">#define MDB_INTEGERDUP</div><div class="ttdef"><b>Definition:</b> lmdb.h:305</div></div>
<div class="ttc" id="group__mdb__dbi__open_html_ga219c5c50d41902fca79c68d8836e7753"><div class="ttname"><a href="group__mdb__dbi__open.html#ga219c5c50d41902fca79c68d8836e7753">MDB_INTEGERKEY</a></div><div class="ttdeci">#define MDB_INTEGERKEY</div><div class="ttdef"><b>Definition:</b> lmdb.h:301</div></div>
<div class="ttc" id="group__mdb__dbi__open_html_ga5acc26f80668d1ebc31265d178c69338"><div class="ttname"><a href="group__mdb__dbi__open.html#ga5acc26f80668d1ebc31265d178c69338">MDB_DUPFIXED</a></div><div class="ttdeci">#define MDB_DUPFIXED</div><div class="ttdef"><b>Definition:</b> lmdb.h:303</div></div>
<div class="ttc" id="group__mdb__dbi__open_html_gaea2d873575b7875771ea5296b4c85beb"><div class="ttname"><a href="group__mdb__dbi__open.html#gaea2d873575b7875771ea5296b4c85beb">MDB_REVERSEKEY</a></div><div class="ttdeci">#define MDB_REVERSEKEY</div><div class="ttdef"><b>Definition:</b> lmdb.h:296</div></div>
<div class="ttc" id="group__mdb__dbi__open_html_gae0626566c2562e9007f5c8c9535bab1a"><div class="ttname"><a href="group__mdb__dbi__open.html#gae0626566c2562e9007f5c8c9535bab1a">MDB_DUPSORT</a></div><div class="ttdeci">#define MDB_DUPSORT</div><div class="ttdef"><b>Definition:</b> lmdb.h:298</div></div>
</div><!-- fragment -->
</div>
</div>
<a class="anchor" id="ga3aa4d92eab9197f1d5f24403b1cfaaca"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define FREE_DBI&#160;&#160;&#160;0</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Handle for the DB used to track free pages. </p>

</div>
</div>
<a class="anchor" id="gad168f01e88e89311f7056748e634d11d"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define MAIN_DBI&#160;&#160;&#160;1</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Handle for the default DB. </p>

</div>
</div>
<a class="anchor" id="gaef453f149efb721c2eb311a6ede48dc8"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define CURSOR_STACK&#160;&#160;&#160;32</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Enough space for 2^32 nodes with minimum of 2 keys per node. I.e., plenty. At 4 keys per node, enough for 2^64 nodes, so there's probably no need to raise this on a 64 bit machine. </p>

</div>
</div>
<a class="anchor" id="gaddd9c385c8b6517e7431f832805e96c6"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define MDB_COMMIT_PAGES&#160;&#160;&#160;64</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>max number of pages to commit in one writev() call </p>

</div>
</div>
<a class="anchor" id="ga6ca75cdd9d6e5a1b941ba35c50a77886"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define MAX_WRITE&#160;&#160;&#160;(0x80000000U &gt;&gt; (sizeof(ssize_t) == 4))</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>max bytes to write in one call </p>

</div>
</div>
<a class="anchor" id="ga76a6a74e0b638920bf8831c8fed7ea09"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define TXN_DBI_EXIST</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">dbi&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td>&#160;&#160;&#160;((txn) &amp;&amp; (dbi) &lt; (txn)-&gt;mt_numdbs &amp;&amp; ((txn)-&gt;mt_dbflags[dbi] &amp; <a class="el" href="group__mt__dbflag.html#gac774963973e18f60ae646b7295219a8d">DB_VALID</a>))</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Check <b>txn</b> and <b>dbi</b> arguments to a function </p>

</div>
</div>
<a class="anchor" id="ga43ef6688956e10907bc4e1d6dbc2d946"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define MDB_SPLIT_REPLACE&#160;&#160;&#160;<a class="el" href="group__mdb__put.html#ga0583fe408057ff1c03b8dd071c0d68d2">MDB_APPENDDUP</a></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>newkey is not new </p>

</div>
</div>
<a class="anchor" id="ga2f8f04a538e4d5da1d21c02d3dba3f53"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define mdb_cassert</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">mc, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">expr&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td>&#160;&#160;&#160;mdb_assert0((mc)-&gt;mc_txn-&gt;mt_env, expr, #expr)</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>assert(3) variant in cursor context </p>

</div>
</div>
<a class="anchor" id="ga58da4ab302f2d7ce9dba812199eb6ceb"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define mdb_tassert</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">mc, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">expr&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td>&#160;&#160;&#160;mdb_assert0((txn)-&gt;mt_env, expr, #expr)</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>assert(3) variant in transaction context </p>

</div>
</div>
<a class="anchor" id="ga90d50765b3f12b8c239ab259f99ec243"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define mdb_eassert</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">expr&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td>&#160;&#160;&#160;mdb_assert0(env, expr, #expr)</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>assert(3) variant in environment context </p>

</div>
</div>
<a class="anchor" id="gaf9083a40be65f748798d585f40e26056"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define mdb_assert0</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">expr, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">expr_txt&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line">((expr) ? (<span class="keywordtype">void</span>)0 : \</div>
<div class="line">        mdb_assert_fail(env, expr_txt, <a class="code" href="group__compat.html#ga506f7f49894aad220a0b158acd6eb276">mdb_func_</a>, __FILE__, __LINE__))</div>
<div class="ttc" id="group__compat_html_ga506f7f49894aad220a0b158acd6eb276"><div class="ttname"><a href="group__compat.html#ga506f7f49894aad220a0b158acd6eb276">mdb_func_</a></div><div class="ttdeci">#define mdb_func_</div><div class="ttdef"><b>Definition:</b> mdb.c:166</div></div>
</div><!-- fragment -->
</div>
</div>
<a class="anchor" id="ga869f3a387bf2529a5fdba260a82dc1d7"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define LOCKNAME&#160;&#160;&#160;&quot;/lock.mdb&quot;</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>The name of the lock file in the DB environment </p>

</div>
</div>
<a class="anchor" id="gad5a54432b85530e3f2cf9b88488e0eee"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define DATANAME&#160;&#160;&#160;&quot;/data.mdb&quot;</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>The name of the data file in the DB environment </p>

</div>
</div>
<a class="anchor" id="ga3deadcb7227066bea0b6907e30a94a6b"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define LOCKSUFF&#160;&#160;&#160;&quot;-lock&quot;</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>The suffix of the lock file when no subdir is used </p>

</div>
</div>
<a class="anchor" id="ga73e66d763b8c4837cce5369052628bbe"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define CHANGEABLE&#160;&#160;&#160;(<a class="el" href="group__mdb__env.html#ga5791dd1adb09123f82dd1f331209e12e">MDB_NOSYNC</a>|<a class="el" href="group__mdb__env.html#ga5021c4e96ffe9f383f5b8ab2af8e4b16">MDB_NOMETASYNC</a>|<a class="el" href="group__mdb__env.html#gab034ed0d8e5938090aef5ee0997f7e94">MDB_MAPASYNC</a>|<a class="el" href="group__mdb__env.html#gafa035a1f17ebf31376eafb7bd2cdd448">MDB_NOMEMINIT</a>)</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Only a subset of the <a class="el" href="group__mdb__env.html">Environment Flags</a> flags can be changed at runtime. Changing other flags requires closing the environment and re-opening it with the new flags. </p>

</div>
</div>
<a class="anchor" id="gabcfb3c5c09341252735704ee22684339"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define CHANGELESS</td>
        </tr>
      </table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line">(<a class="code" href="group__mdb__env.html#ga492952277c481bc4a6fa08ef71c29487">MDB_FIXEDMAP</a>|<a class="code" href="group__mdb__env.html#gabf0e3e3b1e18df6526969f6825a388ea">MDB_NOSUBDIR</a>|<a class="code" href="group__mdb__env.html#gac4c41c0ae044127b2fc80420c323cac6">MDB_RDONLY</a>|<a class="code" href="group__mdb__env.html#ga7b81e9fd5f8fae38786d67e1a8387fa7">MDB_WRITEMAP</a>| <a class="code" href="group__mdb__env.html#ga5dca84a576d14b4bfe2deddc2dc622d3">\</a></div>
<div class="line"><a class="code" href="group__mdb__env.html#ga5dca84a576d14b4bfe2deddc2dc622d3">	MDB_NOTLS</a>|<a class="code" href="group__mdb__env.html#ga9b0450b1a87cb9f22e033550e49e5037">MDB_NOLOCK</a>|<a class="code" href="group__mdb__env.html#ga0fcdaf42f0c45749a2dff11ee322303f">MDB_NORDAHEAD</a>)</div>
<div class="ttc" id="group__mdb__env_html_gac4c41c0ae044127b2fc80420c323cac6"><div class="ttname"><a href="group__mdb__env.html#gac4c41c0ae044127b2fc80420c323cac6">MDB_RDONLY</a></div><div class="ttdeci">#define MDB_RDONLY</div><div class="ttdef"><b>Definition:</b> lmdb.h:275</div></div>
<div class="ttc" id="group__mdb__env_html_ga492952277c481bc4a6fa08ef71c29487"><div class="ttname"><a href="group__mdb__env.html#ga492952277c481bc4a6fa08ef71c29487">MDB_FIXEDMAP</a></div><div class="ttdeci">#define MDB_FIXEDMAP</div><div class="ttdef"><b>Definition:</b> lmdb.h:269</div></div>
<div class="ttc" id="group__mdb__env_html_ga9b0450b1a87cb9f22e033550e49e5037"><div class="ttname"><a href="group__mdb__env.html#ga9b0450b1a87cb9f22e033550e49e5037">MDB_NOLOCK</a></div><div class="ttdeci">#define MDB_NOLOCK</div><div class="ttdef"><b>Definition:</b> lmdb.h:285</div></div>
<div class="ttc" id="group__mdb__env_html_ga7b81e9fd5f8fae38786d67e1a8387fa7"><div class="ttname"><a href="group__mdb__env.html#ga7b81e9fd5f8fae38786d67e1a8387fa7">MDB_WRITEMAP</a></div><div class="ttdeci">#define MDB_WRITEMAP</div><div class="ttdef"><b>Definition:</b> lmdb.h:279</div></div>
<div class="ttc" id="group__mdb__env_html_gabf0e3e3b1e18df6526969f6825a388ea"><div class="ttname"><a href="group__mdb__env.html#gabf0e3e3b1e18df6526969f6825a388ea">MDB_NOSUBDIR</a></div><div class="ttdeci">#define MDB_NOSUBDIR</div><div class="ttdef"><b>Definition:</b> lmdb.h:271</div></div>
<div class="ttc" id="group__mdb__env_html_ga5dca84a576d14b4bfe2deddc2dc622d3"><div class="ttname"><a href="group__mdb__env.html#ga5dca84a576d14b4bfe2deddc2dc622d3">MDB_NOTLS</a></div><div class="ttdeci">#define MDB_NOTLS</div><div class="ttdef"><b>Definition:</b> lmdb.h:283</div></div>
<div class="ttc" id="group__mdb__env_html_ga0fcdaf42f0c45749a2dff11ee322303f"><div class="ttname"><a href="group__mdb__env.html#ga0fcdaf42f0c45749a2dff11ee322303f">MDB_NORDAHEAD</a></div><div class="ttdeci">#define MDB_NORDAHEAD</div><div class="ttdef"><b>Definition:</b> lmdb.h:287</div></div>
</div><!-- fragment -->
</div>
</div>
<a class="anchor" id="ga47f9ed89920d053e13d17c1a443e9643"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define mdb_cmp_clong&#160;&#160;&#160;<a class="el" href="group__internal.html#ga2d4077f468b6ac7bb316a24a29c5f8b3">mdb_cmp_cint</a></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Compare two items pointing at size_t's of unknown alignment. </p>

</div>
</div>
<a class="anchor" id="ga2216d72d26517bbe3d036007c2f8d20f"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define MDB_NOSPILL&#160;&#160;&#160;0x8000</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Do not spill pages to disk if txn is getting full, may fail instead </p>

</div>
</div>
<h2 class="groupheader">Typedef Documentation</h2>
<a class="anchor" id="gadb65f0424c9d3827bf6409087ad555cd"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef <a class="el" href="group__idls.html#gad3544b2a0d07ee195d91e92b0e46005e">MDB_ID</a> <a class="el" href="group__internal.html#gadb65f0424c9d3827bf6409087ad555cd">pgno_t</a></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>A page number in the database. Note that 64 bit page numbers are overkill, since pages themselves already represent 12-13 bits of addressable memory, and the OS will always limit applications to a maximum of 63 bits of address space.</p>
<dl class="section note"><dt>Note</dt><dd>In the <a class="el" href="group__internal.html#structMDB__node">MDB_node</a> structure, we only store 48 bits of this value, which thus limits us to only 60 bits of addressable data. </dd></dl>

</div>
</div>
<a class="anchor" id="gabbaef7c9c710f8652a62c32d748c040e"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef <a class="el" href="group__idls.html#gad3544b2a0d07ee195d91e92b0e46005e">MDB_ID</a> <a class="el" href="group__internal.html#gabbaef7c9c710f8652a62c32d748c040e">txnid_t</a></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>A transaction ID. See struct <a class="el" href="group__internal.html#a26512036328af11cdaeb6c9880859290">MDB_txn.mt_txnid</a> for details. </p>

</div>
</div>
<a class="anchor" id="ga730e17f748208d77496ebd895c8375dc"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef uint16_t <a class="el" href="group__internal.html#ga730e17f748208d77496ebd895c8375dc">indx_t</a></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Used for offsets within a single page. Since memory pages are typically 4 or 8KB in size, 12-13 bits, this is plenty. </p>

</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="ga979b426d11e7366d1c27fa528c96dbe6"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static int mdb_page_alloc </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__internal.html#structMDB__cursor">MDB_cursor</a> *&#160;</td>
          <td class="paramname"><em>mc</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>num</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__internal.html#structMDB__page">MDB_page</a> **&#160;</td>
          <td class="paramname"><em>mp</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Allocate page numbers and memory for writing. Maintain me_pglast, me_pghead and mt_next_pgno.</p>
<p>If there are free pages available from older transactions, they are re-used first. Otherwise allocate a new page at mt_next_pgno. Do not modify the freedB, just merge freeDB records into me_pghead[] and move me_pglast to say which records were consumed. Only this function can create me_pghead and move me_pglast/mt_next_pgno. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">mc</td><td>cursor A cursor handle identifying the transaction and database for which we are allocating. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">num</td><td>the number of pages to allocate. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">mp</td><td>Address of the allocated page(s). Requests for multiple pages will always be satisfied by a single contiguous chunk of memory. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 on success, non-zero on failure. </dd></dl>

</div>
</div>
<a class="anchor" id="ga4c2a40c60564221e8f075d520be56c58"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static int mdb_page_new </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__internal.html#structMDB__cursor">MDB_cursor</a> *&#160;</td>
          <td class="paramname"><em>mc</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint32_t&#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>num</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__internal.html#structMDB__page">MDB_page</a> **&#160;</td>
          <td class="paramname"><em>mp</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Allocate and initialize new pages for a database. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">mc</td><td>a cursor on the database being added to. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">flags</td><td>flags defining what type of page is being allocated. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">num</td><td>the number of pages to allocate. This is usually 1, unless allocating overflow pages for a large record. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">mp</td><td>Address of a page, or NULL on failure. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 on success, non-zero on failure. </dd></dl>

</div>
</div>
<a class="anchor" id="gacffbede1a02377fe1cd2dd2594e80ad1"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static int mdb_page_touch </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__internal.html#structMDB__cursor">MDB_cursor</a> *&#160;</td>
          <td class="paramname"><em>mc</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Touch a page: make it dirty and re-insert into tree with updated pgno. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">mc</td><td>cursor pointing to the page to be touched </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 on success, non-zero on failure. </dd></dl>

</div>
</div>
<a class="anchor" id="ga19a23c75dee44d012293693edd26d375"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static int mdb_page_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__internal.html#gadb65f0424c9d3827bf6409087ad555cd">pgno_t</a>&#160;</td>
          <td class="paramname"><em>pgno</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__internal.html#structMDB__page">MDB_page</a> **&#160;</td>
          <td class="paramname"><em>ret</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int *&#160;</td>
          <td class="paramname"><em>lvl</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Find the address of the page corresponding to a given page number. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">txn</td><td>the transaction for this access. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">pgno</td><td>the page number for the page to retrieve. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">ret</td><td>address of a pointer where the page's address will be stored. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">lvl</td><td>dirty_list inheritance level of found page. 1=current txn, 0=mapped page. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 on success, non-zero on failure. </dd></dl>

</div>
</div>
<a class="anchor" id="ga50669a51cfec605224cc5d1f999d0e47"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static int mdb_page_search_root </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__internal.html#structMDB__cursor">MDB_cursor</a> *&#160;</td>
          <td class="paramname"><em>mc</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">int&#160;</td>
          <td class="paramname"><em>flags</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Finish <a class="el" href="group__internal.html#ga3e177d0d5a802d9eaab25653adcf94b4">mdb_page_search()</a> / <a class="el" href="group__internal.html#gac4b7ee655d296cff5a2d7fd2c69c2cca">mdb_page_search_lowest()</a>. The cursor is at the root page, set up the rest of it. </p>

</div>
</div>
<a class="anchor" id="ga3e177d0d5a802d9eaab25653adcf94b4"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static int mdb_page_search </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__internal.html#structMDB__cursor">MDB_cursor</a> *&#160;</td>
          <td class="paramname"><em>mc</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">int&#160;</td>
          <td class="paramname"><em>flags</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Search for the page a given key should be in. Push it and its parent pages on the cursor stack. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in,out]</td><td class="paramname">mc</td><td>the cursor for this operation. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">key</td><td>the key to search for, or NULL for first/last page. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">flags</td><td>If MDB_PS_MODIFY is set, visited pages in the DB are touched (updated with new page numbers). If MDB_PS_FIRST or MDB_PS_LAST is set, find first or last leaf. This is used by <a class="el" href="group__internal.html#ga20150fa80f311ef191ba80e80432a4ac">mdb_cursor_first()</a> and <a class="el" href="group__internal.html#ga6508b6561d58faa7c3c9e2f8ee760804">mdb_cursor_last()</a>. If MDB_PS_ROOTONLY set, just fetch root node, no further lookups. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 on success, non-zero on failure. </dd></dl>

</div>
</div>
<a class="anchor" id="ga6b9c240d754de29637beefac7fad7c49"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static int mdb_page_merge </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__internal.html#structMDB__cursor">MDB_cursor</a> *&#160;</td>
          <td class="paramname"><em>csrc</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>cdst</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Merge one page into another. The nodes from the page pointed to by <b>csrc</b> will be copied to the page pointed to by <b>cdst</b> and then the <b>csrc</b> page will be freed. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">csrc</td><td>Cursor pointing to the source page. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">cdst</td><td>Cursor pointing to the destination page. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 on success, non-zero on failure. </dd></dl>

</div>
</div>
<a class="anchor" id="gaaf64f571cd1f1e573d42ec55a0bdcbb1"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static int mdb_page_split </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__internal.html#structMDB__cursor">MDB_cursor</a> *&#160;</td>
          <td class="paramname"><em>mc</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>newkey</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>newdata</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__internal.html#gadb65f0424c9d3827bf6409087ad555cd">pgno_t</a>&#160;</td>
          <td class="paramname"><em>newpgno</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>nflags</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Split a page and insert a new node. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in,out]</td><td class="paramname">mc</td><td>Cursor pointing to the page and desired insertion index. The cursor will be updated to point to the actual page and index where the node got inserted after the split. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">newkey</td><td>The key for the newly inserted node. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">newdata</td><td>The data for the newly inserted node. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">newpgno</td><td>The page number, if the new node is a branch node. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">nflags</td><td>The <a class="el" href="group__mdb__node.html#ga8dbbb28473b39ed9d19dc4e7b5b4dd52">NODE_ADD_FLAGS</a> for the new node. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 on success, non-zero on failure. </dd></dl>

</div>
</div>
<a class="anchor" id="ga740b829c80b191a4f19a15d853bc73fb"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static int mdb_env_read_header </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__meta">MDB_meta</a> *&#160;</td>
          <td class="paramname"><em>meta</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Read the environment parameters of a DB environment before mapping it into memory. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">env</td><td>the environment handle </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">meta</td><td>address of where to store the meta information </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 on success, non-zero on failure. </dd></dl>

</div>
</div>
<a class="anchor" id="gaeac690b780b6f58b0eb86016852b9c83"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static int mdb_env_pick_meta </td>
          <td>(</td>
          <td class="paramtype">const <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>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Check both meta pages to see which one is newer. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">env</td><td>the environment handle </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>meta toggle (0 or 1). </dd></dl>

</div>
</div>
<a class="anchor" id="ga1d1142b1a45101bc8e102175716a1868"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static int mdb_env_write_meta </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>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Update the environment info to commit a transaction. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">txn</td><td>the transaction that's being committed </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 on success, non-zero on failure. </dd></dl>

</div>
</div>
<a class="anchor" id="ga06fd686be0835745b81600d6400eba2d"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static void mdb_env_close0 </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>excl</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Destroy resources from <a class="el" href="group__internal.html#ga32a193c6bf4d7d5c5d579e71f22e9340" title="Open an environment handle. ">mdb_env_open()</a>, clear our readers &amp; DBIs </p>

</div>
</div>
<a class="anchor" id="ga85b9b4db62130d5ae523970615c5e69a"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static <a class="el" href="group__internal.html#structMDB__node">MDB_node</a> * mdb_node_search </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__internal.html#structMDB__cursor">MDB_cursor</a> *&#160;</td>
          <td class="paramname"><em>mc</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">int *&#160;</td>
          <td class="paramname"><em>exactp</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Search for key within a page, using binary search. Returns the smallest entry larger or equal to the key. If exactp is non-null, stores whether the found entry was an exact match in *exactp (1 or 0). Updates the cursor index with the index of the found entry. If no entry larger or equal to the key is found, returns NULL. </p>

</div>
</div>
<a class="anchor" id="ga288a1ab8d7ef01617f068e7a7fd97234"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static int mdb_node_add </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__internal.html#structMDB__cursor">MDB_cursor</a> *&#160;</td>
          <td class="paramname"><em>mc</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__internal.html#ga730e17f748208d77496ebd895c8375dc">indx_t</a>&#160;</td>
          <td class="paramname"><em>indx</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__internal.html#gadb65f0424c9d3827bf6409087ad555cd">pgno_t</a>&#160;</td>
          <td class="paramname"><em>pgno</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>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Add a node to the page pointed to by the cursor. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">mc</td><td>The cursor for this operation. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">indx</td><td>The index on the page where the new node should be added. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">key</td><td>The key for the new node. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">data</td><td>The data for the new node, if any. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">pgno</td><td>The page number, if adding a branch node. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">flags</td><td>Flags for the node. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 on success, non-zero on failure. Possible errors are: <ul>
<li>
ENOMEM - failed to allocate overflow pages for the node. </li>
<li>
MDB_PAGE_FULL - there is insufficient room in the page. This error should never happen since all callers already calculate the page's free space before calling this function. </li>
</ul>
</dd></dl>

</div>
</div>
<a class="anchor" id="ga52d8ac569f2b17cc9b35a2a13485fe74"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static void mdb_node_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>mc</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>ksize</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Delete the specified node from a page. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">mc</td><td>Cursor pointing to the node to delete. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">ksize</td><td>The size of a node. Only used if the page is part of a <a class="el" href="group__mdb__dbi__open.html#ga5acc26f80668d1ebc31265d178c69338">MDB_DUPFIXED</a> database. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="ga02718a3553f0dedce399c58ffd57be47"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static void mdb_node_shrink </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__internal.html#structMDB__page">MDB_page</a> *&#160;</td>
          <td class="paramname"><em>mp</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__internal.html#ga730e17f748208d77496ebd895c8375dc">indx_t</a>&#160;</td>
          <td class="paramname"><em>indx</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Compact the main page after deleting a node on a subpage. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">mp</td><td>The main page to operate on. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">indx</td><td>The index of the subpage on the main page. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="gaeeb09e6602e6e5dacfdb93c6c2575ebb"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static int mdb_node_move </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__internal.html#structMDB__cursor">MDB_cursor</a> *&#160;</td>
          <td class="paramname"><em>csrc</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>cdst</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Move a node from csrc to cdst. </p>

</div>
</div>
<a class="anchor" id="ga686cd45c8eeca8be97f31b6b5ab7c8cb"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static int mdb_node_read </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__node">MDB_node</a> *&#160;</td>
          <td class="paramname"><em>leaf</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>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Return the data associated with a given node. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">txn</td><td>The transaction for this operation. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">leaf</td><td>The node being read. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">data</td><td>Updated to point to the node's data. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 on success, non-zero on failure. </dd></dl>

</div>
</div>
<a class="anchor" id="ga06ab7513e8c27b9be243ee976545948a"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static size_t mdb_leaf_size </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__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>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Calculate the size of a leaf node. The size depends on the environment's page size; if a data item is too large it will be put onto an overflow page and the node size will only include the key and not the data. Sizes are always rounded up to an even number of bytes, to guarantee 2-byte alignment of the <a class="el" href="group__internal.html#structMDB__node">MDB_node</a> headers. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">env</td><td>The environment handle. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">key</td><td>The key for the node. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">data</td><td>The data for the node. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The number of bytes needed to store the node. </dd></dl>

</div>
</div>
<a class="anchor" id="ga2ce2b308d3cd41f92376a4be402658d2"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static size_t mdb_branch_size </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__val">MDB_val</a> *&#160;</td>
          <td class="paramname"><em>key</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Calculate the size of a branch node. The size should depend on the environment's page size but since we currently don't support spilling large keys onto overflow pages, it's simply the size of the <a class="el" href="group__internal.html#structMDB__node">MDB_node</a> header plus the size of the key. Sizes are always rounded up to an even number of bytes, to guarantee 2-byte alignment of the <a class="el" href="group__internal.html#structMDB__node">MDB_node</a> headers. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">env</td><td>The environment handle. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">key</td><td>The key for the node. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The number of bytes needed to store the node. </dd></dl>

</div>
</div>
<a class="anchor" id="ga1c527b36b4ea4b01227e9bf986e3794f"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static int mdb_rebalance </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__internal.html#structMDB__cursor">MDB_cursor</a> *&#160;</td>
          <td class="paramname"><em>mc</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Rebalance the tree after a delete operation. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">mc</td><td>Cursor pointing to the page where rebalancing should begin. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 on success, non-zero on failure. </dd></dl>

</div>
</div>
<a class="anchor" id="gaabbdf46d2cdf43a48c57b6eddf89b28c"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static int mdb_update_key </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__internal.html#structMDB__cursor">MDB_cursor</a> *&#160;</td>
          <td class="paramname"><em>mc</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>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Replace the key for a branch node with a new key. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">mc</td><td>Cursor pointing to the node to operate on. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">key</td><td>The new key to use. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 on success, non-zero on failure. </dd></dl>

</div>
</div>
<a class="anchor" id="gac802ed8b8d372be8f821865fb61c7add"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static void mdb_cursor_pop </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__internal.html#structMDB__cursor">MDB_cursor</a> *&#160;</td>
          <td class="paramname"><em>mc</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Pop a page off the top of the cursor's stack. </p>

</div>
</div>
<a class="anchor" id="gac16074490d9e3173891176f9bad2cf1a"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static int mdb_cursor_push </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__internal.html#structMDB__cursor">MDB_cursor</a> *&#160;</td>
          <td class="paramname"><em>mc</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__internal.html#structMDB__page">MDB_page</a> *&#160;</td>
          <td class="paramname"><em>mp</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Push a page onto the top of the cursor's stack. </p>

</div>
</div>
<a class="anchor" id="gae8145233dab5a4b9ff4460252d4330e3"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static int mdb_cursor_del0 </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__internal.html#structMDB__cursor">MDB_cursor</a> *&#160;</td>
          <td class="paramname"><em>mc</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Complete a delete operation started by <a class="el" href="group__internal.html#gaec9d5e29f4cc470e383b6b9f46d9239d" title="Delete current key/data pair. ">mdb_cursor_del()</a>. </p>

</div>
</div>
<a class="anchor" id="gae8730b7b8a2996053c250f9389fbcef8"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static int mdb_cursor_sibling </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__internal.html#structMDB__cursor">MDB_cursor</a> *&#160;</td>
          <td class="paramname"><em>mc</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>move_right</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Find a sibling for a page. Replaces the page at the top of the cursor's stack with the specified sibling, if one exists. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">mc</td><td>The cursor for this operation. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">move_right</td><td>Non-zero if the right sibling is requested, otherwise the left sibling. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 on success, non-zero on failure. </dd></dl>

</div>
</div>
<a class="anchor" id="ga1820fcf411f3de7d5ed9e44442b66d93"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static int mdb_cursor_next </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__internal.html#structMDB__cursor">MDB_cursor</a> *&#160;</td>
          <td class="paramname"><em>mc</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>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Move the cursor to the next data item. </p>

</div>
</div>
<a class="anchor" id="ga0b6059c3275244b30d703e5dab9e17c2"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static int mdb_cursor_prev </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__internal.html#structMDB__cursor">MDB_cursor</a> *&#160;</td>
          <td class="paramname"><em>mc</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>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Move the cursor to the previous data item. </p>

</div>
</div>
<a class="anchor" id="ga39f6ca1bb7224eb1311ffb65207b9794"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static int mdb_cursor_set </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__internal.html#structMDB__cursor">MDB_cursor</a> *&#160;</td>
          <td class="paramname"><em>mc</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>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int *&#160;</td>
          <td class="paramname"><em>exactp</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Set the cursor on a specific data item. </p>

</div>
</div>
<a class="anchor" id="ga20150fa80f311ef191ba80e80432a4ac"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static int mdb_cursor_first </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__internal.html#structMDB__cursor">MDB_cursor</a> *&#160;</td>
          <td class="paramname"><em>mc</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>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Move the cursor to the first item in the database. </p>

</div>
</div>
<a class="anchor" id="ga6508b6561d58faa7c3c9e2f8ee760804"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static int mdb_cursor_last </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__internal.html#structMDB__cursor">MDB_cursor</a> *&#160;</td>
          <td class="paramname"><em>mc</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>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Move the cursor to the last item in the database. </p>

</div>
</div>
<a class="anchor" id="ga6f8a9cda751d2e94239d6b8bc0f86a14"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static void mdb_cursor_init </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__internal.html#structMDB__cursor">MDB_cursor</a> *&#160;</td>
          <td class="paramname"><em>mc</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>, </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__xcursor">MDB_xcursor</a> *&#160;</td>
          <td class="paramname"><em>mx</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Initialize a cursor for a given transaction and database. </p>

</div>
</div>
<a class="anchor" id="gac7492f6f13279a214496df14b5a5ec28"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static void mdb_xcursor_init0 </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__internal.html#structMDB__cursor">MDB_cursor</a> *&#160;</td>
          <td class="paramname"><em>mc</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Initial setup of a sorted-dups cursor. Sorted duplicates are implemented as a sub-database for the given key. The duplicate data items are actually keys of the sub-database. Operations on the duplicate data items are performed using a sub-cursor initialized when the sub-database is first accessed. This function does the preliminary setup of the sub-cursor, filling in the fields that depend only on the parent DB. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">mc</td><td>The main cursor whose sorted-dups cursor is to be initialized. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="ga897dee5db166ecfe74cb0b1155b6d3a7"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static void mdb_xcursor_init1 </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__internal.html#structMDB__cursor">MDB_cursor</a> *&#160;</td>
          <td class="paramname"><em>mc</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__internal.html#structMDB__node">MDB_node</a> *&#160;</td>
          <td class="paramname"><em>node</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Final setup of a sorted-dups cursor. Sets up the fields that depend on the data from the main cursor. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">mc</td><td>The main cursor whose sorted-dups cursor is to be initialized. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">node</td><td>The data containing the <a class="el" href="group__internal.html#structMDB__db">MDB_db</a> record for the sorted-dup database. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="gaf930e34b5089f0cc79c517b7da043e6a"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static int mdb_drop0 </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__internal.html#structMDB__cursor">MDB_cursor</a> *&#160;</td>
          <td class="paramname"><em>mc</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>subs</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Add all the DB's pages to the free list. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">mc</td><td>Cursor on the DB to free. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">subs</td><td>non-Zero to check for sub-DBs in this DB. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 on success, non-zero on failure. </dd></dl>

</div>
</div>
<a class="anchor" id="ga02418f180f24752f569f821d28801274"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static void mdb_default_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>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Set the default comparison functions for a database. Called immediately after a database is opened to set the defaults. The user can then override them with <a class="el" href="group__internal.html#ga68e47ffcf72eceec553c72b1784ee0fe" title="Set a custom key comparison function for a database. ">mdb_set_compare()</a> or <a class="el" href="group__internal.html#gacef4ec3dab0bbd9bc978b73c19c879ae" title="Set a custom data comparison function for a MDB_DUPSORT database. ">mdb_set_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__internal.html#gaec09fc4062fc4d99882f7f7256570bdb" 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__internal.html#gac08cad5b096925642ca359a6d6f0562a" title="Open a database in the environment. ">mdb_dbi_open()</a> </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<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>
<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="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="ga257f845c7a8f2b4b36d58cb749eee99e"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static <a class="el" href="group__internal.html#structMDB__page">MDB_page</a>* mdb_page_malloc </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">unsigned&#160;</td>
          <td class="paramname"><em>num</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Allocate memory for a page. Re-use old malloc'd pages first for singletons, otherwise just malloc. </p>

</div>
</div>
<a class="anchor" id="ga32acd9b3f7397b2f28c345aada5af109"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static void mdb_page_free </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__page">MDB_page</a> *&#160;</td>
          <td class="paramname"><em>mp</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Free a single page. Saves single pages to a list, for future reuse. (This is not used for multi-page overflow pages.) </p>

</div>
</div>
<a class="anchor" id="ga265572d91274cb2a622de75a371d3627"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static void mdb_dpage_free </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__page">MDB_page</a> *&#160;</td>
          <td class="paramname"><em>dp</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Free a dirty page </p>

</div>
</div>
<a class="anchor" id="ga6f77254f03f9758e360828620d3347d0"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static void mdb_dlist_free </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>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Return all dirty pages to dpage list </p>

</div>
</div>
<a class="anchor" id="ga7af44a6e5abb91c371070d9b0c817287"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static int mdb_pages_xkeep </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__internal.html#structMDB__cursor">MDB_cursor</a> *&#160;</td>
          <td class="paramname"><em>mc</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned&#160;</td>
          <td class="paramname"><em>pflags</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>all</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Set or clear P_KEEP in dirty, non-overflow, non-sub pages watched by txn. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">mc</td><td>A cursor handle for the current operation. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">pflags</td><td>Flags of the pages to update: P_DIRTY to set P_KEEP, P_DIRTY|P_KEEP to clear it. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">all</td><td>No shortcuts. Needed except after a full <a class="el" href="group__internal.html#ga92ab26eb6b1a40eede16ea7a2a05a078">mdb_page_flush()</a>. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 on success, non-zero on failure. </dd></dl>

</div>
</div>
<a class="anchor" id="ga92ab26eb6b1a40eede16ea7a2a05a078"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static int mdb_page_flush </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">int&#160;</td>
          <td class="paramname"><em>keep</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Flush (some) dirty pages to the map, after clearing their dirty flag. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">txn</td><td>the transaction that's being committed </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">keep</td><td>number of initial pages in dirty_list to keep dirty. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 on success, non-zero on failure. </dd></dl>

</div>
</div>
<a class="anchor" id="ga069b06dad34fb787dd6066242ca1219c"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static int mdb_page_spill </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__internal.html#structMDB__cursor">MDB_cursor</a> *&#160;</td>
          <td class="paramname"><em>m0</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>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Spill pages from the dirty list back to disk. This is intended to prevent running into <a class="el" href="group__errors.html#gacba5cdc8618093f59d0339e88e69570e">MDB_TXN_FULL</a> situations, but note that they may still occur in a few cases: 1) our estimate of the txn size could be too small. Currently this seems unlikely, except with a large number of <a class="el" href="group__mdb__put.html#ga67a8d26a8c8bc56f02f2e03fd07a74b0">MDB_MULTIPLE</a> items. 2) child txns may run out of space if their parents dirtied a lot of pages and never spilled them. TODO: we probably should do a preemptive spill during <a class="el" href="group__internal.html#gaec09fc4062fc4d99882f7f7256570bdb" title="Create a transaction for use with the environment. ">mdb_txn_begin()</a> of a child txn, if the parent's dirty_room is below a given threshold.</p>
<p>Otherwise, if not using nested txns, it is expected that apps will not run into <a class="el" href="group__errors.html#gacba5cdc8618093f59d0339e88e69570e">MDB_TXN_FULL</a> any more. The pages are flushed to disk the same way as for a txn commit, e.g. their P_DIRTY flag is cleared. If the txn never references them again, they can be left alone. If the txn only reads them, they can be used without any fuss. If the txn writes them again, they can be dirtied immediately without going thru all of the work of <a class="el" href="group__internal.html#gacffbede1a02377fe1cd2dd2594e80ad1">mdb_page_touch()</a>. Such references are handled by <a class="el" href="group__internal.html#gaf670ed8fe8f72a378e2c081b15898285">mdb_page_unspill()</a>.</p>
<p>Also note, we never spill DB root pages, nor pages of active cursors, because we'll need these back again soon anyway. And in nested txns, we can't spill a page in a child txn if it was already spilled in a parent txn. That would alter the parent txns' data even though the child hasn't committed yet, and we'd have no way to undo it if the child aborted.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">m0</td><td>cursor A cursor handle identifying the transaction and database for which we are checking space. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">key</td><td>For a put operation, the key being stored. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">data</td><td>For a put operation, the data being stored. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 on success, non-zero on failure. </dd></dl>

</div>
</div>
<a class="anchor" id="ga9ac437d8c0988e3968b5901c38ac5639"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static <a class="el" href="group__internal.html#gabbaef7c9c710f8652a62c32d748c040e">txnid_t</a> mdb_find_oldest </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>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Find oldest txnid still referenced. Expects txn-&gt;mt_txnid &gt; 0. </p>

</div>
</div>
<a class="anchor" id="ga6875ba61becc0753b9aafe6bd6583da1"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static void mdb_page_dirty </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__page">MDB_page</a> *&#160;</td>
          <td class="paramname"><em>mp</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Add a page to the txn's dirty list </p>

</div>
</div>
<a class="anchor" id="ga2cc9761d31dc4f5b07ab6ad236ba3086"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static void mdb_page_copy </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__internal.html#structMDB__page">MDB_page</a> *&#160;</td>
          <td class="paramname"><em>dst</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__internal.html#structMDB__page">MDB_page</a> *&#160;</td>
          <td class="paramname"><em>src</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>psize</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Copy the used portions of a non-overflow page. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">dst</td><td>page to copy into </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">src</td><td>page to copy from </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">psize</td><td>size of a page </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="gaf670ed8fe8f72a378e2c081b15898285"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static int mdb_page_unspill </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__page">MDB_page</a> *&#160;</td>
          <td class="paramname"><em>mp</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__internal.html#structMDB__page">MDB_page</a> **&#160;</td>
          <td class="paramname"><em>ret</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Pull a page off the txn's spill list, if present. If a page being referenced was spilled to disk in this txn, bring it back and make it dirty/writable again. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">txn</td><td>the transaction handle. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">mp</td><td>the page being referenced. It must not be dirty. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">ret</td><td>the writable page, if any. ret is unchanged if mp wasn't spilled. </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="ga151dafe0972cec0a29112df9bffbb1ef"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static int mdb_cursor_shadow </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__internal.html#structMDB__txn">MDB_txn</a> *&#160;</td>
          <td class="paramname"><em>src</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>dst</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Back up parent txn's cursors, then grab the originals for tracking </p>

</div>
</div>
<a class="anchor" id="gaecfd3955976bfaec88b3b9da2724fae1"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static void mdb_cursors_close </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">unsigned&#160;</td>
          <td class="paramname"><em>merge</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Close this write txn's cursors, give parent txn's cursors back to parent. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">txn</td><td>the transaction handle. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">merge</td><td>true to keep changes to parent cursors, false to revert. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 on success, non-zero on failure. </dd></dl>

</div>
</div>
<a class="anchor" id="ga1b1d6a2c079fc7b6e3a014936b303c7b"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static void mdb_txn_reset0 </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>act</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Common code for <a class="el" href="group__internal.html#ga02b06706f8a66249769503c4e88c56cd" title="Reset a read-only transaction. ">mdb_txn_reset()</a> and <a class="el" href="group__internal.html#ga73a5938ae4c3239ee11efa07eb22b882" title="Abandon all the operations of the transaction instead of saving them. ">mdb_txn_abort()</a>. May be called twice for readonly txns: First reset it, then abort. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">txn</td><td>the transaction handle to reset </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">act</td><td>why the transaction is being reset </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="gafecc7a86bc8dd8bf920ded205ac736ce"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static int mdb_reader_pid </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">enum Pidlock_op&#160;</td>
          <td class="paramname"><em>op</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">MDB_PID_T&#160;</td>
          <td class="paramname"><em>pid</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Set or check a pid lock. Set returns 0 on success. Check returns 0 if the process is certainly dead, nonzero if it may be alive (the lock exists or an error happened so we do not know).</p>
<p>On Windows Pidset is a no-op, we merely check for the existence of the process with the given pid. On POSIX we use a single byte lock on the lockfile, set at an offset equal to the pid. </p>

</div>
</div>
<a class="anchor" id="ga59ede8adc74766fbe497cf3d5f633056"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static int mdb_txn_renew0 </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>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Common code for <a class="el" href="group__internal.html#gaec09fc4062fc4d99882f7f7256570bdb" title="Create a transaction for use with the environment. ">mdb_txn_begin()</a> and <a class="el" href="group__internal.html#ga6c6f917959517ede1c504cf7c720ce6d" title="Renew a read-only transaction. ">mdb_txn_renew()</a>. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">txn</td><td>the transaction handle to initialize </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 on success, non-zero on failure. </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="gaec09fc4062fc4d99882f7f7256570bdb"></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="gab2820c2affaae62d7ac6dc3f0657f59a"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static void mdb_dbis_update </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">int&#160;</td>
          <td class="paramname"><em>keep</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Export or close DBI handles opened in this txn. </p>

</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="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="ga03e05820d0433f11ce38e511a9a3c629"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static int mdb_freelist_save </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>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Save the freelist as of this transaction to the freeDB. This changes the freelist. Keep trying until it stabilizes. </p>

</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="gad792b98efe300bb795820976a5a2cbfd"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static int mdb_env_init_meta </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__meta">MDB_meta</a> *&#160;</td>
          <td class="paramname"><em>meta</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Write the environment parameters of a freshly created DB environment. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">env</td><td>the environment handle </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">meta</td><td>address of where to store the meta information </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 on success, non-zero on failure. </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="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="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="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="gaefecf29f303ebda56bbd06446e11b64e"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static int mdb_env_open2 </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>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Further setup required for opening an MDB environment </p>

</div>
</div>
<a class="anchor" id="gae8bb5dcae6012a3ac16975822f98abc7"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static void mdb_env_reader_dest </td>
          <td>(</td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>ptr</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Release a reader thread's slot in the reader lock table. This function is called automatically when a thread exits. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">ptr</td><td>This points to the slot in the reader lock table. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="gae06bb1556681524d6218fdcd44506747"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static int mdb_env_share_locks </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>excl</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Downgrade the exclusive lock on the region back to shared </p>

</div>
</div>
<a class="anchor" id="ga15ecdabd8c0c55c9ffdae09e7412adf4"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static int mdb_env_excl_lock </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>excl</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Try to get exlusive lock, otherwise shared. Maintain *excl = -1: no/unknown lock, 0: shared, 1: exclusive. </p>

</div>
</div>
<a class="anchor" id="ga0cb04302ea7e9985a8f4be38093a37d4"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static int mdb_env_setup_locks </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">char *&#160;</td>
          <td class="paramname"><em>lpath</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>mode</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int *&#160;</td>
          <td class="paramname"><em>excl</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Open and/or initialize the lock region 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>The MDB environment. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">lpath</td><td>The pathname of the file used for the lock region. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">mode</td><td>The Unix permissions for the file, if we create it. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">excl</td><td>Resulting file lock type: -1 none, 0 shared, 1 exclusive </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">excl</td><td>In -1, out lock type: -1 none, 0 shared, 1 exclusive </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 on success, non-zero on failure. </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="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="ga02385c79b768370777d0466ece9e9e2a"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static int mdb_cmp_long </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>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Compare two items pointing at aligned size_t's </p>

</div>
</div>
<a class="anchor" id="ga8c8e3aac03984bb37d2b5adf7c4e6732"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static int mdb_cmp_int </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>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Compare two items pointing at aligned unsigned int's </p>

</div>
</div>
<a class="anchor" id="ga2d4077f468b6ac7bb316a24a29c5f8b3"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static int mdb_cmp_cint </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>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Compare two items pointing at unsigned ints of unknown alignment. Nodes and keys are guaranteed to be 2-byte aligned. </p>

</div>
</div>
<a class="anchor" id="ga6c7d0a6c4c5f89165354e6b449b0939a"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static int mdb_cmp_memn </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>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Compare two items lexically </p>

</div>
</div>
<a class="anchor" id="ga5466b70b4a8c1f35551cf4295ed9bfe1"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static int mdb_cmp_memnr </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>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Compare two items in reverse byte order </p>

</div>
</div>
<a class="anchor" id="gac4b7ee655d296cff5a2d7fd2c69c2cca"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static int mdb_page_search_lowest </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__internal.html#structMDB__cursor">MDB_cursor</a> *&#160;</td>
          <td class="paramname"><em>mc</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Search for the lowest key under the current branch page. This just bypasses a NUMKEYS check in the current page before calling <a class="el" href="group__internal.html#ga50669a51cfec605224cc5d1f999d0e47">mdb_page_search_root()</a>, because the callers are all in situations where the current page is known to be underfilled. </p>

</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="ga9a89df677df185c758470ee67111bd38"></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="ga380b05ef633d1c1e59a0ae9ae1675310"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static int mdb_cursor_touch </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__internal.html#structMDB__cursor">MDB_cursor</a> *&#160;</td>
          <td class="paramname"><em>mc</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Touch all the pages in the cursor stack. Set mc_top. Makes sure all the pages are writable, before attempting a write operation. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">mc</td><td>The cursor to operate on. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="gaf13a73e97adab038c58aed44066b782e"></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="gaec9d5e29f4cc470e383b6b9f46d9239d"></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="ga6f7ad479fa949270fe28659202c6aa0c"></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="ga64f8dec3653d3d4226c87b820265e7e5"></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="gafb422278c217a4d3ff0cccda47048006"></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="ga476c508a1e7a68e75bcef239189be5c7"></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="gabec1312ed0392d06b73e5a3c9629c673"></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="gae49a703a7ee01348b1155c6e3c3bd3e0"></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="ga55f9654bc51758e1d98ac644ed48fc7c"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static void mdb_cursor_copy </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="group__internal.html#structMDB__cursor">MDB_cursor</a> *&#160;</td>
          <td class="paramname"><em>csrc</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>cdst</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Copy the contents of a cursor. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">csrc</td><td>The cursor to copy from. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">cdst</td><td>The cursor to copy to. </td></tr>
  </table>
  </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="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="ga12b9706743653a31f81d05a2810e0009"></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="gac2a0381db71418e75fa581cc5cd2df3f"></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="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="gaf023352794481365e8a5941cf7d5b03f"></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="ga2925e245e16c36d7601b65b416c3697e"></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="ga9488ef46e55668afe44e463dc3af15a2"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static int mdb_stat0 </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__db">MDB_db</a> *&#160;</td>
          <td class="paramname"><em>db</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>arg</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Common code for <a class="el" href="group__internal.html#ga4682c89a4e6d43a814c3860ffab3a906" title="Retrieve statistics for a database. ">mdb_stat()</a> and <a class="el" href="group__internal.html#gadd30aa81cc4d10bd443104c0be19562a" title="Return statistics about the MDB environment. ">mdb_env_stat()</a>. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">env</td><td>the environment to operate in. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">db</td><td>the <a class="el" href="group__internal.html#structMDB__db">MDB_db</a> record containing the stats to return. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">arg</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 to receive the stats. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0, this function always succeeds. </dd></dl>

</div>
</div>
<a class="anchor" id="gadd30aa81cc4d10bd443104c0be19562a"></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="ga6689bbe90d15b1bbc3a944ef0d8e757d"></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="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="ga4682c89a4e6d43a814c3860ffab3a906"></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="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="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="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="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="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="ga3586dfb5b1ad377d8d192cfe1aa72bc7"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static int mdb_pid_insert </td>
          <td>(</td>
          <td class="paramtype">MDB_PID_T *&#160;</td>
          <td class="paramname"><em>ids</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">MDB_PID_T&#160;</td>
          <td class="paramname"><em>pid</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Insert pid into list if not already present. return -1 if already present. </p>

</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>
<h2 class="groupheader">Variable Documentation</h2>
<a class="anchor" id="ga400f94a8dbf4515d63ba1089294e174a"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">char* const mdb_errstr[]</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<b>Initial value:</b><div class="fragment"><div class="line">= {</div>
<div class="line">    <span class="stringliteral">&quot;MDB_KEYEXIST: Key/data pair already exists&quot;</span>,</div>
<div class="line">    <span class="stringliteral">&quot;MDB_NOTFOUND: No matching key/data pair found&quot;</span>,</div>
<div class="line">    <span class="stringliteral">&quot;MDB_PAGE_NOTFOUND: Requested page not found&quot;</span>,</div>
<div class="line">    <span class="stringliteral">&quot;MDB_CORRUPTED: Located page was wrong type&quot;</span>,</div>
<div class="line">    <span class="stringliteral">&quot;MDB_PANIC: Update of meta page failed&quot;</span>,</div>
<div class="line">    <span class="stringliteral">&quot;MDB_VERSION_MISMATCH: Database environment version mismatch&quot;</span>,</div>
<div class="line">    <span class="stringliteral">&quot;MDB_INVALID: File is not an MDB file&quot;</span>,</div>
<div class="line">    <span class="stringliteral">&quot;MDB_MAP_FULL: Environment mapsize limit reached&quot;</span>,</div>
<div class="line">    <span class="stringliteral">&quot;MDB_DBS_FULL: Environment maxdbs limit reached&quot;</span>,</div>
<div class="line">    <span class="stringliteral">&quot;MDB_READERS_FULL: Environment maxreaders limit reached&quot;</span>,</div>
<div class="line">    <span class="stringliteral">&quot;MDB_TLS_FULL: Thread-local storage keys full - too many environments open&quot;</span>,</div>
<div class="line">    <span class="stringliteral">&quot;MDB_TXN_FULL: Transaction has too many dirty pages - transaction too big&quot;</span>,</div>
<div class="line">    <span class="stringliteral">&quot;MDB_CURSOR_FULL: Internal error - cursor stack limit reached&quot;</span>,</div>
<div class="line">    <span class="stringliteral">&quot;MDB_PAGE_FULL: Internal error - page has no more space&quot;</span>,</div>
<div class="line">    <span class="stringliteral">&quot;MDB_MAP_RESIZED: Database contents grew beyond environment mapsize&quot;</span>,</div>
<div class="line">    <span class="stringliteral">&quot;MDB_INCOMPATIBLE: Operation and DB incompatible, or DB flags changed&quot;</span>,</div>
<div class="line">    <span class="stringliteral">&quot;MDB_BAD_RSLOT: Invalid reuse of reader locktable slot&quot;</span>,</div>
<div class="line">    <span class="stringliteral">&quot;MDB_BAD_TXN: Transaction cannot recover - it must be aborted&quot;</span>,</div>
<div class="line">    <span class="stringliteral">&quot;MDB_BAD_VALSIZE: Unsupported size of key/DB name/data, or wrong DUPFIXED size&quot;</span>,</div>
<div class="line">}</div>
</div><!-- fragment --><p>Table of descriptions for MDB <a class="el" href="group__errors.html">Return Codes</a> </p>

</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>