<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc -->
<title>UpdateSchema</title>
<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
<script type="text/javascript" src="../../../script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
    try {
        if (location.href.indexOf('is-external=true') == -1) {
            parent.document.title="UpdateSchema";
        }
    }
    catch(err) {
    }
//-->
var methods = {"i0":18,"i1":6,"i2":18,"i3":6,"i4":18,"i5":6,"i6":18,"i7":6,"i8":6,"i9":6,"i10":6,"i11":6,"i12":6,"i13":6,"i14":6,"i15":6,"i16":6,"i17":18,"i18":6,"i19":6,"i20":18,"i21":6};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],4:["t3","Abstract Methods"],16:["t5","Default Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar.top">
<!--   -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.top.firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../index-all.html">Index</a></li>
<li><a href="../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../org/apache/iceberg/UpdateProperties.html" title="interface in org.apache.iceberg"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li>Next&nbsp;Class</li>
</ul>
<ul class="navList">
<li><a href="../../../index.html?org/apache/iceberg/UpdateSchema.html" target="_top">Frames</a></li>
<li><a href="UpdateSchema.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_top");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.top">
<!--   -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">org.apache.iceberg</div>
<h2 title="Interface UpdateSchema" class="title">Interface UpdateSchema</h2>
</div>
<div class="contentContainer">
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Superinterfaces:</dt>
<dd><a href="../../../org/apache/iceberg/PendingUpdate.html" title="interface in org.apache.iceberg">PendingUpdate</a>&lt;<a href="../../../org/apache/iceberg/Schema.html" title="class in org.apache.iceberg">Schema</a>&gt;</dd>
</dl>
<hr>
<br>
<pre>public interface <span class="typeNameLabel">UpdateSchema</span>
extends <a href="../../../org/apache/iceberg/PendingUpdate.html" title="interface in org.apache.iceberg">PendingUpdate</a>&lt;<a href="../../../org/apache/iceberg/Schema.html" title="class in org.apache.iceberg">Schema</a>&gt;</pre>
<div class="block">API for schema evolution.
 <p>
 When committing, these changes will be applied to the current table metadata. Commit conflicts
 will not be resolved and will result in a <a href="../../../org/apache/iceberg/exceptions/CommitFailedException.html" title="class in org.apache.iceberg.exceptions"><code>CommitFailedException</code></a>.</div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method.summary">
<!--   -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t3" class="tableTab"><span><a href="javascript:show(4);">Abstract Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t5" class="tableTab"><span><a href="javascript:show(16);">Default Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>default <a href="../../../org/apache/iceberg/UpdateSchema.html" title="interface in org.apache.iceberg">UpdateSchema</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../org/apache/iceberg/UpdateSchema.html#addColumn-java.lang.String-java.lang.String-org.apache.iceberg.types.Type-">addColumn</a></span>(java.lang.String&nbsp;parent,
         java.lang.String&nbsp;name,
         <a href="../../../org/apache/iceberg/types/Type.html" title="interface in org.apache.iceberg.types">Type</a>&nbsp;type)</code>
<div class="block">Add a new column to a nested struct.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code><a href="../../../org/apache/iceberg/UpdateSchema.html" title="interface in org.apache.iceberg">UpdateSchema</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../org/apache/iceberg/UpdateSchema.html#addColumn-java.lang.String-java.lang.String-org.apache.iceberg.types.Type-java.lang.String-">addColumn</a></span>(java.lang.String&nbsp;parent,
         java.lang.String&nbsp;name,
         <a href="../../../org/apache/iceberg/types/Type.html" title="interface in org.apache.iceberg.types">Type</a>&nbsp;type,
         java.lang.String&nbsp;doc)</code>
<div class="block">Add a new column to a nested struct.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>default <a href="../../../org/apache/iceberg/UpdateSchema.html" title="interface in org.apache.iceberg">UpdateSchema</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../org/apache/iceberg/UpdateSchema.html#addColumn-java.lang.String-org.apache.iceberg.types.Type-">addColumn</a></span>(java.lang.String&nbsp;name,
         <a href="../../../org/apache/iceberg/types/Type.html" title="interface in org.apache.iceberg.types">Type</a>&nbsp;type)</code>
<div class="block">Add a new top-level column.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code><a href="../../../org/apache/iceberg/UpdateSchema.html" title="interface in org.apache.iceberg">UpdateSchema</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../org/apache/iceberg/UpdateSchema.html#addColumn-java.lang.String-org.apache.iceberg.types.Type-java.lang.String-">addColumn</a></span>(java.lang.String&nbsp;name,
         <a href="../../../org/apache/iceberg/types/Type.html" title="interface in org.apache.iceberg.types">Type</a>&nbsp;type,
         java.lang.String&nbsp;doc)</code>
