blob: c36b2a2f7122eb8fe99e02c4d1cb7b9cb709da60 [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::SnapshotUpdate Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">iceberg-cpp
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.8 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="namespaceiceberg.html">iceberg</a></li><li class="navelem"><a class="el" href="classiceberg_1_1SnapshotUpdate.html">SnapshotUpdate</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pro-methods">Protected Member Functions</a> &#124;
<a href="#pro-attribs">Protected Attributes</a> &#124;
<a href="classiceberg_1_1SnapshotUpdate-members.html">List of all members</a> </div>
<div class="headertitle"><div class="title">iceberg::SnapshotUpdate Class Reference<span class="mlabels"><span class="mlabel">abstract</span></span></div></div>
</div><!--header-->
<div class="contents">
<p>API for table changes that produce snapshots.
<a href="classiceberg_1_1SnapshotUpdate.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="snapshot__update_8h_source.html">snapshot_update.h</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for iceberg::SnapshotUpdate:</div>
<div class="dyncontent">
<div class="center">
<img src="classiceberg_1_1SnapshotUpdate.png" usemap="#iceberg::SnapshotUpdate_map" alt=""/>
<map id="iceberg::SnapshotUpdate_map" name="iceberg::SnapshotUpdate_map">
<area href="classiceberg_1_1PendingUpdate.html" title="Base class for all kinds of table metadata updates." alt="iceberg::PendingUpdate" shape="rect" coords="261,56,460,80"/>
<area href="classiceberg_1_1ErrorCollector.html" title="Base class for collecting errors in the builder pattern." alt="iceberg::ErrorCollector" shape="rect" coords="261,0,460,24"/>
<area href="classiceberg_1_1FastAppend.html" title="API for appending new files in a table." alt="iceberg::FastAppend" shape="rect" coords="0,168,199,192"/>
<area href="classiceberg_1_1MergingSnapshotUpdate.html" title="Abstract base class for merge-based snapshot write operations." alt="iceberg::MergingSnapshotUpdate" shape="rect" coords="522,168,721,192"/>
<area href="classiceberg_1_1DeleteFiles.html" title="API for deleting data files from a table." alt="iceberg::DeleteFiles" shape="rect" coords="0,224,199,248"/>
<area href="classiceberg_1_1MergeAppend.html" title="API for appending new files in a table while merging manifests." alt="iceberg::MergeAppend" shape="rect" coords="209,224,408,248"/>
<area href="classiceberg_1_1OverwriteFiles.html" title="API for overwriting files in a table." alt="iceberg::OverwriteFiles" shape="rect" coords="418,224,617,248"/>
<area href="classiceberg_1_1ReplacePartitions.html" title="API for overwriting files in a table by partition." alt="iceberg::ReplacePartitions" shape="rect" coords="627,224,826,248"/>
<area href="classiceberg_1_1RewriteFiles.html" title="API for replacing files in a table." alt="iceberg::RewriteFiles" shape="rect" coords="836,224,1035,248"/>
<area href="classiceberg_1_1RowDelta.html" title="API for encoding row-level changes to a table." alt="iceberg::RowDelta" shape="rect" coords="1045,224,1244,248"/>
</map>
</div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structiceberg_1_1SnapshotUpdate_1_1ApplyResult.html">ApplyResult</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Result of applying a snapshot update. <a href="structiceberg_1_1SnapshotUpdate_1_1ApplyResult.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structiceberg_1_1SnapshotUpdate_1_1ContentFileWithSequenceNumber.html">ContentFileWithSequenceNumber</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:ae194773e0ce37df3780121314322f440" id="r_ae194773e0ce37df3780121314322f440"><td class="memItemLeft" align="right" valign="top">Kind&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classiceberg_1_1SnapshotUpdate.html#ae194773e0ce37df3780121314322f440">kind</a> () const override</td></tr>
<tr class="memdesc:ae194773e0ce37df3780121314322f440"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the kind of this pending update. <br /></td></tr>
<tr class="separator:ae194773e0ce37df3780121314322f440"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a97b2753654e1304914509f29dcf0a7ff" id="r_a97b2753654e1304914509f29dcf0a7ff"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classiceberg_1_1SnapshotUpdate.html#a97b2753654e1304914509f29dcf0a7ff">IsRetryable</a> () const override</td></tr>
<tr class="memdesc:a97b2753654e1304914509f29dcf0a7ff"><td class="mdescLeft">&#160;</td><td class="mdescRight">Whether this update can be retried after a commit conflict. <br /></td></tr>
<tr class="separator:a97b2753654e1304914509f29dcf0a7ff"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af9a810bc1da767ff0c9a613267e6f6f1" id="r_af9a810bc1da767ff0c9a613267e6f6f1"><td class="memItemLeft" align="right" valign="top">Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classiceberg_1_1SnapshotUpdate.html#af9a810bc1da767ff0c9a613267e6f6f1">Commit</a> () override</td></tr>
<tr class="memdesc:af9a810bc1da767ff0c9a613267e6f6f1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Apply the pending changes and commit. <br /></td></tr>
<tr class="separator:af9a810bc1da767ff0c9a613267e6f6f1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afc2c4005cd4f087d2eb3108819de483d" id="r_afc2c4005cd4f087d2eb3108819de483d"><td class="memItemLeft" align="right" valign="top">auto &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classiceberg_1_1SnapshotUpdate.html#afc2c4005cd4f087d2eb3108819de483d">ReportWith</a> (this auto &amp;self, std::shared_ptr&lt; <a class="el" href="classiceberg_1_1MetricsReporter.html">MetricsReporter</a> &gt; reporter)</td></tr>
<tr class="memdesc:afc2c4005cd4f087d2eb3108819de483d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the metrics reporter for this snapshot update. <br /></td></tr>
<tr class="separator:afc2c4005cd4f087d2eb3108819de483d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af5a84c539ec3c559260b3c6b868943c7" id="r_af5a84c539ec3c559260b3c6b868943c7"><td class="memItemLeft" align="right" valign="top">auto &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classiceberg_1_1SnapshotUpdate.html#af5a84c539ec3c559260b3c6b868943c7">DeleteWith</a> (this auto &amp;self, std::function&lt; Status(const std::string &amp;)&gt; delete_func)</td></tr>
<tr class="memdesc:af5a84c539ec3c559260b3c6b868943c7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set a callback to delete files instead of the table's default. <br /></td></tr>
<tr class="separator:af5a84c539ec3c559260b3c6b868943c7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a43f427fe952631fffdd3c19e0c5ef434" id="r_a43f427fe952631fffdd3c19e0c5ef434"><td class="memItemLeft" align="right" valign="top">auto &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classiceberg_1_1SnapshotUpdate.html#a43f427fe952631fffdd3c19e0c5ef434">StageOnly</a> (this auto &amp;self)</td></tr>
<tr class="memdesc:a43f427fe952631fffdd3c19e0c5ef434"><td class="mdescLeft">&#160;</td><td class="mdescRight">Stage a snapshot in table metadata, but do not make it current. <br /></td></tr>
<tr class="separator:a43f427fe952631fffdd3c19e0c5ef434"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab6d8924f99e5ecc2d54a050b7e986ec7" id="r_ab6d8924f99e5ecc2d54a050b7e986ec7"><td class="memItemLeft" align="right" valign="top">auto &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classiceberg_1_1SnapshotUpdate.html#ab6d8924f99e5ecc2d54a050b7e986ec7">ScanManifestsWith</a> (this auto &amp;self, <a class="el" href="classiceberg_1_1Executor.html">Executor</a> &amp;executor)</td></tr>
<tr class="memdesc:ab6d8924f99e5ecc2d54a050b7e986ec7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Configure an executor for manifest planning work. <br /></td></tr>
<tr class="separator:ab6d8924f99e5ecc2d54a050b7e986ec7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9a05380cb12c07b3b868df790ef0f829" id="r_a9a05380cb12c07b3b868df790ef0f829"><td class="memItemLeft" align="right" valign="top">auto &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classiceberg_1_1SnapshotUpdate.html#a9a05380cb12c07b3b868df790ef0f829">ToBranch</a> (this auto &amp;self, const std::string &amp;branch)</td></tr>
<tr class="memdesc:a9a05380cb12c07b3b868df790ef0f829"><td class="mdescLeft">&#160;</td><td class="mdescRight">Perform operations on a particular branch. <br /></td></tr>
<tr class="separator:a9a05380cb12c07b3b868df790ef0f829"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae19b638ceb6b7e57e4096ec943db223b" id="r_ae19b638ceb6b7e57e4096ec943db223b"><td class="memItemLeft" align="right" valign="top">auto &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classiceberg_1_1SnapshotUpdate.html#ae19b638ceb6b7e57e4096ec943db223b">Set</a> (this auto &amp;self, const std::string &amp;property, const std::string &amp;value)</td></tr>
<tr class="memdesc:ae19b638ceb6b7e57e4096ec943db223b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set a summary property in the snapshot produced by this update. <br /></td></tr>
<tr class="separator:ae19b638ceb6b7e57e4096ec943db223b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad7521b2d10189e112d7c3197c0f6ae4e" id="r_ad7521b2d10189e112d7c3197c0f6ae4e"><td class="memItemLeft" align="right" valign="top">auto &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classiceberg_1_1SnapshotUpdate.html#ad7521b2d10189e112d7c3197c0f6ae4e">WriteManifestsWith</a> (this auto &amp;self, <a class="el" href="classiceberg_1_1Executor.html">Executor</a> &amp;executor, int32_t parallelism)</td></tr>
<tr class="memdesc:ad7521b2d10189e112d7c3197c0f6ae4e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Configure an executor and max writer count for writing new manifests. <br /></td></tr>
<tr class="separator:ad7521b2d10189e112d7c3197c0f6ae4e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8d8205f070ab0c9cd86422a4b579a066" id="r_a8d8205f070ab0c9cd86422a4b579a066"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceiceberg.html#a9d5594e371beb516b0120e07e69d3af6">Result</a>&lt; <a class="el" href="structiceberg_1_1SnapshotUpdate_1_1ApplyResult.html">ApplyResult</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classiceberg_1_1SnapshotUpdate.html#a8d8205f070ab0c9cd86422a4b579a066">Apply</a> ()</td></tr>
<tr class="memdesc:a8d8205f070ab0c9cd86422a4b579a066"><td class="mdescLeft">&#160;</td><td class="mdescRight">Apply the update's changes to create a new snapshot. <br /></td></tr>
<tr class="separator:a8d8205f070ab0c9cd86422a4b579a066"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad942dda206e9c6454493a63eb48df0e0" id="r_ad942dda206e9c6454493a63eb48df0e0"><td class="memItemLeft" align="right" valign="top">Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classiceberg_1_1SnapshotUpdate.html#ad942dda206e9c6454493a63eb48df0e0">Finalize</a> (<a class="el" href="namespaceiceberg.html#a9d5594e371beb516b0120e07e69d3af6">Result</a>&lt; const <a class="el" href="structiceberg_1_1TableMetadata.html">TableMetadata</a> * &gt; commit_result) override</td></tr>
<tr class="memdesc:ad942dda206e9c6454493a63eb48df0e0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Finalize the snapshot update, cleaning up any uncommitted files. <br /></td></tr>
<tr class="separator:ad942dda206e9c6454493a63eb48df0e0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_classiceberg_1_1PendingUpdate"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classiceberg_1_1PendingUpdate')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="classiceberg_1_1PendingUpdate.html">iceberg::PendingUpdate</a></td></tr>
<tr class="memitem:ac5c3549e22869ad7f6abd417ffcabbe2 inherit pub_methods_classiceberg_1_1PendingUpdate" id="r_ac5c3549e22869ad7f6abd417ffcabbe2"><td class="memItemLeft" align="right" valign="top">
&#160;</td><td class="memItemRight" valign="bottom"><b>PendingUpdate</b> (const <a class="el" href="classiceberg_1_1PendingUpdate.html">PendingUpdate</a> &amp;)=delete</td></tr>
<tr class="separator:ac5c3549e22869ad7f6abd417ffcabbe2 inherit pub_methods_classiceberg_1_1PendingUpdate"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3314053bba6a86931feb39c1487e2c8b inherit pub_methods_classiceberg_1_1PendingUpdate" id="r_a3314053bba6a86931feb39c1487e2c8b"><td class="memItemLeft" align="right" valign="top">
<a class="el" href="classiceberg_1_1PendingUpdate.html">PendingUpdate</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>operator=</b> (const <a class="el" href="classiceberg_1_1PendingUpdate.html">PendingUpdate</a> &amp;)=delete</td></tr>
<tr class="separator:a3314053bba6a86931feb39c1487e2c8b inherit pub_methods_classiceberg_1_1PendingUpdate"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a18521611dee09ce7f85477f38d85e75d inherit pub_methods_classiceberg_1_1PendingUpdate" id="r_a18521611dee09ce7f85477f38d85e75d"><td class="memItemLeft" align="right" valign="top">
&#160;</td><td class="memItemRight" valign="bottom"><b>PendingUpdate</b> (<a class="el" href="classiceberg_1_1PendingUpdate.html">PendingUpdate</a> &amp;&amp;) noexcept=default</td></tr>
<tr class="separator:a18521611dee09ce7f85477f38d85e75d inherit pub_methods_classiceberg_1_1PendingUpdate"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9e71d56c145591059c7e2f6ee0305295 inherit pub_methods_classiceberg_1_1PendingUpdate" id="r_a9e71d56c145591059c7e2f6ee0305295"><td class="memItemLeft" align="right" valign="top">
<a class="el" href="classiceberg_1_1PendingUpdate.html">PendingUpdate</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>operator=</b> (<a class="el" href="classiceberg_1_1PendingUpdate.html">PendingUpdate</a> &amp;&amp;) noexcept=default</td></tr>
<tr class="separator:a9e71d56c145591059c7e2f6ee0305295 inherit pub_methods_classiceberg_1_1PendingUpdate"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_classiceberg_1_1ErrorCollector"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classiceberg_1_1ErrorCollector')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="classiceberg_1_1ErrorCollector.html">iceberg::ErrorCollector</a></td></tr>
<tr class="memitem:a827c296a8527f87f76d7f9321e7ee68f inherit pub_methods_classiceberg_1_1ErrorCollector" id="r_a827c296a8527f87f76d7f9321e7ee68f"><td class="memItemLeft" align="right" valign="top">
&#160;</td><td class="memItemRight" valign="bottom"><b>ErrorCollector</b> (<a class="el" href="classiceberg_1_1ErrorCollector.html">ErrorCollector</a> &amp;&amp;)=default</td></tr>
<tr class="separator:a827c296a8527f87f76d7f9321e7ee68f inherit pub_methods_classiceberg_1_1ErrorCollector"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a22311658715152d8e6e27834240ce446 inherit pub_methods_classiceberg_1_1ErrorCollector" id="r_a22311658715152d8e6e27834240ce446"><td class="memItemLeft" align="right" valign="top">
<a class="el" href="classiceberg_1_1ErrorCollector.html">ErrorCollector</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>operator=</b> (<a class="el" href="classiceberg_1_1ErrorCollector.html">ErrorCollector</a> &amp;&amp;)=default</td></tr>
<tr class="separator:a22311658715152d8e6e27834240ce446 inherit pub_methods_classiceberg_1_1ErrorCollector"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab3fa546cd2748fe418db9c0933542755 inherit pub_methods_classiceberg_1_1ErrorCollector" id="r_ab3fa546cd2748fe418db9c0933542755"><td class="memItemLeft" align="right" valign="top">
&#160;</td><td class="memItemRight" valign="bottom"><b>ErrorCollector</b> (const <a class="el" href="classiceberg_1_1ErrorCollector.html">ErrorCollector</a> &amp;)=default</td></tr>
<tr class="separator:ab3fa546cd2748fe418db9c0933542755 inherit pub_methods_classiceberg_1_1ErrorCollector"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaba366560be481bfa9538735f3a38e3e inherit pub_methods_classiceberg_1_1ErrorCollector" id="r_aaba366560be481bfa9538735f3a38e3e"><td class="memItemLeft" align="right" valign="top">
<a class="el" href="classiceberg_1_1ErrorCollector.html">ErrorCollector</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>operator=</b> (const <a class="el" href="classiceberg_1_1ErrorCollector.html">ErrorCollector</a> &amp;)=default</td></tr>
<tr class="separator:aaba366560be481bfa9538735f3a38e3e inherit pub_methods_classiceberg_1_1ErrorCollector"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3a20345150b136c918ffe8947a7d75e1 inherit pub_methods_classiceberg_1_1ErrorCollector" id="r_a3a20345150b136c918ffe8947a7d75e1"><td class="memTemplParams" colspan="2">template&lt;typename... Args&gt; </td></tr>
<tr class="memitem:a3a20345150b136c918ffe8947a7d75e1 inherit pub_methods_classiceberg_1_1ErrorCollector"><td class="memTemplItemLeft" align="right" valign="top">auto &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classiceberg_1_1ErrorCollector.html#a3a20345150b136c918ffe8947a7d75e1">AddError</a> (this auto &amp;self, <a class="el" href="namespaceiceberg.html#a5cf8d9de1acce830ff4fc3d87fe95147">ErrorKind</a> kind, const std::format_string&lt; Args... &gt; fmt, Args &amp;&amp;... args)</td></tr>
<tr class="memdesc:a3a20345150b136c918ffe8947a7d75e1 inherit pub_methods_classiceberg_1_1ErrorCollector"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add a specific error and return reference to derived class. <br /></td></tr>
<tr class="separator:a3a20345150b136c918ffe8947a7d75e1 inherit pub_methods_classiceberg_1_1ErrorCollector"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5e555954de121d0908dcf4648da446e3 inherit pub_methods_classiceberg_1_1ErrorCollector" id="r_a5e555954de121d0908dcf4648da446e3"><td class="memItemLeft" align="right" valign="top">auto &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classiceberg_1_1ErrorCollector.html#a5e555954de121d0908dcf4648da446e3">AddError</a> (this auto &amp;self, <a class="el" href="structiceberg_1_1Error.html">Error</a> err)</td></tr>
<tr class="memdesc:a5e555954de121d0908dcf4648da446e3 inherit pub_methods_classiceberg_1_1ErrorCollector"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add an existing error object and return reference to derived class. <br /></td></tr>
<tr class="separator:a5e555954de121d0908dcf4648da446e3 inherit pub_methods_classiceberg_1_1ErrorCollector"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5749264a2234092a5246056a1c72ee51 inherit pub_methods_classiceberg_1_1ErrorCollector" id="r_a5749264a2234092a5246056a1c72ee51"><td class="memItemLeft" align="right" valign="top">auto &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classiceberg_1_1ErrorCollector.html#a5749264a2234092a5246056a1c72ee51">AddError</a> (this auto &amp;self, std::unexpected&lt; <a class="el" href="structiceberg_1_1Error.html">Error</a> &gt; err)</td></tr>
<tr class="memdesc:a5749264a2234092a5246056a1c72ee51 inherit pub_methods_classiceberg_1_1ErrorCollector"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add an unexpected result's error and return reference to derived class. <br /></td></tr>
<tr class="separator:a5749264a2234092a5246056a1c72ee51 inherit pub_methods_classiceberg_1_1ErrorCollector"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8813b3fe2a3cc112e6db19c87b8422ae inherit pub_methods_classiceberg_1_1ErrorCollector" id="r_a8813b3fe2a3cc112e6db19c87b8422ae"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classiceberg_1_1ErrorCollector.html#a8813b3fe2a3cc112e6db19c87b8422ae">has_errors</a> () const</td></tr>
<tr class="memdesc:a8813b3fe2a3cc112e6db19c87b8422ae inherit pub_methods_classiceberg_1_1ErrorCollector"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check if any errors have been collected. <br /></td></tr>
<tr class="separator:a8813b3fe2a3cc112e6db19c87b8422ae inherit pub_methods_classiceberg_1_1ErrorCollector"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afae10739a78bbffc2609a63e52821195 inherit pub_methods_classiceberg_1_1ErrorCollector" id="r_afae10739a78bbffc2609a63e52821195"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classiceberg_1_1ErrorCollector.html#afae10739a78bbffc2609a63e52821195">error_count</a> () const</td></tr>
<tr class="memdesc:afae10739a78bbffc2609a63e52821195 inherit pub_methods_classiceberg_1_1ErrorCollector"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the number of errors collected. <br /></td></tr>
<tr class="separator:afae10739a78bbffc2609a63e52821195 inherit pub_methods_classiceberg_1_1ErrorCollector"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a16cbe7b6d423a372c9e68d970ff2c3ea inherit pub_methods_classiceberg_1_1ErrorCollector" id="r_a16cbe7b6d423a372c9e68d970ff2c3ea"><td class="memItemLeft" align="right" valign="top">Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classiceberg_1_1ErrorCollector.html#a16cbe7b6d423a372c9e68d970ff2c3ea">CheckErrors</a> () const</td></tr>
<tr class="memdesc:a16cbe7b6d423a372c9e68d970ff2c3ea inherit pub_methods_classiceberg_1_1ErrorCollector"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check for accumulated errors and return them if any exist. <br /></td></tr>
<tr class="separator:a16cbe7b6d423a372c9e68d970ff2c3ea inherit pub_methods_classiceberg_1_1ErrorCollector"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a274df2b90b0c22156a4c339aa30a4401 inherit pub_methods_classiceberg_1_1ErrorCollector" id="r_a274df2b90b0c22156a4c339aa30a4401"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classiceberg_1_1ErrorCollector.html#a274df2b90b0c22156a4c339aa30a4401">ClearErrors</a> ()</td></tr>
<tr class="memdesc:a274df2b90b0c22156a4c339aa30a4401 inherit pub_methods_classiceberg_1_1ErrorCollector"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clear all accumulated errors. <br /></td></tr>
<tr class="separator:a274df2b90b0c22156a4c339aa30a4401 inherit pub_methods_classiceberg_1_1ErrorCollector"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a101fb70f2ad50a6023de932dc2eca96c inherit pub_methods_classiceberg_1_1ErrorCollector" id="r_a101fb70f2ad50a6023de932dc2eca96c"><td class="memItemLeft" align="right" valign="top">
const std::vector&lt; <a class="el" href="structiceberg_1_1Error.html">Error</a> &gt; &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>errors</b> () const</td></tr>
<tr class="memdesc:a101fb70f2ad50a6023de932dc2eca96c inherit pub_methods_classiceberg_1_1ErrorCollector"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get read-only access to all collected errors. <br /></td></tr>
<tr class="separator:a101fb70f2ad50a6023de932dc2eca96c inherit pub_methods_classiceberg_1_1ErrorCollector"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pro-methods" name="pro-methods"></a>
Protected Member Functions</h2></td></tr>
<tr class="memitem:afa840d8e4fac4b35a0e5147ebe0a24bd" id="r_afa840d8e4fac4b35a0e5147ebe0a24bd"><td class="memItemLeft" align="right" valign="top"><a id="afa840d8e4fac4b35a0e5147ebe0a24bd" name="afa840d8e4fac4b35a0e5147ebe0a24bd"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>SnapshotUpdate</b> (std::shared_ptr&lt; <a class="el" href="classiceberg_1_1TransactionContext.html">TransactionContext</a> &gt; ctx)</td></tr>
<tr class="separator:afa840d8e4fac4b35a0e5147ebe0a24bd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad839a5b6b8cd54ceb3d013ddadae9fc5" id="r_ad839a5b6b8cd54ceb3d013ddadae9fc5"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceiceberg.html#a9d5594e371beb516b0120e07e69d3af6">Result</a>&lt; std::vector&lt; <a class="el" href="structiceberg_1_1ManifestFile.html">ManifestFile</a> &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classiceberg_1_1SnapshotUpdate.html#ad839a5b6b8cd54ceb3d013ddadae9fc5">WriteDataManifests</a> (std::span&lt; const std::shared_ptr&lt; <a class="el" href="structiceberg_1_1DataFile.html">DataFile</a> &gt; &gt; files, const std::shared_ptr&lt; <a class="el" href="classiceberg_1_1PartitionSpec.html">PartitionSpec</a> &gt; &amp;spec, std::optional&lt; int64_t &gt; data_sequence_number=std::nullopt)</td></tr>
<tr class="memdesc:ad839a5b6b8cd54ceb3d013ddadae9fc5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Write data manifests for the given data files. <br /></td></tr>
<tr class="separator:ad839a5b6b8cd54ceb3d013ddadae9fc5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaf6092cc542454c4137d9b73212a8373" id="r_aaf6092cc542454c4137d9b73212a8373"><td class="memItemLeft" align="right" valign="top"><a id="aaf6092cc542454c4137d9b73212a8373" name="aaf6092cc542454c4137d9b73212a8373"></a>
<a class="el" href="namespaceiceberg.html#a9d5594e371beb516b0120e07e69d3af6">Result</a>&lt; std::vector&lt; <a class="el" href="structiceberg_1_1ManifestFile.html">ManifestFile</a> &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>WriteDeleteManifests</b> (std::span&lt; const <a class="el" href="structiceberg_1_1SnapshotUpdate_1_1ContentFileWithSequenceNumber.html">ContentFileWithSequenceNumber</a> &gt; files, const std::shared_ptr&lt; <a class="el" href="classiceberg_1_1PartitionSpec.html">PartitionSpec</a> &gt; &amp;spec)</td></tr>
<tr class="separator:aaf6092cc542454c4137d9b73212a8373"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac1d1956ed16f817a44c0f3f081eb4c5c" id="r_ac1d1956ed16f817a44c0f3f081eb4c5c"><td class="memItemLeft" align="right" valign="top"><a id="ac1d1956ed16f817a44c0f3f081eb4c5c" name="ac1d1956ed16f817a44c0f3f081eb4c5c"></a>
const std::string &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>target_branch</b> () const</td></tr>
<tr class="separator:ac1d1956ed16f817a44c0f3f081eb4c5c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0f15ea5399c070c05a401df3427cf4ba" id="r_a0f15ea5399c070c05a401df3427cf4ba"><td class="memItemLeft" align="right" valign="top"><a id="a0f15ea5399c070c05a401df3427cf4ba" name="a0f15ea5399c070c05a401df3427cf4ba"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>can_inherit_snapshot_id</b> () const</td></tr>
<tr class="separator:a0f15ea5399c070c05a401df3427cf4ba"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a32d03afeb074db14119b5e1f1efcf279" id="r_a32d03afeb074db14119b5e1f1efcf279"><td class="memItemLeft" align="right" valign="top"><a id="a32d03afeb074db14119b5e1f1efcf279" name="a32d03afeb074db14119b5e1f1efcf279"></a>
const std::string &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>commit_uuid</b> () const</td></tr>
<tr class="separator:a32d03afeb074db14119b5e1f1efcf279"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a89c7e7a09d3c094859f22b3e50a26ae6" id="r_a89c7e7a09d3c094859f22b3e50a26ae6"><td class="memItemLeft" align="right" valign="top"><a id="a89c7e7a09d3c094859f22b3e50a26ae6" name="a89c7e7a09d3c094859f22b3e50a26ae6"></a>
int32_t&#160;</td><td class="memItemRight" valign="bottom"><b>manifest_count</b> () const</td></tr>
<tr class="separator:a89c7e7a09d3c094859f22b3e50a26ae6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7d049f4c752864f55d75ece4b6119a48" id="r_a7d049f4c752864f55d75ece4b6119a48"><td class="memItemLeft" align="right" valign="top"><a id="a7d049f4c752864f55d75ece4b6119a48" name="a7d049f4c752864f55d75ece4b6119a48"></a>
int32_t&#160;</td><td class="memItemRight" valign="bottom"><b>attempt</b> () const</td></tr>
<tr class="separator:a7d049f4c752864f55d75ece4b6119a48"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abe2bd4f83fb5d90e70bfff6d1f28a40b" id="r_abe2bd4f83fb5d90e70bfff6d1f28a40b"><td class="memItemLeft" align="right" valign="top"><a id="abe2bd4f83fb5d90e70bfff6d1f28a40b" name="abe2bd4f83fb5d90e70bfff6d1f28a40b"></a>
int64_t&#160;</td><td class="memItemRight" valign="bottom"><b>target_manifest_size_bytes</b> () const</td></tr>
<tr class="separator:abe2bd4f83fb5d90e70bfff6d1f28a40b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8bf7d3ae4432a24f0d9a0887b5d2ed0b" id="r_a8bf7d3ae4432a24f0d9a0887b5d2ed0b"><td class="memItemLeft" align="right" valign="top">virtual Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classiceberg_1_1SnapshotUpdate.html#a8bf7d3ae4432a24f0d9a0887b5d2ed0b">CleanUncommitted</a> (const std::unordered_set&lt; std::string &gt; &amp;committed)=0</td></tr>
<tr class="memdesc:a8bf7d3ae4432a24f0d9a0887b5d2ed0b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clean up any uncommitted manifests that were created. <br /></td></tr>
<tr class="separator:a8bf7d3ae4432a24f0d9a0887b5d2ed0b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7e5cb52a426032eebf3b602b5674c5e0" id="r_a7e5cb52a426032eebf3b602b5674c5e0"><td class="memItemLeft" align="right" valign="top">virtual std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classiceberg_1_1SnapshotUpdate.html#a7e5cb52a426032eebf3b602b5674c5e0">operation</a> ()=0</td></tr>
<tr class="memdesc:a7e5cb52a426032eebf3b602b5674c5e0"><td class="mdescLeft">&#160;</td><td class="mdescRight">A string that describes the action that produced the new snapshot. <br /></td></tr>
<tr class="separator:a7e5cb52a426032eebf3b602b5674c5e0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa2d22d7708df6b17bfa53e40abb32f86" id="r_aa2d22d7708df6b17bfa53e40abb32f86"><td class="memItemLeft" align="right" valign="top">virtual Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classiceberg_1_1SnapshotUpdate.html#aa2d22d7708df6b17bfa53e40abb32f86">Validate</a> (const <a class="el" href="structiceberg_1_1TableMetadata.html">TableMetadata</a> &amp;current_metadata, const std::shared_ptr&lt; <a class="el" href="structiceberg_1_1Snapshot.html">Snapshot</a> &gt; &amp;snapshot)</td></tr>
<tr class="memdesc:aa2d22d7708df6b17bfa53e40abb32f86"><td class="mdescLeft">&#160;</td><td class="mdescRight">Validate the current metadata. <br /></td></tr>
<tr class="separator:aa2d22d7708df6b17bfa53e40abb32f86"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0d1e461184dd3aa553269ef736202ced" id="r_a0d1e461184dd3aa553269ef736202ced"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="namespaceiceberg.html#a9d5594e371beb516b0120e07e69d3af6">Result</a>&lt; std::vector&lt; <a class="el" href="structiceberg_1_1ManifestFile.html">ManifestFile</a> &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classiceberg_1_1SnapshotUpdate.html#a0d1e461184dd3aa553269ef736202ced">Apply</a> (const <a class="el" href="structiceberg_1_1TableMetadata.html">TableMetadata</a> &amp;metadata_to_update, const std::shared_ptr&lt; <a class="el" href="structiceberg_1_1Snapshot.html">Snapshot</a> &gt; &amp;snapshot)=0</td></tr>
<tr class="memdesc:a0d1e461184dd3aa553269ef736202ced"><td class="mdescLeft">&#160;</td><td class="mdescRight">Apply the update's changes to the given metadata and snapshot. <br /></td></tr>
<tr class="separator:a0d1e461184dd3aa553269ef736202ced"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a193bc595ce86911870731a8eebf5950e" id="r_a193bc595ce86911870731a8eebf5950e"><td class="memItemLeft" align="right" valign="top">virtual std::unordered_map&lt; std::string, std::string &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classiceberg_1_1SnapshotUpdate.html#a193bc595ce86911870731a8eebf5950e">Summary</a> ()=0</td></tr>
<tr class="memdesc:a193bc595ce86911870731a8eebf5950e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the summary map for this operation. <br /></td></tr>
<tr class="separator:a193bc595ce86911870731a8eebf5950e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afef5bfd67c340f8dc2bc6096b7bb47ca" id="r_afef5bfd67c340f8dc2bc6096b7bb47ca"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classiceberg_1_1SnapshotUpdate.html#afef5bfd67c340f8dc2bc6096b7bb47ca">SetSummaryProperty</a> (const std::string &amp;property, const std::string &amp;value)</td></tr>
<tr class="memdesc:afef5bfd67c340f8dc2bc6096b7bb47ca"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set a summary property. <br /></td></tr>
<tr class="separator:afef5bfd67c340f8dc2bc6096b7bb47ca"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aeb89f2ceb3a0fb2abfba3faa6a32e5ac" id="r_aeb89f2ceb3a0fb2abfba3faa6a32e5ac"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classiceberg_1_1SnapshotUpdate.html#aeb89f2ceb3a0fb2abfba3faa6a32e5ac">CleanupAfterCommit</a> () const</td></tr>
<tr class="memdesc:aeb89f2ceb3a0fb2abfba3faa6a32e5ac"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check if cleanup should happen after commit. <br /></td></tr>
<tr class="separator:aeb89f2ceb3a0fb2abfba3faa6a32e5ac"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aae99085da77d04a9314e8c4773cfb731" id="r_aae99085da77d04a9314e8c4773cfb731"><td class="memItemLeft" align="right" valign="top"><a id="aae99085da77d04a9314e8c4773cfb731" name="aae99085da77d04a9314e8c4773cfb731"></a>
int64_t&#160;</td><td class="memItemRight" valign="bottom"><b>SnapshotId</b> ()</td></tr>
<tr class="memdesc:aae99085da77d04a9314e8c4773cfb731"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get or generate the snapshot ID for the new snapshot. <br /></td></tr>
<tr class="separator:aae99085da77d04a9314e8c4773cfb731"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af9fc2b6a382fb3c9c9f8e30056d1f7de" id="r_af9fc2b6a382fb3c9c9f8e30056d1f7de"><td class="memItemLeft" align="right" valign="top">Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classiceberg_1_1SnapshotUpdate.html#af9fc2b6a382fb3c9c9f8e30056d1f7de">DeleteFile</a> (const std::string &amp;path)</td></tr>
<tr class="memdesc:af9fc2b6a382fb3c9c9f8e30056d1f7de"><td class="mdescLeft">&#160;</td><td class="mdescRight">Delete a file at the given path. <br /></td></tr>
<tr class="separator:af9fc2b6a382fb3c9c9f8e30056d1f7de"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af474cf9191b5a05ea99ed8d9c01bbda0" id="r_af474cf9191b5a05ea99ed8d9c01bbda0"><td class="memItemLeft" align="right" valign="top"><a id="af474cf9191b5a05ea99ed8d9c01bbda0" name="af474cf9191b5a05ea99ed8d9c01bbda0"></a>
std::string&#160;</td><td class="memItemRight" valign="bottom"><b>ManifestPath</b> ()</td></tr>
<tr class="separator:af474cf9191b5a05ea99ed8d9c01bbda0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0478c16b077f60262329f50bb606746e" id="r_a0478c16b077f60262329f50bb606746e"><td class="memItemLeft" align="right" valign="top"><a id="a0478c16b077f60262329f50bb606746e" name="a0478c16b077f60262329f50bb606746e"></a>
std::string&#160;</td><td class="memItemRight" valign="bottom"><b>ManifestListPath</b> ()</td></tr>
<tr class="separator:a0478c16b077f60262329f50bb606746e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a89096f41f8602f1d05f6bddc06c9d8e6" id="r_a89096f41f8602f1d05f6bddc06c9d8e6"><td class="memItemLeft" align="right" valign="top"><a id="a89096f41f8602f1d05f6bddc06c9d8e6" name="a89096f41f8602f1d05f6bddc06c9d8e6"></a>
<a class="el" href="classiceberg_1_1SnapshotSummaryBuilder.html">SnapshotSummaryBuilder</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>summary_builder</b> ()</td></tr>
<tr class="separator:a89096f41f8602f1d05f6bddc06c9d8e6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa2881fd613e348e49fe00b07713b701f" id="r_aa2881fd613e348e49fe00b07713b701f"><td class="memItemLeft" align="right" valign="top"><a id="aa2881fd613e348e49fe00b07713b701f" name="aa2881fd613e348e49fe00b07713b701f"></a>
<a class="el" href="classiceberg_1_1SnapshotSummaryBuilder.html">SnapshotSummaryBuilder</a>&#160;</td><td class="memItemRight" valign="bottom"><b>BuildManifestCountSummary</b> (std::span&lt; const <a class="el" href="structiceberg_1_1ManifestFile.html">ManifestFile</a> &gt; manifests, int32_t replaced_manifests_count)</td></tr>
<tr class="separator:aa2881fd613e348e49fe00b07713b701f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_methods_classiceberg_1_1PendingUpdate"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_classiceberg_1_1PendingUpdate')"><img src="closed.png" alt="-"/>&#160;Protected Member Functions inherited from <a class="el" href="classiceberg_1_1PendingUpdate.html">iceberg::PendingUpdate</a></td></tr>
<tr class="memitem:a1bc9b1eb7bfa1c832c65331b2e6bba6f inherit pro_methods_classiceberg_1_1PendingUpdate" id="r_a1bc9b1eb7bfa1c832c65331b2e6bba6f"><td class="memItemLeft" align="right" valign="top">
&#160;</td><td class="memItemRight" valign="bottom"><b>PendingUpdate</b> (std::shared_ptr&lt; <a class="el" href="classiceberg_1_1TransactionContext.html">TransactionContext</a> &gt; ctx)</td></tr>
<tr class="separator:a1bc9b1eb7bfa1c832c65331b2e6bba6f inherit pro_methods_classiceberg_1_1PendingUpdate"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a93721051561748b1a29e75b7d4cbbd86 inherit pro_methods_classiceberg_1_1PendingUpdate" id="r_a93721051561748b1a29e75b7d4cbbd86"><td class="memItemLeft" align="right" valign="top">
const <a class="el" href="structiceberg_1_1TableMetadata.html">TableMetadata</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>base</b> () const</td></tr>
<tr class="separator:a93721051561748b1a29e75b7d4cbbd86 inherit pro_methods_classiceberg_1_1PendingUpdate"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pro-attribs" name="pro-attribs"></a>
Protected Attributes</h2></td></tr>
<tr class="memitem:a169ac960678daaef3ef8cc793f47d1a3" id="r_a169ac960678daaef3ef8cc793f47d1a3"><td class="memItemLeft" align="right" valign="top"><a id="a169ac960678daaef3ef8cc793f47d1a3" name="a169ac960678daaef3ef8cc793f47d1a3"></a>
<a class="el" href="classiceberg_1_1SnapshotSummaryBuilder.html">SnapshotSummaryBuilder</a>&#160;</td><td class="memItemRight" valign="bottom"><b>summary_</b></td></tr>
<tr class="separator:a169ac960678daaef3ef8cc793f47d1a3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_attribs_classiceberg_1_1PendingUpdate"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_classiceberg_1_1PendingUpdate')"><img src="closed.png" alt="-"/>&#160;Protected Attributes inherited from <a class="el" href="classiceberg_1_1PendingUpdate.html">iceberg::PendingUpdate</a></td></tr>
<tr class="memitem:a48306a581b00f16c85af172a41b7dcee inherit pro_attribs_classiceberg_1_1PendingUpdate" id="r_a48306a581b00f16c85af172a41b7dcee"><td class="memItemLeft" align="right" valign="top">
std::shared_ptr&lt; <a class="el" href="classiceberg_1_1TransactionContext.html">TransactionContext</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>ctx_</b></td></tr>
<tr class="separator:a48306a581b00f16c85af172a41b7dcee inherit pro_attribs_classiceberg_1_1PendingUpdate"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_attribs_classiceberg_1_1ErrorCollector"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_classiceberg_1_1ErrorCollector')"><img src="closed.png" alt="-"/>&#160;Protected Attributes inherited from <a class="el" href="classiceberg_1_1ErrorCollector.html">iceberg::ErrorCollector</a></td></tr>
<tr class="memitem:a354d1e7287bb45926a4b563f80d0c623 inherit pro_attribs_classiceberg_1_1ErrorCollector" id="r_a354d1e7287bb45926a4b563f80d0c623"><td class="memItemLeft" align="right" valign="top">
std::vector&lt; <a class="el" href="structiceberg_1_1Error.html">Error</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>errors_</b></td></tr>
<tr class="separator:a354d1e7287bb45926a4b563f80d0c623 inherit pro_attribs_classiceberg_1_1ErrorCollector"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="inherited" name="inherited"></a>
Additional Inherited Members</h2></td></tr>
<tr class="inherit_header pub_types_classiceberg_1_1PendingUpdate"><td colspan="2" onclick="javascript:toggleInherit('pub_types_classiceberg_1_1PendingUpdate')"><img src="closed.png" alt="-"/>&#160;Public Types inherited from <a class="el" href="classiceberg_1_1PendingUpdate.html">iceberg::PendingUpdate</a></td></tr>
<tr class="memitem:a5bac3f32c6a0790ba222399fed5c1944 inherit pub_types_classiceberg_1_1PendingUpdate" id="r_a5bac3f32c6a0790ba222399fed5c1944"><td class="memItemLeft" align="right" valign="top"><a id="a5bac3f32c6a0790ba222399fed5c1944" name="a5bac3f32c6a0790ba222399fed5c1944"></a>enum class &#160;</td><td class="memItemRight" valign="bottom"><b>Kind</b> : uint8_t { <br />
&#160;&#160;<b>kExpireSnapshots</b>
, <b>kSetSnapshot</b>
, <b>kUpdateLocation</b>
, <b>kUpdatePartitionSpec</b>
, <br />
&#160;&#160;<b>kUpdatePartitionStatistics</b>
, <b>kUpdateProperties</b>
, <b>kUpdateSchema</b>
, <b>kUpdateSnapshot</b>
, <br />
&#160;&#160;<b>kUpdateSnapshotReference</b>
, <b>kUpdateSortOrder</b>
, <b>kUpdateStatistics</b>
<br />
}</td></tr>
<tr class="separator:a5bac3f32c6a0790ba222399fed5c1944 inherit pub_types_classiceberg_1_1PendingUpdate"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>API for table changes that produce snapshots. </p>
<p>This class contains common methods for all updates that create a new table <a class="el" href="structiceberg_1_1Snapshot.html" title="A snapshot of the data in a table at a point in time.">Snapshot</a>. It also provides the shared implementation for snapshot ID assignment, manifest list writing, retry-safe apply, and cleanup. </p>
</div><h2 class="groupheader">Member Function Documentation</h2>
<a id="a8d8205f070ab0c9cd86422a4b579a066" name="a8d8205f070ab0c9cd86422a4b579a066"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8d8205f070ab0c9cd86422a4b579a066">&#9670;&#160;</a></span>Apply() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="namespaceiceberg.html#a9d5594e371beb516b0120e07e69d3af6">Result</a>&lt; <a class="el" href="structiceberg_1_1SnapshotUpdate_1_1ApplyResult.html">ApplyResult</a> &gt; iceberg::SnapshotUpdate::Apply </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Apply the update's changes to create a new snapshot. </p>
<p>This method validates the changes, applies them to the current base metadata, and creates a new snapshot without committing it. Commit retries call <a class="el" href="classiceberg_1_1SnapshotUpdate.html#a8d8205f070ab0c9cd86422a4b579a066" title="Apply the update&#39;s changes to create a new snapshot.">Apply()</a> again with refreshed metadata so the same changes can be applied to the new latest snapshot.</p>
<dl class="section return"><dt>Returns</dt><dd>A result containing the new snapshot, or an error. </dd></dl>
</div>
</div>
<a id="a0d1e461184dd3aa553269ef736202ced" name="a0d1e461184dd3aa553269ef736202ced"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0d1e461184dd3aa553269ef736202ced">&#9670;&#160;</a></span>Apply() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual <a class="el" href="namespaceiceberg.html#a9d5594e371beb516b0120e07e69d3af6">Result</a>&lt; std::vector&lt; <a class="el" href="structiceberg_1_1ManifestFile.html">ManifestFile</a> &gt; &gt; iceberg::SnapshotUpdate::Apply </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="structiceberg_1_1TableMetadata.html">TableMetadata</a> &amp;&#160;</td>
<td class="paramname"><em>metadata_to_update</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::shared_ptr&lt; <a class="el" href="structiceberg_1_1Snapshot.html">Snapshot</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>snapshot</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span><span class="mlabel">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Apply the update's changes to the given metadata and snapshot. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">metadata_to_update</td><td>The base table metadata to apply changes to </td></tr>
<tr><td class="paramname">snapshot</td><td><a class="el" href="structiceberg_1_1Snapshot.html" title="A snapshot of the data in a table at a point in time.">Snapshot</a> to apply the changes to </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A vector of manifest files for the new snapshot </dd></dl>
<p>Implemented in <a class="el" href="classiceberg_1_1ReplacePartitions.html#a5a342a9b5b378585df4cdb6fbcc75535">iceberg::ReplacePartitions</a>, <a class="el" href="classiceberg_1_1FastAppend.html#a691e82a1c468881b3774a5e4abc12e58">iceberg::FastAppend</a>, and <a class="el" href="classiceberg_1_1MergingSnapshotUpdate.html#a8ab836f6fd8fcb7d09c176ff46e9fe05">iceberg::MergingSnapshotUpdate</a>.</p>
</div>
</div>
<a id="a8bf7d3ae4432a24f0d9a0887b5d2ed0b" name="a8bf7d3ae4432a24f0d9a0887b5d2ed0b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8bf7d3ae4432a24f0d9a0887b5d2ed0b">&#9670;&#160;</a></span>CleanUncommitted()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual Status iceberg::SnapshotUpdate::CleanUncommitted </td>
<td>(</td>
<td class="paramtype">const std::unordered_set&lt; std::string &gt; &amp;&#160;</td>
<td class="paramname"><em>committed</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span><span class="mlabel">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Clean up any uncommitted manifests that were created. </p>
<p>Manifests may not be committed if Apply is called multiple times because a commit conflict has occurred. Implementations may keep around manifests because the same changes will be made by both Apply calls. This method instructs the implementation to clean up those manifests and passes the paths of the manifests that were actually committed.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">committed</td><td>A set of manifest paths that were actually committed </td></tr>
</table>
</dd>
</dl>
<p>Implemented in <a class="el" href="classiceberg_1_1FastAppend.html#aadaf316bb3b9b585b7e28e91428e8af4">iceberg::FastAppend</a>, and <a class="el" href="classiceberg_1_1MergingSnapshotUpdate.html#ab12c6ab278eca6482c616bec1e3e06b6">iceberg::MergingSnapshotUpdate</a>.</p>
</div>
</div>
<a id="aeb89f2ceb3a0fb2abfba3faa6a32e5ac" name="aeb89f2ceb3a0fb2abfba3faa6a32e5ac"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aeb89f2ceb3a0fb2abfba3faa6a32e5ac">&#9670;&#160;</a></span>CleanupAfterCommit()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual bool iceberg::SnapshotUpdate::CleanupAfterCommit </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Check if cleanup should happen after commit. </p>
<dl class="section return"><dt>Returns</dt><dd><a class="el" href="classiceberg_1_1True.html" title="An Expression that is always true.">True</a> if cleanup should happen after commit </dd></dl>
<p>Reimplemented in <a class="el" href="classiceberg_1_1FastAppend.html#a2b64487db1d9c6a252787504dbb9cb87">iceberg::FastAppend</a>.</p>
</div>
</div>
<a id="af9a810bc1da767ff0c9a613267e6f6f1" name="af9a810bc1da767ff0c9a613267e6f6f1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af9a810bc1da767ff0c9a613267e6f6f1">&#9670;&#160;</a></span>Commit()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">Status iceberg::SnapshotUpdate::Commit </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">override</span><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Apply the pending changes and commit. </p>
<dl class="section return"><dt>Returns</dt><dd>An OK status if the commit was successful, or an error:<ul>
<li>ValidationFailed: if it cannot be applied to the current table metadata.</li>
<li>CommitFailed: if it cannot be committed due to conflicts.</li>
<li>CommitStateUnknown: unknown status, no cleanup should be done. </li>
</ul>
</dd></dl>
<p>Reimplemented from <a class="el" href="classiceberg_1_1PendingUpdate.html#afba99263e2feaaca88c7fae906e4f7e3">iceberg::PendingUpdate</a>.</p>
</div>
</div>
<a id="af9fc2b6a382fb3c9c9f8e30056d1f7de" name="af9fc2b6a382fb3c9c9f8e30056d1f7de"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af9fc2b6a382fb3c9c9f8e30056d1f7de">&#9670;&#160;</a></span>DeleteFile()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">Status iceberg::SnapshotUpdate::DeleteFile </td>
<td>(</td>
<td class="paramtype">const std::string &amp;&#160;</td>
<td class="paramname"><em>path</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Delete a file at the given path. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">path</td><td>The path of the file to delete </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A status indicating the result of the deletion </dd></dl>
</div>
</div>
<a id="af5a84c539ec3c559260b3c6b868943c7" name="af5a84c539ec3c559260b3c6b868943c7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af5a84c539ec3c559260b3c6b868943c7">&#9670;&#160;</a></span>DeleteWith()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">auto &amp; iceberg::SnapshotUpdate::DeleteWith </td>
<td>(</td>
<td class="paramtype">this auto &amp;&#160;</td>
<td class="paramname"><em>self</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">std::function&lt; Status(const std::string &amp;)&gt;&#160;</td>
<td class="paramname"><em>delete_func</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Set a callback to delete files instead of the table's default. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">delete_func</td><td>A function used to delete file locations. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>This update for method chaining. </dd></dl>
<dl class="section note"><dt>Note</dt><dd>Cannot be called more than once. </dd></dl>
</div>
</div>
<a id="ad942dda206e9c6454493a63eb48df0e0" name="ad942dda206e9c6454493a63eb48df0e0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad942dda206e9c6454493a63eb48df0e0">&#9670;&#160;</a></span>Finalize()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">Status iceberg::SnapshotUpdate::Finalize </td>
<td>(</td>
<td class="paramtype"><a class="el" href="namespaceiceberg.html#a9d5594e371beb516b0120e07e69d3af6">Result</a>&lt; const <a class="el" href="structiceberg_1_1TableMetadata.html">TableMetadata</a> * &gt;&#160;</td>
<td class="paramname"><em>commit_result</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">override</span><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Finalize the snapshot update, cleaning up any uncommitted files. </p>
<p>Reimplemented from <a class="el" href="classiceberg_1_1PendingUpdate.html#aba199b10d447c265c7a917568dfa729f">iceberg::PendingUpdate</a>.</p>
</div>
</div>
<a id="a97b2753654e1304914509f29dcf0a7ff" name="a97b2753654e1304914509f29dcf0a7ff"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a97b2753654e1304914509f29dcf0a7ff">&#9670;&#160;</a></span>IsRetryable()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool iceberg::SnapshotUpdate::IsRetryable </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">override</span><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Whether this update can be retried after a commit conflict. </p>
<p>Implements <a class="el" href="classiceberg_1_1PendingUpdate.html#aa2a0ff4c156fe5852d1d52bf5827db7e">iceberg::PendingUpdate</a>.</p>
</div>
</div>
<a id="ae194773e0ce37df3780121314322f440" name="ae194773e0ce37df3780121314322f440"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae194773e0ce37df3780121314322f440">&#9670;&#160;</a></span>kind()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">Kind iceberg::SnapshotUpdate::kind </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">override</span><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Return the kind of this pending update. </p>
<p>Implements <a class="el" href="classiceberg_1_1PendingUpdate.html#a33fba65ffa4a85fd7c5b9984cb892812">iceberg::PendingUpdate</a>.</p>
</div>
</div>
<a id="a7e5cb52a426032eebf3b602b5674c5e0" name="a7e5cb52a426032eebf3b602b5674c5e0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7e5cb52a426032eebf3b602b5674c5e0">&#9670;&#160;</a></span>operation()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual std::string iceberg::SnapshotUpdate::operation </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span><span class="mlabel">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>A string that describes the action that produced the new snapshot. </p>
<dl class="section return"><dt>Returns</dt><dd>A string operation name </dd></dl>
<p>Implemented in <a class="el" href="classiceberg_1_1DeleteFiles.html#af3e655504e861bcecaf0af74a781669e">iceberg::DeleteFiles</a>, <a class="el" href="classiceberg_1_1FastAppend.html#af48f453a28ecdbab15e2248fd087f6ef">iceberg::FastAppend</a>, <a class="el" href="classiceberg_1_1MergeAppend.html#aec72ac30c75a5aa0fe923468a87908f0">iceberg::MergeAppend</a>, <a class="el" href="classiceberg_1_1OverwriteFiles.html#a352d6eab9d2020ec3623f599b48a38ad">iceberg::OverwriteFiles</a>, <a class="el" href="classiceberg_1_1ReplacePartitions.html#a4586cc3dc5025ac030f70243f0672cd4">iceberg::ReplacePartitions</a>, <a class="el" href="classiceberg_1_1RewriteFiles.html#a4e2baca6094c2f62628f2772d1a02b50">iceberg::RewriteFiles</a>, and <a class="el" href="classiceberg_1_1RowDelta.html#a8b275ad459dc7973b71277fc0a32d5d8">iceberg::RowDelta</a>.</p>
</div>
</div>
<a id="afc2c4005cd4f087d2eb3108819de483d" name="afc2c4005cd4f087d2eb3108819de483d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afc2c4005cd4f087d2eb3108819de483d">&#9670;&#160;</a></span>ReportWith()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">auto &amp; iceberg::SnapshotUpdate::ReportWith </td>
<td>(</td>
<td class="paramtype">this auto &amp;&#160;</td>
<td class="paramname"><em>self</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">std::shared_ptr&lt; <a class="el" href="classiceberg_1_1MetricsReporter.html">MetricsReporter</a> &gt;&#160;</td>
<td class="paramname"><em>reporter</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Set the metrics reporter for this snapshot update. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">reporter</td><td>The metrics reporter to use. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><a class="el" href="classiceberg_1_1Reference.html" title="A reference represents a named field in an expression.">Reference</a> to this for method chaining. </dd></dl>
</div>
</div>
<a id="ab6d8924f99e5ecc2d54a050b7e986ec7" name="ab6d8924f99e5ecc2d54a050b7e986ec7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab6d8924f99e5ecc2d54a050b7e986ec7">&#9670;&#160;</a></span>ScanManifestsWith()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">auto &amp; iceberg::SnapshotUpdate::ScanManifestsWith </td>
<td>(</td>
<td class="paramtype">this auto &amp;&#160;</td>
<td class="paramname"><em>self</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classiceberg_1_1Executor.html">Executor</a> &amp;&#160;</td>
<td class="paramname"><em>executor</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Configure an executor for manifest planning work. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">executor</td><td><a class="el" href="classiceberg_1_1Executor.html" title="Schedules iceberg-cpp internal planning tasks.">Executor</a> to use while planning manifests. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><a class="el" href="classiceberg_1_1Reference.html" title="A reference represents a named field in an expression.">Reference</a> to this for method chaining. </dd></dl>
</div>
</div>
<a id="ae19b638ceb6b7e57e4096ec943db223b" name="ae19b638ceb6b7e57e4096ec943db223b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae19b638ceb6b7e57e4096ec943db223b">&#9670;&#160;</a></span>Set()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">auto &amp; iceberg::SnapshotUpdate::Set </td>
<td>(</td>
<td class="paramtype">this auto &amp;&#160;</td>
<td class="paramname"><em>self</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::string &amp;&#160;</td>
<td class="paramname"><em>property</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::string &amp;&#160;</td>
<td class="paramname"><em>value</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Set a summary property in the snapshot produced by this update. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">property</td><td>A String property name. </td></tr>
<tr><td class="paramname">value</td><td>A String property value. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>This update for method chaining. </dd></dl>
</div>
</div>
<a id="afef5bfd67c340f8dc2bc6096b7bb47ca" name="afef5bfd67c340f8dc2bc6096b7bb47ca"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afef5bfd67c340f8dc2bc6096b7bb47ca">&#9670;&#160;</a></span>SetSummaryProperty()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual void iceberg::SnapshotUpdate::SetSummaryProperty </td>
<td>(</td>
<td class="paramtype">const std::string &amp;&#160;</td>
<td class="paramname"><em>property</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::string &amp;&#160;</td>
<td class="paramname"><em>value</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Set a summary property. </p>
<p>Implementations may override this to retain custom properties across retry-safe summary rebuilds. </p>
<p>Reimplemented in <a class="el" href="classiceberg_1_1FastAppend.html#a23e48a08648d9a6ae3ab058cde72ddb4">iceberg::FastAppend</a>.</p>
</div>
</div>
<a id="a43f427fe952631fffdd3c19e0c5ef434" name="a43f427fe952631fffdd3c19e0c5ef434"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a43f427fe952631fffdd3c19e0c5ef434">&#9670;&#160;</a></span>StageOnly()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">auto &amp; iceberg::SnapshotUpdate::StageOnly </td>
<td>(</td>
<td class="paramtype">this auto &amp;&#160;</td>
<td class="paramname"><em>self</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Stage a snapshot in table metadata, but do not make it current. </p>
<p>The snapshot is assigned an ID and added to table metadata. The table's current snapshot ID is not updated.</p>
<dl class="section return"><dt>Returns</dt><dd>This update for method chaining. </dd></dl>
</div>
</div>
<a id="a193bc595ce86911870731a8eebf5950e" name="a193bc595ce86911870731a8eebf5950e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a193bc595ce86911870731a8eebf5950e">&#9670;&#160;</a></span>Summary()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual std::unordered_map&lt; std::string, std::string &gt; iceberg::SnapshotUpdate::Summary </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span><span class="mlabel">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Get the summary map for this operation. </p>
<dl class="section return"><dt>Returns</dt><dd>A map of summary properties </dd></dl>
<p>Implemented in <a class="el" href="classiceberg_1_1FastAppend.html#a3178b3edb1295fc08504fbd7df5f2b13">iceberg::FastAppend</a>, and <a class="el" href="classiceberg_1_1MergingSnapshotUpdate.html#a10f1d4df0ee98054df1ac7376addb88e">iceberg::MergingSnapshotUpdate</a>.</p>
</div>
</div>
<a id="a9a05380cb12c07b3b868df790ef0f829" name="a9a05380cb12c07b3b868df790ef0f829"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9a05380cb12c07b3b868df790ef0f829">&#9670;&#160;</a></span>ToBranch()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">auto &amp; iceberg::SnapshotUpdate::ToBranch </td>
<td>(</td>
<td class="paramtype">this auto &amp;&#160;</td>
<td class="paramname"><em>self</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::string &amp;&#160;</td>
<td class="paramname"><em>branch</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Perform operations on a particular branch. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">branch</td><td>The name of a <a class="el" href="structiceberg_1_1SnapshotRef.html" title="A reference to a snapshot, either a branch or a tag.">SnapshotRef</a> of type branch. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>This update for method chaining. </dd></dl>
</div>
</div>
<a id="aa2d22d7708df6b17bfa53e40abb32f86" name="aa2d22d7708df6b17bfa53e40abb32f86"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa2d22d7708df6b17bfa53e40abb32f86">&#9670;&#160;</a></span>Validate()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual Status iceberg::SnapshotUpdate::Validate </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="structiceberg_1_1TableMetadata.html">TableMetadata</a> &amp;&#160;</td>
<td class="paramname"><em>current_metadata</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::shared_ptr&lt; <a class="el" href="structiceberg_1_1Snapshot.html">Snapshot</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>snapshot</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Validate the current metadata. </p>
<p>Child operations can override this to add custom validation.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">current_metadata</td><td>Current table metadata to validate </td></tr>
<tr><td class="paramname">snapshot</td><td>Ending snapshot on the lineage which is being validated </td></tr>
</table>
</dd>
</dl>
<p>Reimplemented in <a class="el" href="classiceberg_1_1DeleteFiles.html#afbf1480baba5762714b135142658602e">iceberg::DeleteFiles</a>, <a class="el" href="classiceberg_1_1OverwriteFiles.html#a2e2c2c4d415bcf654d75dc6b8e2b76ef">iceberg::OverwriteFiles</a>, <a class="el" href="classiceberg_1_1ReplacePartitions.html#af0d3f462b02a9485e538617d9b5a2bd6">iceberg::ReplacePartitions</a>, <a class="el" href="classiceberg_1_1RewriteFiles.html#ab1063078fc7ff797bafb48fa1d3fc313">iceberg::RewriteFiles</a>, and <a class="el" href="classiceberg_1_1RowDelta.html#aa1ea76dd8e7c417de2d42f9c5878f005">iceberg::RowDelta</a>.</p>
</div>
</div>
<a id="ad839a5b6b8cd54ceb3d013ddadae9fc5" name="ad839a5b6b8cd54ceb3d013ddadae9fc5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad839a5b6b8cd54ceb3d013ddadae9fc5">&#9670;&#160;</a></span>WriteDataManifests()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="namespaceiceberg.html#a9d5594e371beb516b0120e07e69d3af6">Result</a>&lt; std::vector&lt; <a class="el" href="structiceberg_1_1ManifestFile.html">ManifestFile</a> &gt; &gt; iceberg::SnapshotUpdate::WriteDataManifests </td>
<td>(</td>
<td class="paramtype">std::span&lt; const std::shared_ptr&lt; <a class="el" href="structiceberg_1_1DataFile.html">DataFile</a> &gt; &gt;&#160;</td>
<td class="paramname"><em>files</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::shared_ptr&lt; <a class="el" href="classiceberg_1_1PartitionSpec.html">PartitionSpec</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>spec</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">std::optional&lt; int64_t &gt;&#160;</td>
<td class="paramname"><em>data_sequence_number</em> = <code>std::nullopt</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Write data manifests for the given data files. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">files</td><td>Data files to write </td></tr>
<tr><td class="paramname">spec</td><td>The partition spec to use </td></tr>
<tr><td class="paramname">data_sequence_number</td><td>Optional data sequence number for the files </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A vector of manifest files </dd></dl>
</div>
</div>
<a id="ad7521b2d10189e112d7c3197c0f6ae4e" name="ad7521b2d10189e112d7c3197c0f6ae4e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad7521b2d10189e112d7c3197c0f6ae4e">&#9670;&#160;</a></span>WriteManifestsWith()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">auto &amp; iceberg::SnapshotUpdate::WriteManifestsWith </td>
<td>(</td>
<td class="paramtype">this auto &amp;&#160;</td>
<td class="paramname"><em>self</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classiceberg_1_1Executor.html">Executor</a> &amp;&#160;</td>
<td class="paramname"><em>executor</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int32_t&#160;</td>
<td class="paramname"><em>parallelism</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Configure an executor and max writer count for writing new manifests. </p>
<p>If this method is not called, manifest writes remain serial. When configured, files may be split into independent rolling-writer groups.</p>
<dl class="section note"><dt>Note</dt><dd>Custom <a class="el" href="classiceberg_1_1FileIO.html" title="Pluggable module for reading, writing, and deleting files.">FileIO</a> implementations and registered writer factories used for manifest writes must support concurrent calls when an executor is configured. </dd></dl>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>iceberg/update/<a class="el" href="snapshot__update_8h_source.html">snapshot_update.h</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8
</small></address>
</body>
</html>