<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>iceberg-cpp: iceberg::PartitionStatisticsFile Struct Reference</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/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></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 id="projectrow">
  <td id="projectalign">
   <div id="projectname">iceberg-cpp
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.8 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>

<div id="nav-path" class="navpath">
  <ul>
<li class="navelem"><b>iceberg</b></li><li class="navelem"><a class="el" href="structiceberg_1_1PartitionStatisticsFile.html">PartitionStatisticsFile</a></li>  </ul>
</div>
</div><!-- top -->
<div class="header">
  <div class="summary">
<a href="#pub-attribs">Public Attributes</a> &#124;
<a href="#friends">Friends</a> &#124;
<a href="structiceberg_1_1PartitionStatisticsFile-members.html">List of all members</a>  </div>
  <div class="headertitle"><div class="title">iceberg::PartitionStatisticsFile Struct Reference</div></div>
</div><!--header-->
<div class="contents">

<p>Represents a partition statistics file.  
 <a href="structiceberg_1_1PartitionStatisticsFile.html#details">More...</a></p>

<p><code>#include &lt;<a class="el" href="statistics__file_8h_source.html">statistics_file.h</a>&gt;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-attribs" name="pub-attribs"></a>
Public Attributes</h2></td></tr>
<tr class="memitem:aae2a7f546dbbbfc5ab27b06f887de129" id="r_aae2a7f546dbbbfc5ab27b06f887de129"><td class="memItemLeft" align="right" valign="top">int64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structiceberg_1_1PartitionStatisticsFile.html#aae2a7f546dbbbfc5ab27b06f887de129">snapshot_id</a></td></tr>
<tr class="separator:aae2a7f546dbbbfc5ab27b06f887de129"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab2f5786ce6b9a7a4ecb1a7fec8cf6efc" id="r_ab2f5786ce6b9a7a4ecb1a7fec8cf6efc"><td class="memItemLeft" align="right" valign="top"><a id="ab2f5786ce6b9a7a4ecb1a7fec8cf6efc" name="ab2f5786ce6b9a7a4ecb1a7fec8cf6efc"></a>
std::string&#160;</td><td class="memItemRight" valign="bottom"><b>path</b></td></tr>
<tr class="memdesc:ab2f5786ce6b9a7a4ecb1a7fec8cf6efc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Fully qualified path to the file. <br /></td></tr>
<tr class="separator:ab2f5786ce6b9a7a4ecb1a7fec8cf6efc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aba9393e232f859d1931ec23feea9b65f" id="r_aba9393e232f859d1931ec23feea9b65f"><td class="memItemLeft" align="right" valign="top"><a id="aba9393e232f859d1931ec23feea9b65f" name="aba9393e232f859d1931ec23feea9b65f"></a>
int64_t&#160;</td><td class="memItemRight" valign="bottom"><b>file_size_in_bytes</b></td></tr>
<tr class="memdesc:aba9393e232f859d1931ec23feea9b65f"><td class="mdescLeft">&#160;</td><td class="mdescRight">The size of the partition statistics file in bytes. <br /></td></tr>
<tr class="separator:aba9393e232f859d1931ec23feea9b65f"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="friends" name="friends"></a>
Friends</h2></td></tr>
<tr class="memitem:aecbdcc088ef3f23462a8d8e997fe3089" id="r_aecbdcc088ef3f23462a8d8e997fe3089"><td class="memItemLeft" align="right" valign="top"><a id="aecbdcc088ef3f23462a8d8e997fe3089" name="aecbdcc088ef3f23462a8d8e997fe3089"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>operator==</b> (const <a class="el" href="structiceberg_1_1PartitionStatisticsFile.html">PartitionStatisticsFile</a> &amp;lhs, const <a class="el" href="structiceberg_1_1PartitionStatisticsFile.html">PartitionStatisticsFile</a> &amp;rhs)=default</td></tr>
<tr class="memdesc:aecbdcc088ef3f23462a8d8e997fe3089"><td class="mdescLeft">&#160;</td><td class="mdescRight">Compare two PartitionStatisticsFiles for equality. <br /></td></tr>
<tr class="separator:aecbdcc088ef3f23462a8d8e997fe3089"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Represents a partition statistics file. </p>
</div><h2 class="groupheader">Member Data Documentation</h2>
<a id="aae2a7f546dbbbfc5ab27b06f887de129" name="aae2a7f546dbbbfc5ab27b06f887de129"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aae2a7f546dbbbfc5ab27b06f887de129">&#9670;&#160;</a></span>snapshot_id</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int64_t iceberg::PartitionStatisticsFile::snapshot_id</td>
        </tr>
      </table>
</div><div class="memdoc">
<p><a class="el" href="structiceberg_1_1Snapshot.html" title="A snapshot of the data in a table at a point in time.">Snapshot</a> ID of the Iceberg table's snapshot the partition statistics file is associated with </p>

</div>
</div>
<hr/>The documentation for this struct was generated from the following file:<ul>
<li>iceberg/<a class="el" href="statistics__file_8h_source.html">statistics_file.h</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8
</small></address>
</body>
</html>