<div class="block">Add a new top-level column.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>default <a href="../../../org/apache/iceberg/UpdateSchema.html" title="interface in org.apache.iceberg">UpdateSchema</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../org/apache/iceberg/UpdateSchema.html#addRequiredColumn-java.lang.String-java.lang.String-org.apache.iceberg.types.Type-">addRequiredColumn</a></span>(java.lang.String&nbsp;parent,
                 java.lang.String&nbsp;name,
                 <a href="../../../org/apache/iceberg/types/Type.html" title="interface in org.apache.iceberg.types">Type</a>&nbsp;type)</code>
<div class="block">Add a new required top-level column.</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code><a href="../../../org/apache/iceberg/UpdateSchema.html" title="interface in org.apache.iceberg">UpdateSchema</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../org/apache/iceberg/UpdateSchema.html#addRequiredColumn-java.lang.String-java.lang.String-org.apache.iceberg.types.Type-java.lang.String-">addRequiredColumn</a></span>(java.lang.String&nbsp;parent,
                 java.lang.String&nbsp;name,
                 <a href="../../../org/apache/iceberg/types/Type.html" title="interface in org.apache.iceberg.types">Type</a>&nbsp;type,
                 java.lang.String&nbsp;doc)</code>
<div class="block">Add a new required top-level column.</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code>default <a href="../../../org/apache/iceberg/UpdateSchema.html" title="interface in org.apache.iceberg">UpdateSchema</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../org/apache/iceberg/UpdateSchema.html#addRequiredColumn-java.lang.String-org.apache.iceberg.types.Type-">addRequiredColumn</a></span>(java.lang.String&nbsp;name,
                 <a href="../../../org/apache/iceberg/types/Type.html" title="interface in org.apache.iceberg.types">Type</a>&nbsp;type)</code>
<div class="block">Add a new required top-level column.</div>
</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code><a href="../../../org/apache/iceberg/UpdateSchema.html" title="interface in org.apache.iceberg">UpdateSchema</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../org/apache/iceberg/UpdateSchema.html#addRequiredColumn-java.lang.String-org.apache.iceberg.types.Type-java.lang.String-">addRequiredColumn</a></span>(java.lang.String&nbsp;name,
                 <a href="../../../org/apache/iceberg/types/Type.html" title="interface in org.apache.iceberg.types">Type</a>&nbsp;type,
                 java.lang.String&nbsp;doc)</code>
<div class="block">Add a new required top-level column.</div>
</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code><a href="../../../org/apache/iceberg/UpdateSchema.html" title="interface in org.apache.iceberg">UpdateSchema</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../org/apache/iceberg/UpdateSchema.html#allowIncompatibleChanges--">allowIncompatibleChanges</a></span>()</code>
<div class="block">Allow incompatible changes to the schema.</div>
</td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code><a href="../../../org/apache/iceberg/UpdateSchema.html" title="interface in org.apache.iceberg">UpdateSchema</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../org/apache/iceberg/UpdateSchema.html#deleteColumn-java.lang.String-">deleteColumn</a></span>(java.lang.String&nbsp;name)</code>
<div class="block">Delete a column in the schema.</div>
</td>
</tr>
<tr id="i10" class="altColor">
<td class="colFirst"><code><a href="../../../org/apache/iceberg/UpdateSchema.html" title="interface in org.apache.iceberg">UpdateSchema</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../org/apache/iceberg/UpdateSchema.html#makeColumnOptional-java.lang.String-">makeColumnOptional</a></span>(java.lang.String&nbsp;name)</code>
<div class="block">Update a column to optional.</div>
</td>
</tr>
<tr id="i11" class="rowColor">
<td class="colFirst"><code><a href="../../../org/apache/iceberg/UpdateSchema.html" title="interface in org.apache.iceberg">UpdateSchema</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../org/apache/iceberg/UpdateSchema.html#moveAfter-java.lang.String-java.lang.String-">moveAfter</a></span>(java.lang.String&nbsp;name,
         java.lang.String&nbsp;afterName)</code>
<div class="block">Move a column from its current position to directly after a reference column.</div>
</td>
</tr>
<tr id="i12" class="altColor">
<td class="colFirst"><code><a href="../../../org/apache/iceberg/UpdateSchema.html" title="interface in org.apache.iceberg">UpdateSchema</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../org/apache/iceberg/UpdateSchema.html#moveBefore-java.lang.String-java.lang.String-">moveBefore</a></span>(java.lang.String&nbsp;name,
          java.lang.String&nbsp;beforeName)</code>
