blob: 0403c37fcafd36510e0cc7a6f38bc4f8b1c51666 [file] [log] [blame]
<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc -->
<title>OverwriteFiles</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="OverwriteFiles";
}
}
catch(err) {
}
//-->
var data = {"i0":6,"i1":6,"i2":6,"i3":6,"i4":6,"i5":6,"i6":6,"i7":50,"i8":6,"i9":6};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],4:["t3","Abstract Methods"],16:["t5","Default Methods"],32:["t6","Deprecated 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 OverwriteFiles" class="title">Interface OverwriteFiles</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="Snapshot.html" title="interface in org.apache.iceberg">Snapshot</a>&gt;</code>, <code><a href="SnapshotUpdate.html" title="interface in org.apache.iceberg">SnapshotUpdate</a>&lt;<a href="OverwriteFiles.html" title="interface in org.apache.iceberg">OverwriteFiles</a>&gt;</code></dd>
</dl>
<dl>
<dt>All Known Implementing Classes:</dt>
<dd><code><a href="BaseOverwriteFiles.html" title="class in org.apache.iceberg">BaseOverwriteFiles</a></code></dd>
</dl>
<hr>
<pre>public interface <span class="typeNameLabel">OverwriteFiles</span>
extends <a href="SnapshotUpdate.html" title="interface in org.apache.iceberg">SnapshotUpdate</a>&lt;<a href="OverwriteFiles.html" title="interface in org.apache.iceberg">OverwriteFiles</a>&gt;</pre>
<div class="block">API for overwriting files in a table.
<p>
This API accumulates file additions and produces a new <a href="Snapshot.html" title="interface in org.apache.iceberg"><code>Snapshot</code></a> of the table by replacing
all the deleted files with the set of additions. This operation is used to implement idempotent
writes that always replace a section of a table with new data or update/delete operations that
eagerly overwrite files.
<p>
Overwrites can be validated. The default validation mode is idempotent, meaning the overwrite is
correct and should be committed out regardless of other concurrent changes to the table.
For example, this can be used for replacing all the data for day D with query results.
Alternatively, this API can be configured for overwriting certain files with their filtered
versions while ensuring no new data that would need to be filtered has been added.
<p>
When committing, these changes will be applied to the latest table snapshot. Commit conflicts
will be resolved by applying the changes to the new latest snapshot and reattempting the commit.</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><span id="t6" class="tableTab"><span><a href="javascript:show(32);">Deprecated 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><a href="OverwriteFiles.html" title="interface in org.apache.iceberg">OverwriteFiles</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#addFile(org.apache.iceberg.DataFile)">addFile</a></span>&#8203;(<a href="DataFile.html" title="interface in org.apache.iceberg">DataFile</a>&nbsp;file)</code></th>
<td class="colLast">
<div class="block">Add a <a href="DataFile.html" title="interface in org.apache.iceberg"><code>DataFile</code></a> to the table.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code><a href="OverwriteFiles.html" title="interface in org.apache.iceberg">OverwriteFiles</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">Enables or disables case sensitive expression binding for validations that accept expressions.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code><a href="OverwriteFiles.html" title="interface in org.apache.iceberg">OverwriteFiles</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#conflictDetectionFilter(org.apache.iceberg.expressions.Expression)">conflictDetectionFilter</a></span>&#8203;(<a href="expressions/Expression.html" title="interface in org.apache.iceberg.expressions">Expression</a>&nbsp;conflictDetectionFilter)</code></th>
<td class="colLast">
<div class="block">Sets a conflict detection filter used to validate concurrently added data and delete files.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code><a href="OverwriteFiles.html" title="interface in org.apache.iceberg">OverwriteFiles</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#deleteFile(org.apache.iceberg.DataFile)">deleteFile</a></span>&#8203;(<a href="DataFile.html" title="interface in org.apache.iceberg">DataFile</a>&nbsp;file)</code></th>
<td class="colLast">
<div class="block">Delete a <a href="DataFile.html" title="interface in org.apache.iceberg"><code>DataFile</code></a> from the table.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code><a href="OverwriteFiles.html" title="interface in org.apache.iceberg">OverwriteFiles</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#overwriteByRowFilter(org.apache.iceberg.expressions.Expression)">overwriteByRowFilter</a></span>&#8203;(<a href="expressions/Expression.html" title="interface in org.apache.iceberg.expressions">Expression</a>&nbsp;expr)</code></th>
<td class="colLast">
<div class="block">Delete files that match an <a href="expressions/Expression.html" title="interface in org.apache.iceberg.expressions"><code>Expression</code></a> on data rows from the table.</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code><a href="OverwriteFiles.html" title="interface in org.apache.iceberg">OverwriteFiles</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#validateAddedFilesMatchOverwriteFilter()">validateAddedFilesMatchOverwriteFilter</a></span>()</code></th>
<td class="colLast">
<div class="block">Signal that each file added to the table must match the overwrite expression.</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code><a href="OverwriteFiles.html" title="interface in org.apache.iceberg">OverwriteFiles</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#validateFromSnapshot(long)">validateFromSnapshot</a></span>&#8203;(long&nbsp;snapshotId)</code></th>
<td class="colLast">
<div class="block">Set the snapshot ID used in any reads for this operation.</div>
</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code>default <a href="OverwriteFiles.html" title="interface in org.apache.iceberg">OverwriteFiles</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#validateNoConflictingAppends(org.apache.iceberg.expressions.Expression)">validateNoConflictingAppends</a></span>&#8203;(<a href="expressions/Expression.html" title="interface in org.apache.iceberg.expressions">Expression</a>&nbsp;conflictDetectionFilter)</code></th>
<td class="colLast">
<div class="block"><span class="deprecatedLabel">Deprecated.</span>
<div class="deprecationComment">since 0.13.0, will be removed in 0.14.0; use <a href="#conflictDetectionFilter(org.apache.iceberg.expressions.Expression)"><code>conflictDetectionFilter(Expression)</code></a> and
<a href="#validateNoConflictingData()"><code>validateNoConflictingData()</code></a> instead.</div>
</div>
</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code><a href="OverwriteFiles.html" title="interface in org.apache.iceberg">OverwriteFiles</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#validateNoConflictingData()">validateNoConflictingData</a></span>()</code></th>
<td class="colLast">
<div class="block">Enables validation that data added concurrently does not conflict with this commit's operation.</div>
</td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code><a href="OverwriteFiles.html" title="interface in org.apache.iceberg">OverwriteFiles</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#validateNoConflictingDeletes()">validateNoConflictingDeletes</a></span>()</code></th>
<td class="colLast">
<div class="block">Enables validation that deletes that happened concurrently do not conflict with this commit's operation.</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>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.org.apache.iceberg.SnapshotUpdate">
<!-- -->
</a>
<h3>Methods inherited from interface&nbsp;org.apache.iceberg.<a href="SnapshotUpdate.html" title="interface in org.apache.iceberg">SnapshotUpdate</a></h3>
<code><a href="SnapshotUpdate.html#deleteWith(java.util.function.Consumer)">deleteWith</a>, <a href="SnapshotUpdate.html#set(java.lang.String,java.lang.String)">set</a>, <a href="SnapshotUpdate.html#stageOnly()">stageOnly</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="overwriteByRowFilter(org.apache.iceberg.expressions.Expression)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>overwriteByRowFilter</h4>
<pre class="methodSignature"><a href="OverwriteFiles.html" title="interface in org.apache.iceberg">OverwriteFiles</a>&nbsp;overwriteByRowFilter&#8203;(<a href="expressions/Expression.html" title="interface in org.apache.iceberg.expressions">Expression</a>&nbsp;expr)</pre>
<div class="block">Delete files that match an <a href="expressions/Expression.html" title="interface in org.apache.iceberg.expressions"><code>Expression</code></a> on data rows from the table.
<p>
A file is selected to be deleted by the expression if it could contain any rows that match the
expression (candidate files are selected using an
<a href="expressions/Projections.html#inclusive(org.apache.iceberg.PartitionSpec)"><code>inclusive projection</code></a>). These candidate files are
deleted if all of the rows in the file must match the expression (the partition data matches
the expression's <a href="expressions/Projections.html#strict(org.apache.iceberg.PartitionSpec)"><code>Projections.strict(PartitionSpec)</code></a> strict projection}). This guarantees
that files are deleted if and only if all rows in the file must match the expression.
<p>
Files that may contain some rows that match the expression and some rows that do not will
result in a <a href="exceptions/ValidationException.html" title="class in org.apache.iceberg.exceptions"><code>ValidationException</code></a>.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>expr</code> - an expression on rows in the table</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>this for method chaining</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="exceptions/ValidationException.html" title="class in org.apache.iceberg.exceptions">ValidationException</a></code> - If a file can contain both rows that match and rows that do not</dd>
</dl>
</li>
</ul>
<a id="addFile(org.apache.iceberg.DataFile)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>addFile</h4>
<pre class="methodSignature"><a href="OverwriteFiles.html" title="interface in org.apache.iceberg">OverwriteFiles</a>&nbsp;addFile&#8203;(<a href="DataFile.html" title="interface in org.apache.iceberg">DataFile</a>&nbsp;file)</pre>
<div class="block">Add a <a href="DataFile.html" title="interface in org.apache.iceberg"><code>DataFile</code></a> to the table.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>file</code> - a data file</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>this for method chaining</dd>
</dl>
</li>
</ul>
<a id="deleteFile(org.apache.iceberg.DataFile)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>deleteFile</h4>
<pre class="methodSignature"><a href="OverwriteFiles.html" title="interface in org.apache.iceberg">OverwriteFiles</a>&nbsp;deleteFile&#8203;(<a href="DataFile.html" title="interface in org.apache.iceberg">DataFile</a>&nbsp;file)</pre>
<div class="block">Delete a <a href="DataFile.html" title="interface in org.apache.iceberg"><code>DataFile</code></a> from the table.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>file</code> - a data file</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>this for method chaining</dd>
</dl>
</li>
</ul>
<a id="validateAddedFilesMatchOverwriteFilter()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>validateAddedFilesMatchOverwriteFilter</h4>
<pre class="methodSignature"><a href="OverwriteFiles.html" title="interface in org.apache.iceberg">OverwriteFiles</a>&nbsp;validateAddedFilesMatchOverwriteFilter()</pre>
<div class="block">Signal that each file added to the table must match the overwrite expression.
<p>
If this method is called, each added file is validated on commit to ensure that it matches the
overwrite row filter. This is used to ensure that writes are idempotent: that files cannot
be added during a commit that would not be removed if the operation were run a second time.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>this for method chaining</dd>
</dl>
</li>
</ul>
<a id="validateFromSnapshot(long)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>validateFromSnapshot</h4>
<pre class="methodSignature"><a href="OverwriteFiles.html" title="interface in org.apache.iceberg">OverwriteFiles</a>&nbsp;validateFromSnapshot&#8203;(long&nbsp;snapshotId)</pre>
<div class="block">Set the snapshot ID used in any reads for this operation.
<p>
Validations will check changes after this snapshot ID. If the from snapshot is not set, all ancestor snapshots
through the table's initial snapshot are validated.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>snapshotId</code> - a snapshot ID</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>this for method chaining</dd>
</dl>
</li>
</ul>
<a id="caseSensitive(boolean)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>caseSensitive</h4>
<pre class="methodSignature"><a href="OverwriteFiles.html" title="interface in org.apache.iceberg">OverwriteFiles</a>&nbsp;caseSensitive&#8203;(boolean&nbsp;caseSensitive)</pre>
<div class="block">Enables or disables case sensitive expression binding for validations that accept expressions.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>caseSensitive</code> - whether expression binding should be case sensitive</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>this for method chaining</dd>
</dl>
</li>
</ul>
<a id="validateNoConflictingAppends(org.apache.iceberg.expressions.Expression)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>validateNoConflictingAppends</h4>
<pre class="methodSignature">@Deprecated
default&nbsp;<a href="OverwriteFiles.html" title="interface in org.apache.iceberg">OverwriteFiles</a>&nbsp;validateNoConflictingAppends&#8203;(<a href="expressions/Expression.html" title="interface in org.apache.iceberg.expressions">Expression</a>&nbsp;conflictDetectionFilter)</pre>
<div class="deprecationBlock"><span class="deprecatedLabel">Deprecated.</span>
<div class="deprecationComment">since 0.13.0, will be removed in 0.14.0; use <a href="#conflictDetectionFilter(org.apache.iceberg.expressions.Expression)"><code>conflictDetectionFilter(Expression)</code></a> and
<a href="#validateNoConflictingData()"><code>validateNoConflictingData()</code></a> instead.</div>
</div>
<div class="block">Enables validation that data files added concurrently do not conflict with this commit's operation.
<p>
This method should be called while committing non-idempotent overwrite operations.
If a concurrent operation commits a new file after the data was read and that file might
contain rows matching the specified conflict detection filter, the overwrite operation
will detect this and fail.
<p>
Calling this method with a correct conflict detection filter is required to maintain
serializable isolation for overwrite operations. Otherwise, the isolation level
will be snapshot isolation.
<p>
Validation applies to files added to the table since the snapshot passed to <a href="#validateFromSnapshot(long)"><code>validateFromSnapshot(long)</code></a>.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>conflictDetectionFilter</code> - an expression on rows in the table</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>this for method chaining</dd>
</dl>
</li>
</ul>
<a id="conflictDetectionFilter(org.apache.iceberg.expressions.Expression)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>conflictDetectionFilter</h4>
<pre class="methodSignature"><a href="OverwriteFiles.html" title="interface in org.apache.iceberg">OverwriteFiles</a>&nbsp;conflictDetectionFilter&#8203;(<a href="expressions/Expression.html" title="interface in org.apache.iceberg.expressions">Expression</a>&nbsp;conflictDetectionFilter)</pre>
<div class="block">Sets a conflict detection filter used to validate concurrently added data and delete files.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>conflictDetectionFilter</code> - an expression on rows in the table</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>this for method chaining</dd>
</dl>
</li>
</ul>
<a id="validateNoConflictingData()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>validateNoConflictingData</h4>
<pre class="methodSignature"><a href="OverwriteFiles.html" title="interface in org.apache.iceberg">OverwriteFiles</a>&nbsp;validateNoConflictingData()</pre>
<div class="block">Enables validation that data added concurrently does not conflict with this commit's operation.
<p>
This method should be called while committing non-idempotent overwrite operations.
If a concurrent operation commits a new file after the data was read and that file might
contain rows matching the specified conflict detection filter, the overwrite operation
will detect this and fail.
<p>
Calling this method with a correct conflict detection filter is required to maintain
isolation for non-idempotent overwrite operations.
<p>
Validation uses the conflict detection filter passed to <a href="#conflictDetectionFilter(org.apache.iceberg.expressions.Expression)"><code>conflictDetectionFilter(Expression)</code></a> and
applies to operations that happened after the snapshot passed to <a href="#validateFromSnapshot(long)"><code>validateFromSnapshot(long)</code></a>.
If the conflict detection filter is not set, any new data added concurrently will fail this
overwrite operation.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>this for method chaining</dd>
</dl>
</li>
</ul>
<a id="validateNoConflictingDeletes()">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>validateNoConflictingDeletes</h4>
<pre class="methodSignature"><a href="OverwriteFiles.html" title="interface in org.apache.iceberg">OverwriteFiles</a>&nbsp;validateNoConflictingDeletes()</pre>
<div class="block">Enables validation that deletes that happened concurrently do not conflict with this commit's operation.
<p>
Validating concurrent deletes is required during non-idempotent overwrite operations.
If a concurrent operation deletes data in one of the files being overwritten, the overwrite
operation must be aborted as it may undelete rows that were removed concurrently.
<p>
Calling this method with a correct conflict detection filter is required to maintain
isolation for non-idempotent overwrite operations.
<p>
Validation uses the conflict detection filter passed to <a href="#conflictDetectionFilter(org.apache.iceberg.expressions.Expression)"><code>conflictDetectionFilter(Expression)</code></a> and
applies to operations that happened after the snapshot passed to <a href="#validateFromSnapshot(long)"><code>validateFromSnapshot(long)</code></a>.
If the conflict detection filter is not set, this operation will use the row filter provided
in <a href="#overwriteByRowFilter(org.apache.iceberg.expressions.Expression)"><code>overwriteByRowFilter(Expression)</code></a> to check for new delete files and will ensure
there are no conflicting deletes for data files removed via <a href="#deleteFile(org.apache.iceberg.DataFile)"><code>deleteFile(DataFile)</code></a>.</div>
<dl>
<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>