blob: e8838b10ee031699a9d6583b0a603dc83de15193 [file] [log] [blame]
<!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::UpdateSchema 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"><b>iceberg</b></li><li class="navelem"><a class="el" href="classiceberg_1_1UpdateSchema.html">UpdateSchema</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="#pub-static-methods">Static Public Member Functions</a> &#124;
<a href="classiceberg_1_1UpdateSchema-members.html">List of all members</a> </div>
<div class="headertitle"><div class="title">iceberg::UpdateSchema Class Reference</div></div>
</div><!--header-->
<div class="contents">
<p>API for schema evolution.
<a href="classiceberg_1_1UpdateSchema.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="update__schema_8h_source.html">update_schema.h</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for iceberg::UpdateSchema:</div>
<div class="dyncontent">
<div class="center">
<img src="classiceberg_1_1UpdateSchema.png" usemap="#iceberg::UpdateSchema_map" alt=""/>
<map id="iceberg::UpdateSchema_map" name="iceberg::UpdateSchema_map">
<area href="classiceberg_1_1PendingUpdate.html" title="Base class for all kinds of table metadata updates." alt="iceberg::PendingUpdate" shape="rect" coords="0,56,146,80"/>
<area href="classiceberg_1_1ErrorCollector.html" title="Base class for collecting errors in the builder pattern." alt="iceberg::ErrorCollector" shape="rect" coords="0,0,146,24"/>
</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_1UpdateSchema_1_1ApplyResult.html">ApplyResult</a></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_1UpdateSchema_1_1Move.html">Move</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Represents a column move operation within a struct (internal use only). <a href="structiceberg_1_1UpdateSchema_1_1Move.html#details">More...</a><br /></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:a9250e68bd57954de69b2c55f8ecfed94" id="r_a9250e68bd57954de69b2c55f8ecfed94"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classiceberg_1_1UpdateSchema.html">UpdateSchema</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classiceberg_1_1UpdateSchema.html#a9250e68bd57954de69b2c55f8ecfed94">AllowIncompatibleChanges</a> ()</td></tr>
<tr class="memdesc:a9250e68bd57954de69b2c55f8ecfed94"><td class="mdescLeft">&#160;</td><td class="mdescRight">Allow incompatible changes to the schema. <br /></td></tr>
<tr class="separator:a9250e68bd57954de69b2c55f8ecfed94"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9c55d44edf70f5a3d23145f259f54b68" id="r_a9c55d44edf70f5a3d23145f259f54b68"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classiceberg_1_1UpdateSchema.html">UpdateSchema</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classiceberg_1_1UpdateSchema.html#a9c55d44edf70f5a3d23145f259f54b68">AddColumn</a> (std::string_view name, std::shared_ptr&lt; <a class="el" href="classiceberg_1_1Type.html">Type</a> &gt; type, std::string_view doc=&quot;&quot;)</td></tr>
<tr class="memdesc:a9c55d44edf70f5a3d23145f259f54b68"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add a new optional top-level column with documentation. <br /></td></tr>
<tr class="separator:a9c55d44edf70f5a3d23145f259f54b68"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a85c807861fb8cadcc7170cfec920d73f" id="r_a85c807861fb8cadcc7170cfec920d73f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classiceberg_1_1UpdateSchema.html">UpdateSchema</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classiceberg_1_1UpdateSchema.html#a85c807861fb8cadcc7170cfec920d73f">AddColumn</a> (std::optional&lt; std::string_view &gt; parent, std::string_view name, std::shared_ptr&lt; <a class="el" href="classiceberg_1_1Type.html">Type</a> &gt; type, std::string_view doc=&quot;&quot;)</td></tr>
<tr class="memdesc:a85c807861fb8cadcc7170cfec920d73f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add a new optional column to a nested struct with documentation. <br /></td></tr>
<tr class="separator:a85c807861fb8cadcc7170cfec920d73f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0b11cb508092fc891b921a0e2e1ca35a" id="r_a0b11cb508092fc891b921a0e2e1ca35a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classiceberg_1_1UpdateSchema.html">UpdateSchema</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classiceberg_1_1UpdateSchema.html#a0b11cb508092fc891b921a0e2e1ca35a">AddRequiredColumn</a> (std::string_view name, std::shared_ptr&lt; <a class="el" href="classiceberg_1_1Type.html">Type</a> &gt; type, std::string_view doc=&quot;&quot;)</td></tr>
<tr class="memdesc:a0b11cb508092fc891b921a0e2e1ca35a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add a new required top-level column with documentation. <br /></td></tr>
<tr class="separator:a0b11cb508092fc891b921a0e2e1ca35a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9ff16a8c4420b650d6f6a5765bb0fc2d" id="r_a9ff16a8c4420b650d6f6a5765bb0fc2d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classiceberg_1_1UpdateSchema.html">UpdateSchema</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classiceberg_1_1UpdateSchema.html#a9ff16a8c4420b650d6f6a5765bb0fc2d">AddRequiredColumn</a> (std::optional&lt; std::string_view &gt; parent, std::string_view name, std::shared_ptr&lt; <a class="el" href="classiceberg_1_1Type.html">Type</a> &gt; type, std::string_view doc=&quot;&quot;)</td></tr>
<tr class="memdesc:a9ff16a8c4420b650d6f6a5765bb0fc2d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add a new required column to a nested struct with documentation. <br /></td></tr>
<tr class="separator:a9ff16a8c4420b650d6f6a5765bb0fc2d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af82505dc17e3988a19ee107432fb1f7d" id="r_af82505dc17e3988a19ee107432fb1f7d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classiceberg_1_1UpdateSchema.html">UpdateSchema</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classiceberg_1_1UpdateSchema.html#af82505dc17e3988a19ee107432fb1f7d">RenameColumn</a> (std::string_view name, std::string_view new_name)</td></tr>
<tr class="memdesc:af82505dc17e3988a19ee107432fb1f7d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Rename a column in the schema. <br /></td></tr>
<tr class="separator:af82505dc17e3988a19ee107432fb1f7d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa6ac92fec0adb669df589f27e23ab484" id="r_aa6ac92fec0adb669df589f27e23ab484"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classiceberg_1_1UpdateSchema.html">UpdateSchema</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classiceberg_1_1UpdateSchema.html#aa6ac92fec0adb669df589f27e23ab484">UpdateColumn</a> (std::string_view name, std::shared_ptr&lt; <a class="el" href="classiceberg_1_1PrimitiveType.html">PrimitiveType</a> &gt; new_type)</td></tr>
<tr class="memdesc:aa6ac92fec0adb669df589f27e23ab484"><td class="mdescLeft">&#160;</td><td class="mdescRight">Update a column in the schema to a new primitive type. <br /></td></tr>
<tr class="separator:aa6ac92fec0adb669df589f27e23ab484"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afd90953253b97c4cb3b75c2fb196bf3c" id="r_afd90953253b97c4cb3b75c2fb196bf3c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classiceberg_1_1UpdateSchema.html">UpdateSchema</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classiceberg_1_1UpdateSchema.html#afd90953253b97c4cb3b75c2fb196bf3c">UpdateColumnDoc</a> (std::string_view name, std::string_view new_doc)</td></tr>
<tr class="memdesc:afd90953253b97c4cb3b75c2fb196bf3c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Update the documentation string for a column. <br /></td></tr>
<tr class="separator:afd90953253b97c4cb3b75c2fb196bf3c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a75ab00748fed2e7973fb62dca4da28b6" id="r_a75ab00748fed2e7973fb62dca4da28b6"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classiceberg_1_1UpdateSchema.html">UpdateSchema</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classiceberg_1_1UpdateSchema.html#a75ab00748fed2e7973fb62dca4da28b6">MakeColumnOptional</a> (std::string_view name)</td></tr>
<tr class="memdesc:a75ab00748fed2e7973fb62dca4da28b6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Update a column to be optional. <br /></td></tr>
<tr class="separator:a75ab00748fed2e7973fb62dca4da28b6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3cd6ecabafbb83a5efcbca945bc9f93b" id="r_a3cd6ecabafbb83a5efcbca945bc9f93b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classiceberg_1_1UpdateSchema.html">UpdateSchema</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classiceberg_1_1UpdateSchema.html#a3cd6ecabafbb83a5efcbca945bc9f93b">RequireColumn</a> (std::string_view name)</td></tr>
<tr class="memdesc:a3cd6ecabafbb83a5efcbca945bc9f93b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Update a column to be required. <br /></td></tr>
<tr class="separator:a3cd6ecabafbb83a5efcbca945bc9f93b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4946943389c54cadb4c6b10a330edd9f" id="r_a4946943389c54cadb4c6b10a330edd9f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classiceberg_1_1UpdateSchema.html">UpdateSchema</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classiceberg_1_1UpdateSchema.html#a4946943389c54cadb4c6b10a330edd9f">DeleteColumn</a> (std::string_view name)</td></tr>
<tr class="memdesc:a4946943389c54cadb4c6b10a330edd9f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Delete a column in the schema. <br /></td></tr>
<tr class="separator:a4946943389c54cadb4c6b10a330edd9f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a700c2b2242f77b6b39f59d700f2bd913" id="r_a700c2b2242f77b6b39f59d700f2bd913"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classiceberg_1_1UpdateSchema.html">UpdateSchema</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classiceberg_1_1UpdateSchema.html#a700c2b2242f77b6b39f59d700f2bd913">MoveFirst</a> (std::string_view name)</td></tr>
<tr class="memdesc:a700c2b2242f77b6b39f59d700f2bd913"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="structiceberg_1_1UpdateSchema_1_1Move.html" title="Represents a column move operation within a struct (internal use only).">Move</a> a column from its current position to the start of the schema or its parent struct. <br /></td></tr>
<tr class="separator:a700c2b2242f77b6b39f59d700f2bd913"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af6810e71482845a37dff130b178bbdd5" id="r_af6810e71482845a37dff130b178bbdd5"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classiceberg_1_1UpdateSchema.html">UpdateSchema</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classiceberg_1_1UpdateSchema.html#af6810e71482845a37dff130b178bbdd5">MoveBefore</a> (std::string_view name, std::string_view before_name)</td></tr>
<tr class="memdesc:af6810e71482845a37dff130b178bbdd5"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="structiceberg_1_1UpdateSchema_1_1Move.html" title="Represents a column move operation within a struct (internal use only).">Move</a> a column from its current position to directly before a reference column. <br /></td></tr>
<tr class="separator:af6810e71482845a37dff130b178bbdd5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab5dc7eac6fb6fdf0dfa5e1f85a6effd2" id="r_ab5dc7eac6fb6fdf0dfa5e1f85a6effd2"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classiceberg_1_1UpdateSchema.html">UpdateSchema</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classiceberg_1_1UpdateSchema.html#ab5dc7eac6fb6fdf0dfa5e1f85a6effd2">MoveAfter</a> (std::string_view name, std::string_view after_name)</td></tr>
<tr class="memdesc:ab5dc7eac6fb6fdf0dfa5e1f85a6effd2"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="structiceberg_1_1UpdateSchema_1_1Move.html" title="Represents a column move operation within a struct (internal use only).">Move</a> a column from its current position to directly after a reference column. <br /></td></tr>
<tr class="separator:ab5dc7eac6fb6fdf0dfa5e1f85a6effd2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af64c10fbbad83b9080e49808293087d5" id="r_af64c10fbbad83b9080e49808293087d5"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classiceberg_1_1UpdateSchema.html">UpdateSchema</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classiceberg_1_1UpdateSchema.html#af64c10fbbad83b9080e49808293087d5">UnionByNameWith</a> (std::shared_ptr&lt; <a class="el" href="classiceberg_1_1Schema.html">Schema</a> &gt; new_schema)</td></tr>
<tr class="memdesc:af64c10fbbad83b9080e49808293087d5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Applies all field additions and updates from the provided new schema to the existing schema to create a union schema. <br /></td></tr>
<tr class="separator:af64c10fbbad83b9080e49808293087d5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a61d6b2e64d7b7d6f36cc9e39f2656345" id="r_a61d6b2e64d7b7d6f36cc9e39f2656345"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classiceberg_1_1UpdateSchema.html">UpdateSchema</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classiceberg_1_1UpdateSchema.html#a61d6b2e64d7b7d6f36cc9e39f2656345">SetIdentifierFields</a> (const std::span&lt; std::string_view &gt; &amp;names)</td></tr>
<tr class="memdesc:a61d6b2e64d7b7d6f36cc9e39f2656345"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the identifier fields given a set of field names. <br /></td></tr>
<tr class="separator:a61d6b2e64d7b7d6f36cc9e39f2656345"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7af51eaec28ec814bb444b29c85391e0" id="r_a7af51eaec28ec814bb444b29c85391e0"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classiceberg_1_1UpdateSchema.html">UpdateSchema</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classiceberg_1_1UpdateSchema.html#a7af51eaec28ec814bb444b29c85391e0">CaseSensitive</a> (bool case_sensitive)</td></tr>
<tr class="memdesc:a7af51eaec28ec814bb444b29c85391e0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Determines if the case of schema needs to be considered when comparing column names. <br /></td></tr>
<tr class="separator:a7af51eaec28ec814bb444b29c85391e0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6e69f3190d5c89c1c76ca357f39c7af5" id="r_a6e69f3190d5c89c1c76ca357f39c7af5"><td class="memItemLeft" align="right" valign="top">Kind&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classiceberg_1_1UpdateSchema.html#a6e69f3190d5c89c1c76ca357f39c7af5">kind</a> () const final</td></tr>
<tr class="memdesc:a6e69f3190d5c89c1c76ca357f39c7af5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the kind of this pending update. <br /></td></tr>
<tr class="separator:a6e69f3190d5c89c1c76ca357f39c7af5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af24c15913d700078e76000bae05819ae" id="r_af24c15913d700078e76000bae05819ae"><td class="memItemLeft" align="right" valign="top">Result&lt; <a class="el" href="structiceberg_1_1UpdateSchema_1_1ApplyResult.html">ApplyResult</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classiceberg_1_1UpdateSchema.html#af24c15913d700078e76000bae05819ae">Apply</a> ()</td></tr>
<tr class="memdesc:af24c15913d700078e76000bae05819ae"><td class="mdescLeft">&#160;</td><td class="mdescRight">Apply the pending changes to the original schema and return the result. <br /></td></tr>
<tr class="separator:af24c15913d700078e76000bae05819ae"><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:a4a5df6d83b7a4a3c4dac19a77945be71 inherit pub_methods_classiceberg_1_1PendingUpdate" id="r_a4a5df6d83b7a4a3c4dac19a77945be71"><td class="memItemLeft" align="right" valign="top">virtual Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classiceberg_1_1PendingUpdate.html#a4a5df6d83b7a4a3c4dac19a77945be71">Commit</a> ()</td></tr>
<tr class="memdesc:a4a5df6d83b7a4a3c4dac19a77945be71 inherit pub_methods_classiceberg_1_1PendingUpdate"><td class="mdescLeft">&#160;</td><td class="mdescRight">Apply the pending changes and commit. <br /></td></tr>
<tr class="separator:a4a5df6d83b7a4a3c4dac19a77945be71 inherit pub_methods_classiceberg_1_1PendingUpdate"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a22441dbf2867204cb175300075e50db9 inherit pub_methods_classiceberg_1_1PendingUpdate" id="r_a22441dbf2867204cb175300075e50db9"><td class="memItemLeft" align="right" valign="top">virtual Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classiceberg_1_1PendingUpdate.html#a22441dbf2867204cb175300075e50db9">Finalize</a> (std::optional&lt; <a class="el" href="structiceberg_1_1Error.html">Error</a> &gt; commit_error)</td></tr>
<tr class="memdesc:a22441dbf2867204cb175300075e50db9 inherit pub_methods_classiceberg_1_1PendingUpdate"><td class="mdescLeft">&#160;</td><td class="mdescRight">Finalize the pending update. <br /></td></tr>
<tr class="separator:a22441dbf2867204cb175300075e50db9 inherit pub_methods_classiceberg_1_1PendingUpdate"><td class="memSeparator" colspan="2">&#160;</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, ErrorKind 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="pub-static-methods" name="pub-static-methods"></a>
Static Public Member Functions</h2></td></tr>
<tr class="memitem:a59cac1ea1af6f388cf517ccb2873ea30" id="r_a59cac1ea1af6f388cf517ccb2873ea30"><td class="memItemLeft" align="right" valign="top"><a id="a59cac1ea1af6f388cf517ccb2873ea30" name="a59cac1ea1af6f388cf517ccb2873ea30"></a>
static Result&lt; std::shared_ptr&lt; <a class="el" href="classiceberg_1_1UpdateSchema.html">UpdateSchema</a> &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>Make</b> (std::shared_ptr&lt; <a class="el" href="classiceberg_1_1Transaction.html">Transaction</a> &gt; transaction)</td></tr>
<tr class="separator:a59cac1ea1af6f388cf517ccb2873ea30"><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>
<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:ab758ff7780442894f3fb0a80d0db064f inherit pro_methods_classiceberg_1_1PendingUpdate" id="r_ab758ff7780442894f3fb0a80d0db064f"><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_1Transaction.html">Transaction</a> &gt; transaction)</td></tr>
<tr class="separator:ab758ff7780442894f3fb0a80d0db064f 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>
<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:ac57921ff326abc60b8d9558aa7046d10 inherit pro_attribs_classiceberg_1_1PendingUpdate" id="r_ac57921ff326abc60b8d9558aa7046d10"><td class="memItemLeft" align="right" valign="top">
std::shared_ptr&lt; <a class="el" href="classiceberg_1_1Transaction.html">Transaction</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>transaction_</b></td></tr>
<tr class="separator:ac57921ff326abc60b8d9558aa7046d10 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>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>API for schema evolution. </p>
<p>When committing, these changes will be applied to the current table metadata. Commit conflicts will not be resolved and will result in a CommitFailed error.</p>
<p>TODO(Guotao Yu): Add support for V3 default values when adding columns. Currently, all added columns use null as the default value, but Iceberg V3 supports custom default values for new columns. </p>
</div><h2 class="groupheader">Member Function Documentation</h2>
<a id="a85c807861fb8cadcc7170cfec920d73f" name="a85c807861fb8cadcc7170cfec920d73f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a85c807861fb8cadcc7170cfec920d73f">&#9670;&#160;</a></span>AddColumn() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classiceberg_1_1UpdateSchema.html">UpdateSchema</a> &amp; iceberg::UpdateSchema::AddColumn </td>
<td>(</td>
<td class="paramtype">std::optional&lt; std::string_view &gt;&#160;</td>
<td class="paramname"><em>parent</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">std::string_view&#160;</td>
<td class="paramname"><em>name</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">std::shared_ptr&lt; <a class="el" href="classiceberg_1_1Type.html">Type</a> &gt;&#160;</td>
<td class="paramname"><em>type</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">std::string_view&#160;</td>
<td class="paramname"><em>doc</em> = <code>&quot;&quot;</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Add a new optional column to a nested struct with documentation. </p>
<p>The parent name is used to find the parent using <a class="el" href="classiceberg_1_1Schema.html#a4db920889e6f3fb26a17361e9e2c382c" title="Recursively find the SchemaField by field name.">Schema::FindFieldByName()</a>. If the parent name is null or empty, the new column will be added to the root as a top-level column. If parent identifies a struct, a new column is added to that struct. If it identifies a list, the column is added to the list element struct, and if it identifies a map, the new column is added to the map's value struct.</p>
<p>The given name is used to name the new column and names containing "." are not handled differently.</p>
<p>If type is a nested type, its field IDs are reassigned when added to the existing schema.</p>
<p>The added column will be optional with a null default value.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">parent</td><td>Name of the parent struct to which the column will be added. </td></tr>
<tr><td class="paramname">name</td><td>Name for the new column. </td></tr>
<tr><td class="paramname">type</td><td><a class="el" href="classiceberg_1_1Type.html" title="Interface for a data type for a field.">Type</a> for the new column. </td></tr>
<tr><td class="paramname">doc</td><td>Documentation string for the new column. </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>
<dl class="section note"><dt>Note</dt><dd>InvalidArgument will be reported if parent doesn't identify a struct. </dd></dl>
</div>
</div>
<a id="a9c55d44edf70f5a3d23145f259f54b68" name="a9c55d44edf70f5a3d23145f259f54b68"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9c55d44edf70f5a3d23145f259f54b68">&#9670;&#160;</a></span>AddColumn() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classiceberg_1_1UpdateSchema.html">UpdateSchema</a> &amp; iceberg::UpdateSchema::AddColumn </td>
<td>(</td>
<td class="paramtype">std::string_view&#160;</td>
<td class="paramname"><em>name</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">std::shared_ptr&lt; <a class="el" href="classiceberg_1_1Type.html">Type</a> &gt;&#160;</td>
<td class="paramname"><em>type</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">std::string_view&#160;</td>
<td class="paramname"><em>doc</em> = <code>&quot;&quot;</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Add a new optional top-level column with documentation. </p>
<p>Because "." may be interpreted as a column path separator or may be used in field names, it is not allowed in names passed to this method. To add to nested structures or to add fields with names that contain ".", use AddColumn(parent,
name, type, doc).</p>
<p>If type is a nested type, its field IDs are reassigned when added to the existing schema.</p>
<p>The added column will be optional with a null default value.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">name</td><td>Name for the new column. </td></tr>
<tr><td class="paramname">type</td><td><a class="el" href="classiceberg_1_1Type.html" title="Interface for a data type for a field.">Type</a> for the new column. </td></tr>
<tr><td class="paramname">doc</td><td>Documentation string for the new column. </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>
<dl class="section note"><dt>Note</dt><dd>InvalidArgument will be reported if name contains ".". </dd></dl>
</div>
</div>
<a id="a9ff16a8c4420b650d6f6a5765bb0fc2d" name="a9ff16a8c4420b650d6f6a5765bb0fc2d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9ff16a8c4420b650d6f6a5765bb0fc2d">&#9670;&#160;</a></span>AddRequiredColumn() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classiceberg_1_1UpdateSchema.html">UpdateSchema</a> &amp; iceberg::UpdateSchema::AddRequiredColumn </td>
<td>(</td>
<td class="paramtype">std::optional&lt; std::string_view &gt;&#160;</td>
<td class="paramname"><em>parent</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">std::string_view&#160;</td>
<td class="paramname"><em>name</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">std::shared_ptr&lt; <a class="el" href="classiceberg_1_1Type.html">Type</a> &gt;&#160;</td>
<td class="paramname"><em>type</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">std::string_view&#160;</td>
<td class="paramname"><em>doc</em> = <code>&quot;&quot;</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Add a new required column to a nested struct with documentation. </p>
<p>Adding a required column without a default is an incompatible change that can break reading older data. To suppress exceptions thrown when an incompatible change is detected, call <a class="el" href="classiceberg_1_1UpdateSchema.html#a9250e68bd57954de69b2c55f8ecfed94" title="Allow incompatible changes to the schema.">AllowIncompatibleChanges()</a>.</p>
<p>The parent name is used to find the parent using <a class="el" href="classiceberg_1_1Schema.html#a4db920889e6f3fb26a17361e9e2c382c" title="Recursively find the SchemaField by field name.">Schema::FindFieldByName()</a>. If the parent name is null or empty, the new column will be added to the root as a top-level column. If parent identifies a struct, a new column is added to that struct. If it identifies a list, the column is added to the list element struct, and if it identifies a map, the new column is added to the map's value struct.</p>
<p>The given name is used to name the new column and names containing "." are not handled differently.</p>
<p>If type is a nested type, its field IDs are reassigned when added to the existing schema.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">parent</td><td>Name of the parent struct to which the column will be added. </td></tr>
<tr><td class="paramname">name</td><td>Name for the new column. </td></tr>
<tr><td class="paramname">type</td><td><a class="el" href="classiceberg_1_1Type.html" title="Interface for a data type for a field.">Type</a> for the new column. </td></tr>
<tr><td class="paramname">doc</td><td>Documentation string for the new column. </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>
<dl class="section note"><dt>Note</dt><dd>InvalidArgument will be reported if parent doesn't identify a struct. </dd></dl>
</div>
</div>
<a id="a0b11cb508092fc891b921a0e2e1ca35a" name="a0b11cb508092fc891b921a0e2e1ca35a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0b11cb508092fc891b921a0e2e1ca35a">&#9670;&#160;</a></span>AddRequiredColumn() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classiceberg_1_1UpdateSchema.html">UpdateSchema</a> &amp; iceberg::UpdateSchema::AddRequiredColumn </td>
<td>(</td>
<td class="paramtype">std::string_view&#160;</td>
<td class="paramname"><em>name</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">std::shared_ptr&lt; <a class="el" href="classiceberg_1_1Type.html">Type</a> &gt;&#160;</td>
<td class="paramname"><em>type</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">std::string_view&#160;</td>
<td class="paramname"><em>doc</em> = <code>&quot;&quot;</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Add a new required top-level column with documentation. </p>
<p>Adding a required column without a default is an incompatible change that can break reading older data. To suppress exceptions thrown when an incompatible change is detected, call <a class="el" href="classiceberg_1_1UpdateSchema.html#a9250e68bd57954de69b2c55f8ecfed94" title="Allow incompatible changes to the schema.">AllowIncompatibleChanges()</a>.</p>
<p>Because "." may be interpreted as a column path separator or may be used in field names, it is not allowed in names passed to this method. To add to nested structures or to add fields with names that contain ".", use AddRequiredColumn(parent, name, type, doc).</p>
<p>If type is a nested type, its field IDs are reassigned when added to the existing schema.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">name</td><td>Name for the new column. </td></tr>
<tr><td class="paramname">type</td><td><a class="el" href="classiceberg_1_1Type.html" title="Interface for a data type for a field.">Type</a> for the new column. </td></tr>
<tr><td class="paramname">doc</td><td>Documentation string for the new column. </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>
<dl class="section note"><dt>Note</dt><dd>InvalidArgument will be reported if name contains ".". </dd></dl>
</div>
</div>
<a id="a9250e68bd57954de69b2c55f8ecfed94" name="a9250e68bd57954de69b2c55f8ecfed94"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9250e68bd57954de69b2c55f8ecfed94">&#9670;&#160;</a></span>AllowIncompatibleChanges()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classiceberg_1_1UpdateSchema.html">UpdateSchema</a> &amp; iceberg::UpdateSchema::AllowIncompatibleChanges </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Allow incompatible changes to the schema. </p>
<p>Incompatible changes can cause failures when attempting to read older data files. For example, adding a required column and attempting to read data files without that column will cause a failure. However, if there are no data files that are not compatible with the change, it can be allowed.</p>
<p>This option allows incompatible changes to be made to a schema. This should be used when the caller has validated that the change will not break. For example, if a column is added as optional but always populated and data older than the column addition has been deleted from the table, this can be used with <a class="el" href="classiceberg_1_1UpdateSchema.html#a3cd6ecabafbb83a5efcbca945bc9f93b" title="Update a column to be required.">RequireColumn()</a> to mark the column required.</p>
<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="af24c15913d700078e76000bae05819ae" name="af24c15913d700078e76000bae05819ae"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af24c15913d700078e76000bae05819ae">&#9670;&#160;</a></span>Apply()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">Result&lt; <a class="el" href="structiceberg_1_1UpdateSchema_1_1ApplyResult.html">UpdateSchema::ApplyResult</a> &gt; iceberg::UpdateSchema::Apply </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Apply the pending changes to the original schema and return the result. </p>
<p>This does not result in a permanent update.</p>
<dl class="section return"><dt>Returns</dt><dd>The result <a class="el" href="classiceberg_1_1Schema.html" title="A schema for a Table.">Schema</a> and last column id when all pending updates are applied. </dd></dl>
</div>
</div>
<a id="a7af51eaec28ec814bb444b29c85391e0" name="a7af51eaec28ec814bb444b29c85391e0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7af51eaec28ec814bb444b29c85391e0">&#9670;&#160;</a></span>CaseSensitive()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classiceberg_1_1UpdateSchema.html">UpdateSchema</a> &amp; iceberg::UpdateSchema::CaseSensitive </td>
<td>(</td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>case_sensitive</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Determines if the case of schema needs to be considered when comparing column names. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">case_sensitive</td><td>When false case is not considered in column name comparisons. </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="a4946943389c54cadb4c6b10a330edd9f" name="a4946943389c54cadb4c6b10a330edd9f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4946943389c54cadb4c6b10a330edd9f">&#9670;&#160;</a></span>DeleteColumn()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classiceberg_1_1UpdateSchema.html">UpdateSchema</a> &amp; iceberg::UpdateSchema::DeleteColumn </td>
<td>(</td>
<td class="paramtype">std::string_view&#160;</td>
<td class="paramname"><em>name</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Delete a column in the schema. </p>
<p>The name is used to find the column to delete using <a class="el" href="classiceberg_1_1Schema.html#a4db920889e6f3fb26a17361e9e2c382c" title="Recursively find the SchemaField by field name.">Schema::FindFieldByName()</a>.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">name</td><td>Name of the column to delete. </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>
<dl class="section note"><dt>Note</dt><dd>InvalidArgument will be reported if name doesn't identify a column in the schema or if this change conflicts with other additions, renames, or updates. </dd></dl>
</div>
</div>
<a id="a6e69f3190d5c89c1c76ca357f39c7af5" name="a6e69f3190d5c89c1c76ca357f39c7af5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6e69f3190d5c89c1c76ca357f39c7af5">&#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::UpdateSchema::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">final</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="a75ab00748fed2e7973fb62dca4da28b6" name="a75ab00748fed2e7973fb62dca4da28b6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a75ab00748fed2e7973fb62dca4da28b6">&#9670;&#160;</a></span>MakeColumnOptional()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classiceberg_1_1UpdateSchema.html">UpdateSchema</a> &amp; iceberg::UpdateSchema::MakeColumnOptional </td>
<td>(</td>
<td class="paramtype">std::string_view&#160;</td>
<td class="paramname"><em>name</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Update a column to be optional. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">name</td><td>Name of the column to mark optional. </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="ab5dc7eac6fb6fdf0dfa5e1f85a6effd2" name="ab5dc7eac6fb6fdf0dfa5e1f85a6effd2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab5dc7eac6fb6fdf0dfa5e1f85a6effd2">&#9670;&#160;</a></span>MoveAfter()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classiceberg_1_1UpdateSchema.html">UpdateSchema</a> &amp; iceberg::UpdateSchema::MoveAfter </td>
<td>(</td>
<td class="paramtype">std::string_view&#160;</td>
<td class="paramname"><em>name</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">std::string_view&#160;</td>
<td class="paramname"><em>after_name</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p><a class="el" href="structiceberg_1_1UpdateSchema_1_1Move.html" title="Represents a column move operation within a struct (internal use only).">Move</a> a column from its current position to directly after a reference column. </p>
<p>The name is used to find the column to move using <a class="el" href="classiceberg_1_1Schema.html#a4db920889e6f3fb26a17361e9e2c382c" title="Recursively find the SchemaField by field name.">Schema::FindFieldByName()</a>. If the name identifies a nested column, it can only be moved within the nested struct that contains it.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">name</td><td>Name of the column to move. </td></tr>
<tr><td class="paramname">after_name</td><td>Name of the reference column. </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>
<dl class="section note"><dt>Note</dt><dd>InvalidArgument will be reported if name doesn't identify a column in the schema or if this change conflicts with other changes. </dd></dl>
</div>
</div>
<a id="af6810e71482845a37dff130b178bbdd5" name="af6810e71482845a37dff130b178bbdd5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af6810e71482845a37dff130b178bbdd5">&#9670;&#160;</a></span>MoveBefore()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classiceberg_1_1UpdateSchema.html">UpdateSchema</a> &amp; iceberg::UpdateSchema::MoveBefore </td>
<td>(</td>
<td class="paramtype">std::string_view&#160;</td>
<td class="paramname"><em>name</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">std::string_view&#160;</td>
<td class="paramname"><em>before_name</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p><a class="el" href="structiceberg_1_1UpdateSchema_1_1Move.html" title="Represents a column move operation within a struct (internal use only).">Move</a> a column from its current position to directly before a reference column. </p>
<p>The name is used to find the column to move using <a class="el" href="classiceberg_1_1Schema.html#a4db920889e6f3fb26a17361e9e2c382c" title="Recursively find the SchemaField by field name.">Schema::FindFieldByName()</a>. If the name identifies a nested column, it can only be moved within the nested struct that contains it.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">name</td><td>Name of the column to move. </td></tr>
<tr><td class="paramname">before_name</td><td>Name of the reference column. </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>
<dl class="section note"><dt>Note</dt><dd>InvalidArgument will be reported if name doesn't identify a column in the schema or if this change conflicts with other changes. </dd></dl>
</div>
</div>
<a id="a700c2b2242f77b6b39f59d700f2bd913" name="a700c2b2242f77b6b39f59d700f2bd913"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a700c2b2242f77b6b39f59d700f2bd913">&#9670;&#160;</a></span>MoveFirst()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classiceberg_1_1UpdateSchema.html">UpdateSchema</a> &amp; iceberg::UpdateSchema::MoveFirst </td>
<td>(</td>
<td class="paramtype">std::string_view&#160;</td>
<td class="paramname"><em>name</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p><a class="el" href="structiceberg_1_1UpdateSchema_1_1Move.html" title="Represents a column move operation within a struct (internal use only).">Move</a> a column from its current position to the start of the schema or its parent struct. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">name</td><td>Name of the column to move. </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>
<dl class="section note"><dt>Note</dt><dd>InvalidArgument will be reported if name doesn't identify a column in the schema or if this change conflicts with other changes. </dd></dl>
</div>
</div>
<a id="af82505dc17e3988a19ee107432fb1f7d" name="af82505dc17e3988a19ee107432fb1f7d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af82505dc17e3988a19ee107432fb1f7d">&#9670;&#160;</a></span>RenameColumn()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classiceberg_1_1UpdateSchema.html">UpdateSchema</a> &amp; iceberg::UpdateSchema::RenameColumn </td>
<td>(</td>
<td class="paramtype">std::string_view&#160;</td>
<td class="paramname"><em>name</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">std::string_view&#160;</td>
<td class="paramname"><em>new_name</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Rename a column in the schema. </p>
<p>The name is used to find the column to rename using <a class="el" href="classiceberg_1_1Schema.html#a4db920889e6f3fb26a17361e9e2c382c" title="Recursively find the SchemaField by field name.">Schema::FindFieldByName()</a>.</p>
<p>The new name may contain "." and such names are not parsed or handled differently.</p>
<p>Columns may be updated and renamed in the same schema update.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">name</td><td>Name of the column to rename. </td></tr>
<tr><td class="paramname">new_name</td><td>Replacement name for the column. </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>
<dl class="section note"><dt>Note</dt><dd>InvalidArgument will be reported if name doesn't identify a column in the schema or if this change conflicts with other additions, renames, or updates. </dd></dl>
</div>
</div>
<a id="a3cd6ecabafbb83a5efcbca945bc9f93b" name="a3cd6ecabafbb83a5efcbca945bc9f93b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3cd6ecabafbb83a5efcbca945bc9f93b">&#9670;&#160;</a></span>RequireColumn()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classiceberg_1_1UpdateSchema.html">UpdateSchema</a> &amp; iceberg::UpdateSchema::RequireColumn </td>
<td>(</td>
<td class="paramtype">std::string_view&#160;</td>
<td class="paramname"><em>name</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Update a column to be required. </p>
<p>This is an incompatible change that can break reading older data. This method will result in an exception unless <a class="el" href="classiceberg_1_1UpdateSchema.html#a9250e68bd57954de69b2c55f8ecfed94" title="Allow incompatible changes to the schema.">AllowIncompatibleChanges()</a> has been called.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">name</td><td>Name of the column to mark required. </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="a61d6b2e64d7b7d6f36cc9e39f2656345" name="a61d6b2e64d7b7d6f36cc9e39f2656345"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a61d6b2e64d7b7d6f36cc9e39f2656345">&#9670;&#160;</a></span>SetIdentifierFields()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classiceberg_1_1UpdateSchema.html">UpdateSchema</a> &amp; iceberg::UpdateSchema::SetIdentifierFields </td>
<td>(</td>
<td class="paramtype">const std::span&lt; std::string_view &gt; &amp;&#160;</td>
<td class="paramname"><em>names</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Set the identifier fields given a set of field names. </p>
<p>Because identifier fields are unique, duplicated names will be ignored. See Schema::identifier_field_ids() to learn more about Iceberg identifier.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">names</td><td>Names of the columns to set as identifier fields. </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="af64c10fbbad83b9080e49808293087d5" name="af64c10fbbad83b9080e49808293087d5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af64c10fbbad83b9080e49808293087d5">&#9670;&#160;</a></span>UnionByNameWith()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classiceberg_1_1UpdateSchema.html">UpdateSchema</a> &amp; iceberg::UpdateSchema::UnionByNameWith </td>
<td>(</td>
<td class="paramtype">std::shared_ptr&lt; <a class="el" href="classiceberg_1_1Schema.html">Schema</a> &gt;&#160;</td>
<td class="paramname"><em>new_schema</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Applies all field additions and updates from the provided new schema to the existing schema to create a union schema. </p>
<p>For fields with same canonical names in both schemas it is required that the widen types is supported using <a class="el" href="classiceberg_1_1UpdateSchema.html#aa6ac92fec0adb669df589f27e23ab484" title="Update a column in the schema to a new primitive type.">UpdateColumn()</a>. Differences in type are ignored if the new type is narrower than the existing type (e.g. long to int, double to float).</p>
<p>Only supports turning a previously required field into an optional one if it is marked optional in the provided new schema using <a class="el" href="classiceberg_1_1UpdateSchema.html#a75ab00748fed2e7973fb62dca4da28b6" title="Update a column to be optional.">MakeColumnOptional()</a>.</p>
<p>Only supports updating existing field docs with fields docs from the provided new schema using <a class="el" href="classiceberg_1_1UpdateSchema.html#afd90953253b97c4cb3b75c2fb196bf3c" title="Update the documentation string for a column.">UpdateColumnDoc()</a>.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">new_schema</td><td>A schema used in conjunction with the existing schema to create a union schema. </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>
<dl class="section note"><dt>Note</dt><dd>InvalidState will be reported if it encounters errors during provided schema traversal. </dd>
<dd>
InvalidArgument will be reported if name doesn't identify a column in the schema or if this change introduces a type incompatibility or if it conflicts with other additions, renames, or updates. </dd></dl>
</div>
</div>
<a id="aa6ac92fec0adb669df589f27e23ab484" name="aa6ac92fec0adb669df589f27e23ab484"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa6ac92fec0adb669df589f27e23ab484">&#9670;&#160;</a></span>UpdateColumn()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classiceberg_1_1UpdateSchema.html">UpdateSchema</a> &amp; iceberg::UpdateSchema::UpdateColumn </td>
<td>(</td>
<td class="paramtype">std::string_view&#160;</td>
<td class="paramname"><em>name</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">std::shared_ptr&lt; <a class="el" href="classiceberg_1_1PrimitiveType.html">PrimitiveType</a> &gt;&#160;</td>
<td class="paramname"><em>new_type</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Update a column in the schema to a new primitive type. </p>
<p>The name is used to find the column to update using <a class="el" href="classiceberg_1_1Schema.html#a4db920889e6f3fb26a17361e9e2c382c" title="Recursively find the SchemaField by field name.">Schema::FindFieldByName()</a>.</p>
<p>Only updates that widen types are allowed.</p>
<p>Columns may be updated and renamed in the same schema update.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">name</td><td>Name of the column to update. </td></tr>
<tr><td class="paramname">new_type</td><td>Replacement type for the column (must be primitive). </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>
<dl class="section note"><dt>Note</dt><dd>InvalidArgument will be reported if name doesn't identify a column in the schema or if this change introduces a type incompatibility or if it conflicts with other additions, renames, or updates. </dd></dl>
</div>
</div>
<a id="afd90953253b97c4cb3b75c2fb196bf3c" name="afd90953253b97c4cb3b75c2fb196bf3c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afd90953253b97c4cb3b75c2fb196bf3c">&#9670;&#160;</a></span>UpdateColumnDoc()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classiceberg_1_1UpdateSchema.html">UpdateSchema</a> &amp; iceberg::UpdateSchema::UpdateColumnDoc </td>
<td>(</td>
<td class="paramtype">std::string_view&#160;</td>
<td class="paramname"><em>name</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">std::string_view&#160;</td>
<td class="paramname"><em>new_doc</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Update the documentation string for a column. </p>
<p>The name is used to find the column to update using <a class="el" href="classiceberg_1_1Schema.html#a4db920889e6f3fb26a17361e9e2c382c" title="Recursively find the SchemaField by field name.">Schema::FindFieldByName()</a>.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">name</td><td>Name of the column to update the documentation string for. </td></tr>
<tr><td class="paramname">new_doc</td><td>Replacement documentation string for the column. </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>
<dl class="section note"><dt>Note</dt><dd>InvalidArgument will be reported if name doesn't identify a column in the schema or if the column will be deleted. </dd></dl>
</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li>iceberg/update/<a class="el" href="update__schema_8h_source.html">update_schema.h</a></li>
<li>iceberg/update/<b>update_schema.cc</b></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>