blob: 24d405095b63cce767ad6ae7b92f735ca00af4c9 [file]
<!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/snapshot.h Source File</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>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(document).ready(function() { init_codefold(0); });
/* @license-end */
</script>
<!-- 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"><a class="el" href="dir_51d145386ec5f52aa06ebf5e46944abc.html">iceberg</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle"><div class="title">snapshot.h</div></div>
</div><!--header-->
<div class="contents">
<a href="snapshot_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span><span class="comment">/*</span></div>
<div class="line"><a id="l00002" name="l00002"></a><span class="lineno"> 2</span><span class="comment"> * Licensed to the Apache Software Foundation (ASF) under one</span></div>
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span><span class="comment"> * or more contributor license agreements. See the NOTICE file</span></div>
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="comment"> * distributed with this work for additional information</span></div>
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="comment"> * regarding copyright ownership. The ASF licenses this file</span></div>
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span><span class="comment"> * to you under the Apache License, Version 2.0 (the</span></div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="comment"> * &quot;License&quot;); you may not use this file except in compliance</span></div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span><span class="comment"> * with the License. You may obtain a copy of the License at</span></div>
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span><span class="comment"> *</span></div>
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span><span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div>
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span><span class="comment"> *</span></div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span><span class="comment"> * Unless required by applicable law or agreed to in writing,</span></div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span><span class="comment"> * software distributed under the License is distributed on an</span></div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span><span class="comment"> * &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span></div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span><span class="comment"> * KIND, either express or implied. See the License for the</span></div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span><span class="comment"> * specific language governing permissions and limitations</span></div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span><span class="comment"> * under the License.</span></div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span><span class="comment"> */</span></div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span> </div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span><span class="preprocessor">#pragma once</span></div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span> </div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span> </div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span><span class="preprocessor">#include &lt;memory&gt;</span></div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span><span class="preprocessor">#include &lt;optional&gt;</span></div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span><span class="preprocessor">#include &lt;span&gt;</span></div>
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"> 28</span><span class="preprocessor">#include &lt;string&gt;</span></div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span><span class="preprocessor">#include &lt;string_view&gt;</span></div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span><span class="preprocessor">#include &lt;unordered_map&gt;</span></div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span><span class="preprocessor">#include &lt;variant&gt;</span></div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span> </div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span><span class="preprocessor">#include &quot;<a class="code" href="iceberg__export_8h.html">iceberg/iceberg_export.h</a>&quot;</span></div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span><span class="preprocessor">#include &quot;<a class="code" href="manifest__list_8h.html">iceberg/manifest/manifest_list.h</a>&quot;</span></div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span><span class="preprocessor">#include &quot;<a class="code" href="result_8h.html">iceberg/result.h</a>&quot;</span></div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span><span class="preprocessor">#include &quot;<a class="code" href="type__fwd_8h.html">iceberg/type_fwd.h</a>&quot;</span></div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span><span class="preprocessor">#include &quot;<a class="code" href="lazy_8h.html">iceberg/util/lazy.h</a>&quot;</span></div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span><span class="preprocessor">#include &quot;<a class="code" href="timepoint_8h.html">iceberg/util/timepoint.h</a>&quot;</span></div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span> </div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span><span class="keyword">namespace </span><a class="code hl_namespace" href="namespaceiceberg.html">iceberg</a> {</div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span> </div>
<div class="foldopen" id="foldopen00043" data-start="{" data-end="};">
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"><a class="line" href="namespaceiceberg.html#a8671d0926630b93487784772a49991c9"> 43</a></span><span class="keyword">enum class</span> <a class="code hl_enumeration" href="namespaceiceberg.html#a8671d0926630b93487784772a49991c9">SnapshotRefType</a> {</div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span> <a class="code hl_enumvalue" href="namespaceiceberg.html#a8671d0926630b93487784772a49991c9a10a4bd395ede64152b6ef02ce999cab9">kBranch</a>,</div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span> <a class="code hl_enumvalue" href="namespaceiceberg.html#a8671d0926630b93487784772a49991c9a7b4a510071e5153ab98f54144688b0aa">kTag</a>,</div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span>};</div>
</div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span> </div>
<div class="foldopen" id="foldopen00053" data-start="{" data-end="}">
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"><a class="line" href="namespaceiceberg.html#a66c712314b7f24e819af7cb09429b4f5"> 53</a></span>ICEBERG_EXPORT <span class="keyword">constexpr</span> std::string_view <a class="code hl_function" href="namespaceiceberg.html#a67197636ef5578a5ddd401c59a449164">ToString</a>(<a class="code hl_enumeration" href="namespaceiceberg.html#a8671d0926630b93487784772a49991c9">SnapshotRefType</a> type) <span class="keyword">noexcept</span> {</div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span> <span class="keywordflow">switch</span> (type) {</div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span> <span class="keywordflow">case</span> <a class="code hl_enumvalue" href="namespaceiceberg.html#a8671d0926630b93487784772a49991c9a10a4bd395ede64152b6ef02ce999cab9">SnapshotRefType::kBranch</a>:</div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span> <span class="keywordflow">return</span> <span class="stringliteral">&quot;branch&quot;</span>;</div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span> <span class="keywordflow">case</span> <a class="code hl_enumvalue" href="namespaceiceberg.html#a8671d0926630b93487784772a49991c9a7b4a510071e5153ab98f54144688b0aa">SnapshotRefType::kTag</a>:</div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span> <span class="keywordflow">return</span> <span class="stringliteral">&quot;tag&quot;</span>;</div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span> }</div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span> std::unreachable();</div>
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span>}</div>
</div>
<div class="foldopen" id="foldopen00063" data-start="{" data-end="}">
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"><a class="line" href="namespaceiceberg.html#a5028419abfe2479746086ccf712ce7d7"> 63</a></span>ICEBERG_EXPORT <span class="keyword">constexpr</span> <a class="code hl_typedef" href="namespaceiceberg.html#a9d5594e371beb516b0120e07e69d3af6">Result&lt;SnapshotRefType&gt;</a> <a class="code hl_function" href="namespaceiceberg.html#a5028419abfe2479746086ccf712ce7d7">SnapshotRefTypeFromString</a>(</div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span> std::string_view str) <span class="keyword">noexcept</span> {</div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span> <span class="keywordflow">if</span> (str == <span class="stringliteral">&quot;branch&quot;</span>) <span class="keywordflow">return</span> <a class="code hl_enumvalue" href="namespaceiceberg.html#a8671d0926630b93487784772a49991c9a10a4bd395ede64152b6ef02ce999cab9">SnapshotRefType::kBranch</a>;</div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span> <span class="keywordflow">if</span> (str == <span class="stringliteral">&quot;tag&quot;</span>) <span class="keywordflow">return</span> <a class="code hl_enumvalue" href="namespaceiceberg.html#a8671d0926630b93487784772a49991c9a7b4a510071e5153ab98f54144688b0aa">SnapshotRefType::kTag</a>;</div>
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span> <span class="keywordflow">return</span> InvalidArgument(<span class="stringliteral">&quot;Invalid snapshot reference type: {}&quot;</span>, str);</div>
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span>}</div>
</div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span> </div>
<div class="foldopen" id="foldopen00071" data-start="{" data-end="};">
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"><a class="line" href="structiceberg_1_1SnapshotRef.html"> 71</a></span><span class="keyword">struct </span>ICEBERG_EXPORT <a class="code hl_struct" href="structiceberg_1_1SnapshotRef.html">SnapshotRef</a> {</div>
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span> <span class="keyword">static</span> <span class="keyword">constexpr</span> std::string_view kMainBranch = <span class="stringliteral">&quot;main&quot;</span>;</div>
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"> 73</span> </div>
<div class="foldopen" id="foldopen00074" data-start="{" data-end="};">
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"><a class="line" href="structiceberg_1_1SnapshotRef_1_1Branch.html"> 74</a></span> <span class="keyword">struct </span>ICEBERG_EXPORT <a class="code hl_struct" href="structiceberg_1_1SnapshotRef_1_1Branch.html">Branch</a> {</div>
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"><a class="line" href="structiceberg_1_1SnapshotRef_1_1Branch.html#a4e263cc1792d5e41e495fc1d0d22c48a"> 78</a></span> std::optional&lt;int32_t&gt; <a class="code hl_variable" href="structiceberg_1_1SnapshotRef_1_1Branch.html#a4e263cc1792d5e41e495fc1d0d22c48a">min_snapshots_to_keep</a>;</div>
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"><a class="line" href="structiceberg_1_1SnapshotRef_1_1Branch.html#a51b4eb07baf51b45ae89bc533092db3f"> 82</a></span> std::optional&lt;int64_t&gt; <a class="code hl_variable" href="structiceberg_1_1SnapshotRef_1_1Branch.html#a51b4eb07baf51b45ae89bc533092db3f">max_snapshot_age_ms</a>;</div>
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"><a class="line" href="structiceberg_1_1SnapshotRef_1_1Branch.html#a66bddbcaaf9655ed5c4528ecab20d57e"> 86</a></span> std::optional&lt;int64_t&gt; <a class="code hl_variable" href="structiceberg_1_1SnapshotRef_1_1Branch.html#a66bddbcaaf9655ed5c4528ecab20d57e">max_ref_age_ms</a>;</div>
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span> </div>
<div class="foldopen" id="foldopen00089" data-start="{" data-end="};">
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"><a class="line" href="structiceberg_1_1SnapshotRef_1_1Branch.html#a72566c422b25279bd143b8b39006e506"> 89</a></span> <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code hl_friend" href="structiceberg_1_1SnapshotRef_1_1Branch.html#a72566c422b25279bd143b8b39006e506">operator==</a>(<span class="keyword">const</span> <a class="code hl_struct" href="structiceberg_1_1SnapshotRef_1_1Branch.html">Branch</a>&amp; lhs, <span class="keyword">const</span> <a class="code hl_struct" href="structiceberg_1_1SnapshotRef_1_1Branch.html">Branch</a>&amp; rhs) {</div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span> <span class="keywordflow">return</span> lhs.Equals(rhs);</div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span> }</div>
</div>
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span> </div>
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span> <span class="keyword">private</span>:</div>
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span> <span class="keywordtype">bool</span> Equals(<span class="keyword">const</span> <a class="code hl_struct" href="structiceberg_1_1SnapshotRef_1_1Branch.html">Branch</a>&amp; other) <span class="keyword">const</span>;</div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span> };</div>
</div>
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span> </div>
<div class="foldopen" id="foldopen00098" data-start="{" data-end="};">
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"><a class="line" href="structiceberg_1_1SnapshotRef_1_1Tag.html"> 98</a></span> <span class="keyword">struct </span>ICEBERG_EXPORT <a class="code hl_struct" href="structiceberg_1_1SnapshotRef_1_1Tag.html">Tag</a> {</div>
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"><a class="line" href="structiceberg_1_1SnapshotRef_1_1Tag.html#a51a7a1608df43d8eff2cc8cd1600420e"> 102</a></span> std::optional&lt;int64_t&gt; <a class="code hl_variable" href="structiceberg_1_1SnapshotRef_1_1Tag.html#a51a7a1608df43d8eff2cc8cd1600420e">max_ref_age_ms</a>;</div>
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span> </div>
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"><a class="line" href="structiceberg_1_1SnapshotRef_1_1Tag.html#ac2b7639cd47e0904f7e8bd8ca4efe367"> 105</a></span> <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code hl_friend" href="structiceberg_1_1SnapshotRef_1_1Tag.html#ac2b7639cd47e0904f7e8bd8ca4efe367">operator==</a>(<span class="keyword">const</span> <a class="code hl_struct" href="structiceberg_1_1SnapshotRef_1_1Tag.html">Tag</a>&amp; lhs, <span class="keyword">const</span> <a class="code hl_struct" href="structiceberg_1_1SnapshotRef_1_1Tag.html">Tag</a>&amp; rhs) { <span class="keywordflow">return</span> lhs.Equals(rhs); }</div>
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"> 106</span> </div>
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"> 107</span> <span class="keyword">private</span>:</div>
<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"> 109</span> <span class="keywordtype">bool</span> Equals(<span class="keyword">const</span> <a class="code hl_struct" href="structiceberg_1_1SnapshotRef_1_1Tag.html">Tag</a>&amp; other) <span class="keyword">const</span>;</div>
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"> 110</span> };</div>
</div>
<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"> 111</span> </div>
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"><a class="line" href="structiceberg_1_1SnapshotRef.html#a63ac8ff0babbe68126fb52e54e7e1adb"> 113</a></span> int64_t <a class="code hl_variable" href="structiceberg_1_1SnapshotRef.html#a63ac8ff0babbe68126fb52e54e7e1adb">snapshot_id</a>;</div>
<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"><a class="line" href="structiceberg_1_1SnapshotRef.html#ae89f6fb03dacc07e6cde3c81a133add1"> 115</a></span> std::variant&lt;Branch, Tag&gt; <a class="code hl_variable" href="structiceberg_1_1SnapshotRef.html#ae89f6fb03dacc07e6cde3c81a133add1">retention</a>;</div>
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"> 116</span> </div>
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span> <a class="code hl_enumeration" href="namespaceiceberg.html#a8671d0926630b93487784772a49991c9">SnapshotRefType</a> type() const noexcept;</div>
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span> </div>
<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"> 119</span> <a class="code hl_namespace" href="namespacestd.html">std</a>::optional&lt;int64_t&gt; max_ref_age_ms() const noexcept;</div>
<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"> 120</span> </div>
<div class="line"><a id="l00129" name="l00129"></a><span class="lineno"><a class="line" href="structiceberg_1_1SnapshotRef.html#ac69a2cfca959fe4896ae3f989ba0a801"> 129</a></span> static <a class="code hl_typedef" href="namespaceiceberg.html#a9d5594e371beb516b0120e07e69d3af6">Result</a>&lt;<a class="code hl_namespace" href="namespacestd.html">std</a>::unique_ptr&lt;<a class="code hl_struct" href="structiceberg_1_1SnapshotRef.html">SnapshotRef</a>&gt;&gt; MakeBranch(</div>
<div class="line"><a id="l00130" name="l00130"></a><span class="lineno"> 130</span> int64_t snapshot_id, <a class="code hl_namespace" href="namespacestd.html">std</a>::optional&lt;int32_t&gt; min_snapshots_to_keep = <a class="code hl_namespace" href="namespacestd.html">std</a>::nullopt,</div>
<div class="line"><a id="l00131" name="l00131"></a><span class="lineno"> 131</span> <a class="code hl_namespace" href="namespacestd.html">std</a>::optional&lt;int64_t&gt; max_snapshot_age_ms = <a class="code hl_namespace" href="namespacestd.html">std</a>::nullopt,</div>
<div class="line"><a id="l00132" name="l00132"></a><span class="lineno"> 132</span> <a class="code hl_namespace" href="namespacestd.html">std</a>::optional&lt;int64_t&gt; max_ref_age_ms = <a class="code hl_namespace" href="namespacestd.html">std</a>::nullopt);</div>
<div class="line"><a id="l00133" name="l00133"></a><span class="lineno"> 133</span> </div>
<div class="line"><a id="l00140" name="l00140"></a><span class="lineno"><a class="line" href="structiceberg_1_1SnapshotRef.html#a5c165a98a2be60158ec421f023e62555"> 140</a></span> static <a class="code hl_typedef" href="namespaceiceberg.html#a9d5594e371beb516b0120e07e69d3af6">Result</a>&lt;<a class="code hl_namespace" href="namespacestd.html">std</a>::unique_ptr&lt;<a class="code hl_struct" href="structiceberg_1_1SnapshotRef.html">SnapshotRef</a>&gt;&gt; MakeTag(</div>
<div class="line"><a id="l00141" name="l00141"></a><span class="lineno"> 141</span> int64_t snapshot_id, <a class="code hl_namespace" href="namespacestd.html">std</a>::optional&lt;int64_t&gt; max_ref_age_ms = <a class="code hl_namespace" href="namespacestd.html">std</a>::nullopt);</div>
<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"> 142</span> </div>
<div class="line"><a id="l00148" name="l00148"></a><span class="lineno"><a class="line" href="structiceberg_1_1SnapshotRef.html#a873b9724bd77edbf12dbabdb98a37523"> 148</a></span> <a class="code hl_namespace" href="namespacestd.html">std</a>::unique_ptr&lt;<a class="code hl_struct" href="structiceberg_1_1SnapshotRef.html">SnapshotRef</a>&gt; Clone(</div>
<div class="line"><a id="l00149" name="l00149"></a><span class="lineno"> 149</span> <a class="code hl_namespace" href="namespacestd.html">std</a>::optional&lt;int64_t&gt; new_snapshot_id = <a class="code hl_namespace" href="namespacestd.html">std</a>::nullopt) const;</div>
<div class="line"><a id="l00150" name="l00150"></a><span class="lineno"> 150</span> </div>
<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"><a class="line" href="structiceberg_1_1SnapshotRef.html#a50cdaf229521f701109fd99d6f51fb32"> 152</a></span> Status Validate() const;</div>
<div class="line"><a id="l00153" name="l00153"></a><span class="lineno"> 153</span> </div>
<div class="foldopen" id="foldopen00155" data-start="{" data-end="};">
<div class="line"><a id="l00155" name="l00155"></a><span class="lineno"><a class="line" href="structiceberg_1_1SnapshotRef.html#a01bf700dbfb0e7307921d30795db8819"> 155</a></span> friend <span class="keywordtype">bool</span> operator==(const <a class="code hl_struct" href="structiceberg_1_1SnapshotRef.html">SnapshotRef</a>&amp; lhs, const <a class="code hl_struct" href="structiceberg_1_1SnapshotRef.html">SnapshotRef</a>&amp; rhs) {</div>
<div class="line"><a id="l00156" name="l00156"></a><span class="lineno"> 156</span> <span class="keywordflow">return</span> lhs.Equals(rhs);</div>
<div class="line"><a id="l00157" name="l00157"></a><span class="lineno"> 157</span> }</div>
</div>
<div class="line"><a id="l00158" name="l00158"></a><span class="lineno"> 158</span> </div>
<div class="line"><a id="l00159" name="l00159"></a><span class="lineno"> 159</span> <span class="keyword">private</span>:</div>
<div class="line"><a id="l00161" name="l00161"></a><span class="lineno"> 161</span> <span class="keywordtype">bool</span> Equals(<span class="keyword">const</span> <a class="code hl_struct" href="structiceberg_1_1SnapshotRef.html">SnapshotRef</a>&amp; other) <span class="keyword">const</span>;</div>
<div class="line"><a id="l00162" name="l00162"></a><span class="lineno"> 162</span>};</div>
</div>
<div class="line"><a id="l00163" name="l00163"></a><span class="lineno"> 163</span> </div>
<div class="foldopen" id="foldopen00165" data-start="{" data-end="};">
<div class="line"><a id="l00165" name="l00165"></a><span class="lineno"><a class="line" href="structiceberg_1_1SnapshotSummaryFields.html"> 165</a></span><span class="keyword">struct </span>ICEBERG_EXPORT <a class="code hl_struct" href="structiceberg_1_1SnapshotSummaryFields.html">SnapshotSummaryFields</a> {</div>
<div class="line"><a id="l00167" name="l00167"></a><span class="lineno"><a class="line" href="structiceberg_1_1SnapshotSummaryFields.html#ada7f5effa8afb4169e68ed2639bd4fde"> 167</a></span> <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keyword">const</span> std::string kOperation = <span class="stringliteral">&quot;operation&quot;</span>;</div>
<div class="line"><a id="l00169" name="l00169"></a><span class="lineno"><a class="line" href="structiceberg_1_1SnapshotSummaryFields.html#a2b56093fd8bb220fdb55834b1a23e61b"> 169</a></span> <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keyword">const</span> std::string kFirstRowId = <span class="stringliteral">&quot;first-row-id&quot;</span>;</div>
<div class="line"><a id="l00171" name="l00171"></a><span class="lineno"><a class="line" href="structiceberg_1_1SnapshotSummaryFields.html#a4e4fac2b70ad11701e6e8800c6508833"> 171</a></span> <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keyword">const</span> std::string kAddedRows = <span class="stringliteral">&quot;added-rows&quot;</span>;</div>
<div class="line"><a id="l00172" name="l00172"></a><span class="lineno"> 172</span> </div>
<div class="line"><a id="l00174" name="l00174"></a><span class="lineno"> 174</span> </div>
<div class="line"><a id="l00176" name="l00176"></a><span class="lineno"><a class="line" href="structiceberg_1_1SnapshotSummaryFields.html#a3f3613d6bdd73558894d946e23bd81e1"> 176</a></span> <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keyword">const</span> std::string kAddedDataFiles = <span class="stringliteral">&quot;added-data-files&quot;</span>;</div>
<div class="line"><a id="l00178" name="l00178"></a><span class="lineno"><a class="line" href="structiceberg_1_1SnapshotSummaryFields.html#aa801b5416617926fbfc8b09cbcb10cb0"> 178</a></span> <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keyword">const</span> std::string kDeletedDataFiles = <span class="stringliteral">&quot;deleted-data-files&quot;</span>;</div>
<div class="line"><a id="l00180" name="l00180"></a><span class="lineno"><a class="line" href="structiceberg_1_1SnapshotSummaryFields.html#ad314de2d955f77cd7d14ddccb6370134"> 180</a></span> <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keyword">const</span> std::string kTotalDataFiles = <span class="stringliteral">&quot;total-data-files&quot;</span>;</div>
<div class="line"><a id="l00183" name="l00183"></a><span class="lineno"><a class="line" href="structiceberg_1_1SnapshotSummaryFields.html#afde83a76d056e4f089d86157895beb80"> 183</a></span> <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keyword">const</span> std::string kAddedDeleteFiles = <span class="stringliteral">&quot;added-delete-files&quot;</span>;</div>
<div class="line"><a id="l00185" name="l00185"></a><span class="lineno"><a class="line" href="structiceberg_1_1SnapshotSummaryFields.html#a4c932bf17d7418013939fdd7b802f123"> 185</a></span> <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keyword">const</span> std::string kAddedEqDeleteFiles = <span class="stringliteral">&quot;added-equality-delete-files&quot;</span>;</div>
<div class="line"><a id="l00187" name="l00187"></a><span class="lineno"><a class="line" href="structiceberg_1_1SnapshotSummaryFields.html#a94fa76aad9462ef4f9e3e069c2a24645"> 187</a></span> <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keyword">const</span> std::string kRemovedEqDeleteFiles = <span class="stringliteral">&quot;removed-equality-delete-files&quot;</span>;</div>
<div class="line"><a id="l00189" name="l00189"></a><span class="lineno"><a class="line" href="structiceberg_1_1SnapshotSummaryFields.html#a9a996f8d2334fa3734da67fe02914038"> 189</a></span> <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keyword">const</span> std::string kAddedPosDeleteFiles = <span class="stringliteral">&quot;added-position-delete-files&quot;</span>;</div>
<div class="line"><a id="l00191" name="l00191"></a><span class="lineno"><a class="line" href="structiceberg_1_1SnapshotSummaryFields.html#afdde47b2cffe3f60e169b754bbfe439c"> 191</a></span> <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keyword">const</span> std::string kRemovedPosDeleteFiles =</div>
<div class="line"><a id="l00192" name="l00192"></a><span class="lineno"> 192</span> <span class="stringliteral">&quot;removed-position-delete-files&quot;</span>;</div>
<div class="line"><a id="l00194" name="l00194"></a><span class="lineno"><a class="line" href="structiceberg_1_1SnapshotSummaryFields.html#a5080e87bce473ae588c774f534e2001a"> 194</a></span> <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keyword">const</span> std::string kAddedDVs = <span class="stringliteral">&quot;added-dvs&quot;</span>;</div>
<div class="line"><a id="l00196" name="l00196"></a><span class="lineno"><a class="line" href="structiceberg_1_1SnapshotSummaryFields.html#a303e5e4d65a75816ee5c883e146bc4e5"> 196</a></span> <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keyword">const</span> std::string kRemovedDVs = <span class="stringliteral">&quot;removed-dvs&quot;</span>;</div>
<div class="line"><a id="l00199" name="l00199"></a><span class="lineno"><a class="line" href="structiceberg_1_1SnapshotSummaryFields.html#a9d24f8c6cbc618551b06cbb442fc3648"> 199</a></span> <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keyword">const</span> std::string kRemovedDeleteFiles = <span class="stringliteral">&quot;removed-delete-files&quot;</span>;</div>
<div class="line"><a id="l00202" name="l00202"></a><span class="lineno"><a class="line" href="structiceberg_1_1SnapshotSummaryFields.html#a65fbe108a5aa316dad4977e789e4e71f"> 202</a></span> <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keyword">const</span> std::string kTotalDeleteFiles = <span class="stringliteral">&quot;total-delete-files&quot;</span>;</div>
<div class="line"><a id="l00204" name="l00204"></a><span class="lineno"><a class="line" href="structiceberg_1_1SnapshotSummaryFields.html#ade62cef67f66999addb7dd3651c0a690"> 204</a></span> <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keyword">const</span> std::string kAddedRecords = <span class="stringliteral">&quot;added-records&quot;</span>;</div>
<div class="line"><a id="l00206" name="l00206"></a><span class="lineno"><a class="line" href="structiceberg_1_1SnapshotSummaryFields.html#ac33705014c833f33714170c7f14ccae6"> 206</a></span> <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keyword">const</span> std::string kDeletedRecords = <span class="stringliteral">&quot;deleted-records&quot;</span>;</div>
<div class="line"><a id="l00208" name="l00208"></a><span class="lineno"><a class="line" href="structiceberg_1_1SnapshotSummaryFields.html#a80def77f8cc4f4383fb384334cd8cd27"> 208</a></span> <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keyword">const</span> std::string kTotalRecords = <span class="stringliteral">&quot;total-records&quot;</span>;</div>
<div class="line"><a id="l00210" name="l00210"></a><span class="lineno"><a class="line" href="structiceberg_1_1SnapshotSummaryFields.html#a61fab448650bbf4705de2961589bf71f"> 210</a></span> <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keyword">const</span> std::string kAddedFileSize = <span class="stringliteral">&quot;added-files-size&quot;</span>;</div>
<div class="line"><a id="l00212" name="l00212"></a><span class="lineno"><a class="line" href="structiceberg_1_1SnapshotSummaryFields.html#accb9819bc2282a67974f8cb9c3c0082c"> 212</a></span> <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keyword">const</span> std::string kRemovedFileSize = <span class="stringliteral">&quot;removed-files-size&quot;</span>;</div>
<div class="line"><a id="l00214" name="l00214"></a><span class="lineno"><a class="line" href="structiceberg_1_1SnapshotSummaryFields.html#a5d0e0fdd138a86f767d89498e251cf00"> 214</a></span> <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keyword">const</span> std::string kTotalFileSize = <span class="stringliteral">&quot;total-files-size&quot;</span>;</div>
<div class="line"><a id="l00216" name="l00216"></a><span class="lineno"><a class="line" href="structiceberg_1_1SnapshotSummaryFields.html#a380bd771050985107b9eedf47ada2971"> 216</a></span> <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keyword">const</span> std::string kAddedPosDeletes = <span class="stringliteral">&quot;added-position-deletes&quot;</span>;</div>
<div class="line"><a id="l00218" name="l00218"></a><span class="lineno"><a class="line" href="structiceberg_1_1SnapshotSummaryFields.html#a7ea7416ee086d74d4ccb7259d17f55ab"> 218</a></span> <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keyword">const</span> std::string kRemovedPosDeletes = <span class="stringliteral">&quot;removed-position-deletes&quot;</span>;</div>
<div class="line"><a id="l00220" name="l00220"></a><span class="lineno"><a class="line" href="structiceberg_1_1SnapshotSummaryFields.html#a13125d9c90d79c55a71fc93b48d6f8a3"> 220</a></span> <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keyword">const</span> std::string kTotalPosDeletes = <span class="stringliteral">&quot;total-position-deletes&quot;</span>;</div>
<div class="line"><a id="l00222" name="l00222"></a><span class="lineno"><a class="line" href="structiceberg_1_1SnapshotSummaryFields.html#a98f4256862a48cea377ecc2da11d48d3"> 222</a></span> <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keyword">const</span> std::string kAddedEqDeletes = <span class="stringliteral">&quot;added-equality-deletes&quot;</span>;</div>
<div class="line"><a id="l00224" name="l00224"></a><span class="lineno"><a class="line" href="structiceberg_1_1SnapshotSummaryFields.html#adf57b3f74d94d4061040647dcb40de0a"> 224</a></span> <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keyword">const</span> std::string kRemovedEqDeletes = <span class="stringliteral">&quot;removed-equality-deletes&quot;</span>;</div>
<div class="line"><a id="l00226" name="l00226"></a><span class="lineno"><a class="line" href="structiceberg_1_1SnapshotSummaryFields.html#a12a98242c22498ab0a06257d817342c8"> 226</a></span> <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keyword">const</span> std::string kTotalEqDeletes = <span class="stringliteral">&quot;total-equality-deletes&quot;</span>;</div>
<div class="line"><a id="l00229" name="l00229"></a><span class="lineno"><a class="line" href="structiceberg_1_1SnapshotSummaryFields.html#aedd02877d175b0dfa88e9e5219ffd395"> 229</a></span> <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keyword">const</span> std::string kDeletedDuplicatedFiles = <span class="stringliteral">&quot;deleted-duplicate-files&quot;</span>;</div>
<div class="line"><a id="l00231" name="l00231"></a><span class="lineno"><a class="line" href="structiceberg_1_1SnapshotSummaryFields.html#a3ec7042a3a98ef42acf4585f3188445a"> 231</a></span> <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keyword">const</span> std::string kChangedPartitionCountProp = <span class="stringliteral">&quot;changed-partition-count&quot;</span>;</div>
<div class="line"><a id="l00233" name="l00233"></a><span class="lineno"><a class="line" href="structiceberg_1_1SnapshotSummaryFields.html#a5a1161c5b716f77c7de652fbc7953e81"> 233</a></span> <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keyword">const</span> std::string kManifestsCreated = <span class="stringliteral">&quot;manifests-created&quot;</span>;</div>
<div class="line"><a id="l00235" name="l00235"></a><span class="lineno"><a class="line" href="structiceberg_1_1SnapshotSummaryFields.html#ab525d5ecc8f2e18307a2f3bac04e4b7e"> 235</a></span> <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keyword">const</span> std::string kManifestsKept = <span class="stringliteral">&quot;manifests-kept&quot;</span>;</div>
<div class="line"><a id="l00237" name="l00237"></a><span class="lineno"><a class="line" href="structiceberg_1_1SnapshotSummaryFields.html#ac64b1239d07fa9f2973980b67e0bd0c2"> 237</a></span> <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keyword">const</span> std::string kManifestsReplaced = <span class="stringliteral">&quot;manifests-replaced&quot;</span>;</div>
<div class="line"><a id="l00239" name="l00239"></a><span class="lineno"><a class="line" href="structiceberg_1_1SnapshotSummaryFields.html#a1887f72168261587466ae196542f483d"> 239</a></span> <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keyword">const</span> std::string kEntriesProcessed = <span class="stringliteral">&quot;entries-processed&quot;</span>;</div>
<div class="line"><a id="l00241" name="l00241"></a><span class="lineno"><a class="line" href="structiceberg_1_1SnapshotSummaryFields.html#af3e791ce37cdfa4db991281e1c517c48"> 241</a></span> <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keyword">const</span> std::string kChangedPartitionPrefix = <span class="stringliteral">&quot;partitions.&quot;</span>;</div>
<div class="line"><a id="l00243" name="l00243"></a><span class="lineno"><a class="line" href="structiceberg_1_1SnapshotSummaryFields.html#ad878f008f1103bfe646a9a794f607bd3"> 243</a></span> <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keyword">const</span> std::string kPartitionSummaryProp = <span class="stringliteral">&quot;partition-summaries-included&quot;</span>;</div>
<div class="line"><a id="l00244" name="l00244"></a><span class="lineno"> 244</span> </div>
<div class="line"><a id="l00246" name="l00246"></a><span class="lineno"> 246</span> </div>
<div class="line"><a id="l00248" name="l00248"></a><span class="lineno"><a class="line" href="structiceberg_1_1SnapshotSummaryFields.html#afc7f6deb2bb4a1bf4b502dccd25966e0"> 248</a></span> <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keyword">const</span> std::string kWAPId = <span class="stringliteral">&quot;wap.id&quot;</span>;</div>
<div class="line"><a id="l00250" name="l00250"></a><span class="lineno"><a class="line" href="structiceberg_1_1SnapshotSummaryFields.html#af9a33f3042070032e8c3e1c8547f51a0"> 250</a></span> <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keyword">const</span> std::string kPublishedWAPId = <span class="stringliteral">&quot;published-wap-id&quot;</span>;</div>
<div class="line"><a id="l00252" name="l00252"></a><span class="lineno"><a class="line" href="structiceberg_1_1SnapshotSummaryFields.html#a39d6322a77f82167dba5cc97c6c44bc1"> 252</a></span> <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keyword">const</span> std::string kSourceSnapshotId = <span class="stringliteral">&quot;source-snapshot-id&quot;</span>;</div>
<div class="line"><a id="l00254" name="l00254"></a><span class="lineno"><a class="line" href="structiceberg_1_1SnapshotSummaryFields.html#a33984769c91862036640e65730d608f4"> 254</a></span> <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keyword">const</span> std::string kEngineName = <span class="stringliteral">&quot;engine-name&quot;</span>;</div>
<div class="line"><a id="l00256" name="l00256"></a><span class="lineno"><a class="line" href="structiceberg_1_1SnapshotSummaryFields.html#a7d43f0413e29fcd04c72b2b268505035"> 256</a></span> <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keyword">const</span> std::string kEngineVersion = <span class="stringliteral">&quot;engine-version&quot;</span>;</div>
<div class="line"><a id="l00258" name="l00258"></a><span class="lineno"><a class="line" href="structiceberg_1_1SnapshotSummaryFields.html#a9199e806e299693c6c3b60b6c218ed2c"> 258</a></span> <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keyword">const</span> std::string kReplacePartitions = <span class="stringliteral">&quot;replace-partitions&quot;</span>;</div>
<div class="line"><a id="l00259" name="l00259"></a><span class="lineno"> 259</span>};</div>
</div>
<div class="line"><a id="l00260" name="l00260"></a><span class="lineno"> 260</span> </div>
<div class="foldopen" id="foldopen00265" data-start="{" data-end="};">
<div class="line"><a id="l00265" name="l00265"></a><span class="lineno"><a class="line" href="classiceberg_1_1SnapshotSummaryBuilder.html"> 265</a></span><span class="keyword">class </span>ICEBERG_EXPORT <a class="code hl_class" href="classiceberg_1_1SnapshotSummaryBuilder.html">SnapshotSummaryBuilder</a> {</div>
<div class="line"><a id="l00266" name="l00266"></a><span class="lineno"> 266</span> <span class="keyword">private</span>:</div>
<div class="line"><a id="l00268" name="l00268"></a><span class="lineno"> 268</span> <span class="keyword">class </span>UpdateMetrics {</div>
<div class="line"><a id="l00269" name="l00269"></a><span class="lineno"> 269</span> <span class="keyword">public</span>:</div>
<div class="line"><a id="l00270" name="l00270"></a><span class="lineno"> 270</span> <span class="keywordtype">void</span> Clear();</div>
<div class="line"><a id="l00271" name="l00271"></a><span class="lineno"> 271</span> <span class="keywordtype">void</span> AddTo(std::unordered_map&lt;std::string, std::string&gt;&amp; builder) <span class="keyword">const</span>;</div>
<div class="line"><a id="l00272" name="l00272"></a><span class="lineno"> 272</span> <span class="keywordtype">void</span> AddedFile(<span class="keyword">const</span> <a class="code hl_struct" href="structiceberg_1_1DataFile.html">DataFile</a>&amp; file);</div>
<div class="line"><a id="l00273" name="l00273"></a><span class="lineno"> 273</span> <span class="keywordtype">void</span> RemovedFile(<span class="keyword">const</span> <a class="code hl_struct" href="structiceberg_1_1DataFile.html">DataFile</a>&amp; file);</div>
<div class="line"><a id="l00274" name="l00274"></a><span class="lineno"> 274</span> <span class="keywordtype">void</span> AddedManifest(<span class="keyword">const</span> <a class="code hl_struct" href="structiceberg_1_1ManifestFile.html">ManifestFile</a>&amp; manifest);</div>
<div class="line"><a id="l00275" name="l00275"></a><span class="lineno"> 275</span> <span class="keywordtype">void</span> Merge(<span class="keyword">const</span> UpdateMetrics&amp; other);</div>
<div class="line"><a id="l00276" name="l00276"></a><span class="lineno"> 276</span> </div>
<div class="line"><a id="l00277" name="l00277"></a><span class="lineno"> 277</span> <span class="keyword">private</span>:</div>
<div class="line"><a id="l00278" name="l00278"></a><span class="lineno"> 278</span> int64_t added_size_{0};</div>
<div class="line"><a id="l00279" name="l00279"></a><span class="lineno"> 279</span> int64_t removed_size_{0};</div>
<div class="line"><a id="l00280" name="l00280"></a><span class="lineno"> 280</span> int32_t added_files_{0};</div>
<div class="line"><a id="l00281" name="l00281"></a><span class="lineno"> 281</span> int32_t removed_files_{0};</div>
<div class="line"><a id="l00282" name="l00282"></a><span class="lineno"> 282</span> int32_t added_eq_delete_files_{0};</div>
<div class="line"><a id="l00283" name="l00283"></a><span class="lineno"> 283</span> int32_t removed_eq_delete_files_{0};</div>
<div class="line"><a id="l00284" name="l00284"></a><span class="lineno"> 284</span> int32_t added_pos_delete_files_{0};</div>
<div class="line"><a id="l00285" name="l00285"></a><span class="lineno"> 285</span> int32_t removed_pos_delete_files_{0};</div>
<div class="line"><a id="l00286" name="l00286"></a><span class="lineno"> 286</span> int32_t added_dvs_{0};</div>
<div class="line"><a id="l00287" name="l00287"></a><span class="lineno"> 287</span> int32_t removed_dvs_{0};</div>
<div class="line"><a id="l00288" name="l00288"></a><span class="lineno"> 288</span> int32_t added_delete_files_{0};</div>
<div class="line"><a id="l00289" name="l00289"></a><span class="lineno"> 289</span> int32_t removed_delete_files_{0};</div>
<div class="line"><a id="l00290" name="l00290"></a><span class="lineno"> 290</span> int64_t added_records_{0};</div>
<div class="line"><a id="l00291" name="l00291"></a><span class="lineno"> 291</span> int64_t deleted_records_{0};</div>
<div class="line"><a id="l00292" name="l00292"></a><span class="lineno"> 292</span> int64_t added_pos_deletes_{0};</div>
<div class="line"><a id="l00293" name="l00293"></a><span class="lineno"> 293</span> int64_t removed_pos_deletes_{0};</div>
<div class="line"><a id="l00294" name="l00294"></a><span class="lineno"> 294</span> int64_t added_eq_deletes_{0};</div>
<div class="line"><a id="l00295" name="l00295"></a><span class="lineno"> 295</span> int64_t removed_eq_deletes_{0};</div>
<div class="line"><a id="l00296" name="l00296"></a><span class="lineno"> 296</span> <span class="keywordtype">bool</span> trust_size_and_delete_counts_{<span class="keyword">true</span>};</div>
<div class="line"><a id="l00297" name="l00297"></a><span class="lineno"> 297</span> };</div>
<div class="line"><a id="l00298" name="l00298"></a><span class="lineno"> 298</span> </div>
<div class="line"><a id="l00299" name="l00299"></a><span class="lineno"> 299</span> <span class="keyword">public</span>:</div>
<div class="line"><a id="l00300" name="l00300"></a><span class="lineno"> 300</span> <a class="code hl_class" href="classiceberg_1_1SnapshotSummaryBuilder.html">SnapshotSummaryBuilder</a>() = <span class="keywordflow">default</span>;</div>
<div class="line"><a id="l00301" name="l00301"></a><span class="lineno"> 301</span> </div>
<div class="line"><a id="l00303" name="l00303"></a><span class="lineno"><a class="line" href="classiceberg_1_1SnapshotSummaryBuilder.html#a07746c22fbb76e97dba0abf08ae6e56a"> 303</a></span> <span class="keywordtype">void</span> <a class="code hl_function" href="classiceberg_1_1SnapshotSummaryBuilder.html#a07746c22fbb76e97dba0abf08ae6e56a">Clear</a>();</div>
<div class="line"><a id="l00304" name="l00304"></a><span class="lineno"> 304</span> </div>
<div class="line"><a id="l00314" name="l00314"></a><span class="lineno"><a class="line" href="classiceberg_1_1SnapshotSummaryBuilder.html#a9970b49e1f727ed18943ea1d1eb6339b"> 314</a></span> <span class="keywordtype">void</span> <a class="code hl_function" href="classiceberg_1_1SnapshotSummaryBuilder.html#a9970b49e1f727ed18943ea1d1eb6339b">SetPartitionSummaryLimit</a>(int32_t max);</div>
<div class="line"><a id="l00315" name="l00315"></a><span class="lineno"> 315</span> </div>
<div class="line"><a id="l00319" name="l00319"></a><span class="lineno"><a class="line" href="classiceberg_1_1SnapshotSummaryBuilder.html#a1c9ced4a939478c331660d8e36eb6c96"> 319</a></span> <span class="keywordtype">void</span> <a class="code hl_function" href="classiceberg_1_1SnapshotSummaryBuilder.html#a1c9ced4a939478c331660d8e36eb6c96">IncrementDuplicateDeletes</a>(int32_t increment = 1);</div>
<div class="line"><a id="l00320" name="l00320"></a><span class="lineno"> 320</span> </div>
<div class="line"><a id="l00326" name="l00326"></a><span class="lineno"><a class="line" href="classiceberg_1_1SnapshotSummaryBuilder.html#a5b143effb1da9b3a86471d565fee3d9a"> 326</a></span> Status <a class="code hl_function" href="classiceberg_1_1SnapshotSummaryBuilder.html#a5b143effb1da9b3a86471d565fee3d9a">AddedFile</a>(<span class="keyword">const</span> <a class="code hl_class" href="classiceberg_1_1PartitionSpec.html">PartitionSpec</a>&amp; spec, <span class="keyword">const</span> <a class="code hl_struct" href="structiceberg_1_1DataFile.html">DataFile</a>&amp; file);</div>
<div class="line"><a id="l00327" name="l00327"></a><span class="lineno"> 327</span> </div>
<div class="line"><a id="l00333" name="l00333"></a><span class="lineno"><a class="line" href="classiceberg_1_1SnapshotSummaryBuilder.html#a21eb0bd3439a3a5365eeb90eec958843"> 333</a></span> Status <a class="code hl_function" href="classiceberg_1_1SnapshotSummaryBuilder.html#a21eb0bd3439a3a5365eeb90eec958843">DeletedFile</a>(<span class="keyword">const</span> <a class="code hl_class" href="classiceberg_1_1PartitionSpec.html">PartitionSpec</a>&amp; spec, <span class="keyword">const</span> <a class="code hl_struct" href="structiceberg_1_1DataFile.html">DataFile</a>&amp; file);</div>
<div class="line"><a id="l00334" name="l00334"></a><span class="lineno"> 334</span> </div>
<div class="line"><a id="l00338" name="l00338"></a><span class="lineno"><a class="line" href="classiceberg_1_1SnapshotSummaryBuilder.html#a3e55f4d560771c5263995c8d8db1ce59"> 338</a></span> <span class="keywordtype">void</span> <a class="code hl_function" href="classiceberg_1_1SnapshotSummaryBuilder.html#a3e55f4d560771c5263995c8d8db1ce59">AddedManifest</a>(<span class="keyword">const</span> <a class="code hl_struct" href="structiceberg_1_1ManifestFile.html">ManifestFile</a>&amp; manifest);</div>
<div class="line"><a id="l00339" name="l00339"></a><span class="lineno"> 339</span> </div>
<div class="line"><a id="l00344" name="l00344"></a><span class="lineno"><a class="line" href="classiceberg_1_1SnapshotSummaryBuilder.html#ae91354da44db1184e0eedccecf5b3845"> 344</a></span> <span class="keywordtype">void</span> <a class="code hl_function" href="classiceberg_1_1SnapshotSummaryBuilder.html#ae91354da44db1184e0eedccecf5b3845">Set</a>(<span class="keyword">const</span> std::string&amp; property, <span class="keyword">const</span> std::string&amp; value);</div>
<div class="line"><a id="l00345" name="l00345"></a><span class="lineno"> 345</span> </div>
<div class="line"><a id="l00349" name="l00349"></a><span class="lineno"><a class="line" href="classiceberg_1_1SnapshotSummaryBuilder.html#a70d4d20ae405dc0ff8e6119332f26d80"> 349</a></span> <span class="keywordtype">void</span> <a class="code hl_function" href="classiceberg_1_1SnapshotSummaryBuilder.html#a70d4d20ae405dc0ff8e6119332f26d80">Merge</a>(<span class="keyword">const</span> <a class="code hl_class" href="classiceberg_1_1SnapshotSummaryBuilder.html">SnapshotSummaryBuilder</a>&amp; other);</div>
<div class="line"><a id="l00350" name="l00350"></a><span class="lineno"> 350</span> </div>
<div class="line"><a id="l00354" name="l00354"></a><span class="lineno"><a class="line" href="classiceberg_1_1SnapshotSummaryBuilder.html#a882193f24962a5f7fe76b9c2d2230600"> 354</a></span> std::unordered_map&lt;std::string, std::string&gt; <a class="code hl_function" href="classiceberg_1_1SnapshotSummaryBuilder.html#a882193f24962a5f7fe76b9c2d2230600">Build</a>() <span class="keyword">const</span>;</div>
<div class="line"><a id="l00355" name="l00355"></a><span class="lineno"> 355</span> </div>
<div class="line"><a id="l00356" name="l00356"></a><span class="lineno"> 356</span> <span class="keyword">private</span>:</div>
<div class="line"><a id="l00357" name="l00357"></a><span class="lineno"> 357</span> Status UpdatePartitions(<span class="keyword">const</span> <a class="code hl_class" href="classiceberg_1_1PartitionSpec.html">PartitionSpec</a>&amp; spec, <span class="keyword">const</span> <a class="code hl_struct" href="structiceberg_1_1DataFile.html">DataFile</a>&amp; file,</div>
<div class="line"><a id="l00358" name="l00358"></a><span class="lineno"> 358</span> <span class="keywordtype">bool</span> is_addition);</div>
<div class="line"><a id="l00359" name="l00359"></a><span class="lineno"> 359</span> std::string PartitionSummary(<span class="keyword">const</span> UpdateMetrics&amp; metrics) <span class="keyword">const</span>;</div>
<div class="line"><a id="l00360" name="l00360"></a><span class="lineno"> 360</span> </div>
<div class="line"><a id="l00361" name="l00361"></a><span class="lineno"> 361</span> std::unordered_map&lt;std::string, std::string&gt; properties_;</div>
<div class="line"><a id="l00362" name="l00362"></a><span class="lineno"> 362</span> std::unordered_map&lt;std::string, UpdateMetrics&gt; partition_metrics_;</div>
<div class="line"><a id="l00363" name="l00363"></a><span class="lineno"> 363</span> UpdateMetrics metrics_;</div>
<div class="line"><a id="l00364" name="l00364"></a><span class="lineno"> 364</span> int32_t max_changed_partitions_for_summaries_{0};</div>
<div class="line"><a id="l00365" name="l00365"></a><span class="lineno"> 365</span> int64_t deleted_duplicate_files_{0};</div>
<div class="line"><a id="l00366" name="l00366"></a><span class="lineno"> 366</span> <span class="keywordtype">bool</span> trust_partition_metrics_{<span class="keyword">true</span>};</div>
<div class="line"><a id="l00367" name="l00367"></a><span class="lineno"> 367</span>};</div>
</div>
<div class="line"><a id="l00368" name="l00368"></a><span class="lineno"> 368</span> </div>
<div class="foldopen" id="foldopen00374" data-start="{" data-end="};">
<div class="line"><a id="l00374" name="l00374"></a><span class="lineno"><a class="line" href="structiceberg_1_1DataOperation.html"> 374</a></span><span class="keyword">struct </span>ICEBERG_EXPORT <a class="code hl_struct" href="structiceberg_1_1DataOperation.html">DataOperation</a> {</div>
<div class="line"><a id="l00376" name="l00376"></a><span class="lineno"><a class="line" href="structiceberg_1_1DataOperation.html#a98c420e62fe063cc7b3011717e854ecf"> 376</a></span> <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keyword">const</span> std::string kAppend = <span class="stringliteral">&quot;append&quot;</span>;</div>
<div class="line"><a id="l00379" name="l00379"></a><span class="lineno"><a class="line" href="structiceberg_1_1DataOperation.html#a3dab031174d6722419961d46fbbd572a"> 379</a></span> <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keyword">const</span> std::string kReplace = <span class="stringliteral">&quot;replace&quot;</span>;</div>
<div class="line"><a id="l00382" name="l00382"></a><span class="lineno"><a class="line" href="structiceberg_1_1DataOperation.html#a8a93dd2be0906a5303a41145fa7498bf"> 382</a></span> <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keyword">const</span> std::string kOverwrite = <span class="stringliteral">&quot;overwrite&quot;</span>;</div>
<div class="line"><a id="l00385" name="l00385"></a><span class="lineno"><a class="line" href="structiceberg_1_1DataOperation.html#a4c3e08ef4b4a8308ec8845244050b126"> 385</a></span> <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keyword">const</span> std::string kDelete = <span class="stringliteral">&quot;delete&quot;</span>;</div>
<div class="line"><a id="l00386" name="l00386"></a><span class="lineno"> 386</span>};</div>
</div>
<div class="line"><a id="l00387" name="l00387"></a><span class="lineno"> 387</span> </div>
<div class="foldopen" id="foldopen00394" data-start="{" data-end="};">
<div class="line"><a id="l00394" name="l00394"></a><span class="lineno"><a class="line" href="structiceberg_1_1Snapshot.html"> 394</a></span><span class="keyword">struct </span>ICEBERG_EXPORT <a class="code hl_struct" href="structiceberg_1_1Snapshot.html">Snapshot</a> {</div>
<div class="line"><a id="l00396" name="l00396"></a><span class="lineno"><a class="line" href="structiceberg_1_1Snapshot.html#a128c409cc977968fbb9d9e893ba7d0c6"> 396</a></span> int64_t <a class="code hl_variable" href="structiceberg_1_1Snapshot.html#a128c409cc977968fbb9d9e893ba7d0c6">snapshot_id</a>;</div>
<div class="line"><a id="l00398" name="l00398"></a><span class="lineno"><a class="line" href="structiceberg_1_1Snapshot.html#aef3a444c939ab4f76e0b9a28f96c6b7a"> 398</a></span> std::optional&lt;int64_t&gt; <a class="code hl_variable" href="structiceberg_1_1Snapshot.html#aef3a444c939ab4f76e0b9a28f96c6b7a">parent_snapshot_id</a>;</div>
<div class="line"><a id="l00400" name="l00400"></a><span class="lineno"><a class="line" href="structiceberg_1_1Snapshot.html#a6f9b97d42b48be0d05dd4befd2602256"> 400</a></span> int64_t <a class="code hl_variable" href="structiceberg_1_1Snapshot.html#a6f9b97d42b48be0d05dd4befd2602256">sequence_number</a>;</div>
<div class="line"><a id="l00403" name="l00403"></a><span class="lineno"><a class="line" href="structiceberg_1_1Snapshot.html#ac401c19cb4161ce5a39ab9ba16e458ac"> 403</a></span> <a class="code hl_typedef" href="namespaceiceberg.html#a26b5236cc1bac2db397a235e5159efbc">TimePointMs</a> <a class="code hl_variable" href="structiceberg_1_1Snapshot.html#ac401c19cb4161ce5a39ab9ba16e458ac">timestamp_ms</a>;</div>
<div class="line"><a id="l00406" name="l00406"></a><span class="lineno"><a class="line" href="structiceberg_1_1Snapshot.html#afb198e3e0b1f335fade82e462a600e95"> 406</a></span> std::string <a class="code hl_variable" href="structiceberg_1_1Snapshot.html#afb198e3e0b1f335fade82e462a600e95">manifest_list</a>;</div>
<div class="line"><a id="l00408" name="l00408"></a><span class="lineno"><a class="line" href="structiceberg_1_1Snapshot.html#afb3b362767783fd344a459451796b2e8"> 408</a></span> std::unordered_map&lt;std::string, std::string&gt; <a class="code hl_variable" href="structiceberg_1_1Snapshot.html#afb3b362767783fd344a459451796b2e8">summary</a>;</div>
<div class="line"><a id="l00410" name="l00410"></a><span class="lineno"><a class="line" href="structiceberg_1_1Snapshot.html#a70e026926993c72c71ae9bc75298d5e1"> 410</a></span> std::optional&lt;int32_t&gt; <a class="code hl_variable" href="structiceberg_1_1Snapshot.html#a70e026926993c72c71ae9bc75298d5e1">schema_id</a>;</div>
<div class="line"><a id="l00412" name="l00412"></a><span class="lineno"><a class="line" href="structiceberg_1_1Snapshot.html#a40fb1e1c592129bb99f1e4b3b0ed441a"> 412</a></span> std::optional&lt;int64_t&gt; <a class="code hl_variable" href="structiceberg_1_1Snapshot.html#a40fb1e1c592129bb99f1e4b3b0ed441a">first_row_id</a>;</div>
<div class="line"><a id="l00414" name="l00414"></a><span class="lineno"><a class="line" href="structiceberg_1_1Snapshot.html#ad08a89f9a7a469b29457631d4d278abe"> 414</a></span> std::optional&lt;int64_t&gt; <a class="code hl_variable" href="structiceberg_1_1Snapshot.html#ad08a89f9a7a469b29457631d4d278abe">added_rows</a>;</div>
<div class="line"><a id="l00415" name="l00415"></a><span class="lineno"> 415</span> </div>
<div class="line"><a id="l00417" name="l00417"></a><span class="lineno"><a class="line" href="structiceberg_1_1Snapshot.html#a8a4bb50445bfb260413122e338c040ea"> 417</a></span> <span class="keyword">static</span> <a class="code hl_typedef" href="namespaceiceberg.html#a9d5594e371beb516b0120e07e69d3af6">Result&lt;std::unique_ptr&lt;Snapshot&gt;</a>&gt; <a class="code hl_function" href="structiceberg_1_1Snapshot.html#a8a4bb50445bfb260413122e338c040ea">Make</a>(</div>
<div class="line"><a id="l00418" name="l00418"></a><span class="lineno"> 418</span> int64_t sequence_number, int64_t snapshot_id,</div>
<div class="line"><a id="l00419" name="l00419"></a><span class="lineno"> 419</span> std::optional&lt;int64_t&gt; parent_snapshot_id, <a class="code hl_typedef" href="namespaceiceberg.html#a26b5236cc1bac2db397a235e5159efbc">TimePointMs</a> timestamp_ms,</div>
<div class="line"><a id="l00420" name="l00420"></a><span class="lineno"> 420</span> std::string operation, std::unordered_map&lt;std::string, std::string&gt; summary,</div>
<div class="line"><a id="l00421" name="l00421"></a><span class="lineno"> 421</span> std::optional&lt;int32_t&gt; schema_id, std::string manifest_list,</div>
<div class="line"><a id="l00422" name="l00422"></a><span class="lineno"> 422</span> std::optional&lt;int64_t&gt; first_row_id = std::nullopt,</div>
<div class="line"><a id="l00423" name="l00423"></a><span class="lineno"> 423</span> std::optional&lt;int64_t&gt; added_rows = std::nullopt);</div>
<div class="line"><a id="l00424" name="l00424"></a><span class="lineno"> 424</span> </div>
<div class="line"><a id="l00430" name="l00430"></a><span class="lineno"><a class="line" href="structiceberg_1_1Snapshot.html#aee0614438928f4f25b802846c3719cc8"> 430</a></span> std::optional&lt;std::string_view&gt; <a class="code hl_function" href="structiceberg_1_1Snapshot.html#aee0614438928f4f25b802846c3719cc8">Operation</a>() <span class="keyword">const</span>;</div>
<div class="line"><a id="l00431" name="l00431"></a><span class="lineno"> 431</span> </div>
<div class="line"><a id="l00441" name="l00441"></a><span class="lineno"><a class="line" href="structiceberg_1_1Snapshot.html#af2eba27095e7a55b95affdab9d8f11a1"> 441</a></span> <a class="code hl_typedef" href="namespaceiceberg.html#a9d5594e371beb516b0120e07e69d3af6">Result&lt;std::optional&lt;int64_t&gt;</a>&gt; <a class="code hl_function" href="structiceberg_1_1Snapshot.html#af2eba27095e7a55b95affdab9d8f11a1">FirstRowId</a>() <span class="keyword">const</span>;</div>
<div class="line"><a id="l00442" name="l00442"></a><span class="lineno"> 442</span> </div>
<div class="line"><a id="l00453" name="l00453"></a><span class="lineno"><a class="line" href="structiceberg_1_1Snapshot.html#abe3b761b04f61610bda41e16f4d0cead"> 453</a></span> <a class="code hl_typedef" href="namespaceiceberg.html#a9d5594e371beb516b0120e07e69d3af6">Result&lt;std::optional&lt;int64_t&gt;</a>&gt; <a class="code hl_function" href="structiceberg_1_1Snapshot.html#abe3b761b04f61610bda41e16f4d0cead">AddedRows</a>() <span class="keyword">const</span>;</div>
<div class="line"><a id="l00454" name="l00454"></a><span class="lineno"> 454</span> </div>
<div class="foldopen" id="foldopen00456" data-start="{" data-end="};">
<div class="line"><a id="l00456" name="l00456"></a><span class="lineno"><a class="line" href="structiceberg_1_1Snapshot.html#a110ad1a8614e25b2b749bfb411b7b0f9"> 456</a></span> <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code hl_friend" href="structiceberg_1_1Snapshot.html#a110ad1a8614e25b2b749bfb411b7b0f9">operator==</a>(<span class="keyword">const</span> <a class="code hl_struct" href="structiceberg_1_1Snapshot.html">Snapshot</a>&amp; lhs, <span class="keyword">const</span> <a class="code hl_struct" href="structiceberg_1_1Snapshot.html">Snapshot</a>&amp; rhs) {</div>
<div class="line"><a id="l00457" name="l00457"></a><span class="lineno"> 457</span> <span class="keywordflow">return</span> lhs.Equals(rhs);</div>
<div class="line"><a id="l00458" name="l00458"></a><span class="lineno"> 458</span> }</div>
</div>
<div class="line"><a id="l00459" name="l00459"></a><span class="lineno"> 459</span> </div>
<div class="line"><a id="l00460" name="l00460"></a><span class="lineno"> 460</span> <span class="keyword">private</span>:</div>
<div class="line"><a id="l00462" name="l00462"></a><span class="lineno"> 462</span> <span class="keywordtype">bool</span> Equals(<span class="keyword">const</span> <a class="code hl_struct" href="structiceberg_1_1Snapshot.html">Snapshot</a>&amp; other) <span class="keyword">const</span>;</div>
<div class="line"><a id="l00463" name="l00463"></a><span class="lineno"> 463</span>};</div>
</div>
<div class="line"><a id="l00464" name="l00464"></a><span class="lineno"> 464</span> </div>
<div class="foldopen" id="foldopen00468" data-start="{" data-end="};">
<div class="line"><a id="l00468" name="l00468"></a><span class="lineno"><a class="line" href="classiceberg_1_1SnapshotCache.html"> 468</a></span><span class="keyword">class </span>ICEBERG_EXPORT <a class="code hl_class" href="classiceberg_1_1SnapshotCache.html">SnapshotCache</a> {</div>
<div class="line"><a id="l00469" name="l00469"></a><span class="lineno"> 469</span> <span class="keyword">public</span>:</div>
<div class="line"><a id="l00470" name="l00470"></a><span class="lineno"> 470</span> <span class="keyword">explicit</span> <a class="code hl_class" href="classiceberg_1_1SnapshotCache.html">SnapshotCache</a>(<span class="keyword">const</span> <a class="code hl_struct" href="structiceberg_1_1Snapshot.html">Snapshot</a>* snapshot) : snapshot_(snapshot) {}</div>
<div class="line"><a id="l00471" name="l00471"></a><span class="lineno"> 471</span> </div>
<div class="line"><a id="l00473" name="l00473"></a><span class="lineno"><a class="line" href="classiceberg_1_1SnapshotCache.html#a673648c4ae8593852e7d7bf762cb9df3"> 473</a></span> <span class="keyword">const</span> <a class="code hl_struct" href="structiceberg_1_1Snapshot.html">Snapshot</a>&amp; <a class="code hl_function" href="classiceberg_1_1SnapshotCache.html#a673648c4ae8593852e7d7bf762cb9df3">snapshot</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> *snapshot_; }</div>
<div class="line"><a id="l00474" name="l00474"></a><span class="lineno"> 474</span> </div>
<div class="line"><a id="l00480" name="l00480"></a><span class="lineno"><a class="line" href="classiceberg_1_1SnapshotCache.html#a831934b6a12ce637f7aecd80b0c2fa8e"> 480</a></span> <a class="code hl_typedef" href="namespaceiceberg.html#a9d5594e371beb516b0120e07e69d3af6">Result&lt;std::span&lt;ManifestFile&gt;</a>&gt; <a class="code hl_function" href="classiceberg_1_1SnapshotCache.html#a831934b6a12ce637f7aecd80b0c2fa8e">Manifests</a>(std::shared_ptr&lt;FileIO&gt; file_io) <span class="keyword">const</span>;</div>
<div class="line"><a id="l00481" name="l00481"></a><span class="lineno"> 481</span> </div>
<div class="line"><a id="l00486" name="l00486"></a><span class="lineno"><a class="line" href="classiceberg_1_1SnapshotCache.html#ae4cae94c907194ca293dc7dd0f554e95"> 486</a></span> <a class="code hl_typedef" href="namespaceiceberg.html#a9d5594e371beb516b0120e07e69d3af6">Result&lt;std::span&lt;ManifestFile&gt;</a>&gt; <a class="code hl_function" href="classiceberg_1_1SnapshotCache.html#ae4cae94c907194ca293dc7dd0f554e95">DataManifests</a>(std::shared_ptr&lt;FileIO&gt; file_io) <span class="keyword">const</span>;</div>
<div class="line"><a id="l00487" name="l00487"></a><span class="lineno"> 487</span> </div>
<div class="line"><a id="l00492" name="l00492"></a><span class="lineno"><a class="line" href="classiceberg_1_1SnapshotCache.html#aac4d585d74577958db24c559e421a450"> 492</a></span> <a class="code hl_typedef" href="namespaceiceberg.html#a9d5594e371beb516b0120e07e69d3af6">Result&lt;std::span&lt;ManifestFile&gt;</a>&gt; <a class="code hl_function" href="classiceberg_1_1SnapshotCache.html#aac4d585d74577958db24c559e421a450">DeleteManifests</a>(std::shared_ptr&lt;FileIO&gt; file_io) <span class="keyword">const</span>;</div>
<div class="line"><a id="l00493" name="l00493"></a><span class="lineno"> 493</span> </div>
<div class="line"><a id="l00494" name="l00494"></a><span class="lineno"> 494</span> <span class="keyword">private</span>:</div>
<div class="line"><a id="l00499" name="l00499"></a><span class="lineno"> 499</span> <span class="keyword">using </span>ManifestsCache = std::pair&lt;std::vector&lt;ManifestFile&gt;, <span class="keywordtype">size_t</span>&gt;;</div>
<div class="line"><a id="l00500" name="l00500"></a><span class="lineno"> 500</span> </div>
<div class="line"><a id="l00505" name="l00505"></a><span class="lineno"> 505</span> <span class="keyword">static</span> <a class="code hl_typedef" href="namespaceiceberg.html#a9d5594e371beb516b0120e07e69d3af6">Result&lt;ManifestsCache&gt;</a> InitManifestsCache(<span class="keyword">const</span> <a class="code hl_struct" href="structiceberg_1_1Snapshot.html">Snapshot</a>* snapshot,</div>
<div class="line"><a id="l00506" name="l00506"></a><span class="lineno"> 506</span> std::shared_ptr&lt;FileIO&gt; file_io);</div>
<div class="line"><a id="l00507" name="l00507"></a><span class="lineno"> 507</span> </div>
<div class="line"><a id="l00509" name="l00509"></a><span class="lineno"> 509</span> <span class="keyword">const</span> <a class="code hl_struct" href="structiceberg_1_1Snapshot.html">Snapshot</a>* snapshot_;</div>
<div class="line"><a id="l00510" name="l00510"></a><span class="lineno"> 510</span> </div>
<div class="line"><a id="l00512" name="l00512"></a><span class="lineno"> 512</span> <a class="code hl_class" href="classiceberg_1_1Lazy.html">Lazy&lt;InitManifestsCache&gt;</a> manifests_cache_;</div>
<div class="line"><a id="l00513" name="l00513"></a><span class="lineno"> 513</span>};</div>
</div>
<div class="line"><a id="l00514" name="l00514"></a><span class="lineno"> 514</span> </div>
<div class="line"><a id="l00515" name="l00515"></a><span class="lineno"> 515</span>} <span class="comment">// namespace iceberg</span></div>
<div class="ttc" id="aclassiceberg_1_1Lazy_html"><div class="ttname"><a href="classiceberg_1_1Lazy.html">iceberg::Lazy</a></div><div class="ttdef"><b>Definition</b> lazy.h:36</div></div>
<div class="ttc" id="aclassiceberg_1_1PartitionSpec_html"><div class="ttname"><a href="classiceberg_1_1PartitionSpec.html">iceberg::PartitionSpec</a></div><div class="ttdoc">A partition spec for a Table.</div><div class="ttdef"><b>Definition</b> partition_spec.h:47</div></div>
<div class="ttc" id="aclassiceberg_1_1SnapshotCache_html"><div class="ttname"><a href="classiceberg_1_1SnapshotCache.html">iceberg::SnapshotCache</a></div><div class="ttdoc">A snapshot with cached manifest loading capabilities.</div><div class="ttdef"><b>Definition</b> snapshot.h:468</div></div>
<div class="ttc" id="aclassiceberg_1_1SnapshotCache_html_a673648c4ae8593852e7d7bf762cb9df3"><div class="ttname"><a href="classiceberg_1_1SnapshotCache.html#a673648c4ae8593852e7d7bf762cb9df3">iceberg::SnapshotCache::snapshot</a></div><div class="ttdeci">const Snapshot &amp; snapshot() const</div><div class="ttdoc">Get the underlying Snapshot reference.</div><div class="ttdef"><b>Definition</b> snapshot.h:473</div></div>
<div class="ttc" id="aclassiceberg_1_1SnapshotCache_html_a831934b6a12ce637f7aecd80b0c2fa8e"><div class="ttname"><a href="classiceberg_1_1SnapshotCache.html#a831934b6a12ce637f7aecd80b0c2fa8e">iceberg::SnapshotCache::Manifests</a></div><div class="ttdeci">Result&lt; std::span&lt; ManifestFile &gt; &gt; Manifests(std::shared_ptr&lt; FileIO &gt; file_io) const</div><div class="ttdoc">Returns all ManifestFile instances for either data or delete manifests in this snapshot.</div></div>
<div class="ttc" id="aclassiceberg_1_1SnapshotCache_html_aac4d585d74577958db24c559e421a450"><div class="ttname"><a href="classiceberg_1_1SnapshotCache.html#aac4d585d74577958db24c559e421a450">iceberg::SnapshotCache::DeleteManifests</a></div><div class="ttdeci">Result&lt; std::span&lt; ManifestFile &gt; &gt; DeleteManifests(std::shared_ptr&lt; FileIO &gt; file_io) const</div><div class="ttdoc">Returns a ManifestFile for each delete manifest in this snapshot.</div></div>
<div class="ttc" id="aclassiceberg_1_1SnapshotCache_html_ae4cae94c907194ca293dc7dd0f554e95"><div class="ttname"><a href="classiceberg_1_1SnapshotCache.html#ae4cae94c907194ca293dc7dd0f554e95">iceberg::SnapshotCache::DataManifests</a></div><div class="ttdeci">Result&lt; std::span&lt; ManifestFile &gt; &gt; DataManifests(std::shared_ptr&lt; FileIO &gt; file_io) const</div><div class="ttdoc">Returns a ManifestFile for each data manifest in this snapshot.</div></div>
<div class="ttc" id="aclassiceberg_1_1SnapshotSummaryBuilder_html"><div class="ttname"><a href="classiceberg_1_1SnapshotSummaryBuilder.html">iceberg::SnapshotSummaryBuilder</a></div><div class="ttdoc">Helper class for building snapshot summaries.</div><div class="ttdef"><b>Definition</b> snapshot.h:265</div></div>
<div class="ttc" id="aclassiceberg_1_1SnapshotSummaryBuilder_html_a07746c22fbb76e97dba0abf08ae6e56a"><div class="ttname"><a href="classiceberg_1_1SnapshotSummaryBuilder.html#a07746c22fbb76e97dba0abf08ae6e56a">iceberg::SnapshotSummaryBuilder::Clear</a></div><div class="ttdeci">void Clear()</div><div class="ttdoc">Clear all tracked metrics and properties.</div></div>
<div class="ttc" id="aclassiceberg_1_1SnapshotSummaryBuilder_html_a1c9ced4a939478c331660d8e36eb6c96"><div class="ttname"><a href="classiceberg_1_1SnapshotSummaryBuilder.html#a1c9ced4a939478c331660d8e36eb6c96">iceberg::SnapshotSummaryBuilder::IncrementDuplicateDeletes</a></div><div class="ttdeci">void IncrementDuplicateDeletes(int32_t increment=1)</div><div class="ttdoc">Increment the count of duplicate files deleted by a specific amount.</div></div>
<div class="ttc" id="aclassiceberg_1_1SnapshotSummaryBuilder_html_a21eb0bd3439a3a5365eeb90eec958843"><div class="ttname"><a href="classiceberg_1_1SnapshotSummaryBuilder.html#a21eb0bd3439a3a5365eeb90eec958843">iceberg::SnapshotSummaryBuilder::DeletedFile</a></div><div class="ttdeci">Status DeletedFile(const PartitionSpec &amp;spec, const DataFile &amp;file)</div><div class="ttdoc">Track a data file being deleted from the snapshot.</div></div>
<div class="ttc" id="aclassiceberg_1_1SnapshotSummaryBuilder_html_a3e55f4d560771c5263995c8d8db1ce59"><div class="ttname"><a href="classiceberg_1_1SnapshotSummaryBuilder.html#a3e55f4d560771c5263995c8d8db1ce59">iceberg::SnapshotSummaryBuilder::AddedManifest</a></div><div class="ttdeci">void AddedManifest(const ManifestFile &amp;manifest)</div><div class="ttdoc">Track a manifest being added.</div></div>
<div class="ttc" id="aclassiceberg_1_1SnapshotSummaryBuilder_html_a5b143effb1da9b3a86471d565fee3d9a"><div class="ttname"><a href="classiceberg_1_1SnapshotSummaryBuilder.html#a5b143effb1da9b3a86471d565fee3d9a">iceberg::SnapshotSummaryBuilder::AddedFile</a></div><div class="ttdeci">Status AddedFile(const PartitionSpec &amp;spec, const DataFile &amp;file)</div><div class="ttdoc">Track a data file being added to the snapshot.</div></div>
<div class="ttc" id="aclassiceberg_1_1SnapshotSummaryBuilder_html_a70d4d20ae405dc0ff8e6119332f26d80"><div class="ttname"><a href="classiceberg_1_1SnapshotSummaryBuilder.html#a70d4d20ae405dc0ff8e6119332f26d80">iceberg::SnapshotSummaryBuilder::Merge</a></div><div class="ttdeci">void Merge(const SnapshotSummaryBuilder &amp;other)</div><div class="ttdoc">Merge another builder's metrics into this one.</div></div>
<div class="ttc" id="aclassiceberg_1_1SnapshotSummaryBuilder_html_a882193f24962a5f7fe76b9c2d2230600"><div class="ttname"><a href="classiceberg_1_1SnapshotSummaryBuilder.html#a882193f24962a5f7fe76b9c2d2230600">iceberg::SnapshotSummaryBuilder::Build</a></div><div class="ttdeci">std::unordered_map&lt; std::string, std::string &gt; Build() const</div><div class="ttdoc">Build the final summary map.</div></div>
<div class="ttc" id="aclassiceberg_1_1SnapshotSummaryBuilder_html_a9970b49e1f727ed18943ea1d1eb6339b"><div class="ttname"><a href="classiceberg_1_1SnapshotSummaryBuilder.html#a9970b49e1f727ed18943ea1d1eb6339b">iceberg::SnapshotSummaryBuilder::SetPartitionSummaryLimit</a></div><div class="ttdeci">void SetPartitionSummaryLimit(int32_t max)</div><div class="ttdoc">Set the maximum number of changed partitions before partition summaries will be excluded.</div></div>
<div class="ttc" id="aclassiceberg_1_1SnapshotSummaryBuilder_html_ae91354da44db1184e0eedccecf5b3845"><div class="ttname"><a href="classiceberg_1_1SnapshotSummaryBuilder.html#ae91354da44db1184e0eedccecf5b3845">iceberg::SnapshotSummaryBuilder::Set</a></div><div class="ttdeci">void Set(const std::string &amp;property, const std::string &amp;value)</div><div class="ttdoc">Set a custom summary property.</div></div>
<div class="ttc" id="aiceberg__export_8h_html"><div class="ttname"><a href="iceberg__export_8h.html">iceberg_export.h</a></div><div class="ttdoc">Define symbol visibility macros for core Iceberg APIs.</div></div>
<div class="ttc" id="alazy_8h_html"><div class="ttname"><a href="lazy_8h.html">lazy.h</a></div></div>
<div class="ttc" id="amanifest__list_8h_html"><div class="ttname"><a href="manifest__list_8h.html">manifest_list.h</a></div></div>
<div class="ttc" id="anamespaceiceberg_html"><div class="ttname"><a href="namespaceiceberg.html">iceberg</a></div><div class="ttdoc">Core Apache Iceberg C++ APIs.</div><div class="ttdef"><b>Definition</b> arrow_io_util.h:33</div></div>
<div class="ttc" id="anamespaceiceberg_html_a26b5236cc1bac2db397a235e5159efbc"><div class="ttname"><a href="namespaceiceberg.html#a26b5236cc1bac2db397a235e5159efbc">iceberg::TimePointMs</a></div><div class="ttdeci">std::chrono::time_point&lt; std::chrono::system_clock, std::chrono::milliseconds &gt; TimePointMs</div><div class="ttdoc">A time point in milliseconds.</div><div class="ttdef"><b>Definition</b> timepoint.h:33</div></div>
<div class="ttc" id="anamespaceiceberg_html_a5028419abfe2479746086ccf712ce7d7"><div class="ttname"><a href="namespaceiceberg.html#a5028419abfe2479746086ccf712ce7d7">iceberg::SnapshotRefTypeFromString</a></div><div class="ttdeci">ICEBERG_EXPORT constexpr Result&lt; SnapshotRefType &gt; SnapshotRefTypeFromString(std::string_view str) noexcept</div><div class="ttdoc">Get the relative snapshot reference type from name.</div><div class="ttdef"><b>Definition</b> snapshot.h:63</div></div>
<div class="ttc" id="anamespaceiceberg_html_a67197636ef5578a5ddd401c59a449164"><div class="ttname"><a href="namespaceiceberg.html#a67197636ef5578a5ddd401c59a449164">iceberg::ToString</a></div><div class="ttdeci">ICEBERG_EXPORT std::string_view ToString(Expression::Operation op)</div><div class="ttdoc">Returns a string representation of an expression operation.</div></div>
<div class="ttc" id="anamespaceiceberg_html_a8671d0926630b93487784772a49991c9"><div class="ttname"><a href="namespaceiceberg.html#a8671d0926630b93487784772a49991c9">iceberg::SnapshotRefType</a></div><div class="ttdeci">SnapshotRefType</div><div class="ttdoc">The type of snapshot reference.</div><div class="ttdef"><b>Definition</b> snapshot.h:43</div></div>
<div class="ttc" id="anamespaceiceberg_html_a8671d0926630b93487784772a49991c9a10a4bd395ede64152b6ef02ce999cab9"><div class="ttname"><a href="namespaceiceberg.html#a8671d0926630b93487784772a49991c9a10a4bd395ede64152b6ef02ce999cab9">iceberg::SnapshotRefType::kBranch</a></div><div class="ttdeci">@ kBranch</div></div>
<div class="ttc" id="anamespaceiceberg_html_a8671d0926630b93487784772a49991c9a7b4a510071e5153ab98f54144688b0aa"><div class="ttname"><a href="namespaceiceberg.html#a8671d0926630b93487784772a49991c9a7b4a510071e5153ab98f54144688b0aa">iceberg::SnapshotRefType::kTag</a></div><div class="ttdeci">@ kTag</div><div class="ttdoc">Tags are labels for individual snapshots.</div></div>
<div class="ttc" id="anamespaceiceberg_html_a9d5594e371beb516b0120e07e69d3af6"><div class="ttname"><a href="namespaceiceberg.html#a9d5594e371beb516b0120e07e69d3af6">iceberg::Result</a></div><div class="ttdeci">std::expected&lt; T, E &gt; Result</div><div class="ttdoc">Result alias.</div><div class="ttdef"><b>Definition</b> result.h:88</div></div>
<div class="ttc" id="anamespacestd_html"><div class="ttname"><a href="namespacestd.html">std</a></div><div class="ttdoc">STL namespace.</div></div>
<div class="ttc" id="aresult_8h_html"><div class="ttname"><a href="result_8h.html">result.h</a></div><div class="ttdoc">Define Result, Status, and error helpers.</div></div>
<div class="ttc" id="astructiceberg_1_1DataFile_html"><div class="ttname"><a href="structiceberg_1_1DataFile.html">iceberg::DataFile</a></div><div class="ttdoc">DataFile carries data file path, partition tuple, metrics, ...</div><div class="ttdef"><b>Definition</b> manifest_entry.h:62</div></div>
<div class="ttc" id="astructiceberg_1_1DataOperation_html"><div class="ttname"><a href="structiceberg_1_1DataOperation.html">iceberg::DataOperation</a></div><div class="ttdoc">Data operation that produce snapshots.</div><div class="ttdef"><b>Definition</b> snapshot.h:374</div></div>
<div class="ttc" id="astructiceberg_1_1ManifestFile_html"><div class="ttname"><a href="structiceberg_1_1ManifestFile.html">iceberg::ManifestFile</a></div><div class="ttdoc">Entry in a manifest list.</div><div class="ttdef"><b>Definition</b> manifest_list.h:85</div></div>
<div class="ttc" id="astructiceberg_1_1SnapshotRef_1_1Branch_html"><div class="ttname"><a href="structiceberg_1_1SnapshotRef_1_1Branch.html">iceberg::SnapshotRef::Branch</a></div><div class="ttdef"><b>Definition</b> snapshot.h:74</div></div>
<div class="ttc" id="astructiceberg_1_1SnapshotRef_1_1Branch_html_a4e263cc1792d5e41e495fc1d0d22c48a"><div class="ttname"><a href="structiceberg_1_1SnapshotRef_1_1Branch.html#a4e263cc1792d5e41e495fc1d0d22c48a">iceberg::SnapshotRef::Branch::min_snapshots_to_keep</a></div><div class="ttdeci">std::optional&lt; int32_t &gt; min_snapshots_to_keep</div><div class="ttdef"><b>Definition</b> snapshot.h:78</div></div>
<div class="ttc" id="astructiceberg_1_1SnapshotRef_1_1Branch_html_a51b4eb07baf51b45ae89bc533092db3f"><div class="ttname"><a href="structiceberg_1_1SnapshotRef_1_1Branch.html#a51b4eb07baf51b45ae89bc533092db3f">iceberg::SnapshotRef::Branch::max_snapshot_age_ms</a></div><div class="ttdeci">std::optional&lt; int64_t &gt; max_snapshot_age_ms</div><div class="ttdef"><b>Definition</b> snapshot.h:82</div></div>
<div class="ttc" id="astructiceberg_1_1SnapshotRef_1_1Branch_html_a66bddbcaaf9655ed5c4528ecab20d57e"><div class="ttname"><a href="structiceberg_1_1SnapshotRef_1_1Branch.html#a66bddbcaaf9655ed5c4528ecab20d57e">iceberg::SnapshotRef::Branch::max_ref_age_ms</a></div><div class="ttdeci">std::optional&lt; int64_t &gt; max_ref_age_ms</div><div class="ttdef"><b>Definition</b> snapshot.h:86</div></div>
<div class="ttc" id="astructiceberg_1_1SnapshotRef_1_1Branch_html_a72566c422b25279bd143b8b39006e506"><div class="ttname"><a href="structiceberg_1_1SnapshotRef_1_1Branch.html#a72566c422b25279bd143b8b39006e506">iceberg::SnapshotRef::Branch::operator==</a></div><div class="ttdeci">friend bool operator==(const Branch &amp;lhs, const Branch &amp;rhs)</div><div class="ttdoc">Compare two branches for equality.</div><div class="ttdef"><b>Definition</b> snapshot.h:89</div></div>
<div class="ttc" id="astructiceberg_1_1SnapshotRef_1_1Tag_html"><div class="ttname"><a href="structiceberg_1_1SnapshotRef_1_1Tag.html">iceberg::SnapshotRef::Tag</a></div><div class="ttdef"><b>Definition</b> snapshot.h:98</div></div>
<div class="ttc" id="astructiceberg_1_1SnapshotRef_1_1Tag_html_a51a7a1608df43d8eff2cc8cd1600420e"><div class="ttname"><a href="structiceberg_1_1SnapshotRef_1_1Tag.html#a51a7a1608df43d8eff2cc8cd1600420e">iceberg::SnapshotRef::Tag::max_ref_age_ms</a></div><div class="ttdeci">std::optional&lt; int64_t &gt; max_ref_age_ms</div><div class="ttdef"><b>Definition</b> snapshot.h:102</div></div>
<div class="ttc" id="astructiceberg_1_1SnapshotRef_1_1Tag_html_ac2b7639cd47e0904f7e8bd8ca4efe367"><div class="ttname"><a href="structiceberg_1_1SnapshotRef_1_1Tag.html#ac2b7639cd47e0904f7e8bd8ca4efe367">iceberg::SnapshotRef::Tag::operator==</a></div><div class="ttdeci">friend bool operator==(const Tag &amp;lhs, const Tag &amp;rhs)</div><div class="ttdoc">Compare two tags for equality.</div><div class="ttdef"><b>Definition</b> snapshot.h:105</div></div>
<div class="ttc" id="astructiceberg_1_1SnapshotRef_html"><div class="ttname"><a href="structiceberg_1_1SnapshotRef.html">iceberg::SnapshotRef</a></div><div class="ttdoc">A reference to a snapshot, either a branch or a tag.</div><div class="ttdef"><b>Definition</b> snapshot.h:71</div></div>
<div class="ttc" id="astructiceberg_1_1SnapshotRef_html_a63ac8ff0babbe68126fb52e54e7e1adb"><div class="ttname"><a href="structiceberg_1_1SnapshotRef.html#a63ac8ff0babbe68126fb52e54e7e1adb">iceberg::SnapshotRef::snapshot_id</a></div><div class="ttdeci">int64_t snapshot_id</div><div class="ttdoc">A reference's snapshot ID. The tagged snapshot or latest snapshot of a branch.</div><div class="ttdef"><b>Definition</b> snapshot.h:113</div></div>
<div class="ttc" id="astructiceberg_1_1SnapshotRef_html_ae89f6fb03dacc07e6cde3c81a133add1"><div class="ttname"><a href="structiceberg_1_1SnapshotRef.html#ae89f6fb03dacc07e6cde3c81a133add1">iceberg::SnapshotRef::retention</a></div><div class="ttdeci">std::variant&lt; Branch, Tag &gt; retention</div><div class="ttdoc">Snapshot retention policy.</div><div class="ttdef"><b>Definition</b> snapshot.h:115</div></div>
<div class="ttc" id="astructiceberg_1_1SnapshotSummaryFields_html"><div class="ttname"><a href="structiceberg_1_1SnapshotSummaryFields.html">iceberg::SnapshotSummaryFields</a></div><div class="ttdoc">Optional Snapshot Summary Fields.</div><div class="ttdef"><b>Definition</b> snapshot.h:165</div></div>
<div class="ttc" id="astructiceberg_1_1Snapshot_html"><div class="ttname"><a href="structiceberg_1_1Snapshot.html">iceberg::Snapshot</a></div><div class="ttdoc">A snapshot of the data in a table at a point in time.</div><div class="ttdef"><b>Definition</b> snapshot.h:394</div></div>
<div class="ttc" id="astructiceberg_1_1Snapshot_html_a110ad1a8614e25b2b749bfb411b7b0f9"><div class="ttname"><a href="structiceberg_1_1Snapshot.html#a110ad1a8614e25b2b749bfb411b7b0f9">iceberg::Snapshot::operator==</a></div><div class="ttdeci">friend bool operator==(const Snapshot &amp;lhs, const Snapshot &amp;rhs)</div><div class="ttdoc">Compare two snapshots for equality.</div><div class="ttdef"><b>Definition</b> snapshot.h:456</div></div>
<div class="ttc" id="astructiceberg_1_1Snapshot_html_a128c409cc977968fbb9d9e893ba7d0c6"><div class="ttname"><a href="structiceberg_1_1Snapshot.html#a128c409cc977968fbb9d9e893ba7d0c6">iceberg::Snapshot::snapshot_id</a></div><div class="ttdeci">int64_t snapshot_id</div><div class="ttdoc">A unique long ID.</div><div class="ttdef"><b>Definition</b> snapshot.h:396</div></div>
<div class="ttc" id="astructiceberg_1_1Snapshot_html_a40fb1e1c592129bb99f1e4b3b0ed441a"><div class="ttname"><a href="structiceberg_1_1Snapshot.html#a40fb1e1c592129bb99f1e4b3b0ed441a">iceberg::Snapshot::first_row_id</a></div><div class="ttdeci">std::optional&lt; int64_t &gt; first_row_id</div><div class="ttdoc">The row-id of the first newly added row in this snapshot.</div><div class="ttdef"><b>Definition</b> snapshot.h:412</div></div>
<div class="ttc" id="astructiceberg_1_1Snapshot_html_a6f9b97d42b48be0d05dd4befd2602256"><div class="ttname"><a href="structiceberg_1_1Snapshot.html#a6f9b97d42b48be0d05dd4befd2602256">iceberg::Snapshot::sequence_number</a></div><div class="ttdeci">int64_t sequence_number</div><div class="ttdoc">A monotonically increasing long that tracks the order of changes to a table.</div><div class="ttdef"><b>Definition</b> snapshot.h:400</div></div>
<div class="ttc" id="astructiceberg_1_1Snapshot_html_a70e026926993c72c71ae9bc75298d5e1"><div class="ttname"><a href="structiceberg_1_1Snapshot.html#a70e026926993c72c71ae9bc75298d5e1">iceberg::Snapshot::schema_id</a></div><div class="ttdeci">std::optional&lt; int32_t &gt; schema_id</div><div class="ttdoc">ID of the table's current schema when the snapshot was created.</div><div class="ttdef"><b>Definition</b> snapshot.h:410</div></div>
<div class="ttc" id="astructiceberg_1_1Snapshot_html_a8a4bb50445bfb260413122e338c040ea"><div class="ttname"><a href="structiceberg_1_1Snapshot.html#a8a4bb50445bfb260413122e338c040ea">iceberg::Snapshot::Make</a></div><div class="ttdeci">static Result&lt; std::unique_ptr&lt; Snapshot &gt; &gt; Make(int64_t sequence_number, int64_t snapshot_id, std::optional&lt; int64_t &gt; parent_snapshot_id, TimePointMs timestamp_ms, std::string operation, std::unordered_map&lt; std::string, std::string &gt; summary, std::optional&lt; int32_t &gt; schema_id, std::string manifest_list, std::optional&lt; int64_t &gt; first_row_id=std::nullopt, std::optional&lt; int64_t &gt; added_rows=std::nullopt)</div><div class="ttdoc">Create a new Snapshot instance with validation on the inputs.</div></div>
<div class="ttc" id="astructiceberg_1_1Snapshot_html_abe3b761b04f61610bda41e16f4d0cead"><div class="ttname"><a href="structiceberg_1_1Snapshot.html#abe3b761b04f61610bda41e16f4d0cead">iceberg::Snapshot::AddedRows</a></div><div class="ttdeci">Result&lt; std::optional&lt; int64_t &gt; &gt; AddedRows() const</div><div class="ttdoc">The upper bound of number of rows with assigned row IDs in this snapshot.</div></div>
<div class="ttc" id="astructiceberg_1_1Snapshot_html_ac401c19cb4161ce5a39ab9ba16e458ac"><div class="ttname"><a href="structiceberg_1_1Snapshot.html#ac401c19cb4161ce5a39ab9ba16e458ac">iceberg::Snapshot::timestamp_ms</a></div><div class="ttdeci">TimePointMs timestamp_ms</div><div class="ttdef"><b>Definition</b> snapshot.h:403</div></div>
<div class="ttc" id="astructiceberg_1_1Snapshot_html_ad08a89f9a7a469b29457631d4d278abe"><div class="ttname"><a href="structiceberg_1_1Snapshot.html#ad08a89f9a7a469b29457631d4d278abe">iceberg::Snapshot::added_rows</a></div><div class="ttdeci">std::optional&lt; int64_t &gt; added_rows</div><div class="ttdoc">The upper bound of rows with assigned row IDs in this snapshot.</div><div class="ttdef"><b>Definition</b> snapshot.h:414</div></div>
<div class="ttc" id="astructiceberg_1_1Snapshot_html_aee0614438928f4f25b802846c3719cc8"><div class="ttname"><a href="structiceberg_1_1Snapshot.html#aee0614438928f4f25b802846c3719cc8">iceberg::Snapshot::Operation</a></div><div class="ttdeci">std::optional&lt; std::string_view &gt; Operation() const</div><div class="ttdoc">Return the name of the DataOperations data operation that produced this snapshot.</div></div>
<div class="ttc" id="astructiceberg_1_1Snapshot_html_aef3a444c939ab4f76e0b9a28f96c6b7a"><div class="ttname"><a href="structiceberg_1_1Snapshot.html#aef3a444c939ab4f76e0b9a28f96c6b7a">iceberg::Snapshot::parent_snapshot_id</a></div><div class="ttdeci">std::optional&lt; int64_t &gt; parent_snapshot_id</div><div class="ttdoc">The snapshot ID of the snapshot's parent. Omitted for any snapshot with no parent.</div><div class="ttdef"><b>Definition</b> snapshot.h:398</div></div>
<div class="ttc" id="astructiceberg_1_1Snapshot_html_af2eba27095e7a55b95affdab9d8f11a1"><div class="ttname"><a href="structiceberg_1_1Snapshot.html#af2eba27095e7a55b95affdab9d8f11a1">iceberg::Snapshot::FirstRowId</a></div><div class="ttdeci">Result&lt; std::optional&lt; int64_t &gt; &gt; FirstRowId() const</div><div class="ttdoc">The row-id of the first newly added row in this snapshot.</div></div>
<div class="ttc" id="astructiceberg_1_1Snapshot_html_afb198e3e0b1f335fade82e462a600e95"><div class="ttname"><a href="structiceberg_1_1Snapshot.html#afb198e3e0b1f335fade82e462a600e95">iceberg::Snapshot::manifest_list</a></div><div class="ttdeci">std::string manifest_list</div><div class="ttdef"><b>Definition</b> snapshot.h:406</div></div>
<div class="ttc" id="astructiceberg_1_1Snapshot_html_afb3b362767783fd344a459451796b2e8"><div class="ttname"><a href="structiceberg_1_1Snapshot.html#afb3b362767783fd344a459451796b2e8">iceberg::Snapshot::summary</a></div><div class="ttdeci">std::unordered_map&lt; std::string, std::string &gt; summary</div><div class="ttdoc">A string map that summaries the snapshot changes, including operation.</div><div class="ttdef"><b>Definition</b> snapshot.h:408</div></div>
<div class="ttc" id="atimepoint_8h_html"><div class="ttname"><a href="timepoint_8h.html">timepoint.h</a></div><div class="ttdoc">Provide time point conversion helpers.</div></div>
<div class="ttc" id="atype__fwd_8h_html"><div class="ttname"><a href="type__fwd_8h.html">type_fwd.h</a></div></div>
</div><!-- fragment --></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>