blob: 7b0830665ac4a779c0de506aae29c78a17510f11 [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>JoinPrel (Drill : 1.20.3 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="JoinPrel (Drill : 1.20.3 API)";
}
}
catch(err) {
}
//-->
var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/JoinPrel.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/drill/exec/planner/physical/HashToRandomExchangePrel.html" title="class in org.apache.drill.exec.planner.physical"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../../../org/apache/drill/exec/planner/physical/JoinPruleBase.html" title="class in org.apache.drill.exec.planner.physical"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../../index.html?org/apache/drill/exec/planner/physical/JoinPrel.html" target="_top">Frames</a></li>
<li><a href="JoinPrel.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li><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.drill.exec.planner.physical</div>
<h2 title="Class JoinPrel" class="title">Class JoinPrel</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.AbstractRelNode</li>
<li>
<ul class="inheritance">
<li>org.apache.calcite.rel.BiRel</li>
<li>
<ul class="inheritance">
<li>org.apache.calcite.rel.core.Join</li>
<li>
<ul class="inheritance">
<li><a href="../../../../../../org/apache/drill/exec/planner/common/DrillJoinRelBase.html" title="class in org.apache.drill.exec.planner.common">org.apache.drill.exec.planner.common.DrillJoinRelBase</a></li>
<li>
<ul class="inheritance">
<li>org.apache.drill.exec.planner.physical.JoinPrel</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Implemented Interfaces:</dt>
<dd><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Cloneable.html?is-external=true" title="class or interface in java.lang">Cloneable</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true" title="class or interface in java.lang">Iterable</a>&lt;<a href="../../../../../../org/apache/drill/exec/planner/physical/Prel.html" title="interface in org.apache.drill.exec.planner.physical">Prel</a>&gt;, org.apache.calcite.plan.RelOptNode, org.apache.calcite.rel.RelNode, <a href="../../../../../../org/apache/drill/exec/planner/common/DrillRelNode.html" title="interface in org.apache.drill.exec.planner.common">DrillRelNode</a>, <a href="../../../../../../org/apache/drill/exec/planner/logical/DrillJoin.html" title="interface in org.apache.drill.exec.planner.logical">DrillJoin</a>, <a href="../../../../../../org/apache/drill/exec/planner/physical/Prel.html" title="interface in org.apache.drill.exec.planner.physical">Prel</a></dd>
</dl>
<dl>
<dt>Direct Known Subclasses:</dt>
<dd><a href="../../../../../../org/apache/drill/exec/planner/physical/HashJoinPrel.html" title="class in org.apache.drill.exec.planner.physical">HashJoinPrel</a>, <a href="../../../../../../org/apache/drill/exec/planner/physical/MergeJoinPrel.html" title="class in org.apache.drill.exec.planner.physical">MergeJoinPrel</a>, <a href="../../../../../../org/apache/drill/exec/planner/physical/NestedLoopJoinPrel.html" title="class in org.apache.drill.exec.planner.physical">NestedLoopJoinPrel</a>, <a href="../../../../../../org/apache/drill/exec/planner/physical/RowKeyJoinPrel.html" title="class in org.apache.drill.exec.planner.physical">RowKeyJoinPrel</a></dd>
</dl>
<hr>
<br>
<pre>public abstract class <span class="typeNameLabel">JoinPrel</span>
extends <a href="../../../../../../org/apache/drill/exec/planner/common/DrillJoinRelBase.html" title="class in org.apache.drill.exec.planner.common">DrillJoinRelBase</a>
implements <a href="../../../../../../org/apache/drill/exec/planner/physical/Prel.html" title="interface in org.apache.drill.exec.planner.physical">Prel</a></pre>
<div class="block">Base class for MergeJoinPrel and HashJoinPrel</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>
<ul class="blockList">
<li class="blockList"><a name="nested.classes.inherited.from.class.org.apache.calcite.rel.RelNode">
<!-- -->
</a>
<h3>Nested classes/interfaces inherited from interface&nbsp;org.apache.calcite.rel.RelNode</h3>
<code>org.apache.calcite.rel.RelNode.Context</code></li>
</ul>
</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>protected boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/drill/exec/planner/physical/JoinPrel.html#isSemiJoin">isSemiJoin</a></span></code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>protected <a href="../../../../../../org/apache/drill/exec/physical/impl/join/JoinUtils.JoinCategory.html" title="enum in org.apache.drill.exec.physical.impl.join">JoinUtils.JoinCategory</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/drill/exec/planner/physical/JoinPrel.html#joincategory">joincategory</a></span></code>&nbsp;</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="fields.inherited.from.class.org.apache.drill.exec.planner.common.DrillJoinRelBase">
<!-- -->
</a>
<h3>Fields inherited from class&nbsp;org.apache.drill.exec.planner.common.<a href="../../../../../../org/apache/drill/exec/planner/common/DrillJoinRelBase.html" title="class in org.apache.drill.exec.planner.common">DrillJoinRelBase</a></h3>
<code><a href="../../../../../../org/apache/drill/exec/planner/common/DrillJoinRelBase.html#filterNulls">filterNulls</a>, <a href="../../../../../../org/apache/drill/exec/planner/common/DrillJoinRelBase.html#leftKeys">leftKeys</a>, <a href="../../../../../../org/apache/drill/exec/planner/common/DrillJoinRelBase.html#rightKeys">rightKeys</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="fields.inherited.from.class.org.apache.calcite.rel.core.Join">
<!-- -->
</a>
<h3>Fields inherited from class&nbsp;org.apache.calcite.rel.core.Join</h3>
<code>condition, joinInfo, joinType, variablesSet</code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="fields.inherited.from.class.org.apache.calcite.rel.BiRel">
<!-- -->
</a>
<h3>Fields inherited from class&nbsp;org.apache.calcite.rel.BiRel</h3>
<code>left, right</code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="fields.inherited.from.class.org.apache.calcite.rel.AbstractRelNode">
<!-- -->
</a>
<h3>Fields inherited from class&nbsp;org.apache.calcite.rel.AbstractRelNode</h3>
<code>digest, id, rowType, traitSet</code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="fields.inherited.from.class.org.apache.drill.exec.planner.physical.Prel">
<!-- -->
</a>
<h3>Fields inherited from interface&nbsp;org.apache.drill.exec.planner.physical.<a href="../../../../../../org/apache/drill/exec/planner/physical/Prel.html" title="interface in org.apache.drill.exec.planner.physical">Prel</a></h3>
<code><a href="../../../../../../org/apache/drill/exec/planner/physical/Prel.html#DRILL_PHYSICAL">DRILL_PHYSICAL</a></code></li>
</ul>
</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/drill/exec/planner/physical/JoinPrel.html#JoinPrel-org.apache.calcite.plan.RelOptCluster-org.apache.calcite.plan.RelTraitSet-org.apache.calcite.rel.RelNode-org.apache.calcite.rel.RelNode-org.apache.calcite.rex.RexNode-org.apache.calcite.rel.core.JoinRelType-">JoinPrel</a></span>(org.apache.calcite.plan.RelOptCluster&nbsp;cluster,
org.apache.calcite.plan.RelTraitSet&nbsp;traits,
org.apache.calcite.rel.RelNode&nbsp;left,
org.apache.calcite.rel.RelNode&nbsp;right,
org.apache.calcite.rex.RexNode&nbsp;condition,
org.apache.calcite.rel.core.JoinRelType&nbsp;joinType)</code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../../org/apache/drill/exec/planner/physical/JoinPrel.html#JoinPrel-org.apache.calcite.plan.RelOptCluster-org.apache.calcite.plan.RelTraitSet-org.apache.calcite.rel.RelNode-org.apache.calcite.rel.RelNode-org.apache.calcite.rex.RexNode-org.apache.calcite.rel.core.JoinRelType-boolean-">JoinPrel</a></span>(org.apache.calcite.plan.RelOptCluster&nbsp;cluster,
org.apache.calcite.plan.RelTraitSet&nbsp;traits,
org.apache.calcite.rel.RelNode&nbsp;left,
org.apache.calcite.rel.RelNode&nbsp;right,
org.apache.calcite.rex.RexNode&nbsp;condition,
org.apache.calcite.rel.core.JoinRelType&nbsp;joinType,
boolean&nbsp;isSemiJoin)</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></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>&lt;T,X,E extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a>&gt;<br>T</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/drill/exec/planner/physical/JoinPrel.html#accept-org.apache.drill.exec.planner.physical.visitor.PrelVisitor-X-">accept</a></span>(<a href="../../../../../../org/apache/drill/exec/planner/physical/visitor/PrelVisitor.html" title="interface in org.apache.drill.exec.planner.physical.visitor">PrelVisitor</a>&lt;T,X,E&gt;&nbsp;logicalVisitor,
X&nbsp;value)</code>&nbsp;</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>protected void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/drill/exec/planner/physical/JoinPrel.html#buildJoinConditions-java.util.List-java.util.List-java.util.List-java.util.List-java.util.List-">buildJoinConditions</a></span>(<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/drill/common/logical/data/JoinCondition.html" title="class in org.apache.drill.common.logical.data">JoinCondition</a>&gt;&nbsp;conditions,
<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="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;leftFields,
<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="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;rightFields,
<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="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;&nbsp;leftKeys,
<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="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;&nbsp;rightKeys)</code>
<div class="block">Build the list of join conditions for this join.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>org.apache.calcite.rel.type.RelDataType</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/drill/exec/planner/physical/JoinPrel.html#deriveRowType--">deriveRowType</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>org.apache.calcite.rel.RelNode</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/drill/exec/planner/physical/JoinPrel.html#getJoinInput-int-org.apache.calcite.rel.RelNode-">getJoinInput</a></span>(int&nbsp;offset,
org.apache.calcite.rel.RelNode&nbsp;input)</code>
<div class="block">Check to make sure that the fields of the inputs are the same as the output field names.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/drill/exec/planner/physical/JoinPrel.html#isSemiJoin--">isSemiJoin</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/drill/exec/planner/physical/JoinPrel.html#isValid-org.apache.calcite.util.Litmus-org.apache.calcite.rel.RelNode.Context-">isValid</a></span>(org.apache.calcite.util.Litmus&nbsp;litmus,
org.apache.calcite.rel.RelNode.Context&nbsp;context)</code>
<div class="block">A Drill physical rel which is semi join will have output row type with fields from only
left side of the join.</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html?is-external=true" title="class or interface in java.util">Iterator</a>&lt;<a href="../../../../../../org/apache/drill/exec/planner/physical/Prel.html" title="interface in org.apache.drill.exec.planner.physical">Prel</a>&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/drill/exec/planner/physical/JoinPrel.html#iterator--">iterator</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/drill/exec/planner/physical/JoinPrel.html#needsFinalColumnReordering--">needsFinalColumnReordering</a></span>()</code>&nbsp;</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.org.apache.drill.exec.planner.common.DrillJoinRelBase">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;org.apache.drill.exec.planner.common.<a href="../../../../../../org/apache/drill/exec/planner/common/DrillJoinRelBase.html" title="class in org.apache.drill.exec.planner.common">DrillJoinRelBase</a></h3>
<code><a href="../../../../../../org/apache/drill/exec/planner/common/DrillJoinRelBase.html#computeCartesianJoinCost-org.apache.calcite.plan.RelOptPlanner-org.apache.calcite.rel.metadata.RelMetadataQuery-">computeCartesianJoinCost</a>, <a href="../../../../../../org/apache/drill/exec/planner/common/DrillJoinRelBase.html#computeHashJoinCost-org.apache.calcite.plan.RelOptPlanner-org.apache.calcite.rel.metadata.RelMetadataQuery-">computeHashJoinCost</a>, <a href="../../../../../../org/apache/drill/exec/planner/common/DrillJoinRelBase.html#computeHashJoinCostWithRowCntKeySize-org.apache.calcite.plan.RelOptPlanner-double-double-int-">computeHashJoinCostWithRowCntKeySize</a>, <a href="../../../../../../org/apache/drill/exec/planner/common/DrillJoinRelBase.html#computeLogicalJoinCost-org.apache.calcite.plan.RelOptPlanner-org.apache.calcite.rel.metadata.RelMetadataQuery-">computeLogicalJoinCost</a>, <a href="../../../../../../org/apache/drill/exec/planner/common/DrillJoinRelBase.html#computeSelfCost-org.apache.calcite.plan.RelOptPlanner-org.apache.calcite.rel.metadata.RelMetadataQuery-">computeSelfCost</a>, <a href="../../../../../../org/apache/drill/exec/planner/common/DrillJoinRelBase.html#estimateRowCount-org.apache.calcite.rel.metadata.RelMetadataQuery-">estimateRowCount</a>, <a href="../../../../../../org/apache/drill/exec/planner/common/DrillJoinRelBase.html#getLeftKeys--">getLeftKeys</a>, <a href="../../../../../../org/apache/drill/exec/planner/common/DrillJoinRelBase.html#getRightKeys--">getRightKeys</a>, <a href="../../../../../../org/apache/drill/exec/planner/common/DrillJoinRelBase.html#isUnique-java.util.List-">isUnique</a>, <a href="../../../../../../org/apache/drill/exec/planner/common/DrillJoinRelBase.html#uniqueFieldNames-org.apache.calcite.rel.type.RelDataType-">uniqueFieldNames</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.org.apache.calcite.rel.core.Join">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;org.apache.calcite.rel.core.Join</h3>
<code>accept, analyzeCondition, copy, copy, createJoinType, deriveJoinRowType, estimateJoinedRows, explainTerms, getChildExps, getCondition, getJoinType, getSystemFieldList, getVariablesSet, isSemiJoinDone</code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.org.apache.calcite.rel.BiRel">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;org.apache.calcite.rel.BiRel</h3>
<code>childrenAccept, getInputs, getLeft, getRight, replaceInput</code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.org.apache.calcite.rel.AbstractRelNode">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;org.apache.calcite.rel.AbstractRelNode</h3>
<code>accept, collectVariablesSet, collectVariablesUsed, computeDigest, computeSelfCost, equals, explain, getCluster, getCollationList, getConvention, getCorrelVariable, getDescription, getDigest, getExpectedInputRowType, getId, getInput, getQuery, getRelTypeName, getRows, getRowType, getTable, getTraitSet, getVariablesStopped, hashCode, isDistinct, isKey, isValid, metadata, onRegister, recomputeDigest, register, sole, toString</code></li>
</ul>
<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#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#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#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>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.org.apache.drill.exec.planner.physical.Prel">
<!-- -->
</a>
<h3>Methods inherited from interface&nbsp;org.apache.drill.exec.planner.physical.<a href="../../../../../../org/apache/drill/exec/planner/physical/Prel.html" title="interface in org.apache.drill.exec.planner.physical">Prel</a></h3>
<code><a href="../../../../../../org/apache/drill/exec/planner/physical/Prel.html#getEncoding--">getEncoding</a>, <a href="../../../../../../org/apache/drill/exec/planner/physical/Prel.html#getPhysicalOperator-org.apache.drill.exec.planner.physical.PhysicalPlanCreator-">getPhysicalOperator</a>, <a href="../../../../../../org/apache/drill/exec/planner/physical/Prel.html#getSupportedEncodings--">getSupportedEncodings</a>, <a href="../../../../../../org/apache/drill/exec/planner/physical/Prel.html#prepareForLateralUnnestPipeline-java.util.List-">prepareForLateralUnnestPipeline</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.org.apache.calcite.rel.RelNode">
<!-- -->
</a>
<h3>Methods inherited from interface&nbsp;org.apache.calcite.rel.RelNode</h3>
<code>accept, accept, childrenAccept, collectVariablesSet, collectVariablesUsed, computeSelfCost, computeSelfCost, copy, estimateRowCount, explain, getChildExps, getCollationList, getConvention, getCorrelVariable, getExpectedInputRowType, getInput, getInputs, getQuery, getRelTypeName, getRows, getRowType, getTable, getVariablesSet, getVariablesStopped, isDistinct, isKey, isValid, metadata, onRegister, recomputeDigest, register, replaceInput</code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.org.apache.calcite.plan.RelOptNode">
<!-- -->
</a>
<h3>Methods inherited from interface&nbsp;org.apache.calcite.plan.RelOptNode</h3>
<code>getCluster, getDescription, getDigest, getId, getTraitSet</code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.java.lang.Iterable">
<!-- -->
</a>
<h3>Methods inherited from interface&nbsp;java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true" title="class or interface in java.lang">Iterable</a></h3>
<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true#forEach-java.util.function.Consumer-" title="class or interface in java.lang">forEach</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true#spliterator--" title="class or interface in java.lang">spliterator</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.org.apache.drill.exec.planner.logical.DrillJoin">
<!-- -->
</a>
<h3>Methods inherited from interface&nbsp;org.apache.drill.exec.planner.logical.<a href="../../../../../../org/apache/drill/exec/planner/logical/DrillJoin.html" title="interface in org.apache.drill.exec.planner.logical">DrillJoin</a></h3>
<code><a href="../../../../../../org/apache/drill/exec/planner/logical/DrillJoin.html#getCondition--">getCondition</a>, <a href="../../../../../../org/apache/drill/exec/planner/logical/DrillJoin.html#getJoinType--">getJoinType</a>, <a href="../../../../../../org/apache/drill/exec/planner/logical/DrillJoin.html#getLeft--">getLeft</a>, <a href="../../../../../../org/apache/drill/exec/planner/logical/DrillJoin.html#getRight--">getRight</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="isSemiJoin">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isSemiJoin</h4>
<pre>protected final&nbsp;boolean isSemiJoin</pre>
</li>
</ul>
<a name="joincategory">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>joincategory</h4>
<pre>protected&nbsp;<a href="../../../../../../org/apache/drill/exec/physical/impl/join/JoinUtils.JoinCategory.html" title="enum in org.apache.drill.exec.physical.impl.join">JoinUtils.JoinCategory</a> joincategory</pre>
</li>
</ul>
</li>
</ul>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a name="JoinPrel-org.apache.calcite.plan.RelOptCluster-org.apache.calcite.plan.RelTraitSet-org.apache.calcite.rel.RelNode-org.apache.calcite.rel.RelNode-org.apache.calcite.rex.RexNode-org.apache.calcite.rel.core.JoinRelType-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>JoinPrel</h4>
<pre>public&nbsp;JoinPrel(org.apache.calcite.plan.RelOptCluster&nbsp;cluster,
org.apache.calcite.plan.RelTraitSet&nbsp;traits,
org.apache.calcite.rel.RelNode&nbsp;left,
org.apache.calcite.rel.RelNode&nbsp;right,
org.apache.calcite.rex.RexNode&nbsp;condition,
org.apache.calcite.rel.core.JoinRelType&nbsp;joinType)</pre>
</li>
</ul>
<a name="JoinPrel-org.apache.calcite.plan.RelOptCluster-org.apache.calcite.plan.RelTraitSet-org.apache.calcite.rel.RelNode-org.apache.calcite.rel.RelNode-org.apache.calcite.rex.RexNode-org.apache.calcite.rel.core.JoinRelType-boolean-">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>JoinPrel</h4>
<pre>public&nbsp;JoinPrel(org.apache.calcite.plan.RelOptCluster&nbsp;cluster,
org.apache.calcite.plan.RelTraitSet&nbsp;traits,
org.apache.calcite.rel.RelNode&nbsp;left,
org.apache.calcite.rel.RelNode&nbsp;right,
org.apache.calcite.rex.RexNode&nbsp;condition,
org.apache.calcite.rel.core.JoinRelType&nbsp;joinType,
boolean&nbsp;isSemiJoin)</pre>
</li>
</ul>
</li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a name="accept-org.apache.drill.exec.planner.physical.visitor.PrelVisitor-java.lang.Object-">
<!-- -->
</a><a name="accept-org.apache.drill.exec.planner.physical.visitor.PrelVisitor-X-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>accept</h4>
<pre>public&nbsp;&lt;T,X,E extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a>&gt;&nbsp;T&nbsp;accept(<a href="../../../../../../org/apache/drill/exec/planner/physical/visitor/PrelVisitor.html" title="interface in org.apache.drill.exec.planner.physical.visitor">PrelVisitor</a>&lt;T,X,E&gt;&nbsp;logicalVisitor,
X&nbsp;value)
throws E extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a></pre>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../../org/apache/drill/exec/planner/physical/Prel.html#accept-org.apache.drill.exec.planner.physical.visitor.PrelVisitor-X-">accept</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../org/apache/drill/exec/planner/physical/Prel.html" title="interface in org.apache.drill.exec.planner.physical">Prel</a></code></dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>E extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a></code></dd>
</dl>
</li>
</ul>
<a name="iterator--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>iterator</h4>
<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html?is-external=true" title="class or interface in java.util">Iterator</a>&lt;<a href="../../../../../../org/apache/drill/exec/planner/physical/Prel.html" title="interface in org.apache.drill.exec.planner.physical">Prel</a>&gt;&nbsp;iterator()</pre>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true#iterator--" title="class or interface in java.lang">iterator</a></code>&nbsp;in interface&nbsp;<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true" title="class or interface in java.lang">Iterable</a>&lt;<a href="../../../../../../org/apache/drill/exec/planner/physical/Prel.html" title="interface in org.apache.drill.exec.planner.physical">Prel</a>&gt;</code></dd>
</dl>
</li>
</ul>
<a name="getJoinInput-int-org.apache.calcite.rel.RelNode-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getJoinInput</h4>
<pre>public&nbsp;org.apache.calcite.rel.RelNode&nbsp;getJoinInput(int&nbsp;offset,
org.apache.calcite.rel.RelNode&nbsp;input)</pre>
<div class="block">Check to make sure that the fields of the inputs are the same as the output field names.
If not, insert a project renaming them.</div>
</li>
</ul>
<a name="needsFinalColumnReordering--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>needsFinalColumnReordering</h4>
<pre>public&nbsp;boolean&nbsp;needsFinalColumnReordering()</pre>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../../org/apache/drill/exec/planner/physical/Prel.html#needsFinalColumnReordering--">needsFinalColumnReordering</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../org/apache/drill/exec/planner/physical/Prel.html" title="interface in org.apache.drill.exec.planner.physical">Prel</a></code></dd>
</dl>
</li>
</ul>
<a name="buildJoinConditions-java.util.List-java.util.List-java.util.List-java.util.List-java.util.List-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>buildJoinConditions</h4>
<pre>protected&nbsp;void&nbsp;buildJoinConditions(<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/drill/common/logical/data/JoinCondition.html" title="class in org.apache.drill.common.logical.data">JoinCondition</a>&gt;&nbsp;conditions,
<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="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;leftFields,
<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="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;rightFields,
<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="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;&nbsp;leftKeys,
<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="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;&nbsp;rightKeys)</pre>
<div class="block">Build the list of join conditions for this join.
A join condition is built only for equality and IS NOT DISTINCT FROM comparisons. The difference is:
null == null is FALSE whereas null IS NOT DISTINCT FROM null is TRUE
For a use case of the IS NOT DISTINCT FROM comparison, see
<code>AggregateRemoveRule</code></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>conditions</code> - populated list of join conditions</dd>
<dd><code>leftFields</code> - join fields from the left input</dd>
<dd><code>rightFields</code> - join fields from the right input</dd>
</dl>
</li>
</ul>
<a name="isSemiJoin--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isSemiJoin</h4>
<pre>public&nbsp;boolean&nbsp;isSemiJoin()</pre>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../../org/apache/drill/exec/planner/logical/DrillJoin.html#isSemiJoin--">isSemiJoin</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../org/apache/drill/exec/planner/logical/DrillJoin.html" title="interface in org.apache.drill.exec.planner.logical">DrillJoin</a></code></dd>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code>isSemiJoin</code>&nbsp;in class&nbsp;<code>org.apache.calcite.rel.core.Join</code></dd>
</dl>
</li>
</ul>
<a name="isValid-org.apache.calcite.util.Litmus-org.apache.calcite.rel.RelNode.Context-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isValid</h4>
<pre>public&nbsp;boolean&nbsp;isValid(org.apache.calcite.util.Litmus&nbsp;litmus,
org.apache.calcite.rel.RelNode.Context&nbsp;context)</pre>
<div class="block">A Drill physical rel which is semi join will have output row type with fields from only
left side of the join. Calcite's join rel expects to have the output row type from
left and right side of the join. This function is overloaded to not throw exceptions for
a Drill semi join physical rel.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code>isValid</code>&nbsp;in interface&nbsp;<code>org.apache.calcite.rel.RelNode</code></dd>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code>isValid</code>&nbsp;in class&nbsp;<code>org.apache.calcite.rel.core.Join</code></dd>
</dl>
</li>
</ul>
<a name="deriveRowType--">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>deriveRowType</h4>
<pre>public&nbsp;org.apache.calcite.rel.type.RelDataType&nbsp;deriveRowType()</pre>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code>deriveRowType</code>&nbsp;in class&nbsp;<code>org.apache.calcite.rel.core.Join</code></dd>
</dl>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/JoinPrel.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/drill/exec/planner/physical/HashToRandomExchangePrel.html" title="class in org.apache.drill.exec.planner.physical"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../../../org/apache/drill/exec/planner/physical/JoinPruleBase.html" title="class in org.apache.drill.exec.planner.physical"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../../index.html?org/apache/drill/exec/planner/physical/JoinPrel.html" target="_top">Frames</a></li>
<li><a href="JoinPrel.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li><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; 1970 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
</body>
</html>