<div class="block">Move a column from its current position to directly before a reference column.</div>
</td>
</tr>
<tr id="i13" class="rowColor">
<td class="colFirst"><code><a href="../../../org/apache/iceberg/UpdateSchema.html" title="interface in org.apache.iceberg">UpdateSchema</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../org/apache/iceberg/UpdateSchema.html#moveFirst-java.lang.String-">moveFirst</a></span>(java.lang.String&nbsp;name)</code>
<div class="block">Move a column from its current position to the start of the schema or its parent struct.</div>
</td>
</tr>
<tr id="i14" class="altColor">
<td class="colFirst"><code><a href="../../../org/apache/iceberg/UpdateSchema.html" title="interface in org.apache.iceberg">UpdateSchema</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../org/apache/iceberg/UpdateSchema.html#renameColumn-java.lang.String-java.lang.String-">renameColumn</a></span>(java.lang.String&nbsp;name,
            java.lang.String&nbsp;newName)</code>
<div class="block">Rename a column in the schema.</div>
</td>
</tr>
<tr id="i15" class="rowColor">
<td class="colFirst"><code><a href="../../../org/apache/iceberg/UpdateSchema.html" title="interface in org.apache.iceberg">UpdateSchema</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../org/apache/iceberg/UpdateSchema.html#requireColumn-java.lang.String-">requireColumn</a></span>(java.lang.String&nbsp;name)</code>
<div class="block">Update a column to required.</div>
</td>
</tr>
<tr id="i16" class="altColor">
<td class="colFirst"><code><a href="../../../org/apache/iceberg/UpdateSchema.html" title="interface in org.apache.iceberg">UpdateSchema</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../org/apache/iceberg/UpdateSchema.html#setIdentifierFields-java.util.Collection-">setIdentifierFields</a></span>(java.util.Collection&lt;java.lang.String&gt;&nbsp;names)</code>
<div class="block">Set the identifier fields given a set of field names.</div>
</td>
</tr>
<tr id="i17" class="rowColor">
<td class="colFirst"><code>default <a href="../../../org/apache/iceberg/UpdateSchema.html" title="interface in org.apache.iceberg">UpdateSchema</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../org/apache/iceberg/UpdateSchema.html#setIdentifierFields-java.lang.String...-">setIdentifierFields</a></span>(java.lang.String...&nbsp;names)</code>
<div class="block">Set the identifier fields given some field names.</div>
</td>
</tr>
<tr id="i18" class="altColor">
<td class="colFirst"><code><a href="../../../org/apache/iceberg/UpdateSchema.html" title="interface in org.apache.iceberg">UpdateSchema</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../org/apache/iceberg/UpdateSchema.html#unionByNameWith-org.apache.iceberg.Schema-">unionByNameWith</a></span>(<a href="../../../org/apache/iceberg/Schema.html" title="class in org.apache.iceberg">Schema</a>&nbsp;newSchema)</code>
<div class="block">Applies all field additions and updates from the provided new schema to the existing schema so
 to create a union schema.</div>
</td>
</tr>
<tr id="i19" class="rowColor">
<td class="colFirst"><code><a href="../../../org/apache/iceberg/UpdateSchema.html" title="interface in org.apache.iceberg">UpdateSchema</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../org/apache/iceberg/UpdateSchema.html#updateColumn-java.lang.String-org.apache.iceberg.types.Type.PrimitiveType-">updateColumn</a></span>(java.lang.String&nbsp;name,
            <a href="../../../org/apache/iceberg/types/Type.PrimitiveType.html" title="class in org.apache.iceberg.types">Type.PrimitiveType</a>&nbsp;newType)</code>
<div class="block">Update a column in the schema to a new primitive type.</div>
</td>
</tr>
<tr id="i20" class="altColor">
<td class="colFirst"><code>default <a href="../../../org/apache/iceberg/UpdateSchema.html" title="interface in org.apache.iceberg">UpdateSchema</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../org/apache/iceberg/UpdateSchema.html#updateColumn-java.lang.String-org.apache.iceberg.types.Type.PrimitiveType-java.lang.String-">updateColumn</a></span>(java.lang.String&nbsp;name,
            <a href="../../../org/apache/iceberg/types/Type.PrimitiveType.html" title="class in org.apache.iceberg.types">Type.PrimitiveType</a>&nbsp;newType,
            java.lang.String&nbsp;newDoc)</code>
<div class="block">Update a column in the schema to a new primitive type.</div>
</td>
</tr>
<tr id="i21" class="rowColor">
<td class="colFirst"><code><a href="../../../org/apache/iceberg/UpdateSchema.html" title="interface in org.apache.iceberg">UpdateSchema</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../org/apache/iceberg/UpdateSchema.html#updateColumnDoc-java.lang.String-java.lang.String-">updateColumnDoc</a></span>(java.lang.String&nbsp;name,
               java.lang.String&nbsp;newDoc)</code>
