blob: 636b64ecd4ace895db721ae1612e6e8cf4d58472 [file] [log] [blame]
<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc -->
<title>SnapshotUtil</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="SnapshotUtil";
}
}
catch(err) {
}
//-->
var data = {"i0":9,"i1":9,"i2":9,"i3":9,"i4":9,"i5":9,"i6":9,"i7":9,"i8":9,"i9":9,"i10":9,"i11":9,"i12":9,"i13":9,"i14":9,"i15":9,"i16":9,"i17":9,"i18":9};
var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],8:["t4","Concrete 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.util</a></div>
<h2 title="Class SnapshotUtil" class="title">Class SnapshotUtil</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li>java.lang.Object</li>
<li>
<ul class="inheritance">
<li>org.apache.iceberg.util.SnapshotUtil</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<hr>
<pre>public class <span class="typeNameLabel">SnapshotUtil</span>
extends java.lang.Object</pre>
</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="t1" class="tableTab"><span><a href="javascript:show(1);">Static Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete 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>static java.util.List&lt;java.lang.Long&gt;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#ancestorIds(org.apache.iceberg.Snapshot,java.util.function.Function)">ancestorIds</a></span>&#8203;(<a href="../Snapshot.html" title="interface in org.apache.iceberg">Snapshot</a>&nbsp;snapshot,
java.util.function.Function&lt;java.lang.Long,&#8203;<a href="../Snapshot.html" title="interface in org.apache.iceberg">Snapshot</a>&gt;&nbsp;lookup)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>static java.lang.Iterable&lt;java.lang.Long&gt;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#ancestorIdsBetween(long,java.lang.Long,java.util.function.Function)">ancestorIdsBetween</a></span>&#8203;(long&nbsp;latestSnapshotId,
java.lang.Long&nbsp;oldestSnapshotId,
java.util.function.Function&lt;java.lang.Long,&#8203;<a href="../Snapshot.html" title="interface in org.apache.iceberg">Snapshot</a>&gt;&nbsp;lookup)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>static java.lang.Iterable&lt;<a href="../Snapshot.html" title="interface in org.apache.iceberg">Snapshot</a>&gt;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#ancestorsBetween(long,java.lang.Long,java.util.function.Function)">ancestorsBetween</a></span>&#8203;(long&nbsp;latestSnapshotId,
java.lang.Long&nbsp;oldestSnapshotId,
java.util.function.Function&lt;java.lang.Long,&#8203;<a href="../Snapshot.html" title="interface in org.apache.iceberg">Snapshot</a>&gt;&nbsp;lookup)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>static java.lang.Iterable&lt;<a href="../Snapshot.html" title="interface in org.apache.iceberg">Snapshot</a>&gt;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#ancestorsOf(long,java.util.function.Function)">ancestorsOf</a></span>&#8203;(long&nbsp;snapshotId,
java.util.function.Function&lt;java.lang.Long,&#8203;<a href="../Snapshot.html" title="interface in org.apache.iceberg">Snapshot</a>&gt;&nbsp;lookup)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>static java.util.List&lt;java.lang.Long&gt;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#currentAncestorIds(org.apache.iceberg.Table)">currentAncestorIds</a></span>&#8203;(<a href="../Table.html" title="interface in org.apache.iceberg">Table</a>&nbsp;table)</code></th>
<td class="colLast">
<div class="block">Return the snapshot IDs for the ancestors of the current table state.</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code>static java.lang.Iterable&lt;<a href="../Snapshot.html" title="interface in org.apache.iceberg">Snapshot</a>&gt;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#currentAncestors(org.apache.iceberg.Table)">currentAncestors</a></span>&#8203;(<a href="../Table.html" title="interface in org.apache.iceberg">Table</a>&nbsp;table)</code></th>
<td class="colLast">
<div class="block">Returns an iterable that traverses the table's snapshots from the current to the last known ancestor.</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code>static boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isAncestorOf(long,long,java.util.function.Function)">isAncestorOf</a></span>&#8203;(long&nbsp;snapshotId,
long&nbsp;ancestorSnapshotId,
java.util.function.Function&lt;java.lang.Long,&#8203;<a href="../Snapshot.html" title="interface in org.apache.iceberg">Snapshot</a>&gt;&nbsp;lookup)</code></th>
<td class="colLast">
<div class="block">Returns whether ancestorSnapshotId is an ancestor of snapshotId using the given lookup function.</div>
</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code>static boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isAncestorOf(org.apache.iceberg.Table,long)">isAncestorOf</a></span>&#8203;(<a href="../Table.html" title="interface in org.apache.iceberg">Table</a>&nbsp;table,
long&nbsp;ancestorSnapshotId)</code></th>
<td class="colLast">
<div class="block">Returns whether ancestorSnapshotId is an ancestor of the table's current state.</div>
</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code>static boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isAncestorOf(org.apache.iceberg.Table,long,long)">isAncestorOf</a></span>&#8203;(<a href="../Table.html" title="interface in org.apache.iceberg">Table</a>&nbsp;table,
long&nbsp;snapshotId,
long&nbsp;ancestorSnapshotId)</code></th>
<td class="colLast">
<div class="block">Returns whether ancestorSnapshotId is an ancestor of snapshotId.</div>
</td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code>static boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isParentAncestorOf(org.apache.iceberg.Table,long,long)">isParentAncestorOf</a></span>&#8203;(<a href="../Table.html" title="interface in org.apache.iceberg">Table</a>&nbsp;table,
long&nbsp;snapshotId,
long&nbsp;ancestorParentSnapshotId)</code></th>
<td class="colLast">
<div class="block">Returns whether some ancestor of snapshotId has parentId matches ancestorParentSnapshotId</div>
</td>
</tr>
<tr id="i10" class="altColor">
<td class="colFirst"><code>static java.util.List&lt;<a href="../DataFile.html" title="interface in org.apache.iceberg">DataFile</a>&gt;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#newFiles(java.lang.Long,long,java.util.function.Function,org.apache.iceberg.io.FileIO)">newFiles</a></span>&#8203;(java.lang.Long&nbsp;baseSnapshotId,
long&nbsp;latestSnapshotId,
java.util.function.Function&lt;java.lang.Long,&#8203;<a href="../Snapshot.html" title="interface in org.apache.iceberg">Snapshot</a>&gt;&nbsp;lookup,
<a href="../io/FileIO.html" title="interface in org.apache.iceberg.io">FileIO</a>&nbsp;io)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i11" class="rowColor">
<td class="colFirst"><code>static <a href="../Snapshot.html" title="interface in org.apache.iceberg">Snapshot</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#oldestAncestor(org.apache.iceberg.Table)">oldestAncestor</a></span>&#8203;(<a href="../Table.html" title="interface in org.apache.iceberg">Table</a>&nbsp;table)</code></th>
<td class="colLast">
<div class="block">Traverses the history of the table's current snapshot and finds the oldest Snapshot.</div>
</td>
</tr>
<tr id="i12" class="altColor">
<td class="colFirst"><code>static <a href="../Snapshot.html" title="interface in org.apache.iceberg">Snapshot</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#oldestAncestorAfter(org.apache.iceberg.Table,long)">oldestAncestorAfter</a></span>&#8203;(<a href="../Table.html" title="interface in org.apache.iceberg">Table</a>&nbsp;table,
long&nbsp;timestampMillis)</code></th>
<td class="colLast">
<div class="block">Traverses the history of the table's current snapshot and finds the first snapshot committed after the given time.</div>
</td>
</tr>
<tr id="i13" class="rowColor">
<td class="colFirst"><code>static <a href="../Snapshot.html" title="interface in org.apache.iceberg">Snapshot</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#oldestAncestorOf(long,java.util.function.Function)">oldestAncestorOf</a></span>&#8203;(long&nbsp;snapshotId,
java.util.function.Function&lt;java.lang.Long,&#8203;<a href="../Snapshot.html" title="interface in org.apache.iceberg">Snapshot</a>&gt;&nbsp;lookup)</code></th>
<td class="colLast">
<div class="block">Traverses the history and finds the oldest ancestor of the specified snapshot.</div>
</td>
</tr>
<tr id="i14" class="altColor">
<td class="colFirst"><code>static <a href="../Schema.html" title="class in org.apache.iceberg">Schema</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#schemaFor(org.apache.iceberg.Table,long)">schemaFor</a></span>&#8203;(<a href="../Table.html" title="interface in org.apache.iceberg">Table</a>&nbsp;table,
long&nbsp;snapshotId)</code></th>
<td class="colLast">
<div class="block">Returns the schema of the table for the specified snapshot.</div>
</td>
</tr>
<tr id="i15" class="rowColor">
<td class="colFirst"><code>static <a href="../Schema.html" title="class in org.apache.iceberg">Schema</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#schemaFor(org.apache.iceberg.Table,java.lang.Long,java.lang.Long)">schemaFor</a></span>&#8203;(<a href="../Table.html" title="interface in org.apache.iceberg">Table</a>&nbsp;table,
java.lang.Long&nbsp;snapshotId,
java.lang.Long&nbsp;timestampMillis)</code></th>
<td class="colLast">
<div class="block">Convenience method for returning the schema of the table for a snapshot,
when we have a snapshot id or a timestamp.</div>
</td>
</tr>
<tr id="i16" class="altColor">
<td class="colFirst"><code>static <a href="../Snapshot.html" title="interface in org.apache.iceberg">Snapshot</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#snapshotAfter(org.apache.iceberg.Table,long)">snapshotAfter</a></span>&#8203;(<a href="../Table.html" title="interface in org.apache.iceberg">Table</a>&nbsp;table,
long&nbsp;snapshotId)</code></th>
<td class="colLast">
<div class="block">Traverses the history of the table's current snapshot and finds the snapshot with the given snapshot id as its
parent.</div>
</td>
</tr>
<tr id="i17" class="rowColor">
<td class="colFirst"><code>static long</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#snapshotIdAsOfTime(org.apache.iceberg.Table,long)">snapshotIdAsOfTime</a></span>&#8203;(<a href="../Table.html" title="interface in org.apache.iceberg">Table</a>&nbsp;table,
long&nbsp;timestampMillis)</code></th>
<td class="colLast">
<div class="block">Returns the ID of the most recent snapshot for the table as of the timestamp.</div>
</td>
</tr>
<tr id="i18" class="altColor">
<td class="colFirst"><code>static java.util.List&lt;java.lang.Long&gt;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#snapshotIdsBetween(org.apache.iceberg.Table,long,long)">snapshotIdsBetween</a></span>&#8203;(<a href="../Table.html" title="interface in org.apache.iceberg">Table</a>&nbsp;table,
long&nbsp;fromSnapshotId,
long&nbsp;toSnapshotId)</code></th>
<td class="colLast">
<div class="block">Returns list of snapshot ids in the range - (fromSnapshotId, toSnapshotId]</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.java.lang.Object">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.Object</h3>
<code>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</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="isAncestorOf(org.apache.iceberg.Table,long,long)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isAncestorOf</h4>
<pre class="methodSignature">public static&nbsp;boolean&nbsp;isAncestorOf&#8203;(<a href="../Table.html" title="interface in org.apache.iceberg">Table</a>&nbsp;table,
long&nbsp;snapshotId,
long&nbsp;ancestorSnapshotId)</pre>
<div class="block">Returns whether ancestorSnapshotId is an ancestor of snapshotId.</div>
</li>
</ul>
<a id="isAncestorOf(long,long,java.util.function.Function)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isAncestorOf</h4>
<pre class="methodSignature">public static&nbsp;boolean&nbsp;isAncestorOf&#8203;(long&nbsp;snapshotId,
long&nbsp;ancestorSnapshotId,
java.util.function.Function&lt;java.lang.Long,&#8203;<a href="../Snapshot.html" title="interface in org.apache.iceberg">Snapshot</a>&gt;&nbsp;lookup)</pre>
<div class="block">Returns whether ancestorSnapshotId is an ancestor of snapshotId using the given lookup function.</div>
</li>
</ul>
<a id="isAncestorOf(org.apache.iceberg.Table,long)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isAncestorOf</h4>
<pre class="methodSignature">public static&nbsp;boolean&nbsp;isAncestorOf&#8203;(<a href="../Table.html" title="interface in org.apache.iceberg">Table</a>&nbsp;table,
long&nbsp;ancestorSnapshotId)</pre>
<div class="block">Returns whether ancestorSnapshotId is an ancestor of the table's current state.</div>
</li>
</ul>
<a id="isParentAncestorOf(org.apache.iceberg.Table,long,long)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isParentAncestorOf</h4>
<pre class="methodSignature">public static&nbsp;boolean&nbsp;isParentAncestorOf&#8203;(<a href="../Table.html" title="interface in org.apache.iceberg">Table</a>&nbsp;table,
long&nbsp;snapshotId,
long&nbsp;ancestorParentSnapshotId)</pre>
<div class="block">Returns whether some ancestor of snapshotId has parentId matches ancestorParentSnapshotId</div>
</li>
</ul>
<a id="currentAncestors(org.apache.iceberg.Table)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>currentAncestors</h4>
<pre class="methodSignature">public static&nbsp;java.lang.Iterable&lt;<a href="../Snapshot.html" title="interface in org.apache.iceberg">Snapshot</a>&gt;&nbsp;currentAncestors&#8203;(<a href="../Table.html" title="interface in org.apache.iceberg">Table</a>&nbsp;table)</pre>
<div class="block">Returns an iterable that traverses the table's snapshots from the current to the last known ancestor.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>table</code> - a Table</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>an iterable from the table's current snapshot to its last known ancestor</dd>
</dl>
</li>
</ul>
<a id="currentAncestorIds(org.apache.iceberg.Table)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>currentAncestorIds</h4>
<pre class="methodSignature">public static&nbsp;java.util.List&lt;java.lang.Long&gt;&nbsp;currentAncestorIds&#8203;(<a href="../Table.html" title="interface in org.apache.iceberg">Table</a>&nbsp;table)</pre>
<div class="block">Return the snapshot IDs for the ancestors of the current table state.
<p>
Ancestor IDs are ordered by commit time, descending. The first ID is the current snapshot, followed by its parent,
and so on.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>table</code> - a <a href="../Table.html" title="interface in org.apache.iceberg"><code>Table</code></a></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>a set of snapshot IDs of the known ancestor snapshots, including the current ID</dd>
</dl>
</li>
</ul>
<a id="oldestAncestor(org.apache.iceberg.Table)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>oldestAncestor</h4>
<pre class="methodSignature">public static&nbsp;<a href="../Snapshot.html" title="interface in org.apache.iceberg">Snapshot</a>&nbsp;oldestAncestor&#8203;(<a href="../Table.html" title="interface in org.apache.iceberg">Table</a>&nbsp;table)</pre>
<div class="block">Traverses the history of the table's current snapshot and finds the oldest Snapshot.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>null if there is no current snapshot in the table, else the oldest Snapshot.</dd>
</dl>
</li>
</ul>
<a id="oldestAncestorOf(long,java.util.function.Function)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>oldestAncestorOf</h4>
<pre class="methodSignature">public static&nbsp;<a href="../Snapshot.html" title="interface in org.apache.iceberg">Snapshot</a>&nbsp;oldestAncestorOf&#8203;(long&nbsp;snapshotId,
java.util.function.Function&lt;java.lang.Long,&#8203;<a href="../Snapshot.html" title="interface in org.apache.iceberg">Snapshot</a>&gt;&nbsp;lookup)</pre>
<div class="block">Traverses the history and finds the oldest ancestor of the specified snapshot.
<p>
Oldest ancestor is defined as the ancestor snapshot whose parent is null or has been expired.
If the specified snapshot has no parent or parent has been expired,
the specified snapshot itself is returned.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>snapshotId</code> - the ID of the snapshot to find the oldest ancestor</dd>
<dd><code>lookup</code> - lookup function from snapshot ID to snapshot</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>null if there is no current snapshot in the table, else the oldest Snapshot.</dd>
</dl>
</li>
</ul>
<a id="ancestorsOf(long,java.util.function.Function)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>ancestorsOf</h4>
<pre class="methodSignature">public static&nbsp;java.lang.Iterable&lt;<a href="../Snapshot.html" title="interface in org.apache.iceberg">Snapshot</a>&gt;&nbsp;ancestorsOf&#8203;(long&nbsp;snapshotId,
java.util.function.Function&lt;java.lang.Long,&#8203;<a href="../Snapshot.html" title="interface in org.apache.iceberg">Snapshot</a>&gt;&nbsp;lookup)</pre>
</li>
</ul>
<a id="oldestAncestorAfter(org.apache.iceberg.Table,long)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>oldestAncestorAfter</h4>
<pre class="methodSignature">public static&nbsp;<a href="../Snapshot.html" title="interface in org.apache.iceberg">Snapshot</a>&nbsp;oldestAncestorAfter&#8203;(<a href="../Table.html" title="interface in org.apache.iceberg">Table</a>&nbsp;table,
long&nbsp;timestampMillis)</pre>
<div class="block">Traverses the history of the table's current snapshot and finds the first snapshot committed after the given time.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>table</code> - a table</dd>
<dd><code>timestampMillis</code> - a timestamp in milliseconds</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the first snapshot after the given timestamp, or null if the current snapshot is older than the timestamp</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.IllegalStateException</code> - if the first ancestor after the given time can't be determined</dd>
</dl>
</li>
</ul>
<a id="snapshotIdsBetween(org.apache.iceberg.Table,long,long)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>snapshotIdsBetween</h4>
<pre class="methodSignature">public static&nbsp;java.util.List&lt;java.lang.Long&gt;&nbsp;snapshotIdsBetween&#8203;(<a href="../Table.html" title="interface in org.apache.iceberg">Table</a>&nbsp;table,
long&nbsp;fromSnapshotId,
long&nbsp;toSnapshotId)</pre>
<div class="block">Returns list of snapshot ids in the range - (fromSnapshotId, toSnapshotId]
<p>
This method assumes that fromSnapshotId is an ancestor of toSnapshotId.</div>
</li>
</ul>
<a id="ancestorIdsBetween(long,java.lang.Long,java.util.function.Function)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>ancestorIdsBetween</h4>
<pre class="methodSignature">public static&nbsp;java.lang.Iterable&lt;java.lang.Long&gt;&nbsp;ancestorIdsBetween&#8203;(long&nbsp;latestSnapshotId,
java.lang.Long&nbsp;oldestSnapshotId,
java.util.function.Function&lt;java.lang.Long,&#8203;<a href="../Snapshot.html" title="interface in org.apache.iceberg">Snapshot</a>&gt;&nbsp;lookup)</pre>
</li>
</ul>
<a id="ancestorsBetween(long,java.lang.Long,java.util.function.Function)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>ancestorsBetween</h4>
<pre class="methodSignature">public static&nbsp;java.lang.Iterable&lt;<a href="../Snapshot.html" title="interface in org.apache.iceberg">Snapshot</a>&gt;&nbsp;ancestorsBetween&#8203;(long&nbsp;latestSnapshotId,
java.lang.Long&nbsp;oldestSnapshotId,
java.util.function.Function&lt;java.lang.Long,&#8203;<a href="../Snapshot.html" title="interface in org.apache.iceberg">Snapshot</a>&gt;&nbsp;lookup)</pre>
</li>
</ul>
<a id="ancestorIds(org.apache.iceberg.Snapshot,java.util.function.Function)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>ancestorIds</h4>
<pre class="methodSignature">public static&nbsp;java.util.List&lt;java.lang.Long&gt;&nbsp;ancestorIds&#8203;(<a href="../Snapshot.html" title="interface in org.apache.iceberg">Snapshot</a>&nbsp;snapshot,
java.util.function.Function&lt;java.lang.Long,&#8203;<a href="../Snapshot.html" title="interface in org.apache.iceberg">Snapshot</a>&gt;&nbsp;lookup)</pre>
</li>
</ul>
<a id="newFiles(java.lang.Long,long,java.util.function.Function,org.apache.iceberg.io.FileIO)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>newFiles</h4>
<pre class="methodSignature">public static&nbsp;java.util.List&lt;<a href="../DataFile.html" title="interface in org.apache.iceberg">DataFile</a>&gt;&nbsp;newFiles&#8203;(java.lang.Long&nbsp;baseSnapshotId,
long&nbsp;latestSnapshotId,
java.util.function.Function&lt;java.lang.Long,&#8203;<a href="../Snapshot.html" title="interface in org.apache.iceberg">Snapshot</a>&gt;&nbsp;lookup,
<a href="../io/FileIO.html" title="interface in org.apache.iceberg.io">FileIO</a>&nbsp;io)</pre>
</li>
</ul>
<a id="snapshotAfter(org.apache.iceberg.Table,long)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>snapshotAfter</h4>
<pre class="methodSignature">public static&nbsp;<a href="../Snapshot.html" title="interface in org.apache.iceberg">Snapshot</a>&nbsp;snapshotAfter&#8203;(<a href="../Table.html" title="interface in org.apache.iceberg">Table</a>&nbsp;table,
long&nbsp;snapshotId)</pre>
<div class="block">Traverses the history of the table's current snapshot and finds the snapshot with the given snapshot id as its
parent.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the snapshot for which the given snapshot is the parent</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.IllegalArgumentException</code> - when the given snapshotId is not found in the table</dd>
<dd><code>java.lang.IllegalStateException</code> - when the given snapshotId is not an ancestor of the current table state</dd>
</dl>
</li>
</ul>
<a id="snapshotIdAsOfTime(org.apache.iceberg.Table,long)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>snapshotIdAsOfTime</h4>
<pre class="methodSignature">public static&nbsp;long&nbsp;snapshotIdAsOfTime&#8203;(<a href="../Table.html" title="interface in org.apache.iceberg">Table</a>&nbsp;table,
long&nbsp;timestampMillis)</pre>
<div class="block">Returns the ID of the most recent snapshot for the table as of the timestamp.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>table</code> - a <a href="../Table.html" title="interface in org.apache.iceberg"><code>Table</code></a></dd>
<dd><code>timestampMillis</code> - the timestamp in millis since the Unix epoch</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the snapshot ID</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.IllegalArgumentException</code> - when no snapshot is found in the table
older than the timestamp</dd>
</dl>
</li>
</ul>
<a id="schemaFor(org.apache.iceberg.Table,long)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>schemaFor</h4>
<pre class="methodSignature">public static&nbsp;<a href="../Schema.html" title="class in org.apache.iceberg">Schema</a>&nbsp;schemaFor&#8203;(<a href="../Table.html" title="interface in org.apache.iceberg">Table</a>&nbsp;table,
long&nbsp;snapshotId)</pre>
<div class="block">Returns the schema of the table for the specified snapshot.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>table</code> - a <a href="../Table.html" title="interface in org.apache.iceberg"><code>Table</code></a></dd>
<dd><code>snapshotId</code> - the ID of the snapshot</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the schema</dd>
</dl>
</li>
</ul>
<a id="schemaFor(org.apache.iceberg.Table,java.lang.Long,java.lang.Long)">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>schemaFor</h4>
<pre class="methodSignature">public static&nbsp;<a href="../Schema.html" title="class in org.apache.iceberg">Schema</a>&nbsp;schemaFor&#8203;(<a href="../Table.html" title="interface in org.apache.iceberg">Table</a>&nbsp;table,
java.lang.Long&nbsp;snapshotId,
java.lang.Long&nbsp;timestampMillis)</pre>
<div class="block">Convenience method for returning the schema of the table for a snapshot,
when we have a snapshot id or a timestamp. Only one of them should be specified
(non-null), or an IllegalArgumentException is thrown.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>table</code> - a <a href="../Table.html" title="interface in org.apache.iceberg"><code>Table</code></a></dd>
<dd><code>snapshotId</code> - the ID of the snapshot</dd>
<dd><code>timestampMillis</code> - the timestamp in millis since the Unix epoch</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the schema</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.IllegalArgumentException</code> - if both snapshotId and timestampMillis are non-null</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>