<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (11.0.12) on Wed Aug 18 10:34:26 PDT 2021 -->
<title>UpdateSchema</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="dc.created" content="2021-08-18">
<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../jquery/jquery-ui.css" title="Style">
<script type="text/javascript" src="../../../script.js"></script>
<script type="text/javascript" src="../../../jquery/jszip/dist/jszip.min.js"></script>
<script type="text/javascript" src="../../../jquery/jszip-utils/dist/jszip-utils.min.js"></script>
<!--[if IE]>
<script type="text/javascript" src="../../../jquery/jszip-utils/dist/jszip-utils-ie.min.js"></script>
<![endif]-->
<script type="text/javascript" src="../../../jquery/jquery-3.5.1.js"></script>
<script type="text/javascript" src="../../../jquery/jquery-ui.js"></script>
</head>
<body>
<script type="text/javascript"><!--
    try {
        if (location.href.indexOf('is-external=true') == -1) {
            parent.document.title="UpdateSchema";
        }
    }
    catch(err) {
    }
//-->
var data = {"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":18,"i17":6,"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";
var pathtoroot = "../../../";
var useModuleDirectories = true;
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<nav role="navigation">
<div class="fixedNav">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a id="navbar.top">
<!--   -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.top.firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../index.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" id="allclasses_navbar_top">
<li><a href="../../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<ul class="navListSearch">
<li><label for="search">SEARCH:</label>
<input type="text" id="search" value="search" disabled="disabled">
<input type="reset" id="reset" value="reset" disabled="disabled">
</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>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</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 id="skip.navbar.top">
<!--   -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
</div>
<div class="navPadding">&nbsp;</div>
<script type="text/javascript"><!--
$('.navPadding').css('padding-top', $('.fixedNav').css("height"));
//-->
</script>
</nav>
</header>
<!-- ======== START OF CLASS DATA ======== -->
<main role="main">
<div class="header">
<div class="subTitle"><span class="packageLabelInType">Package</span>&nbsp;<a href="package-summary.html">org.apache.iceberg</a></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><code><a href="PendingUpdate.html" title="interface in org.apache.iceberg">PendingUpdate</a>&lt;<a href="Schema.html" title="class in org.apache.iceberg">Schema</a>&gt;</code></dd>
</dl>
<hr>
<pre>public interface <span class="typeNameLabel">UpdateSchema</span>
extends <a href="PendingUpdate.html" title="interface in org.apache.iceberg">PendingUpdate</a>&lt;<a href="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="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 =========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.summary">
<!--   -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary">
<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="colSecond" scope="col">Method</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>default <a href="UpdateSchema.html" title="interface in org.apache.iceberg">UpdateSchema</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#addColumn(java.lang.String,java.lang.String,org.apache.iceberg.types.Type)">addColumn</a></span>&#8203;(java.lang.String&nbsp;parent,
         java.lang.String&nbsp;name,
         <a href="types/Type.html" title="interface in org.apache.iceberg.types">Type</a>&nbsp;type)</code></th>
<td class="colLast">
<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="UpdateSchema.html" title="interface in org.apache.iceberg">UpdateSchema</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#addColumn(java.lang.String,java.lang.String,org.apache.iceberg.types.Type,java.lang.String)">addColumn</a></span>&#8203;(java.lang.String&nbsp;parent,
         java.lang.String&nbsp;name,
         <a href="types/Type.html" title="interface in org.apache.iceberg.types">Type</a>&nbsp;type,
         java.lang.String&nbsp;doc)</code></th>
<td class="colLast">
<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="UpdateSchema.html" title="interface in org.apache.iceberg">UpdateSchema</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#addColumn(java.lang.String,org.apache.iceberg.types.Type)">addColumn</a></span>&#8203;(java.lang.String&nbsp;name,
         <a href="types/Type.html" title="interface in org.apache.iceberg.types">Type</a>&nbsp;type)</code></th>