<div class="block">Update a column in the schema to a new primitive type.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.org.apache.iceberg.PendingUpdate">
<!--   -->
</a>
<h3>Methods inherited from interface&nbsp;org.apache.iceberg.<a href="../../../org/apache/iceberg/PendingUpdate.html" title="interface in org.apache.iceberg">PendingUpdate</a></h3>
<code><a href="../../../org/apache/iceberg/PendingUpdate.html#apply--">apply</a>, <a href="../../../org/apache/iceberg/PendingUpdate.html#commit--">commit</a>, <a href="../../../org/apache/iceberg/PendingUpdate.html#updateEvent--">updateEvent</a></code></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!--   -->
</a>
<h3>Method Detail</h3>
<a name="allowIncompatibleChanges--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>allowIncompatibleChanges</h4>
<pre><a href="../../../org/apache/iceberg/UpdateSchema.html" title="interface in org.apache.iceberg">UpdateSchema</a>&nbsp;allowIncompatibleChanges()</pre>
<div class="block">Allow incompatible changes to the schema.
 <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>
 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 href="../../../org/apache/iceberg/UpdateSchema.html#requireColumn-java.lang.String-"><code>requireColumn(String)</code></a> to
 mark the column required.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>this for method chaining</dd>
</dl>
</li>
</ul>
<a name="addColumn-java.lang.String-org.apache.iceberg.types.Type-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>addColumn</h4>
<pre>default&nbsp;<a href="../../../org/apache/iceberg/UpdateSchema.html" title="interface in org.apache.iceberg">UpdateSchema</a>&nbsp;addColumn(java.lang.String&nbsp;name,
                               <a href="../../../org/apache/iceberg/types/Type.html" title="interface in org.apache.iceberg.types">Type</a>&nbsp;type)</pre>
<div class="block">Add a new top-level column.
 <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 <a href="../../../org/apache/iceberg/UpdateSchema.html#addColumn-java.lang.String-java.lang.String-org.apache.iceberg.types.Type-"><code>addColumn(String, String, Type)</code></a>.
 <p>
 If type is a nested type, its field IDs are reassigned when added to the existing schema.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>name</code> - name for the new column</dd>
<dd><code>type</code> - type for the new column</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>this for method chaining</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.IllegalArgumentException</code> - If name contains "."</dd>
</dl>
</li>
</ul>
<a name="addColumn-java.lang.String-org.apache.iceberg.types.Type-java.lang.String-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>addColumn</h4>
<pre><a href="../../../org/apache/iceberg/UpdateSchema.html" title="interface in org.apache.iceberg">UpdateSchema</a>&nbsp;addColumn(java.lang.String&nbsp;name,
                       <a href="../../../org/apache/iceberg/types/Type.html" title="interface in org.apache.iceberg.types">Type</a>&nbsp;type,
                       java.lang.String&nbsp;doc)</pre>
<div class="block">Add a new top-level column.
 <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 <a href="../../../org/apache/iceberg/UpdateSchema.html#addColumn-java.lang.String-java.lang.String-org.apache.iceberg.types.Type-"><code>addColumn(String, String, Type)</code></a>.
 <p>
 If type is a nested type, its field IDs are reassigned when added to the existing schema.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>name</code> - name for the new column</dd>
<dd><code>type</code> - type for the new column</dd>
<dd><code>doc</code> - documentation string for the new column</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>this for method chaining</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.IllegalArgumentException</code> - If name contains "."</dd>
</dl>
</li>
</ul>
<a name="addColumn-java.lang.String-java.lang.String-org.apache.iceberg.types.Type-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>addColumn</h4>
<pre>default&nbsp;<a href="../../../org/apache/iceberg/UpdateSchema.html" title="interface in org.apache.iceberg">UpdateSchema</a>&nbsp;addColumn(java.lang.String&nbsp;parent,
                               java.lang.String&nbsp;name,
                               <a href="../../../org/apache/iceberg/types/Type.html" title="interface in org.apache.iceberg.types">Type</a>&nbsp;type)</pre>
<div class="block">Add a new column to a nested struct.
 <p>
 The parent name is used to find the parent using <a href="../../../org/apache/iceberg/Schema.html#findField-java.lang.String-"><code>Schema.findField(String)</code></a>. If the
 parent name is null, 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>
 The given name is used to name the new column and names containing "." are not handled
 differently.
 <p>
 If type is a nested type, its field IDs are reassigned when added to the existing schema.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>parent</code> - name of the parent struct to the column will be added to</dd>
<dd><code>name</code> - name for the new column</dd>
<dd><code>type</code> - type for the new column</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>this for method chaining</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.IllegalArgumentException</code> - If parent doesn't identify a struct</dd>
</dl>
</li>
</ul>
<a name="addColumn-java.lang.String-java.lang.String-org.apache.iceberg.types.Type-java.lang.String-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>addColumn</h4>
<pre><a href="../../../org/apache/iceberg/UpdateSchema.html" title="interface in org.apache.iceberg">UpdateSchema</a>&nbsp;addColumn(java.lang.String&nbsp;parent,
                       java.lang.String&nbsp;name,
                       <a href="../../../org/apache/iceberg/types/Type.html" title="interface in org.apache.iceberg.types">Type</a>&nbsp;type,
                       java.lang.String&nbsp;doc)</pre>
