<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc -->
<title>UpdateSchema</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<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":18,"i10":6,"i11":6,"i12":6,"i13":6,"i14":6,"i15":6,"i16":6,"i17":18,"i18":6,"i19":6,"i20":6,"i21":18,"i22":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>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="#caseSensitive(boolean)">caseSensitive</a></span>&#8203;(boolean&nbsp;caseSensitive)</code></th>
<td class="colLast">
<div class="block">Determines if the case of schema needs to be considered when comparing column names</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="#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="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="#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="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="#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="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="#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="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="#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="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="#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="i16" 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="#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="i17" class="rowColor">
<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="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="#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="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="#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="i20" 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="#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="i21" class="rowColor">
<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="i22" 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="#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="blockList">
<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>
<a id="caseSensitive(boolean)">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>caseSensitive</h4>
<pre class="methodSignature">default&nbsp;<a href="UpdateSchema.html" title="interface in org.apache.iceberg">UpdateSchema</a>&nbsp;caseSensitive&#8203;(boolean&nbsp;caseSensitive)</pre>
<div class="block">Determines if the case of schema needs to be considered when comparing column names</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>caseSensitive</code> - when false case is not considered in column name comparisons.</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>
