blob: 36159dd0cc704bb779bd3fd05a350f1a9666229e [file] [log] [blame]
<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc -->
<title>RelOptPlanner (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="RelOptPlanner (Apache Calcite API)";
}
}
catch(err) {
}
//-->
var data = {"i0":6,"i1":6,"i2":6,"i3":6,"i4":6,"i5":6,"i6":6,"i7":6,"i8":6,"i9":6,"i10":6,"i11":6,"i12":6,"i13":38,"i14":6,"i15":6,"i16":6,"i17":6,"i18":6,"i19":6,"i20":6,"i21":6,"i22":6,"i23":6,"i24":6,"i25":6,"i26":6,"i27":6,"i28":6,"i29":6,"i30":38,"i31":6,"i32":6,"i33":6,"i34":6};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],4:["t3","Abstract 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/RelOptPlanner.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>Constr&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>Constr&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="Interface RelOptPlanner" class="title">Interface RelOptPlanner</h2>
</div>
<div class="contentContainer">
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Known Implementing Classes:</dt>
<dd><code><a href="AbstractRelOptPlanner.html" title="class in org.apache.calcite.plan">AbstractRelOptPlanner</a></code>, <code><a href="hep/HepPlanner.html" title="class in org.apache.calcite.plan.hep">HepPlanner</a></code>, <code><a href="volcano/VolcanoPlanner.html" title="class in org.apache.calcite.plan.volcano">VolcanoPlanner</a></code></dd>
</dl>
<hr>
<pre>public interface <span class="typeNameLabel">RelOptPlanner</span></pre>
<div class="block">A <code>RelOptPlanner</code> is a query optimizer: it transforms a relational
expression into a semantically equivalent relational expression, according to
a given set of rules and a cost model.</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">Interface</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static class&nbsp;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="RelOptPlanner.CannotPlanException.html" title="class in org.apache.calcite.plan">RelOptPlanner.CannotPlanException</a></span></code></th>
<td class="colLast">
<div class="block">Thrown by <a href="#findBestExp()"><code>findBestExp()</code></a>.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static interface&nbsp;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="RelOptPlanner.Executor.html" title="interface in org.apache.calcite.plan">RelOptPlanner.Executor</a></span></code></th>
<td class="colLast">
<div class="block"><span class="deprecatedLabel">Deprecated.</span>
<div class="deprecationComment">Use <a href="../rex/RexExecutor.html" title="interface in org.apache.calcite.rex"><code>RexExecutor</code></a></div>
</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>static org.slf4j.Logger</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#LOGGER">LOGGER</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="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t3" class="tableTab"><span><a href="javascript:show(4);">Abstract 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>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#addLattice(org.apache.calcite.plan.RelOptLattice)">addLattice</a></span>&#8203;(<a href="RelOptLattice.html" title="class in org.apache.calcite.plan">RelOptLattice</a>&nbsp;lattice)</code></th>
<td class="colLast">
<div class="block">Defines a lattice.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#addListener(org.apache.calcite.plan.RelOptListener)">addListener</a></span>&#8203;(<a href="RelOptListener.html" title="interface in org.apache.calcite.plan">RelOptListener</a>&nbsp;newListener)</code></th>
<td class="colLast">
<div class="block">Adds a listener to this planner.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#addMaterialization(org.apache.calcite.plan.RelOptMaterialization)">addMaterialization</a></span>&#8203;(<a href="RelOptMaterialization.html" title="class in org.apache.calcite.plan">RelOptMaterialization</a>&nbsp;materialization)</code></th>
<td class="colLast">
<div class="block">Defines a pair of relational expressions that are equivalent.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#addRelTraitDef(org.apache.calcite.plan.RelTraitDef)">addRelTraitDef</a></span>&#8203;(<a href="RelTraitDef.html" title="class in org.apache.calcite.plan">RelTraitDef</a>&nbsp;relTraitDef)</code></th>
<td class="colLast">
<div class="block">Registers a rel trait definition.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#addRule(org.apache.calcite.plan.RelOptRule)">addRule</a></span>&#8203;(<a href="RelOptRule.html" title="class in org.apache.calcite.plan">RelOptRule</a>&nbsp;rule)</code></th>
<td class="colLast">
<div class="block">Registers a rule.</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code><a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#changeTraits(org.apache.calcite.rel.RelNode,org.apache.calcite.plan.RelTraitSet)">changeTraits</a></span>&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;rel,
<a href="RelTraitSet.html" title="class in org.apache.calcite.plan">RelTraitSet</a>&nbsp;toTraits)</code></th>
<td class="colLast">
<div class="block">Changes a relational expression to an equivalent one with a different set
of traits.</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code><a href="RelOptPlanner.html" title="interface in org.apache.calcite.plan">RelOptPlanner</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#chooseDelegate()">chooseDelegate</a></span>()</code></th>
<td class="colLast">
<div class="block">Negotiates an appropriate planner to deal with distributed queries.</div>
</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#clear()">clear</a></span>()</code></th>
<td class="colLast">
<div class="block">Removes all internal state, including all registered rules,
materialized views, and lattices.</div>
</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#clearRelTraitDefs()">clearRelTraitDefs</a></span>()</code></th>
<td class="colLast">
<div class="block">Clear all the registered RelTraitDef.</div>
</td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code><a href="RelTraitSet.html" title="class in org.apache.calcite.plan">RelTraitSet</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#emptyTraitSet()">emptyTraitSet</a></span>()</code></th>
<td class="colLast">
<div class="block">Creates an empty trait set.</div>
</td>
</tr>
<tr id="i10" class="altColor">
<td class="colFirst"><code><a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#ensureRegistered(org.apache.calcite.rel.RelNode,org.apache.calcite.rel.RelNode)">ensureRegistered</a></span>&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;rel,
<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;equivRel)</code></th>
<td class="colLast">
<div class="block">Registers a relational expression if it is not already registered.</div>
</td>
</tr>
<tr id="i11" class="rowColor">
<td class="colFirst"><code><a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#findBestExp()">findBestExp</a></span>()</code></th>
<td class="colLast">
<div class="block">Finds the most efficient expression to implement this query.</div>
</td>
</tr>
<tr id="i12" class="altColor">
<td class="colFirst"><code><a href="Context.html" title="interface in org.apache.calcite.plan">Context</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getContext()">getContext</a></span>()</code></th>
<td class="colLast">
<div class="block">Provides the Context created when this planner was constructed.</div>
</td>
</tr>
<tr id="i13" class="rowColor">
<td class="colFirst"><code><a href="RelOptCost.html" title="interface in org.apache.calcite.plan">RelOptCost</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getCost(org.apache.calcite.rel.RelNode)">getCost</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="#getCost(org.apache.calcite.rel.RelNode,org.apache.calcite.rel.metadata.RelMetadataQuery)"><code>getCost(RelNode, RelMetadataQuery)</code></a>
or, better, call <a href="../rel/metadata/RelMetadataQuery.html#getCumulativeCost(org.apache.calcite.rel.RelNode)"><code>RelMetadataQuery.getCumulativeCost(RelNode)</code></a>.</div>
</div>
</td>
</tr>
<tr id="i14" class="altColor">
<td class="colFirst"><code><a href="RelOptCost.html" title="interface in org.apache.calcite.plan">RelOptCost</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getCost(org.apache.calcite.rel.RelNode,org.apache.calcite.rel.metadata.RelMetadataQuery)">getCost</a></span>&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;rel,
<a href="../rel/metadata/RelMetadataQuery.html" title="class in org.apache.calcite.rel.metadata">RelMetadataQuery</a>&nbsp;mq)</code></th>
<td class="colLast">
<div class="block">Computes the cost of a RelNode.</div>
</td>
</tr>
<tr id="i15" class="rowColor">
<td class="colFirst"><code><a href="RelOptCostFactory.html" title="interface in org.apache.calcite.plan">RelOptCostFactory</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getCostFactory()">getCostFactory</a></span>()</code></th>
<td class="colLast">
<div class="block">Returns the factory that creates
<a href="RelOptCost.html" title="interface in org.apache.calcite.plan"><code>RelOptCost</code></a>s.</div>
</td>
</tr>
<tr id="i16" class="altColor">
<td class="colFirst"><code><a href="../rex/RexExecutor.html" title="interface in org.apache.calcite.rex">RexExecutor</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getExecutor()">getExecutor</a></span>()</code></th>
<td class="colLast">
<div class="block">Returns the executor used to evaluate constant expressions.</div>
</td>
</tr>
<tr id="i17" class="rowColor">
<td class="colFirst"><code><a href="RelOptLattice.html" title="class in org.apache.calcite.plan">RelOptLattice</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getLattice(org.apache.calcite.plan.RelOptTable)">getLattice</a></span>&#8203;(<a href="RelOptTable.html" title="interface in org.apache.calcite.plan">RelOptTable</a>&nbsp;table)</code></th>
<td class="colLast">
<div class="block">Retrieves a lattice, given its star table.</div>
</td>
</tr>
<tr id="i18" class="altColor">
<td class="colFirst"><code>java.util.List&lt;<a href="RelOptMaterialization.html" title="class in org.apache.calcite.plan">RelOptMaterialization</a>&gt;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getMaterializations()">getMaterializations</a></span>()</code></th>
<td class="colLast">
<div class="block">Returns the materializations that have been registered with the planner.</div>
</td>
</tr>
<tr id="i19" class="rowColor">
<td class="colFirst"><code>long</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getRelMetadataTimestamp(org.apache.calcite.rel.RelNode)">getRelMetadataTimestamp</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">Gets a timestamp for a given rel's metadata.</div>
</td>
</tr>
<tr id="i20" class="altColor">
<td class="colFirst"><code>java.util.List&lt;<a href="RelTraitDef.html" title="class in org.apache.calcite.plan">RelTraitDef</a>&gt;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getRelTraitDefs()">getRelTraitDefs</a></span>()</code></th>
<td class="colLast">
<div class="block">Returns the list of active trait types.</div>
</td>
</tr>
<tr id="i21" class="rowColor">
<td class="colFirst"><code><a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getRoot()">getRoot</a></span>()</code></th>
<td class="colLast">
<div class="block">Returns the root node of this query.</div>
</td>
</tr>
<tr id="i22" class="altColor">
<td class="colFirst"><code>java.util.List&lt;<a href="RelOptRule.html" title="class in org.apache.calcite.plan">RelOptRule</a>&gt;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getRules()">getRules</a></span>()</code></th>
<td class="colLast">
<div class="block">Returns the list of all registered rules.</div>
</td>
</tr>
<tr id="i23" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isRegistered(org.apache.calcite.rel.RelNode)">isRegistered</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">Determines whether a relational expression has been registered.</div>
</td>
</tr>
<tr id="i24" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onCopy(org.apache.calcite.rel.RelNode,org.apache.calcite.rel.RelNode)">onCopy</a></span>&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;rel,
<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;newRel)</code></th>
<td class="colLast">
<div class="block">Called when a relational expression is copied to a similar expression.</div>
</td>
</tr>
<tr id="i25" class="rowColor">
<td class="colFirst"><code><a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#register(org.apache.calcite.rel.RelNode,org.apache.calcite.rel.RelNode)">register</a></span>&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;rel,
<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;equivRel)</code></th>
<td class="colLast">
<div class="block">Registers a relational expression in the expression bank.</div>
</td>
</tr>
<tr id="i26" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#registerClass(org.apache.calcite.rel.RelNode)">registerClass</a></span>&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;node)</code></th>
<td class="colLast">
<div class="block">Registers a class of RelNode.</div>
</td>
</tr>
<tr id="i27" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#registerMetadataProviders(java.util.List)">registerMetadataProviders</a></span>&#8203;(java.util.List&lt;<a href="../rel/metadata/RelMetadataProvider.html" title="interface in org.apache.calcite.rel.metadata">RelMetadataProvider</a>&gt;&nbsp;list)</code></th>
<td class="colLast">
<div class="block">Gives this planner a chance to register one or more
<a href="../rel/metadata/RelMetadataProvider.html" title="interface in org.apache.calcite.rel.metadata"><code>RelMetadataProvider</code></a>s in the chain which will be used to answer
metadata queries.</div>
</td>
</tr>
<tr id="i28" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#registerSchema(org.apache.calcite.plan.RelOptSchema)">registerSchema</a></span>&#8203;(<a href="RelOptSchema.html" title="interface in org.apache.calcite.plan">RelOptSchema</a>&nbsp;schema)</code></th>
<td class="colLast">
<div class="block">Tells this planner that a schema exists.</div>
</td>
</tr>
<tr id="i29" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#removeRule(org.apache.calcite.plan.RelOptRule)">removeRule</a></span>&#8203;(<a href="RelOptRule.html" title="class in org.apache.calcite.plan">RelOptRule</a>&nbsp;rule)</code></th>
<td class="colLast">
<div class="block">Removes a rule.</div>
</td>
</tr>
<tr id="i30" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setCancelFlag(org.apache.calcite.util.CancelFlag)">setCancelFlag</a></span>&#8203;(<a href="../util/CancelFlag.html" title="class in org.apache.calcite.util">CancelFlag</a>&nbsp;cancelFlag)</code></th>
<td class="colLast">
<div class="block"><span class="deprecatedLabel">Deprecated.</span>
<div class="deprecationComment">Previously, this method installed the cancellation-checking
flag for this planner, but is now deprecated.</div>
</div>
</td>
</tr>
<tr id="i31" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setExecutor(org.apache.calcite.rex.RexExecutor)">setExecutor</a></span>&#8203;(<a href="../rex/RexExecutor.html" title="interface in org.apache.calcite.rex">RexExecutor</a>&nbsp;executor)</code></th>
<td class="colLast">
<div class="block">Sets the object that can execute scalar expressions.</div>
</td>
</tr>
<tr id="i32" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setImportance(org.apache.calcite.rel.RelNode,double)">setImportance</a></span>&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;rel,
double&nbsp;importance)</code></th>
<td class="colLast">
<div class="block">Sets the importance of a relational expression.</div>
</td>
</tr>
<tr id="i33" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setRoot(org.apache.calcite.rel.RelNode)">setRoot</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">Sets the root node of this query.</div>
</td>
</tr>
<tr id="i34" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setRuleDescExclusionFilter(java.util.regex.Pattern)">setRuleDescExclusionFilter</a></span>&#8203;(java.util.regex.Pattern&nbsp;exclusionFilter)</code></th>
<td class="colLast">
<div class="block">Sets the exclusion filter to use for this planner.</div>
</td>
</tr>
</table>
</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="LOGGER">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>LOGGER</h4>
<pre>static final&nbsp;org.slf4j.Logger LOGGER</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="setRoot(org.apache.calcite.rel.RelNode)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setRoot</h4>
<pre class="methodSignature">void&nbsp;setRoot&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;rel)</pre>
<div class="block">Sets the root node of this query.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>rel</code> - Relational expression</dd>
</dl>
</li>
</ul>
<a id="getRoot()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getRoot</h4>
<pre class="methodSignature"><a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;getRoot()</pre>
<div class="block">Returns the root node of this query.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Root node</dd>
</dl>
</li>
</ul>
<a id="addRelTraitDef(org.apache.calcite.plan.RelTraitDef)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>addRelTraitDef</h4>
<pre class="methodSignature">boolean&nbsp;addRelTraitDef&#8203;(<a href="RelTraitDef.html" title="class in org.apache.calcite.plan">RelTraitDef</a>&nbsp;relTraitDef)</pre>
<div class="block">Registers a rel trait definition. If the <a href="RelTraitDef.html" title="class in org.apache.calcite.plan"><code>RelTraitDef</code></a> has already
been registered, does nothing.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>whether the RelTraitDef was added, as per
<code>Collection.add(E)</code></dd>
</dl>
</li>
</ul>
<a id="clearRelTraitDefs()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>clearRelTraitDefs</h4>
<pre class="methodSignature">void&nbsp;clearRelTraitDefs()</pre>
<div class="block">Clear all the registered RelTraitDef.</div>
</li>
</ul>
<a id="getRelTraitDefs()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getRelTraitDefs</h4>
<pre class="methodSignature">java.util.List&lt;<a href="RelTraitDef.html" title="class in org.apache.calcite.plan">RelTraitDef</a>&gt;&nbsp;getRelTraitDefs()</pre>
<div class="block">Returns the list of active trait types.</div>
</li>
</ul>
<a id="clear()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>clear</h4>
<pre class="methodSignature">void&nbsp;clear()</pre>
<div class="block">Removes all internal state, including all registered rules,
materialized views, and lattices.</div>
</li>
</ul>
<a id="getRules()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getRules</h4>
<pre class="methodSignature">java.util.List&lt;<a href="RelOptRule.html" title="class in org.apache.calcite.plan">RelOptRule</a>&gt;&nbsp;getRules()</pre>
<div class="block">Returns the list of all registered rules.</div>
</li>
</ul>
<a id="addRule(org.apache.calcite.plan.RelOptRule)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>addRule</h4>
<pre class="methodSignature">boolean&nbsp;addRule&#8203;(<a href="RelOptRule.html" title="class in org.apache.calcite.plan">RelOptRule</a>&nbsp;rule)</pre>
<div class="block">Registers a rule.
<p>If the rule has already been registered, does nothing.
This method determines if the given rule is a
<a href="../rel/convert/ConverterRule.html" title="class in org.apache.calcite.rel.convert"><code>ConverterRule</code></a> and pass the
ConverterRule to all
<a href="#addRelTraitDef(org.apache.calcite.plan.RelTraitDef)"><code>registered</code></a> RelTraitDef
instances.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>whether the rule was added, as per
<code>Collection.add(E)</code></dd>
</dl>
</li>
</ul>
<a id="removeRule(org.apache.calcite.plan.RelOptRule)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>removeRule</h4>
<pre class="methodSignature">boolean&nbsp;removeRule&#8203;(<a href="RelOptRule.html" title="class in org.apache.calcite.plan">RelOptRule</a>&nbsp;rule)</pre>
<div class="block">Removes a rule.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>true if the rule was present, as per
<code>Collection.remove(Object)</code></dd>
</dl>
</li>
</ul>
<a id="getContext()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getContext</h4>
<pre class="methodSignature"><a href="Context.html" title="interface in org.apache.calcite.plan">Context</a>&nbsp;getContext()</pre>
<div class="block">Provides the Context created when this planner was constructed.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Never null; either an externally defined context, or a dummy
context that returns null for each requested interface</dd>
</dl>
</li>
</ul>
<a id="setRuleDescExclusionFilter(java.util.regex.Pattern)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setRuleDescExclusionFilter</h4>
<pre class="methodSignature">void&nbsp;setRuleDescExclusionFilter&#8203;(java.util.regex.Pattern&nbsp;exclusionFilter)</pre>
<div class="block">Sets the exclusion filter to use for this planner. Rules which match the
given pattern will not be fired regardless of whether or when they are
added to the planner.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>exclusionFilter</code> - pattern to match for exclusion; null to disable
filtering</dd>
</dl>
</li>
</ul>
<a id="setCancelFlag(org.apache.calcite.util.CancelFlag)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setCancelFlag</h4>
<pre class="methodSignature">@Deprecated
void&nbsp;setCancelFlag&#8203;(<a href="../util/CancelFlag.html" title="class in org.apache.calcite.util">CancelFlag</a>&nbsp;cancelFlag)</pre>
<div class="deprecationBlock"><span class="deprecatedLabel">Deprecated.</span>
<div class="deprecationComment">Previously, this method installed the cancellation-checking
flag for this planner, but is now deprecated. Now, you should add a
<a href="../util/CancelFlag.html" title="class in org.apache.calcite.util"><code>CancelFlag</code></a> to the <a href="Context.html" title="interface in org.apache.calcite.plan"><code>Context</code></a> passed to the constructor.</div>
</div>
<div class="block">Does nothing.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>cancelFlag</code> - flag which the planner should periodically check</dd>
</dl>
</li>
</ul>
<a id="changeTraits(org.apache.calcite.rel.RelNode,org.apache.calcite.plan.RelTraitSet)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>changeTraits</h4>
<pre class="methodSignature"><a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;changeTraits&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;rel,
<a href="RelTraitSet.html" title="class in org.apache.calcite.plan">RelTraitSet</a>&nbsp;toTraits)</pre>
<div class="block">Changes a relational expression to an equivalent one with a different set
of traits.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>rel</code> - Relational expression (may or may not have been registered; must
not have the desired traits)</dd>
<dd><code>toTraits</code> - Trait set to convert the relational expression to</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Relational expression with desired traits. Never null, but may be
abstract</dd>
</dl>
</li>
</ul>
<a id="chooseDelegate()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>chooseDelegate</h4>
<pre class="methodSignature"><a href="RelOptPlanner.html" title="interface in org.apache.calcite.plan">RelOptPlanner</a>&nbsp;chooseDelegate()</pre>
<div class="block">Negotiates an appropriate planner to deal with distributed queries. The
idea is that the schemas decide among themselves which has the most
knowledge. Right now, the local planner retains control.</div>
</li>
</ul>
<a id="addMaterialization(org.apache.calcite.plan.RelOptMaterialization)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>addMaterialization</h4>
<pre class="methodSignature">void&nbsp;addMaterialization&#8203;(<a href="RelOptMaterialization.html" title="class in org.apache.calcite.plan">RelOptMaterialization</a>&nbsp;materialization)</pre>
<div class="block">Defines a pair of relational expressions that are equivalent.
<p>Typically <code>tableRel</code> is a
<a href="../rel/logical/LogicalTableScan.html" title="class in org.apache.calcite.rel.logical"><code>LogicalTableScan</code></a> representing a
table that is a materialized view and <code>queryRel</code> is the SQL
expression that populates that view. The intention is that
<code>tableRel</code> is cheaper to evaluate and therefore if the query being
optimized uses (or can be rewritten to use) <code>queryRel</code> as a
sub-expression then it can be optimized by using <code>tableRel</code>
instead.</p></div>
</li>
</ul>
<a id="getMaterializations()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getMaterializations</h4>
<pre class="methodSignature">java.util.List&lt;<a href="RelOptMaterialization.html" title="class in org.apache.calcite.plan">RelOptMaterialization</a>&gt;&nbsp;getMaterializations()</pre>
<div class="block">Returns the materializations that have been registered with the planner.</div>
</li>
</ul>
<a id="addLattice(org.apache.calcite.plan.RelOptLattice)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>addLattice</h4>
<pre class="methodSignature">void&nbsp;addLattice&#8203;(<a href="RelOptLattice.html" title="class in org.apache.calcite.plan">RelOptLattice</a>&nbsp;lattice)</pre>
<div class="block">Defines a lattice.
<p>The lattice may have materializations; it is not necessary to call
<a href="#addMaterialization(org.apache.calcite.plan.RelOptMaterialization)"><code>addMaterialization(org.apache.calcite.plan.RelOptMaterialization)</code></a> for these; they are registered implicitly.</div>
</li>
</ul>
<a id="getLattice(org.apache.calcite.plan.RelOptTable)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getLattice</h4>
<pre class="methodSignature"><a href="RelOptLattice.html" title="class in org.apache.calcite.plan">RelOptLattice</a>&nbsp;getLattice&#8203;(<a href="RelOptTable.html" title="interface in org.apache.calcite.plan">RelOptTable</a>&nbsp;table)</pre>
<div class="block">Retrieves a lattice, given its star table.</div>
</li>
</ul>
<a id="findBestExp()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>findBestExp</h4>
<pre class="methodSignature"><a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;findBestExp()</pre>
<div class="block">Finds the most efficient expression to implement this query.</div>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="RelOptPlanner.CannotPlanException.html" title="class in org.apache.calcite.plan">RelOptPlanner.CannotPlanException</a></code> - if cannot find a plan</dd>
</dl>
</li>
</ul>
<a id="getCostFactory()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getCostFactory</h4>
<pre class="methodSignature"><a href="RelOptCostFactory.html" title="interface in org.apache.calcite.plan">RelOptCostFactory</a>&nbsp;getCostFactory()</pre>
<div class="block">Returns the factory that creates
<a href="RelOptCost.html" title="interface in org.apache.calcite.plan"><code>RelOptCost</code></a>s.</div>
</li>
</ul>
<a id="getCost(org.apache.calcite.rel.RelNode,org.apache.calcite.rel.metadata.RelMetadataQuery)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getCost</h4>
<pre class="methodSignature"><a href="RelOptCost.html" title="interface in org.apache.calcite.plan">RelOptCost</a>&nbsp;getCost&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;rel,
<a href="../rel/metadata/RelMetadataQuery.html" title="class in org.apache.calcite.rel.metadata">RelMetadataQuery</a>&nbsp;mq)</pre>
<div class="block">Computes the cost of a RelNode. In most cases, this just dispatches to
<a href="../rel/metadata/RelMetadataQuery.html#getCumulativeCost(org.apache.calcite.rel.RelNode)"><code>RelMetadataQuery.getCumulativeCost(org.apache.calcite.rel.RelNode)</code></a>.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>rel</code> - Relational expression of interest</dd>
<dd><code>mq</code> - Metadata query</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>estimated cost</dd>
</dl>
</li>
</ul>
<a id="getCost(org.apache.calcite.rel.RelNode)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getCost</h4>
<pre class="methodSignature">@Deprecated
<a href="RelOptCost.html" title="interface in org.apache.calcite.plan">RelOptCost</a>&nbsp;getCost&#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="#getCost(org.apache.calcite.rel.RelNode,org.apache.calcite.rel.metadata.RelMetadataQuery)"><code>getCost(RelNode, RelMetadataQuery)</code></a>
or, better, call <a href="../rel/metadata/RelMetadataQuery.html#getCumulativeCost(org.apache.calcite.rel.RelNode)"><code>RelMetadataQuery.getCumulativeCost(RelNode)</code></a>.</div>
</div>
</li>
</ul>
<a id="register(org.apache.calcite.rel.RelNode,org.apache.calcite.rel.RelNode)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>register</h4>
<pre class="methodSignature"><a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;register&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;rel,
<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;equivRel)</pre>
<div class="block">Registers a relational expression in the expression bank.
<p>After it has been registered, you may not modify it.
<p>The expression must not already have been registered. If you are not
sure whether it has been registered, call
<a href="#ensureRegistered(org.apache.calcite.rel.RelNode,org.apache.calcite.rel.RelNode)"><code>ensureRegistered(RelNode, RelNode)</code></a>.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>rel</code> - Relational expression to register (must not already be
registered)</dd>
<dd><code>equivRel</code> - Relational expression it is equivalent to (may be null)</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the same expression, or an equivalent existing expression</dd>
</dl>
</li>
</ul>
<a id="ensureRegistered(org.apache.calcite.rel.RelNode,org.apache.calcite.rel.RelNode)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>ensureRegistered</h4>
<pre class="methodSignature"><a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;ensureRegistered&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;rel,
<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;equivRel)</pre>
<div class="block">Registers a relational expression if it is not already registered.
<p>If <code>equivRel</code> is specified, <code>rel</code> is placed in the same
equivalence set. It is OK if <code>equivRel</code> has different traits;
<code>rel</code> will end up in a different subset of the same set.
<p>It is OK if <code>rel</code> is a subset.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>rel</code> - Relational expression to register</dd>
<dd><code>equivRel</code> - Relational expression it is equivalent to (may be null)</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Registered relational expression</dd>
</dl>
</li>
</ul>
<a id="isRegistered(org.apache.calcite.rel.RelNode)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isRegistered</h4>
<pre class="methodSignature">boolean&nbsp;isRegistered&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;rel)</pre>
<div class="block">Determines whether a relational expression has been registered.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>rel</code> - expression to test</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>whether rel has been registered</dd>
</dl>
</li>
</ul>
<a id="registerSchema(org.apache.calcite.plan.RelOptSchema)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>registerSchema</h4>
<pre class="methodSignature">void&nbsp;registerSchema&#8203;(<a href="RelOptSchema.html" title="interface in org.apache.calcite.plan">RelOptSchema</a>&nbsp;schema)</pre>
<div class="block">Tells this planner that a schema exists. This is the schema's chance to
tell the planner about all of the special transformation rules.</div>
</li>
</ul>
<a id="addListener(org.apache.calcite.plan.RelOptListener)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>addListener</h4>
<pre class="methodSignature">void&nbsp;addListener&#8203;(<a href="RelOptListener.html" title="interface in org.apache.calcite.plan">RelOptListener</a>&nbsp;newListener)</pre>
<div class="block">Adds a listener to this planner.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>newListener</code> - new listener to be notified of events</dd>
</dl>
</li>
</ul>
<a id="registerMetadataProviders(java.util.List)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>registerMetadataProviders</h4>
<pre class="methodSignature">void&nbsp;registerMetadataProviders&#8203;(java.util.List&lt;<a href="../rel/metadata/RelMetadataProvider.html" title="interface in org.apache.calcite.rel.metadata">RelMetadataProvider</a>&gt;&nbsp;list)</pre>
<div class="block">Gives this planner a chance to register one or more
<a href="../rel/metadata/RelMetadataProvider.html" title="interface in org.apache.calcite.rel.metadata"><code>RelMetadataProvider</code></a>s in the chain which will be used to answer
metadata queries.
<p>Planners which use their own relational expressions internally
to represent concepts such as equivalence classes will generally need to
supply corresponding metadata providers.</p></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>list</code> - receives planner's custom providers, if any</dd>
</dl>
</li>
</ul>
<a id="getRelMetadataTimestamp(org.apache.calcite.rel.RelNode)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getRelMetadataTimestamp</h4>
<pre class="methodSignature">long&nbsp;getRelMetadataTimestamp&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;rel)</pre>
<div class="block">Gets a timestamp for a given rel's metadata. This timestamp is used by
<a href="../rel/metadata/CachingRelMetadataProvider.html" title="class in org.apache.calcite.rel.metadata"><code>CachingRelMetadataProvider</code></a> to decide whether cached metadata has
gone stale.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>rel</code> - rel of interest</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>timestamp of last change which might affect metadata derivation</dd>
</dl>
</li>
</ul>
<a id="setImportance(org.apache.calcite.rel.RelNode,double)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setImportance</h4>
<pre class="methodSignature">void&nbsp;setImportance&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;rel,
double&nbsp;importance)</pre>
<div class="block">Sets the importance of a relational expression.
<p>An important use of this method is when a <a href="RelOptRule.html" title="class in org.apache.calcite.plan"><code>RelOptRule</code></a> has
created a relational expression which is indisputably better than the
original relational expression. The rule set the original relational
expression's importance to zero, to reduce the search space. Pending rule
calls are cancelled, and future rules will not fire.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>rel</code> - Relational expression</dd>
<dd><code>importance</code> - Importance</dd>
</dl>
</li>
</ul>
<a id="registerClass(org.apache.calcite.rel.RelNode)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>registerClass</h4>
<pre class="methodSignature">void&nbsp;registerClass&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;node)</pre>
<div class="block">Registers a class of RelNode. If this class of RelNode has been seen
before, does nothing.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>node</code> - Relational expression</dd>
</dl>
</li>
</ul>
<a id="emptyTraitSet()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>emptyTraitSet</h4>
<pre class="methodSignature"><a href="RelTraitSet.html" title="class in org.apache.calcite.plan">RelTraitSet</a>&nbsp;emptyTraitSet()</pre>
<div class="block">Creates an empty trait set. It contains all registered traits, and the
default values of any traits that have them.
<p>The empty trait set acts as the prototype (a kind of factory) for all
subsequently created trait sets.</p></div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Empty trait set</dd>
</dl>
</li>
</ul>
<a id="setExecutor(org.apache.calcite.rex.RexExecutor)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setExecutor</h4>
<pre class="methodSignature">void&nbsp;setExecutor&#8203;(<a href="../rex/RexExecutor.html" title="interface in org.apache.calcite.rex">RexExecutor</a>&nbsp;executor)</pre>
<div class="block">Sets the object that can execute scalar expressions.</div>
</li>
</ul>
<a id="getExecutor()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getExecutor</h4>
<pre class="methodSignature"><a href="../rex/RexExecutor.html" title="interface in org.apache.calcite.rex">RexExecutor</a>&nbsp;getExecutor()</pre>
<div class="block">Returns the executor used to evaluate constant expressions.</div>
</li>
</ul>
<a id="onCopy(org.apache.calcite.rel.RelNode,org.apache.calcite.rel.RelNode)">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>onCopy</h4>
<pre class="methodSignature">void&nbsp;onCopy&#8203;(<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;rel,
<a href="../rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;newRel)</pre>
<div class="block">Called when a relational expression is copied to a similar expression.</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/RelOptPlanner.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>Constr&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>Constr&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>