<div class="block">Add a new column to a nested struct.
 <p>
 The parent name is used to find the parent using <a href="../../../org/apache/iceberg/Schema.html#findField-java.lang.String-"><code>Schema.findField(String)</code></a>. If the
 parent name is null, 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>
 The given name is used to name the new column and names containing "." are not handled
 differently.
 <p>
 If type is a nested type, its field IDs are reassigned when added to the existing schema.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>parent</code> - name of the parent struct to the column will be added to</dd>
<dd><code>name</code> - name for the new column</dd>
<dd><code>type</code> - type for the new column</dd>
<dd><code>doc</code> - documentation string for the new column</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>this for method chaining</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.IllegalArgumentException</code> - If parent doesn't identify a struct</dd>
</dl>
</li>
</ul>
<a name="addRequiredColumn-java.lang.String-org.apache.iceberg.types.Type-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>addRequiredColumn</h4>
<pre>default&nbsp;<a href="../../../org/apache/iceberg/UpdateSchema.html" title="interface in org.apache.iceberg">UpdateSchema</a>&nbsp;addRequiredColumn(java.lang.String&nbsp;name,
                                       <a href="../../../org/apache/iceberg/types/Type.html" title="interface in org.apache.iceberg.types">Type</a>&nbsp;type)</pre>
<div class="block">Add a new required top-level column.
 <p>
 This is an incompatible change that can break reading older data. This method will result in an exception unless
 <a href="../../../org/apache/iceberg/UpdateSchema.html#allowIncompatibleChanges--"><code>allowIncompatibleChanges()</code></a> has been called.
 <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 <a href="../../../org/apache/iceberg/UpdateSchema.html#addRequiredColumn-java.lang.String-java.lang.String-org.apache.iceberg.types.Type-"><code>addRequiredColumn(String, String, Type)</code></a>.
 <p>
 If type is a nested type, its field IDs are reassigned when added to the existing schema.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>name</code> - name for the new column</dd>
<dd><code>type</code> - type for the new column</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>this for method chaining</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.IllegalArgumentException</code> - If name contains "."</dd>
</dl>
</li>
</ul>
<a name="addRequiredColumn-java.lang.String-org.apache.iceberg.types.Type-java.lang.String-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>addRequiredColumn</h4>
<pre><a href="../../../org/apache/iceberg/UpdateSchema.html" title="interface in org.apache.iceberg">UpdateSchema</a>&nbsp;addRequiredColumn(java.lang.String&nbsp;name,
                               <a href="../../../org/apache/iceberg/types/Type.html" title="interface in org.apache.iceberg.types">Type</a>&nbsp;type,
                               java.lang.String&nbsp;doc)</pre>
<div class="block">Add a new required top-level column.
 <p>
 This is an incompatible change that can break reading older data. This method will result in an exception unless
 <a href="../../../org/apache/iceberg/UpdateSchema.html#allowIncompatibleChanges--"><code>allowIncompatibleChanges()</code></a> has been called.
 <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 <a href="../../../org/apache/iceberg/UpdateSchema.html#addRequiredColumn-java.lang.String-java.lang.String-org.apache.iceberg.types.Type-"><code>addRequiredColumn(String, String, Type)</code></a>.
 <p>
 If type is a nested type, its field IDs are reassigned when added to the existing schema.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>name</code> - name for the new column</dd>
<dd><code>type</code> - type for the new column</dd>
<dd><code>doc</code> - documentation string for the new column</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>this for method chaining</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.IllegalArgumentException</code> - If name contains "."</dd>
</dl>
</li>
</ul>
<a name="addRequiredColumn-java.lang.String-java.lang.String-org.apache.iceberg.types.Type-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>addRequiredColumn</h4>
<pre>default&nbsp;<a href="../../../org/apache/iceberg/UpdateSchema.html" title="interface in org.apache.iceberg">UpdateSchema</a>&nbsp;addRequiredColumn(java.lang.String&nbsp;parent,
                                       java.lang.String&nbsp;name,
                                       <a href="../../../org/apache/iceberg/types/Type.html" title="interface in org.apache.iceberg.types">Type</a>&nbsp;type)</pre>