<td class="colLast">
<div class="block">Add a new top-level column.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code><a href="UpdateSchema.html" title="interface in org.apache.iceberg">UpdateSchema</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#addColumn(java.lang.String,org.apache.iceberg.types.Type,java.lang.String)">addColumn</a></span>&#8203;(java.lang.String&nbsp;name,
         <a href="types/Type.html" title="interface in org.apache.iceberg.types">Type</a>&nbsp;type,
         java.lang.String&nbsp;doc)</code></th>
<td class="colLast">
<div class="block">Add a new top-level column.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>default <a href="UpdateSchema.html" title="interface in org.apache.iceberg">UpdateSchema</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#addRequiredColumn(java.lang.String,java.lang.String,org.apache.iceberg.types.Type)">addRequiredColumn</a></span>&#8203;(java.lang.String&nbsp;parent,
                 java.lang.String&nbsp;name,
                 <a href="types/Type.html" title="interface in org.apache.iceberg.types">Type</a>&nbsp;type)</code></th>
<td class="colLast">
<div class="block">Add a new required top-level column.</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code><a href="UpdateSchema.html" title="interface in org.apache.iceberg">UpdateSchema</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#addRequiredColumn(java.lang.String,java.lang.String,org.apache.iceberg.types.Type,java.lang.String)">addRequiredColumn</a></span>&#8203;(java.lang.String&nbsp;parent,
                 java.lang.String&nbsp;name,
                 <a href="types/Type.html" title="interface in org.apache.iceberg.types">Type</a>&nbsp;type,
                 java.lang.String&nbsp;doc)</code></th>
<td class="colLast">
<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="UpdateSchema.html" title="interface in org.apache.iceberg">UpdateSchema</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#addRequiredColumn(java.lang.String,org.apache.iceberg.types.Type)">addRequiredColumn</a></span>&#8203;(java.lang.String&nbsp;name,
                 <a href="types/Type.html" title="interface in org.apache.iceberg.types">Type</a>&nbsp;type)</code></th>
<td class="colLast">
<div class="block">Add a new required top-level column.</div>
</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code><a href="UpdateSchema.html" title="interface in org.apache.iceberg">UpdateSchema</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#addRequiredColumn(java.lang.String,org.apache.iceberg.types.Type,java.lang.String)">addRequiredColumn</a></span>&#8203;(java.lang.String&nbsp;name,
                 <a href="types/Type.html" title="interface in org.apache.iceberg.types">Type</a>&nbsp;type,
                 java.lang.String&nbsp;doc)</code></th>
<td class="colLast">
<div class="block">Add a new required top-level column.</div>
</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code><a href="UpdateSchema.html" title="interface in org.apache.iceberg">UpdateSchema</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#allowIncompatibleChanges()">allowIncompatibleChanges</a></span>()</code></th>
<td class="colLast">
<div class="block">Allow incompatible changes to the schema.</div>
</td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code><a href="UpdateSchema.html" title="interface in org.apache.iceberg">UpdateSchema</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#deleteColumn(java.lang.String)">deleteColumn</a></span>&#8203;(java.lang.String&nbsp;name)</code></th>
<td class="colLast">
<div class="block">Delete a column in the schema.</div>
</td>
</tr>
<tr id="i10" class="altColor">
<td class="colFirst"><code><a href="UpdateSchema.html" title="interface in org.apache.iceberg">UpdateSchema</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#makeColumnOptional(java.lang.String)">makeColumnOptional</a></span>&#8203;(java.lang.String&nbsp;name)</code></th>
<td class="colLast">
<div class="block">Update a column to optional.</div>
</td>
</tr>
<tr id="i11" class="rowColor">
<td class="colFirst"><code><a href="UpdateSchema.html" title="interface in org.apache.iceberg">UpdateSchema</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#moveAfter(java.lang.String,java.lang.String)">moveAfter</a></span>&#8203;(java.lang.String&nbsp;name,
         java.lang.String&nbsp;afterName)</code></th>
