blob: f3b2ba51c00f9f771b068e65ea8c3b8e631b1c18 [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 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 API)";
}
}
catch(err) {
}
//-->
var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":42,"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,"i34":10,"i35":10,"i36":10,"i37":10,"i38":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="class-use/LoptMultiJoin.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<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/LoptMultiJoin.Edge.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><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
<li><a href="#field.summary">Field</a>&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><a href="#field.detail">Field</a>&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">
<!-- ======== NESTED CLASS SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="nested.class.summary">
<!-- -->
</a>
<h3>Nested Class Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Nested Class Summary table, listing nested classes, and an explanation">
<caption><span>Nested Classes</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Class and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>(package private) static class&nbsp;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/calcite/rel/rules/LoptMultiJoin.Edge.html" title="class in org.apache.calcite.rel.rules">LoptMultiJoin.Edge</a></span></code>
<div class="block">Information about a join-condition.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>private class&nbsp;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/calcite/rel/rules/LoptMultiJoin.RemovableSelfJoin.html" title="class in org.apache.calcite.rel.rules">LoptMultiJoin.RemovableSelfJoin</a></span></code>
<div class="block">Utility class used to keep track of the factors in a removable self-join.</div>
</td>
</tr>
</table>
</li>
</ul>
<!-- =========== FIELD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="field.summary">
<!-- -->
</a>
<h3>Field Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation">
<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Field and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>private <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#allJoinFilters">allJoinFilters</a></span></code>
<div class="block">All join filters associated with the MultiJoin, decomposed into a
list.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>(package private) <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#factorsRefByFactor">factorsRefByFactor</a></span></code>
<div class="block">Bitmap indicating which factors each factor references in join filters
that correspond to comparisons</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>private <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../../../../org/apache/calcite/rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>,<a href="../../../../../org/apache/calcite/util/ImmutableBitSet.html" title="class in org.apache.calcite.util">ImmutableBitSet</a>&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/calcite/rel/rules/LoptMultiJoin.html#factorsRefByJoinFilter">factorsRefByJoinFilter</a></span></code>
<div class="block">For each join filter, associates a bitmap indicating all factors
referenced by the filter</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>(package private) int[][]</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/calcite/rel/rules/LoptMultiJoin.html#factorWeights">factorWeights</a></span></code>
<div class="block">Weights of each factor combination</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>(package private) <a href="../../../../../org/apache/calcite/rel/type/RelDataTypeFactory.html" title="interface in org.apache.calcite.rel.type">RelDataTypeFactory</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/calcite/rel/rules/LoptMultiJoin.html#factory">factory</a></span></code>
<div class="block">Type factory</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>private <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../../../../org/apache/calcite/rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>,<a href="../../../../../org/apache/calcite/util/ImmutableBitSet.html" title="class in org.apache.calcite.util">ImmutableBitSet</a>&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/calcite/rel/rules/LoptMultiJoin.html#fieldsRefByJoinFilter">fieldsRefByJoinFilter</a></span></code>
<div class="block">For each join filter, associates a bitmap indicating all fields
referenced by the filter</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>private com.google.common.collect.ImmutableList&lt;<a href="../../../../../org/apache/calcite/rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/calcite/rel/rules/LoptMultiJoin.html#joinFactors">joinFactors</a></span></code>
<div class="block">Original inputs into the MultiJoin</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>private <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<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>,int[]&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/calcite/rel/rules/LoptMultiJoin.html#joinFieldRefCountsMap">joinFieldRefCountsMap</a></span></code>
<div class="block">Map containing reference counts of the fields referenced in join
conditions for each join factor.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>private <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#joinFilters">joinFilters</a></span></code>
<div class="block">Join filters associated with the MultiJoin, decomposed into a list.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>(package private) <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#joinRemovalFactors">joinRemovalFactors</a></span></code>
<div class="block">Indicates for each factor whether its join can be removed because it is
the dimension table in a semijoin.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>(package private) <a href="../../../../../org/apache/calcite/rel/core/SemiJoin.html" title="class in org.apache.calcite.rel.core">SemiJoin</a>[]</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/calcite/rel/rules/LoptMultiJoin.html#joinRemovalSemiJoins">joinRemovalSemiJoins</a></span></code>
<div class="block">The semijoins that allow the join of a dimension table to be removed</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>(package private) int[]</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/calcite/rel/rules/LoptMultiJoin.html#joinStart">joinStart</a></span></code>
<div class="block">Starting RexInputRef index corresponding to each join factor</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>private com.google.common.collect.ImmutableList&lt;<a href="../../../../../org/apache/calcite/rel/core/JoinRelType.html" title="enum in org.apache.calcite.rel.core">JoinRelType</a>&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/calcite/rel/rules/LoptMultiJoin.html#joinTypes">joinTypes</a></span></code>
<div class="block">If a join factor is null generating in a left or right outer join,
joinTypes indicates the join type corresponding to the factor.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>(package private) <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#multiJoin">multiJoin</a></span></code>
<div class="block">The MultiJoin being optimized</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>(package private) int[]</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/calcite/rel/rules/LoptMultiJoin.html#nFieldsInJoinFactor">nFieldsInJoinFactor</a></span></code>
<div class="block">Number of fields in each join factor</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>private int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/calcite/rel/rules/LoptMultiJoin.html#nJoinFactors">nJoinFactors</a></span></code>
<div class="block">Number of factors into the MultiJoin</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>private int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/calcite/rel/rules/LoptMultiJoin.html#nTotalFields">nTotalFields</a></span></code>
<div class="block">Total number of fields in the MultiJoin</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>private <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#outerJoinFactors">outerJoinFactors</a></span></code>
<div class="block">If a join factor is null generating in a left or right outer join, the
bitmap contains the non-null generating factors that the null generating
factor is dependent upon</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>private <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/util/ImmutableBitSet.html" title="class in org.apache.calcite.util">ImmutableBitSet</a>&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/calcite/rel/rules/LoptMultiJoin.html#projFields">projFields</a></span></code>
<div class="block">Bitmap corresponding to the fields projected from each join factor, after
row scan processing has completed.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>(package private) <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<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>&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/calcite/rel/rules/LoptMultiJoin.html#removableOuterJoinFactors">removableOuterJoinFactors</a></span></code>
<div class="block">Set of null-generating factors whose corresponding outer join can be
removed from the query plan</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>(package private) <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<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>,<a href="../../../../../org/apache/calcite/rel/rules/LoptMultiJoin.RemovableSelfJoin.html" title="class in org.apache.calcite.rel.rules">LoptMultiJoin.RemovableSelfJoin</a>&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/calcite/rel/rules/LoptMultiJoin.html#removableSelfJoinPairs">removableSelfJoinPairs</a></span></code>
<div class="block">Map consisting of all pairs of self-joins where the self-join can be
removed because the join between the identical factors is an equality
join on the same set of unique keys.</div>
</td>
</tr>
</table>
</li>
</ul>
<!-- ======== 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><a href="../../../../../org/apache/calcite/rel/rules/LoptMultiJoin.Edge.html" title="class in org.apache.calcite.rel.rules">LoptMultiJoin.Edge</a></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>private <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#factorBitmap-org.apache.calcite.util.ImmutableBitSet-">factorBitmap</a></span>(<a href="../../../../../org/apache/calcite/util/ImmutableBitSet.html" title="class in org.apache.calcite.util">ImmutableBitSet</a>&nbsp;fieldRefBitmap)</code>
<div class="block">Sets the bitmap indicating which factors a filter references based on
which fields it references</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>private <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#fieldBitmap-org.apache.calcite.rex.RexNode-">fieldBitmap</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="i5" 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="i6" 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="i7" 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="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#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="i9" 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="i10" 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="i11" 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="i12" 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="i13" 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="i14" class="altColor">
<td class="colFirst"><code>(package private) <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#getJoinFilterFactorBitmap-org.apache.calcite.rex.RexNode-boolean-">getJoinFilterFactorBitmap</a></span>(<a href="../../../../../org/apache/calcite/rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;joinFilter,
boolean&nbsp;setFields)</code>
<div class="block">Returns a bitmap representing the factors referenced in a join filter</div>
</td>
</tr>
<tr id="i15" 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/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="i16" class="altColor">
<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="i17" class="rowColor">
<td class="colFirst"><code><a href="../../../../../org/apache/calcite/rel/core/SemiJoin.html" title="class in org.apache.calcite.rel.core">SemiJoin</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="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#getJoinStart-int-">getJoinStart</a></span>(int&nbsp;factIdx)</code>&nbsp;</td>
</tr>
<tr id="i19" 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#getMultiJoinFields--">getMultiJoinFields</a></span>()</code>
<div class="block">Returns array of fields contained within the multi-join</div>
</td>
</tr>
<tr id="i20" class="altColor">
<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="i21" 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#getNumFieldsInJoinFactor-int-">getNumFieldsInJoinFactor</a></span>(int&nbsp;factIdx)</code>&nbsp;</td>
</tr>
<tr id="i22" 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#getNumJoinFactors--">getNumJoinFactors</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i23" 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#getNumTotalFields--">getNumTotalFields</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i24" class="altColor">
<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="i25" class="rowColor">
<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="i26" 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#getOuterJoinFactors-int-">getOuterJoinFactors</a></span>(int&nbsp;factIdx)</code>&nbsp;</td>
</tr>
<tr id="i27" 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#getProjFields-int-">getProjFields</a></span>(int&nbsp;factIdx)</code>&nbsp;</td>
</tr>
<tr id="i28" class="altColor">
<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="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#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="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#isLeftFactorInRemovableSelfJoin-int-">isLeftFactorInRemovableSelfJoin</a></span>(int&nbsp;factIdx)</code>&nbsp;</td>
</tr>
<tr id="i31" 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#isNullGenerating-int-">isNullGenerating</a></span>(int&nbsp;factIdx)</code>&nbsp;</td>
</tr>
<tr id="i32" 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#isRemovableOuterJoinFactor-int-">isRemovableOuterJoinFactor</a></span>(int&nbsp;factIdx)</code>&nbsp;</td>
</tr>
<tr id="i33" 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#isRightFactorInRemovableSelfJoin-int-">isRightFactorInRemovableSelfJoin</a></span>(int&nbsp;factIdx)</code>&nbsp;</td>
</tr>
<tr id="i34" class="altColor">
<td class="colFirst"><code>private void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/calcite/rel/rules/LoptMultiJoin.html#setFactorWeight-int-int-int-">setFactorWeight</a></span>(int&nbsp;weight,
int&nbsp;leftFactor,
int&nbsp;rightFactor)</code>
<div class="block">Sets an individual weight if the new weight is better than the current
one</div>
</td>
</tr>
<tr id="i35" 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="i36" class="altColor">
<td class="colFirst"><code>private void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/calcite/rel/rules/LoptMultiJoin.html#setJoinFilterRefs--">setJoinFilterRefs</a></span>()</code>
<div class="block">Sets bitmaps indicating which factors and fields each join filter
references</div>
</td>
</tr>
<tr id="i37" 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#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="i38" 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#setJoinRemovalSemiJoin-int-org.apache.calcite.rel.core.SemiJoin-">setJoinRemovalSemiJoin</a></span>(int&nbsp;dimIdx,
<a href="../../../../../org/apache/calcite/rel/core/SemiJoin.html" title="class in org.apache.calcite.rel.core">SemiJoin</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">
<!-- ============ FIELD DETAIL =========== -->
<ul class="blockList">
<li class="blockList"><a name="field.detail">
<!-- -->
</a>
<h3>Field Detail</h3>
<a name="multiJoin">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>multiJoin</h4>
<pre><a href="../../../../../org/apache/calcite/rel/rules/MultiJoin.html" title="class in org.apache.calcite.rel.rules">MultiJoin</a> multiJoin</pre>
<div class="block">The MultiJoin being optimized</div>
</li>
</ul>
<a name="joinFilters">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>joinFilters</h4>
<pre>private&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; joinFilters</pre>
<div class="block">Join filters associated with the MultiJoin, decomposed into a list.
Excludes left/right outer join filters.</div>
</li>
</ul>
<a name="allJoinFilters">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>allJoinFilters</h4>
<pre>private&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; allJoinFilters</pre>
<div class="block">All join filters associated with the MultiJoin, decomposed into a
list. Includes left/right outer join filters.</div>
</li>
</ul>
<a name="nJoinFactors">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>nJoinFactors</h4>
<pre>private final&nbsp;int nJoinFactors</pre>
<div class="block">Number of factors into the MultiJoin</div>
</li>
</ul>
<a name="nTotalFields">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>nTotalFields</h4>
<pre>private&nbsp;int nTotalFields</pre>
<div class="block">Total number of fields in the MultiJoin</div>
</li>
</ul>
<a name="joinFactors">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>joinFactors</h4>
<pre>private final&nbsp;com.google.common.collect.ImmutableList&lt;<a href="../../../../../org/apache/calcite/rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&gt; joinFactors</pre>
<div class="block">Original inputs into the MultiJoin</div>
</li>
</ul>
<a name="joinTypes">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>joinTypes</h4>
<pre>private final&nbsp;com.google.common.collect.ImmutableList&lt;<a href="../../../../../org/apache/calcite/rel/core/JoinRelType.html" title="enum in org.apache.calcite.rel.core">JoinRelType</a>&gt; joinTypes</pre>
<div class="block">If a join factor is null generating in a left or right outer join,
joinTypes indicates the join type corresponding to the factor. Otherwise,
it is set to INNER.</div>
</li>
</ul>
<a name="outerJoinFactors">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>outerJoinFactors</h4>
<pre>private final&nbsp;<a href="../../../../../org/apache/calcite/util/ImmutableBitSet.html" title="class in org.apache.calcite.util">ImmutableBitSet</a>[] outerJoinFactors</pre>
<div class="block">If a join factor is null generating in a left or right outer join, the
bitmap contains the non-null generating factors that the null generating
factor is dependent upon</div>
</li>
</ul>
<a name="projFields">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>projFields</h4>
<pre>private&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/util/ImmutableBitSet.html" title="class in org.apache.calcite.util">ImmutableBitSet</a>&gt; projFields</pre>
<div class="block">Bitmap corresponding to the fields projected from each join factor, after
row scan processing has completed. This excludes fields referenced in
join conditions, unless the field appears in the final projection list.</div>
</li>
</ul>
<a name="joinFieldRefCountsMap">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>joinFieldRefCountsMap</h4>
<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<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>,int[]&gt; joinFieldRefCountsMap</pre>
<div class="block">Map containing reference counts of the fields referenced in join
conditions for each join factor. If a field is only required for a
semijoin, then it is removed from the reference count. (Hence the need
for reference counts instead of simply a bitmap.) The map is indexed by
the factor number.</div>
</li>
</ul>
<a name="factorsRefByJoinFilter">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>factorsRefByJoinFilter</h4>
<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../../../../org/apache/calcite/rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>,<a href="../../../../../org/apache/calcite/util/ImmutableBitSet.html" title="class in org.apache.calcite.util">ImmutableBitSet</a>&gt; factorsRefByJoinFilter</pre>
<div class="block">For each join filter, associates a bitmap indicating all factors
referenced by the filter</div>
</li>
</ul>
<a name="fieldsRefByJoinFilter">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>fieldsRefByJoinFilter</h4>
<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../../../../org/apache/calcite/rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>,<a href="../../../../../org/apache/calcite/util/ImmutableBitSet.html" title="class in org.apache.calcite.util">ImmutableBitSet</a>&gt; fieldsRefByJoinFilter</pre>
<div class="block">For each join filter, associates a bitmap indicating all fields
referenced by the filter</div>
</li>
</ul>
<a name="joinStart">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>joinStart</h4>
<pre>int[] joinStart</pre>
<div class="block">Starting RexInputRef index corresponding to each join factor</div>
</li>
</ul>
<a name="nFieldsInJoinFactor">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>nFieldsInJoinFactor</h4>
<pre>int[] nFieldsInJoinFactor</pre>
<div class="block">Number of fields in each join factor</div>
</li>
</ul>
<a name="factorsRefByFactor">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>factorsRefByFactor</h4>
<pre><a href="../../../../../org/apache/calcite/util/ImmutableBitSet.html" title="class in org.apache.calcite.util">ImmutableBitSet</a>[] factorsRefByFactor</pre>
<div class="block">Bitmap indicating which factors each factor references in join filters
that correspond to comparisons</div>
</li>
</ul>
<a name="factorWeights">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>factorWeights</h4>
<pre>int[][] factorWeights</pre>
<div class="block">Weights of each factor combination</div>
</li>
</ul>
<a name="factory">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>factory</h4>
<pre>final&nbsp;<a href="../../../../../org/apache/calcite/rel/type/RelDataTypeFactory.html" title="interface in org.apache.calcite.rel.type">RelDataTypeFactory</a> factory</pre>
<div class="block">Type factory</div>
</li>
</ul>
<a name="joinRemovalFactors">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>joinRemovalFactors</h4>
<pre><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>[] joinRemovalFactors</pre>
<div class="block">Indicates for each factor whether its join can be removed because it is
the dimension table in a semijoin. If it can be, the entry indicates the
factor id of the fact table (corresponding to the dimension table) in the
semijoin that allows the factor to be removed. If the factor cannot be
removed, the entry corresponding to the factor is null.</div>
</li>
</ul>
<a name="joinRemovalSemiJoins">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>joinRemovalSemiJoins</h4>
<pre><a href="../../../../../org/apache/calcite/rel/core/SemiJoin.html" title="class in org.apache.calcite.rel.core">SemiJoin</a>[] joinRemovalSemiJoins</pre>
<div class="block">The semijoins that allow the join of a dimension table to be removed</div>
</li>
</ul>
<a name="removableOuterJoinFactors">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>removableOuterJoinFactors</h4>
<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<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>&gt; removableOuterJoinFactors</pre>
<div class="block">Set of null-generating factors whose corresponding outer join can be
removed from the query plan</div>
</li>
</ul>
<a name="removableSelfJoinPairs">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>removableSelfJoinPairs</h4>
<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<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>,<a href="../../../../../org/apache/calcite/rel/rules/LoptMultiJoin.RemovableSelfJoin.html" title="class in org.apache.calcite.rel.rules">LoptMultiJoin.RemovableSelfJoin</a>&gt; removableSelfJoinPairs</pre>
<div class="block">Map consisting of all pairs of self-joins where the self-join can be
removed because the join between the identical factors is an equality
join on the same set of unique keys. The map is keyed by either factor in
the self join.</div>
</li>
</ul>
</li>
</ul>
<!-- ========= 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/core/SemiJoin.html" title="class in org.apache.calcite.rel.core">SemiJoin</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.core.SemiJoin-">
<!-- -->
</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/core/SemiJoin.html" title="class in org.apache.calcite.rel.core">SemiJoin</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="getJoinFilterFactorBitmap-org.apache.calcite.rex.RexNode-boolean-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getJoinFilterFactorBitmap</h4>
<pre><a href="../../../../../org/apache/calcite/util/ImmutableBitSet.html" title="class in org.apache.calcite.util">ImmutableBitSet</a>&nbsp;getJoinFilterFactorBitmap(<a href="../../../../../org/apache/calcite/rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;joinFilter,
boolean&nbsp;setFields)</pre>
<div class="block">Returns a bitmap representing the factors referenced in a join filter</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>joinFilter</code> - the join filter</dd>
<dd><code>setFields</code> - if true, add the fields referenced by the join filter
into a map</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the bitmap containing the factor references</dd>
</dl>
</li>
</ul>
<a name="fieldBitmap-org.apache.calcite.rex.RexNode-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>fieldBitmap</h4>
<pre>private&nbsp;<a href="../../../../../org/apache/calcite/util/ImmutableBitSet.html" title="class in org.apache.calcite.util">ImmutableBitSet</a>&nbsp;fieldBitmap(<a href="../../../../../org/apache/calcite/rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;joinFilter)</pre>
</li>
</ul>
<a name="setJoinFilterRefs--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setJoinFilterRefs</h4>
<pre>private&nbsp;void&nbsp;setJoinFilterRefs()</pre>
<div class="block">Sets bitmaps indicating which factors and fields each join filter
references</div>
</li>
</ul>
<a name="factorBitmap-org.apache.calcite.util.ImmutableBitSet-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>factorBitmap</h4>
<pre>private&nbsp;<a href="../../../../../org/apache/calcite/util/ImmutableBitSet.html" title="class in org.apache.calcite.util">ImmutableBitSet</a>&nbsp;factorBitmap(<a href="../../../../../org/apache/calcite/util/ImmutableBitSet.html" title="class in org.apache.calcite.util">ImmutableBitSet</a>&nbsp;fieldRefBitmap)</pre>
<div class="block">Sets the bitmap indicating which factors a filter references based on
which fields it references</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>fieldRefBitmap</code> - bitmap representing fields referenced</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>bitmap representing factors referenced that will
be set by this method</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="setFactorWeight-int-int-int-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setFactorWeight</h4>
<pre>private&nbsp;void&nbsp;setFactorWeight(int&nbsp;weight,
int&nbsp;leftFactor,
int&nbsp;rightFactor)</pre>
<div class="block">Sets an individual weight if the new weight is better than the current
one</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>weight</code> - weight to be set</dd>
<dd><code>leftFactor</code> - index of left factor</dd>
<dd><code>rightFactor</code> - index of right factor</dd>
</dl>
</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;<a href="../../../../../org/apache/calcite/rel/rules/LoptMultiJoin.Edge.html" title="class in org.apache.calcite.rel.rules">LoptMultiJoin.Edge</a>&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="class-use/LoptMultiJoin.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<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/LoptMultiJoin.Edge.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><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
<li><a href="#field.summary">Field</a>&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><a href="#field.detail">Field</a>&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 &#169; 2012&#x2013;2019 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
</body>
</html>