<div class="block">Add a new required top-level column.
 <p>
 This is an incompatible change that can break reading older data. This method will result in an exception unless
 <a href="../../../org/apache/iceberg/UpdateSchema.html#allowIncompatibleChanges--"><code>allowIncompatibleChanges()</code></a> has been called.
 <p>
 The parent name is used to find the parent using <a href="../../../org/apache/iceberg/Schema.html#findField-java.lang.String-"><code>Schema.findField(String)</code></a>. If the
 parent name is null, 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>
 The given name is used to name the new column and names containing "." are not handled
 differently.
 <p>
 If type is a nested type, its field IDs are reassigned when added to the existing schema.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>parent</code> - name of the parent struct to the column will be added to</dd>
<dd><code>name</code> - name for the new column</dd>
<dd><code>type</code> - type for the new column</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>this for method chaining</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.IllegalArgumentException</code> - If parent doesn't identify a struct</dd>
</dl>
</li>
</ul>
<a name="addRequiredColumn-java.lang.String-java.lang.String-org.apache.iceberg.types.Type-java.lang.String-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>addRequiredColumn</h4>
<pre><a href="../../../org/apache/iceberg/UpdateSchema.html" title="interface in org.apache.iceberg">UpdateSchema</a>&nbsp;addRequiredColumn(java.lang.String&nbsp;parent,
                               java.lang.String&nbsp;name,
                               <a href="../../../org/apache/iceberg/types/Type.html" title="interface in org.apache.iceberg.types">Type</a>&nbsp;type,
                               java.lang.String&nbsp;doc)</pre>
<div class="block">Add a new required top-level column.
 <p>
 This is an incompatible change that can break reading older data. This method will result in an exception unless
 <a href="../../../org/apache/iceberg/UpdateSchema.html#allowIncompatibleChanges--"><code>allowIncompatibleChanges()</code></a> has been called.
 <p>
 The parent name is used to find the parent using <a href="../../../org/apache/iceberg/Schema.html#findField-java.lang.String-"><code>Schema.findField(String)</code></a>. If the
 parent name is null, 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>
 The given name is used to name the new column and names containing "." are not handled
 differently.
 <p>
 If type is a nested type, its field IDs are reassigned when added to the existing schema.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>parent</code> - name of the parent struct to the column will be added to</dd>
<dd><code>name</code> - name for the new column</dd>
<dd><code>type</code> - type for the new column</dd>
<dd><code>doc</code> - documentation string for the new column</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>this for method chaining</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.IllegalArgumentException</code> - If parent doesn't identify a struct</dd>
</dl>
</li>
</ul>
<a name="renameColumn-java.lang.String-java.lang.String-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>renameColumn</h4>
<pre><a href="../../../org/apache/iceberg/UpdateSchema.html" title="interface in org.apache.iceberg">UpdateSchema</a>&nbsp;renameColumn(java.lang.String&nbsp;name,
                          java.lang.String&nbsp;newName)</pre>
<div class="block">Rename a column in the schema.
 <p>
 The name is used to find the column to rename using <a href="../../../org/apache/iceberg/Schema.html#findField-java.lang.String-"><code>Schema.findField(String)</code></a>.
 <p>
 The new name may contain "." and such names are not parsed or handled differently.
 <p>
 Columns may be updated and renamed in the same schema update.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>name</code> - name of the column to rename</dd>
<dd><code>newName</code> - replacement name for the column</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>this for method chaining</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.IllegalArgumentException</code> - If name doesn't identify a column in the schema or if this
                                  change conflicts with other additions, renames, or updates.</dd>
</dl>
</li>
</ul>
<a name="updateColumn-java.lang.String-org.apache.iceberg.types.Type.PrimitiveType-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>updateColumn</h4>
<pre><a href="../../../org/apache/iceberg/UpdateSchema.html" title="interface in org.apache.iceberg">UpdateSchema</a>&nbsp;updateColumn(java.lang.String&nbsp;name,
                          <a href="../../../org/apache/iceberg/types/Type.PrimitiveType.html" title="class in org.apache.iceberg.types">Type.PrimitiveType</a>&nbsp;newType)</pre>
<div class="block">Update a column in the schema to a new primitive type.
 <p>
 The name is used to find the column to update using <a href="../../../org/apache/iceberg/Schema.html#findField-java.lang.String-"><code>Schema.findField(String)</code></a>.
 <p>
 Only updates that widen types are allowed.
 <p>
 Columns may be updated and renamed in the same schema update.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>name</code> - name of the column to rename</dd>
<dd><code>newType</code> - replacement type for the column</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>this for method chaining</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.IllegalArgumentException</code> - 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>
</li>
</ul>
<a name="updateColumn-java.lang.String-org.apache.iceberg.types.Type.PrimitiveType-java.lang.String-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>updateColumn</h4>
<pre>default&nbsp;<a href="../../../org/apache/iceberg/UpdateSchema.html" title="interface in org.apache.iceberg">UpdateSchema</a>&nbsp;updateColumn(java.lang.String&nbsp;name,
                                  <a href="../../../org/apache/iceberg/types/Type.PrimitiveType.html" title="class in org.apache.iceberg.types">Type.PrimitiveType</a>&nbsp;newType,
                                  java.lang.String&nbsp;newDoc)</pre>