<td class="colLast">
<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="UpdateSchema.html" title="interface in org.apache.iceberg">UpdateSchema</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#moveBefore(java.lang.String,java.lang.String)">moveBefore</a></span>&#8203;(java.lang.String&nbsp;name,
          java.lang.String&nbsp;beforeName)</code></th>
<td class="colLast">
<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="UpdateSchema.html" title="interface in org.apache.iceberg">UpdateSchema</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#moveFirst(java.lang.String)">moveFirst</a></span>&#8203;(java.lang.String&nbsp;name)</code></th>
<td class="colLast">
<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="UpdateSchema.html" title="interface in org.apache.iceberg">UpdateSchema</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#renameColumn(java.lang.String,java.lang.String)">renameColumn</a></span>&#8203;(java.lang.String&nbsp;name,
            java.lang.String&nbsp;newName)</code></th>
<td class="colLast">
<div class="block">Rename a column in the schema.</div>
</td>
</tr>
<tr id="i15" class="rowColor">
<td class="colFirst"><code><a href="UpdateSchema.html" title="interface in org.apache.iceberg">UpdateSchema</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#requireColumn(java.lang.String)">requireColumn</a></span>&#8203;(java.lang.String&nbsp;name)</code></th>
<td class="colLast">
<div class="block">Update a column to required.</div>
</td>
</tr>
<tr id="i16" class="altColor">
<td class="colFirst"><code>default <a href="UpdateSchema.html" title="interface in org.apache.iceberg">UpdateSchema</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setIdentifierFields(java.lang.String...)">setIdentifierFields</a></span>&#8203;(java.lang.String...&nbsp;names)</code></th>
<td class="colLast">
<div class="block">Set the identifier fields given some field names.</div>
</td>
</tr>
<tr id="i17" class="rowColor">
<td class="colFirst"><code><a href="UpdateSchema.html" title="interface in org.apache.iceberg">UpdateSchema</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setIdentifierFields(java.util.Collection)">setIdentifierFields</a></span>&#8203;(java.util.Collection&lt;java.lang.String&gt;&nbsp;names)</code></th>
<td class="colLast">
<div class="block">Set the identifier fields given a set of field names.</div>
</td>
</tr>
<tr id="i18" class="altColor">
<td class="colFirst"><code><a href="UpdateSchema.html" title="interface in org.apache.iceberg">UpdateSchema</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#unionByNameWith(org.apache.iceberg.Schema)">unionByNameWith</a></span>&#8203;(<a href="Schema.html" title="class in org.apache.iceberg">Schema</a>&nbsp;newSchema)</code></th>
<td class="colLast">
<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="UpdateSchema.html" title="interface in org.apache.iceberg">UpdateSchema</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#updateColumn(java.lang.String,org.apache.iceberg.types.Type.PrimitiveType)">updateColumn</a></span>&#8203;(java.lang.String&nbsp;name,
            <a href="types/Type.PrimitiveType.html" title="class in org.apache.iceberg.types">Type.PrimitiveType</a>&nbsp;newType)</code></th>
<td class="colLast">
<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="UpdateSchema.html" title="interface in org.apache.iceberg">UpdateSchema</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#updateColumn(java.lang.String,org.apache.iceberg.types.Type.PrimitiveType,java.lang.String)">updateColumn</a></span>&#8203;(java.lang.String&nbsp;name,
            <a href="types/Type.PrimitiveType.html" title="class in org.apache.iceberg.types">Type.PrimitiveType</a>&nbsp;newType,
            java.lang.String&nbsp;newDoc)</code></th>
<td class="colLast">
<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="UpdateSchema.html" title="interface in org.apache.iceberg">UpdateSchema</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#updateColumnDoc(java.lang.String,java.lang.String)">updateColumnDoc</a></span>&#8203;(java.lang.String&nbsp;name,
               java.lang.String&nbsp;newDoc)</code></th>
