blob: 65163fceb02150618a5f124aa903080740daa255 [file] [log] [blame]
<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc -->
<title>RelDecorrelator (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="RelDecorrelator (Apache Calcite API)";
}
}
catch(err) {
}
//-->
var data = {"i0":10,"i1":9,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":41,"i11":9,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10,"i20":10,"i21":10,"i22":10,"i23":10,"i24":10,"i25":10,"i26":10,"i27":10,"i28":10,"i29":10,"i30":9,"i31":10,"i32":10,"i33":9,"i34":10,"i35":10,"i36":9,"i37":10,"i38":10,"i39":10,"i40":10,"i41":10,"i42":10,"i43":10,"i44":10,"i45":10,"i46":10,"i47":9,"i48":9};
var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"],32:["t6","Deprecated Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
var pathtoroot = "../../../../";
var useModuleDirectories = true;
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<nav role="navigation">
<div class="fixedNav">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a id="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/RelDecorrelator.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><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a 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.sql2rel</a></div>
<h2 title="Class RelDecorrelator" class="title">Class RelDecorrelator</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li>java.lang.Object</li>
<li>
<ul class="inheritance">
<li>org.apache.calcite.sql2rel.RelDecorrelator</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Implemented Interfaces:</dt>
<dd><code><a href="../util/ReflectiveVisitor.html" title="interface in org.apache.calcite.util">ReflectiveVisitor</a></code></dd>
</dl>
<hr>
<pre>public class <span class="typeNameLabel">RelDecorrelator</span>
extends java.lang.Object
implements <a href="../util/ReflectiveVisitor.html" title="interface in org.apache.calcite.util">ReflectiveVisitor</a></pre>
<div class="block">RelDecorrelator replaces all correlated expressions (corExp) in a relational
expression (RelNode) tree with non-correlated expressions that are produced
from joining the RelNode that produces the corExp with the RelNode that
references it.
<p>TODO:</p>
<ul>
<li>replace <code>CorelMap</code> constructor parameter with a RelNode
<li>make <a href="#currentRel"><code>currentRel</code></a> immutable (would require a fresh
RelDecorrelator for each node being decorrelated)</li>
<li>make fields of <code>CorelMap</code> immutable</li>
<li>make sub-class rules static, and have them create their own
de-correlator</li>
</ul></div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ======== NESTED CLASS SUMMARY ======== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="nested.class.summary">
<!-- -->
</a>
<h3>Nested Class Summary</h3>
<table class="memberSummary">
<caption><span>Nested Classes</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Class</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>private class&nbsp;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="RelDecorrelator.AdjustProjectForCountAggregateRule.html" title="class in org.apache.calcite.sql2rel">RelDecorrelator.AdjustProjectForCountAggregateRule</a></span></code></th>
<td class="colLast">
<div class="block">Planner rule that adjusts projects when counts are added.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>(package private) static class&nbsp;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="RelDecorrelator.CorDef.html" title="class in org.apache.calcite.sql2rel">RelDecorrelator.CorDef</a></span></code></th>
<td class="colLast">
<div class="block">A correlation and a field.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected static class&nbsp;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="RelDecorrelator.CorelMap.html" title="class in org.apache.calcite.sql2rel">RelDecorrelator.CorelMap</a></span></code></th>
<td class="colLast">
<div class="block">A map of the locations of
<a href="../rel/core/Correlate.html" title="class in org.apache.calcite.rel.core"><code>Correlate</code></a>
in a tree of <a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel"><code>RelNode</code></a>s.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static class&nbsp;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="RelDecorrelator.CorelMapBuilder.html" title="class in org.apache.calcite.sql2rel">RelDecorrelator.CorelMapBuilder</a></span></code></th>
<td class="colLast">
<div class="block">Builds a <a href="RelDecorrelator.CorelMap.html" title="class in org.apache.calcite.sql2rel"><code>RelDecorrelator.CorelMap</code></a>.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>(package private) static class&nbsp;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="RelDecorrelator.CorRef.html" title="class in org.apache.calcite.sql2rel">RelDecorrelator.CorRef</a></span></code></th>
<td class="colLast">
<div class="block">A unique reference to a correlation field.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>private static class&nbsp;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="RelDecorrelator.DecorrelateRexShuttle.html" title="class in org.apache.calcite.sql2rel">RelDecorrelator.DecorrelateRexShuttle</a></span></code></th>
<td class="colLast">
<div class="block">Shuttle that decorrelates.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>(package private) static class&nbsp;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="RelDecorrelator.Frame.html" title="class in org.apache.calcite.sql2rel">RelDecorrelator.Frame</a></span></code></th>
<td class="colLast">
<div class="block">Frame describing the relational expression after decorrelation
and where to find the output fields and correlation variables
among its output fields.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>private class&nbsp;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="RelDecorrelator.RemoveCorrelationForScalarAggregateRule.html" title="class in org.apache.calcite.sql2rel">RelDecorrelator.RemoveCorrelationForScalarAggregateRule</a></span></code></th>
<td class="colLast">
<div class="block">Planner rule that removes correlations for scalar aggregates.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>private class&nbsp;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="RelDecorrelator.RemoveCorrelationForScalarProjectRule.html" title="class in org.apache.calcite.sql2rel">RelDecorrelator.RemoveCorrelationForScalarProjectRule</a></span></code></th>
<td class="colLast">
<div class="block">Planner rule that removes correlations for scalar projects.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>private class&nbsp;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="RelDecorrelator.RemoveCorrelationRexShuttle.html" title="class in org.apache.calcite.sql2rel">RelDecorrelator.RemoveCorrelationRexShuttle</a></span></code></th>
<td class="colLast">
<div class="block">Shuttle that removes correlations.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>private class&nbsp;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="RelDecorrelator.RemoveSingleAggregateRule.html" title="class in org.apache.calcite.sql2rel">RelDecorrelator.RemoveSingleAggregateRule</a></span></code></th>
<td class="colLast">
<div class="block">Rule to remove single_value rel.</div>
</td>
</tr>
</table>
</li>
</ul>
</section>
<!-- =========== 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>protected <a href="RelDecorrelator.CorelMap.html" title="class in org.apache.calcite.sql2rel">RelDecorrelator.CorelMap</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#cm">cm</a></span></code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>private <a href="../plan/Context.html" title="interface in org.apache.calcite.plan">Context</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#context">context</a></span></code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>private <a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#currentRel">currentRel</a></span></code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>private <a href="../util/ReflectUtil.MethodDispatcher.html" title="interface in org.apache.calcite.util">ReflectUtil.MethodDispatcher</a>&lt;<a href="RelDecorrelator.Frame.html" title="class in org.apache.calcite.sql2rel">RelDecorrelator.Frame</a>&gt;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#dispatcher">dispatcher</a></span></code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>private java.util.HashSet&lt;<a href="../rel/core/Correlate.html" title="class in org.apache.calcite.rel.core">Correlate</a>&gt;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#generatedCorRels">generatedCorRels</a></span></code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>private java.util.Map&lt;<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>,&#8203;<a href="RelDecorrelator.Frame.html" title="class in org.apache.calcite.sql2rel">RelDecorrelator.Frame</a>&gt;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#map">map</a></span></code></th>
<td class="colLast">
<div class="block">Built during decorrelation, of rel to all the newly created correlated
variables in its output, and to map old input positions to new input
positions.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>private <a href="../tools/RelBuilder.html" title="class in org.apache.calcite.tools">RelBuilder</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#relBuilder">relBuilder</a></span></code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>private static org.slf4j.Logger</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#SQL2REL_LOGGER">SQL2REL_LOGGER</a></span></code></th>
<td class="colLast">&nbsp;</td>
</tr>
</table>
</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">Modifier</th>
<th class="colSecond" scope="col">Constructor</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected </code></td>
<th class="colConstructorName" scope="row"><code><span class="memberNameLink"><a href="#%3Cinit%3E(org.apache.calcite.sql2rel.RelDecorrelator.CorelMap,org.apache.calcite.plan.Context,org.apache.calcite.tools.RelBuilder)">RelDecorrelator</a></span>&#8203;(<a href="RelDecorrelator.CorelMap.html" title="class in org.apache.calcite.sql2rel">RelDecorrelator.CorelMap</a>&nbsp;cm,
<a href="../plan/Context.html" title="interface in org.apache.calcite.plan">Context</a>&nbsp;context,
<a href="../tools/RelBuilder.html" title="class in org.apache.calcite.tools">RelBuilder</a>&nbsp;relBuilder)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
</table>
</li>
</ul>
</section>
<!-- ========== METHOD SUMMARY =========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t1" class="tableTab"><span><a href="javascript:show(1);">Static Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t6" class="tableTab"><span><a href="javascript:show(32);">Deprecated Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Method</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>private <a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#aggregateCorrelatorOutput(org.apache.calcite.rel.core.Correlate,org.apache.calcite.rel.core.Project,java.util.Set)">aggregateCorrelatorOutput</a></span>&#8203;(<a href="../rel/core/Correlate.html" title="class in org.apache.calcite.rel.core">Correlate</a>&nbsp;correlate,
<a href="../rel/core/Project.html" title="class in org.apache.calcite.rel.core">Project</a>&nbsp;project,
java.util.Set&lt;java.lang.Integer&gt;&nbsp;isCount)</code></th>
<td class="colLast">
<div class="block">Pulls a <a href="../rel/core/Project.html" title="class in org.apache.calcite.rel.core"><code>Project</code></a> above a <a href="../rel/core/Correlate.html" title="class in org.apache.calcite.rel.core"><code>Correlate</code></a> from its RHS input.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>(package private) static boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#allLessThan(java.util.Collection,int,org.apache.calcite.util.Litmus)">allLessThan</a></span>&#8203;(java.util.Collection&lt;java.lang.Integer&gt;&nbsp;integers,
int&nbsp;limit,
<a href="../util/Litmus.html" title="interface in org.apache.calcite.util">Litmus</a>&nbsp;ret)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>private boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#checkCorVars(org.apache.calcite.rel.core.Correlate,org.apache.calcite.rel.core.Project,org.apache.calcite.rel.core.Filter,java.util.List)">checkCorVars</a></span>&#8203;(<a href="../rel/core/Correlate.html" title="class in org.apache.calcite.rel.core">Correlate</a>&nbsp;correlate,
<a href="../rel/core/Project.html" title="class in org.apache.calcite.rel.core">Project</a>&nbsp;project,
<a href="../rel/core/Filter.html" title="class in org.apache.calcite.rel.core">Filter</a>&nbsp;filter,
java.util.List&lt;<a href="../rex/RexFieldAccess.html" title="class in org.apache.calcite.rex">RexFieldAccess</a>&gt;&nbsp;correlatedJoinKeys)</code></th>
<td class="colLast">
<div class="block">Checks whether the correlations in projRel and filter are related to
the correlated variables provided by corRel.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>private <a href="../linq4j/function/Function2.html" title="interface in org.apache.calcite.linq4j.function">Function2</a>&lt;<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>,&#8203;<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>,&#8203;java.lang.Void&gt;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#createCopyHook()">createCopyHook</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>private <a href="../plan/hep/HepPlanner.html" title="class in org.apache.calcite.plan.hep">HepPlanner</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#createPlanner(org.apache.calcite.plan.hep.HepProgram)">createPlanner</a></span>&#8203;(<a href="../plan/hep/HepProgram.html" title="class in org.apache.calcite.plan.hep">HepProgram</a>&nbsp;program)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code>private <a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#createProjectWithAdditionalExprs(org.apache.calcite.rel.RelNode,java.util.List)">createProjectWithAdditionalExprs</a></span>&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;input,
java.util.List&lt;<a href="../util/Pair.html" title="class in org.apache.calcite.util">Pair</a>&lt;<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>,&#8203;java.lang.String&gt;&gt;&nbsp;additionalExprs)</code></th>
<td class="colLast">
<div class="block">Projects all <code>input</code> output fields plus the additional expressions.</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code>private <a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#createValueGenerator(java.lang.Iterable,int,java.util.SortedMap)">createValueGenerator</a></span>&#8203;(java.lang.Iterable&lt;<a href="RelDecorrelator.CorRef.html" title="class in org.apache.calcite.sql2rel">RelDecorrelator.CorRef</a>&gt;&nbsp;correlations,
int&nbsp;valueGenFieldOffset,
java.util.SortedMap&lt;<a href="RelDecorrelator.CorDef.html" title="class in org.apache.calcite.sql2rel">RelDecorrelator.CorDef</a>,&#8203;java.lang.Integer&gt;&nbsp;corDefOutputs)</code></th>
<td class="colLast">
<div class="block">Create RelNode tree that produces a list of correlated variables.</div>
</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code>protected <a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#decorrelate(org.apache.calcite.rel.RelNode)">decorrelate</a></span>&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;root)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code>protected <a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#decorrelateExpr(org.apache.calcite.rel.RelNode,java.util.Map,org.apache.calcite.sql2rel.RelDecorrelator.CorelMap,org.apache.calcite.rex.RexNode)">decorrelateExpr</a></span>&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;currentRel,
java.util.Map&lt;<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>,&#8203;<a href="RelDecorrelator.Frame.html" title="class in org.apache.calcite.sql2rel">RelDecorrelator.Frame</a>&gt;&nbsp;map,
<a href="RelDecorrelator.CorelMap.html" title="class in org.apache.calcite.sql2rel">RelDecorrelator.CorelMap</a>&nbsp;cm,
<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;exp)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code>private <a href="RelDecorrelator.Frame.html" title="class in org.apache.calcite.sql2rel">RelDecorrelator.Frame</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#decorrelateInputWithValueGenerator(org.apache.calcite.rel.RelNode,org.apache.calcite.sql2rel.RelDecorrelator.Frame)">decorrelateInputWithValueGenerator</a></span>&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;rel,
<a href="RelDecorrelator.Frame.html" title="class in org.apache.calcite.sql2rel">RelDecorrelator.Frame</a>&nbsp;frame)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i10" class="altColor">
<td class="colFirst"><code>static <a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#decorrelateQuery(org.apache.calcite.rel.RelNode)">decorrelateQuery</a></span>&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;rootRel)</code></th>
<td class="colLast">
<div class="block"><span class="deprecatedLabel">Deprecated.</span></div>
</td>
</tr>
<tr id="i11" class="rowColor">
<td class="colFirst"><code>static <a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#decorrelateQuery(org.apache.calcite.rel.RelNode,org.apache.calcite.tools.RelBuilder)">decorrelateQuery</a></span>&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;rootRel,
<a href="../tools/RelBuilder.html" title="class in org.apache.calcite.tools">RelBuilder</a>&nbsp;relBuilder)</code></th>
<td class="colLast">
<div class="block">Decorrelates a query.</div>
</td>
</tr>
<tr id="i12" class="altColor">
<td class="colFirst"><code><a href="RelDecorrelator.Frame.html" title="class in org.apache.calcite.sql2rel">RelDecorrelator.Frame</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#decorrelateRel(org.apache.calcite.rel.core.Aggregate)">decorrelateRel</a></span>&#8203;(<a href="../rel/core/Aggregate.html" title="class in org.apache.calcite.rel.core">Aggregate</a>&nbsp;rel)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i13" class="rowColor">
<td class="colFirst"><code><a href="RelDecorrelator.Frame.html" title="class in org.apache.calcite.sql2rel">RelDecorrelator.Frame</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#decorrelateRel(org.apache.calcite.rel.core.Correlate)">decorrelateRel</a></span>&#8203;(<a href="../rel/core/Correlate.html" title="class in org.apache.calcite.rel.core">Correlate</a>&nbsp;rel)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i14" class="altColor">
<td class="colFirst"><code><a href="RelDecorrelator.Frame.html" title="class in org.apache.calcite.sql2rel">RelDecorrelator.Frame</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#decorrelateRel(org.apache.calcite.rel.core.Filter)">decorrelateRel</a></span>&#8203;(<a href="../rel/core/Filter.html" title="class in org.apache.calcite.rel.core">Filter</a>&nbsp;rel)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i15" class="rowColor">
<td class="colFirst"><code><a href="RelDecorrelator.Frame.html" title="class in org.apache.calcite.sql2rel">RelDecorrelator.Frame</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#decorrelateRel(org.apache.calcite.rel.core.Join)">decorrelateRel</a></span>&#8203;(<a href="../rel/core/Join.html" title="class in org.apache.calcite.rel.core">Join</a>&nbsp;rel)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i16" class="altColor">
<td class="colFirst"><code><a href="RelDecorrelator.Frame.html" title="class in org.apache.calcite.sql2rel">RelDecorrelator.Frame</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#decorrelateRel(org.apache.calcite.rel.core.Project)">decorrelateRel</a></span>&#8203;(<a href="../rel/core/Project.html" title="class in org.apache.calcite.rel.core">Project</a>&nbsp;rel)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i17" class="rowColor">
<td class="colFirst"><code><a href="RelDecorrelator.Frame.html" title="class in org.apache.calcite.sql2rel">RelDecorrelator.Frame</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#decorrelateRel(org.apache.calcite.rel.core.Sort)">decorrelateRel</a></span>&#8203;(<a href="../rel/core/Sort.html" title="class in org.apache.calcite.rel.core">Sort</a>&nbsp;rel)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i18" class="altColor">
<td class="colFirst"><code><a href="RelDecorrelator.Frame.html" title="class in org.apache.calcite.sql2rel">RelDecorrelator.Frame</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#decorrelateRel(org.apache.calcite.rel.core.Values)">decorrelateRel</a></span>&#8203;(<a href="../rel/core/Values.html" title="class in org.apache.calcite.rel.core">Values</a>&nbsp;rel)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i19" class="rowColor">
<td class="colFirst"><code><a href="RelDecorrelator.Frame.html" title="class in org.apache.calcite.sql2rel">RelDecorrelator.Frame</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#decorrelateRel(org.apache.calcite.rel.logical.LogicalAggregate)">decorrelateRel</a></span>&#8203;(<a href="../rel/logical/LogicalAggregate.html" title="class in org.apache.calcite.rel.logical">LogicalAggregate</a>&nbsp;rel)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i20" class="altColor">
<td class="colFirst"><code><a href="RelDecorrelator.Frame.html" title="class in org.apache.calcite.sql2rel">RelDecorrelator.Frame</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#decorrelateRel(org.apache.calcite.rel.logical.LogicalCorrelate)">decorrelateRel</a></span>&#8203;(<a href="../rel/logical/LogicalCorrelate.html" title="class in org.apache.calcite.rel.logical">LogicalCorrelate</a>&nbsp;rel)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i21" class="rowColor">
<td class="colFirst"><code><a href="RelDecorrelator.Frame.html" title="class in org.apache.calcite.sql2rel">RelDecorrelator.Frame</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#decorrelateRel(org.apache.calcite.rel.logical.LogicalFilter)">decorrelateRel</a></span>&#8203;(<a href="../rel/logical/LogicalFilter.html" title="class in org.apache.calcite.rel.logical">LogicalFilter</a>&nbsp;rel)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i22" class="altColor">
<td class="colFirst"><code><a href="RelDecorrelator.Frame.html" title="class in org.apache.calcite.sql2rel">RelDecorrelator.Frame</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#decorrelateRel(org.apache.calcite.rel.logical.LogicalJoin)">decorrelateRel</a></span>&#8203;(<a href="../rel/logical/LogicalJoin.html" title="class in org.apache.calcite.rel.logical">LogicalJoin</a>&nbsp;rel)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i23" class="rowColor">
<td class="colFirst"><code><a href="RelDecorrelator.Frame.html" title="class in org.apache.calcite.sql2rel">RelDecorrelator.Frame</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#decorrelateRel(org.apache.calcite.rel.logical.LogicalProject)">decorrelateRel</a></span>&#8203;(<a href="../rel/logical/LogicalProject.html" title="class in org.apache.calcite.rel.logical">LogicalProject</a>&nbsp;rel)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i24" class="altColor">
<td class="colFirst"><code><a href="RelDecorrelator.Frame.html" title="class in org.apache.calcite.sql2rel">RelDecorrelator.Frame</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#decorrelateRel(org.apache.calcite.rel.logical.LogicalSnapshot)">decorrelateRel</a></span>&#8203;(<a href="../rel/logical/LogicalSnapshot.html" title="class in org.apache.calcite.rel.logical">LogicalSnapshot</a>&nbsp;rel)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i25" class="rowColor">
<td class="colFirst"><code><a href="RelDecorrelator.Frame.html" title="class in org.apache.calcite.sql2rel">RelDecorrelator.Frame</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#decorrelateRel(org.apache.calcite.rel.RelNode)">decorrelateRel</a></span>&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;rel)</code></th>
<td class="colLast">
<div class="block">Fallback if none of the other <code>decorrelateRel</code> methods match.</div>
</td>
</tr>
<tr id="i26" class="altColor">
<td class="colFirst"><code>private void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#findCorrelationEquivalent(org.apache.calcite.sql2rel.RelDecorrelator.CorRef,org.apache.calcite.rex.RexNode)">findCorrelationEquivalent</a></span>&#8203;(<a href="RelDecorrelator.CorRef.html" title="class in org.apache.calcite.sql2rel">RelDecorrelator.CorRef</a>&nbsp;correlation,
<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;e)</code></th>
<td class="colLast">
<div class="block">Finds a <a href="../rex/RexInputRef.html" title="class in org.apache.calcite.rex"><code>RexInputRef</code></a> that is equivalent to a <a href="RelDecorrelator.CorRef.html" title="class in org.apache.calcite.sql2rel"><code>RelDecorrelator.CorRef</code></a>,
and if found, throws a <a href="../util/Util.FoundOne.html" title="class in org.apache.calcite.util"><code>Util.FoundOne</code></a>.</div>
</td>
</tr>
<tr id="i27" class="rowColor">
<td class="colFirst"><code>private <a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getCorRel(org.apache.calcite.sql2rel.RelDecorrelator.CorRef)">getCorRel</a></span>&#8203;(<a href="RelDecorrelator.CorRef.html" title="class in org.apache.calcite.sql2rel">RelDecorrelator.CorRef</a>&nbsp;corVar)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i28" class="altColor">
<td class="colFirst"><code>private <a href="RelDecorrelator.Frame.html" title="class in org.apache.calcite.sql2rel">RelDecorrelator.Frame</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getFrame(org.apache.calcite.rel.RelNode,boolean)">getFrame</a></span>&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;r,
boolean&nbsp;safe)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i29" class="rowColor">
<td class="colFirst"><code><a href="RelDecorrelator.Frame.html" title="class in org.apache.calcite.sql2rel">RelDecorrelator.Frame</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getInvoke(org.apache.calcite.rel.RelNode,org.apache.calcite.rel.RelNode)">getInvoke</a></span>&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;r,
<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;parent)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i30" class="altColor">
<td class="colFirst"><code>private static <a href="../rex/RexInputRef.html" title="class in org.apache.calcite.rex">RexInputRef</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getNewForOldInputRef(org.apache.calcite.rel.RelNode,java.util.Map,org.apache.calcite.rex.RexInputRef)">getNewForOldInputRef</a></span>&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;currentRel,
java.util.Map&lt;<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>,&#8203;<a href="RelDecorrelator.Frame.html" title="class in org.apache.calcite.sql2rel">RelDecorrelator.Frame</a>&gt;&nbsp;map,
<a href="../rex/RexInputRef.html" title="class in org.apache.calcite.rex">RexInputRef</a>&nbsp;oldInputRef)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i31" class="rowColor">
<td class="colFirst"><code>private boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#has(java.util.Collection,org.apache.calcite.sql2rel.RelDecorrelator.CorRef)">has</a></span>&#8203;(java.util.Collection&lt;<a href="RelDecorrelator.CorDef.html" title="class in org.apache.calcite.sql2rel">RelDecorrelator.CorDef</a>&gt;&nbsp;corDefs,
<a href="RelDecorrelator.CorRef.html" title="class in org.apache.calcite.sql2rel">RelDecorrelator.CorRef</a>&nbsp;corr)</code></th>
<td class="colLast">
<div class="block">Returns whether a <a href="../rel/core/CorrelationId.html" title="class in org.apache.calcite.rel.core"><code>CorrelationId</code></a> is satisfied by at least one of a
collection of <a href="RelDecorrelator.CorDef.html" title="class in org.apache.calcite.sql2rel"><code>RelDecorrelator.CorDef</code></a>s.</div>
</td>
</tr>
<tr id="i32" class="altColor">
<td class="colFirst"><code>private boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#hasAll(java.util.Collection,java.util.Collection)">hasAll</a></span>&#8203;(java.util.Collection&lt;<a href="RelDecorrelator.CorRef.html" title="class in org.apache.calcite.sql2rel">RelDecorrelator.CorRef</a>&gt;&nbsp;corRefs,
java.util.Collection&lt;<a href="RelDecorrelator.CorDef.html" title="class in org.apache.calcite.sql2rel">RelDecorrelator.CorDef</a>&gt;&nbsp;corDefs)</code></th>
<td class="colLast">
<div class="block">Returns whether all of a collection of <a href="RelDecorrelator.CorRef.html" title="class in org.apache.calcite.sql2rel"><code>RelDecorrelator.CorRef</code></a>s are satisfied
by at least one of a collection of <a href="RelDecorrelator.CorDef.html" title="class in org.apache.calcite.sql2rel"><code>RelDecorrelator.CorDef</code></a>s.</div>
</td>
</tr>
<tr id="i33" class="rowColor">
<td class="colFirst"><code>(package private) static java.util.Map&lt;java.lang.Integer,&#8203;java.lang.Integer&gt;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#identityMap(int)">identityMap</a></span>&#8203;(int&nbsp;count)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i34" class="altColor">
<td class="colFirst"><code>private boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isWidening(org.apache.calcite.rel.type.RelDataType,org.apache.calcite.rel.type.RelDataType)">isWidening</a></span>&#8203;(<a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;type,
<a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;type1)</code></th>
<td class="colLast">
<div class="block">Returns whether one type is just a widening of another.</div>
</td>
</tr>
<tr id="i35" class="rowColor">
<td class="colFirst"><code>private <a href="RelDecorrelator.Frame.html" title="class in org.apache.calcite.sql2rel">RelDecorrelator.Frame</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#maybeAddValueGenerator(org.apache.calcite.rel.RelNode,org.apache.calcite.sql2rel.RelDecorrelator.Frame)">maybeAddValueGenerator</a></span>&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;rel,
<a href="RelDecorrelator.Frame.html" title="class in org.apache.calcite.sql2rel">RelDecorrelator.Frame</a>&nbsp;frame)</code></th>
<td class="colLast">
<div class="block">Adds a value generator to satisfy the correlating variables used by
a relational expression, if those variables are not already provided by
its input.</div>
</td>
</tr>
<tr id="i36" class="altColor">
<td class="colFirst"><code>private static <a href="../rex/RexLiteral.html" title="class in org.apache.calcite.rex">RexLiteral</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#projectedLiteral(org.apache.calcite.rel.RelNode,int)">projectedLiteral</a></span>&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;rel,
int&nbsp;i)</code></th>
<td class="colLast">
<div class="block">Returns a literal output field, or null if it is not literal.</div>
</td>
</tr>
<tr id="i37" class="rowColor">
<td class="colFirst"><code>private <a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#projectJoinOutputWithNullability(org.apache.calcite.rel.core.Join,org.apache.calcite.rel.core.Project,int)">projectJoinOutputWithNullability</a></span>&#8203;(<a href="../rel/core/Join.html" title="class in org.apache.calcite.rel.core">Join</a>&nbsp;join,
<a href="../rel/core/Project.html" title="class in org.apache.calcite.rel.core">Project</a>&nbsp;project,
int&nbsp;nullIndicatorPos)</code></th>
<td class="colLast">
<div class="block">Pulls project above the join from its RHS input.</div>
</td>
</tr>
<tr id="i38" class="altColor">
<td class="colFirst"><code>private boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#references(org.apache.calcite.rex.RexNode,org.apache.calcite.sql2rel.RelDecorrelator.CorRef)">references</a></span>&#8203;(<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;e,
<a href="RelDecorrelator.CorRef.html" title="class in org.apache.calcite.sql2rel">RelDecorrelator.CorRef</a>&nbsp;correlation)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i39" class="rowColor">
<td class="colFirst"><code>(package private) <a href="RelDecorrelator.Frame.html" title="class in org.apache.calcite.sql2rel">RelDecorrelator.Frame</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#register(org.apache.calcite.rel.RelNode,org.apache.calcite.rel.RelNode,java.util.Map,java.util.SortedMap)">register</a></span>&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;rel,
<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;newRel,
java.util.Map&lt;java.lang.Integer,&#8203;java.lang.Integer&gt;&nbsp;oldToNewOutputs,
java.util.SortedMap&lt;<a href="RelDecorrelator.CorDef.html" title="class in org.apache.calcite.sql2rel">RelDecorrelator.CorDef</a>,&#8203;java.lang.Integer&gt;&nbsp;corDefOutputs)</code></th>
<td class="colLast">
<div class="block">Registers a relational expression and the relational expression it became
after decorrelation.</div>
</td>
</tr>
<tr id="i40" class="altColor">
<td class="colFirst"><code>protected <a href="../tools/RelBuilderFactory.html" title="interface in org.apache.calcite.tools">RelBuilderFactory</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#relBuilderFactory()">relBuilderFactory</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i41" class="rowColor">
<td class="colFirst"><code>protected <a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#removeCorrelationExpr(org.apache.calcite.rex.RexNode,boolean)">removeCorrelationExpr</a></span>&#8203;(<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;exp,
boolean&nbsp;projectPulledAboveLeftCorrelator)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i42" class="altColor">
<td class="colFirst"><code>protected <a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#removeCorrelationExpr(org.apache.calcite.rex.RexNode,boolean,java.util.Set)">removeCorrelationExpr</a></span>&#8203;(<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;exp,
boolean&nbsp;projectPulledAboveLeftCorrelator,
java.util.Set&lt;java.lang.Integer&gt;&nbsp;isCount)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i43" class="rowColor">
<td class="colFirst"><code>protected <a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#removeCorrelationExpr(org.apache.calcite.rex.RexNode,boolean,org.apache.calcite.rex.RexInputRef)">removeCorrelationExpr</a></span>&#8203;(<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;exp,
boolean&nbsp;projectPulledAboveLeftCorrelator,
<a href="../rex/RexInputRef.html" title="class in org.apache.calcite.rex">RexInputRef</a>&nbsp;nullIndicator)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i44" class="altColor">
<td class="colFirst"><code><a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#removeCorrelationViaRule(org.apache.calcite.rel.RelNode)">removeCorrelationViaRule</a></span>&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;root)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i45" class="rowColor">
<td class="colFirst"><code>private void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#removeCorVarFromTree(org.apache.calcite.rel.core.Correlate)">removeCorVarFromTree</a></span>&#8203;(<a href="../rel/core/Correlate.html" title="class in org.apache.calcite.rel.core">Correlate</a>&nbsp;correlate)</code></th>
<td class="colLast">
<div class="block">Remove correlated variables from the tree at root corRel</div>
</td>
</tr>
<tr id="i46" class="altColor">
<td class="colFirst"><code>private void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setCurrent(org.apache.calcite.rel.RelNode,org.apache.calcite.rel.core.Correlate)">setCurrent</a></span>&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;root,
<a href="../rel/core/Correlate.html" title="class in org.apache.calcite.rel.core">Correlate</a>&nbsp;corRel)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i47" class="rowColor">
<td class="colFirst"><code>private static void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#shiftMapping(java.util.Map,int,int)">shiftMapping</a></span>&#8203;(java.util.Map&lt;java.lang.Integer,&#8203;java.lang.Integer&gt;&nbsp;mapping,
int&nbsp;startIndex,
int&nbsp;offset)</code></th>
<td class="colLast">
<div class="block">Shift the mapping to fixed offset from the <code>startIndex</code>.</div>
</td>
</tr>
<tr id="i48" class="altColor">
<td class="colFirst"><code>private static <a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#stripHep(org.apache.calcite.rel.RelNode)">stripHep</a></span>&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;rel)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.java.lang.Object">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.Object</h3>
<code>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, 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="SQL2REL_LOGGER">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>SQL2REL_LOGGER</h4>
<pre>private static final&nbsp;org.slf4j.Logger SQL2REL_LOGGER</pre>
</li>
</ul>
<a id="relBuilder">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>relBuilder</h4>
<pre>private final&nbsp;<a href="../tools/RelBuilder.html" title="class in org.apache.calcite.tools">RelBuilder</a> relBuilder</pre>
</li>
</ul>
<a id="cm">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>cm</h4>
<pre>protected&nbsp;<a href="RelDecorrelator.CorelMap.html" title="class in org.apache.calcite.sql2rel">RelDecorrelator.CorelMap</a> cm</pre>
</li>
</ul>
<a id="dispatcher">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>dispatcher</h4>
<pre>private final&nbsp;<a href="../util/ReflectUtil.MethodDispatcher.html" title="interface in org.apache.calcite.util">ReflectUtil.MethodDispatcher</a>&lt;<a href="RelDecorrelator.Frame.html" title="class in org.apache.calcite.sql2rel">RelDecorrelator.Frame</a>&gt; dispatcher</pre>
</li>
</ul>
<a id="currentRel">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>currentRel</h4>
<pre>private&nbsp;<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a> currentRel</pre>
</li>
</ul>
<a id="context">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>context</h4>
<pre>private final&nbsp;<a href="../plan/Context.html" title="interface in org.apache.calcite.plan">Context</a> context</pre>
</li>
</ul>
<a id="map">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>map</h4>
<pre>private final&nbsp;java.util.Map&lt;<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>,&#8203;<a href="RelDecorrelator.Frame.html" title="class in org.apache.calcite.sql2rel">RelDecorrelator.Frame</a>&gt; map</pre>
<div class="block">Built during decorrelation, of rel to all the newly created correlated
variables in its output, and to map old input positions to new input
positions. This is from the view point of the parent rel of a new rel.</div>
</li>
</ul>
<a id="generatedCorRels">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>generatedCorRels</h4>
<pre>private final&nbsp;java.util.HashSet&lt;<a href="../rel/core/Correlate.html" title="class in org.apache.calcite.rel.core">Correlate</a>&gt; generatedCorRels</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.sql2rel.RelDecorrelator.CorelMap,org.apache.calcite.plan.Context,org.apache.calcite.tools.RelBuilder)">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>RelDecorrelator</h4>
<pre>protected&nbsp;RelDecorrelator&#8203;(<a href="RelDecorrelator.CorelMap.html" title="class in org.apache.calcite.sql2rel">RelDecorrelator.CorelMap</a>&nbsp;cm,
<a href="../plan/Context.html" title="interface in org.apache.calcite.plan">Context</a>&nbsp;context,
<a href="../tools/RelBuilder.html" title="class in org.apache.calcite.tools">RelBuilder</a>&nbsp;relBuilder)</pre>
</li>
</ul>
</li>
</ul>
</section>
<!-- ============ METHOD DETAIL ========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a id="decorrelateQuery(org.apache.calcite.rel.RelNode)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>decorrelateQuery</h4>
<pre class="methodSignature">@Deprecated
public static&nbsp;<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;decorrelateQuery&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;rootRel)</pre>
<div class="deprecationBlock"><span class="deprecatedLabel">Deprecated.</span></div>
</li>
</ul>
<a id="decorrelateQuery(org.apache.calcite.rel.RelNode,org.apache.calcite.tools.RelBuilder)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>decorrelateQuery</h4>
<pre class="methodSignature">public static&nbsp;<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;decorrelateQuery&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;rootRel,
<a href="../tools/RelBuilder.html" title="class in org.apache.calcite.tools">RelBuilder</a>&nbsp;relBuilder)</pre>
<div class="block">Decorrelates a query.
<p>This is the main entry point to <code>RelDecorrelator</code>.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>rootRel</code> - Root node of the query</dd>
<dd><code>relBuilder</code> - Builder for relational expressions</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Equivalent query with all
<a href="../rel/core/Correlate.html" title="class in org.apache.calcite.rel.core"><code>Correlate</code></a> instances removed</dd>
</dl>
</li>
</ul>
<a id="setCurrent(org.apache.calcite.rel.RelNode,org.apache.calcite.rel.core.Correlate)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setCurrent</h4>
<pre class="methodSignature">private&nbsp;void&nbsp;setCurrent&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;root,
<a href="../rel/core/Correlate.html" title="class in org.apache.calcite.rel.core">Correlate</a>&nbsp;corRel)</pre>
</li>
</ul>
<a id="relBuilderFactory()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>relBuilderFactory</h4>
<pre class="methodSignature">protected&nbsp;<a href="../tools/RelBuilderFactory.html" title="interface in org.apache.calcite.tools">RelBuilderFactory</a>&nbsp;relBuilderFactory()</pre>
</li>
</ul>
<a id="decorrelate(org.apache.calcite.rel.RelNode)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>decorrelate</h4>
<pre class="methodSignature">protected&nbsp;<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;decorrelate&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;root)</pre>
</li>
</ul>
<a id="createCopyHook()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>createCopyHook</h4>
<pre class="methodSignature">private&nbsp;<a href="../linq4j/function/Function2.html" title="interface in org.apache.calcite.linq4j.function">Function2</a>&lt;<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>,&#8203;<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>,&#8203;java.lang.Void&gt;&nbsp;createCopyHook()</pre>
</li>
</ul>
<a id="createPlanner(org.apache.calcite.plan.hep.HepProgram)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>createPlanner</h4>
<pre class="methodSignature">private&nbsp;<a href="../plan/hep/HepPlanner.html" title="class in org.apache.calcite.plan.hep">HepPlanner</a>&nbsp;createPlanner&#8203;(<a href="../plan/hep/HepProgram.html" title="class in org.apache.calcite.plan.hep">HepProgram</a>&nbsp;program)</pre>
</li>
</ul>
<a id="removeCorrelationViaRule(org.apache.calcite.rel.RelNode)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>removeCorrelationViaRule</h4>
<pre class="methodSignature">public&nbsp;<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;removeCorrelationViaRule&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;root)</pre>
</li>
</ul>
<a id="decorrelateExpr(org.apache.calcite.rel.RelNode,java.util.Map,org.apache.calcite.sql2rel.RelDecorrelator.CorelMap,org.apache.calcite.rex.RexNode)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>decorrelateExpr</h4>
<pre class="methodSignature">protected&nbsp;<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;decorrelateExpr&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;currentRel,
java.util.Map&lt;<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>,&#8203;<a href="RelDecorrelator.Frame.html" title="class in org.apache.calcite.sql2rel">RelDecorrelator.Frame</a>&gt;&nbsp;map,
<a href="RelDecorrelator.CorelMap.html" title="class in org.apache.calcite.sql2rel">RelDecorrelator.CorelMap</a>&nbsp;cm,
<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;exp)</pre>
</li>
</ul>
<a id="removeCorrelationExpr(org.apache.calcite.rex.RexNode,boolean)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>removeCorrelationExpr</h4>
<pre class="methodSignature">protected&nbsp;<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;removeCorrelationExpr&#8203;(<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;exp,
boolean&nbsp;projectPulledAboveLeftCorrelator)</pre>
</li>
</ul>
<a id="removeCorrelationExpr(org.apache.calcite.rex.RexNode,boolean,org.apache.calcite.rex.RexInputRef)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>removeCorrelationExpr</h4>
<pre class="methodSignature">protected&nbsp;<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;removeCorrelationExpr&#8203;(<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;exp,
boolean&nbsp;projectPulledAboveLeftCorrelator,
<a href="../rex/RexInputRef.html" title="class in org.apache.calcite.rex">RexInputRef</a>&nbsp;nullIndicator)</pre>
</li>
</ul>
<a id="removeCorrelationExpr(org.apache.calcite.rex.RexNode,boolean,java.util.Set)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>removeCorrelationExpr</h4>
<pre class="methodSignature">protected&nbsp;<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;removeCorrelationExpr&#8203;(<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;exp,
boolean&nbsp;projectPulledAboveLeftCorrelator,
java.util.Set&lt;java.lang.Integer&gt;&nbsp;isCount)</pre>
</li>
</ul>
<a id="decorrelateRel(org.apache.calcite.rel.RelNode)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>decorrelateRel</h4>
<pre class="methodSignature">public&nbsp;<a href="RelDecorrelator.Frame.html" title="class in org.apache.calcite.sql2rel">RelDecorrelator.Frame</a>&nbsp;decorrelateRel&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;rel)</pre>
<div class="block">Fallback if none of the other <code>decorrelateRel</code> methods match.</div>
</li>
</ul>
<a id="decorrelateRel(org.apache.calcite.rel.core.Sort)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>decorrelateRel</h4>
<pre class="methodSignature">public&nbsp;<a href="RelDecorrelator.Frame.html" title="class in org.apache.calcite.sql2rel">RelDecorrelator.Frame</a>&nbsp;decorrelateRel&#8203;(<a href="../rel/core/Sort.html" title="class in org.apache.calcite.rel.core">Sort</a>&nbsp;rel)</pre>
</li>
</ul>
<a id="decorrelateRel(org.apache.calcite.rel.core.Values)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>decorrelateRel</h4>
<pre class="methodSignature">public&nbsp;<a href="RelDecorrelator.Frame.html" title="class in org.apache.calcite.sql2rel">RelDecorrelator.Frame</a>&nbsp;decorrelateRel&#8203;(<a href="../rel/core/Values.html" title="class in org.apache.calcite.rel.core">Values</a>&nbsp;rel)</pre>
</li>
</ul>
<a id="decorrelateRel(org.apache.calcite.rel.logical.LogicalAggregate)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>decorrelateRel</h4>
<pre class="methodSignature">public&nbsp;<a href="RelDecorrelator.Frame.html" title="class in org.apache.calcite.sql2rel">RelDecorrelator.Frame</a>&nbsp;decorrelateRel&#8203;(<a href="../rel/logical/LogicalAggregate.html" title="class in org.apache.calcite.rel.logical">LogicalAggregate</a>&nbsp;rel)</pre>
</li>
</ul>
<a id="decorrelateRel(org.apache.calcite.rel.core.Aggregate)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>decorrelateRel</h4>
<pre class="methodSignature">public&nbsp;<a href="RelDecorrelator.Frame.html" title="class in org.apache.calcite.sql2rel">RelDecorrelator.Frame</a>&nbsp;decorrelateRel&#8203;(<a href="../rel/core/Aggregate.html" title="class in org.apache.calcite.rel.core">Aggregate</a>&nbsp;rel)</pre>
</li>
</ul>
<a id="shiftMapping(java.util.Map,int,int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>shiftMapping</h4>
<pre class="methodSignature">private static&nbsp;void&nbsp;shiftMapping&#8203;(java.util.Map&lt;java.lang.Integer,&#8203;java.lang.Integer&gt;&nbsp;mapping,
int&nbsp;startIndex,
int&nbsp;offset)</pre>
<div class="block">Shift the mapping to fixed offset from the <code>startIndex</code>.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>mapping</code> - the original mapping</dd>
<dd><code>startIndex</code> - any output whose index equals with or bigger than the starting index
would be shift</dd>
<dd><code>offset</code> - shift offset</dd>
</dl>
</li>
</ul>
<a id="getInvoke(org.apache.calcite.rel.RelNode,org.apache.calcite.rel.RelNode)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getInvoke</h4>
<pre class="methodSignature">public&nbsp;<a href="RelDecorrelator.Frame.html" title="class in org.apache.calcite.sql2rel">RelDecorrelator.Frame</a>&nbsp;getInvoke&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;r,
<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;parent)</pre>
</li>
</ul>
<a id="projectedLiteral(org.apache.calcite.rel.RelNode,int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>projectedLiteral</h4>
<pre class="methodSignature">private static&nbsp;<a href="../rex/RexLiteral.html" title="class in org.apache.calcite.rex">RexLiteral</a>&nbsp;projectedLiteral&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;rel,
int&nbsp;i)</pre>
<div class="block">Returns a literal output field, or null if it is not literal.</div>
</li>
</ul>
<a id="decorrelateRel(org.apache.calcite.rel.logical.LogicalProject)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>decorrelateRel</h4>
<pre class="methodSignature">public&nbsp;<a href="RelDecorrelator.Frame.html" title="class in org.apache.calcite.sql2rel">RelDecorrelator.Frame</a>&nbsp;decorrelateRel&#8203;(<a href="../rel/logical/LogicalProject.html" title="class in org.apache.calcite.rel.logical">LogicalProject</a>&nbsp;rel)</pre>
</li>
</ul>
<a id="decorrelateRel(org.apache.calcite.rel.core.Project)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>decorrelateRel</h4>
<pre class="methodSignature">public&nbsp;<a href="RelDecorrelator.Frame.html" title="class in org.apache.calcite.sql2rel">RelDecorrelator.Frame</a>&nbsp;decorrelateRel&#8203;(<a href="../rel/core/Project.html" title="class in org.apache.calcite.rel.core">Project</a>&nbsp;rel)</pre>
</li>
</ul>
<a id="createValueGenerator(java.lang.Iterable,int,java.util.SortedMap)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>createValueGenerator</h4>
<pre class="methodSignature">private&nbsp;<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;createValueGenerator&#8203;(java.lang.Iterable&lt;<a href="RelDecorrelator.CorRef.html" title="class in org.apache.calcite.sql2rel">RelDecorrelator.CorRef</a>&gt;&nbsp;correlations,
int&nbsp;valueGenFieldOffset,
java.util.SortedMap&lt;<a href="RelDecorrelator.CorDef.html" title="class in org.apache.calcite.sql2rel">RelDecorrelator.CorDef</a>,&#8203;java.lang.Integer&gt;&nbsp;corDefOutputs)</pre>
<div class="block">Create RelNode tree that produces a list of correlated variables.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>correlations</code> - correlated variables to generate</dd>
<dd><code>valueGenFieldOffset</code> - offset in the output that generated columns
will start</dd>
<dd><code>corDefOutputs</code> - output positions for the correlated variables
generated</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>RelNode the root of the resultant RelNode tree</dd>
</dl>
</li>
</ul>
<a id="getFrame(org.apache.calcite.rel.RelNode,boolean)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getFrame</h4>
<pre class="methodSignature">private&nbsp;<a href="RelDecorrelator.Frame.html" title="class in org.apache.calcite.sql2rel">RelDecorrelator.Frame</a>&nbsp;getFrame&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;r,
boolean&nbsp;safe)</pre>
</li>
</ul>
<a id="getCorRel(org.apache.calcite.sql2rel.RelDecorrelator.CorRef)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getCorRel</h4>
<pre class="methodSignature">private&nbsp;<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;getCorRel&#8203;(<a href="RelDecorrelator.CorRef.html" title="class in org.apache.calcite.sql2rel">RelDecorrelator.CorRef</a>&nbsp;corVar)</pre>
</li>
</ul>
<a id="maybeAddValueGenerator(org.apache.calcite.rel.RelNode,org.apache.calcite.sql2rel.RelDecorrelator.Frame)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>maybeAddValueGenerator</h4>
<pre class="methodSignature">private&nbsp;<a href="RelDecorrelator.Frame.html" title="class in org.apache.calcite.sql2rel">RelDecorrelator.Frame</a>&nbsp;maybeAddValueGenerator&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;rel,
<a href="RelDecorrelator.Frame.html" title="class in org.apache.calcite.sql2rel">RelDecorrelator.Frame</a>&nbsp;frame)</pre>
<div class="block">Adds a value generator to satisfy the correlating variables used by
a relational expression, if those variables are not already provided by
its input.</div>
</li>
</ul>
<a id="hasAll(java.util.Collection,java.util.Collection)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>hasAll</h4>
<pre class="methodSignature">private&nbsp;boolean&nbsp;hasAll&#8203;(java.util.Collection&lt;<a href="RelDecorrelator.CorRef.html" title="class in org.apache.calcite.sql2rel">RelDecorrelator.CorRef</a>&gt;&nbsp;corRefs,
java.util.Collection&lt;<a href="RelDecorrelator.CorDef.html" title="class in org.apache.calcite.sql2rel">RelDecorrelator.CorDef</a>&gt;&nbsp;corDefs)</pre>
<div class="block">Returns whether all of a collection of <a href="RelDecorrelator.CorRef.html" title="class in org.apache.calcite.sql2rel"><code>RelDecorrelator.CorRef</code></a>s are satisfied
by at least one of a collection of <a href="RelDecorrelator.CorDef.html" title="class in org.apache.calcite.sql2rel"><code>RelDecorrelator.CorDef</code></a>s.</div>
</li>
</ul>
<a id="has(java.util.Collection,org.apache.calcite.sql2rel.RelDecorrelator.CorRef)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>has</h4>
<pre class="methodSignature">private&nbsp;boolean&nbsp;has&#8203;(java.util.Collection&lt;<a href="RelDecorrelator.CorDef.html" title="class in org.apache.calcite.sql2rel">RelDecorrelator.CorDef</a>&gt;&nbsp;corDefs,
<a href="RelDecorrelator.CorRef.html" title="class in org.apache.calcite.sql2rel">RelDecorrelator.CorRef</a>&nbsp;corr)</pre>
<div class="block">Returns whether a <a href="../rel/core/CorrelationId.html" title="class in org.apache.calcite.rel.core"><code>CorrelationId</code></a> is satisfied by at least one of a
collection of <a href="RelDecorrelator.CorDef.html" title="class in org.apache.calcite.sql2rel"><code>RelDecorrelator.CorDef</code></a>s.</div>
</li>
</ul>
<a id="decorrelateInputWithValueGenerator(org.apache.calcite.rel.RelNode,org.apache.calcite.sql2rel.RelDecorrelator.Frame)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>decorrelateInputWithValueGenerator</h4>
<pre class="methodSignature">private&nbsp;<a href="RelDecorrelator.Frame.html" title="class in org.apache.calcite.sql2rel">RelDecorrelator.Frame</a>&nbsp;decorrelateInputWithValueGenerator&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;rel,
<a href="RelDecorrelator.Frame.html" title="class in org.apache.calcite.sql2rel">RelDecorrelator.Frame</a>&nbsp;frame)</pre>
</li>
</ul>
<a id="findCorrelationEquivalent(org.apache.calcite.sql2rel.RelDecorrelator.CorRef,org.apache.calcite.rex.RexNode)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>findCorrelationEquivalent</h4>
<pre class="methodSignature">private&nbsp;void&nbsp;findCorrelationEquivalent&#8203;(<a href="RelDecorrelator.CorRef.html" title="class in org.apache.calcite.sql2rel">RelDecorrelator.CorRef</a>&nbsp;correlation,
<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;e)
throws <a href="../util/Util.FoundOne.html" title="class in org.apache.calcite.util">Util.FoundOne</a></pre>
<div class="block">Finds a <a href="../rex/RexInputRef.html" title="class in org.apache.calcite.rex"><code>RexInputRef</code></a> that is equivalent to a <a href="RelDecorrelator.CorRef.html" title="class in org.apache.calcite.sql2rel"><code>RelDecorrelator.CorRef</code></a>,
and if found, throws a <a href="../util/Util.FoundOne.html" title="class in org.apache.calcite.util"><code>Util.FoundOne</code></a>.</div>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../util/Util.FoundOne.html" title="class in org.apache.calcite.util">Util.FoundOne</a></code></dd>
</dl>
</li>
</ul>
<a id="references(org.apache.calcite.rex.RexNode,org.apache.calcite.sql2rel.RelDecorrelator.CorRef)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>references</h4>
<pre class="methodSignature">private&nbsp;boolean&nbsp;references&#8203;(<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;e,
<a href="RelDecorrelator.CorRef.html" title="class in org.apache.calcite.sql2rel">RelDecorrelator.CorRef</a>&nbsp;correlation)</pre>
</li>
</ul>
<a id="isWidening(org.apache.calcite.rel.type.RelDataType,org.apache.calcite.rel.type.RelDataType)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isWidening</h4>
<pre class="methodSignature">private&nbsp;boolean&nbsp;isWidening&#8203;(<a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;type,
<a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;type1)</pre>
<div class="block">Returns whether one type is just a widening of another.
<p>For example:<ul>
<li><code>VARCHAR(10)</code> is a widening of <code>VARCHAR(5)</code>.
<li><code>VARCHAR(10)</code> is a widening of <code>VARCHAR(10) NOT NULL</code>.
</ul></div>
</li>
</ul>
<a id="decorrelateRel(org.apache.calcite.rel.logical.LogicalSnapshot)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>decorrelateRel</h4>
<pre class="methodSignature">public&nbsp;<a href="RelDecorrelator.Frame.html" title="class in org.apache.calcite.sql2rel">RelDecorrelator.Frame</a>&nbsp;decorrelateRel&#8203;(<a href="../rel/logical/LogicalSnapshot.html" title="class in org.apache.calcite.rel.logical">LogicalSnapshot</a>&nbsp;rel)</pre>
</li>
</ul>
<a id="decorrelateRel(org.apache.calcite.rel.logical.LogicalFilter)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>decorrelateRel</h4>
<pre class="methodSignature">public&nbsp;<a href="RelDecorrelator.Frame.html" title="class in org.apache.calcite.sql2rel">RelDecorrelator.Frame</a>&nbsp;decorrelateRel&#8203;(<a href="../rel/logical/LogicalFilter.html" title="class in org.apache.calcite.rel.logical">LogicalFilter</a>&nbsp;rel)</pre>
</li>
</ul>
<a id="decorrelateRel(org.apache.calcite.rel.core.Filter)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>decorrelateRel</h4>
<pre class="methodSignature">public&nbsp;<a href="RelDecorrelator.Frame.html" title="class in org.apache.calcite.sql2rel">RelDecorrelator.Frame</a>&nbsp;decorrelateRel&#8203;(<a href="../rel/core/Filter.html" title="class in org.apache.calcite.rel.core">Filter</a>&nbsp;rel)</pre>
</li>
</ul>
<a id="decorrelateRel(org.apache.calcite.rel.logical.LogicalCorrelate)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>decorrelateRel</h4>
<pre class="methodSignature">public&nbsp;<a href="RelDecorrelator.Frame.html" title="class in org.apache.calcite.sql2rel">RelDecorrelator.Frame</a>&nbsp;decorrelateRel&#8203;(<a href="../rel/logical/LogicalCorrelate.html" title="class in org.apache.calcite.rel.logical">LogicalCorrelate</a>&nbsp;rel)</pre>
</li>
</ul>
<a id="decorrelateRel(org.apache.calcite.rel.core.Correlate)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>decorrelateRel</h4>
<pre class="methodSignature">public&nbsp;<a href="RelDecorrelator.Frame.html" title="class in org.apache.calcite.sql2rel">RelDecorrelator.Frame</a>&nbsp;decorrelateRel&#8203;(<a href="../rel/core/Correlate.html" title="class in org.apache.calcite.rel.core">Correlate</a>&nbsp;rel)</pre>
</li>
</ul>
<a id="decorrelateRel(org.apache.calcite.rel.logical.LogicalJoin)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>decorrelateRel</h4>
<pre class="methodSignature">public&nbsp;<a href="RelDecorrelator.Frame.html" title="class in org.apache.calcite.sql2rel">RelDecorrelator.Frame</a>&nbsp;decorrelateRel&#8203;(<a href="../rel/logical/LogicalJoin.html" title="class in org.apache.calcite.rel.logical">LogicalJoin</a>&nbsp;rel)</pre>
</li>
</ul>
<a id="decorrelateRel(org.apache.calcite.rel.core.Join)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>decorrelateRel</h4>
<pre class="methodSignature">public&nbsp;<a href="RelDecorrelator.Frame.html" title="class in org.apache.calcite.sql2rel">RelDecorrelator.Frame</a>&nbsp;decorrelateRel&#8203;(<a href="../rel/core/Join.html" title="class in org.apache.calcite.rel.core">Join</a>&nbsp;rel)</pre>
</li>
</ul>
<a id="getNewForOldInputRef(org.apache.calcite.rel.RelNode,java.util.Map,org.apache.calcite.rex.RexInputRef)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getNewForOldInputRef</h4>
<pre class="methodSignature">private static&nbsp;<a href="../rex/RexInputRef.html" title="class in org.apache.calcite.rex">RexInputRef</a>&nbsp;getNewForOldInputRef&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;currentRel,
java.util.Map&lt;<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>,&#8203;<a href="RelDecorrelator.Frame.html" title="class in org.apache.calcite.sql2rel">RelDecorrelator.Frame</a>&gt;&nbsp;map,
<a href="../rex/RexInputRef.html" title="class in org.apache.calcite.rex">RexInputRef</a>&nbsp;oldInputRef)</pre>
</li>
</ul>
<a id="projectJoinOutputWithNullability(org.apache.calcite.rel.core.Join,org.apache.calcite.rel.core.Project,int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>projectJoinOutputWithNullability</h4>
<pre class="methodSignature">private&nbsp;<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;projectJoinOutputWithNullability&#8203;(<a href="../rel/core/Join.html" title="class in org.apache.calcite.rel.core">Join</a>&nbsp;join,
<a href="../rel/core/Project.html" title="class in org.apache.calcite.rel.core">Project</a>&nbsp;project,
int&nbsp;nullIndicatorPos)</pre>
<div class="block">Pulls project above the join from its RHS input. Enforces nullability
for join output.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>join</code> - Join</dd>
<dd><code>project</code> - Original project as the right-hand input of the join</dd>
<dd><code>nullIndicatorPos</code> - Position of null indicator</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the subtree with the new Project at the root</dd>
</dl>
</li>
</ul>
<a id="aggregateCorrelatorOutput(org.apache.calcite.rel.core.Correlate,org.apache.calcite.rel.core.Project,java.util.Set)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>aggregateCorrelatorOutput</h4>
<pre class="methodSignature">private&nbsp;<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;aggregateCorrelatorOutput&#8203;(<a href="../rel/core/Correlate.html" title="class in org.apache.calcite.rel.core">Correlate</a>&nbsp;correlate,
<a href="../rel/core/Project.html" title="class in org.apache.calcite.rel.core">Project</a>&nbsp;project,
java.util.Set&lt;java.lang.Integer&gt;&nbsp;isCount)</pre>
<div class="block">Pulls a <a href="../rel/core/Project.html" title="class in org.apache.calcite.rel.core"><code>Project</code></a> above a <a href="../rel/core/Correlate.html" title="class in org.apache.calcite.rel.core"><code>Correlate</code></a> from its RHS input.
Enforces nullability for join output.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>correlate</code> - Correlate</dd>
<dd><code>project</code> - the original project as the RHS input of the join</dd>
<dd><code>isCount</code> - Positions which are calls to the <code>COUNT</code>
aggregation function</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the subtree with the new Project at the root</dd>
</dl>
</li>
</ul>
<a id="checkCorVars(org.apache.calcite.rel.core.Correlate,org.apache.calcite.rel.core.Project,org.apache.calcite.rel.core.Filter,java.util.List)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>checkCorVars</h4>
<pre class="methodSignature">private&nbsp;boolean&nbsp;checkCorVars&#8203;(<a href="../rel/core/Correlate.html" title="class in org.apache.calcite.rel.core">Correlate</a>&nbsp;correlate,
<a href="../rel/core/Project.html" title="class in org.apache.calcite.rel.core">Project</a>&nbsp;project,
<a href="../rel/core/Filter.html" title="class in org.apache.calcite.rel.core">Filter</a>&nbsp;filter,
java.util.List&lt;<a href="../rex/RexFieldAccess.html" title="class in org.apache.calcite.rex">RexFieldAccess</a>&gt;&nbsp;correlatedJoinKeys)</pre>
<div class="block">Checks whether the correlations in projRel and filter are related to
the correlated variables provided by corRel.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>correlate</code> - Correlate</dd>
<dd><code>project</code> - The original Project as the RHS input of the join</dd>
<dd><code>filter</code> - Filter</dd>
<dd><code>correlatedJoinKeys</code> - Correlated join keys</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>true if filter and proj only references corVar provided by corRel</dd>
</dl>
</li>
</ul>
<a id="removeCorVarFromTree(org.apache.calcite.rel.core.Correlate)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>removeCorVarFromTree</h4>
<pre class="methodSignature">private&nbsp;void&nbsp;removeCorVarFromTree&#8203;(<a href="../rel/core/Correlate.html" title="class in org.apache.calcite.rel.core">Correlate</a>&nbsp;correlate)</pre>
<div class="block">Remove correlated variables from the tree at root corRel</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>correlate</code> - Correlate</dd>
</dl>
</li>
</ul>
<a id="createProjectWithAdditionalExprs(org.apache.calcite.rel.RelNode,java.util.List)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>createProjectWithAdditionalExprs</h4>
<pre class="methodSignature">private&nbsp;<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;createProjectWithAdditionalExprs&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;input,
java.util.List&lt;<a href="../util/Pair.html" title="class in org.apache.calcite.util">Pair</a>&lt;<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>,&#8203;java.lang.String&gt;&gt;&nbsp;additionalExprs)</pre>
<div class="block">Projects all <code>input</code> output fields plus the additional expressions.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>input</code> - Input relational expression</dd>
<dd><code>additionalExprs</code> - Additional expressions and names</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the new Project</dd>
</dl>
</li>
</ul>
<a id="identityMap(int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>identityMap</h4>
<pre class="methodSignature">static&nbsp;java.util.Map&lt;java.lang.Integer,&#8203;java.lang.Integer&gt;&nbsp;identityMap&#8203;(int&nbsp;count)</pre>
</li>
</ul>
<a id="register(org.apache.calcite.rel.RelNode,org.apache.calcite.rel.RelNode,java.util.Map,java.util.SortedMap)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>register</h4>
<pre class="methodSignature"><a href="RelDecorrelator.Frame.html" title="class in org.apache.calcite.sql2rel">RelDecorrelator.Frame</a>&nbsp;register&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;rel,
<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;newRel,
java.util.Map&lt;java.lang.Integer,&#8203;java.lang.Integer&gt;&nbsp;oldToNewOutputs,
java.util.SortedMap&lt;<a href="RelDecorrelator.CorDef.html" title="class in org.apache.calcite.sql2rel">RelDecorrelator.CorDef</a>,&#8203;java.lang.Integer&gt;&nbsp;corDefOutputs)</pre>
<div class="block">Registers a relational expression and the relational expression it became
after decorrelation.</div>
</li>
</ul>
<a id="allLessThan(java.util.Collection,int,org.apache.calcite.util.Litmus)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>allLessThan</h4>
<pre class="methodSignature">static&nbsp;boolean&nbsp;allLessThan&#8203;(java.util.Collection&lt;java.lang.Integer&gt;&nbsp;integers,
int&nbsp;limit,
<a href="../util/Litmus.html" title="interface in org.apache.calcite.util">Litmus</a>&nbsp;ret)</pre>
</li>
</ul>
<a id="stripHep(org.apache.calcite.rel.RelNode)">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>stripHep</h4>
<pre class="methodSignature">private static&nbsp;<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;stripHep&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;rel)</pre>
</li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
</div>
</main>
<!-- ========= END OF CLASS DATA ========= -->
<footer role="contentinfo">
<nav role="navigation">
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a id="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/RelDecorrelator.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><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a 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>