blob: eb1761ea7ea72f811b024a47089a38fc85864d63 [file] [log] [blame]
<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc -->
<title>RelOptUtil (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="RelOptUtil (Apache Calcite API)";
}
}
catch(err) {
}
//-->
var data = {"i0":9,"i1":9,"i2":9,"i3":41,"i4":9,"i5":9,"i6":41,"i7":9,"i8":9,"i9":9,"i10":9,"i11":9,"i12":9,"i13":9,"i14":9,"i15":9,"i16":9,"i17":9,"i18":9,"i19":9,"i20":41,"i21":9,"i22":9,"i23":41,"i24":41,"i25":9,"i26":9,"i27":9,"i28":41,"i29":41,"i30":41,"i31":9,"i32":41,"i33":41,"i34":41,"i35":9,"i36":41,"i37":9,"i38":9,"i39":41,"i40":41,"i41":41,"i42":9,"i43":9,"i44":9,"i45":9,"i46":9,"i47":9,"i48":9,"i49":9,"i50":9,"i51":9,"i52":41,"i53":9,"i54":9,"i55":9,"i56":9,"i57":9,"i58":9,"i59":9,"i60":9,"i61":9,"i62":9,"i63":9,"i64":41,"i65":9,"i66":9,"i67":41,"i68":9,"i69":9,"i70":9,"i71":9,"i72":9,"i73":41,"i74":9,"i75":9,"i76":9,"i77":9,"i78":9,"i79":9,"i80":9,"i81":9,"i82":9,"i83":9,"i84":41,"i85":41,"i86":9,"i87":9,"i88":41,"i89":41,"i90":9,"i91":9,"i92":41,"i93":9,"i94":9,"i95":9,"i96":9,"i97":41,"i98":9,"i99":9,"i100":9,"i101":9,"i102":9,"i103":9,"i104":9,"i105":41,"i106":9,"i107":9,"i108":9,"i109":9,"i110":9,"i111":9,"i112":9,"i113":41,"i114":9,"i115":9,"i116":9,"i117":9,"i118":9,"i119":9,"i120":9,"i121":9,"i122":9,"i123":9,"i124":9,"i125":9,"i126":9,"i127":9};
var tabs = {65535:["t0","All Methods"],1:["t1","Static 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/RelOptUtil.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.plan</a></div>
<h2 title="Class RelOptUtil" class="title">Class RelOptUtil</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li>java.lang.Object</li>
<li>
<ul class="inheritance">
<li>org.apache.calcite.plan.RelOptUtil</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<hr>
<pre>public abstract class <span class="typeNameLabel">RelOptUtil</span>
extends java.lang.Object</pre>
<div class="block"><code>RelOptUtil</code> defines static utility methods for use in optimizing
<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel"><code>RelNode</code></a>s.</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 static class&nbsp;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="RelOptUtil.CorrelationCollector.html" title="class in org.apache.calcite.plan">RelOptUtil.CorrelationCollector</a></span></code></th>
<td class="colLast">
<div class="block">Shuttle that finds correlation variables inside a given relational
expression, including those that are inside
<a href="../rex/RexSubQuery.html" title="class in org.apache.calcite.rex"><code>sub-queries</code></a>.</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="RelOptUtil.Exists.html" title="class in org.apache.calcite.plan">RelOptUtil.Exists</a></span></code></th>
<td class="colLast">
<div class="block">Result of calling
<a href="#createExistsPlan(org.apache.calcite.plan.RelOptCluster,org.apache.calcite.rel.RelNode,java.util.List,org.apache.calcite.rex.RexLiteral,java.lang.String)"><code>createExistsPlan(org.apache.calcite.plan.RelOptCluster, org.apache.calcite.rel.RelNode, java.util.List&lt;org.apache.calcite.rex.RexNode&gt;, org.apache.calcite.rex.RexLiteral, java.lang.String)</code></a></div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static class&nbsp;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="RelOptUtil.InputFinder.html" title="class in org.apache.calcite.plan">RelOptUtil.InputFinder</a></span></code></th>
<td class="colLast">
<div class="block">Visitor which builds a bitmap of the inputs used by an expression.</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="RelOptUtil.InputReferencedVisitor.html" title="class in org.apache.calcite.plan">RelOptUtil.InputReferencedVisitor</a></span></code></th>
<td class="colLast">
<div class="block">Shuttle that finds the set of inputs that are used.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static class&nbsp;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="RelOptUtil.Logic.html" title="enum in org.apache.calcite.plan">RelOptUtil.Logic</a></span></code></th>
<td class="colLast">
<div class="block">Policies for handling two- and three-valued boolean logic.</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="RelOptUtil.RexInputConverter.html" title="class in org.apache.calcite.plan">RelOptUtil.RexInputConverter</a></span></code></th>
<td class="colLast">
<div class="block">Walks an expression tree, converting the index of RexInputRefs based on
some adjustment factor.</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="RelOptUtil.Side.html" title="enum in org.apache.calcite.plan">RelOptUtil.Side</a></span></code></th>
<td class="colLast">
<div class="block">Categorizes whether a bit set contains bits left and right of a
line.</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="RelOptUtil.SubQueryType.html" title="enum in org.apache.calcite.plan">RelOptUtil.SubQueryType</a></span></code></th>
<td class="colLast">
<div class="block">What kind of sub-query.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static class&nbsp;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="RelOptUtil.TypeDumper.html" title="class in org.apache.calcite.plan">RelOptUtil.TypeDumper</a></span></code></th>
<td class="colLast">
<div class="block">Converts types to descriptive strings.</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="RelOptUtil.VariableSetVisitor.html" title="class in org.apache.calcite.plan">RelOptUtil.VariableSetVisitor</a></span></code></th>
<td class="colLast">
<div class="block">Visitor that finds all variables used but not stopped in an expression.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static class&nbsp;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="RelOptUtil.VariableUsedVisitor.html" title="class in org.apache.calcite.plan">RelOptUtil.VariableUsedVisitor</a></span></code></th>
<td class="colLast">
<div class="block">Visitor that finds all variables used in an expression.</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>(package private) static boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#B">B</a></span></code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static com.google.common.base.Predicate&lt;<a href="../rel/core/Calc.html" title="class in org.apache.calcite.rel.core">Calc</a>&gt;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#CALC_PREDICATE">CALC_PREDICATE</a></span></code></th>
<td class="colLast">
<div class="block"><span class="deprecatedLabel">Deprecated.</span></div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static double</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#EPSILON">EPSILON</a></span></code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static com.google.common.base.Predicate&lt;<a href="../rel/core/Filter.html" title="class in org.apache.calcite.rel.core">Filter</a>&gt;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#FILTER_PREDICATE">FILTER_PREDICATE</a></span></code></th>
<td class="colLast">
<div class="block"><span class="deprecatedLabel">Deprecated.</span></div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static com.google.common.base.Predicate&lt;<a href="../rel/core/Project.html" title="class in org.apache.calcite.rel.core">Project</a>&gt;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#PROJECT_PREDICATE">PROJECT_PREDICATE</a></span></code></th>
<td class="colLast">
<div class="block"><span class="deprecatedLabel">Deprecated.</span></div>
</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">Constructor</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr class="altColor">
<th class="colConstructorName" scope="row"><code><span class="memberNameLink"><a href="#%3Cinit%3E()">RelOptUtil</a></span>()</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="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 static void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#addJoinKey(java.util.List,org.apache.calcite.rex.RexNode,boolean)">addJoinKey</a></span>&#8203;(java.util.List&lt;<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;joinKeyList,
<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;key,
boolean&nbsp;preserveLastElementInList)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>static &lt;T extends <a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&gt;<br>T</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#addTrait(T,org.apache.calcite.plan.RelTrait)">addTrait</a></span>&#8203;(T&nbsp;rel,
<a href="RelTrait.html" title="interface in org.apache.calcite.plan">RelTrait</a>&nbsp;trait)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>static java.util.List&lt;java.lang.Integer&gt;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#adjustKeys(java.util.List,int)">adjustKeys</a></span>&#8203;(java.util.List&lt;java.lang.Integer&gt;&nbsp;keys,
int&nbsp;adjustment)</code></th>
<td class="colLast">
<div class="block">Adjusts key values in a list by some fixed amount.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>static boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#analyzeSimpleEquiJoin(org.apache.calcite.rel.logical.LogicalJoin,int%5B%5D)">analyzeSimpleEquiJoin</a></span>&#8203;(<a href="../rel/logical/LogicalJoin.html" title="class in org.apache.calcite.rel.logical">LogicalJoin</a>&nbsp;join,
int[]&nbsp;joinFieldOrdinals)</code></th>
<td class="colLast">
<div class="block"><span class="deprecatedLabel">Deprecated.</span></div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>static <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="#andJoinFilters(org.apache.calcite.rex.RexBuilder,org.apache.calcite.rex.RexNode,org.apache.calcite.rex.RexNode)">andJoinFilters</a></span>&#8203;(<a href="../rex/RexBuilder.html" title="class in org.apache.calcite.rex">RexBuilder</a>&nbsp;rexBuilder,
<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;left,
<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;right)</code></th>
<td class="colLast">
<div class="block">Ands two sets of join filters together, either of which can be null.</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code>static boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#areRowTypesEqual(org.apache.calcite.rel.type.RelDataType,org.apache.calcite.rel.type.RelDataType,boolean)">areRowTypesEqual</a></span>&#8203;(<a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;rowType1,
<a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;rowType2,
boolean&nbsp;compareNames)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code>static boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#checkProjAndChildInputs(org.apache.calcite.rel.core.Project,boolean)">checkProjAndChildInputs</a></span>&#8203;(<a href="../rel/core/Project.html" title="class in org.apache.calcite.rel.core">Project</a>&nbsp;project,
boolean&nbsp;checkNames)</code></th>
<td class="colLast">
<div class="block"><span class="deprecatedLabel">Deprecated.</span></div>
</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code>static boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#classifyFilters(org.apache.calcite.rel.RelNode,java.util.List,org.apache.calcite.rel.core.JoinRelType,boolean,boolean,boolean,java.util.List,java.util.List,java.util.List)">classifyFilters</a></span>&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;joinRel,
java.util.List&lt;<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;filters,
<a href="../rel/core/JoinRelType.html" title="enum in org.apache.calcite.rel.core">JoinRelType</a>&nbsp;joinType,
boolean&nbsp;pushInto,
boolean&nbsp;pushLeft,
boolean&nbsp;pushRight,
java.util.List&lt;<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;joinFilters,
java.util.List&lt;<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;leftFilters,
java.util.List&lt;<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;rightFilters)</code></th>
<td class="colLast">
<div class="block">Classifies filters according to where they should be processed.</div>
</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code>static <a href="../rex/RexCall.html" title="class in org.apache.calcite.rex">RexCall</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#collapseExpandedIsNotDistinctFromExpr(org.apache.calcite.rex.RexCall,org.apache.calcite.rex.RexBuilder)">collapseExpandedIsNotDistinctFromExpr</a></span>&#8203;(<a href="../rex/RexCall.html" title="class in org.apache.calcite.rex">RexCall</a>&nbsp;call,
<a href="../rex/RexBuilder.html" title="class in org.apache.calcite.rex">RexBuilder</a>&nbsp;rexBuilder)</code></th>
<td class="colLast">
<div class="block">Collapses an expanded version of <code>IS NOT DISTINCT FROM</code> expression.</div>
</td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code>static java.util.List&lt;<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#conjunctions(org.apache.calcite.rex.RexNode)">conjunctions</a></span>&#8203;(<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;rexPredicate)</code></th>
<td class="colLast">
<div class="block">Returns a condition decomposed by AND.</div>
</td>
</tr>
<tr id="i10" class="altColor">
<td class="colFirst"><code>static boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#contains(org.apache.calcite.rel.RelNode,org.apache.calcite.rel.RelNode)">contains</a></span>&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;ancestor,
<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;target)</code></th>
<td class="colLast">
<div class="block">Returns whether relational expression <code>target</code> occurs within a
relational expression <code>ancestor</code>.</div>
</td>
</tr>
<tr id="i11" class="rowColor">
<td class="colFirst"><code>private static boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#containsGet(org.apache.calcite.rex.RexNode)">containsGet</a></span>&#8203;(<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;node)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i12" class="altColor">
<td class="colFirst"><code>static boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#containsMultisetOrWindowedAgg(org.apache.calcite.rel.core.Calc)">containsMultisetOrWindowedAgg</a></span>&#8203;(<a href="../rel/core/Calc.html" title="class in org.apache.calcite.rel.core">Calc</a>&nbsp;calc)</code></th>
<td class="colLast">
<div class="block">Predicate for whether a <a href="../rel/core/Calc.html" title="class in org.apache.calcite.rel.core"><code>Calc</code></a> contains multisets or windowed
aggregates.</div>
</td>
</tr>
<tr id="i13" class="rowColor">
<td class="colFirst"><code>static boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#containsMultisetOrWindowedAgg(org.apache.calcite.rel.core.Filter)">containsMultisetOrWindowedAgg</a></span>&#8203;(<a href="../rel/core/Filter.html" title="class in org.apache.calcite.rel.core">Filter</a>&nbsp;filter)</code></th>
<td class="colLast">
<div class="block">Predicate for whether a <a href="../rel/core/Filter.html" title="class in org.apache.calcite.rel.core"><code>Filter</code></a> contains multisets or windowed
aggregates.</div>
</td>
</tr>
<tr id="i14" class="altColor">
<td class="colFirst"><code>static boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#containsMultisetOrWindowedAgg(org.apache.calcite.rel.core.Project)">containsMultisetOrWindowedAgg</a></span>&#8203;(<a href="../rel/core/Project.html" title="class in org.apache.calcite.rel.core">Project</a>&nbsp;project)</code></th>
<td class="colLast">
<div class="block">Predicate for whether a <a href="../rel/core/Project.html" title="class in org.apache.calcite.rel.core"><code>Project</code></a> contains multisets or windowed
aggregates.</div>
</td>
</tr>
<tr id="i15" class="rowColor">
<td class="colFirst"><code>private static boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#containsNullableFields(org.apache.calcite.rel.RelNode)">containsNullableFields</a></span>&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;r)</code></th>
<td class="colLast">
<div class="block">Determines whether any of the fields in a given relational expression may
contain null values, taking into account constraints on the field types and
also deduced predicates.</div>
</td>
</tr>
<tr id="i16" class="altColor">
<td class="colFirst"><code>static <a href="../util/ImmutableBitSet.html" title="class in org.apache.calcite.util">ImmutableBitSet</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#correlationColumns(org.apache.calcite.rel.core.CorrelationId,org.apache.calcite.rel.RelNode)">correlationColumns</a></span>&#8203;(<a href="../rel/core/CorrelationId.html" title="class in org.apache.calcite.rel.core">CorrelationId</a>&nbsp;id,
<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;rel)</code></th>
<td class="colLast">
<div class="block">Finds which columns of a correlation variable are used within a
relational expression.</div>
</td>
</tr>
<tr id="i17" class="rowColor">
<td class="colFirst"><code>static int</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#countJoins(org.apache.calcite.rel.RelNode)">countJoins</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">Returns the number of <a href="../rel/core/Join.html" title="class in org.apache.calcite.rel.core"><code>Join</code></a> nodes in a
tree.</div>
</td>
</tr>
<tr id="i18" 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="#createCastRel(org.apache.calcite.rel.RelNode,org.apache.calcite.rel.type.RelDataType,boolean)">createCastRel</a></span>&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;rel,
<a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;castRowType,
boolean&nbsp;rename)</code></th>
<td class="colLast">
<div class="block">Creates a projection which casts a rel's output to a desired row type.</div>
</td>
</tr>
<tr id="i19" 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="#createCastRel(org.apache.calcite.rel.RelNode,org.apache.calcite.rel.type.RelDataType,boolean,org.apache.calcite.rel.core.RelFactories.ProjectFactory)">createCastRel</a></span>&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;rel,
<a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;castRowType,
boolean&nbsp;rename,
<a href="../rel/core/RelFactories.ProjectFactory.html" title="interface in org.apache.calcite.rel.core">RelFactories.ProjectFactory</a>&nbsp;projectFactory)</code></th>
<td class="colLast">
<div class="block">Creates a projection which casts a rel's output to a desired row type.</div>
</td>
</tr>
<tr id="i20" 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="#createDistinctRel(org.apache.calcite.rel.RelNode)">createDistinctRel</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"><span class="deprecatedLabel">Deprecated.</span>
<div class="deprecationComment">Use <a href="../tools/RelBuilder.html#distinct()"><code>RelBuilder.distinct()</code></a>.</div>
</div>
</td>
</tr>
<tr id="i21" class="rowColor">
<td class="colFirst"><code>static <a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#createDmlRowType(org.apache.calcite.sql.SqlKind,org.apache.calcite.rel.type.RelDataTypeFactory)">createDmlRowType</a></span>&#8203;(<a href="../sql/SqlKind.html" title="enum in org.apache.calcite.sql">SqlKind</a>&nbsp;kind,
<a href="../rel/type/RelDataTypeFactory.html" title="interface in org.apache.calcite.rel.type">RelDataTypeFactory</a>&nbsp;typeFactory)</code></th>
<td class="colLast">
<div class="block">Creates the row type descriptor for the result of a DML operation, which
is a single column named ROWCOUNT of type BIGINT for INSERT;
a single column named PLAN for EXPLAIN.</div>
</td>
</tr>
<tr id="i22" class="altColor">
<td class="colFirst"><code>static <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="#createEquiJoinCondition(org.apache.calcite.rel.RelNode,java.util.List,org.apache.calcite.rel.RelNode,java.util.List,org.apache.calcite.rex.RexBuilder)">createEquiJoinCondition</a></span>&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;left,
java.util.List&lt;java.lang.Integer&gt;&nbsp;leftKeys,
<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;right,
java.util.List&lt;java.lang.Integer&gt;&nbsp;rightKeys,
<a href="../rex/RexBuilder.html" title="class in org.apache.calcite.rex">RexBuilder</a>&nbsp;rexBuilder)</code></th>
<td class="colLast">
<div class="block">Builds an equi-join condition from a set of left and right keys.</div>
</td>
</tr>
<tr id="i23" 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="#createExistsPlan(org.apache.calcite.plan.RelOptCluster,org.apache.calcite.rel.RelNode,java.util.List,org.apache.calcite.rex.RexLiteral,java.lang.String)">createExistsPlan</a></span>&#8203;(<a href="RelOptCluster.html" title="class in org.apache.calcite.plan">RelOptCluster</a>&nbsp;cluster,
<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;seekRel,
java.util.List&lt;<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;conditions,
<a href="../rex/RexLiteral.html" title="class in org.apache.calcite.rex">RexLiteral</a>&nbsp;extraExpr,
java.lang.String&nbsp;extraName)</code></th>
<td class="colLast">
<div class="block"><span class="deprecatedLabel">Deprecated.</span></div>
</td>
</tr>
<tr id="i24" class="altColor">
<td class="colFirst"><code>static <a href="RelOptUtil.Exists.html" title="class in org.apache.calcite.plan">RelOptUtil.Exists</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#createExistsPlan(org.apache.calcite.rel.RelNode,org.apache.calcite.plan.RelOptUtil.SubQueryType,org.apache.calcite.plan.RelOptUtil.Logic,boolean)">createExistsPlan</a></span>&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;seekRel,
<a href="RelOptUtil.SubQueryType.html" title="enum in org.apache.calcite.plan">RelOptUtil.SubQueryType</a>&nbsp;subQueryType,
<a href="RelOptUtil.Logic.html" title="enum in org.apache.calcite.plan">RelOptUtil.Logic</a>&nbsp;logic,
boolean&nbsp;notIn)</code></th>
<td class="colLast">
<div class="block"><span class="deprecatedLabel">Deprecated.</span></div>
</td>
</tr>
<tr id="i25" class="rowColor">
<td class="colFirst"><code>static <a href="RelOptUtil.Exists.html" title="class in org.apache.calcite.plan">RelOptUtil.Exists</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#createExistsPlan(org.apache.calcite.rel.RelNode,org.apache.calcite.plan.RelOptUtil.SubQueryType,org.apache.calcite.plan.RelOptUtil.Logic,boolean,org.apache.calcite.tools.RelBuilder)">createExistsPlan</a></span>&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;seekRel,
<a href="RelOptUtil.SubQueryType.html" title="enum in org.apache.calcite.plan">RelOptUtil.SubQueryType</a>&nbsp;subQueryType,
<a href="RelOptUtil.Logic.html" title="enum in org.apache.calcite.plan">RelOptUtil.Logic</a>&nbsp;logic,
boolean&nbsp;notIn,
<a href="../tools/RelBuilder.html" title="class in org.apache.calcite.tools">RelBuilder</a>&nbsp;relBuilder)</code></th>
<td class="colLast">
<div class="block">Creates a plan suitable for use in <code>EXISTS</code> or <code>IN</code>
statements.</div>
</td>
</tr>
<tr id="i26" 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="#createFilter(org.apache.calcite.rel.RelNode,java.lang.Iterable)">createFilter</a></span>&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;child,
java.lang.Iterable&lt;? extends <a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;conditions)</code></th>
<td class="colLast">
<div class="block">Creates a filter, using the default filter factory,
or returns the original relational expression if the
condition is trivial.</div>
</td>
</tr>
<tr id="i27" 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="#createFilter(org.apache.calcite.rel.RelNode,java.lang.Iterable,org.apache.calcite.rel.core.RelFactories.FilterFactory)">createFilter</a></span>&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;child,
java.lang.Iterable&lt;? extends <a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;conditions,
<a href="../rel/core/RelFactories.FilterFactory.html" title="interface in org.apache.calcite.rel.core">RelFactories.FilterFactory</a>&nbsp;filterFactory)</code></th>
<td class="colLast">
<div class="block">Creates a filter using the default factory,
or returns the original relational expression if the
condition is trivial.</div>
</td>
</tr>
<tr id="i28" 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="#createFilter(org.apache.calcite.rel.RelNode,org.apache.calcite.rex.RexNode)">createFilter</a></span>&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;child,
<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;condition)</code></th>
<td class="colLast">
<div class="block"><span class="deprecatedLabel">Deprecated.</span></div>
</td>
</tr>
<tr id="i29" 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="#createFilter(org.apache.calcite.rel.RelNode,org.apache.calcite.rex.RexNode,org.apache.calcite.rel.core.RelFactories.FilterFactory)">createFilter</a></span>&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;child,
<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;condition,
<a href="../rel/core/RelFactories.FilterFactory.html" title="interface in org.apache.calcite.rel.core">RelFactories.FilterFactory</a>&nbsp;filterFactory)</code></th>
<td class="colLast">
<div class="block"><span class="deprecatedLabel">Deprecated.</span></div>
</td>
</tr>
<tr id="i30" 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="#createNullFilter(org.apache.calcite.rel.RelNode,java.lang.Integer%5B%5D)">createNullFilter</a></span>&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;rel,
java.lang.Integer[]&nbsp;fieldOrdinals)</code></th>
<td class="colLast">
<div class="block"><span class="deprecatedLabel">Deprecated.</span></div>
</td>
</tr>
<tr id="i31" 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="#createProject(org.apache.calcite.rel.core.RelFactories.ProjectFactory,org.apache.calcite.rel.RelNode,java.util.List)">createProject</a></span>&#8203;(<a href="../rel/core/RelFactories.ProjectFactory.html" title="interface in org.apache.calcite.rel.core">RelFactories.ProjectFactory</a>&nbsp;factory,
<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;child,
java.util.List&lt;java.lang.Integer&gt;&nbsp;posList)</code></th>
<td class="colLast">
<div class="block">Creates a relational expression that projects the given fields of the
input.</div>
</td>
</tr>
<tr id="i32" 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="#createProject(org.apache.calcite.rel.RelNode,java.util.List,java.util.List)">createProject</a></span>&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;child,
java.util.List&lt;? extends <a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;exprList,
java.util.List&lt;java.lang.String&gt;&nbsp;fieldNameList)</code></th>
<td class="colLast">
<div class="block"><span class="deprecatedLabel">Deprecated.</span></div>
</td>
</tr>
<tr id="i33" 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="#createProject(org.apache.calcite.rel.RelNode,java.util.List,java.util.List,boolean)">createProject</a></span>&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;child,
java.util.List&lt;? extends <a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;exprs,
java.util.List&lt;java.lang.String&gt;&nbsp;fieldNames,
boolean&nbsp;optimize)</code></th>
<td class="colLast">
<div class="block"><span class="deprecatedLabel">Deprecated.</span></div>
</td>
</tr>
<tr id="i34" 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="#createProject(org.apache.calcite.rel.RelNode,java.util.List,java.util.List,boolean,org.apache.calcite.tools.RelBuilder)">createProject</a></span>&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;child,
java.util.List&lt;? extends <a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;exprs,
java.util.List&lt;java.lang.String&gt;&nbsp;fieldNames,
boolean&nbsp;optimize,
<a href="../tools/RelBuilder.html" title="class in org.apache.calcite.tools">RelBuilder</a>&nbsp;relBuilder)</code></th>
<td class="colLast">
<div class="block"><span class="deprecatedLabel">Deprecated.</span>
<div class="deprecationComment">Use
<a href="../tools/RelBuilder.html#projectNamed(java.lang.Iterable,java.lang.Iterable,boolean)"><code>RelBuilder.projectNamed(Iterable, Iterable, boolean)</code></a></div>
</div>
</td>
</tr>
<tr id="i35" 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="#createProject(org.apache.calcite.rel.RelNode,java.util.List)">createProject</a></span>&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;child,
java.util.List&lt;java.lang.Integer&gt;&nbsp;posList)</code></th>
<td class="colLast">
<div class="block">Creates a relational expression that projects the given fields of the
input.</div>
</td>
</tr>
<tr id="i36" 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="#createProject(org.apache.calcite.rel.RelNode,java.util.List,boolean)">createProject</a></span>&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;child,
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;projectList,
boolean&nbsp;optimize)</code></th>
<td class="colLast">
<div class="block"><span class="deprecatedLabel">Deprecated.</span></div>
</td>
</tr>
<tr id="i37" 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="#createProject(org.apache.calcite.rel.RelNode,org.apache.calcite.util.mapping.Mappings.TargetMapping)">createProject</a></span>&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;child,
<a href="../util/mapping/Mappings.TargetMapping.html" title="interface in org.apache.calcite.util.mapping">Mappings.TargetMapping</a>&nbsp;mapping)</code></th>
<td class="colLast">
<div class="block">Creates a <a href="../rel/logical/LogicalProject.html" title="class in org.apache.calcite.rel.logical"><code>LogicalProject</code></a> that
projects particular fields of its input, according to a mapping.</div>
</td>
</tr>
<tr id="i38" 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="#createProject(org.apache.calcite.rel.RelNode,org.apache.calcite.util.mapping.Mappings.TargetMapping,org.apache.calcite.rel.core.RelFactories.ProjectFactory)">createProject</a></span>&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;child,
<a href="../util/mapping/Mappings.TargetMapping.html" title="interface in org.apache.calcite.util.mapping">Mappings.TargetMapping</a>&nbsp;mapping,
<a href="../rel/core/RelFactories.ProjectFactory.html" title="interface in org.apache.calcite.rel.core">RelFactories.ProjectFactory</a>&nbsp;projectFactory)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i39" 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="#createProjectJoinRel(java.util.List,org.apache.calcite.rel.RelNode)">createProjectJoinRel</a></span>&#8203;(java.util.List&lt;java.lang.Integer&gt;&nbsp;outputProj,
<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;joinRel)</code></th>
<td class="colLast">
<div class="block"><span class="deprecatedLabel">Deprecated.</span></div>
</td>
</tr>
<tr id="i40" 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="#createRename(org.apache.calcite.rel.RelNode,java.util.List)">createRename</a></span>&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;rel,
java.util.List&lt;java.lang.String&gt;&nbsp;fieldNames)</code></th>
<td class="colLast">
<div class="block"><span class="deprecatedLabel">Deprecated.</span></div>
</td>
</tr>
<tr id="i41" 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="#createRenameRel(org.apache.calcite.rel.type.RelDataType,org.apache.calcite.rel.RelNode)">createRenameRel</a></span>&#8203;(<a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;outputType,
<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;rel)</code></th>
<td class="colLast">
<div class="block"><span class="deprecatedLabel">Deprecated.</span></div>
</td>
</tr>
<tr id="i42" 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="#createSingleValueAggRel(org.apache.calcite.plan.RelOptCluster,org.apache.calcite.rel.RelNode)">createSingleValueAggRel</a></span>&#8203;(<a href="RelOptCluster.html" title="class in org.apache.calcite.plan">RelOptCluster</a>&nbsp;cluster,
<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;rel)</code></th>
<td class="colLast">
<div class="block">Creates a LogicalAggregate that removes all duplicates from the result of
an underlying relational expression.</div>
</td>
</tr>
<tr id="i43" class="rowColor">
<td class="colFirst"><code>static java.util.List&lt;<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#createSwappedJoinExprs(org.apache.calcite.rel.RelNode,org.apache.calcite.rel.core.Join,boolean)">createSwappedJoinExprs</a></span>&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;newJoin,
<a href="../rel/core/Join.html" title="class in org.apache.calcite.rel.core">Join</a>&nbsp;origJoin,
boolean&nbsp;origOrder)</code></th>
<td class="colLast">
<div class="block">Creates projection expressions reflecting the swapping of a join's input.</div>
</td>
</tr>
<tr id="i44" class="altColor">
<td class="colFirst"><code>static void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#decomposeConjunction(org.apache.calcite.rex.RexNode,java.util.List)">decomposeConjunction</a></span>&#8203;(<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;rexPredicate,
java.util.List&lt;<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;rexList)</code></th>
<td class="colLast">
<div class="block">Decomposes a predicate into a list of expressions that are AND'ed
together.</div>
</td>
</tr>
<tr id="i45" class="rowColor">
<td class="colFirst"><code>static void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#decomposeConjunction(org.apache.calcite.rex.RexNode,java.util.List,java.util.List)">decomposeConjunction</a></span>&#8203;(<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;rexPredicate,
java.util.List&lt;<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;rexList,
java.util.List&lt;<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;notList)</code></th>
<td class="colLast">
<div class="block">Decomposes a predicate into a list of expressions that are AND'ed
together, and a list of expressions that are preceded by NOT.</div>
</td>
</tr>
<tr id="i46" class="altColor">
<td class="colFirst"><code>static void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#decomposeDisjunction(org.apache.calcite.rex.RexNode,java.util.List)">decomposeDisjunction</a></span>&#8203;(<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;rexPredicate,
java.util.List&lt;<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;rexList)</code></th>
<td class="colLast">
<div class="block">Decomposes a predicate into a list of expressions that are OR'ed
together.</div>
</td>
</tr>
<tr id="i47" class="rowColor">
<td class="colFirst"><code>static java.util.List&lt;<a href="../rel/type/RelDataTypeField.html" title="interface in org.apache.calcite.rel.type">RelDataTypeField</a>&gt;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#deduplicateColumns(java.util.List,java.util.List)">deduplicateColumns</a></span>&#8203;(java.util.List&lt;<a href="../rel/type/RelDataTypeField.html" title="interface in org.apache.calcite.rel.type">RelDataTypeField</a>&gt;&nbsp;baseColumns,
java.util.List&lt;<a href="../rel/type/RelDataTypeField.html" title="interface in org.apache.calcite.rel.type">RelDataTypeField</a>&gt;&nbsp;extendedColumns)</code></th>
<td class="colLast">
<div class="block">Returns the set of columns with unique names, with prior columns taking
precedence over columns that appear later in the list.</div>
</td>
</tr>
<tr id="i48" class="altColor">
<td class="colFirst"><code>static java.util.List&lt;<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#disjunctions(org.apache.calcite.rex.RexNode)">disjunctions</a></span>&#8203;(<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;rexPredicate)</code></th>
<td class="colLast">
<div class="block">Returns a condition decomposed by OR.</div>
</td>
</tr>
<tr id="i49" class="rowColor">
<td class="colFirst"><code>private static <a href="../rex/RexCall.html" title="class in org.apache.calcite.rex">RexCall</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#doCollapseExpandedIsNotDistinctFrom(org.apache.calcite.rex.RexBuilder,org.apache.calcite.rex.RexCall,org.apache.calcite.rex.RexCall,org.apache.calcite.rex.RexCall,org.apache.calcite.rex.RexCall)">doCollapseExpandedIsNotDistinctFrom</a></span>&#8203;(<a href="../rex/RexBuilder.html" title="class in org.apache.calcite.rex">RexBuilder</a>&nbsp;rexBuilder,
<a href="../rex/RexCall.html" title="class in org.apache.calcite.rex">RexCall</a>&nbsp;call,
<a href="../rex/RexCall.html" title="class in org.apache.calcite.rex">RexCall</a>&nbsp;ifNull0Call,
<a href="../rex/RexCall.html" title="class in org.apache.calcite.rex">RexCall</a>&nbsp;ifNull1Call,
<a href="../rex/RexCall.html" title="class in org.apache.calcite.rex">RexCall</a>&nbsp;equalsCall)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i50" class="altColor">
<td class="colFirst"><code>private static <a href="../rex/RexCall.html" title="class in org.apache.calcite.rex">RexCall</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#doCollapseExpandedIsNotDistinctFromCaseExpr(org.apache.calcite.rex.RexCall,org.apache.calcite.rex.RexBuilder)">doCollapseExpandedIsNotDistinctFromCaseExpr</a></span>&#8203;(<a href="../rex/RexCall.html" title="class in org.apache.calcite.rex">RexCall</a>&nbsp;call,
<a href="../rex/RexBuilder.html" title="class in org.apache.calcite.rex">RexBuilder</a>&nbsp;rexBuilder)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i51" class="rowColor">
<td class="colFirst"><code>private static <a href="../rex/RexCall.html" title="class in org.apache.calcite.rex">RexCall</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#doCollapseExpandedIsNotDistinctFromOrExpr(org.apache.calcite.rex.RexCall,org.apache.calcite.rex.RexBuilder)">doCollapseExpandedIsNotDistinctFromOrExpr</a></span>&#8203;(<a href="../rex/RexCall.html" title="class in org.apache.calcite.rex">RexCall</a>&nbsp;call,
<a href="../rex/RexBuilder.html" title="class in org.apache.calcite.rex">RexBuilder</a>&nbsp;rexBuilder)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i52" class="altColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#dumpPlan(java.lang.String,org.apache.calcite.rel.RelNode,boolean,org.apache.calcite.sql.SqlExplainLevel)">dumpPlan</a></span>&#8203;(java.lang.String&nbsp;header,
<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;rel,
boolean&nbsp;asXml,
<a href="../sql/SqlExplainLevel.html" title="enum in org.apache.calcite.sql">SqlExplainLevel</a>&nbsp;detailLevel)</code></th>
<td class="colLast">
<div class="block"><span class="deprecatedLabel">Deprecated.</span></div>
</td>
</tr>
<tr id="i53" class="rowColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#dumpPlan(java.lang.String,org.apache.calcite.rel.RelNode,org.apache.calcite.sql.SqlExplainFormat,org.apache.calcite.sql.SqlExplainLevel)">dumpPlan</a></span>&#8203;(java.lang.String&nbsp;header,
<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;rel,
<a href="../sql/SqlExplainFormat.html" title="enum in org.apache.calcite.sql">SqlExplainFormat</a>&nbsp;format,
<a href="../sql/SqlExplainLevel.html" title="enum in org.apache.calcite.sql">SqlExplainLevel</a>&nbsp;detailLevel)</code></th>
<td class="colLast">
<div class="block">Dumps a plan as a string.</div>
</td>
</tr>
<tr id="i54" class="altColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#dumpType(org.apache.calcite.rel.type.RelDataType)">dumpType</a></span>&#8203;(<a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;type)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i55" class="rowColor">
<td class="colFirst"><code>static boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#eq(java.lang.String,org.apache.calcite.rel.type.RelDataType,java.lang.String,org.apache.calcite.rel.type.RelDataType,org.apache.calcite.util.Litmus)">eq</a></span>&#8203;(java.lang.String&nbsp;desc1,
<a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;type1,
java.lang.String&nbsp;desc2,
<a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;type2,
<a href="../util/Litmus.html" title="interface in org.apache.calcite.util">Litmus</a>&nbsp;litmus)</code></th>
<td class="colLast">
<div class="block">Returns whether two types are equal using '='.</div>
</td>
</tr>
<tr id="i56" class="altColor">
<td class="colFirst"><code>static boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#equal(java.lang.String,org.apache.calcite.rel.type.RelDataType,java.lang.String,org.apache.calcite.rel.type.RelDataType,org.apache.calcite.util.Litmus)">equal</a></span>&#8203;(java.lang.String&nbsp;desc1,
<a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;type1,
java.lang.String&nbsp;desc2,
<a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;type2,
<a href="../util/Litmus.html" title="interface in org.apache.calcite.util">Litmus</a>&nbsp;litmus)</code></th>
<td class="colLast">
<div class="block">Returns whether two types are equal using
<a href="#areRowTypesEqual(org.apache.calcite.rel.type.RelDataType,org.apache.calcite.rel.type.RelDataType,boolean)"><code>areRowTypesEqual(RelDataType, RelDataType, boolean)</code></a>.</div>
</td>
</tr>
<tr id="i57" class="rowColor">
<td class="colFirst"><code>static boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#equalType(java.lang.String,org.apache.calcite.rel.RelNode,java.lang.String,org.apache.calcite.rel.RelNode,org.apache.calcite.util.Litmus)">equalType</a></span>&#8203;(java.lang.String&nbsp;desc0,
<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;rel0,
java.lang.String&nbsp;desc1,
<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;rel1,
<a href="../util/Litmus.html" title="interface in org.apache.calcite.util">Litmus</a>&nbsp;litmus)</code></th>
<td class="colLast">
<div class="block">Returns whether two relational expressions have the same row-type.</div>
</td>
</tr>
<tr id="i58" class="altColor">
<td class="colFirst"><code>static java.util.List&lt;java.lang.String&gt;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#findAllTableQualifiedNames(org.apache.calcite.rel.RelNode)">findAllTableQualifiedNames</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">Returns a list of all table qualified names used by this expression
or its children.</div>
</td>
</tr>
<tr id="i59" class="rowColor">
<td class="colFirst"><code>static java.util.List&lt;<a href="RelOptTable.html" title="interface in org.apache.calcite.plan">RelOptTable</a>&gt;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#findAllTables(org.apache.calcite.rel.RelNode)">findAllTables</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">Returns a list of all tables used by this expression or its children</div>
</td>
</tr>
<tr id="i60" class="altColor">
<td class="colFirst"><code>static java.util.Set&lt;<a href="RelOptTable.html" title="interface in org.apache.calcite.plan">RelOptTable</a>&gt;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#findTables(org.apache.calcite.rel.RelNode)">findTables</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">Returns a set of tables used by this expression or its children</div>
</td>
</tr>
<tr id="i61" class="rowColor">
<td class="colFirst"><code>private static void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#fix(java.util.List,int,int)">fix</a></span>&#8203;(java.util.List&lt;<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;operands,
int&nbsp;before,
int&nbsp;after)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i62" class="altColor">
<td class="colFirst"><code>static java.util.Set&lt;java.lang.Integer&gt;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getAllFields(org.apache.calcite.rel.core.Aggregate)">getAllFields</a></span>&#8203;(<a href="../rel/core/Aggregate.html" title="class in org.apache.calcite.rel.core">Aggregate</a>&nbsp;aggregate)</code></th>
<td class="colLast">
<div class="block">Gets all fields in an aggregate.</div>
</td>
</tr>
<tr id="i63" class="rowColor">
<td class="colFirst"><code>static java.util.Map&lt;java.lang.Integer,&#8203;<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getColumnConstraints(org.apache.calcite.schema.ModifiableView,org.apache.calcite.rel.type.RelDataType,org.apache.calcite.rel.type.RelDataTypeFactory)">getColumnConstraints</a></span>&#8203;(<a href="../schema/ModifiableView.html" title="interface in org.apache.calcite.schema">ModifiableView</a>&nbsp;modifiableViewTable,
<a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;targetRowType,
<a href="../rel/type/RelDataTypeFactory.html" title="interface in org.apache.calcite.rel.type">RelDataTypeFactory</a>&nbsp;typeFactory)</code></th>
<td class="colLast">
<div class="block">Returns a mapping of the column ordinal in the underlying table to a column
constraint of the modifiable view.</div>
</td>
</tr>
<tr id="i64" class="altColor">
<td class="colFirst"><code>static <a href="RelOptTable.ToRelContext.html" title="interface in org.apache.calcite.plan">RelOptTable.ToRelContext</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getContext(org.apache.calcite.plan.RelOptCluster)">getContext</a></span>&#8203;(<a href="RelOptCluster.html" title="class in org.apache.calcite.plan">RelOptCluster</a>&nbsp;cluster)</code></th>
<td class="colLast">
<div class="block"><span class="deprecatedLabel">Deprecated.</span></div>
</td>
</tr>
<tr id="i65" class="rowColor">
<td class="colFirst"><code>static java.util.List&lt;<a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&gt;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getFieldTypeList(org.apache.calcite.rel.type.RelDataType)">getFieldTypeList</a></span>&#8203;(<a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;type)</code></th>
<td class="colLast">
<div class="block">Returns a list of the types of the fields in a given struct type.</div>
</td>
</tr>
<tr id="i66" class="altColor">
<td class="colFirst"><code>static java.util.Set&lt;<a href="../rel/core/CorrelationId.html" title="class in org.apache.calcite.rel.core">CorrelationId</a>&gt;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getVariablesSet(org.apache.calcite.rel.RelNode)">getVariablesSet</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">Returns a list of variables set by a relational expression or its
descendants.</div>
</td>
</tr>
<tr id="i67" class="rowColor">
<td class="colFirst"><code>static java.util.List&lt;<a href="../rel/core/CorrelationId.html" title="class in org.apache.calcite.rel.core">CorrelationId</a>&gt;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getVariablesSetAndUsed(org.apache.calcite.rel.RelNode,org.apache.calcite.rel.RelNode)">getVariablesSetAndUsed</a></span>&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;rel0,
<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;rel1)</code></th>
<td class="colLast">
<div class="block"><span class="deprecatedLabel">Deprecated.</span></div>
</td>
</tr>
<tr id="i68" class="altColor">
<td class="colFirst"><code>static java.util.Set&lt;<a href="../rel/core/CorrelationId.html" title="class in org.apache.calcite.rel.core">CorrelationId</a>&gt;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getVariablesUsed(org.apache.calcite.rel.RelNode)">getVariablesUsed</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">Returns a set of variables used by a relational expression or its
descendants.</div>
</td>
</tr>
<tr id="i69" class="rowColor">
<td class="colFirst"><code>static void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#go(org.apache.calcite.rel.RelVisitor,org.apache.calcite.rel.RelNode)">go</a></span>&#8203;(<a href="../rel/RelVisitor.html" title="class in org.apache.calcite.rel">RelVisitor</a>&nbsp;visitor,
<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;p)</code></th>
<td class="colLast">
<div class="block">Sets a <a href="../rel/RelVisitor.html" title="class in org.apache.calcite.rel"><code>RelVisitor</code></a> going on a given relational expression, and
returns the result.</div>
</td>
</tr>
<tr id="i70" class="altColor">
<td class="colFirst"><code>static void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#inferViewPredicates(java.util.Map,java.util.List,org.apache.calcite.rex.RexNode)">inferViewPredicates</a></span>&#8203;(java.util.Map&lt;java.lang.Integer,&#8203;<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;projectMap,
java.util.List&lt;<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;filters,
<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;constraint)</code></th>
<td class="colLast">
<div class="block">Decomposes the WHERE clause of a view into predicates that constraint
a column to a particular value.</div>
</td>
</tr>
<tr id="i71" class="rowColor">
<td class="colFirst"><code>static <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="#isDistinctFrom(org.apache.calcite.rex.RexBuilder,org.apache.calcite.rex.RexNode,org.apache.calcite.rex.RexNode,boolean)">isDistinctFrom</a></span>&#8203;(<a href="../rex/RexBuilder.html" title="class in org.apache.calcite.rex">RexBuilder</a>&nbsp;rexBuilder,
<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;x,
<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;y,
boolean&nbsp;neg)</code></th>
<td class="colLast">
<div class="block">Returns a translation of the <code>IS DISTINCT FROM</code> (or <code>IS
NOT DISTINCT FROM</code>) sql operator.</div>
</td>
</tr>
<tr id="i72" class="altColor">
<td class="colFirst"><code>private static <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="#isDistinctFromInternal(org.apache.calcite.rex.RexBuilder,org.apache.calcite.rex.RexNode,org.apache.calcite.rex.RexNode,boolean)">isDistinctFromInternal</a></span>&#8203;(<a href="../rex/RexBuilder.html" title="class in org.apache.calcite.rex">RexBuilder</a>&nbsp;rexBuilder,
<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;x,
<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;y,
boolean&nbsp;neg)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i73" class="rowColor">
<td class="colFirst"><code>static boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isEqui(org.apache.calcite.rel.RelNode,org.apache.calcite.rel.RelNode,org.apache.calcite.rex.RexNode)">isEqui</a></span>&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;left,
<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;right,
<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;condition)</code></th>
<td class="colLast">
<div class="block"><span class="deprecatedLabel">Deprecated.</span></div>
</td>
</tr>
<tr id="i74" class="altColor">
<td class="colFirst"><code>static boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isLimit(org.apache.calcite.rel.RelNode)">isLimit</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">Whether this node contains a limit specification.</div>
</td>
</tr>
<tr id="i75" class="rowColor">
<td class="colFirst"><code>static boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isOrder(org.apache.calcite.rel.RelNode)">isOrder</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">Whether this node contains a sort specification.</div>
</td>
</tr>
<tr id="i76" class="altColor">
<td class="colFirst"><code>static boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isPureLimit(org.apache.calcite.rel.RelNode)">isPureLimit</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">Whether this node is a limit without sort specification.</div>
</td>
</tr>
<tr id="i77" class="rowColor">
<td class="colFirst"><code>static boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isPureOrder(org.apache.calcite.rel.RelNode)">isPureOrder</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">Whether this node is a sort without limit specification.</div>
</td>
</tr>
<tr id="i78" class="altColor">
<td class="colFirst"><code>static boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#notContainsCorrelation(org.apache.calcite.rel.RelNode,org.apache.calcite.rel.core.CorrelationId,org.apache.calcite.util.Litmus)">notContainsCorrelation</a></span>&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;r,
<a href="../rel/core/CorrelationId.html" title="class in org.apache.calcite.rel.core">CorrelationId</a>&nbsp;correlationId,
<a href="../util/Litmus.html" title="interface in org.apache.calcite.util">Litmus</a>&nbsp;litmus)</code></th>
<td class="colLast">
<div class="block">Returns true, and calls <a href="../util/Litmus.html#succeed()"><code>Litmus.succeed()</code></a> if a given relational
expression does not contain a given correlation.</div>
</td>
</tr>
<tr id="i79" class="rowColor">
<td class="colFirst"><code>static <a href="../sql/SqlOperator.html" title="class in org.apache.calcite.sql">SqlOperator</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#op(org.apache.calcite.sql.SqlKind,org.apache.calcite.sql.SqlOperator)">op</a></span>&#8203;(<a href="../sql/SqlKind.html" title="enum in org.apache.calcite.sql">SqlKind</a>&nbsp;kind,
<a href="../sql/SqlOperator.html" title="class in org.apache.calcite.sql">SqlOperator</a>&nbsp;operator)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i80" class="altColor">
<td class="colFirst"><code>static <a href="../util/mapping/Mappings.TargetMapping.html" title="interface in org.apache.calcite.util.mapping">Mappings.TargetMapping</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#permutation(java.util.List,org.apache.calcite.rel.type.RelDataType)">permutation</a></span>&#8203;(java.util.List&lt;<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;nodes,
<a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;inputRowType)</code></th>
<td class="colLast">
<div class="block">Returns a permutation describing where output fields come from.</div>
</td>
</tr>
<tr id="i81" class="rowColor">
<td class="colFirst"><code>static <a href="../util/mapping/Mappings.TargetMapping.html" title="interface in org.apache.calcite.util.mapping">Mappings.TargetMapping</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#permutationIgnoreCast(java.util.List,org.apache.calcite.rel.type.RelDataType)">permutationIgnoreCast</a></span>&#8203;(java.util.List&lt;<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;nodes,
<a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;inputRowType)</code></th>
<td class="colLast">
<div class="block">Returns a permutation describing where output fields come from.</div>
</td>
</tr>
<tr id="i82" 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="#permute(org.apache.calcite.rel.RelNode,org.apache.calcite.util.Permutation,java.util.List)">permute</a></span>&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;rel,
<a href="../util/Permutation.html" title="class in org.apache.calcite.util">Permutation</a>&nbsp;permutation,
java.util.List&lt;java.lang.String&gt;&nbsp;fieldNames)</code></th>
<td class="colLast">
<div class="block">Creates a relational expression which permutes the output fields of a
relational expression according to a permutation.</div>
</td>
</tr>
<tr id="i83" class="rowColor">
<td class="colFirst"><code>static <a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#permute(org.apache.calcite.rel.type.RelDataTypeFactory,org.apache.calcite.rel.type.RelDataType,org.apache.calcite.util.mapping.Mapping)">permute</a></span>&#8203;(<a href="../rel/type/RelDataTypeFactory.html" title="interface in org.apache.calcite.rel.type">RelDataTypeFactory</a>&nbsp;typeFactory,
<a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;rowType,
<a href="../util/mapping/Mapping.html" title="interface in org.apache.calcite.util.mapping">Mapping</a>&nbsp;mapping)</code></th>
<td class="colLast">
<div class="block">Permutes a record type according to a mapping.</div>
</td>
</tr>
<tr id="i84" class="altColor">
<td class="colFirst"><code>static void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#projectJoinInputs(org.apache.calcite.rel.RelNode%5B%5D,java.util.List,java.util.List,int,java.util.List,java.util.List,java.util.List)">projectJoinInputs</a></span>&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>[]&nbsp;inputRels,
java.util.List&lt;<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;leftJoinKeys,
java.util.List&lt;<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;rightJoinKeys,
int&nbsp;systemColCount,
java.util.List&lt;java.lang.Integer&gt;&nbsp;leftKeys,
java.util.List&lt;java.lang.Integer&gt;&nbsp;rightKeys,
java.util.List&lt;java.lang.Integer&gt;&nbsp;outputProj)</code></th>
<td class="colLast">
<div class="block"><span class="deprecatedLabel">Deprecated.</span></div>
</td>
</tr>
<tr id="i85" 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="#projectMapping(org.apache.calcite.rel.RelNode,org.apache.calcite.util.mapping.Mapping,java.util.List,org.apache.calcite.rel.core.RelFactories.ProjectFactory)">projectMapping</a></span>&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;rel,
<a href="../util/mapping/Mapping.html" title="interface in org.apache.calcite.util.mapping">Mapping</a>&nbsp;mapping,
java.util.List&lt;java.lang.String&gt;&nbsp;fieldNames,
<a href="../rel/core/RelFactories.ProjectFactory.html" title="interface in org.apache.calcite.rel.core">RelFactories.ProjectFactory</a>&nbsp;projectFactory)</code></th>
<td class="colLast">
<div class="block"><span class="deprecatedLabel">Deprecated.</span></div>
</td>
</tr>
<tr id="i86" class="altColor">
<td class="colFirst"><code>static <a href="../rel/rules/MultiJoin.html" title="class in org.apache.calcite.rel.rules">MultiJoin</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#projectMultiJoin(org.apache.calcite.rel.rules.MultiJoin,org.apache.calcite.rel.core.Project)">projectMultiJoin</a></span>&#8203;(<a href="../rel/rules/MultiJoin.html" title="class in org.apache.calcite.rel.rules">MultiJoin</a>&nbsp;multiJoin,
<a href="../rel/core/Project.html" title="class in org.apache.calcite.rel.core">Project</a>&nbsp;project)</code></th>
<td class="colLast">
<div class="block">Creates a new <a href="../rel/rules/MultiJoin.html" title="class in org.apache.calcite.rel.rules"><code>MultiJoin</code></a> to reflect
projection references from a
<a href="../rel/core/Project.html" title="class in org.apache.calcite.rel.core"><code>Project</code></a> that is on top of the
<a href="../rel/rules/MultiJoin.html" title="class in org.apache.calcite.rel.rules"><code>MultiJoin</code></a>.</div>
</td>
</tr>
<tr id="i87" class="rowColor">
<td class="colFirst"><code>private static <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="#pushDownEqualJoinConditions(org.apache.calcite.rex.RexNode,int,int,java.util.List,java.util.List,org.apache.calcite.rex.RexBuilder)">pushDownEqualJoinConditions</a></span>&#8203;(<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;condition,
int&nbsp;leftCount,
int&nbsp;rightCount,
java.util.List&lt;<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;extraLeftExprs,
java.util.List&lt;<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;extraRightExprs,
<a href="../rex/RexBuilder.html" title="class in org.apache.calcite.rex">RexBuilder</a>&nbsp;builder)</code></th>
<td class="colLast">
<div class="block">Pushes down parts of a join condition.</div>
</td>
</tr>
<tr id="i88" 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="#pushDownJoinConditions(org.apache.calcite.rel.core.Join)">pushDownJoinConditions</a></span>&#8203;(<a href="../rel/core/Join.html" title="class in org.apache.calcite.rel.core">Join</a>&nbsp;originalJoin)</code></th>
<td class="colLast">
<div class="block"><span class="deprecatedLabel">Deprecated.</span></div>
</td>
</tr>
<tr id="i89" 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="#pushDownJoinConditions(org.apache.calcite.rel.core.Join,org.apache.calcite.rel.core.RelFactories.ProjectFactory)">pushDownJoinConditions</a></span>&#8203;(<a href="../rel/core/Join.html" title="class in org.apache.calcite.rel.core">Join</a>&nbsp;originalJoin,
<a href="../rel/core/RelFactories.ProjectFactory.html" title="interface in org.apache.calcite.rel.core">RelFactories.ProjectFactory</a>&nbsp;projectFactory)</code></th>
<td class="colLast">
<div class="block"><span class="deprecatedLabel">Deprecated.</span></div>
</td>
</tr>
<tr id="i90" 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="#pushDownJoinConditions(org.apache.calcite.rel.core.Join,org.apache.calcite.tools.RelBuilder)">pushDownJoinConditions</a></span>&#8203;(<a href="../rel/core/Join.html" title="class in org.apache.calcite.rel.core">Join</a>&nbsp;originalJoin,
<a href="../tools/RelBuilder.html" title="class in org.apache.calcite.tools">RelBuilder</a>&nbsp;relBuilder)</code></th>
<td class="colLast">
<div class="block">Pushes down expressions in "equal" join condition.</div>
</td>
</tr>
<tr id="i91" class="rowColor">
<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="#pushDownJoinConditions(org.apache.calcite.rel.core.Join,org.apache.calcite.tools.RelBuilderFactory)">pushDownJoinConditions</a></span>&#8203;(<a href="../rel/core/Join.html" title="class in org.apache.calcite.rel.core">Join</a>&nbsp;originalJoin,
<a href="../tools/RelBuilderFactory.html" title="interface in org.apache.calcite.tools">RelBuilderFactory</a>&nbsp;relBuilderFactory)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i92" class="altColor">
<td class="colFirst"><code>static <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="#pushFilterPastProject(org.apache.calcite.rex.RexNode,org.apache.calcite.rel.core.Project)">pushFilterPastProject</a></span>&#8203;(<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;filter,
<a href="../rel/core/Project.html" title="class in org.apache.calcite.rel.core">Project</a>&nbsp;projRel)</code></th>
<td class="colLast">
<div class="block"><span class="deprecatedLabel">Deprecated.</span></div>
</td>
</tr>
<tr id="i93" class="rowColor">
<td class="colFirst"><code>static java.util.List&lt;<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#pushPastProject(java.util.List,org.apache.calcite.rel.core.Project)">pushPastProject</a></span>&#8203;(java.util.List&lt;? extends <a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;nodes,
<a href="../rel/core/Project.html" title="class in org.apache.calcite.rel.core">Project</a>&nbsp;project)</code></th>
<td class="colLast">
<div class="block">Converts a list of expressions that are based on the output fields of a
<a href="../rel/core/Project.html" title="class in org.apache.calcite.rel.core"><code>Project</code></a> to equivalent expressions on the Project's
input fields.</div>
</td>
</tr>
<tr id="i94" class="altColor">
<td class="colFirst"><code>static <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="#pushPastProject(org.apache.calcite.rex.RexNode,org.apache.calcite.rel.core.Project)">pushPastProject</a></span>&#8203;(<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;node,
<a href="../rel/core/Project.html" title="class in org.apache.calcite.rel.core">Project</a>&nbsp;project)</code></th>
<td class="colLast">
<div class="block">Converts an expression that is based on the output fields of a
<a href="../rel/core/Project.html" title="class in org.apache.calcite.rel.core"><code>Project</code></a> to an equivalent expression on the Project's
input fields.</div>
</td>
</tr>
<tr id="i95" class="rowColor">
<td class="colFirst"><code>private static <a href="../rex/RexShuttle.html" title="class in org.apache.calcite.rex">RexShuttle</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#pushShuttle(org.apache.calcite.rel.core.Project)">pushShuttle</a></span>&#8203;(<a href="../rel/core/Project.html" title="class in org.apache.calcite.rel.core">Project</a>&nbsp;project)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i96" class="altColor">
<td class="colFirst"><code>static void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#registerAbstractRelationalRules(org.apache.calcite.plan.RelOptPlanner)">registerAbstractRelationalRules</a></span>&#8203;(<a href="RelOptPlanner.html" title="interface in org.apache.calcite.plan">RelOptPlanner</a>&nbsp;planner)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i97" class="rowColor">
<td class="colFirst"><code>static void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#registerAbstractRels(org.apache.calcite.plan.RelOptPlanner)">registerAbstractRels</a></span>&#8203;(<a href="RelOptPlanner.html" title="interface in org.apache.calcite.plan">RelOptPlanner</a>&nbsp;planner)</code></th>
<td class="colLast">
<div class="block"><span class="deprecatedLabel">Deprecated.</span></div>
</td>
</tr>
<tr id="i98" class="altColor">
<td class="colFirst"><code>static void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#registerAbstractRules(org.apache.calcite.plan.RelOptPlanner)">registerAbstractRules</a></span>&#8203;(<a href="RelOptPlanner.html" title="interface in org.apache.calcite.plan">RelOptPlanner</a>&nbsp;planner)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i99" class="rowColor">
<td class="colFirst"><code>private static void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#registerBaseRules(org.apache.calcite.plan.RelOptPlanner)">registerBaseRules</a></span>&#8203;(<a href="RelOptPlanner.html" title="interface in org.apache.calcite.plan">RelOptPlanner</a>&nbsp;planner)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i100" class="altColor">
<td class="colFirst"><code>private static void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#registerCalcRules(org.apache.calcite.plan.RelOptPlanner)">registerCalcRules</a></span>&#8203;(<a href="RelOptPlanner.html" title="interface in org.apache.calcite.plan">RelOptPlanner</a>&nbsp;planner)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i101" class="rowColor">
<td class="colFirst"><code>static void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#registerDefaultRules(org.apache.calcite.plan.RelOptPlanner,boolean,boolean)">registerDefaultRules</a></span>&#8203;(<a href="RelOptPlanner.html" title="interface in org.apache.calcite.plan">RelOptPlanner</a>&nbsp;planner,
boolean&nbsp;enableMaterialziations,
boolean&nbsp;enableBindable)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i102" class="altColor">
<td class="colFirst"><code>private static void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#registerEnumerableRules(org.apache.calcite.plan.RelOptPlanner)">registerEnumerableRules</a></span>&#8203;(<a href="RelOptPlanner.html" title="interface in org.apache.calcite.plan">RelOptPlanner</a>&nbsp;planner)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i103" class="rowColor">
<td class="colFirst"><code>private static void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#registerMaterializationRules(org.apache.calcite.plan.RelOptPlanner)">registerMaterializationRules</a></span>&#8203;(<a href="RelOptPlanner.html" title="interface in org.apache.calcite.plan">RelOptPlanner</a>&nbsp;planner)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i104" class="altColor">
<td class="colFirst"><code>private static void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#registerReductionRules(org.apache.calcite.plan.RelOptPlanner)">registerReductionRules</a></span>&#8203;(<a href="RelOptPlanner.html" title="interface in org.apache.calcite.plan">RelOptPlanner</a>&nbsp;planner)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i105" 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="#renameIfNecessary(org.apache.calcite.rel.RelNode,org.apache.calcite.rel.type.RelDataType)">renameIfNecessary</a></span>&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;rel,
<a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;desiredRowType)</code></th>
<td class="colLast">
<div class="block"><span class="deprecatedLabel">Deprecated.</span></div>
</td>
</tr>
<tr id="i106" 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="#replace(org.apache.calcite.rel.RelNode,org.apache.calcite.rel.RelNode,org.apache.calcite.rel.RelNode)">replace</a></span>&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;query,
<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;find,
<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;replace)</code></th>
<td class="colLast">
<div class="block">Within a relational expression <code>query</code>, replaces occurrences of
<code>find</code> with <code>replace</code>.</div>
</td>
</tr>
<tr id="i107" 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="#replaceInput(org.apache.calcite.rel.RelNode,int,org.apache.calcite.rel.RelNode)">replaceInput</a></span>&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;parent,
int&nbsp;ordinal,
<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;newInput)</code></th>
<td class="colLast">
<div class="block">Returns a shallow copy of a relational expression with a particular
input replaced.</div>
</td>
</tr>
<tr id="i108" 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="#replaceRecurse(org.apache.calcite.rel.RelNode,org.apache.calcite.rel.RelNode,org.apache.calcite.rel.RelNode)">replaceRecurse</a></span>&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;query,
<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;find,
<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;replace)</code></th>
<td class="colLast">
<div class="block">Helper for <a href="#replace(org.apache.calcite.rel.RelNode,org.apache.calcite.rel.RelNode,org.apache.calcite.rel.RelNode)"><code>replace(org.apache.calcite.rel.RelNode, org.apache.calcite.rel.RelNode, org.apache.calcite.rel.RelNode)</code></a>.</div>
</td>
</tr>
<tr id="i109" class="rowColor">
<td class="colFirst"><code>private static <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="#shiftFilter(int,int,int,org.apache.calcite.rex.RexBuilder,java.util.List,int,java.util.List,org.apache.calcite.rex.RexNode)">shiftFilter</a></span>&#8203;(int&nbsp;start,
int&nbsp;end,
int&nbsp;offset,
<a href="../rex/RexBuilder.html" title="class in org.apache.calcite.rex">RexBuilder</a>&nbsp;rexBuilder,
java.util.List&lt;<a href="../rel/type/RelDataTypeField.html" title="interface in org.apache.calcite.rel.type">RelDataTypeField</a>&gt;&nbsp;joinFields,
int&nbsp;nTotalFields,
java.util.List&lt;<a href="../rel/type/RelDataTypeField.html" title="interface in org.apache.calcite.rel.type">RelDataTypeField</a>&gt;&nbsp;rightFields,
<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;filter)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i110" class="altColor">
<td class="colFirst"><code>static <a href="../rel/core/JoinRelType.html" title="enum in org.apache.calcite.rel.core">JoinRelType</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#simplifyJoin(org.apache.calcite.rel.RelNode,com.google.common.collect.ImmutableList,org.apache.calcite.rel.core.JoinRelType)">simplifyJoin</a></span>&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;joinRel,
com.google.common.collect.ImmutableList&lt;<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;aboveFilters,
<a href="../rel/core/JoinRelType.html" title="enum in org.apache.calcite.rel.core">JoinRelType</a>&nbsp;joinType)</code></th>
<td class="colLast">
<div class="block">Simplifies outer joins if filter above would reject nulls.</div>
</td>
</tr>
<tr id="i111" class="rowColor">
<td class="colFirst"><code>static <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="#splitCorrelatedFilterCondition(org.apache.calcite.rel.core.Filter,java.util.List,java.util.List,boolean)">splitCorrelatedFilterCondition</a></span>&#8203;(<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/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;joinKeys,
java.util.List&lt;<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;correlatedJoinKeys,
boolean&nbsp;extractCorrelatedFieldAccess)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i112" class="altColor">
<td class="colFirst"><code>private static void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#splitCorrelatedFilterCondition(org.apache.calcite.rel.core.Filter,org.apache.calcite.rex.RexNode,java.util.List,java.util.List,java.util.List,boolean)">splitCorrelatedFilterCondition</a></span>&#8203;(<a href="../rel/core/Filter.html" title="class in org.apache.calcite.rel.core">Filter</a>&nbsp;filter,
<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;condition,
java.util.List&lt;<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;joinKeys,
java.util.List&lt;<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;correlatedJoinKeys,
java.util.List&lt;<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;nonEquiList,
boolean&nbsp;extractCorrelatedFieldAccess)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i113" class="rowColor">
<td class="colFirst"><code>static <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="#splitCorrelatedFilterCondition(org.apache.calcite.rel.logical.LogicalFilter,java.util.List,java.util.List)">splitCorrelatedFilterCondition</a></span>&#8203;(<a href="../rel/logical/LogicalFilter.html" title="class in org.apache.calcite.rel.logical">LogicalFilter</a>&nbsp;filter,
java.util.List&lt;<a href="../rex/RexInputRef.html" title="class in org.apache.calcite.rex">RexInputRef</a>&gt;&nbsp;joinKeys,
java.util.List&lt;<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;correlatedJoinKeys)</code></th>
<td class="colLast">
<div class="block"><span class="deprecatedLabel">Deprecated.</span></div>
</td>
</tr>
<tr id="i114" class="altColor">
<td class="colFirst"><code>static <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="#splitCorrelatedFilterCondition(org.apache.calcite.rel.logical.LogicalFilter,java.util.List,java.util.List,boolean)">splitCorrelatedFilterCondition</a></span>&#8203;(<a href="../rel/logical/LogicalFilter.html" title="class in org.apache.calcite.rel.logical">LogicalFilter</a>&nbsp;filter,
java.util.List&lt;<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;joinKeys,
java.util.List&lt;<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;correlatedJoinKeys,
boolean&nbsp;extractCorrelatedFieldAccess)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i115" class="rowColor">
<td class="colFirst"><code>private static void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#splitCorrelatedFilterCondition(org.apache.calcite.rel.logical.LogicalFilter,org.apache.calcite.rex.RexNode,java.util.List,java.util.List,java.util.List)">splitCorrelatedFilterCondition</a></span>&#8203;(<a href="../rel/logical/LogicalFilter.html" title="class in org.apache.calcite.rel.logical">LogicalFilter</a>&nbsp;filter,
<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;condition,
java.util.List&lt;<a href="../rex/RexInputRef.html" title="class in org.apache.calcite.rex">RexInputRef</a>&gt;&nbsp;joinKeys,
java.util.List&lt;<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;correlatedJoinKeys,
java.util.List&lt;<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;nonEquiList)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i116" class="altColor">
<td class="colFirst"><code>private static void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#splitCorrelatedFilterCondition(org.apache.calcite.rel.logical.LogicalFilter,org.apache.calcite.rex.RexNode,java.util.List,java.util.List,java.util.List,boolean)">splitCorrelatedFilterCondition</a></span>&#8203;(<a href="../rel/logical/LogicalFilter.html" title="class in org.apache.calcite.rel.logical">LogicalFilter</a>&nbsp;filter,
<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;condition,
java.util.List&lt;<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;joinKeys,
java.util.List&lt;<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;correlatedJoinKeys,
java.util.List&lt;<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;nonEquiList,
boolean&nbsp;extractCorrelatedFieldAccess)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i117" class="rowColor">
<td class="colFirst"><code>static void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#splitFilters(org.apache.calcite.util.ImmutableBitSet,org.apache.calcite.rex.RexNode,java.util.List,java.util.List)">splitFilters</a></span>&#8203;(<a href="../util/ImmutableBitSet.html" title="class in org.apache.calcite.util">ImmutableBitSet</a>&nbsp;childBitmap,
<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;predicate,
java.util.List&lt;<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;pushable,
java.util.List&lt;<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;notPushable)</code></th>
<td class="colLast">
<div class="block">Splits a filter into two lists, depending on whether or not the filter
only references its child input</div>
</td>
</tr>
<tr id="i118" class="altColor">
<td class="colFirst"><code>static <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="#splitJoinCondition(java.util.List,java.util.List,org.apache.calcite.rex.RexNode,java.util.List,java.util.List,java.util.List)">splitJoinCondition</a></span>&#8203;(java.util.List&lt;<a href="../rel/type/RelDataTypeField.html" title="interface in org.apache.calcite.rel.type">RelDataTypeField</a>&gt;&nbsp;sysFieldList,
java.util.List&lt;<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&gt;&nbsp;inputs,
<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;condition,
java.util.List&lt;java.util.List&lt;<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&gt;&nbsp;joinKeys,
java.util.List&lt;java.lang.Integer&gt;&nbsp;filterNulls,
java.util.List&lt;<a href="../sql/SqlOperator.html" title="class in org.apache.calcite.sql">SqlOperator</a>&gt;&nbsp;rangeOp)</code></th>
<td class="colLast">
<div class="block">Splits out the equi-join (and optionally, a single non-equi) components
of a join condition, and returns what's left.</div>
</td>
</tr>
<tr id="i119" class="rowColor">
<td class="colFirst"><code>private static void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#splitJoinCondition(java.util.List,java.util.List,org.apache.calcite.rex.RexNode,java.util.List,java.util.List,java.util.List,java.util.List)">splitJoinCondition</a></span>&#8203;(java.util.List&lt;<a href="../rel/type/RelDataTypeField.html" title="interface in org.apache.calcite.rel.type">RelDataTypeField</a>&gt;&nbsp;sysFieldList,
java.util.List&lt;<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&gt;&nbsp;inputs,
<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;condition,
java.util.List&lt;java.util.List&lt;<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&gt;&nbsp;joinKeys,
java.util.List&lt;java.lang.Integer&gt;&nbsp;filterNulls,
java.util.List&lt;<a href="../sql/SqlOperator.html" title="class in org.apache.calcite.sql">SqlOperator</a>&gt;&nbsp;rangeOp,
java.util.List&lt;<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;nonEquiList)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i120" class="altColor">
<td class="colFirst"><code>static <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="#splitJoinCondition(java.util.List,org.apache.calcite.rel.RelNode,org.apache.calcite.rel.RelNode,org.apache.calcite.rex.RexNode,java.util.List,java.util.List,java.util.List,java.util.List)">splitJoinCondition</a></span>&#8203;(java.util.List&lt;<a href="../rel/type/RelDataTypeField.html" title="interface in org.apache.calcite.rel.type">RelDataTypeField</a>&gt;&nbsp;sysFieldList,
<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;leftRel,
<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;rightRel,
<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;condition,
java.util.List&lt;<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;leftJoinKeys,
java.util.List&lt;<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;rightJoinKeys,
java.util.List&lt;java.lang.Integer&gt;&nbsp;filterNulls,
java.util.List&lt;<a href="../sql/SqlOperator.html" title="class in org.apache.calcite.sql">SqlOperator</a>&gt;&nbsp;rangeOp)</code></th>
<td class="colLast">
<div class="block">Splits out the equi-join (and optionally, a single non-equi) components
of a join condition, and returns what's left.</div>
</td>
</tr>
<tr id="i121" class="rowColor">
<td class="colFirst"><code>static <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="#splitJoinCondition(org.apache.calcite.rel.RelNode,org.apache.calcite.rel.RelNode,org.apache.calcite.rex.RexNode,java.util.List,java.util.List,java.util.List)">splitJoinCondition</a></span>&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;left,
<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;right,
<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;condition,
java.util.List&lt;java.lang.Integer&gt;&nbsp;leftKeys,
java.util.List&lt;java.lang.Integer&gt;&nbsp;rightKeys,
java.util.List&lt;java.lang.Boolean&gt;&nbsp;filterNulls)</code></th>
<td class="colLast">
<div class="block">Splits out the equi-join components of a join condition, and returns
what's left.</div>
</td>
</tr>
<tr id="i122" class="altColor">
<td class="colFirst"><code>static void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#splitJoinCondition(org.apache.calcite.rel.RelNode,org.apache.calcite.rel.RelNode,org.apache.calcite.rex.RexNode,java.util.List,java.util.List,java.util.List,java.util.List)">splitJoinCondition</a></span>&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;left,
<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;right,
<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;condition,
java.util.List&lt;java.lang.Integer&gt;&nbsp;leftKeys,
java.util.List&lt;java.lang.Integer&gt;&nbsp;rightKeys,
java.util.List&lt;java.lang.Boolean&gt;&nbsp;filterNulls,
java.util.List&lt;<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;nonEquiList)</code></th>
<td class="colLast">
<div class="block">As
<a href="#splitJoinCondition(org.apache.calcite.rel.RelNode,org.apache.calcite.rel.RelNode,org.apache.calcite.rex.RexNode,java.util.List,java.util.List,java.util.List)"><code>splitJoinCondition(RelNode, RelNode, RexNode, List, List, List)</code></a>,
but writes non-equi conditions to a conjunctive list.</div>
</td>
</tr>
<tr id="i123" class="rowColor">
<td class="colFirst"><code>private static void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#splitJoinCondition(org.apache.calcite.rex.RexBuilder,int,org.apache.calcite.rex.RexNode,java.util.List,java.util.List,java.util.List,java.util.List)">splitJoinCondition</a></span>&#8203;(<a href="../rex/RexBuilder.html" title="class in org.apache.calcite.rex">RexBuilder</a>&nbsp;rexBuilder,
int&nbsp;leftFieldCount,
<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;condition,
java.util.List&lt;java.lang.Integer&gt;&nbsp;leftKeys,
java.util.List&lt;java.lang.Integer&gt;&nbsp;rightKeys,
java.util.List&lt;java.lang.Boolean&gt;&nbsp;filterNulls,
java.util.List&lt;<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;nonEquiList)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i124" class="altColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#toString(org.apache.calcite.rel.RelNode)">toString</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">Converts a relational expression to a string, showing just basic
attributes.</div>
</td>
</tr>
<tr id="i125" class="rowColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#toString(org.apache.calcite.rel.RelNode,org.apache.calcite.sql.SqlExplainLevel)">toString</a></span>&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;rel,
<a href="../sql/SqlExplainLevel.html" title="enum in org.apache.calcite.sql">SqlExplainLevel</a>&nbsp;detailLevel)</code></th>
<td class="colLast">
<div class="block">Converts a relational expression to a string.</div>
</td>
</tr>
<tr id="i126" class="altColor">
<td class="colFirst"><code>static void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#validateValueAgainstConstraint(org.apache.calcite.sql.SqlNode,org.apache.calcite.rex.RexNode,java.util.function.Supplier)">validateValueAgainstConstraint</a></span>&#8203;(<a href="../sql/SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;sourceValue,
<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;targetConstraint,
java.util.function.Supplier&lt;<a href="../runtime/CalciteContextException.html" title="class in org.apache.calcite.runtime">CalciteContextException</a>&gt;&nbsp;errorSupplier)</code></th>
<td class="colLast">
<div class="block">Ensures that a source value does not violate the constraint of the target
column.</div>
</td>
</tr>
<tr id="i127" class="rowColor">
<td class="colFirst"><code>static void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#verifyTypeEquivalence(org.apache.calcite.rel.RelNode,org.apache.calcite.rel.RelNode,java.lang.Object)">verifyTypeEquivalence</a></span>&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;originalRel,
<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;newRel,
java.lang.Object&nbsp;equivalenceClass)</code></th>
<td class="colLast">
<div class="block">Verifies that a row type being added to an equivalence class matches the
existing type, raising an assertion if this is not the case.</div>
</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="B">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>B</h4>
<pre>static final&nbsp;boolean B</pre>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../constant-values.html#org.apache.calcite.plan.RelOptUtil.B">Constant Field Values</a></dd>
</dl>
</li>
</ul>
<a id="EPSILON">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>EPSILON</h4>
<pre>public static final&nbsp;double EPSILON</pre>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../constant-values.html#org.apache.calcite.plan.RelOptUtil.EPSILON">Constant Field Values</a></dd>
</dl>
</li>
</ul>
<a id="FILTER_PREDICATE">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>FILTER_PREDICATE</h4>
<pre>@Deprecated
public static final&nbsp;com.google.common.base.Predicate&lt;<a href="../rel/core/Filter.html" title="class in org.apache.calcite.rel.core">Filter</a>&gt; FILTER_PREDICATE</pre>
<div class="deprecationBlock"><span class="deprecatedLabel">Deprecated.</span></div>
</li>
</ul>
<a id="PROJECT_PREDICATE">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>PROJECT_PREDICATE</h4>
<pre>@Deprecated
public static final&nbsp;com.google.common.base.Predicate&lt;<a href="../rel/core/Project.html" title="class in org.apache.calcite.rel.core">Project</a>&gt; PROJECT_PREDICATE</pre>
<div class="deprecationBlock"><span class="deprecatedLabel">Deprecated.</span></div>
</li>
</ul>
<a id="CALC_PREDICATE">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>CALC_PREDICATE</h4>
<pre>@Deprecated
public static final&nbsp;com.google.common.base.Predicate&lt;<a href="../rel/core/Calc.html" title="class in org.apache.calcite.rel.core">Calc</a>&gt; CALC_PREDICATE</pre>
<div class="deprecationBlock"><span class="deprecatedLabel">Deprecated.</span></div>
</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;()">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>RelOptUtil</h4>
<pre>public&nbsp;RelOptUtil()</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="isPureLimit(org.apache.calcite.rel.RelNode)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isPureLimit</h4>
<pre class="methodSignature">public static&nbsp;boolean&nbsp;isPureLimit&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;rel)</pre>
<div class="block">Whether this node is a limit without sort specification.</div>
</li>
</ul>
<a id="isPureOrder(org.apache.calcite.rel.RelNode)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isPureOrder</h4>
<pre class="methodSignature">public static&nbsp;boolean&nbsp;isPureOrder&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;rel)</pre>
<div class="block">Whether this node is a sort without limit specification.</div>
</li>
</ul>
<a id="isLimit(org.apache.calcite.rel.RelNode)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isLimit</h4>
<pre class="methodSignature">public static&nbsp;boolean&nbsp;isLimit&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;rel)</pre>
<div class="block">Whether this node contains a limit specification.</div>
</li>
</ul>
<a id="isOrder(org.apache.calcite.rel.RelNode)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isOrder</h4>
<pre class="methodSignature">public static&nbsp;boolean&nbsp;isOrder&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;rel)</pre>
<div class="block">Whether this node contains a sort specification.</div>
</li>
</ul>
<a id="findTables(org.apache.calcite.rel.RelNode)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>findTables</h4>
<pre class="methodSignature">public static&nbsp;java.util.Set&lt;<a href="RelOptTable.html" title="interface in org.apache.calcite.plan">RelOptTable</a>&gt;&nbsp;findTables&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;rel)</pre>
<div class="block">Returns a set of tables used by this expression or its children</div>
</li>
</ul>
<a id="findAllTables(org.apache.calcite.rel.RelNode)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>findAllTables</h4>
<pre class="methodSignature">public static&nbsp;java.util.List&lt;<a href="RelOptTable.html" title="interface in org.apache.calcite.plan">RelOptTable</a>&gt;&nbsp;findAllTables&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;rel)</pre>
<div class="block">Returns a list of all tables used by this expression or its children</div>
</li>
</ul>
<a id="findAllTableQualifiedNames(org.apache.calcite.rel.RelNode)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>findAllTableQualifiedNames</h4>
<pre class="methodSignature">public static&nbsp;java.util.List&lt;java.lang.String&gt;&nbsp;findAllTableQualifiedNames&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;rel)</pre>
<div class="block">Returns a list of all table qualified names used by this expression
or its children.</div>
</li>
</ul>
<a id="getVariablesSet(org.apache.calcite.rel.RelNode)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getVariablesSet</h4>
<pre class="methodSignature">public static&nbsp;java.util.Set&lt;<a href="../rel/core/CorrelationId.html" title="class in org.apache.calcite.rel.core">CorrelationId</a>&gt;&nbsp;getVariablesSet&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;rel)</pre>
<div class="block">Returns a list of variables set by a relational expression or its
descendants.</div>
</li>
</ul>
<a id="getVariablesSetAndUsed(org.apache.calcite.rel.RelNode,org.apache.calcite.rel.RelNode)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getVariablesSetAndUsed</h4>
<pre class="methodSignature">@Deprecated
public static&nbsp;java.util.List&lt;<a href="../rel/core/CorrelationId.html" title="class in org.apache.calcite.rel.core">CorrelationId</a>&gt;&nbsp;getVariablesSetAndUsed&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;rel0,
<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;rel1)</pre>
<div class="deprecationBlock"><span class="deprecatedLabel">Deprecated.</span></div>
</li>
</ul>
<a id="getVariablesUsed(org.apache.calcite.rel.RelNode)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getVariablesUsed</h4>
<pre class="methodSignature">public static&nbsp;java.util.Set&lt;<a href="../rel/core/CorrelationId.html" title="class in org.apache.calcite.rel.core">CorrelationId</a>&gt;&nbsp;getVariablesUsed&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;rel)</pre>
<div class="block">Returns a set of variables used by a relational expression or its
descendants.
<p>The set may contain "duplicates" (variables with different ids that,
when resolved, will reference the same source relational expression).
<p>The item type is the same as
<a href="../rex/RexCorrelVariable.html#id"><code>RexCorrelVariable.id</code></a>.</div>
</li>
</ul>
<a id="correlationColumns(org.apache.calcite.rel.core.CorrelationId,org.apache.calcite.rel.RelNode)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>correlationColumns</h4>
<pre class="methodSignature">public static&nbsp;<a href="../util/ImmutableBitSet.html" title="class in org.apache.calcite.util">ImmutableBitSet</a>&nbsp;correlationColumns&#8203;(<a href="../rel/core/CorrelationId.html" title="class in org.apache.calcite.rel.core">CorrelationId</a>&nbsp;id,
<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;rel)</pre>
<div class="block">Finds which columns of a correlation variable are used within a
relational expression.</div>
</li>
</ul>
<a id="notContainsCorrelation(org.apache.calcite.rel.RelNode,org.apache.calcite.rel.core.CorrelationId,org.apache.calcite.util.Litmus)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>notContainsCorrelation</h4>
<pre class="methodSignature">public static&nbsp;boolean&nbsp;notContainsCorrelation&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;r,
<a href="../rel/core/CorrelationId.html" title="class in org.apache.calcite.rel.core">CorrelationId</a>&nbsp;correlationId,
<a href="../util/Litmus.html" title="interface in org.apache.calcite.util">Litmus</a>&nbsp;litmus)</pre>
<div class="block">Returns true, and calls <a href="../util/Litmus.html#succeed()"><code>Litmus.succeed()</code></a> if a given relational
expression does not contain a given correlation.</div>
</li>
</ul>
<a id="go(org.apache.calcite.rel.RelVisitor,org.apache.calcite.rel.RelNode)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>go</h4>
<pre class="methodSignature">public static&nbsp;void&nbsp;go&#8203;(<a href="../rel/RelVisitor.html" title="class in org.apache.calcite.rel">RelVisitor</a>&nbsp;visitor,
<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;p)</pre>
<div class="block">Sets a <a href="../rel/RelVisitor.html" title="class in org.apache.calcite.rel"><code>RelVisitor</code></a> going on a given relational expression, and
returns the result.</div>
</li>
</ul>
<a id="getFieldTypeList(org.apache.calcite.rel.type.RelDataType)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getFieldTypeList</h4>
<pre class="methodSignature">public static&nbsp;java.util.List&lt;<a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&gt;&nbsp;getFieldTypeList&#8203;(<a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;type)</pre>
<div class="block">Returns a list of the types of the fields in a given struct type. The
list is immutable.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>type</code> - Struct type</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>List of field types</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../rel/type/RelDataType.html#getFieldNames()"><code>RelDataType.getFieldNames()</code></a></dd>
</dl>
</li>
</ul>
<a id="areRowTypesEqual(org.apache.calcite.rel.type.RelDataType,org.apache.calcite.rel.type.RelDataType,boolean)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>areRowTypesEqual</h4>
<pre class="methodSignature">public static&nbsp;boolean&nbsp;areRowTypesEqual&#8203;(<a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;rowType1,
<a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;rowType2,
boolean&nbsp;compareNames)</pre>
</li>
</ul>
<a id="verifyTypeEquivalence(org.apache.calcite.rel.RelNode,org.apache.calcite.rel.RelNode,java.lang.Object)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>verifyTypeEquivalence</h4>
<pre class="methodSignature">public static&nbsp;void&nbsp;verifyTypeEquivalence&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;originalRel,
<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;newRel,
java.lang.Object&nbsp;equivalenceClass)</pre>
<div class="block">Verifies that a row type being added to an equivalence class matches the
existing type, raising an assertion if this is not the case.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>originalRel</code> - canonical rel for equivalence class</dd>
<dd><code>newRel</code> - rel being added to equivalence class</dd>
<dd><code>equivalenceClass</code> - object representing equivalence class</dd>
</dl>
</li>
</ul>
<a id="permutationIgnoreCast(java.util.List,org.apache.calcite.rel.type.RelDataType)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>permutationIgnoreCast</h4>
<pre class="methodSignature">public static&nbsp;<a href="../util/mapping/Mappings.TargetMapping.html" title="interface in org.apache.calcite.util.mapping">Mappings.TargetMapping</a>&nbsp;permutationIgnoreCast&#8203;(java.util.List&lt;<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;nodes,
<a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;inputRowType)</pre>
<div class="block">Returns a permutation describing where output fields come from. In
the returned map, value of <code>map.getTargetOpt(i)</code> is <code>n</code> if
field <code>i</code> projects input field <code>n</code> or applies a cast on
<code>n</code>, -1 if it is another expression.</div>
</li>
</ul>
<a id="permutation(java.util.List,org.apache.calcite.rel.type.RelDataType)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>permutation</h4>
<pre class="methodSignature">public static&nbsp;<a href="../util/mapping/Mappings.TargetMapping.html" title="interface in org.apache.calcite.util.mapping">Mappings.TargetMapping</a>&nbsp;permutation&#8203;(java.util.List&lt;<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;nodes,
<a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;inputRowType)</pre>
<div class="block">Returns a permutation describing where output fields come from. In
the returned map, value of <code>map.getTargetOpt(i)</code> is <code>n</code> if
field <code>i</code> projects input field <code>n</code>, -1 if it is an
expression.</div>
</li>
</ul>
<a id="createExistsPlan(org.apache.calcite.plan.RelOptCluster,org.apache.calcite.rel.RelNode,java.util.List,org.apache.calcite.rex.RexLiteral,java.lang.String)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>createExistsPlan</h4>
<pre class="methodSignature">@Deprecated
public static&nbsp;<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;createExistsPlan&#8203;(<a href="RelOptCluster.html" title="class in org.apache.calcite.plan">RelOptCluster</a>&nbsp;cluster,
<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;seekRel,
java.util.List&lt;<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;conditions,
<a href="../rex/RexLiteral.html" title="class in org.apache.calcite.rex">RexLiteral</a>&nbsp;extraExpr,
java.lang.String&nbsp;extraName)</pre>
<div class="deprecationBlock"><span class="deprecatedLabel">Deprecated.</span></div>
</li>
</ul>
<a id="createExistsPlan(org.apache.calcite.rel.RelNode,org.apache.calcite.plan.RelOptUtil.SubQueryType,org.apache.calcite.plan.RelOptUtil.Logic,boolean)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>createExistsPlan</h4>
<pre class="methodSignature">@Deprecated
public static&nbsp;<a href="RelOptUtil.Exists.html" title="class in org.apache.calcite.plan">RelOptUtil.Exists</a>&nbsp;createExistsPlan&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;seekRel,
<a href="RelOptUtil.SubQueryType.html" title="enum in org.apache.calcite.plan">RelOptUtil.SubQueryType</a>&nbsp;subQueryType,
<a href="RelOptUtil.Logic.html" title="enum in org.apache.calcite.plan">RelOptUtil.Logic</a>&nbsp;logic,
boolean&nbsp;notIn)</pre>
<div class="deprecationBlock"><span class="deprecatedLabel">Deprecated.</span></div>
</li>
</ul>
<a id="createExistsPlan(org.apache.calcite.rel.RelNode,org.apache.calcite.plan.RelOptUtil.SubQueryType,org.apache.calcite.plan.RelOptUtil.Logic,boolean,org.apache.calcite.tools.RelBuilder)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>createExistsPlan</h4>
<pre class="methodSignature">public static&nbsp;<a href="RelOptUtil.Exists.html" title="class in org.apache.calcite.plan">RelOptUtil.Exists</a>&nbsp;createExistsPlan&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;seekRel,
<a href="RelOptUtil.SubQueryType.html" title="enum in org.apache.calcite.plan">RelOptUtil.SubQueryType</a>&nbsp;subQueryType,
<a href="RelOptUtil.Logic.html" title="enum in org.apache.calcite.plan">RelOptUtil.Logic</a>&nbsp;logic,
boolean&nbsp;notIn,
<a href="../tools/RelBuilder.html" title="class in org.apache.calcite.tools">RelBuilder</a>&nbsp;relBuilder)</pre>
<div class="block">Creates a plan suitable for use in <code>EXISTS</code> or <code>IN</code>
statements.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>seekRel</code> - A query rel, for example the resulting rel from 'select *
from emp' or 'values (1,2,3)' or '('Foo', 34)'.</dd>
<dd><code>subQueryType</code> - Sub-query type</dd>
<dd><code>logic</code> - Whether to use 2- or 3-valued boolean logic</dd>
<dd><code>notIn</code> - Whether the operator is NOT IN</dd>
<dd><code>relBuilder</code> - Builder for relational expressions</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>A pair of a relational expression which outer joins a boolean
condition column, and a numeric offset. The offset is 2 if column 0 is
the number of rows and column 1 is the number of rows with not-null keys;
0 otherwise.</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../sql2rel/SqlToRelConverter.html#convertExists(org.apache.calcite.sql.SqlNode,org.apache.calcite.plan.RelOptUtil.SubQueryType,org.apache.calcite.plan.RelOptUtil.Logic,boolean,org.apache.calcite.rel.type.RelDataType)"><code>SqlToRelConverter.convertExists(org.apache.calcite.sql.SqlNode, org.apache.calcite.plan.RelOptUtil.SubQueryType, org.apache.calcite.plan.RelOptUtil.Logic, boolean, org.apache.calcite.rel.type.RelDataType)</code></a></dd>
</dl>
</li>
</ul>
<a id="createRenameRel(org.apache.calcite.rel.type.RelDataType,org.apache.calcite.rel.RelNode)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>createRenameRel</h4>
<pre class="methodSignature">@Deprecated
public static&nbsp;<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;createRenameRel&#8203;(<a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;outputType,
<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;rel)</pre>
<div class="deprecationBlock"><span class="deprecatedLabel">Deprecated.</span></div>
</li>
</ul>
<a id="createFilter(org.apache.calcite.rel.RelNode,org.apache.calcite.rex.RexNode)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>createFilter</h4>
<pre class="methodSignature">@Deprecated
public static&nbsp;<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;createFilter&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;child,
<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;condition)</pre>
<div class="deprecationBlock"><span class="deprecatedLabel">Deprecated.</span></div>
</li>
</ul>
<a id="createFilter(org.apache.calcite.rel.RelNode,org.apache.calcite.rex.RexNode,org.apache.calcite.rel.core.RelFactories.FilterFactory)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>createFilter</h4>
<pre class="methodSignature">@Deprecated
public static&nbsp;<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;createFilter&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;child,
<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;condition,
<a href="../rel/core/RelFactories.FilterFactory.html" title="interface in org.apache.calcite.rel.core">RelFactories.FilterFactory</a>&nbsp;filterFactory)</pre>
<div class="deprecationBlock"><span class="deprecatedLabel">Deprecated.</span></div>
</li>
</ul>
<a id="createFilter(org.apache.calcite.rel.RelNode,java.lang.Iterable)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>createFilter</h4>
<pre class="methodSignature">public static&nbsp;<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;createFilter&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;child,
java.lang.Iterable&lt;? extends <a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;conditions)</pre>
<div class="block">Creates a filter, using the default filter factory,
or returns the original relational expression if the
condition is trivial.</div>
</li>
</ul>
<a id="createFilter(org.apache.calcite.rel.RelNode,java.lang.Iterable,org.apache.calcite.rel.core.RelFactories.FilterFactory)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>createFilter</h4>
<pre class="methodSignature">public static&nbsp;<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;createFilter&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;child,
java.lang.Iterable&lt;? extends <a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;conditions,
<a href="../rel/core/RelFactories.FilterFactory.html" title="interface in org.apache.calcite.rel.core">RelFactories.FilterFactory</a>&nbsp;filterFactory)</pre>
<div class="block">Creates a filter using the default factory,
or returns the original relational expression if the
condition is trivial.</div>
</li>
</ul>
<a id="createNullFilter(org.apache.calcite.rel.RelNode,java.lang.Integer[])">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>createNullFilter</h4>
<pre class="methodSignature">@Deprecated
public static&nbsp;<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;createNullFilter&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;rel,
java.lang.Integer[]&nbsp;fieldOrdinals)</pre>
<div class="deprecationBlock"><span class="deprecatedLabel">Deprecated.</span></div>
</li>
</ul>
<a id="createCastRel(org.apache.calcite.rel.RelNode,org.apache.calcite.rel.type.RelDataType,boolean)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>createCastRel</h4>
<pre class="methodSignature">public static&nbsp;<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;createCastRel&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;rel,
<a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;castRowType,
boolean&nbsp;rename)</pre>
<div class="block">Creates a projection which casts a rel's output to a desired row type.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>rel</code> - producer of rows to be converted</dd>
<dd><code>castRowType</code> - row type after cast</dd>
<dd><code>rename</code> - if true, use field names from castRowType; if false,
preserve field names from rel</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>conversion rel</dd>
</dl>
</li>
</ul>
<a id="createCastRel(org.apache.calcite.rel.RelNode,org.apache.calcite.rel.type.RelDataType,boolean,org.apache.calcite.rel.core.RelFactories.ProjectFactory)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>createCastRel</h4>
<pre class="methodSignature">public static&nbsp;<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;createCastRel&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;rel,
<a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;castRowType,
boolean&nbsp;rename,
<a href="../rel/core/RelFactories.ProjectFactory.html" title="interface in org.apache.calcite.rel.core">RelFactories.ProjectFactory</a>&nbsp;projectFactory)</pre>
<div class="block">Creates a projection which casts a rel's output to a desired row type.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>rel</code> - producer of rows to be converted</dd>
<dd><code>castRowType</code> - row type after cast</dd>
<dd><code>rename</code> - if true, use field names from castRowType; if false,
preserve field names from rel</dd>
<dd><code>projectFactory</code> - Project Factory</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>conversion rel</dd>
</dl>
</li>
</ul>
<a id="getAllFields(org.apache.calcite.rel.core.Aggregate)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getAllFields</h4>
<pre class="methodSignature">public static&nbsp;java.util.Set&lt;java.lang.Integer&gt;&nbsp;getAllFields&#8203;(<a href="../rel/core/Aggregate.html" title="class in org.apache.calcite.rel.core">Aggregate</a>&nbsp;aggregate)</pre>
<div class="block">Gets all fields in an aggregate.</div>
</li>
</ul>
<a id="createSingleValueAggRel(org.apache.calcite.plan.RelOptCluster,org.apache.calcite.rel.RelNode)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>createSingleValueAggRel</h4>
<pre class="methodSignature">public static&nbsp;<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;createSingleValueAggRel&#8203;(<a href="RelOptCluster.html" title="class in org.apache.calcite.plan">RelOptCluster</a>&nbsp;cluster,
<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;rel)</pre>
<div class="block">Creates a LogicalAggregate that removes all duplicates from the result of
an underlying relational expression.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>rel</code> - underlying rel</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>rel implementing SingleValueAgg</dd>
</dl>
</li>
</ul>
<a id="createDistinctRel(org.apache.calcite.rel.RelNode)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>createDistinctRel</h4>
<pre class="methodSignature">@Deprecated
public static&nbsp;<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;createDistinctRel&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;rel)</pre>
<div class="deprecationBlock"><span class="deprecatedLabel">Deprecated.</span>
<div class="deprecationComment">Use <a href="../tools/RelBuilder.html#distinct()"><code>RelBuilder.distinct()</code></a>.</div>
</div>
</li>
</ul>
<a id="analyzeSimpleEquiJoin(org.apache.calcite.rel.logical.LogicalJoin,int[])">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>analyzeSimpleEquiJoin</h4>
<pre class="methodSignature">@Deprecated
public static&nbsp;boolean&nbsp;analyzeSimpleEquiJoin&#8203;(<a href="../rel/logical/LogicalJoin.html" title="class in org.apache.calcite.rel.logical">LogicalJoin</a>&nbsp;join,
int[]&nbsp;joinFieldOrdinals)</pre>
<div class="deprecationBlock"><span class="deprecatedLabel">Deprecated.</span></div>
</li>
</ul>
<a id="splitJoinCondition(org.apache.calcite.rel.RelNode,org.apache.calcite.rel.RelNode,org.apache.calcite.rex.RexNode,java.util.List,java.util.List,java.util.List)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>splitJoinCondition</h4>
<pre class="methodSignature">@Nonnull
public static&nbsp;<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;splitJoinCondition&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;left,
<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;right,
<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;condition,
java.util.List&lt;java.lang.Integer&gt;&nbsp;leftKeys,
java.util.List&lt;java.lang.Integer&gt;&nbsp;rightKeys,
java.util.List&lt;java.lang.Boolean&gt;&nbsp;filterNulls)</pre>
<div class="block">Splits out the equi-join components of a join condition, and returns
what's left. For example, given the condition
<blockquote><code>L.A = R.X AND L.B = L.C AND (L.D = 5 OR L.E =
R.Y)</code></blockquote>
<p>returns
<ul>
<li>leftKeys = {A}
<li>rightKeys = {X}
<li>rest = L.B = L.C AND (L.D = 5 OR L.E = R.Y)</li>
</ul></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>left</code> - left input to join</dd>
<dd><code>right</code> - right input to join</dd>
<dd><code>condition</code> - join condition</dd>
<dd><code>leftKeys</code> - The ordinals of the fields from the left input which are
equi-join keys</dd>
<dd><code>rightKeys</code> - The ordinals of the fields from the right input which
are equi-join keys</dd>
<dd><code>filterNulls</code> - List of boolean values for each join key position
indicating whether the operator filters out nulls or not.
Value is true if the operator is EQUALS and false if the
operator is IS NOT DISTINCT FROM (or an expanded version).
If <code>filterNulls</code> is null, only join conditions
with EQUALS operators are considered equi-join components.
Rest (including IS NOT DISTINCT FROM) are returned in
remaining join condition.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>remaining join filters that are not equijoins; may return a
<a href="../rex/RexLiteral.html" title="class in org.apache.calcite.rex"><code>RexLiteral</code></a> true, but never null</dd>
</dl>
</li>
</ul>
<a id="splitJoinCondition(org.apache.calcite.rel.RelNode,org.apache.calcite.rel.RelNode,org.apache.calcite.rex.RexNode,java.util.List,java.util.List,java.util.List,java.util.List)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>splitJoinCondition</h4>
<pre class="methodSignature">public static&nbsp;void&nbsp;splitJoinCondition&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;left,
<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;right,
<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;condition,
java.util.List&lt;java.lang.Integer&gt;&nbsp;leftKeys,
java.util.List&lt;java.lang.Integer&gt;&nbsp;rightKeys,
java.util.List&lt;java.lang.Boolean&gt;&nbsp;filterNulls,
java.util.List&lt;<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;nonEquiList)</pre>
<div class="block">As
<a href="#splitJoinCondition(org.apache.calcite.rel.RelNode,org.apache.calcite.rel.RelNode,org.apache.calcite.rex.RexNode,java.util.List,java.util.List,java.util.List)"><code>splitJoinCondition(RelNode, RelNode, RexNode, List, List, List)</code></a>,
but writes non-equi conditions to a conjunctive list.</div>
</li>
</ul>
<a id="isEqui(org.apache.calcite.rel.RelNode,org.apache.calcite.rel.RelNode,org.apache.calcite.rex.RexNode)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isEqui</h4>
<pre class="methodSignature">@Deprecated
public static&nbsp;boolean&nbsp;isEqui&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;left,
<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;right,
<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;condition)</pre>
<div class="deprecationBlock"><span class="deprecatedLabel">Deprecated.</span></div>
</li>
</ul>
<a id="splitJoinCondition(java.util.List,org.apache.calcite.rel.RelNode,org.apache.calcite.rel.RelNode,org.apache.calcite.rex.RexNode,java.util.List,java.util.List,java.util.List,java.util.List)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>splitJoinCondition</h4>
<pre class="methodSignature">public static&nbsp;<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;splitJoinCondition&#8203;(java.util.List&lt;<a href="../rel/type/RelDataTypeField.html" title="interface in org.apache.calcite.rel.type">RelDataTypeField</a>&gt;&nbsp;sysFieldList,
<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;leftRel,
<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;rightRel,
<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;condition,
java.util.List&lt;<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;leftJoinKeys,
java.util.List&lt;<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;rightJoinKeys,
java.util.List&lt;java.lang.Integer&gt;&nbsp;filterNulls,
java.util.List&lt;<a href="../sql/SqlOperator.html" title="class in org.apache.calcite.sql">SqlOperator</a>&gt;&nbsp;rangeOp)</pre>
<div class="block">Splits out the equi-join (and optionally, a single non-equi) components
of a join condition, and returns what's left. Projection might be
required by the caller to provide join keys that are not direct field
references.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>sysFieldList</code> - list of system fields</dd>
<dd><code>leftRel</code> - left join input</dd>
<dd><code>rightRel</code> - right join input</dd>
<dd><code>condition</code> - join condition</dd>
<dd><code>leftJoinKeys</code> - The join keys from the left input which are equi-join
keys</dd>
<dd><code>rightJoinKeys</code> - The join keys from the right input which are
equi-join keys</dd>
<dd><code>filterNulls</code> - The join key positions for which null values will not
match. null values only match for the "is not distinct
from" condition.</dd>
<dd><code>rangeOp</code> - if null, only locate equi-joins; otherwise, locate a
single non-equi join predicate and return its operator
in this list; join keys associated with the non-equi
join predicate are at the end of the key lists
returned</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>What's left, never null</dd>
</dl>
</li>
</ul>
<a id="splitJoinCondition(java.util.List,java.util.List,org.apache.calcite.rex.RexNode,java.util.List,java.util.List,java.util.List)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>splitJoinCondition</h4>
<pre class="methodSignature">@Nonnull
public static&nbsp;<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;splitJoinCondition&#8203;(java.util.List&lt;<a href="../rel/type/RelDataTypeField.html" title="interface in org.apache.calcite.rel.type">RelDataTypeField</a>&gt;&nbsp;sysFieldList,
java.util.List&lt;<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&gt;&nbsp;inputs,
<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;condition,
java.util.List&lt;java.util.List&lt;<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&gt;&nbsp;joinKeys,
java.util.List&lt;java.lang.Integer&gt;&nbsp;filterNulls,
java.util.List&lt;<a href="../sql/SqlOperator.html" title="class in org.apache.calcite.sql">SqlOperator</a>&gt;&nbsp;rangeOp)</pre>
<div class="block">Splits out the equi-join (and optionally, a single non-equi) components
of a join condition, and returns what's left. Projection might be
required by the caller to provide join keys that are not direct field
references.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>sysFieldList</code> - list of system fields</dd>
<dd><code>inputs</code> - join inputs</dd>
<dd><code>condition</code> - join condition</dd>
<dd><code>joinKeys</code> - The join keys from the inputs which are equi-join
keys</dd>
<dd><code>filterNulls</code> - The join key positions for which null values will not
match. null values only match for the "is not distinct
from" condition.</dd>
<dd><code>rangeOp</code> - if null, only locate equi-joins; otherwise, locate a
single non-equi join predicate and return its operator
in this list; join keys associated with the non-equi
join predicate are at the end of the key lists
returned</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>What's left, never null</dd>
</dl>
</li>
</ul>
<a id="splitCorrelatedFilterCondition(org.apache.calcite.rel.logical.LogicalFilter,java.util.List,java.util.List)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>splitCorrelatedFilterCondition</h4>
<pre class="methodSignature">@Deprecated
public static&nbsp;<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;splitCorrelatedFilterCondition&#8203;(<a href="../rel/logical/LogicalFilter.html" title="class in org.apache.calcite.rel.logical">LogicalFilter</a>&nbsp;filter,
java.util.List&lt;<a href="../rex/RexInputRef.html" title="class in org.apache.calcite.rex">RexInputRef</a>&gt;&nbsp;joinKeys,
java.util.List&lt;<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;correlatedJoinKeys)</pre>
<div class="deprecationBlock"><span class="deprecatedLabel">Deprecated.</span></div>
</li>
</ul>
<a id="splitCorrelatedFilterCondition(org.apache.calcite.rel.logical.LogicalFilter,java.util.List,java.util.List,boolean)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>splitCorrelatedFilterCondition</h4>
<pre class="methodSignature">public static&nbsp;<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;splitCorrelatedFilterCondition&#8203;(<a href="../rel/logical/LogicalFilter.html" title="class in org.apache.calcite.rel.logical">LogicalFilter</a>&nbsp;filter,
java.util.List&lt;<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;joinKeys,
java.util.List&lt;<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;correlatedJoinKeys,
boolean&nbsp;extractCorrelatedFieldAccess)</pre>
</li>
</ul>
<a id="splitCorrelatedFilterCondition(org.apache.calcite.rel.core.Filter,java.util.List,java.util.List,boolean)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>splitCorrelatedFilterCondition</h4>
<pre class="methodSignature">public static&nbsp;<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;splitCorrelatedFilterCondition&#8203;(<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/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;joinKeys,
java.util.List&lt;<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;correlatedJoinKeys,
boolean&nbsp;extractCorrelatedFieldAccess)</pre>
</li>
</ul>
<a id="splitJoinCondition(java.util.List,java.util.List,org.apache.calcite.rex.RexNode,java.util.List,java.util.List,java.util.List,java.util.List)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>splitJoinCondition</h4>
<pre class="methodSignature">private static&nbsp;void&nbsp;splitJoinCondition&#8203;(java.util.List&lt;<a href="../rel/type/RelDataTypeField.html" title="interface in org.apache.calcite.rel.type">RelDataTypeField</a>&gt;&nbsp;sysFieldList,
java.util.List&lt;<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&gt;&nbsp;inputs,
<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;condition,
java.util.List&lt;java.util.List&lt;<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&gt;&nbsp;joinKeys,
java.util.List&lt;java.lang.Integer&gt;&nbsp;filterNulls,
java.util.List&lt;<a href="../sql/SqlOperator.html" title="class in org.apache.calcite.sql">SqlOperator</a>&gt;&nbsp;rangeOp,
java.util.List&lt;<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;nonEquiList)</pre>
</li>
</ul>
<a id="createEquiJoinCondition(org.apache.calcite.rel.RelNode,java.util.List,org.apache.calcite.rel.RelNode,java.util.List,org.apache.calcite.rex.RexBuilder)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>createEquiJoinCondition</h4>
<pre class="methodSignature">@Nonnull
public static&nbsp;<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;createEquiJoinCondition&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;left,
java.util.List&lt;java.lang.Integer&gt;&nbsp;leftKeys,
<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;right,
java.util.List&lt;java.lang.Integer&gt;&nbsp;rightKeys,
<a href="../rex/RexBuilder.html" title="class in org.apache.calcite.rex">RexBuilder</a>&nbsp;rexBuilder)</pre>
<div class="block">Builds an equi-join condition from a set of left and right keys.</div>
</li>
</ul>
<a id="op(org.apache.calcite.sql.SqlKind,org.apache.calcite.sql.SqlOperator)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>op</h4>
<pre class="methodSignature">public static&nbsp;<a href="../sql/SqlOperator.html" title="class in org.apache.calcite.sql">SqlOperator</a>&nbsp;op&#8203;(<a href="../sql/SqlKind.html" title="enum in org.apache.calcite.sql">SqlKind</a>&nbsp;kind,
<a href="../sql/SqlOperator.html" title="class in org.apache.calcite.sql">SqlOperator</a>&nbsp;operator)</pre>
</li>
</ul>
<a id="addJoinKey(java.util.List,org.apache.calcite.rex.RexNode,boolean)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>addJoinKey</h4>
<pre class="methodSignature">private static&nbsp;void&nbsp;addJoinKey&#8203;(java.util.List&lt;<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;joinKeyList,
<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;key,
boolean&nbsp;preserveLastElementInList)</pre>
</li>
</ul>
<a id="splitCorrelatedFilterCondition(org.apache.calcite.rel.logical.LogicalFilter,org.apache.calcite.rex.RexNode,java.util.List,java.util.List,java.util.List)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>splitCorrelatedFilterCondition</h4>
<pre class="methodSignature">private static&nbsp;void&nbsp;splitCorrelatedFilterCondition&#8203;(<a href="../rel/logical/LogicalFilter.html" title="class in org.apache.calcite.rel.logical">LogicalFilter</a>&nbsp;filter,
<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;condition,
java.util.List&lt;<a href="../rex/RexInputRef.html" title="class in org.apache.calcite.rex">RexInputRef</a>&gt;&nbsp;joinKeys,
java.util.List&lt;<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;correlatedJoinKeys,
java.util.List&lt;<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;nonEquiList)</pre>
</li>
</ul>
<a id="splitCorrelatedFilterCondition(org.apache.calcite.rel.logical.LogicalFilter,org.apache.calcite.rex.RexNode,java.util.List,java.util.List,java.util.List,boolean)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>splitCorrelatedFilterCondition</h4>
<pre class="methodSignature">private static&nbsp;void&nbsp;splitCorrelatedFilterCondition&#8203;(<a href="../rel/logical/LogicalFilter.html" title="class in org.apache.calcite.rel.logical">LogicalFilter</a>&nbsp;filter,
<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;condition,
java.util.List&lt;<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;joinKeys,
java.util.List&lt;<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;correlatedJoinKeys,
java.util.List&lt;<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;nonEquiList,
boolean&nbsp;extractCorrelatedFieldAccess)</pre>
</li>
</ul>
<a id="splitCorrelatedFilterCondition(org.apache.calcite.rel.core.Filter,org.apache.calcite.rex.RexNode,java.util.List,java.util.List,java.util.List,boolean)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>splitCorrelatedFilterCondition</h4>
<pre class="methodSignature">private static&nbsp;void&nbsp;splitCorrelatedFilterCondition&#8203;(<a href="../rel/core/Filter.html" title="class in org.apache.calcite.rel.core">Filter</a>&nbsp;filter,
<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;condition,
java.util.List&lt;<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;joinKeys,
java.util.List&lt;<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;correlatedJoinKeys,
java.util.List&lt;<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;nonEquiList,
boolean&nbsp;extractCorrelatedFieldAccess)</pre>
</li>
</ul>
<a id="splitJoinCondition(org.apache.calcite.rex.RexBuilder,int,org.apache.calcite.rex.RexNode,java.util.List,java.util.List,java.util.List,java.util.List)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>splitJoinCondition</h4>
<pre class="methodSignature">private static&nbsp;void&nbsp;splitJoinCondition&#8203;(<a href="../rex/RexBuilder.html" title="class in org.apache.calcite.rex">RexBuilder</a>&nbsp;rexBuilder,
int&nbsp;leftFieldCount,
<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;condition,
java.util.List&lt;java.lang.Integer&gt;&nbsp;leftKeys,
java.util.List&lt;java.lang.Integer&gt;&nbsp;rightKeys,
java.util.List&lt;java.lang.Boolean&gt;&nbsp;filterNulls,
java.util.List&lt;<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;nonEquiList)</pre>
</li>
</ul>
<a id="collapseExpandedIsNotDistinctFromExpr(org.apache.calcite.rex.RexCall,org.apache.calcite.rex.RexBuilder)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>collapseExpandedIsNotDistinctFromExpr</h4>
<pre class="methodSignature">public static&nbsp;<a href="../rex/RexCall.html" title="class in org.apache.calcite.rex">RexCall</a>&nbsp;collapseExpandedIsNotDistinctFromExpr&#8203;(<a href="../rex/RexCall.html" title="class in org.apache.calcite.rex">RexCall</a>&nbsp;call,
<a href="../rex/RexBuilder.html" title="class in org.apache.calcite.rex">RexBuilder</a>&nbsp;rexBuilder)</pre>
<div class="block">Collapses an expanded version of <code>IS NOT DISTINCT FROM</code> expression.
<p>Helper method for
<a href="#splitJoinCondition(org.apache.calcite.rex.RexBuilder,int,org.apache.calcite.rex.RexNode,java.util.List,java.util.List,java.util.List,java.util.List)"><code>splitJoinCondition(RexBuilder, int, RexNode, List, List, List, List)</code></a>
and
<a href="#splitJoinCondition(java.util.List,java.util.List,org.apache.calcite.rex.RexNode,java.util.List,java.util.List,java.util.List,java.util.List)"><code>splitJoinCondition(List, List, RexNode, List, List, List, List)</code></a>.
<p>If the given expr <code>call</code> is an expanded version of
<code>IS NOT DISTINCT FROM</code> function call, collapses it and return a
<code>IS NOT DISTINCT FROM</code> function call.
<p>For example: <code>t1.key IS NOT DISTINCT FROM t2.key</code>
can rewritten in expanded form as
<code>t1.key = t2.key OR (t1.key IS NULL AND t2.key IS NULL)</code>.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>call</code> - Function expression to try collapsing</dd>
<dd><code>rexBuilder</code> - <a href="../rex/RexBuilder.html" title="class in org.apache.calcite.rex"><code>RexBuilder</code></a> instance to create new <a href="../rex/RexCall.html" title="class in org.apache.calcite.rex"><code>RexCall</code></a> instances.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>If the given function is an expanded IS NOT DISTINCT FROM function call,
return a IS NOT DISTINCT FROM function call. Otherwise return the input
function call as it is.</dd>
</dl>
</li>
</ul>
<a id="doCollapseExpandedIsNotDistinctFromOrExpr(org.apache.calcite.rex.RexCall,org.apache.calcite.rex.RexBuilder)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>doCollapseExpandedIsNotDistinctFromOrExpr</h4>
<pre class="methodSignature">private static&nbsp;<a href="../rex/RexCall.html" title="class in org.apache.calcite.rex">RexCall</a>&nbsp;doCollapseExpandedIsNotDistinctFromOrExpr&#8203;(<a href="../rex/RexCall.html" title="class in org.apache.calcite.rex">RexCall</a>&nbsp;call,
<a href="../rex/RexBuilder.html" title="class in org.apache.calcite.rex">RexBuilder</a>&nbsp;rexBuilder)</pre>
</li>
</ul>
<a id="doCollapseExpandedIsNotDistinctFromCaseExpr(org.apache.calcite.rex.RexCall,org.apache.calcite.rex.RexBuilder)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>doCollapseExpandedIsNotDistinctFromCaseExpr</h4>
<pre class="methodSignature">private static&nbsp;<a href="../rex/RexCall.html" title="class in org.apache.calcite.rex">RexCall</a>&nbsp;doCollapseExpandedIsNotDistinctFromCaseExpr&#8203;(<a href="../rex/RexCall.html" title="class in org.apache.calcite.rex">RexCall</a>&nbsp;call,
<a href="../rex/RexBuilder.html" title="class in org.apache.calcite.rex">RexBuilder</a>&nbsp;rexBuilder)</pre>
</li>
</ul>
<a id="doCollapseExpandedIsNotDistinctFrom(org.apache.calcite.rex.RexBuilder,org.apache.calcite.rex.RexCall,org.apache.calcite.rex.RexCall,org.apache.calcite.rex.RexCall,org.apache.calcite.rex.RexCall)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>doCollapseExpandedIsNotDistinctFrom</h4>
<pre class="methodSignature">private static&nbsp;<a href="../rex/RexCall.html" title="class in org.apache.calcite.rex">RexCall</a>&nbsp;doCollapseExpandedIsNotDistinctFrom&#8203;(<a href="../rex/RexBuilder.html" title="class in org.apache.calcite.rex">RexBuilder</a>&nbsp;rexBuilder,
<a href="../rex/RexCall.html" title="class in org.apache.calcite.rex">RexCall</a>&nbsp;call,
<a href="../rex/RexCall.html" title="class in org.apache.calcite.rex">RexCall</a>&nbsp;ifNull0Call,
<a href="../rex/RexCall.html" title="class in org.apache.calcite.rex">RexCall</a>&nbsp;ifNull1Call,
<a href="../rex/RexCall.html" title="class in org.apache.calcite.rex">RexCall</a>&nbsp;equalsCall)</pre>
</li>
</ul>
<a id="projectJoinInputs(org.apache.calcite.rel.RelNode[],java.util.List,java.util.List,int,java.util.List,java.util.List,java.util.List)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>projectJoinInputs</h4>
<pre class="methodSignature">@Deprecated
public static&nbsp;void&nbsp;projectJoinInputs&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>[]&nbsp;inputRels,
java.util.List&lt;<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;leftJoinKeys,
java.util.List&lt;<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;rightJoinKeys,
int&nbsp;systemColCount,
java.util.List&lt;java.lang.Integer&gt;&nbsp;leftKeys,
java.util.List&lt;java.lang.Integer&gt;&nbsp;rightKeys,
java.util.List&lt;java.lang.Integer&gt;&nbsp;outputProj)</pre>
<div class="deprecationBlock"><span class="deprecatedLabel">Deprecated.</span></div>
</li>
</ul>
<a id="createProjectJoinRel(java.util.List,org.apache.calcite.rel.RelNode)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>createProjectJoinRel</h4>
<pre class="methodSignature">@Deprecated
public static&nbsp;<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;createProjectJoinRel&#8203;(java.util.List&lt;java.lang.Integer&gt;&nbsp;outputProj,
<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;joinRel)</pre>
<div class="deprecationBlock"><span class="deprecatedLabel">Deprecated.</span></div>
</li>
</ul>
<a id="registerAbstractRels(org.apache.calcite.plan.RelOptPlanner)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>registerAbstractRels</h4>
<pre class="methodSignature">@Deprecated
public static&nbsp;void&nbsp;registerAbstractRels&#8203;(<a href="RelOptPlanner.html" title="interface in org.apache.calcite.plan">RelOptPlanner</a>&nbsp;planner)</pre>
<div class="deprecationBlock"><span class="deprecatedLabel">Deprecated.</span></div>
</li>
</ul>
<a id="registerAbstractRules(org.apache.calcite.plan.RelOptPlanner)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>registerAbstractRules</h4>
<pre class="methodSignature">public static&nbsp;void&nbsp;registerAbstractRules&#8203;(<a href="RelOptPlanner.html" title="interface in org.apache.calcite.plan">RelOptPlanner</a>&nbsp;planner)</pre>
</li>
</ul>
<a id="registerAbstractRelationalRules(org.apache.calcite.plan.RelOptPlanner)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>registerAbstractRelationalRules</h4>
<pre class="methodSignature">public static&nbsp;void&nbsp;registerAbstractRelationalRules&#8203;(<a href="RelOptPlanner.html" title="interface in org.apache.calcite.plan">RelOptPlanner</a>&nbsp;planner)</pre>
</li>
</ul>
<a id="registerEnumerableRules(org.apache.calcite.plan.RelOptPlanner)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>registerEnumerableRules</h4>
<pre class="methodSignature">private static&nbsp;void&nbsp;registerEnumerableRules&#8203;(<a href="RelOptPlanner.html" title="interface in org.apache.calcite.plan">RelOptPlanner</a>&nbsp;planner)</pre>
</li>
</ul>
<a id="registerBaseRules(org.apache.calcite.plan.RelOptPlanner)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>registerBaseRules</h4>
<pre class="methodSignature">private static&nbsp;void&nbsp;registerBaseRules&#8203;(<a href="RelOptPlanner.html" title="interface in org.apache.calcite.plan">RelOptPlanner</a>&nbsp;planner)</pre>
</li>
</ul>
<a id="registerReductionRules(org.apache.calcite.plan.RelOptPlanner)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>registerReductionRules</h4>
<pre class="methodSignature">private static&nbsp;void&nbsp;registerReductionRules&#8203;(<a href="RelOptPlanner.html" title="interface in org.apache.calcite.plan">RelOptPlanner</a>&nbsp;planner)</pre>
</li>
</ul>
<a id="registerMaterializationRules(org.apache.calcite.plan.RelOptPlanner)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>registerMaterializationRules</h4>
<pre class="methodSignature">private static&nbsp;void&nbsp;registerMaterializationRules&#8203;(<a href="RelOptPlanner.html" title="interface in org.apache.calcite.plan">RelOptPlanner</a>&nbsp;planner)</pre>
</li>
</ul>
<a id="registerCalcRules(org.apache.calcite.plan.RelOptPlanner)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>registerCalcRules</h4>
<pre class="methodSignature">private static&nbsp;void&nbsp;registerCalcRules&#8203;(<a href="RelOptPlanner.html" title="interface in org.apache.calcite.plan">RelOptPlanner</a>&nbsp;planner)</pre>
</li>
</ul>
<a id="registerDefaultRules(org.apache.calcite.plan.RelOptPlanner,boolean,boolean)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>registerDefaultRules</h4>
<pre class="methodSignature">public static&nbsp;void&nbsp;registerDefaultRules&#8203;(<a href="RelOptPlanner.html" title="interface in org.apache.calcite.plan">RelOptPlanner</a>&nbsp;planner,
boolean&nbsp;enableMaterialziations,
boolean&nbsp;enableBindable)</pre>
</li>
</ul>
<a id="dumpPlan(java.lang.String,org.apache.calcite.rel.RelNode,org.apache.calcite.sql.SqlExplainFormat,org.apache.calcite.sql.SqlExplainLevel)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>dumpPlan</h4>
<pre class="methodSignature">public static&nbsp;java.lang.String&nbsp;dumpPlan&#8203;(java.lang.String&nbsp;header,
<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;rel,
<a href="../sql/SqlExplainFormat.html" title="enum in org.apache.calcite.sql">SqlExplainFormat</a>&nbsp;format,
<a href="../sql/SqlExplainLevel.html" title="enum in org.apache.calcite.sql">SqlExplainLevel</a>&nbsp;detailLevel)</pre>
<div class="block">Dumps a plan as a string.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>header</code> - Header to print before the plan. Ignored if the format
is XML</dd>
<dd><code>rel</code> - Relational expression to explain</dd>
<dd><code>format</code> - Output format</dd>
<dd><code>detailLevel</code> - Detail level</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Plan</dd>
</dl>
</li>
</ul>
<a id="dumpPlan(java.lang.String,org.apache.calcite.rel.RelNode,boolean,org.apache.calcite.sql.SqlExplainLevel)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>dumpPlan</h4>
<pre class="methodSignature">@Deprecated
public static&nbsp;java.lang.String&nbsp;dumpPlan&#8203;(java.lang.String&nbsp;header,
<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;rel,
boolean&nbsp;asXml,
<a href="../sql/SqlExplainLevel.html" title="enum in org.apache.calcite.sql">SqlExplainLevel</a>&nbsp;detailLevel)</pre>
<div class="deprecationBlock"><span class="deprecatedLabel">Deprecated.</span></div>
</li>
</ul>
<a id="createDmlRowType(org.apache.calcite.sql.SqlKind,org.apache.calcite.rel.type.RelDataTypeFactory)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>createDmlRowType</h4>
<pre class="methodSignature">public static&nbsp;<a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;createDmlRowType&#8203;(<a href="../sql/SqlKind.html" title="enum in org.apache.calcite.sql">SqlKind</a>&nbsp;kind,
<a href="../rel/type/RelDataTypeFactory.html" title="interface in org.apache.calcite.rel.type">RelDataTypeFactory</a>&nbsp;typeFactory)</pre>
<div class="block">Creates the row type descriptor for the result of a DML operation, which
is a single column named ROWCOUNT of type BIGINT for INSERT;
a single column named PLAN for EXPLAIN.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>kind</code> - Kind of node</dd>
<dd><code>typeFactory</code> - factory to use for creating type descriptor</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>created type</dd>
</dl>
</li>
</ul>
<a id="eq(java.lang.String,org.apache.calcite.rel.type.RelDataType,java.lang.String,org.apache.calcite.rel.type.RelDataType,org.apache.calcite.util.Litmus)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>eq</h4>
<pre class="methodSignature">public static&nbsp;boolean&nbsp;eq&#8203;(java.lang.String&nbsp;desc1,
<a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;type1,
java.lang.String&nbsp;desc2,
<a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;type2,
<a href="../util/Litmus.html" title="interface in org.apache.calcite.util">Litmus</a>&nbsp;litmus)</pre>
<div class="block">Returns whether two types are equal using '='.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>desc1</code> - Description of first type</dd>
<dd><code>type1</code> - First type</dd>
<dd><code>desc2</code> - Description of second type</dd>
<dd><code>type2</code> - Second type</dd>
<dd><code>litmus</code> - What to do if an error is detected (types are not equal)</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Whether the types are equal</dd>
</dl>
</li>
</ul>
<a id="equal(java.lang.String,org.apache.calcite.rel.type.RelDataType,java.lang.String,org.apache.calcite.rel.type.RelDataType,org.apache.calcite.util.Litmus)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>equal</h4>
<pre class="methodSignature">public static&nbsp;boolean&nbsp;equal&#8203;(java.lang.String&nbsp;desc1,
<a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;type1,
java.lang.String&nbsp;desc2,
<a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;type2,
<a href="../util/Litmus.html" title="interface in org.apache.calcite.util">Litmus</a>&nbsp;litmus)</pre>
<div class="block">Returns whether two types are equal using
<a href="#areRowTypesEqual(org.apache.calcite.rel.type.RelDataType,org.apache.calcite.rel.type.RelDataType,boolean)"><code>areRowTypesEqual(RelDataType, RelDataType, boolean)</code></a>. Both types
must not be null.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>desc1</code> - Description of role of first type</dd>
<dd><code>type1</code> - First type</dd>
<dd><code>desc2</code> - Description of role of second type</dd>
<dd><code>type2</code> - Second type</dd>
<dd><code>litmus</code> - Whether to assert if they are not equal</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Whether the types are equal</dd>
</dl>
</li>
</ul>
<a id="equalType(java.lang.String,org.apache.calcite.rel.RelNode,java.lang.String,org.apache.calcite.rel.RelNode,org.apache.calcite.util.Litmus)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>equalType</h4>
<pre class="methodSignature">public static&nbsp;boolean&nbsp;equalType&#8203;(java.lang.String&nbsp;desc0,
<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;rel0,
java.lang.String&nbsp;desc1,
<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;rel1,
<a href="../util/Litmus.html" title="interface in org.apache.calcite.util">Litmus</a>&nbsp;litmus)</pre>
<div class="block">Returns whether two relational expressions have the same row-type.</div>
</li>
</ul>
<a id="isDistinctFrom(org.apache.calcite.rex.RexBuilder,org.apache.calcite.rex.RexNode,org.apache.calcite.rex.RexNode,boolean)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isDistinctFrom</h4>
<pre class="methodSignature">public static&nbsp;<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;isDistinctFrom&#8203;(<a href="../rex/RexBuilder.html" title="class in org.apache.calcite.rex">RexBuilder</a>&nbsp;rexBuilder,
<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;x,
<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;y,
boolean&nbsp;neg)</pre>
<div class="block">Returns a translation of the <code>IS DISTINCT FROM</code> (or <code>IS
NOT DISTINCT FROM</code>) sql operator.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>neg</code> - if false, returns a translation of IS NOT DISTINCT FROM</dd>
</dl>
</li>
</ul>
<a id="isDistinctFromInternal(org.apache.calcite.rex.RexBuilder,org.apache.calcite.rex.RexNode,org.apache.calcite.rex.RexNode,boolean)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isDistinctFromInternal</h4>
<pre class="methodSignature">private static&nbsp;<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;isDistinctFromInternal&#8203;(<a href="../rex/RexBuilder.html" title="class in org.apache.calcite.rex">RexBuilder</a>&nbsp;rexBuilder,
<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;x,
<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;y,
boolean&nbsp;neg)</pre>
</li>
</ul>
<a id="toString(org.apache.calcite.rel.RelNode)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>toString</h4>
<pre class="methodSignature">public static&nbsp;java.lang.String&nbsp;toString&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;rel)</pre>
<div class="block">Converts a relational expression to a string, showing just basic
attributes.</div>
</li>
</ul>
<a id="toString(org.apache.calcite.rel.RelNode,org.apache.calcite.sql.SqlExplainLevel)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>toString</h4>
<pre class="methodSignature">public static&nbsp;java.lang.String&nbsp;toString&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;rel,
<a href="../sql/SqlExplainLevel.html" title="enum in org.apache.calcite.sql">SqlExplainLevel</a>&nbsp;detailLevel)</pre>
<div class="block">Converts a relational expression to a string.</div>
</li>
</ul>
<a id="renameIfNecessary(org.apache.calcite.rel.RelNode,org.apache.calcite.rel.type.RelDataType)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>renameIfNecessary</h4>
<pre class="methodSignature">@Deprecated
public static&nbsp;<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;renameIfNecessary&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;rel,
<a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;desiredRowType)</pre>
<div class="deprecationBlock"><span class="deprecatedLabel">Deprecated.</span></div>
</li>
</ul>
<a id="dumpType(org.apache.calcite.rel.type.RelDataType)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>dumpType</h4>
<pre class="methodSignature">public static&nbsp;java.lang.String&nbsp;dumpType&#8203;(<a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;type)</pre>
</li>
</ul>
<a id="deduplicateColumns(java.util.List,java.util.List)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>deduplicateColumns</h4>
<pre class="methodSignature">public static&nbsp;java.util.List&lt;<a href="../rel/type/RelDataTypeField.html" title="interface in org.apache.calcite.rel.type">RelDataTypeField</a>&gt;&nbsp;deduplicateColumns&#8203;(java.util.List&lt;<a href="../rel/type/RelDataTypeField.html" title="interface in org.apache.calcite.rel.type">RelDataTypeField</a>&gt;&nbsp;baseColumns,
java.util.List&lt;<a href="../rel/type/RelDataTypeField.html" title="interface in org.apache.calcite.rel.type">RelDataTypeField</a>&gt;&nbsp;extendedColumns)</pre>
<div class="block">Returns the set of columns with unique names, with prior columns taking
precedence over columns that appear later in the list.</div>
</li>
</ul>
<a id="decomposeConjunction(org.apache.calcite.rex.RexNode,java.util.List)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>decomposeConjunction</h4>
<pre class="methodSignature">public static&nbsp;void&nbsp;decomposeConjunction&#8203;(<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;rexPredicate,
java.util.List&lt;<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;rexList)</pre>
<div class="block">Decomposes a predicate into a list of expressions that are AND'ed
together.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>rexPredicate</code> - predicate to be analyzed</dd>
<dd><code>rexList</code> - list of decomposed RexNodes</dd>
</dl>
</li>
</ul>
<a id="decomposeConjunction(org.apache.calcite.rex.RexNode,java.util.List,java.util.List)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>decomposeConjunction</h4>
<pre class="methodSignature">public static&nbsp;void&nbsp;decomposeConjunction&#8203;(<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;rexPredicate,
java.util.List&lt;<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;rexList,
java.util.List&lt;<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;notList)</pre>
<div class="block">Decomposes a predicate into a list of expressions that are AND'ed
together, and a list of expressions that are preceded by NOT.
<p>For example, <code>a AND NOT b AND NOT (c and d) AND TRUE AND NOT
FALSE</code> returns <code>rexList = [a], notList = [b, c AND d]</code>.</p>
<p>TRUE and NOT FALSE expressions are ignored. FALSE and NOT TRUE
expressions are placed on <code>rexList</code> and <code>notList</code> as other
expressions.</p>
<p>For example, <code>a AND TRUE AND NOT TRUE</code> returns
<code>rexList = [a], notList = [TRUE]</code>.</p></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>rexPredicate</code> - predicate to be analyzed</dd>
<dd><code>rexList</code> - list of decomposed RexNodes (except those with NOT)</dd>
<dd><code>notList</code> - list of decomposed RexNodes that were prefixed NOT</dd>
</dl>
</li>
</ul>
<a id="decomposeDisjunction(org.apache.calcite.rex.RexNode,java.util.List)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>decomposeDisjunction</h4>
<pre class="methodSignature">public static&nbsp;void&nbsp;decomposeDisjunction&#8203;(<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;rexPredicate,
java.util.List&lt;<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;rexList)</pre>
<div class="block">Decomposes a predicate into a list of expressions that are OR'ed
together.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>rexPredicate</code> - predicate to be analyzed</dd>
<dd><code>rexList</code> - list of decomposed RexNodes</dd>
</dl>
</li>
</ul>
<a id="conjunctions(org.apache.calcite.rex.RexNode)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>conjunctions</h4>
<pre class="methodSignature">public static&nbsp;java.util.List&lt;<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;conjunctions&#8203;(<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;rexPredicate)</pre>
<div class="block">Returns a condition decomposed by AND.
<p>For example, <code>conjunctions(TRUE)</code> returns the empty list;
<code>conjunctions(FALSE)</code> returns list <code>{FALSE}</code>.</p></div>
</li>
</ul>
<a id="disjunctions(org.apache.calcite.rex.RexNode)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>disjunctions</h4>
<pre class="methodSignature">public static&nbsp;java.util.List&lt;<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;disjunctions&#8203;(<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;rexPredicate)</pre>
<div class="block">Returns a condition decomposed by OR.
<p>For example, <code>disjunctions(FALSE)</code> returns the empty list.</p></div>
</li>
</ul>
<a id="andJoinFilters(org.apache.calcite.rex.RexBuilder,org.apache.calcite.rex.RexNode,org.apache.calcite.rex.RexNode)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>andJoinFilters</h4>
<pre class="methodSignature">public static&nbsp;<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;andJoinFilters&#8203;(<a href="../rex/RexBuilder.html" title="class in org.apache.calcite.rex">RexBuilder</a>&nbsp;rexBuilder,
<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;left,
<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;right)</pre>
<div class="block">Ands two sets of join filters together, either of which can be null.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>rexBuilder</code> - rexBuilder to create AND expression</dd>
<dd><code>left</code> - filter on the left that the right will be AND'd to</dd>
<dd><code>right</code> - filter on the right</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>AND'd filter</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../rex/RexUtil.html#composeConjunction(org.apache.calcite.rex.RexBuilder,java.lang.Iterable)"><code>RexUtil.composeConjunction(org.apache.calcite.rex.RexBuilder, java.lang.Iterable&lt;? extends org.apache.calcite.rex.RexNode&gt;)</code></a></dd>
</dl>
</li>
</ul>
<a id="inferViewPredicates(java.util.Map,java.util.List,org.apache.calcite.rex.RexNode)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>inferViewPredicates</h4>
<pre class="methodSignature">public static&nbsp;void&nbsp;inferViewPredicates&#8203;(java.util.Map&lt;java.lang.Integer,&#8203;<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;projectMap,
java.util.List&lt;<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;filters,
<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;constraint)</pre>
<div class="block">Decomposes the WHERE clause of a view into predicates that constraint
a column to a particular value.
<p>This method is key to the validation of a modifiable view. Columns that
are constrained to a single value can be omitted from the
SELECT clause of a modifiable view.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>projectMap</code> - Mapping from column ordinal to the expression that
populate that column, to be populated by this method</dd>
<dd><code>filters</code> - List of remaining filters, to be populated by this method</dd>
<dd><code>constraint</code> - Constraint to be analyzed</dd>
</dl>
</li>
</ul>
<a id="getColumnConstraints(org.apache.calcite.schema.ModifiableView,org.apache.calcite.rel.type.RelDataType,org.apache.calcite.rel.type.RelDataTypeFactory)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getColumnConstraints</h4>
<pre class="methodSignature">public static&nbsp;java.util.Map&lt;java.lang.Integer,&#8203;<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;getColumnConstraints&#8203;(<a href="../schema/ModifiableView.html" title="interface in org.apache.calcite.schema">ModifiableView</a>&nbsp;modifiableViewTable,
<a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;targetRowType,
<a href="../rel/type/RelDataTypeFactory.html" title="interface in org.apache.calcite.rel.type">RelDataTypeFactory</a>&nbsp;typeFactory)</pre>
<div class="block">Returns a mapping of the column ordinal in the underlying table to a column
constraint of the modifiable view.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>modifiableViewTable</code> - The modifiable view which has a constraint</dd>
<dd><code>targetRowType</code> - The target type</dd>
</dl>
</li>
</ul>
<a id="validateValueAgainstConstraint(org.apache.calcite.sql.SqlNode,org.apache.calcite.rex.RexNode,java.util.function.Supplier)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>validateValueAgainstConstraint</h4>
<pre class="methodSignature">public static&nbsp;void&nbsp;validateValueAgainstConstraint&#8203;(<a href="../sql/SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;sourceValue,
<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;targetConstraint,
java.util.function.Supplier&lt;<a href="../runtime/CalciteContextException.html" title="class in org.apache.calcite.runtime">CalciteContextException</a>&gt;&nbsp;errorSupplier)</pre>
<div class="block">Ensures that a source value does not violate the constraint of the target
column.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>sourceValue</code> - The insert value being validated</dd>
<dd><code>targetConstraint</code> - The constraint applied to sourceValue for validation</dd>
<dd><code>errorSupplier</code> - The function to apply when validation fails</dd>
</dl>
</li>
</ul>
<a id="adjustKeys(java.util.List,int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>adjustKeys</h4>
<pre class="methodSignature">public static&nbsp;java.util.List&lt;java.lang.Integer&gt;&nbsp;adjustKeys&#8203;(java.util.List&lt;java.lang.Integer&gt;&nbsp;keys,
int&nbsp;adjustment)</pre>
<div class="block">Adjusts key values in a list by some fixed amount.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>keys</code> - list of key values</dd>
<dd><code>adjustment</code> - the amount to adjust the key values by</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>modified list</dd>
</dl>
</li>
</ul>
<a id="simplifyJoin(org.apache.calcite.rel.RelNode,com.google.common.collect.ImmutableList,org.apache.calcite.rel.core.JoinRelType)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>simplifyJoin</h4>
<pre class="methodSignature">public static&nbsp;<a href="../rel/core/JoinRelType.html" title="enum in org.apache.calcite.rel.core">JoinRelType</a>&nbsp;simplifyJoin&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;joinRel,
com.google.common.collect.ImmutableList&lt;<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;aboveFilters,
<a href="../rel/core/JoinRelType.html" title="enum in org.apache.calcite.rel.core">JoinRelType</a>&nbsp;joinType)</pre>
<div class="block">Simplifies outer joins if filter above would reject nulls.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>joinRel</code> - Join</dd>
<dd><code>aboveFilters</code> - Filters from above</dd>
<dd><code>joinType</code> - Join type, can not be inner join</dd>
</dl>
</li>
</ul>
<a id="classifyFilters(org.apache.calcite.rel.RelNode,java.util.List,org.apache.calcite.rel.core.JoinRelType,boolean,boolean,boolean,java.util.List,java.util.List,java.util.List)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>classifyFilters</h4>
<pre class="methodSignature">public static&nbsp;boolean&nbsp;classifyFilters&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;joinRel,
java.util.List&lt;<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;filters,
<a href="../rel/core/JoinRelType.html" title="enum in org.apache.calcite.rel.core">JoinRelType</a>&nbsp;joinType,
boolean&nbsp;pushInto,
boolean&nbsp;pushLeft,
boolean&nbsp;pushRight,
java.util.List&lt;<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;joinFilters,
java.util.List&lt;<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;leftFilters,
java.util.List&lt;<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;rightFilters)</pre>
<div class="block">Classifies filters according to where they should be processed. They
either stay where they are, are pushed to the join (if they originated
from above the join), or are pushed to one of the children. Filters that
are pushed are added to list passed in as input parameters.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>joinRel</code> - join node</dd>
<dd><code>filters</code> - filters to be classified</dd>
<dd><code>joinType</code> - join type</dd>
<dd><code>pushInto</code> - whether filters can be pushed into the ON clause</dd>
<dd><code>pushLeft</code> - true if filters can be pushed to the left</dd>
<dd><code>pushRight</code> - true if filters can be pushed to the right</dd>
<dd><code>joinFilters</code> - list of filters to push to the join</dd>
<dd><code>leftFilters</code> - list of filters to push to the left child</dd>
<dd><code>rightFilters</code> - list of filters to push to the right child</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>whether at least one filter was pushed</dd>
</dl>
</li>
</ul>
<a id="shiftFilter(int,int,int,org.apache.calcite.rex.RexBuilder,java.util.List,int,java.util.List,org.apache.calcite.rex.RexNode)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>shiftFilter</h4>
<pre class="methodSignature">private static&nbsp;<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;shiftFilter&#8203;(int&nbsp;start,
int&nbsp;end,
int&nbsp;offset,
<a href="../rex/RexBuilder.html" title="class in org.apache.calcite.rex">RexBuilder</a>&nbsp;rexBuilder,
java.util.List&lt;<a href="../rel/type/RelDataTypeField.html" title="interface in org.apache.calcite.rel.type">RelDataTypeField</a>&gt;&nbsp;joinFields,
int&nbsp;nTotalFields,
java.util.List&lt;<a href="../rel/type/RelDataTypeField.html" title="interface in org.apache.calcite.rel.type">RelDataTypeField</a>&gt;&nbsp;rightFields,
<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;filter)</pre>
</li>
</ul>
<a id="splitFilters(org.apache.calcite.util.ImmutableBitSet,org.apache.calcite.rex.RexNode,java.util.List,java.util.List)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>splitFilters</h4>
<pre class="methodSignature">public static&nbsp;void&nbsp;splitFilters&#8203;(<a href="../util/ImmutableBitSet.html" title="class in org.apache.calcite.util">ImmutableBitSet</a>&nbsp;childBitmap,
<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;predicate,
java.util.List&lt;<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;pushable,
java.util.List&lt;<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;notPushable)</pre>
<div class="block">Splits a filter into two lists, depending on whether or not the filter
only references its child input</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>childBitmap</code> - Fields in the child</dd>
<dd><code>predicate</code> - filters that will be split</dd>
<dd><code>pushable</code> - returns the list of filters that can be pushed to the
child input</dd>
<dd><code>notPushable</code> - returns the list of filters that cannot be pushed to
the child input</dd>
</dl>
</li>
</ul>
<a id="checkProjAndChildInputs(org.apache.calcite.rel.core.Project,boolean)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>checkProjAndChildInputs</h4>
<pre class="methodSignature">@Deprecated
public static&nbsp;boolean&nbsp;checkProjAndChildInputs&#8203;(<a href="../rel/core/Project.html" title="class in org.apache.calcite.rel.core">Project</a>&nbsp;project,
boolean&nbsp;checkNames)</pre>
<div class="deprecationBlock"><span class="deprecatedLabel">Deprecated.</span></div>
</li>
</ul>
<a id="createSwappedJoinExprs(org.apache.calcite.rel.RelNode,org.apache.calcite.rel.core.Join,boolean)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>createSwappedJoinExprs</h4>
<pre class="methodSignature">public static&nbsp;java.util.List&lt;<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;createSwappedJoinExprs&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;newJoin,
<a href="../rel/core/Join.html" title="class in org.apache.calcite.rel.core">Join</a>&nbsp;origJoin,
boolean&nbsp;origOrder)</pre>
<div class="block">Creates projection expressions reflecting the swapping of a join's input.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>newJoin</code> - the RelNode corresponding to the join with its inputs
swapped</dd>
<dd><code>origJoin</code> - original LogicalJoin</dd>
<dd><code>origOrder</code> - if true, create the projection expressions to reflect
the original (pre-swapped) join projection; otherwise,
create the projection to reflect the order of the swapped
projection</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>array of expression representing the swapped join inputs</dd>
</dl>
</li>
</ul>
<a id="pushFilterPastProject(org.apache.calcite.rex.RexNode,org.apache.calcite.rel.core.Project)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>pushFilterPastProject</h4>
<pre class="methodSignature">@Deprecated
public static&nbsp;<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;pushFilterPastProject&#8203;(<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;filter,
<a href="../rel/core/Project.html" title="class in org.apache.calcite.rel.core">Project</a>&nbsp;projRel)</pre>
<div class="deprecationBlock"><span class="deprecatedLabel">Deprecated.</span></div>
</li>
</ul>
<a id="pushPastProject(org.apache.calcite.rex.RexNode,org.apache.calcite.rel.core.Project)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>pushPastProject</h4>
<pre class="methodSignature">public static&nbsp;<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;pushPastProject&#8203;(<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;node,
<a href="../rel/core/Project.html" title="class in org.apache.calcite.rel.core">Project</a>&nbsp;project)</pre>
<div class="block">Converts an expression that is based on the output fields of a
<a href="../rel/core/Project.html" title="class in org.apache.calcite.rel.core"><code>Project</code></a> to an equivalent expression on the Project's
input fields.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>node</code> - The expression to be converted</dd>
<dd><code>project</code> - Project underneath the expression</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>converted expression</dd>
</dl>
</li>
</ul>
<a id="pushPastProject(java.util.List,org.apache.calcite.rel.core.Project)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>pushPastProject</h4>
<pre class="methodSignature">public static&nbsp;java.util.List&lt;<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;pushPastProject&#8203;(java.util.List&lt;? extends <a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;nodes,
<a href="../rel/core/Project.html" title="class in org.apache.calcite.rel.core">Project</a>&nbsp;project)</pre>
<div class="block">Converts a list of expressions that are based on the output fields of a
<a href="../rel/core/Project.html" title="class in org.apache.calcite.rel.core"><code>Project</code></a> to equivalent expressions on the Project's
input fields.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>nodes</code> - The expressions to be converted</dd>
<dd><code>project</code> - Project underneath the expression</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>converted expressions</dd>
</dl>
</li>
</ul>
<a id="pushShuttle(org.apache.calcite.rel.core.Project)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>pushShuttle</h4>
<pre class="methodSignature">private static&nbsp;<a href="../rex/RexShuttle.html" title="class in org.apache.calcite.rex">RexShuttle</a>&nbsp;pushShuttle&#8203;(<a href="../rel/core/Project.html" title="class in org.apache.calcite.rel.core">Project</a>&nbsp;project)</pre>
</li>
</ul>
<a id="projectMultiJoin(org.apache.calcite.rel.rules.MultiJoin,org.apache.calcite.rel.core.Project)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>projectMultiJoin</h4>
<pre class="methodSignature">public static&nbsp;<a href="../rel/rules/MultiJoin.html" title="class in org.apache.calcite.rel.rules">MultiJoin</a>&nbsp;projectMultiJoin&#8203;(<a href="../rel/rules/MultiJoin.html" title="class in org.apache.calcite.rel.rules">MultiJoin</a>&nbsp;multiJoin,
<a href="../rel/core/Project.html" title="class in org.apache.calcite.rel.core">Project</a>&nbsp;project)</pre>
<div class="block">Creates a new <a href="../rel/rules/MultiJoin.html" title="class in org.apache.calcite.rel.rules"><code>MultiJoin</code></a> to reflect
projection references from a
<a href="../rel/core/Project.html" title="class in org.apache.calcite.rel.core"><code>Project</code></a> that is on top of the
<a href="../rel/rules/MultiJoin.html" title="class in org.apache.calcite.rel.rules"><code>MultiJoin</code></a>.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>multiJoin</code> - the original MultiJoin</dd>
<dd><code>project</code> - the Project on top of the MultiJoin</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the new MultiJoin</dd>
</dl>
</li>
</ul>
<a id="addTrait(org.apache.calcite.rel.RelNode,org.apache.calcite.plan.RelTrait)">
<!-- -->
</a><a id="addTrait(T,org.apache.calcite.plan.RelTrait)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>addTrait</h4>
<pre class="methodSignature">public static&nbsp;&lt;T extends <a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&gt;&nbsp;T&nbsp;addTrait&#8203;(T&nbsp;rel,
<a href="RelTrait.html" title="interface in org.apache.calcite.plan">RelTrait</a>&nbsp;trait)</pre>
</li>
</ul>
<a id="replaceInput(org.apache.calcite.rel.RelNode,int,org.apache.calcite.rel.RelNode)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>replaceInput</h4>
<pre class="methodSignature">public static&nbsp;<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;replaceInput&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;parent,
int&nbsp;ordinal,
<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;newInput)</pre>
<div class="block">Returns a shallow copy of a relational expression with a particular
input replaced.</div>
</li>
</ul>
<a id="createProject(org.apache.calcite.rel.RelNode,org.apache.calcite.util.mapping.Mappings.TargetMapping)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>createProject</h4>
<pre class="methodSignature">public static&nbsp;<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;createProject&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;child,
<a href="../util/mapping/Mappings.TargetMapping.html" title="interface in org.apache.calcite.util.mapping">Mappings.TargetMapping</a>&nbsp;mapping)</pre>
<div class="block">Creates a <a href="../rel/logical/LogicalProject.html" title="class in org.apache.calcite.rel.logical"><code>LogicalProject</code></a> that
projects particular fields of its input, according to a mapping.</div>
</li>
</ul>
<a id="createProject(org.apache.calcite.rel.RelNode,org.apache.calcite.util.mapping.Mappings.TargetMapping,org.apache.calcite.rel.core.RelFactories.ProjectFactory)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>createProject</h4>
<pre class="methodSignature">public static&nbsp;<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;createProject&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;child,
<a href="../util/mapping/Mappings.TargetMapping.html" title="interface in org.apache.calcite.util.mapping">Mappings.TargetMapping</a>&nbsp;mapping,
<a href="../rel/core/RelFactories.ProjectFactory.html" title="interface in org.apache.calcite.rel.core">RelFactories.ProjectFactory</a>&nbsp;projectFactory)</pre>
</li>
</ul>
<a id="contains(org.apache.calcite.rel.RelNode,org.apache.calcite.rel.RelNode)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>contains</h4>
<pre class="methodSignature">public static&nbsp;boolean&nbsp;contains&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;ancestor,
<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;target)</pre>
<div class="block">Returns whether relational expression <code>target</code> occurs within a
relational expression <code>ancestor</code>.</div>
</li>
</ul>
<a id="replace(org.apache.calcite.rel.RelNode,org.apache.calcite.rel.RelNode,org.apache.calcite.rel.RelNode)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>replace</h4>
<pre class="methodSignature">public static&nbsp;<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;replace&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;query,
<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;find,
<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;replace)</pre>
<div class="block">Within a relational expression <code>query</code>, replaces occurrences of
<code>find</code> with <code>replace</code>.</div>
</li>
</ul>
<a id="replaceRecurse(org.apache.calcite.rel.RelNode,org.apache.calcite.rel.RelNode,org.apache.calcite.rel.RelNode)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>replaceRecurse</h4>
<pre class="methodSignature">private static&nbsp;<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;replaceRecurse&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;query,
<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;find,
<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;replace)</pre>
<div class="block">Helper for <a href="#replace(org.apache.calcite.rel.RelNode,org.apache.calcite.rel.RelNode,org.apache.calcite.rel.RelNode)"><code>replace(org.apache.calcite.rel.RelNode, org.apache.calcite.rel.RelNode, org.apache.calcite.rel.RelNode)</code></a>.</div>
</li>
</ul>
<a id="getContext(org.apache.calcite.plan.RelOptCluster)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getContext</h4>
<pre class="methodSignature">@Deprecated
public static&nbsp;<a href="RelOptTable.ToRelContext.html" title="interface in org.apache.calcite.plan">RelOptTable.ToRelContext</a>&nbsp;getContext&#8203;(<a href="RelOptCluster.html" title="class in org.apache.calcite.plan">RelOptCluster</a>&nbsp;cluster)</pre>
<div class="deprecationBlock"><span class="deprecatedLabel">Deprecated.</span></div>
</li>
</ul>
<a id="countJoins(org.apache.calcite.rel.RelNode)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>countJoins</h4>
<pre class="methodSignature">public static&nbsp;int&nbsp;countJoins&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;rootRel)</pre>
<div class="block">Returns the number of <a href="../rel/core/Join.html" title="class in org.apache.calcite.rel.core"><code>Join</code></a> nodes in a
tree.</div>
</li>
</ul>
<a id="permute(org.apache.calcite.rel.type.RelDataTypeFactory,org.apache.calcite.rel.type.RelDataType,org.apache.calcite.util.mapping.Mapping)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>permute</h4>
<pre class="methodSignature">public static&nbsp;<a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;permute&#8203;(<a href="../rel/type/RelDataTypeFactory.html" title="interface in org.apache.calcite.rel.type">RelDataTypeFactory</a>&nbsp;typeFactory,
<a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;rowType,
<a href="../util/mapping/Mapping.html" title="interface in org.apache.calcite.util.mapping">Mapping</a>&nbsp;mapping)</pre>
<div class="block">Permutes a record type according to a mapping.</div>
</li>
</ul>
<a id="createProject(org.apache.calcite.rel.RelNode,java.util.List,java.util.List)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>createProject</h4>
<pre class="methodSignature">@Deprecated
public static&nbsp;<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;createProject&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;child,
java.util.List&lt;? extends <a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;exprList,
java.util.List&lt;java.lang.String&gt;&nbsp;fieldNameList)</pre>
<div class="deprecationBlock"><span class="deprecatedLabel">Deprecated.</span></div>
</li>
</ul>
<a id="createProject(org.apache.calcite.rel.RelNode,java.util.List,boolean)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>createProject</h4>
<pre class="methodSignature">@Deprecated
public static&nbsp;<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;createProject&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;child,
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;projectList,
boolean&nbsp;optimize)</pre>
<div class="deprecationBlock"><span class="deprecatedLabel">Deprecated.</span></div>
</li>
</ul>
<a id="createProject(org.apache.calcite.rel.RelNode,java.util.List)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>createProject</h4>
<pre class="methodSignature">public static&nbsp;<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;createProject&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;child,
java.util.List&lt;java.lang.Integer&gt;&nbsp;posList)</pre>
<div class="block">Creates a relational expression that projects the given fields of the
input.
<p>Optimizes if the fields are the identity projection.</p></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>child</code> - Input relational expression</dd>
<dd><code>posList</code> - Source of each projected field</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Relational expression that projects given fields</dd>
</dl>
</li>
</ul>
<a id="createProject(org.apache.calcite.rel.RelNode,java.util.List,java.util.List,boolean)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>createProject</h4>
<pre class="methodSignature">@Deprecated
public static&nbsp;<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;createProject&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;child,
java.util.List&lt;? extends <a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;exprs,
java.util.List&lt;java.lang.String&gt;&nbsp;fieldNames,
boolean&nbsp;optimize)</pre>
<div class="deprecationBlock"><span class="deprecatedLabel">Deprecated.</span></div>
</li>
</ul>
<a id="createProject(org.apache.calcite.rel.RelNode,java.util.List,java.util.List,boolean,org.apache.calcite.tools.RelBuilder)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>createProject</h4>
<pre class="methodSignature">@Deprecated
public static&nbsp;<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;createProject&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;child,
java.util.List&lt;? extends <a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;exprs,
java.util.List&lt;java.lang.String&gt;&nbsp;fieldNames,
boolean&nbsp;optimize,
<a href="../tools/RelBuilder.html" title="class in org.apache.calcite.tools">RelBuilder</a>&nbsp;relBuilder)</pre>
<div class="deprecationBlock"><span class="deprecatedLabel">Deprecated.</span>
<div class="deprecationComment">Use
<a href="../tools/RelBuilder.html#projectNamed(java.lang.Iterable,java.lang.Iterable,boolean)"><code>RelBuilder.projectNamed(Iterable, Iterable, boolean)</code></a></div>
</div>
</li>
</ul>
<a id="createRename(org.apache.calcite.rel.RelNode,java.util.List)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>createRename</h4>
<pre class="methodSignature">@Deprecated
public static&nbsp;<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;createRename&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;rel,
java.util.List&lt;java.lang.String&gt;&nbsp;fieldNames)</pre>
<div class="deprecationBlock"><span class="deprecatedLabel">Deprecated.</span></div>
</li>
</ul>
<a id="permute(org.apache.calcite.rel.RelNode,org.apache.calcite.util.Permutation,java.util.List)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>permute</h4>
<pre class="methodSignature">public static&nbsp;<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;permute&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;rel,
<a href="../util/Permutation.html" title="class in org.apache.calcite.util">Permutation</a>&nbsp;permutation,
java.util.List&lt;java.lang.String&gt;&nbsp;fieldNames)</pre>
<div class="block">Creates a relational expression which permutes the output fields of a
relational expression according to a permutation.
<p>Optimizations:</p>
<ul>
<li>If the relational expression is a
<a href="../rel/logical/LogicalCalc.html" title="class in org.apache.calcite.rel.logical"><code>LogicalCalc</code></a> or
<a href="../rel/logical/LogicalProject.html" title="class in org.apache.calcite.rel.logical"><code>LogicalProject</code></a> that is already
acting as a permutation, combines the new permutation with the old;</li>
<li>If the permutation is the identity, returns the original relational
expression.</li>
</ul>
<p>If a permutation is combined with its inverse, these optimizations
would combine to remove them both.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>rel</code> - Relational expression</dd>
<dd><code>permutation</code> - Permutation to apply to fields</dd>
<dd><code>fieldNames</code> - Field names; if null, or if a particular entry is null,
the name of the permuted field is used</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>relational expression which permutes its input fields</dd>
</dl>
</li>
</ul>
<a id="createProject(org.apache.calcite.rel.core.RelFactories.ProjectFactory,org.apache.calcite.rel.RelNode,java.util.List)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>createProject</h4>
<pre class="methodSignature">public static&nbsp;<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;createProject&#8203;(<a href="../rel/core/RelFactories.ProjectFactory.html" title="interface in org.apache.calcite.rel.core">RelFactories.ProjectFactory</a>&nbsp;factory,
<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;child,
java.util.List&lt;java.lang.Integer&gt;&nbsp;posList)</pre>
<div class="block">Creates a relational expression that projects the given fields of the
input.
<p>Optimizes if the fields are the identity projection.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>factory</code> - ProjectFactory</dd>
<dd><code>child</code> - Input relational expression</dd>
<dd><code>posList</code> - Source of each projected field</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Relational expression that projects given fields</dd>
</dl>
</li>
</ul>
<a id="projectMapping(org.apache.calcite.rel.RelNode,org.apache.calcite.util.mapping.Mapping,java.util.List,org.apache.calcite.rel.core.RelFactories.ProjectFactory)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>projectMapping</h4>
<pre class="methodSignature">@Deprecated
public static&nbsp;<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;projectMapping&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;rel,
<a href="../util/mapping/Mapping.html" title="interface in org.apache.calcite.util.mapping">Mapping</a>&nbsp;mapping,
java.util.List&lt;java.lang.String&gt;&nbsp;fieldNames,
<a href="../rel/core/RelFactories.ProjectFactory.html" title="interface in org.apache.calcite.rel.core">RelFactories.ProjectFactory</a>&nbsp;projectFactory)</pre>
<div class="deprecationBlock"><span class="deprecatedLabel">Deprecated.</span></div>
</li>
</ul>
<a id="containsMultisetOrWindowedAgg(org.apache.calcite.rel.core.Calc)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>containsMultisetOrWindowedAgg</h4>
<pre class="methodSignature">public static&nbsp;boolean&nbsp;containsMultisetOrWindowedAgg&#8203;(<a href="../rel/core/Calc.html" title="class in org.apache.calcite.rel.core">Calc</a>&nbsp;calc)</pre>
<div class="block">Predicate for whether a <a href="../rel/core/Calc.html" title="class in org.apache.calcite.rel.core"><code>Calc</code></a> contains multisets or windowed
aggregates.</div>
</li>
</ul>
<a id="containsMultisetOrWindowedAgg(org.apache.calcite.rel.core.Filter)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>containsMultisetOrWindowedAgg</h4>
<pre class="methodSignature">public static&nbsp;boolean&nbsp;containsMultisetOrWindowedAgg&#8203;(<a href="../rel/core/Filter.html" title="class in org.apache.calcite.rel.core">Filter</a>&nbsp;filter)</pre>
<div class="block">Predicate for whether a <a href="../rel/core/Filter.html" title="class in org.apache.calcite.rel.core"><code>Filter</code></a> contains multisets or windowed
aggregates.</div>
</li>
</ul>
<a id="containsMultisetOrWindowedAgg(org.apache.calcite.rel.core.Project)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>containsMultisetOrWindowedAgg</h4>
<pre class="methodSignature">public static&nbsp;boolean&nbsp;containsMultisetOrWindowedAgg&#8203;(<a href="../rel/core/Project.html" title="class in org.apache.calcite.rel.core">Project</a>&nbsp;project)</pre>
<div class="block">Predicate for whether a <a href="../rel/core/Project.html" title="class in org.apache.calcite.rel.core"><code>Project</code></a> contains multisets or windowed
aggregates.</div>
</li>
</ul>
<a id="pushDownJoinConditions(org.apache.calcite.rel.core.Join,org.apache.calcite.tools.RelBuilder)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>pushDownJoinConditions</h4>
<pre class="methodSignature">public static&nbsp;<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;pushDownJoinConditions&#8203;(<a href="../rel/core/Join.html" title="class in org.apache.calcite.rel.core">Join</a>&nbsp;originalJoin,
<a href="../tools/RelBuilder.html" title="class in org.apache.calcite.tools">RelBuilder</a>&nbsp;relBuilder)</pre>
<div class="block">Pushes down expressions in "equal" join condition.
<p>For example, given
"emp JOIN dept ON emp.deptno + 1 = dept.deptno", adds a project above
"emp" that computes the expression
"emp.deptno + 1". The resulting join condition is a simple combination
of AND, equals, and input fields, plus the remaining non-equal conditions.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>originalJoin</code> - Join whose condition is to be pushed down</dd>
<dd><code>relBuilder</code> - Factory to create project operator</dd>
</dl>
</li>
</ul>
<a id="pushDownJoinConditions(org.apache.calcite.rel.core.Join)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>pushDownJoinConditions</h4>
<pre class="methodSignature">@Deprecated
public static&nbsp;<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;pushDownJoinConditions&#8203;(<a href="../rel/core/Join.html" title="class in org.apache.calcite.rel.core">Join</a>&nbsp;originalJoin)</pre>
<div class="deprecationBlock"><span class="deprecatedLabel">Deprecated.</span></div>
</li>
</ul>
<a id="pushDownJoinConditions(org.apache.calcite.rel.core.Join,org.apache.calcite.rel.core.RelFactories.ProjectFactory)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>pushDownJoinConditions</h4>
<pre class="methodSignature">@Deprecated
public static&nbsp;<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;pushDownJoinConditions&#8203;(<a href="../rel/core/Join.html" title="class in org.apache.calcite.rel.core">Join</a>&nbsp;originalJoin,
<a href="../rel/core/RelFactories.ProjectFactory.html" title="interface in org.apache.calcite.rel.core">RelFactories.ProjectFactory</a>&nbsp;projectFactory)</pre>
<div class="deprecationBlock"><span class="deprecatedLabel">Deprecated.</span></div>
</li>
</ul>
<a id="pushDownJoinConditions(org.apache.calcite.rel.core.Join,org.apache.calcite.tools.RelBuilderFactory)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>pushDownJoinConditions</h4>
<pre class="methodSignature">private static&nbsp;<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;pushDownJoinConditions&#8203;(<a href="../rel/core/Join.html" title="class in org.apache.calcite.rel.core">Join</a>&nbsp;originalJoin,
<a href="../tools/RelBuilderFactory.html" title="interface in org.apache.calcite.tools">RelBuilderFactory</a>&nbsp;relBuilderFactory)</pre>
</li>
</ul>
<a id="containsGet(org.apache.calcite.rex.RexNode)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>containsGet</h4>
<pre class="methodSignature">private static&nbsp;boolean&nbsp;containsGet&#8203;(<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;node)</pre>
</li>
</ul>
<a id="pushDownEqualJoinConditions(org.apache.calcite.rex.RexNode,int,int,java.util.List,java.util.List,org.apache.calcite.rex.RexBuilder)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>pushDownEqualJoinConditions</h4>
<pre class="methodSignature">private static&nbsp;<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;pushDownEqualJoinConditions&#8203;(<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;condition,
int&nbsp;leftCount,
int&nbsp;rightCount,
java.util.List&lt;<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;extraLeftExprs,
java.util.List&lt;<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;extraRightExprs,
<a href="../rex/RexBuilder.html" title="class in org.apache.calcite.rex">RexBuilder</a>&nbsp;builder)</pre>
<div class="block">Pushes down parts of a join condition.
<p>For example, given
"emp JOIN dept ON emp.deptno + 1 = dept.deptno", adds a project above
"emp" that computes the expression
"emp.deptno + 1". The resulting join condition is a simple combination
of AND, equals, and input fields.</div>
</li>
</ul>
<a id="fix(java.util.List,int,int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>fix</h4>
<pre class="methodSignature">private static&nbsp;void&nbsp;fix&#8203;(java.util.List&lt;<a href="../rex/RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;operands,
int&nbsp;before,
int&nbsp;after)</pre>
</li>
</ul>
<a id="containsNullableFields(org.apache.calcite.rel.RelNode)">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>containsNullableFields</h4>
<pre class="methodSignature">private static&nbsp;boolean&nbsp;containsNullableFields&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;r)</pre>
<div class="block">Determines whether any of the fields in a given relational expression may
contain null values, taking into account constraints on the field types and
also deduced predicates.
<p>The method is cautious: It may sometimes return <code>true</code> when the
actual answer is <code>false</code>. In particular, it does this when there
is no executor, or the executor is not a sub-class of
<a href="../rex/RexExecutorImpl.html" title="class in org.apache.calcite.rex"><code>RexExecutorImpl</code></a>.</div>
</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/RelOptUtil.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>