<td class="colLast">
<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 id="methods.inherited.from.class.org.apache.iceberg.PendingUpdate">
<!--   -->
</a>
<h3>Methods inherited from interface&nbsp;org.apache.iceberg.<a href="PendingUpdate.html" title="interface in org.apache.iceberg">PendingUpdate</a></h3>
<code><a href="PendingUpdate.html#apply()">apply</a>, <a href="PendingUpdate.html#commit()">commit</a>, <a href="PendingUpdate.html#updateEvent()">updateEvent</a></code></li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ METHOD DETAIL ========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.detail">
<!--   -->
</a>
<h3>Method Detail</h3>
<a id="allowIncompatibleChanges()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>allowIncompatibleChanges</h4>
<pre class="methodSignature"><a href="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="#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 id="addColumn(java.lang.String,org.apache.iceberg.types.Type)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>addColumn</h4>
<pre class="methodSignature">default&nbsp;<a href="UpdateSchema.html" title="interface in org.apache.iceberg">UpdateSchema</a>&nbsp;addColumn&#8203;(java.lang.String&nbsp;name,
                               <a href="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="#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 id="addColumn(java.lang.String,org.apache.iceberg.types.Type,java.lang.String)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>addColumn</h4>
<pre class="methodSignature"><a href="UpdateSchema.html" title="interface in org.apache.iceberg">UpdateSchema</a>&nbsp;addColumn&#8203;(java.lang.String&nbsp;name,
                       <a href="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="#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 id="addColumn(java.lang.String,java.lang.String,org.apache.iceberg.types.Type)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>addColumn</h4>
<pre class="methodSignature">default&nbsp;<a href="UpdateSchema.html" title="interface in org.apache.iceberg">UpdateSchema</a>&nbsp;addColumn&#8203;(java.lang.String&nbsp;parent,
                               java.lang.String&nbsp;name,
                               <a href="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="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 id="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 class="methodSignature"><a href="UpdateSchema.html" title="interface in org.apache.iceberg">UpdateSchema</a>&nbsp;addColumn&#8203;(java.lang.String&nbsp;parent,
                       java.lang.String&nbsp;name,
                       <a href="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="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 id="addRequiredColumn(java.lang.String,org.apache.iceberg.types.Type)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>addRequiredColumn</h4>
<pre class="methodSignature">default&nbsp;<a href="UpdateSchema.html" title="interface in org.apache.iceberg">UpdateSchema</a>&nbsp;addRequiredColumn&#8203;(java.lang.String&nbsp;name,
                                       <a href="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="#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="#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 id="addRequiredColumn(java.lang.String,org.apache.iceberg.types.Type,java.lang.String)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>addRequiredColumn</h4>
<pre class="methodSignature"><a href="UpdateSchema.html" title="interface in org.apache.iceberg">UpdateSchema</a>&nbsp;addRequiredColumn&#8203;(java.lang.String&nbsp;name,
                               <a href="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="#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="#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 id="addRequiredColumn(java.lang.String,java.lang.String,org.apache.iceberg.types.Type)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>addRequiredColumn</h4>
<pre class="methodSignature">default&nbsp;<a href="UpdateSchema.html" title="interface in org.apache.iceberg">UpdateSchema</a>&nbsp;addRequiredColumn&#8203;(java.lang.String&nbsp;parent,
                                       java.lang.String&nbsp;name,
                                       <a href="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="#allowIncompatibleChanges()"><code>allowIncompatibleChanges()</code></a> has been called.
 <p>
 The parent name is used to find the parent using <a href="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 id="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 class="methodSignature"><a href="UpdateSchema.html" title="interface in org.apache.iceberg">UpdateSchema</a>&nbsp;addRequiredColumn&#8203;(java.lang.String&nbsp;parent,
                               java.lang.String&nbsp;name,
                               <a href="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="#allowIncompatibleChanges()"><code>allowIncompatibleChanges()</code></a> has been called.
 <p>
 The parent name is used to find the parent using <a href="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 id="renameColumn(java.lang.String,java.lang.String)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>renameColumn</h4>
