blob: 295444aa11123c0bc6abd89030e78f9c9364fa3a [file] [log] [blame]
<!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 -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>LoptMultiJoin (Apache Calcite calcite API)</title>
<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.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="LoptMultiJoin (Apache Calcite calcite API)";
}
}
catch(err) {
}
//-->
var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":42,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10,"i20":10,"i21":10,"i22":10,"i23":10,"i24":10,"i25":10,"i26":10,"i27":10,"i28":10,"i29":10,"i30":10,"i31":10,"i32":10,"i33":10};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"],32:["t6","Deprecated 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="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>Apache Calcite</b></div>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../org/apache/calcite/rel/rules/LoptJoinTree.Node.html" title="class in org.apache.calcite.rel.rules"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../../org/apache/calcite/rel/rules/LoptOptimizeJoinRule.html" title="class in org.apache.calcite.rel.rules"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../index.html?org/apache/calcite/rel/rules/LoptMultiJoin.html" target="_top">Frames</a></li>
<li><a href="LoptMultiJoin.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><a href="#constructor.summary">Constr</a>&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><a href="#constructor.detail">Constr</a>&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">org.apache.calcite.rel.rules</div>
<h2 title="Class LoptMultiJoin" class="title">Class LoptMultiJoin</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
<li>
<ul class="inheritance">
<li>org.apache.calcite.rel.rules.LoptMultiJoin</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<hr>
<br>
<pre>public class <span class="typeNameLabel">LoptMultiJoin</span>
extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
<div class="block">Utility class that keeps track of the join factors that
make up a <a href="../../../../../org/apache/calcite/rel/rules/MultiJoin.html" title="class in org.apache.calcite.rel.rules"><code>MultiJoin</code></a>.</div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.summary">
<!-- -->
</a>
<h3>Constructor Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colOne" scope="col">Constructor and Description</th>
</tr>
<tr class="altColor">
<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../org/apache/calcite/rel/rules/LoptMultiJoin.html#LoptMultiJoin-org.apache.calcite.rel.rules.MultiJoin-">LoptMultiJoin</a></span>(<a href="../../../../../org/apache/calcite/rel/rules/MultiJoin.html" title="class in org.apache.calcite.rel.rules">MultiJoin</a>&nbsp;multiJoin)</code>&nbsp;</td>
</tr>
</table>
</li>
</ul>
<!-- ========== 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><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="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="../../../../../org/apache/calcite/rel/rules/LoptMultiJoin.html#addRemovableOuterJoinFactor-int-">addRemovableOuterJoinFactor</a></span>(int&nbsp;factIdx)</code>
<div class="block">Adds a join factor to the set of factors that can be removed because the
factor is the null generating factor in an outer join, its join keys are
unique, and the factor is not projected in the query</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/calcite/rel/rules/LoptMultiJoin.html#addRemovableSelfJoinPair-int-int-">addRemovableSelfJoinPair</a></span>(int&nbsp;factor1,
int&nbsp;factor2)</code>
<div class="block">Adds to a map that keeps track of removable self-join pairs.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>org.apache.calcite.rel.rules.LoptMultiJoin.Edge</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/calcite/rel/rules/LoptMultiJoin.html#createEdge-org.apache.calcite.rex.RexNode-">createEdge</a></span>(<a href="../../../../../org/apache/calcite/rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;condition)</code>&nbsp;</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/calcite/rel/rules/LoptMultiJoin.html#findRef-int-">findRef</a></span>(int&nbsp;rexInputRef)</code>
<div class="block">Determines the join factor corresponding to a RexInputRef</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/calcite/rel/rules/LoptMultiJoin.html#getChildFactors-org.apache.calcite.rel.rules.LoptJoinTree-org.apache.calcite.util.ImmutableBitSet.Builder-">getChildFactors</a></span>(<a href="../../../../../org/apache/calcite/rel/rules/LoptJoinTree.html" title="class in org.apache.calcite.rel.rules">LoptJoinTree</a>&nbsp;joinTree,
<a href="../../../../../org/apache/calcite/util/ImmutableBitSet.Builder.html" title="class in org.apache.calcite.util">ImmutableBitSet.Builder</a>&nbsp;childFactors)</code>
<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code><a href="../../../../../org/apache/calcite/util/ImmutableBitSet.html" title="class in org.apache.calcite.util">ImmutableBitSet</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/calcite/rel/rules/LoptMultiJoin.html#getFactorsRefByFactor-int-">getFactorsRefByFactor</a></span>(int&nbsp;factIdx)</code>&nbsp;</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code><a href="../../../../../org/apache/calcite/util/ImmutableBitSet.html" title="class in org.apache.calcite.util">ImmutableBitSet</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/calcite/rel/rules/LoptMultiJoin.html#getFactorsRefByJoinFilter-org.apache.calcite.rex.RexNode-">getFactorsRefByJoinFilter</a></span>(<a href="../../../../../org/apache/calcite/rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;joinFilter)</code>&nbsp;</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code>int[][]</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/calcite/rel/rules/LoptMultiJoin.html#getFactorWeights--">getFactorWeights</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code><a href="../../../../../org/apache/calcite/util/ImmutableBitSet.html" title="class in org.apache.calcite.util">ImmutableBitSet</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/calcite/rel/rules/LoptMultiJoin.html#getFieldsRefByJoinFilter-org.apache.calcite.rex.RexNode-">getFieldsRefByJoinFilter</a></span>(<a href="../../../../../org/apache/calcite/rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;joinFilter)</code>&nbsp;</td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code><a href="../../../../../org/apache/calcite/rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/calcite/rel/rules/LoptMultiJoin.html#getJoinFactor-int-">getJoinFactor</a></span>(int&nbsp;factIdx)</code>&nbsp;</td>
</tr>
<tr id="i10" class="altColor">
<td class="colFirst"><code>int[]</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/calcite/rel/rules/LoptMultiJoin.html#getJoinFieldRefCounts-int-">getJoinFieldRefCounts</a></span>(int&nbsp;factIdx)</code>&nbsp;</td>
</tr>
<tr id="i11" class="rowColor">
<td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/calcite/rel/type/RelDataTypeField.html" title="interface in org.apache.calcite.rel.type">RelDataTypeField</a>&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/calcite/rel/rules/LoptMultiJoin.html#getJoinFields-org.apache.calcite.rel.rules.LoptJoinTree-org.apache.calcite.rel.rules.LoptJoinTree-">getJoinFields</a></span>(<a href="../../../../../org/apache/calcite/rel/rules/LoptJoinTree.html" title="class in org.apache.calcite.rel.rules">LoptJoinTree</a>&nbsp;left,
<a href="../../../../../org/apache/calcite/rel/rules/LoptJoinTree.html" title="class in org.apache.calcite.rel.rules">LoptJoinTree</a>&nbsp;right)</code>
<div class="block">Retrieves the fields corresponding to a join between a left and right
tree</div>
</td>
</tr>
<tr id="i12" class="altColor">
<td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/calcite/rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/calcite/rel/rules/LoptMultiJoin.html#getJoinFilters--">getJoinFilters</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i13" class="rowColor">
<td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/calcite/rel/rules/LoptMultiJoin.html#getJoinRemovalFactor-int-">getJoinRemovalFactor</a></span>(int&nbsp;dimIdx)</code>&nbsp;</td>
</tr>
<tr id="i14" class="altColor">
<td class="colFirst"><code><a href="../../../../../org/apache/calcite/rel/logical/LogicalJoin.html" title="class in org.apache.calcite.rel.logical">LogicalJoin</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/calcite/rel/rules/LoptMultiJoin.html#getJoinRemovalSemiJoin-int-">getJoinRemovalSemiJoin</a></span>(int&nbsp;dimIdx)</code>&nbsp;</td>
</tr>
<tr id="i15" class="rowColor">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/calcite/rel/rules/LoptMultiJoin.html#getJoinStart-int-">getJoinStart</a></span>(int&nbsp;factIdx)</code>&nbsp;</td>
</tr>
<tr id="i16" class="altColor">
<td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/calcite/rel/type/RelDataTypeField.html" title="interface in org.apache.calcite.rel.type">RelDataTypeField</a>&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/calcite/rel/rules/LoptMultiJoin.html#getMultiJoinFields--">getMultiJoinFields</a></span>()</code>
<div class="block">Returns array of fields contained within the multi-join</div>
</td>
</tr>
<tr id="i17" class="rowColor">
<td class="colFirst"><code><a href="../../../../../org/apache/calcite/rel/rules/MultiJoin.html" title="class in org.apache.calcite.rel.rules">MultiJoin</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/calcite/rel/rules/LoptMultiJoin.html#getMultiJoinRel--">getMultiJoinRel</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i18" class="altColor">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/calcite/rel/rules/LoptMultiJoin.html#getNumFieldsInJoinFactor-int-">getNumFieldsInJoinFactor</a></span>(int&nbsp;factIdx)</code>&nbsp;</td>
</tr>
<tr id="i19" class="rowColor">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/calcite/rel/rules/LoptMultiJoin.html#getNumJoinFactors--">getNumJoinFactors</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i20" class="altColor">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/calcite/rel/rules/LoptMultiJoin.html#getNumTotalFields--">getNumTotalFields</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i21" class="rowColor">
<td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/calcite/rel/rules/LoptMultiJoin.html#getOtherSelfJoinFactor-int-">getOtherSelfJoinFactor</a></span>(int&nbsp;factIdx)</code>
<div class="block">Returns the other factor in a self-join pair if the factor passed in is
a factor in a removable self-join; otherwise, returns null.</div>
</td>
</tr>
<tr id="i22" class="altColor">
<td class="colFirst"><code><a href="../../../../../org/apache/calcite/rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/calcite/rel/rules/LoptMultiJoin.html#getOuterJoinCond-int-">getOuterJoinCond</a></span>(int&nbsp;factIdx)</code>&nbsp;</td>
</tr>
<tr id="i23" class="rowColor">
<td class="colFirst"><code><a href="../../../../../org/apache/calcite/util/ImmutableBitSet.html" title="class in org.apache.calcite.util">ImmutableBitSet</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/calcite/rel/rules/LoptMultiJoin.html#getOuterJoinFactors-int-">getOuterJoinFactors</a></span>(int&nbsp;factIdx)</code>&nbsp;</td>
</tr>
<tr id="i24" class="altColor">
<td class="colFirst"><code><a href="../../../../../org/apache/calcite/util/ImmutableBitSet.html" title="class in org.apache.calcite.util">ImmutableBitSet</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/calcite/rel/rules/LoptMultiJoin.html#getProjFields-int-">getProjFields</a></span>(int&nbsp;factIdx)</code>&nbsp;</td>
</tr>
<tr id="i25" class="rowColor">
<td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/calcite/rel/rules/LoptMultiJoin.html#getRightColumnMapping-int-int-">getRightColumnMapping</a></span>(int&nbsp;rightFactor,
int&nbsp;rightOffset)</code>
<div class="block">Determines whether there is a mapping from a column in the right factor
of a self-join to a column from the left factor.</div>
</td>
</tr>
<tr id="i26" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/calcite/rel/rules/LoptMultiJoin.html#hasAllFactors-org.apache.calcite.rel.rules.LoptJoinTree-java.util.BitSet-">hasAllFactors</a></span>(<a href="../../../../../org/apache/calcite/rel/rules/LoptJoinTree.html" title="class in org.apache.calcite.rel.rules">LoptJoinTree</a>&nbsp;joinTree,
<a href="https://docs.oracle.com/javase/8/docs/api/java/util/BitSet.html?is-external=true" title="class or interface in java.util">BitSet</a>&nbsp;factorsNeeded)</code>
<div class="block">Returns true if a join tree contains all factors required</div>
</td>
</tr>
<tr id="i27" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/calcite/rel/rules/LoptMultiJoin.html#isLeftFactorInRemovableSelfJoin-int-">isLeftFactorInRemovableSelfJoin</a></span>(int&nbsp;factIdx)</code>&nbsp;</td>
</tr>
<tr id="i28" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/calcite/rel/rules/LoptMultiJoin.html#isNullGenerating-int-">isNullGenerating</a></span>(int&nbsp;factIdx)</code>&nbsp;</td>
</tr>
<tr id="i29" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/calcite/rel/rules/LoptMultiJoin.html#isRemovableOuterJoinFactor-int-">isRemovableOuterJoinFactor</a></span>(int&nbsp;factIdx)</code>&nbsp;</td>
</tr>
<tr id="i30" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/calcite/rel/rules/LoptMultiJoin.html#isRightFactorInRemovableSelfJoin-int-">isRightFactorInRemovableSelfJoin</a></span>(int&nbsp;factIdx)</code>&nbsp;</td>
</tr>
<tr id="i31" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/calcite/rel/rules/LoptMultiJoin.html#setFactorWeights--">setFactorWeights</a></span>()</code>
<div class="block">Sets weighting for each combination of factors, depending on which join
filters reference which factors.</div>
</td>
</tr>
<tr id="i32" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/calcite/rel/rules/LoptMultiJoin.html#setJoinRemovalFactor-int-int-">setJoinRemovalFactor</a></span>(int&nbsp;dimIdx,
int&nbsp;factIdx)</code>
<div class="block">Indicates that a dimension factor's join can be removed because of a
semijoin with a fact table.</div>
</td>
</tr>
<tr id="i33" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/calcite/rel/rules/LoptMultiJoin.html#setJoinRemovalSemiJoin-int-org.apache.calcite.rel.logical.LogicalJoin-">setJoinRemovalSemiJoin</a></span>(int&nbsp;dimIdx,
<a href="../../../../../org/apache/calcite/rel/logical/LogicalJoin.html" title="class in org.apache.calcite.rel.logical">LogicalJoin</a>&nbsp;semiJoin)</code>
<div class="block">Indicates the semijoin that allows the join of a dimension table to be
removed</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.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a name="LoptMultiJoin-org.apache.calcite.rel.rules.MultiJoin-">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>LoptMultiJoin</h4>
<pre>public&nbsp;LoptMultiJoin(<a href="../../../../../org/apache/calcite/rel/rules/MultiJoin.html" title="class in org.apache.calcite.rel.rules">MultiJoin</a>&nbsp;multiJoin)</pre>
</li>
</ul>
</li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a name="getMultiJoinRel--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getMultiJoinRel</h4>
<pre>public&nbsp;<a href="../../../../../org/apache/calcite/rel/rules/MultiJoin.html" title="class in org.apache.calcite.rel.rules">MultiJoin</a>&nbsp;getMultiJoinRel()</pre>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the MultiJoin corresponding to this multijoin</dd>
</dl>
</li>
</ul>
<a name="getNumJoinFactors--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getNumJoinFactors</h4>
<pre>public&nbsp;int&nbsp;getNumJoinFactors()</pre>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>number of factors in this multijoin</dd>
</dl>
</li>
</ul>
<a name="getJoinFactor-int-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getJoinFactor</h4>
<pre>public&nbsp;<a href="../../../../../org/apache/calcite/rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;getJoinFactor(int&nbsp;factIdx)</pre>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>factIdx</code> - factor to be returned</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>factor corresponding to the factor index passed in</dd>
</dl>
</li>
</ul>
<a name="getNumTotalFields--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getNumTotalFields</h4>
<pre>public&nbsp;int&nbsp;getNumTotalFields()</pre>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>total number of fields in the multijoin</dd>
</dl>
</li>
</ul>
<a name="getNumFieldsInJoinFactor-int-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getNumFieldsInJoinFactor</h4>
<pre>public&nbsp;int&nbsp;getNumFieldsInJoinFactor(int&nbsp;factIdx)</pre>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>factIdx</code> - desired factor</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>number of fields in the specified factor</dd>
</dl>
</li>
</ul>
<a name="getJoinFilters--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getJoinFilters</h4>
<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/calcite/rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;getJoinFilters()</pre>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>all non-outer join filters in this multijoin</dd>
</dl>
</li>
</ul>
<a name="getFactorsRefByJoinFilter-org.apache.calcite.rex.RexNode-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getFactorsRefByJoinFilter</h4>
<pre>public&nbsp;<a href="../../../../../org/apache/calcite/util/ImmutableBitSet.html" title="class in org.apache.calcite.util">ImmutableBitSet</a>&nbsp;getFactorsRefByJoinFilter(<a href="../../../../../org/apache/calcite/rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;joinFilter)</pre>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>joinFilter</code> - filter for which information will be returned</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>bitmap corresponding to the factors referenced within the
specified join filter</dd>
</dl>
</li>
</ul>
<a name="getMultiJoinFields--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getMultiJoinFields</h4>
<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/calcite/rel/type/RelDataTypeField.html" title="interface in org.apache.calcite.rel.type">RelDataTypeField</a>&gt;&nbsp;getMultiJoinFields()</pre>
<div class="block">Returns array of fields contained within the multi-join</div>
</li>
</ul>
<a name="getFieldsRefByJoinFilter-org.apache.calcite.rex.RexNode-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getFieldsRefByJoinFilter</h4>
<pre>public&nbsp;<a href="../../../../../org/apache/calcite/util/ImmutableBitSet.html" title="class in org.apache.calcite.util">ImmutableBitSet</a>&nbsp;getFieldsRefByJoinFilter(<a href="../../../../../org/apache/calcite/rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;joinFilter)</pre>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>joinFilter</code> - the filter for which information will be returned</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>bitmap corresponding to the fields referenced by a join filter</dd>
</dl>
</li>
</ul>
<a name="getFactorWeights--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getFactorWeights</h4>
<pre>public&nbsp;int[][]&nbsp;getFactorWeights()</pre>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>weights of the different factors relative to one another</dd>
</dl>
</li>
</ul>
<a name="getFactorsRefByFactor-int-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getFactorsRefByFactor</h4>
<pre>public&nbsp;<a href="../../../../../org/apache/calcite/util/ImmutableBitSet.html" title="class in org.apache.calcite.util">ImmutableBitSet</a>&nbsp;getFactorsRefByFactor(int&nbsp;factIdx)</pre>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>factIdx</code> - factor for which information will be returned</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>bitmap corresponding to the factors referenced by the specified
factor in the various join filters that correspond to comparisons</dd>
</dl>
</li>
</ul>
<a name="getJoinStart-int-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getJoinStart</h4>
<pre>public&nbsp;int&nbsp;getJoinStart(int&nbsp;factIdx)</pre>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>factIdx</code> - factor for which information will be returned</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>starting offset within the multijoin for the specified factor</dd>
</dl>
</li>
</ul>
<a name="isNullGenerating-int-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isNullGenerating</h4>
<pre>public&nbsp;boolean&nbsp;isNullGenerating(int&nbsp;factIdx)</pre>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>factIdx</code> - factor for which information will be returned</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>whether or not the factor corresponds to a null-generating factor
in a left or right outer join</dd>
</dl>
</li>
</ul>
<a name="getOuterJoinFactors-int-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getOuterJoinFactors</h4>
<pre>public&nbsp;<a href="../../../../../org/apache/calcite/util/ImmutableBitSet.html" title="class in org.apache.calcite.util">ImmutableBitSet</a>&nbsp;getOuterJoinFactors(int&nbsp;factIdx)</pre>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>factIdx</code> - factor for which information will be returned</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>bitmap containing the factors that a null generating factor is
dependent upon, if the factor is null generating in a left or right outer
join; otherwise null is returned</dd>
</dl>
</li>
</ul>
<a name="getOuterJoinCond-int-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getOuterJoinCond</h4>
<pre>public&nbsp;<a href="../../../../../org/apache/calcite/rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;getOuterJoinCond(int&nbsp;factIdx)</pre>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>factIdx</code> - factor for which information will be returned</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>outer join conditions associated with the specified null
generating factor</dd>
</dl>
</li>
</ul>
<a name="getProjFields-int-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getProjFields</h4>
<pre>public&nbsp;<a href="../../../../../org/apache/calcite/util/ImmutableBitSet.html" title="class in org.apache.calcite.util">ImmutableBitSet</a>&nbsp;getProjFields(int&nbsp;factIdx)</pre>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>factIdx</code> - factor for which information will be returned</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>bitmap containing the fields that are projected from a factor</dd>
</dl>
</li>
</ul>
<a name="getJoinFieldRefCounts-int-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getJoinFieldRefCounts</h4>
<pre>public&nbsp;int[]&nbsp;getJoinFieldRefCounts(int&nbsp;factIdx)</pre>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>factIdx</code> - factor for which information will be returned</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the join field reference counts for a factor</dd>
</dl>
</li>
</ul>
<a name="getJoinRemovalFactor-int-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getJoinRemovalFactor</h4>
<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&nbsp;getJoinRemovalFactor(int&nbsp;dimIdx)</pre>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>dimIdx</code> - the dimension factor for which information will be returned</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the factor id of the fact table corresponding to a dimension
table in a semijoin, in the case where the join with the dimension table
can be removed</dd>
</dl>
</li>
</ul>
<a name="getJoinRemovalSemiJoin-int-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getJoinRemovalSemiJoin</h4>
<pre>public&nbsp;<a href="../../../../../org/apache/calcite/rel/logical/LogicalJoin.html" title="class in org.apache.calcite.rel.logical">LogicalJoin</a>&nbsp;getJoinRemovalSemiJoin(int&nbsp;dimIdx)</pre>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>dimIdx</code> - the dimension factor for which information will be returned</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the semijoin that allows the join of a dimension table to be
removed</dd>
</dl>
</li>
</ul>
<a name="setJoinRemovalFactor-int-int-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setJoinRemovalFactor</h4>
<pre>public&nbsp;void&nbsp;setJoinRemovalFactor(int&nbsp;dimIdx,
int&nbsp;factIdx)</pre>
<div class="block">Indicates that a dimension factor's join can be removed because of a
semijoin with a fact table.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>dimIdx</code> - id of the dimension factor</dd>
<dd><code>factIdx</code> - id of the fact factor</dd>
</dl>
</li>
</ul>
<a name="setJoinRemovalSemiJoin-int-org.apache.calcite.rel.logical.LogicalJoin-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setJoinRemovalSemiJoin</h4>
<pre>public&nbsp;void&nbsp;setJoinRemovalSemiJoin(int&nbsp;dimIdx,
<a href="../../../../../org/apache/calcite/rel/logical/LogicalJoin.html" title="class in org.apache.calcite.rel.logical">LogicalJoin</a>&nbsp;semiJoin)</pre>
<div class="block">Indicates the semijoin that allows the join of a dimension table to be
removed</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>dimIdx</code> - id of the dimension factor</dd>
<dd><code>semiJoin</code> - the semijoin</dd>
</dl>
</li>
</ul>
<a name="findRef-int-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>findRef</h4>
<pre>public&nbsp;int&nbsp;findRef(int&nbsp;rexInputRef)</pre>
<div class="block">Determines the join factor corresponding to a RexInputRef</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>rexInputRef</code> - rexInputRef index</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>index corresponding to join factor</dd>
</dl>
</li>
</ul>
<a name="setFactorWeights--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setFactorWeights</h4>
<pre>public&nbsp;void&nbsp;setFactorWeights()</pre>
<div class="block">Sets weighting for each combination of factors, depending on which join
filters reference which factors. Greater weight is given to equality
conditions. Also, sets bitmaps indicating which factors are referenced by
each factor within join filters that are comparisons.</div>
</li>
</ul>
<a name="hasAllFactors-org.apache.calcite.rel.rules.LoptJoinTree-java.util.BitSet-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>hasAllFactors</h4>
<pre>public&nbsp;boolean&nbsp;hasAllFactors(<a href="../../../../../org/apache/calcite/rel/rules/LoptJoinTree.html" title="class in org.apache.calcite.rel.rules">LoptJoinTree</a>&nbsp;joinTree,
<a href="https://docs.oracle.com/javase/8/docs/api/java/util/BitSet.html?is-external=true" title="class or interface in java.util">BitSet</a>&nbsp;factorsNeeded)</pre>
<div class="block">Returns true if a join tree contains all factors required</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>joinTree</code> - join tree to be examined</dd>
<dd><code>factorsNeeded</code> - bitmap of factors required</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>true if join tree contains all required factors</dd>
</dl>
</li>
</ul>
<a name="getChildFactors-org.apache.calcite.rel.rules.LoptJoinTree-org.apache.calcite.util.ImmutableBitSet.Builder-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getChildFactors</h4>
<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
public&nbsp;void&nbsp;getChildFactors(<a href="../../../../../org/apache/calcite/rel/rules/LoptJoinTree.html" title="class in org.apache.calcite.rel.rules">LoptJoinTree</a>&nbsp;joinTree,
<a href="../../../../../org/apache/calcite/util/ImmutableBitSet.Builder.html" title="class in org.apache.calcite.util">ImmutableBitSet.Builder</a>&nbsp;childFactors)</pre>
<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;</div>
<div class="block">Sets a bitmap indicating all child RelNodes in a join tree</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>joinTree</code> - join tree to be examined</dd>
<dd><code>childFactors</code> - bitmap to be set</dd>
</dl>
</li>
</ul>
<a name="getJoinFields-org.apache.calcite.rel.rules.LoptJoinTree-org.apache.calcite.rel.rules.LoptJoinTree-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getJoinFields</h4>
<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/calcite/rel/type/RelDataTypeField.html" title="interface in org.apache.calcite.rel.type">RelDataTypeField</a>&gt;&nbsp;getJoinFields(<a href="../../../../../org/apache/calcite/rel/rules/LoptJoinTree.html" title="class in org.apache.calcite.rel.rules">LoptJoinTree</a>&nbsp;left,
<a href="../../../../../org/apache/calcite/rel/rules/LoptJoinTree.html" title="class in org.apache.calcite.rel.rules">LoptJoinTree</a>&nbsp;right)</pre>
<div class="block">Retrieves the fields corresponding to a join between a left and right
tree</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>left</code> - left hand side of the join</dd>
<dd><code>right</code> - right hand side of the join</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>fields of the join</dd>
</dl>
</li>
</ul>
<a name="addRemovableOuterJoinFactor-int-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>addRemovableOuterJoinFactor</h4>
<pre>public&nbsp;void&nbsp;addRemovableOuterJoinFactor(int&nbsp;factIdx)</pre>
<div class="block">Adds a join factor to the set of factors that can be removed because the
factor is the null generating factor in an outer join, its join keys are
unique, and the factor is not projected in the query</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>factIdx</code> - join factor</dd>
</dl>
</li>
</ul>
<a name="isRemovableOuterJoinFactor-int-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isRemovableOuterJoinFactor</h4>
<pre>public&nbsp;boolean&nbsp;isRemovableOuterJoinFactor(int&nbsp;factIdx)</pre>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>factIdx</code> - factor in question</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>true if the factor corresponds to the null generating factor in
an outer join that can be removed</dd>
</dl>
</li>
</ul>
<a name="addRemovableSelfJoinPair-int-int-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>addRemovableSelfJoinPair</h4>
<pre>public&nbsp;void&nbsp;addRemovableSelfJoinPair(int&nbsp;factor1,
int&nbsp;factor2)</pre>
<div class="block">Adds to a map that keeps track of removable self-join pairs.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>factor1</code> - one of the factors in the self-join</dd>
<dd><code>factor2</code> - the second factor in the self-join</dd>
</dl>
</li>
</ul>
<a name="getOtherSelfJoinFactor-int-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getOtherSelfJoinFactor</h4>
<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&nbsp;getOtherSelfJoinFactor(int&nbsp;factIdx)</pre>
<div class="block">Returns the other factor in a self-join pair if the factor passed in is
a factor in a removable self-join; otherwise, returns null.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>factIdx</code> - one of the factors in a self-join pair</dd>
</dl>
</li>
</ul>
<a name="isLeftFactorInRemovableSelfJoin-int-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isLeftFactorInRemovableSelfJoin</h4>
<pre>public&nbsp;boolean&nbsp;isLeftFactorInRemovableSelfJoin(int&nbsp;factIdx)</pre>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>factIdx</code> - factor in a self-join</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>true if the factor is the left factor in a self-join</dd>
</dl>
</li>
</ul>
<a name="isRightFactorInRemovableSelfJoin-int-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isRightFactorInRemovableSelfJoin</h4>
<pre>public&nbsp;boolean&nbsp;isRightFactorInRemovableSelfJoin(int&nbsp;factIdx)</pre>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>factIdx</code> - factor in a self-join</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>true if the factor is the right factor in a self-join</dd>
</dl>
</li>
</ul>
<a name="getRightColumnMapping-int-int-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getRightColumnMapping</h4>
<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&nbsp;getRightColumnMapping(int&nbsp;rightFactor,
int&nbsp;rightOffset)</pre>
<div class="block">Determines whether there is a mapping from a column in the right factor
of a self-join to a column from the left factor. Assumes that the right
factor is a part of a self-join.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>rightFactor</code> - the index of the right factor</dd>
<dd><code>rightOffset</code> - the column offset of the right factor</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the offset of the corresponding column in the left factor, if
such a column mapping exists; otherwise, null is returned</dd>
</dl>
</li>
</ul>
<a name="createEdge-org.apache.calcite.rex.RexNode-">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>createEdge</h4>
<pre>public&nbsp;org.apache.calcite.rel.rules.LoptMultiJoin.Edge&nbsp;createEdge(<a href="../../../../../org/apache/calcite/rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;condition)</pre>
</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="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>Apache Calcite</b></div>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../org/apache/calcite/rel/rules/LoptJoinTree.Node.html" title="class in org.apache.calcite.rel.rules"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../../org/apache/calcite/rel/rules/LoptOptimizeJoinRule.html" title="class in org.apache.calcite.rel.rules"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../index.html?org/apache/calcite/rel/rules/LoptMultiJoin.html" target="_top">Frames</a></li>
<li><a href="LoptMultiJoin.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><a href="#constructor.summary">Constr</a>&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><a href="#constructor.detail">Constr</a>&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>Copyright &copy; 2012-2020 Apache Software Foundation. All Rights Reserved.</small></p>
</body>
</html>