blob: ee51bd85ff26915be3ba4b5cbdc42e1eb8ffb1d6 [file] [log] [blame]
<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc -->
<title>LoptMultiJoin (Apache Calcite calcite API)</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.3.1.js"></script>
<script type="text/javascript" src="../../../../../jquery/jquery-migrate-3.0.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="LoptMultiJoin (Apache Calcite calcite API)";
}
}
catch(err) {
}
//-->
var data = {"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";
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 class="aboutLanguage"><b>Apache Calcite</b></div>
</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><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 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.calcite.rel.rules</a></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/9/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang" class="externalLink">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>
<pre>public class <span class="typeNameLabel">LoptMultiJoin</span>
extends <a href="https://docs.oracle.com/javase/9/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang" class="externalLink">Object</a></pre>
<div class="block">Utility class that keeps track of the join factors that
make up a <a href="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 ======== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="constructor.summary">
<!-- -->
</a>
<h3>Constructor Summary</h3>
<table class="memberSummary">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Constructor</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr class="altColor">
<th class="colConstructorName" scope="row"><code><span class="memberNameLink"><a href="#%3Cinit%3E(org.apache.calcite.rel.rules.MultiJoin)">LoptMultiJoin</a></span>&#8203;(<a href="MultiJoin.html" title="class in org.apache.calcite.rel.rules">MultiJoin</a>&nbsp;multiJoin)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
</table>
</li>
</ul>
</section>
<!-- ========== METHOD SUMMARY =========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="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="colSecond" scope="col">Method</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#addRemovableOuterJoinFactor(int)">addRemovableOuterJoinFactor</a></span>&#8203;(int&nbsp;factIdx)</code></th>
<td class="colLast">
<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>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#addRemovableSelfJoinPair(int,int)">addRemovableSelfJoinPair</a></span>&#8203;(int&nbsp;factor1,
int&nbsp;factor2)</code></th>
<td class="colLast">
<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>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#createEdge(org.apache.calcite.rex.RexNode)">createEdge</a></span>&#8203;(<a href="../../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;condition)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>int</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#findRef(int)">findRef</a></span>&#8203;(int&nbsp;rexInputRef)</code></th>
<td class="colLast">
<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>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getChildFactors(org.apache.calcite.rel.rules.LoptJoinTree,org.apache.calcite.util.ImmutableBitSet.Builder)">getChildFactors</a></span>&#8203;(<a href="LoptJoinTree.html" title="class in org.apache.calcite.rel.rules">LoptJoinTree</a>&nbsp;joinTree,
<a href="../../util/ImmutableBitSet.Builder.html" title="class in org.apache.calcite.util">ImmutableBitSet.Builder</a>&nbsp;childFactors)</code></th>
<td class="colLast">
<div class="block"><span class="deprecatedLabel">Deprecated.</span></div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code><a href="../../util/ImmutableBitSet.html" title="class in org.apache.calcite.util">ImmutableBitSet</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getFactorsRefByFactor(int)">getFactorsRefByFactor</a></span>&#8203;(int&nbsp;factIdx)</code></th>
<td class="colLast">
<div class="block">Returns a bitmap corresponding to the factors referenced by the specified
factor in the various join filters that correspond to comparisons.</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code><a href="../../util/ImmutableBitSet.html" title="class in org.apache.calcite.util">ImmutableBitSet</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getFactorsRefByJoinFilter(org.apache.calcite.rex.RexNode)">getFactorsRefByJoinFilter</a></span>&#8203;(<a href="../../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;joinFilter)</code></th>
<td class="colLast">
<div class="block">Returns a bitmap corresponding to the factors referenced within
the specified join filter.</div>
</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code>int[][]</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getFactorWeights()">getFactorWeights</a></span>()</code></th>
<td class="colLast">
<div class="block">Returns weights of the different factors relative to one another.</div>
</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code><a href="../../util/ImmutableBitSet.html" title="class in org.apache.calcite.util">ImmutableBitSet</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getFieldsRefByJoinFilter(org.apache.calcite.rex.RexNode)">getFieldsRefByJoinFilter</a></span>&#8203;(<a href="../../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;joinFilter)</code></th>
<td class="colLast">
<div class="block">Returns a bitmap corresponding to the fields referenced by a join filter.</div>
</td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code><a href="../RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getJoinFactor(int)">getJoinFactor</a></span>&#8203;(int&nbsp;factIdx)</code></th>
<td class="colLast">
<div class="block">Returns the factor corresponding to the given factor index.</div>
</td>
</tr>
<tr id="i10" class="altColor">
<td class="colFirst"><code>int[]</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getJoinFieldRefCounts(int)">getJoinFieldRefCounts</a></span>&#8203;(int&nbsp;factIdx)</code></th>
<td class="colLast">
<div class="block">Returns the join field reference counts for a factor.</div>
</td>
</tr>
<tr id="i11" class="rowColor">
<td class="colFirst"><code><a href="https://docs.oracle.com/javase/9/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util" class="externalLink">List</a>&lt;<a href="../type/RelDataTypeField.html" title="interface in org.apache.calcite.rel.type">RelDataTypeField</a>&gt;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getJoinFields(org.apache.calcite.rel.rules.LoptJoinTree,org.apache.calcite.rel.rules.LoptJoinTree)">getJoinFields</a></span>&#8203;(<a href="LoptJoinTree.html" title="class in org.apache.calcite.rel.rules">LoptJoinTree</a>&nbsp;left,
<a href="LoptJoinTree.html" title="class in org.apache.calcite.rel.rules">LoptJoinTree</a>&nbsp;right)</code></th>
<td class="colLast">
<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/9/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util" class="externalLink">List</a>&lt;<a href="../../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getJoinFilters()">getJoinFilters</a></span>()</code></th>
<td class="colLast">
<div class="block">Returns all non-outer join filters in this multi-join.</div>
</td>
</tr>
<tr id="i13" class="rowColor">
<td class="colFirst"><code><a href="https://docs.oracle.com/javase/9/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang" class="externalLink">Integer</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getJoinRemovalFactor(int)">getJoinRemovalFactor</a></span>&#8203;(int&nbsp;dimIdx)</code></th>
<td class="colLast">
<div class="block">Returns the factor id of the fact table corresponding to a dimension
table in a semi-join, in the case where the join with the dimension table
can be removed.</div>
</td>
</tr>
<tr id="i14" class="altColor">
<td class="colFirst"><code><a href="../logical/LogicalJoin.html" title="class in org.apache.calcite.rel.logical">LogicalJoin</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getJoinRemovalSemiJoin(int)">getJoinRemovalSemiJoin</a></span>&#8203;(int&nbsp;dimIdx)</code></th>
<td class="colLast">
<div class="block">Returns the semi-join that allows the join of a dimension table to be
removed.</div>
</td>
</tr>
<tr id="i15" class="rowColor">
<td class="colFirst"><code>int</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getJoinStart(int)">getJoinStart</a></span>&#8203;(int&nbsp;factIdx)</code></th>
<td class="colLast">
<div class="block">Returns the starting offset within the multi-join for the specified factor.</div>
</td>
</tr>
<tr id="i16" class="altColor">
<td class="colFirst"><code><a href="https://docs.oracle.com/javase/9/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util" class="externalLink">List</a>&lt;<a href="../type/RelDataTypeField.html" title="interface in org.apache.calcite.rel.type">RelDataTypeField</a>&gt;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getMultiJoinFields()">getMultiJoinFields</a></span>()</code></th>
<td class="colLast">
<div class="block">Returns an array of fields contained within the multi-join.</div>
</td>
</tr>
<tr id="i17" class="rowColor">
<td class="colFirst"><code><a href="MultiJoin.html" title="class in org.apache.calcite.rel.rules">MultiJoin</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getMultiJoinRel()">getMultiJoinRel</a></span>()</code></th>
<td class="colLast">
<div class="block">Returns the MultiJoin corresponding to this multi-join.</div>
</td>
</tr>
<tr id="i18" class="altColor">
<td class="colFirst"><code>int</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getNumFieldsInJoinFactor(int)">getNumFieldsInJoinFactor</a></span>&#8203;(int&nbsp;factIdx)</code></th>
<td class="colLast">
<div class="block">Returns the number of fields in a given factor.</div>
</td>
</tr>
<tr id="i19" class="rowColor">
<td class="colFirst"><code>int</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getNumJoinFactors()">getNumJoinFactors</a></span>()</code></th>
<td class="colLast">
<div class="block">Returns the number of factors in this multi-join.</div>
</td>
</tr>
<tr id="i20" class="altColor">
<td class="colFirst"><code>int</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getNumTotalFields()">getNumTotalFields</a></span>()</code></th>
<td class="colLast">
<div class="block">Returns the total number of fields in the multi-join.</div>
</td>
</tr>
<tr id="i21" class="rowColor">
<td class="colFirst"><code><a href="https://docs.oracle.com/javase/9/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang" class="externalLink">Integer</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getOtherSelfJoinFactor(int)">getOtherSelfJoinFactor</a></span>&#8203;(int&nbsp;factIdx)</code></th>
<td class="colLast">
<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="../../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getOuterJoinCond(int)">getOuterJoinCond</a></span>&#8203;(int&nbsp;factIdx)</code></th>
<td class="colLast">
<div class="block">Returns outer join conditions associated with the specified null-generating
factor.</div>
</td>
</tr>
<tr id="i23" class="rowColor">
<td class="colFirst"><code><a href="../../util/ImmutableBitSet.html" title="class in org.apache.calcite.util">ImmutableBitSet</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getOuterJoinFactors(int)">getOuterJoinFactors</a></span>&#8203;(int&nbsp;factIdx)</code></th>
<td class="colLast">
<div class="block">Returns a 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.</div>
</td>
</tr>
<tr id="i24" class="altColor">
<td class="colFirst"><code><a href="../../util/ImmutableBitSet.html" title="class in org.apache.calcite.util">ImmutableBitSet</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getProjFields(int)">getProjFields</a></span>&#8203;(int&nbsp;factIdx)</code></th>
<td class="colLast">
<div class="block">Returns a bitmap containing the fields that are projected from a factor.</div>
</td>
</tr>
<tr id="i25" class="rowColor">
<td class="colFirst"><code><a href="https://docs.oracle.com/javase/9/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang" class="externalLink">Integer</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getRightColumnMapping(int,int)">getRightColumnMapping</a></span>&#8203;(int&nbsp;rightFactor,
int&nbsp;rightOffset)</code></th>
<td class="colLast">
<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>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#hasAllFactors(org.apache.calcite.rel.rules.LoptJoinTree,java.util.BitSet)">hasAllFactors</a></span>&#8203;(<a href="LoptJoinTree.html" title="class in org.apache.calcite.rel.rules">LoptJoinTree</a>&nbsp;joinTree,
<a href="https://docs.oracle.com/javase/9/docs/api/java/util/BitSet.html?is-external=true" title="class or interface in java.util" class="externalLink">BitSet</a>&nbsp;factorsNeeded)</code></th>
<td class="colLast">
<div class="block">Returns whether if a join tree contains all factors required.</div>
</td>
</tr>
<tr id="i27" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isLeftFactorInRemovableSelfJoin(int)">isLeftFactorInRemovableSelfJoin</a></span>&#8203;(int&nbsp;factIdx)</code></th>
<td class="colLast">
<div class="block">Returns whether the factor is the left factor in a self-join.</div>
</td>
</tr>
<tr id="i28" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isNullGenerating(int)">isNullGenerating</a></span>&#8203;(int&nbsp;factIdx)</code></th>
<td class="colLast">
<div class="block">Returns whether the factor corresponds to a null-generating factor
in a left or right outer join.</div>
</td>
</tr>
<tr id="i29" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isRemovableOuterJoinFactor(int)">isRemovableOuterJoinFactor</a></span>&#8203;(int&nbsp;factIdx)</code></th>
<td class="colLast">
<div class="block">Return whether the factor corresponds to the null-generating factor in
an outer join that can be removed.</div>
</td>
</tr>
<tr id="i30" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isRightFactorInRemovableSelfJoin(int)">isRightFactorInRemovableSelfJoin</a></span>&#8203;(int&nbsp;factIdx)</code></th>
<td class="colLast">
<div class="block">Returns whether the factor is the right factor in a self-join.</div>
</td>
</tr>
<tr id="i31" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setFactorWeights()">setFactorWeights</a></span>()</code></th>
<td class="colLast">
<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>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setJoinRemovalFactor(int,int)">setJoinRemovalFactor</a></span>&#8203;(int&nbsp;dimIdx,
int&nbsp;factIdx)</code></th>
<td class="colLast">
<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>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setJoinRemovalSemiJoin(int,org.apache.calcite.rel.logical.LogicalJoin)">setJoinRemovalSemiJoin</a></span>&#8203;(int&nbsp;dimIdx,
<a href="../logical/LogicalJoin.html" title="class in org.apache.calcite.rel.logical">LogicalJoin</a>&nbsp;semiJoin)</code></th>
<td class="colLast">
<div class="block">Indicates the semi-join that allows the join of a dimension table to be
removed.</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.<a href="https://docs.oracle.com/javase/9/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang" class="externalLink">Object</a></h3>
<code><a href="https://docs.oracle.com/javase/9/docs/api/java/lang/Object.html?is-external=true#clone()" title="class or interface in java.lang" class="externalLink">clone</a>, <a href="https://docs.oracle.com/javase/9/docs/api/java/lang/Object.html?is-external=true#equals(java.lang.Object)" title="class or interface in java.lang" class="externalLink">equals</a>, <a href="https://docs.oracle.com/javase/9/docs/api/java/lang/Object.html?is-external=true#finalize()" title="class or interface in java.lang" class="externalLink">finalize</a>, <a href="https://docs.oracle.com/javase/9/docs/api/java/lang/Object.html?is-external=true#getClass()" title="class or interface in java.lang" class="externalLink">getClass</a>, <a href="https://docs.oracle.com/javase/9/docs/api/java/lang/Object.html?is-external=true#hashCode()" title="class or interface in java.lang" class="externalLink">hashCode</a>, <a href="https://docs.oracle.com/javase/9/docs/api/java/lang/Object.html?is-external=true#notify()" title="class or interface in java.lang" class="externalLink">notify</a>, <a href="https://docs.oracle.com/javase/9/docs/api/java/lang/Object.html?is-external=true#notifyAll()" title="class or interface in java.lang" class="externalLink">notifyAll</a>, <a href="https://docs.oracle.com/javase/9/docs/api/java/lang/Object.html?is-external=true#toString()" title="class or interface in java.lang" class="externalLink">toString</a>, <a href="https://docs.oracle.com/javase/9/docs/api/java/lang/Object.html?is-external=true#wait()" title="class or interface in java.lang" class="externalLink">wait</a>, <a href="https://docs.oracle.com/javase/9/docs/api/java/lang/Object.html?is-external=true#wait(long)" title="class or interface in java.lang" class="externalLink">wait</a>, <a href="https://docs.oracle.com/javase/9/docs/api/java/lang/Object.html?is-external=true#wait(long,int)" title="class or interface in java.lang" class="externalLink">wait</a></code></li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="constructor.detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a id="&lt;init&gt;(org.apache.calcite.rel.rules.MultiJoin)">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>LoptMultiJoin</h4>
<pre>public&nbsp;LoptMultiJoin&#8203;(<a href="MultiJoin.html" title="class in org.apache.calcite.rel.rules">MultiJoin</a>&nbsp;multiJoin)</pre>
</li>
</ul>
</li>
</ul>
</section>
<!-- ============ METHOD DETAIL ========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a id="getMultiJoinRel()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getMultiJoinRel</h4>
<pre class="methodSignature">public&nbsp;<a href="MultiJoin.html" title="class in org.apache.calcite.rel.rules">MultiJoin</a>&nbsp;getMultiJoinRel()</pre>
<div class="block">Returns the MultiJoin corresponding to this multi-join.</div>
</li>
</ul>
<a id="getNumJoinFactors()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getNumJoinFactors</h4>
<pre class="methodSignature">public&nbsp;int&nbsp;getNumJoinFactors()</pre>
<div class="block">Returns the number of factors in this multi-join.</div>
</li>
</ul>
<a id="getJoinFactor(int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getJoinFactor</h4>
<pre class="methodSignature">public&nbsp;<a href="../RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;getJoinFactor&#8203;(int&nbsp;factIdx)</pre>
<div class="block">Returns the factor corresponding to the given factor index.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>factIdx</code> - Factor to be returned</dd>
</dl>
</li>
</ul>
<a id="getNumTotalFields()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getNumTotalFields</h4>
<pre class="methodSignature">public&nbsp;int&nbsp;getNumTotalFields()</pre>
<div class="block">Returns the total number of fields in the multi-join.</div>
</li>
</ul>
<a id="getNumFieldsInJoinFactor(int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getNumFieldsInJoinFactor</h4>
<pre class="methodSignature">public&nbsp;int&nbsp;getNumFieldsInJoinFactor&#8203;(int&nbsp;factIdx)</pre>
<div class="block">Returns the number of fields in a given factor.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>factIdx</code> - Desired factor</dd>
</dl>
</li>
</ul>
<a id="getJoinFilters()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getJoinFilters</h4>
<pre class="methodSignature">public&nbsp;<a href="https://docs.oracle.com/javase/9/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util" class="externalLink">List</a>&lt;<a href="../../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;getJoinFilters()</pre>
<div class="block">Returns all non-outer join filters in this multi-join.</div>
</li>
</ul>
<a id="getFactorsRefByJoinFilter(org.apache.calcite.rex.RexNode)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getFactorsRefByJoinFilter</h4>
<pre class="methodSignature">public&nbsp;<a href="../../util/ImmutableBitSet.html" title="class in org.apache.calcite.util">ImmutableBitSet</a>&nbsp;getFactorsRefByJoinFilter&#8203;(<a href="../../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;joinFilter)</pre>
<div class="block">Returns a bitmap corresponding to the factors referenced within
the specified join filter.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>joinFilter</code> - Filter for which information will be returned</dd>
</dl>
</li>
</ul>
<a id="getMultiJoinFields()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getMultiJoinFields</h4>
<pre class="methodSignature">public&nbsp;<a href="https://docs.oracle.com/javase/9/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util" class="externalLink">List</a>&lt;<a href="../type/RelDataTypeField.html" title="interface in org.apache.calcite.rel.type">RelDataTypeField</a>&gt;&nbsp;getMultiJoinFields()</pre>
<div class="block">Returns an array of fields contained within the multi-join.</div>
</li>
</ul>
<a id="getFieldsRefByJoinFilter(org.apache.calcite.rex.RexNode)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getFieldsRefByJoinFilter</h4>
<pre class="methodSignature">public&nbsp;<a href="../../util/ImmutableBitSet.html" title="class in org.apache.calcite.util">ImmutableBitSet</a>&nbsp;getFieldsRefByJoinFilter&#8203;(<a href="../../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;joinFilter)</pre>
<div class="block">Returns a bitmap corresponding to the fields referenced by a join filter.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>joinFilter</code> - the filter for which information will be returned</dd>
</dl>
</li>
</ul>
<a id="getFactorWeights()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getFactorWeights</h4>
<pre class="methodSignature">public&nbsp;int[][]&nbsp;getFactorWeights()</pre>
<div class="block">Returns weights of the different factors relative to one another.</div>
</li>
</ul>
<a id="getFactorsRefByFactor(int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getFactorsRefByFactor</h4>
<pre class="methodSignature">public&nbsp;<a href="../../util/ImmutableBitSet.html" title="class in org.apache.calcite.util">ImmutableBitSet</a>&nbsp;getFactorsRefByFactor&#8203;(int&nbsp;factIdx)</pre>
<div class="block">Returns a bitmap corresponding to the factors referenced by the specified
factor in the various join filters that correspond to comparisons.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>factIdx</code> - Factor for which information will be returned</dd>
</dl>
</li>
</ul>
<a id="getJoinStart(int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getJoinStart</h4>
<pre class="methodSignature">public&nbsp;int&nbsp;getJoinStart&#8203;(int&nbsp;factIdx)</pre>
<div class="block">Returns the starting offset within the multi-join for the specified factor.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>factIdx</code> - Factor for which information will be returned</dd>
</dl>
</li>
</ul>
<a id="isNullGenerating(int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isNullGenerating</h4>
<pre class="methodSignature">public&nbsp;boolean&nbsp;isNullGenerating&#8203;(int&nbsp;factIdx)</pre>
<div class="block">Returns whether the factor corresponds to a null-generating factor
in a left or right outer join.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>factIdx</code> - Factor for which information will be returned</dd>
</dl>
</li>
</ul>
<a id="getOuterJoinFactors(int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getOuterJoinFactors</h4>
<pre class="methodSignature">public&nbsp;<a href="../../util/ImmutableBitSet.html" title="class in org.apache.calcite.util">ImmutableBitSet</a>&nbsp;getOuterJoinFactors&#8203;(int&nbsp;factIdx)</pre>
<div class="block">Returns a 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.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>factIdx</code> - Factor for which information will be returned</dd>
</dl>
</li>
</ul>
<a id="getOuterJoinCond(int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getOuterJoinCond</h4>
<pre class="methodSignature">public&nbsp;<a href="../../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;getOuterJoinCond&#8203;(int&nbsp;factIdx)</pre>
<div class="block">Returns outer join conditions associated with the specified null-generating
factor.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>factIdx</code> - Factor for which information will be returned</dd>
</dl>
</li>
</ul>
<a id="getProjFields(int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getProjFields</h4>
<pre class="methodSignature">public&nbsp;<a href="../../util/ImmutableBitSet.html" title="class in org.apache.calcite.util">ImmutableBitSet</a>&nbsp;getProjFields&#8203;(int&nbsp;factIdx)</pre>
<div class="block">Returns a bitmap containing the fields that are projected from a factor.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>factIdx</code> - Factor for which information will be returned</dd>
</dl>
</li>
</ul>
<a id="getJoinFieldRefCounts(int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getJoinFieldRefCounts</h4>
<pre class="methodSignature">public&nbsp;int[]&nbsp;getJoinFieldRefCounts&#8203;(int&nbsp;factIdx)</pre>
<div class="block">Returns the join field reference counts for a factor.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>factIdx</code> - Factor for which information will be returned</dd>
</dl>
</li>
</ul>
<a id="getJoinRemovalFactor(int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getJoinRemovalFactor</h4>
<pre class="methodSignature">public&nbsp;<a href="https://docs.oracle.com/javase/9/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang" class="externalLink">Integer</a>&nbsp;getJoinRemovalFactor&#8203;(int&nbsp;dimIdx)</pre>
<div class="block">Returns the factor id of the fact table corresponding to a dimension
table in a semi-join, in the case where the join with the dimension table
can be removed.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>dimIdx</code> - Dimension factor for which information will be returned</dd>
</dl>
</li>
</ul>
<a id="getJoinRemovalSemiJoin(int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getJoinRemovalSemiJoin</h4>
<pre class="methodSignature">public&nbsp;<a href="../logical/LogicalJoin.html" title="class in org.apache.calcite.rel.logical">LogicalJoin</a>&nbsp;getJoinRemovalSemiJoin&#8203;(int&nbsp;dimIdx)</pre>
<div class="block">Returns the semi-join that allows the join of a dimension table to be
removed.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>dimIdx</code> - Dimension factor for which information will be returned</dd>
</dl>
</li>
</ul>
<a id="setJoinRemovalFactor(int,int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setJoinRemovalFactor</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;setJoinRemovalFactor&#8203;(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> - Dimension factor</dd>
<dd><code>factIdx</code> - Fact factor</dd>
</dl>
</li>
</ul>
<a id="setJoinRemovalSemiJoin(int,org.apache.calcite.rel.logical.LogicalJoin)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setJoinRemovalSemiJoin</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;setJoinRemovalSemiJoin&#8203;(int&nbsp;dimIdx,
<a href="../logical/LogicalJoin.html" title="class in org.apache.calcite.rel.logical">LogicalJoin</a>&nbsp;semiJoin)</pre>
<div class="block">Indicates the semi-join that allows the join of a dimension table to be
removed.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>dimIdx</code> - Dimension factor</dd>
<dd><code>semiJoin</code> - the semijoin</dd>
</dl>
</li>
</ul>
<a id="findRef(int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>findRef</h4>
<pre class="methodSignature">public&nbsp;int&nbsp;findRef&#8203;(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 id="setFactorWeights()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setFactorWeights</h4>
<pre class="methodSignature">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 id="hasAllFactors(org.apache.calcite.rel.rules.LoptJoinTree,java.util.BitSet)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>hasAllFactors</h4>
<pre class="methodSignature">public&nbsp;boolean&nbsp;hasAllFactors&#8203;(<a href="LoptJoinTree.html" title="class in org.apache.calcite.rel.rules">LoptJoinTree</a>&nbsp;joinTree,
<a href="https://docs.oracle.com/javase/9/docs/api/java/util/BitSet.html?is-external=true" title="class or interface in java.util" class="externalLink">BitSet</a>&nbsp;factorsNeeded)</pre>
<div class="block">Returns whether 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 id="getChildFactors(org.apache.calcite.rel.rules.LoptJoinTree,org.apache.calcite.util.ImmutableBitSet.Builder)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getChildFactors</h4>
<pre class="methodSignature"><a href="https://docs.oracle.com/javase/9/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang" class="externalLink">@Deprecated</a>
public&nbsp;void&nbsp;getChildFactors&#8203;(<a href="LoptJoinTree.html" title="class in org.apache.calcite.rel.rules">LoptJoinTree</a>&nbsp;joinTree,
<a href="../../util/ImmutableBitSet.Builder.html" title="class in org.apache.calcite.util">ImmutableBitSet.Builder</a>&nbsp;childFactors)</pre>
<div class="deprecationBlock"><span class="deprecatedLabel">Deprecated.</span></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 id="getJoinFields(org.apache.calcite.rel.rules.LoptJoinTree,org.apache.calcite.rel.rules.LoptJoinTree)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getJoinFields</h4>
<pre class="methodSignature">public&nbsp;<a href="https://docs.oracle.com/javase/9/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util" class="externalLink">List</a>&lt;<a href="../type/RelDataTypeField.html" title="interface in org.apache.calcite.rel.type">RelDataTypeField</a>&gt;&nbsp;getJoinFields&#8203;(<a href="LoptJoinTree.html" title="class in org.apache.calcite.rel.rules">LoptJoinTree</a>&nbsp;left,
<a href="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 id="addRemovableOuterJoinFactor(int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>addRemovableOuterJoinFactor</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;addRemovableOuterJoinFactor&#8203;(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 id="isRemovableOuterJoinFactor(int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isRemovableOuterJoinFactor</h4>
<pre class="methodSignature">public&nbsp;boolean&nbsp;isRemovableOuterJoinFactor&#8203;(int&nbsp;factIdx)</pre>
<div class="block">Return whether the factor corresponds to the null-generating factor in
an outer join that can be removed.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>factIdx</code> - Factor in question</dd>
</dl>
</li>
</ul>
<a id="addRemovableSelfJoinPair(int,int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>addRemovableSelfJoinPair</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;addRemovableSelfJoinPair&#8203;(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 id="getOtherSelfJoinFactor(int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getOtherSelfJoinFactor</h4>
<pre class="methodSignature">public&nbsp;<a href="https://docs.oracle.com/javase/9/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang" class="externalLink">Integer</a>&nbsp;getOtherSelfJoinFactor&#8203;(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 id="isLeftFactorInRemovableSelfJoin(int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isLeftFactorInRemovableSelfJoin</h4>
<pre class="methodSignature">public&nbsp;boolean&nbsp;isLeftFactorInRemovableSelfJoin&#8203;(int&nbsp;factIdx)</pre>
<div class="block">Returns whether the factor is the left factor in a self-join.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>factIdx</code> - Factor in a self-join</dd>
</dl>
</li>
</ul>
<a id="isRightFactorInRemovableSelfJoin(int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isRightFactorInRemovableSelfJoin</h4>
<pre class="methodSignature">public&nbsp;boolean&nbsp;isRightFactorInRemovableSelfJoin&#8203;(int&nbsp;factIdx)</pre>
<div class="block">Returns whether the factor is the right factor in a self-join.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>factIdx</code> - Factor in a self-join</dd>
</dl>
</li>
</ul>
<a id="getRightColumnMapping(int,int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getRightColumnMapping</h4>
<pre class="methodSignature">public&nbsp;<a href="https://docs.oracle.com/javase/9/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang" class="externalLink">Integer</a>&nbsp;getRightColumnMapping&#8203;(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 id="createEdge(org.apache.calcite.rex.RexNode)">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>createEdge</h4>
<pre class="methodSignature">public&nbsp;org.apache.calcite.rel.rules.LoptMultiJoin.Edge&nbsp;createEdge&#8203;(<a href="../../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;condition)</pre>
</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 class="aboutLanguage"><b>Apache Calcite</b></div>
</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><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 id="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</nav>
<p class="legalCopy"><small>Copyright &copy; 2012-2020 Apache Software Foundation. All Rights Reserved.</small></p>
</footer>
</body>
</html>