blob: a5763bea3bab6aa327fa349606fb318ca626ade9 [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>MultiJoinProjectTransposeRule (Apache Calcite calcite API)</title>
<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
<script type="text/javascript" src="../../../../../script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="MultiJoinProjectTransposeRule (Apache Calcite calcite API)";
}
}
catch(err) {
}
//-->
var methods = {"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";
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../help-doc.html">Help</a></li>
</ul>
<div class="aboutLanguage"><b>Apache Calcite</b></div>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../org/apache/calcite/rel/rules/MultiJoinOptimizeBushyRule.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/ProjectCalcMergeRule.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/MultiJoinProjectTransposeRule.html" target="_top">Frames</a></li>
<li><a href="MultiJoinProjectTransposeRule.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.calcite.rel.rules</div>
<h2 title="Class MultiJoinProjectTransposeRule" class="title">Class MultiJoinProjectTransposeRule</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><a href="../../../../../org/apache/calcite/plan/RelOptRule.html" title="class in org.apache.calcite.plan">org.apache.calcite.plan.RelOptRule</a></li>
<li>
<ul class="inheritance">
<li><a href="../../../../../org/apache/calcite/rel/rules/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">
<dl>
<dt>All Implemented Interfaces:</dt>
<dd><a href="../../../../../org/apache/calcite/rel/rules/TransformationRule.html" title="interface in org.apache.calcite.rel.rules">TransformationRule</a></dd>
</dl>
<hr>
<br>
<pre>public class <span class="typeNameLabel">MultiJoinProjectTransposeRule</span>
extends <a href="../../../../../org/apache/calcite/rel/rules/JoinProjectTransposeRule.html" title="class in org.apache.calcite.rel.rules">JoinProjectTransposeRule</a></pre>
<div class="block">MultiJoinProjectTransposeRule implements the rule for pulling
<a href="../../../../../org/apache/calcite/rel/logical/LogicalProject.html" title="class in org.apache.calcite.rel.logical"><code>LogicalProject</code></a>s that are on top of a
<a href="../../../../../org/apache/calcite/rel/rules/MultiJoin.html" title="class in org.apache.calcite.rel.rules"><code>MultiJoin</code></a> and beneath a
<a href="../../../../../org/apache/calcite/rel/logical/LogicalJoin.html" title="class in org.apache.calcite.rel.logical"><code>LogicalJoin</code></a> so the
<a href="../../../../../org/apache/calcite/rel/logical/LogicalProject.html" title="class in org.apache.calcite.rel.logical"><code>LogicalProject</code></a> appears above the
<a href="../../../../../org/apache/calcite/rel/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="../../../../../org/apache/calcite/rel/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="../../../../../org/apache/calcite/rel/rules/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="../../../../../org/apache/calcite/rel/rules/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="../../../../../org/apache/calcite/rel/rules/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="../../../../../org/apache/calcite/rel/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 =========== -->
<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>static <a href="../../../../../org/apache/calcite/rel/rules/MultiJoinProjectTransposeRule.html" title="class in org.apache.calcite.rel.rules">MultiJoinProjectTransposeRule</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/calcite/rel/rules/MultiJoinProjectTransposeRule.html#MULTI_BOTH_PROJECT">MULTI_BOTH_PROJECT</a></span></code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static <a href="../../../../../org/apache/calcite/rel/rules/MultiJoinProjectTransposeRule.html" title="class in org.apache.calcite.rel.rules">MultiJoinProjectTransposeRule</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/calcite/rel/rules/MultiJoinProjectTransposeRule.html#MULTI_LEFT_PROJECT">MULTI_LEFT_PROJECT</a></span></code>&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static <a href="../../../../../org/apache/calcite/rel/rules/MultiJoinProjectTransposeRule.html" title="class in org.apache.calcite.rel.rules">MultiJoinProjectTransposeRule</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/calcite/rel/rules/MultiJoinProjectTransposeRule.html#MULTI_RIGHT_PROJECT">MULTI_RIGHT_PROJECT</a></span></code>&nbsp;</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="fields.inherited.from.class.org.apache.calcite.rel.rules.JoinProjectTransposeRule">
<!-- -->
</a>
<h3>Fields inherited from class&nbsp;org.apache.calcite.rel.rules.<a href="../../../../../org/apache/calcite/rel/rules/JoinProjectTransposeRule.html" title="class in org.apache.calcite.rel.rules">JoinProjectTransposeRule</a></h3>
<code><a href="../../../../../org/apache/calcite/rel/rules/JoinProjectTransposeRule.html#BOTH_PROJECT">BOTH_PROJECT</a>, <a href="../../../../../org/apache/calcite/rel/rules/JoinProjectTransposeRule.html#BOTH_PROJECT_INCLUDE_OUTER">BOTH_PROJECT_INCLUDE_OUTER</a>, <a href="../../../../../org/apache/calcite/rel/rules/JoinProjectTransposeRule.html#LEFT_PROJECT">LEFT_PROJECT</a>, <a href="../../../../../org/apache/calcite/rel/rules/JoinProjectTransposeRule.html#LEFT_PROJECT_INCLUDE_OUTER">LEFT_PROJECT_INCLUDE_OUTER</a>, <a href="../../../../../org/apache/calcite/rel/rules/JoinProjectTransposeRule.html#RIGHT_PROJECT">RIGHT_PROJECT</a>, <a href="../../../../../org/apache/calcite/rel/rules/JoinProjectTransposeRule.html#RIGHT_PROJECT_INCLUDE_OUTER">RIGHT_PROJECT_INCLUDE_OUTER</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="fields.inherited.from.class.org.apache.calcite.plan.RelOptRule">
<!-- -->
</a>
<h3>Fields inherited from class&nbsp;org.apache.calcite.plan.<a href="../../../../../org/apache/calcite/plan/RelOptRule.html" title="class in org.apache.calcite.plan">RelOptRule</a></h3>
<code><a href="../../../../../org/apache/calcite/plan/RelOptRule.html#description">description</a>, <a href="../../../../../org/apache/calcite/plan/RelOptRule.html#operands">operands</a>, <a href="../../../../../org/apache/calcite/plan/RelOptRule.html#relBuilderFactory">relBuilderFactory</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/calcite/rel/rules/MultiJoinProjectTransposeRule.html#MultiJoinProjectTransposeRule-org.apache.calcite.plan.RelOptRuleOperand-org.apache.calcite.tools.RelBuilderFactory-java.lang.String-">MultiJoinProjectTransposeRule</a></span>(<a href="../../../../../org/apache/calcite/plan/RelOptRuleOperand.html" title="class in org.apache.calcite.plan">RelOptRuleOperand</a>&nbsp;operand,
<a href="../../../../../org/apache/calcite/tools/RelBuilderFactory.html" title="interface in org.apache.calcite.tools">RelBuilderFactory</a>&nbsp;relBuilderFactory,
<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>&nbsp;description)</code>
<div class="block">Creates a MultiJoinProjectTransposeRule.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../org/apache/calcite/rel/rules/MultiJoinProjectTransposeRule.html#MultiJoinProjectTransposeRule-org.apache.calcite.plan.RelOptRuleOperand-java.lang.String-">MultiJoinProjectTransposeRule</a></span>(<a href="../../../../../org/apache/calcite/plan/RelOptRuleOperand.html" title="class in org.apache.calcite.plan">RelOptRuleOperand</a>&nbsp;operand,
<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>&nbsp;description)</code>
<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;</div>
</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>protected <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/MultiJoinProjectTransposeRule.html#getProjectChild-org.apache.calcite.plan.RelOptRuleCall-org.apache.calcite.rel.core.Project-boolean-">getProjectChild</a></span>(<a href="../../../../../org/apache/calcite/plan/RelOptRuleCall.html" title="class in org.apache.calcite.plan">RelOptRuleCall</a>&nbsp;call,
<a href="../../../../../org/apache/calcite/rel/core/Project.html" title="class in org.apache.calcite.rel.core">Project</a>&nbsp;project,
boolean&nbsp;leftChild)</code>
<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="../../../../../org/apache/calcite/rel/core/Project.html" title="class in org.apache.calcite.rel.core">Project</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/calcite/rel/rules/MultiJoinProjectTransposeRule.html#getRightChild-org.apache.calcite.plan.RelOptRuleCall-">getRightChild</a></span>(<a href="../../../../../org/apache/calcite/plan/RelOptRuleCall.html" title="class in org.apache.calcite.plan">RelOptRuleCall</a>&nbsp;call)</code>&nbsp;</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>protected boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/calcite/rel/rules/MultiJoinProjectTransposeRule.html#hasLeftChild-org.apache.calcite.plan.RelOptRuleCall-">hasLeftChild</a></span>(<a href="../../../../../org/apache/calcite/plan/RelOptRuleCall.html" title="class in org.apache.calcite.plan">RelOptRuleCall</a>&nbsp;call)</code>&nbsp;</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>protected boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/calcite/rel/rules/MultiJoinProjectTransposeRule.html#hasRightChild-org.apache.calcite.plan.RelOptRuleCall-">hasRightChild</a></span>(<a href="../../../../../org/apache/calcite/plan/RelOptRuleCall.html" title="class in org.apache.calcite.plan">RelOptRuleCall</a>&nbsp;call)</code>&nbsp;</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.org.apache.calcite.rel.rules.JoinProjectTransposeRule">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;org.apache.calcite.rel.rules.<a href="../../../../../org/apache/calcite/rel/rules/JoinProjectTransposeRule.html" title="class in org.apache.calcite.rel.rules">JoinProjectTransposeRule</a></h3>
<code><a href="../../../../../org/apache/calcite/rel/rules/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="../../../../../org/apache/calcite/rel/rules/JoinProjectTransposeRule.html#onMatch-org.apache.calcite.plan.RelOptRuleCall-">onMatch</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.org.apache.calcite.plan.RelOptRule">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;org.apache.calcite.plan.<a href="../../../../../org/apache/calcite/plan/RelOptRule.html" title="class in org.apache.calcite.plan">RelOptRule</a></h3>
<code><a href="../../../../../org/apache/calcite/plan/RelOptRule.html#any--">any</a>, <a href="../../../../../org/apache/calcite/plan/RelOptRule.html#convert-org.apache.calcite.rel.RelNode-org.apache.calcite.plan.RelTrait-">convert</a>, <a href="../../../../../org/apache/calcite/plan/RelOptRule.html#convert-org.apache.calcite.rel.RelNode-org.apache.calcite.plan.RelTraitSet-">convert</a>, <a href="../../../../../org/apache/calcite/plan/RelOptRule.html#convertList-java.util.List-org.apache.calcite.plan.RelTrait-">convertList</a>, <a href="../../../../../org/apache/calcite/plan/RelOptRule.html#convertOperand-java.lang.Class-java.util.function.Predicate-org.apache.calcite.plan.RelTrait-">convertOperand</a>, <a href="../../../../../org/apache/calcite/plan/RelOptRule.html#convertOperand-java.lang.Class-com.google.common.base.Predicate-org.apache.calcite.plan.RelTrait-">convertOperand</a>, <a href="../../../../../org/apache/calcite/plan/RelOptRule.html#equals-java.lang.Object-">equals</a>, <a href="../../../../../org/apache/calcite/plan/RelOptRule.html#equals-org.apache.calcite.plan.RelOptRule-">equals</a>, <a href="../../../../../org/apache/calcite/plan/RelOptRule.html#getOperand--">getOperand</a>, <a href="../../../../../org/apache/calcite/plan/RelOptRule.html#getOperands--">getOperands</a>, <a href="../../../../../org/apache/calcite/plan/RelOptRule.html#getOutConvention--">getOutConvention</a>, <a href="../../../../../org/apache/calcite/plan/RelOptRule.html#getOutTrait--">getOutTrait</a>, <a href="../../../../../org/apache/calcite/plan/RelOptRule.html#hashCode--">hashCode</a>, <a href="../../../../../org/apache/calcite/plan/RelOptRule.html#matches-org.apache.calcite.plan.RelOptRuleCall-">matches</a>, <a href="../../../../../org/apache/calcite/plan/RelOptRule.html#none--">none</a>, <a href="../../../../../org/apache/calcite/plan/RelOptRule.html#operand-java.lang.Class-org.apache.calcite.plan.RelOptRuleOperandChildren-">operand</a>, <a href="../../../../../org/apache/calcite/plan/RelOptRule.html#operand-java.lang.Class-org.apache.calcite.plan.RelOptRuleOperand-org.apache.calcite.plan.RelOptRuleOperand...-">operand</a>, <a href="../../../../../org/apache/calcite/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="../../../../../org/apache/calcite/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="../../../../../org/apache/calcite/plan/RelOptRule.html#operand-java.lang.Class-org.apache.calcite.plan.RelTrait-org.apache.calcite.plan.RelOptRuleOperandChildren-">operand</a>, <a href="../../../../../org/apache/calcite/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="../../../../../org/apache/calcite/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="../../../../../org/apache/calcite/plan/RelOptRule.html#some-org.apache.calcite.plan.RelOptRuleOperand-org.apache.calcite.plan.RelOptRuleOperand...-">some</a>, <a href="../../../../../org/apache/calcite/plan/RelOptRule.html#toString--">toString</a>, <a href="../../../../../org/apache/calcite/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 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>
</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="MULTI_BOTH_PROJECT">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>MULTI_BOTH_PROJECT</h4>
<pre>public static final&nbsp;<a href="../../../../../org/apache/calcite/rel/rules/MultiJoinProjectTransposeRule.html" title="class in org.apache.calcite.rel.rules">MultiJoinProjectTransposeRule</a> MULTI_BOTH_PROJECT</pre>
</li>
</ul>
<a name="MULTI_LEFT_PROJECT">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>MULTI_LEFT_PROJECT</h4>
<pre>public static final&nbsp;<a href="../../../../../org/apache/calcite/rel/rules/MultiJoinProjectTransposeRule.html" title="class in org.apache.calcite.rel.rules">MultiJoinProjectTransposeRule</a> MULTI_LEFT_PROJECT</pre>
</li>
</ul>
<a name="MULTI_RIGHT_PROJECT">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>MULTI_RIGHT_PROJECT</h4>
<pre>public static final&nbsp;<a href="../../../../../org/apache/calcite/rel/rules/MultiJoinProjectTransposeRule.html" title="class in org.apache.calcite.rel.rules">MultiJoinProjectTransposeRule</a> MULTI_RIGHT_PROJECT</pre>
</li>
</ul>
</li>
</ul>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a name="MultiJoinProjectTransposeRule-org.apache.calcite.plan.RelOptRuleOperand-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>MultiJoinProjectTransposeRule</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;MultiJoinProjectTransposeRule(<a href="../../../../../org/apache/calcite/plan/RelOptRuleOperand.html" title="class in org.apache.calcite.plan">RelOptRuleOperand</a>&nbsp;operand,
<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>&nbsp;description)</pre>
<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;</div>
</li>
</ul>
<a name="MultiJoinProjectTransposeRule-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(<a href="../../../../../org/apache/calcite/plan/RelOptRuleOperand.html" title="class in org.apache.calcite.plan">RelOptRuleOperand</a>&nbsp;operand,
<a href="../../../../../org/apache/calcite/tools/RelBuilderFactory.html" title="interface in org.apache.calcite.tools">RelBuilderFactory</a>&nbsp;relBuilderFactory,
<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>&nbsp;description)</pre>
<div class="block">Creates a MultiJoinProjectTransposeRule.</div>
</li>
</ul>
</li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a name="hasLeftChild-org.apache.calcite.plan.RelOptRuleCall-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>hasLeftChild</h4>
<pre>protected&nbsp;boolean&nbsp;hasLeftChild(<a href="../../../../../org/apache/calcite/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="../../../../../org/apache/calcite/rel/rules/JoinProjectTransposeRule.html#hasLeftChild-org.apache.calcite.plan.RelOptRuleCall-">hasLeftChild</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/calcite/rel/rules/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 name="hasRightChild-org.apache.calcite.plan.RelOptRuleCall-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>hasRightChild</h4>
<pre>protected&nbsp;boolean&nbsp;hasRightChild(<a href="../../../../../org/apache/calcite/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="../../../../../org/apache/calcite/rel/rules/JoinProjectTransposeRule.html#hasRightChild-org.apache.calcite.plan.RelOptRuleCall-">hasRightChild</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/calcite/rel/rules/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 name="getRightChild-org.apache.calcite.plan.RelOptRuleCall-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getRightChild</h4>
<pre>protected&nbsp;<a href="../../../../../org/apache/calcite/rel/core/Project.html" title="class in org.apache.calcite.rel.core">Project</a>&nbsp;getRightChild(<a href="../../../../../org/apache/calcite/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="../../../../../org/apache/calcite/rel/rules/JoinProjectTransposeRule.html#getRightChild-org.apache.calcite.plan.RelOptRuleCall-">getRightChild</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/calcite/rel/rules/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 name="getProjectChild-org.apache.calcite.plan.RelOptRuleCall-org.apache.calcite.rel.core.Project-boolean-">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>getProjectChild</h4>
<pre>protected&nbsp;<a href="../../../../../org/apache/calcite/rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;getProjectChild(<a href="../../../../../org/apache/calcite/plan/RelOptRuleCall.html" title="class in org.apache.calcite.plan">RelOptRuleCall</a>&nbsp;call,
<a href="../../../../../org/apache/calcite/rel/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="../../../../../org/apache/calcite/rel/rules/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="../../../../../org/apache/calcite/rel/rules/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="../../../../../org/apache/calcite/rel/rules/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>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../help-doc.html">Help</a></li>
</ul>
<div class="aboutLanguage"><b>Apache Calcite</b></div>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../org/apache/calcite/rel/rules/MultiJoinOptimizeBushyRule.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/ProjectCalcMergeRule.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/MultiJoinProjectTransposeRule.html" target="_top">Frames</a></li>
<li><a href="MultiJoinProjectTransposeRule.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 &copy; 2012-2020 Apache Software Foundation. All Rights Reserved.</small></p>
</body>
</html>