stasis/je-7.5.11/docs/java/com/sleepycat/je/JoinCursor.html

559 lines
29 KiB
HTML
Raw Normal View History

2019-06-25 20:12:40 +00:00
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (1.8.0_151) on Tue Oct 31 17:36:45 EDT 2017 -->
<title>JoinCursor (Oracle - Berkeley DB Java Edition API)</title>
<meta name="date" content="2017-10-31">
<link rel="stylesheet" type="text/css" href="../../../style.css" title="Style">
<script type="text/javascript" src="../../../script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="JoinCursor (Oracle - Berkeley DB Java Edition API)";
}
}
catch(err) {
}
//-->
var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/JoinCursor.html">Use</a></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 class="aboutLanguage"><b>Berkeley DB Java Edition</b><br><font size=\"-1\"> version 7.5.11</font>
</div>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../com/sleepycat/je/JoinConfig.html" title="class in com.sleepycat.je"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../com/sleepycat/je/LockConflictException.html" title="class in com.sleepycat.je"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../index.html?com/sleepycat/je/JoinCursor.html" target="_top">Frames</a></li>
<li><a href="JoinCursor.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">com.sleepycat.je</div>
<h2 title="Class JoinCursor" class="title">Class JoinCursor</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li>java.lang.Object</li>
<li>
<ul class="inheritance">
<li>com.sleepycat.je.JoinCursor</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Implemented Interfaces:</dt>
<dd><a href="../../../com/sleepycat/je/ForwardCursor.html" title="interface in com.sleepycat.je">ForwardCursor</a>, java.io.Closeable, java.lang.AutoCloseable</dd>
</dl>
<hr>
<br>
<pre>public class <span class="typeNameLabel">JoinCursor</span>
extends java.lang.Object
implements <a href="../../../com/sleepycat/je/ForwardCursor.html" title="interface in com.sleepycat.je">ForwardCursor</a>, java.io.Closeable</pre>
<div class="block">A specialized join cursor for use in performing equality or natural joins on
secondary indices.
<p>A join cursor is returned when calling <a href="../../../com/sleepycat/je/Database.html#join-com.sleepycat.je.Cursor:A-com.sleepycat.je.JoinConfig-"><code>Database.join</code></a>.</p>
<p>To open a join cursor using two secondary cursors:</p>
<pre>
Transaction txn = ...
Database primaryDb = ...
SecondaryDatabase secondaryDb1 = ...
SecondaryDatabase secondaryDb2 = ...
<p>
SecondaryCursor cursor1 = null;
SecondaryCursor cursor2 = null;
JoinCursor joinCursor = null;
try {
DatabaseEntry key = new DatabaseEntry();
DatabaseEntry data = new DatabaseEntry();
<p>
cursor1 = secondaryDb1.openSecondaryCursor(txn, null);
cursor2 = secondaryDb2.openSecondaryCursor(txn, null);
<p>
key.setData(...); // initialize key for secondary index 1
OperationStatus status1 =
cursor1.getSearchKey(key, data, LockMode.DEFAULT);
key.setData(...); // initialize key for secondary index 2
OperationStatus status2 =
cursor2.getSearchKey(key, data, LockMode.DEFAULT);
<p>
if (status1 == OperationStatus.SUCCESS &amp;&amp;
status2 == OperationStatus.SUCCESS) {
<p>
SecondaryCursor[] cursors = {cursor1, cursor2};
joinCursor = primaryDb.join(cursors, null);
<p>
while (true) {
OperationStatus joinStatus = joinCursor.getNext(key, data,
LockMode.DEFAULT);
if (joinStatus == OperationStatus.SUCCESS) {
// Do something with the key and data.
} else {
break;
}
}
}
} finally {
if (cursor1 != null) {
cursor1.close();
}
if (cursor2 != null) {
cursor2.close();
}
if (joinCursor != null) {
joinCursor.close();
}
}
</pre>
<p>The join algorithm is described here so that its cost can be estimated and
compared to other approaches for performing a query. Say that N cursors are
provided for the join operation. According to the order they appear in the
array the cursors are labeled C(1) through C(n), and the keys at each cursor
position are labeled K(1) through K(n).</p>
<ol>
<li>Using C(1), the join algorithm iterates sequentially through all records
having K(1). This iteration is equivalent to a <a href="../../../com/sleepycat/je/Cursor.html#getNextDup-com.sleepycat.je.DatabaseEntry-com.sleepycat.je.DatabaseEntry-com.sleepycat.je.LockMode-"><code>Cursor.getNextDup</code></a> operation on the secondary index. The primary key of a
candidate record is determined in this manner. The primary record itself is
not retrieved and the primary database is not accessed.</li>
<li>For each candidate primary key found in step 1, a Btree lookup is
performed using C(2) through C(n), in that order. The Btree lookups are
exact searches to determine whether the candidate record also contains
secondary keys K(2) through K(n). The lookups are equivalent to a <a href="../../../com/sleepycat/je/Cursor.html#getSearchBoth-com.sleepycat.je.DatabaseEntry-com.sleepycat.je.DatabaseEntry-com.sleepycat.je.LockMode-"><code>Cursor.getSearchBoth</code></a> operation on the secondary index.
The primary record itself is not retrieved and the primary database is not
accessed.</li>
<li>If any lookup in step 2 fails, the algorithm advances to the next
candidate record using C(1). Lookups are performed in the order of the
cursor array, and the algorithm proceeds to the next C(1) candidate key as
soon as a single lookup fails.</li>
<li>If all lookups in step 2 succeed, then the matching key and/or data is
returned by the <code>getNext</code> method. If the <a href="../../../com/sleepycat/je/JoinCursor.html#getNext-com.sleepycat.je.DatabaseEntry-com.sleepycat.je.DatabaseEntry-com.sleepycat.je.LockMode-"><code>getNext(DatabaseEntry,DatabaseEntry,LockMode)</code></a> method signature is used,
then the primary database is read to obtain the record data, as if <a href="../../../com/sleepycat/je/Cursor.html#getSearchKey-com.sleepycat.je.DatabaseEntry-com.sleepycat.je.DatabaseEntry-com.sleepycat.je.LockMode-"><code>Cursor.getSearchKey</code></a> were called for the primary
database. If the <a href="../../../com/sleepycat/je/JoinCursor.html#getNext-com.sleepycat.je.DatabaseEntry-com.sleepycat.je.LockMode-"><code>getNext(DatabaseEntry,LockMode)</code></a> method signature
is used, then only the primary key is returned and the primary database is
not accessed.</li>
<li>The algorithm ends when C(1) has no more candidate records with K(1),
and the <code>getNext</code> method will then return <a href="../../../com/sleepycat/je/OperationStatus.html#NOTFOUND"><code>OperationStatus.NOTFOUND</code></a>.</li>
</ol></div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method.summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="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="colLast" scope="col">Method and Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../com/sleepycat/je/JoinCursor.html#close--">close</a></span>()</code>
<div class="block">Closes the cursors that have been opened by this join cursor.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code><a href="../../../com/sleepycat/je/OperationResult.html" title="class in com.sleepycat.je">OperationResult</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../com/sleepycat/je/JoinCursor.html#get-com.sleepycat.je.DatabaseEntry-com.sleepycat.je.DatabaseEntry-com.sleepycat.je.Get-com.sleepycat.je.ReadOptions-">get</a></span>(<a href="../../../com/sleepycat/je/DatabaseEntry.html" title="class in com.sleepycat.je">DatabaseEntry</a>&nbsp;key,
<a href="../../../com/sleepycat/je/DatabaseEntry.html" title="class in com.sleepycat.je">DatabaseEntry</a>&nbsp;data,
<a href="../../../com/sleepycat/je/Get.html" title="enum in com.sleepycat.je">Get</a>&nbsp;getType,
<a href="../../../com/sleepycat/je/ReadOptions.html" title="class in com.sleepycat.je">ReadOptions</a>&nbsp;options)</code>
<div class="block">Returns the next primary key and data resulting from the join operation.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code><a href="../../../com/sleepycat/je/JoinConfig.html" title="class in com.sleepycat.je">JoinConfig</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../com/sleepycat/je/JoinCursor.html#getConfig--">getConfig</a></span>()</code>
<div class="block">Returns this object's configuration.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code><a href="../../../com/sleepycat/je/OperationStatus.html" title="enum in com.sleepycat.je">OperationStatus</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../com/sleepycat/je/JoinCursor.html#getCurrent-com.sleepycat.je.DatabaseEntry-com.sleepycat.je.DatabaseEntry-com.sleepycat.je.LockMode-">getCurrent</a></span>(<a href="../../../com/sleepycat/je/DatabaseEntry.html" title="class in com.sleepycat.je">DatabaseEntry</a>&nbsp;key,
<a href="../../../com/sleepycat/je/DatabaseEntry.html" title="class in com.sleepycat.je">DatabaseEntry</a>&nbsp;data,
<a href="../../../com/sleepycat/je/LockMode.html" title="enum in com.sleepycat.je">LockMode</a>&nbsp;lockMode)</code>
<div class="block">This operation is not allowed on a join cursor.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code><a href="../../../com/sleepycat/je/Database.html" title="class in com.sleepycat.je">Database</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../com/sleepycat/je/JoinCursor.html#getDatabase--">getDatabase</a></span>()</code>
<div class="block">Returns the primary database handle associated with this cursor.</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code><a href="../../../com/sleepycat/je/OperationStatus.html" title="enum in com.sleepycat.je">OperationStatus</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../com/sleepycat/je/JoinCursor.html#getNext-com.sleepycat.je.DatabaseEntry-com.sleepycat.je.DatabaseEntry-com.sleepycat.je.LockMode-">getNext</a></span>(<a href="../../../com/sleepycat/je/DatabaseEntry.html" title="class in com.sleepycat.je">DatabaseEntry</a>&nbsp;key,
<a href="../../../com/sleepycat/je/DatabaseEntry.html" title="class in com.sleepycat.je">DatabaseEntry</a>&nbsp;data,
<a href="../../../com/sleepycat/je/LockMode.html" title="enum in com.sleepycat.je">LockMode</a>&nbsp;lockMode)</code>
<div class="block">Returns the next primary key and data resulting from the join operation.</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code><a href="../../../com/sleepycat/je/OperationStatus.html" title="enum in com.sleepycat.je">OperationStatus</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../com/sleepycat/je/JoinCursor.html#getNext-com.sleepycat.je.DatabaseEntry-com.sleepycat.je.LockMode-">getNext</a></span>(<a href="../../../com/sleepycat/je/DatabaseEntry.html" title="class in com.sleepycat.je">DatabaseEntry</a>&nbsp;key,
<a href="../../../com/sleepycat/je/LockMode.html" title="enum in com.sleepycat.je">LockMode</a>&nbsp;lockMode)</code>
<div class="block">Returns the next primary key resulting from the join operation.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="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>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a name="close--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>close</h4>
<pre>public&nbsp;void&nbsp;close()
throws <a href="../../../com/sleepycat/je/DatabaseException.html" title="class in com.sleepycat.je">DatabaseException</a></pre>
<div class="block">Closes the cursors that have been opened by this join cursor.
<p>The cursors passed to <a href="../../../com/sleepycat/je/Database.html#join-com.sleepycat.je.Cursor:A-com.sleepycat.je.JoinConfig-"><code>Database.join</code></a> are not
closed by this method, and should be closed by the caller.</p>
<p>WARNING: To guard against memory leaks, the application should
discard all references to the closed handle. While BDB makes an effort
to discard references from closed objects to the allocated memory for an
environment, this behavior is not guaranteed. The safe course of action
for an application is to discard all references to closed BDB
objects.</p></div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../com/sleepycat/je/ForwardCursor.html#close--">close</a></code>&nbsp;in interface&nbsp;<code><a href="../../../com/sleepycat/je/ForwardCursor.html" title="interface in com.sleepycat.je">ForwardCursor</a></code></dd>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code>close</code>&nbsp;in interface&nbsp;<code>java.io.Closeable</code></dd>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code>close</code>&nbsp;in interface&nbsp;<code>java.lang.AutoCloseable</code></dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../com/sleepycat/je/EnvironmentFailureException.html" title="class in com.sleepycat.je">EnvironmentFailureException</a></code> - if an unexpected, internal or
environment-wide failure occurs.</dd>
<dd><code><a href="../../../com/sleepycat/je/DatabaseException.html" title="class in com.sleepycat.je">DatabaseException</a></code></dd>
</dl>
</li>
</ul>
<a name="getDatabase--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getDatabase</h4>
<pre>public&nbsp;<a href="../../../com/sleepycat/je/Database.html" title="class in com.sleepycat.je">Database</a>&nbsp;getDatabase()</pre>
<div class="block">Returns the primary database handle associated with this cursor.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../com/sleepycat/je/ForwardCursor.html#getDatabase--">getDatabase</a></code>&nbsp;in interface&nbsp;<code><a href="../../../com/sleepycat/je/ForwardCursor.html" title="interface in com.sleepycat.je">ForwardCursor</a></code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the primary database handle associated with this cursor.</dd>
</dl>
</li>
</ul>
<a name="getConfig--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getConfig</h4>
<pre>public&nbsp;<a href="../../../com/sleepycat/je/JoinConfig.html" title="class in com.sleepycat.je">JoinConfig</a>&nbsp;getConfig()</pre>
<div class="block">Returns this object's configuration.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>this object's configuration.</dd>
</dl>
</li>
</ul>
<a name="get-com.sleepycat.je.DatabaseEntry-com.sleepycat.je.DatabaseEntry-com.sleepycat.je.Get-com.sleepycat.je.ReadOptions-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>get</h4>
<pre>public&nbsp;<a href="../../../com/sleepycat/je/OperationResult.html" title="class in com.sleepycat.je">OperationResult</a>&nbsp;get(<a href="../../../com/sleepycat/je/DatabaseEntry.html" title="class in com.sleepycat.je">DatabaseEntry</a>&nbsp;key,
<a href="../../../com/sleepycat/je/DatabaseEntry.html" title="class in com.sleepycat.je">DatabaseEntry</a>&nbsp;data,
<a href="../../../com/sleepycat/je/Get.html" title="enum in com.sleepycat.je">Get</a>&nbsp;getType,
<a href="../../../com/sleepycat/je/ReadOptions.html" title="class in com.sleepycat.je">ReadOptions</a>&nbsp;options)</pre>
<div class="block">Returns the next primary key and data resulting from the join operation.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../com/sleepycat/je/ForwardCursor.html#get-com.sleepycat.je.DatabaseEntry-com.sleepycat.je.DatabaseEntry-com.sleepycat.je.Get-com.sleepycat.je.ReadOptions-">get</a></code>&nbsp;in interface&nbsp;<code><a href="../../../com/sleepycat/je/ForwardCursor.html" title="interface in com.sleepycat.je">ForwardCursor</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>getType</code> - is <a href="../../../com/sleepycat/je/Get.html#NEXT"><code>Get.NEXT</code></a>.</dd>
<dd><code>key</code> - the key returned as
<a href="DatabaseEntry.html#outParam">output</a>.</dd>
<dd><code>data</code> - the data returned as
<a href="DatabaseEntry.html#outParam">output</a>.</dd>
<dd><code>options</code> - the ReadOptions, or null to use default options.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the OperationResult if the record requested is found, else null.</dd>
</dl>
</li>
</ul>
<a name="getCurrent-com.sleepycat.je.DatabaseEntry-com.sleepycat.je.DatabaseEntry-com.sleepycat.je.LockMode-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getCurrent</h4>
<pre>public&nbsp;<a href="../../../com/sleepycat/je/OperationStatus.html" title="enum in com.sleepycat.je">OperationStatus</a>&nbsp;getCurrent(<a href="../../../com/sleepycat/je/DatabaseEntry.html" title="class in com.sleepycat.je">DatabaseEntry</a>&nbsp;key,
<a href="../../../com/sleepycat/je/DatabaseEntry.html" title="class in com.sleepycat.je">DatabaseEntry</a>&nbsp;data,
<a href="../../../com/sleepycat/je/LockMode.html" title="enum in com.sleepycat.je">LockMode</a>&nbsp;lockMode)</pre>
<div class="block">This operation is not allowed on a join cursor. <code>UnsupportedOperationException</code> will always be thrown by this method.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../com/sleepycat/je/ForwardCursor.html#getCurrent-com.sleepycat.je.DatabaseEntry-com.sleepycat.je.DatabaseEntry-com.sleepycat.je.LockMode-">getCurrent</a></code>&nbsp;in interface&nbsp;<code><a href="../../../com/sleepycat/je/ForwardCursor.html" title="interface in com.sleepycat.je">ForwardCursor</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>key</code> - the key returned as
<a href="DatabaseEntry.html#outParam">output</a>.</dd>
<dd><code>data</code> - the data returned as
<a href="DatabaseEntry.html#outParam">output</a>.</dd>
<dd><code>lockMode</code> - the locking attributes; if null, default attributes are
used. <a href="../../../com/sleepycat/je/LockMode.html#READ_COMMITTED"><code>LockMode.READ_COMMITTED</code></a> is not allowed.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd><a href="../../../com/sleepycat/je/OperationStatus.html#KEYEMPTY"><code>OperationStatus.KEYEMPTY</code></a> if the key/pair at the cursor position has
been deleted; otherwise, <a href="../../../com/sleepycat/je/OperationStatus.html#SUCCESS"><code>OperationStatus.SUCCESS</code></a>.</dd>
</dl>
</li>
</ul>
<a name="getNext-com.sleepycat.je.DatabaseEntry-com.sleepycat.je.LockMode-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getNext</h4>
<pre>public&nbsp;<a href="../../../com/sleepycat/je/OperationStatus.html" title="enum in com.sleepycat.je">OperationStatus</a>&nbsp;getNext(<a href="../../../com/sleepycat/je/DatabaseEntry.html" title="class in com.sleepycat.je">DatabaseEntry</a>&nbsp;key,
<a href="../../../com/sleepycat/je/LockMode.html" title="enum in com.sleepycat.je">LockMode</a>&nbsp;lockMode)</pre>
<div class="block">Returns the next primary key resulting from the join operation.
<p>An entry is returned by the join cursor for each primary key/data
pair having all secondary key values that were specified using the array
of secondary cursors passed to <a href="../../../com/sleepycat/je/Database.html#join-com.sleepycat.je.Cursor:A-com.sleepycat.je.JoinConfig-"><code>Database.join</code></a>.</p></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>key</code> - the key returned as
<a href="DatabaseEntry.html#outParam">output</a>.</dd>
<dd><code>lockMode</code> - the locking attributes; if null, default attributes are
used. <a href="../../../com/sleepycat/je/LockMode.html#READ_COMMITTED"><code>LockMode.READ_COMMITTED</code></a> is not allowed.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd><a href="../../../com/sleepycat/je/OperationStatus.html#NOTFOUND"><code>OperationStatus.NOTFOUND</code></a> if no matching key/data pair is found;
otherwise, <a href="../../../com/sleepycat/je/OperationStatus.html#SUCCESS"><code>OperationStatus.SUCCESS</code></a>.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../com/sleepycat/je/OperationFailureException.html" title="class in com.sleepycat.je">OperationFailureException</a></code> - if one of the <a
href="OperationFailureException.html#readFailures">Read Operation
Failures</a> occurs.</dd>
<dd><code><a href="../../../com/sleepycat/je/EnvironmentFailureException.html" title="class in com.sleepycat.je">EnvironmentFailureException</a></code> - if an unexpected, internal or
environment-wide failure occurs.</dd>
<dd><code>java.lang.IllegalStateException</code> - if the cursor or database has been closed,
or the non-transactional cursor was created in a different thread.</dd>
<dd><code>java.lang.IllegalArgumentException</code> - if an invalid parameter is specified.</dd>
</dl>
</li>
</ul>
<a name="getNext-com.sleepycat.je.DatabaseEntry-com.sleepycat.je.DatabaseEntry-com.sleepycat.je.LockMode-">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>getNext</h4>
<pre>public&nbsp;<a href="../../../com/sleepycat/je/OperationStatus.html" title="enum in com.sleepycat.je">OperationStatus</a>&nbsp;getNext(<a href="../../../com/sleepycat/je/DatabaseEntry.html" title="class in com.sleepycat.je">DatabaseEntry</a>&nbsp;key,
<a href="../../../com/sleepycat/je/DatabaseEntry.html" title="class in com.sleepycat.je">DatabaseEntry</a>&nbsp;data,
<a href="../../../com/sleepycat/je/LockMode.html" title="enum in com.sleepycat.je">LockMode</a>&nbsp;lockMode)</pre>
<div class="block">Returns the next primary key and data resulting from the join operation.
<p>An entry is returned by the join cursor for each primary key/data
pair having all secondary key values that were specified using the array
of secondary cursors passed to <a href="../../../com/sleepycat/je/Database.html#join-com.sleepycat.je.Cursor:A-com.sleepycat.je.JoinConfig-"><code>Database.join</code></a>.</p></div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../com/sleepycat/je/ForwardCursor.html#getNext-com.sleepycat.je.DatabaseEntry-com.sleepycat.je.DatabaseEntry-com.sleepycat.je.LockMode-">getNext</a></code>&nbsp;in interface&nbsp;<code><a href="../../../com/sleepycat/je/ForwardCursor.html" title="interface in com.sleepycat.je">ForwardCursor</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>key</code> - the key returned as
<a href="DatabaseEntry.html#outParam">output</a>.</dd>
<dd><code>data</code> - the data returned as
<a href="DatabaseEntry.html#outParam">output</a>.</dd>
<dd><code>lockMode</code> - the locking attributes; if null, default attributes are
used. <a href="../../../com/sleepycat/je/LockMode.html#READ_COMMITTED"><code>LockMode.READ_COMMITTED</code></a> is not allowed.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd><a href="../../../com/sleepycat/je/OperationStatus.html#NOTFOUND"><code>OperationStatus.NOTFOUND</code></a> if no matching key/data pair is found;
otherwise, <a href="../../../com/sleepycat/je/OperationStatus.html#SUCCESS"><code>OperationStatus.SUCCESS</code></a>.</dd>
</dl>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/JoinCursor.html">Use</a></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 class="aboutLanguage"><b>Berkeley DB Java Edition</b><br><font size=\"-1\"> version 7.5.11</font>
</div>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../com/sleepycat/je/JoinConfig.html" title="class in com.sleepycat.je"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../com/sleepycat/je/LockConflictException.html" title="class in com.sleepycat.je"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../index.html?com/sleepycat/je/JoinCursor.html" target="_top">Frames</a></li>
<li><a href="JoinCursor.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<p class="legalCopy"><small><font size=1>Copyright (c) 2002, 2017 Oracle and/or its affiliates. All rights reserved.</font> </small></p>
</body>
</html>