<div class="block">Update a column in the schema to a new primitive type.
 <p>
 The name is used to find the column to update using <a href="../../../org/apache/iceberg/Schema.html#findField-java.lang.String-"><code>Schema.findField(String)</code></a>.
 <p>
 Only updates that widen types are allowed.
 <p>
 Columns may be updated and renamed in the same schema update.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>name</code> - name of the column to rename</dd>
<dd><code>newType</code> - replacement type for the column</dd>
<dd><code>newDoc</code> - replacement documentation string for the column</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>this for method chaining</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.IllegalArgumentException</code> - 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>
</li>
</ul>
<a name="updateColumnDoc-java.lang.String-java.lang.String-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>updateColumnDoc</h4>
<pre><a href="../../../org/apache/iceberg/UpdateSchema.html" title="interface in org.apache.iceberg">UpdateSchema</a>&nbsp;updateColumnDoc(java.lang.String&nbsp;name,
                             java.lang.String&nbsp;newDoc)</pre>
<div class="block">Update a column in the schema to a new primitive type.
 <p>
 The name is used to find the column to update using <a href="../../../org/apache/iceberg/Schema.html#findField-java.lang.String-"><code>Schema.findField(String)</code></a>.
 <p>
 Columns may be updated and renamed in the same schema update.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>name</code> - name of the column to rename</dd>
<dd><code>newDoc</code> - replacement documentation string for the column</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>this for method chaining</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.IllegalArgumentException</code> - 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>
</li>
</ul>
<a name="makeColumnOptional-java.lang.String-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>makeColumnOptional</h4>
<pre><a href="../../../org/apache/iceberg/UpdateSchema.html" title="interface in org.apache.iceberg">UpdateSchema</a>&nbsp;makeColumnOptional(java.lang.String&nbsp;name)</pre>
<div class="block">Update a column to optional.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>name</code> - name of the column to mark optional</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>this for method chaining</dd>
</dl>
</li>
</ul>
<a name="requireColumn-java.lang.String-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>requireColumn</h4>
<pre><a href="../../../org/apache/iceberg/UpdateSchema.html" title="interface in org.apache.iceberg">UpdateSchema</a>&nbsp;requireColumn(java.lang.String&nbsp;name)</pre>
<div class="block">Update a column to required.
 <p>
 This is an incompatible change that can break reading older data. This method will result in an exception unless
 <a href="../../../org/apache/iceberg/UpdateSchema.html#allowIncompatibleChanges--"><code>allowIncompatibleChanges()</code></a> has been called.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>name</code> - name of the column to mark required</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>this for method chaining</dd>
</dl>
</li>
</ul>
<a name="deleteColumn-java.lang.String-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>deleteColumn</h4>
<pre><a href="../../../org/apache/iceberg/UpdateSchema.html" title="interface in org.apache.iceberg">UpdateSchema</a>&nbsp;deleteColumn(java.lang.String&nbsp;name)</pre>
<div class="block">Delete a column in the schema.
 <p>
 The name is used to find the column to delete using <a href="../../../org/apache/iceberg/Schema.html#findField-java.lang.String-"><code>Schema.findField(String)</code></a>.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>name</code> - name of the column to delete</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>this for method chaining</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.IllegalArgumentException</code> - If name doesn't identify a column in the schema or if this
                                  change conflicts with other additions, renames, or updates.</dd>
</dl>
</li>
</ul>
<a name="moveFirst-java.lang.String-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>moveFirst</h4>
<pre><a href="../../../org/apache/iceberg/UpdateSchema.html" title="interface in org.apache.iceberg">UpdateSchema</a>&nbsp;moveFirst(java.lang.String&nbsp;name)</pre>
<div class="block">Move a column from its current position to the start of the schema or its parent struct.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>name</code> - name of the column to move</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>this for method chaining</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.IllegalArgumentException</code> - If name doesn't identify a column in the schema or if this
                                  change conflicts with other changes.</dd>
</dl>
</li>
</ul>
<a name="moveBefore-java.lang.String-java.lang.String-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>moveBefore</h4>
<pre><a href="../../../org/apache/iceberg/UpdateSchema.html" title="interface in org.apache.iceberg">UpdateSchema</a>&nbsp;moveBefore(java.lang.String&nbsp;name,
                        java.lang.String&nbsp;beforeName)</pre>
<div class="block">Move a column from its current position to directly before a reference column.
 <p>
 The name is used to find the column to move using <a href="../../../org/apache/iceberg/Schema.html#findField-java.lang.String-"><code>Schema.findField(String)</code></a>. If the name identifies a nested
 column, it can only be moved within the nested struct that contains it.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>name</code> - name of the column to move</dd>