<pre class="methodSignature"><a href="UpdateSchema.html" title="interface in org.apache.iceberg">UpdateSchema</a>&nbsp;renameColumn&#8203;(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="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 id="updateColumn(java.lang.String,org.apache.iceberg.types.Type.PrimitiveType)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>updateColumn</h4>
<pre class="methodSignature"><a href="UpdateSchema.html" title="interface in org.apache.iceberg">UpdateSchema</a>&nbsp;updateColumn&#8203;(java.lang.String&nbsp;name,
                          <a href="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="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 id="updateColumn(java.lang.String,org.apache.iceberg.types.Type.PrimitiveType,java.lang.String)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>updateColumn</h4>
<pre class="methodSignature">default&nbsp;<a href="UpdateSchema.html" title="interface in org.apache.iceberg">UpdateSchema</a>&nbsp;updateColumn&#8203;(java.lang.String&nbsp;name,
                                  <a href="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="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 id="updateColumnDoc(java.lang.String,java.lang.String)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>updateColumnDoc</h4>
<pre class="methodSignature"><a href="UpdateSchema.html" title="interface in org.apache.iceberg">UpdateSchema</a>&nbsp;updateColumnDoc&#8203;(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="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 id="makeColumnOptional(java.lang.String)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>makeColumnOptional</h4>
<pre class="methodSignature"><a href="UpdateSchema.html" title="interface in org.apache.iceberg">UpdateSchema</a>&nbsp;makeColumnOptional&#8203;(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 id="requireColumn(java.lang.String)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>requireColumn</h4>
<pre class="methodSignature"><a href="UpdateSchema.html" title="interface in org.apache.iceberg">UpdateSchema</a>&nbsp;requireColumn&#8203;(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="#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 id="deleteColumn(java.lang.String)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>deleteColumn</h4>
<pre class="methodSignature"><a href="UpdateSchema.html" title="interface in org.apache.iceberg">UpdateSchema</a>&nbsp;deleteColumn&#8203;(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="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 id="moveFirst(java.lang.String)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>moveFirst</h4>
<pre class="methodSignature"><a href="UpdateSchema.html" title="interface in org.apache.iceberg">UpdateSchema</a>&nbsp;moveFirst&#8203;(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 id="moveBefore(java.lang.String,java.lang.String)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>moveBefore</h4>
<pre class="methodSignature"><a href="UpdateSchema.html" title="interface in org.apache.iceberg">UpdateSchema</a>&nbsp;moveBefore&#8203;(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="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 id="moveAfter(java.lang.String,java.lang.String)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>moveAfter</h4>
<pre class="methodSignature"><a href="UpdateSchema.html" title="interface in org.apache.iceberg">UpdateSchema</a>&nbsp;moveAfter&#8203;(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="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 id="unionByNameWith(org.apache.iceberg.Schema)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>unionByNameWith</h4>
<pre class="methodSignature"><a href="UpdateSchema.html" title="interface in org.apache.iceberg">UpdateSchema</a>&nbsp;unionByNameWith&#8203;(<a href="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="#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="#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="#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 id="setIdentifierFields(java.util.Collection)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setIdentifierFields</h4>
<pre class="methodSignature"><a href="UpdateSchema.html" title="interface in org.apache.iceberg">UpdateSchema</a>&nbsp;setIdentifierFields&#8203;(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="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 id="setIdentifierFields(java.lang.String...)">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>setIdentifierFields</h4>
<pre class="methodSignature">default&nbsp;<a href="UpdateSchema.html" title="interface in org.apache.iceberg">UpdateSchema</a>&nbsp;setIdentifierFields&#8203;(java.lang.String...&nbsp;names)</pre>
<div class="block">Set the identifier fields given some field names.
 See <a href="#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>
</section>
</li>
</ul>
</div>
</div>
</main>
<!-- ========= END OF CLASS DATA ========= -->
<footer role="contentinfo">
<nav role="navigation">
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a id="navbar.bottom">
<!--   -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.bottom.firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../index.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" id="allclasses_navbar_bottom">
<li><a href="../../../allclasses.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>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</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 id="skip.navbar.bottom">
<!--   -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</nav>
</footer>
</body>
</html>
