blob: 3a575ff96c72cb02b204e13853987774a3eb577f [file] [log] [blame]
<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc -->
<title>MultiJoinProjectTransposeRule (Apache Calcite API)</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../jquery/jquery-ui.css" title="Style">
<script type="text/javascript" src="../../../../../script.js"></script>
<script type="text/javascript" src="../../../../../jquery/jszip/dist/jszip.min.js"></script>
<script type="text/javascript" src="../../../../../jquery/jszip-utils/dist/jszip-utils.min.js"></script>
<!--[if IE]>
<script type="text/javascript" src="../../../../../jquery/jszip-utils/dist/jszip-utils-ie.min.js"></script>
<![endif]-->
<script type="text/javascript" src="../../../../../jquery/jquery-3.3.1.js"></script>
<script type="text/javascript" src="../../../../../jquery/jquery-migrate-3.0.1.js"></script>
<script type="text/javascript" src="../../../../../jquery/jquery-ui.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="MultiJoinProjectTransposeRule (Apache Calcite API)";
}
}
catch(err) {
}
//-->
var data = {"i0":10,"i1":10,"i2":10,"i3":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";
var pathtoroot = "../../../../../";
var useModuleDirectories = true;
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<nav role="navigation">
<div class="fixedNav">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a id="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/MultiJoinProjectTransposeRule.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" id="allclasses_navbar_top">
<li><a href="../../../../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<ul class="navListSearch">
<li><label for="search">SEARCH:</label>
<input type="text" id="search" value="search" disabled="disabled">
<input type="reset" id="reset" value="reset" disabled="disabled">
</li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li><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 id="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
</div>
<div class="navPadding">&nbsp;</div>
<script type="text/javascript"><!--
$('.navPadding').css('padding-top', $('.fixedNav').css("height"));
//-->
</script>
</nav>
</header>
<!-- ======== START OF CLASS DATA ======== -->
<main role="main">
<div class="header">
<div class="subTitle"><span class="packageLabelInType">Package</span>&nbsp;<a href="package-summary.html">org.apache.calcite.rel.rules</a></div>
<h2 title="Class MultiJoinProjectTransposeRule" class="title">Class MultiJoinProjectTransposeRule</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li>java.lang.Object</li>
<li>
<ul class="inheritance">
<li><a href="../../plan/RelOptRule.html" title="class in org.apache.calcite.plan">org.apache.calcite.plan.RelOptRule</a></li>
<li>
<ul class="inheritance">
<li><a href="JoinProjectTransposeRule.html" title="class in org.apache.calcite.rel.rules">org.apache.calcite.rel.rules.JoinProjectTransposeRule</a></li>
<li>
<ul class="inheritance">
<li>org.apache.calcite.rel.rules.MultiJoinProjectTransposeRule</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<hr>
<pre>public class <span class="typeNameLabel">MultiJoinProjectTransposeRule</span>
extends <a href="JoinProjectTransposeRule.html" title="class in org.apache.calcite.rel.rules">JoinProjectTransposeRule</a></pre>
<div class="block">MultiJoinProjectTransposeRule implements the rule for pulling
<a href="../logical/LogicalProject.html" title="class in org.apache.calcite.rel.logical"><code>LogicalProject</code></a>s that are on top of a
<a href="MultiJoin.html" title="class in org.apache.calcite.rel.rules"><code>MultiJoin</code></a> and beneath a
<a href="../logical/LogicalJoin.html" title="class in org.apache.calcite.rel.logical"><code>LogicalJoin</code></a> so the
<a href="../logical/LogicalProject.html" title="class in org.apache.calcite.rel.logical"><code>LogicalProject</code></a> appears above the
<a href="../logical/LogicalJoin.html" title="class in org.apache.calcite.rel.logical"><code>LogicalJoin</code></a>.
<p>In the process of doing
so, also save away information about the respective fields that are
referenced in the expressions in the
<a href="../logical/LogicalProject.html" title="class in org.apache.calcite.rel.logical"><code>LogicalProject</code></a> we're pulling up, as
well as the join condition, in the resultant <a href="MultiJoin.html" title="class in org.apache.calcite.rel.rules"><code>MultiJoin</code></a>s
<p>For example, if we have the following sub-query:
<blockquote><pre>
(select X.x1, Y.y1 from X, Y
where X.x2 = Y.y2 and X.x3 = 1 and Y.y3 = 2)</pre></blockquote>
<p>The <a href="MultiJoin.html" title="class in org.apache.calcite.rel.rules"><code>MultiJoin</code></a> associated with (X, Y) associates x1 with X and
y1 with Y. Although x3 and y3 need to be read due to the filters, they are
not required after the row scan has completed and therefore are not saved.
The join fields, x2 and y2, are also tracked separately.
<p>Note that by only pulling up projects that are on top of
<a href="MultiJoin.html" title="class in org.apache.calcite.rel.rules"><code>MultiJoin</code></a>s, we preserve projections on top of row scans.
<p>See the superclass for details on restrictions regarding which
<a href="../logical/LogicalProject.html" title="class in org.apache.calcite.rel.logical"><code>LogicalProject</code></a>s cannot be pulled.</div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- =========== FIELD SUMMARY =========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="field.summary">
<!-- -->
</a>
<h3>Field Summary</h3>
<table class="memberSummary">
<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Field</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static <a href="MultiJoinProjectTransposeRule.html" title="class in org.apache.calcite.rel.rules">MultiJoinProjectTransposeRule</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#MULTI_BOTH_PROJECT">MULTI_BOTH_PROJECT</a></span></code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static <a href="MultiJoinProjectTransposeRule.html" title="class in org.apache.calcite.rel.rules">MultiJoinProjectTransposeRule</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#MULTI_LEFT_PROJECT">MULTI_LEFT_PROJECT</a></span></code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static <a href="MultiJoinProjectTransposeRule.html" title="class in org.apache.calcite.rel.rules">MultiJoinProjectTransposeRule</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#MULTI_RIGHT_PROJECT">MULTI_RIGHT_PROJECT</a></span></code></th>
<td class="colLast">&nbsp;</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a id="fields.inherited.from.class.org.apache.calcite.rel.rules.JoinProjectTransposeRule">
<!-- -->
</a>
<h3>Fields inherited from class&nbsp;org.apache.calcite.rel.rules.<a href="JoinProjectTransposeRule.html" title="class in org.apache.calcite.rel.rules">JoinProjectTransposeRule</a></h3>
<code><a href="JoinProjectTransposeRule.html#BOTH_PROJECT">BOTH_PROJECT</a>, <a href="JoinProjectTransposeRule.html#BOTH_PROJECT_INCLUDE_OUTER">BOTH_PROJECT_INCLUDE_OUTER</a>, <a href="JoinProjectTransposeRule.html#LEFT_PROJECT">LEFT_PROJECT</a>, <a href="JoinProjectTransposeRule.html#LEFT_PROJECT_INCLUDE_OUTER">LEFT_PROJECT_INCLUDE_OUTER</a>, <a href="JoinProjectTransposeRule.html#RIGHT_PROJECT">RIGHT_PROJECT</a>, <a href="JoinProjectTransposeRule.html#RIGHT_PROJECT_INCLUDE_OUTER">RIGHT_PROJECT_INCLUDE_OUTER</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a id="fields.inherited.from.class.org.apache.calcite.plan.RelOptRule">
<!-- -->
</a>
<h3>Fields inherited from class&nbsp;org.apache.calcite.plan.<a href="../../plan/RelOptRule.html" title="class in org.apache.calcite.plan">RelOptRule</a></h3>
<code><a href="../../plan/RelOptRule.html#description">description</a>, <a href="../../plan/RelOptRule.html#operands">operands</a>, <a href="../../plan/RelOptRule.html#relBuilderFactory">relBuilderFactory</a></code></li>
</ul>
</li>
</ul>
</section>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="constructor.summary">
<!-- -->
</a>
<h3>Constructor Summary</h3>
<table class="memberSummary">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Constructor</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr class="altColor">
<th class="colConstructorName" scope="row"><code><span class="memberNameLink"><a href="#%3Cinit%3E(org.apache.calcite.plan.RelOptRuleOperand,java.lang.String)">MultiJoinProjectTransposeRule</a></span>&#8203;(<a href="../../plan/RelOptRuleOperand.html" title="class in org.apache.calcite.plan">RelOptRuleOperand</a>&nbsp;operand,
java.lang.String&nbsp;description)</code></th>
<td class="colLast">
<div class="block"><span class="deprecatedLabel">Deprecated.</span></div>
</td>
</tr>
<tr class="rowColor">
<th class="colConstructorName" scope="row"><code><span class="memberNameLink"><a href="#%3Cinit%3E(org.apache.calcite.plan.RelOptRuleOperand,org.apache.calcite.tools.RelBuilderFactory,java.lang.String)">MultiJoinProjectTransposeRule</a></span>&#8203;(<a href="../../plan/RelOptRuleOperand.html" title="class in org.apache.calcite.plan">RelOptRuleOperand</a>&nbsp;operand,
<a href="../../tools/RelBuilderFactory.html" title="interface in org.apache.calcite.tools">RelBuilderFactory</a>&nbsp;relBuilderFactory,
java.lang.String&nbsp;description)</code></th>
<td class="colLast">
<div class="block">Creates a MultiJoinProjectTransposeRule.</div>
</td>
</tr>
</table>
</li>
</ul>
</section>
<!-- ========== METHOD SUMMARY =========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Method</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>protected <a href="../RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getProjectChild(org.apache.calcite.plan.RelOptRuleCall,org.apache.calcite.rel.core.Project,boolean)">getProjectChild</a></span>&#8203;(<a href="../../plan/RelOptRuleCall.html" title="class in org.apache.calcite.plan">RelOptRuleCall</a>&nbsp;call,
<a href="../core/Project.html" title="class in org.apache.calcite.rel.core">Project</a>&nbsp;project,
boolean&nbsp;leftChild)</code></th>
<td class="colLast">
<div class="block">Returns the child of the project that will be used as input into the new
LogicalJoin once the projects are pulled above the LogicalJoin.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>protected <a href="../core/Project.html" title="class in org.apache.calcite.rel.core">Project</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getRightChild(org.apache.calcite.plan.RelOptRuleCall)">getRightChild</a></span>&#8203;(<a href="../../plan/RelOptRuleCall.html" title="class in org.apache.calcite.plan">RelOptRuleCall</a>&nbsp;call)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>protected boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#hasLeftChild(org.apache.calcite.plan.RelOptRuleCall)">hasLeftChild</a></span>&#8203;(<a href="../../plan/RelOptRuleCall.html" title="class in org.apache.calcite.plan">RelOptRuleCall</a>&nbsp;call)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>protected boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#hasRightChild(org.apache.calcite.plan.RelOptRuleCall)">hasRightChild</a></span>&#8203;(<a href="../../plan/RelOptRuleCall.html" title="class in org.apache.calcite.plan">RelOptRuleCall</a>&nbsp;call)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.org.apache.calcite.rel.rules.JoinProjectTransposeRule">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;org.apache.calcite.rel.rules.<a href="JoinProjectTransposeRule.html" title="class in org.apache.calcite.rel.rules">JoinProjectTransposeRule</a></h3>
<code><a href="JoinProjectTransposeRule.html#createProjectExprs(org.apache.calcite.rel.core.Project,org.apache.calcite.rel.RelNode,int,org.apache.calcite.rex.RexBuilder,java.util.List,java.util.List)">createProjectExprs</a>, <a href="JoinProjectTransposeRule.html#onMatch(org.apache.calcite.plan.RelOptRuleCall)">onMatch</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.org.apache.calcite.plan.RelOptRule">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;org.apache.calcite.plan.<a href="../../plan/RelOptRule.html" title="class in org.apache.calcite.plan">RelOptRule</a></h3>
<code><a href="../../plan/RelOptRule.html#any()">any</a>, <a href="../../plan/RelOptRule.html#convert(org.apache.calcite.rel.RelNode,org.apache.calcite.plan.RelTrait)">convert</a>, <a href="../../plan/RelOptRule.html#convert(org.apache.calcite.rel.RelNode,org.apache.calcite.plan.RelTraitSet)">convert</a>, <a href="../../plan/RelOptRule.html#convertList(java.util.List,org.apache.calcite.plan.RelTrait)">convertList</a>, <a href="../../plan/RelOptRule.html#convertOperand(java.lang.Class,com.google.common.base.Predicate,org.apache.calcite.plan.RelTrait)">convertOperand</a>, <a href="../../plan/RelOptRule.html#convertOperand(java.lang.Class,java.util.function.Predicate,org.apache.calcite.plan.RelTrait)">convertOperand</a>, <a href="../../plan/RelOptRule.html#equals(java.lang.Object)">equals</a>, <a href="../../plan/RelOptRule.html#equals(org.apache.calcite.plan.RelOptRule)">equals</a>, <a href="../../plan/RelOptRule.html#getOperand()">getOperand</a>, <a href="../../plan/RelOptRule.html#getOperands()">getOperands</a>, <a href="../../plan/RelOptRule.html#getOutConvention()">getOutConvention</a>, <a href="../../plan/RelOptRule.html#getOutTrait()">getOutTrait</a>, <a href="../../plan/RelOptRule.html#hashCode()">hashCode</a>, <a href="../../plan/RelOptRule.html#matches(org.apache.calcite.plan.RelOptRuleCall)">matches</a>, <a href="../../plan/RelOptRule.html#none()">none</a>, <a href="../../plan/RelOptRule.html#operand(java.lang.Class,org.apache.calcite.plan.RelOptRuleOperandChildren)">operand</a>, <a href="../../plan/RelOptRule.html#operand(java.lang.Class,org.apache.calcite.plan.RelOptRuleOperand,org.apache.calcite.plan.RelOptRuleOperand...)">operand</a>, <a href="../../plan/RelOptRule.html#operand(java.lang.Class,org.apache.calcite.plan.RelTrait,com.google.common.base.Predicate,org.apache.calcite.plan.RelOptRuleOperandChildren)">operand</a>, <a href="../../plan/RelOptRule.html#operand(java.lang.Class,org.apache.calcite.plan.RelTrait,com.google.common.base.Predicate,org.apache.calcite.plan.RelOptRuleOperand,org.apache.calcite.plan.RelOptRuleOperand...)">operand</a>, <a href="../../plan/RelOptRule.html#operand(java.lang.Class,org.apache.calcite.plan.RelTrait,org.apache.calcite.plan.RelOptRuleOperandChildren)">operand</a>, <a href="../../plan/RelOptRule.html#operandJ(java.lang.Class,org.apache.calcite.plan.RelTrait,java.util.function.Predicate,org.apache.calcite.plan.RelOptRuleOperandChildren)">operandJ</a>, <a href="../../plan/RelOptRule.html#operandJ(java.lang.Class,org.apache.calcite.plan.RelTrait,java.util.function.Predicate,org.apache.calcite.plan.RelOptRuleOperand,org.apache.calcite.plan.RelOptRuleOperand...)">operandJ</a>, <a href="../../plan/RelOptRule.html#some(org.apache.calcite.plan.RelOptRuleOperand,org.apache.calcite.plan.RelOptRuleOperand...)">some</a>, <a href="../../plan/RelOptRule.html#toString()">toString</a>, <a href="../../plan/RelOptRule.html#unordered(org.apache.calcite.plan.RelOptRuleOperand,org.apache.calcite.plan.RelOptRuleOperand...)">unordered</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.java.lang.Object">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.Object</h3>
<code>clone, finalize, getClass, notify, notifyAll, wait, wait, wait</code></li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ FIELD DETAIL =========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="field.detail">
<!-- -->
</a>
<h3>Field Detail</h3>
<a id="MULTI_BOTH_PROJECT">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>MULTI_BOTH_PROJECT</h4>
<pre>public static final&nbsp;<a href="MultiJoinProjectTransposeRule.html" title="class in org.apache.calcite.rel.rules">MultiJoinProjectTransposeRule</a> MULTI_BOTH_PROJECT</pre>
</li>
</ul>
<a id="MULTI_LEFT_PROJECT">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>MULTI_LEFT_PROJECT</h4>
<pre>public static final&nbsp;<a href="MultiJoinProjectTransposeRule.html" title="class in org.apache.calcite.rel.rules">MultiJoinProjectTransposeRule</a> MULTI_LEFT_PROJECT</pre>
</li>
</ul>
<a id="MULTI_RIGHT_PROJECT">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>MULTI_RIGHT_PROJECT</h4>
<pre>public static final&nbsp;<a href="MultiJoinProjectTransposeRule.html" title="class in org.apache.calcite.rel.rules">MultiJoinProjectTransposeRule</a> MULTI_RIGHT_PROJECT</pre>
</li>
</ul>
</li>
</ul>
</section>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="constructor.detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a id="&lt;init&gt;(org.apache.calcite.plan.RelOptRuleOperand,java.lang.String)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>MultiJoinProjectTransposeRule</h4>
<pre>@Deprecated
public&nbsp;MultiJoinProjectTransposeRule&#8203;(<a href="../../plan/RelOptRuleOperand.html" title="class in org.apache.calcite.plan">RelOptRuleOperand</a>&nbsp;operand,
java.lang.String&nbsp;description)</pre>
<div class="deprecationBlock"><span class="deprecatedLabel">Deprecated.</span></div>
</li>
</ul>
<a id="&lt;init&gt;(org.apache.calcite.plan.RelOptRuleOperand,org.apache.calcite.tools.RelBuilderFactory,java.lang.String)">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>MultiJoinProjectTransposeRule</h4>
<pre>public&nbsp;MultiJoinProjectTransposeRule&#8203;(<a href="../../plan/RelOptRuleOperand.html" title="class in org.apache.calcite.plan">RelOptRuleOperand</a>&nbsp;operand,
<a href="../../tools/RelBuilderFactory.html" title="interface in org.apache.calcite.tools">RelBuilderFactory</a>&nbsp;relBuilderFactory,
java.lang.String&nbsp;description)</pre>
<div class="block">Creates a MultiJoinProjectTransposeRule.</div>
</li>
</ul>
</li>
</ul>
</section>
<!-- ============ METHOD DETAIL ========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a id="hasLeftChild(org.apache.calcite.plan.RelOptRuleCall)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>hasLeftChild</h4>
<pre class="methodSignature">protected&nbsp;boolean&nbsp;hasLeftChild&#8203;(<a href="../../plan/RelOptRuleCall.html" title="class in org.apache.calcite.plan">RelOptRuleCall</a>&nbsp;call)</pre>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="JoinProjectTransposeRule.html#hasLeftChild(org.apache.calcite.plan.RelOptRuleCall)">hasLeftChild</a></code>&nbsp;in class&nbsp;<code><a href="JoinProjectTransposeRule.html" title="class in org.apache.calcite.rel.rules">JoinProjectTransposeRule</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>call</code> - RelOptRuleCall</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>true if the rule was invoked with a left project child</dd>
</dl>
</li>
</ul>
<a id="hasRightChild(org.apache.calcite.plan.RelOptRuleCall)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>hasRightChild</h4>
<pre class="methodSignature">protected&nbsp;boolean&nbsp;hasRightChild&#8203;(<a href="../../plan/RelOptRuleCall.html" title="class in org.apache.calcite.plan">RelOptRuleCall</a>&nbsp;call)</pre>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="JoinProjectTransposeRule.html#hasRightChild(org.apache.calcite.plan.RelOptRuleCall)">hasRightChild</a></code>&nbsp;in class&nbsp;<code><a href="JoinProjectTransposeRule.html" title="class in org.apache.calcite.rel.rules">JoinProjectTransposeRule</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>call</code> - RelOptRuleCall</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>true if the rule was invoked with 2 children</dd>
</dl>
</li>
</ul>
<a id="getRightChild(org.apache.calcite.plan.RelOptRuleCall)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getRightChild</h4>
<pre class="methodSignature">protected&nbsp;<a href="../core/Project.html" title="class in org.apache.calcite.rel.core">Project</a>&nbsp;getRightChild&#8203;(<a href="../../plan/RelOptRuleCall.html" title="class in org.apache.calcite.plan">RelOptRuleCall</a>&nbsp;call)</pre>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="JoinProjectTransposeRule.html#getRightChild(org.apache.calcite.plan.RelOptRuleCall)">getRightChild</a></code>&nbsp;in class&nbsp;<code><a href="JoinProjectTransposeRule.html" title="class in org.apache.calcite.rel.rules">JoinProjectTransposeRule</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>call</code> - RelOptRuleCall</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>LogicalProject corresponding to the right child</dd>
</dl>
</li>
</ul>
<a id="getProjectChild(org.apache.calcite.plan.RelOptRuleCall,org.apache.calcite.rel.core.Project,boolean)">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>getProjectChild</h4>
<pre class="methodSignature">protected&nbsp;<a href="../RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;getProjectChild&#8203;(<a href="../../plan/RelOptRuleCall.html" title="class in org.apache.calcite.plan">RelOptRuleCall</a>&nbsp;call,
<a href="../core/Project.html" title="class in org.apache.calcite.rel.core">Project</a>&nbsp;project,
boolean&nbsp;leftChild)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="JoinProjectTransposeRule.html#getProjectChild(org.apache.calcite.plan.RelOptRuleCall,org.apache.calcite.rel.core.Project,boolean)">JoinProjectTransposeRule</a></code></span></div>
<div class="block">Returns the child of the project that will be used as input into the new
LogicalJoin once the projects are pulled above the LogicalJoin.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="JoinProjectTransposeRule.html#getProjectChild(org.apache.calcite.plan.RelOptRuleCall,org.apache.calcite.rel.core.Project,boolean)">getProjectChild</a></code>&nbsp;in class&nbsp;<code><a href="JoinProjectTransposeRule.html" title="class in org.apache.calcite.rel.rules">JoinProjectTransposeRule</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>call</code> - RelOptRuleCall</dd>
<dd><code>project</code> - project RelNode</dd>
<dd><code>leftChild</code> - true if the project corresponds to the left projection</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>child of the project that will be used as input into the new
LogicalJoin once the projects are pulled above the LogicalJoin</dd>
</dl>
</li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
</div>
</main>
<!-- ========= END OF CLASS DATA ========= -->
<footer role="contentinfo">
<nav role="navigation">
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a id="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/MultiJoinProjectTransposeRule.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" id="allclasses_navbar_bottom">
<li><a href="../../../../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li><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 id="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</nav>
<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>
</footer>
</body>
</html>