<dd><code>beforeName</code> - name of the reference column</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>this for method chaining</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.IllegalArgumentException</code> - If name doesn't identify a column in the schema or if this
                                  change conflicts with other changes.</dd>
</dl>
</li>
</ul>
<a name="moveAfter-java.lang.String-java.lang.String-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>moveAfter</h4>
<pre><a href="../../../org/apache/iceberg/UpdateSchema.html" title="interface in org.apache.iceberg">UpdateSchema</a>&nbsp;moveAfter(java.lang.String&nbsp;name,
                       java.lang.String&nbsp;afterName)</pre>
<div class="block">Move a column from its current position to directly after a reference column.
 <p>
 The name is used to find the column to move using <a href="../../../org/apache/iceberg/Schema.html#findField-java.lang.String-"><code>Schema.findField(String)</code></a>. If the name identifies a nested
 column, it can only be moved within the nested struct that contains it.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>name</code> - name of the column to move</dd>
<dd><code>afterName</code> - name of the reference column</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>this for method chaining</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.IllegalArgumentException</code> - If name doesn't identify a column in the schema or if this
                                  change conflicts with other changes.</dd>
</dl>
</li>
</ul>
<a name="unionByNameWith-org.apache.iceberg.Schema-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>unionByNameWith</h4>
<pre><a href="../../../org/apache/iceberg/UpdateSchema.html" title="interface in org.apache.iceberg">UpdateSchema</a>&nbsp;unionByNameWith(<a href="../../../org/apache/iceberg/Schema.html" title="class in org.apache.iceberg">Schema</a>&nbsp;newSchema)</pre>
<div class="block">Applies all field additions and updates from the provided new schema to the existing schema so
 to create a union schema.
 <p>
 For fields with same canonical names in both schemas it is required that the widen types is
 supported using <a href="../../../org/apache/iceberg/UpdateSchema.html#updateColumn-java.lang.String-org.apache.iceberg.types.Type.PrimitiveType-"><code>updateColumn(String, Type.PrimitiveType)</code></a>
 <p>
 Only supports turning a previously required field into an optional one if it is marked
 optional in the provided new schema using <a href="../../../org/apache/iceberg/UpdateSchema.html#makeColumnOptional-java.lang.String-"><code>makeColumnOptional(String)</code></a>
 <p>
 Only supports updating existing field docs with fields docs from the provided new schema using
 <a href="../../../org/apache/iceberg/UpdateSchema.html#updateColumnDoc-java.lang.String-java.lang.String-"><code>updateColumnDoc(String, String)</code></a></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>newSchema</code> - a schema used in conjunction with the existing schema to create a union schema</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>this for method chaining</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.IllegalStateException</code> - If it encounters errors during provided schema traversal</dd>
<dd><code>java.lang.IllegalArgumentException</code> - 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>
</li>
</ul>
<a name="setIdentifierFields-java.util.Collection-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setIdentifierFields</h4>
<pre><a href="../../../org/apache/iceberg/UpdateSchema.html" title="interface in org.apache.iceberg">UpdateSchema</a>&nbsp;setIdentifierFields(java.util.Collection&lt;java.lang.String&gt;&nbsp;names)</pre>
<div class="block">Set the identifier fields given a set of field names.
 <p>
 Because identifier fields are unique, duplicated names will be ignored.
 See <a href="../../../org/apache/iceberg/Schema.html#identifierFieldIds--"><code>Schema.identifierFieldIds()</code></a> to learn more about Iceberg identifier.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>names</code> - names of the columns to set as identifier fields</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>this for method chaining</dd>
</dl>
</li>
</ul>
<a name="setIdentifierFields-java.lang.String...-">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>setIdentifierFields</h4>
<pre>default&nbsp;<a href="../../../org/apache/iceberg/UpdateSchema.html" title="interface in org.apache.iceberg">UpdateSchema</a>&nbsp;setIdentifierFields(java.lang.String...&nbsp;names)</pre>
<div class="block">Set the identifier fields given some field names.
 See <a href="../../../org/apache/iceberg/UpdateSchema.html#setIdentifierFields-java.util.Collection-"><code>setIdentifierFields(Collection)</code></a> for more details.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>names</code> - names of the columns to set as identifier fields</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>this for method chaining</dd>
</dl>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar.bottom">
<!--   -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.bottom.firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../index-all.html">Index</a></li>
<li><a href="../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../org/apache/iceberg/UpdateProperties.html" title="interface in org.apache.iceberg"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li>Next&nbsp;Class</li>
</ul>
<ul class="navList">
<li><a href="../../../index.html?org/apache/iceberg/UpdateSchema.html" target="_top">Frames</a></li>
<li><a href="UpdateSchema.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_bottom");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.bottom">
<!--   -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</body>
</html>
