blob: b30c552a788cd3bc7a07cd0e9a81475210a3897e [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>VolcanoPlanner (Apache Calcite calcite API)</title>
<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
<script type="text/javascript" src="../../../../../script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="VolcanoPlanner (Apache Calcite calcite API)";
}
}
catch(err) {
}
//-->
var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10,"i20":10,"i21":10,"i22":10,"i23":10,"i24":10,"i25":10,"i26":10,"i27":9,"i28":10,"i29":10,"i30":10,"i31":10,"i32":10,"i33":10,"i34":10,"i35":10,"i36":10,"i37":10,"i38":10,"i39":10};
var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../help-doc.html">Help</a></li>
</ul>
<div class="aboutLanguage"><b>Apache Calcite</b></div>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../org/apache/calcite/plan/volcano/RelSubset.html" title="class in org.apache.calcite.plan.volcano"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../../org/apache/calcite/plan/volcano/VolcanoPlannerPhase.html" title="enum in org.apache.calcite.plan.volcano"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../index.html?org/apache/calcite/plan/volcano/VolcanoPlanner.html" target="_top">Frames</a></li>
<li><a href="VolcanoPlanner.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">org.apache.calcite.plan.volcano</div>
<h2 title="Class VolcanoPlanner" class="title">Class VolcanoPlanner</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
<li>
<ul class="inheritance">
<li><a href="../../../../../org/apache/calcite/plan/AbstractRelOptPlanner.html" title="class in org.apache.calcite.plan">org.apache.calcite.plan.AbstractRelOptPlanner</a></li>
<li>
<ul class="inheritance">
<li>org.apache.calcite.plan.volcano.VolcanoPlanner</li>
</ul>
</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Implemented Interfaces:</dt>
<dd><a href="../../../../../org/apache/calcite/plan/RelOptPlanner.html" title="interface in org.apache.calcite.plan">RelOptPlanner</a></dd>
</dl>
<hr>
<br>
<pre>public class <span class="typeNameLabel">VolcanoPlanner</span>
extends <a href="../../../../../org/apache/calcite/plan/AbstractRelOptPlanner.html" title="class in org.apache.calcite.plan">AbstractRelOptPlanner</a></pre>
<div class="block">VolcanoPlanner optimizes queries by transforming expressions selectively
according to a dynamic programming algorithm.</div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ======== NESTED CLASS SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="nested.class.summary">
<!-- -->
</a>
<h3>Nested Class Summary</h3>
<ul class="blockList">
<li class="blockList"><a name="nested.classes.inherited.from.class.org.apache.calcite.plan.RelOptPlanner">
<!-- -->
</a>
<h3>Nested classes/interfaces inherited from interface&nbsp;org.apache.calcite.plan.<a href="../../../../../org/apache/calcite/plan/RelOptPlanner.html" title="interface in org.apache.calcite.plan">RelOptPlanner</a></h3>
<code><a href="../../../../../org/apache/calcite/plan/RelOptPlanner.CannotPlanException.html" title="class in org.apache.calcite.plan">RelOptPlanner.CannotPlanException</a>, <a href="../../../../../org/apache/calcite/plan/RelOptPlanner.Executor.html" title="interface in org.apache.calcite.plan">RelOptPlanner.Executor</a></code></li>
</ul>
</li>
</ul>
<!-- =========== FIELD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="field.summary">
<!-- -->
</a>
<h3>Field Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation">
<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Field and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/calcite/plan/volcano/VolcanoPlanner.html#ambitious">ambitious</a></span></code>
<div class="block">If true, the planner keeps applying rules as long as they continue to
reduce the cost.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>protected static double</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/calcite/plan/volcano/VolcanoPlanner.html#COST_IMPROVEMENT">COST_IMPROVEMENT</a></span></code>&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/calcite/plan/volcano/VolcanoPlanner.html#impatient">impatient</a></span></code>
<div class="block">If true, and if <a href="../../../../../org/apache/calcite/plan/volcano/VolcanoPlanner.html#ambitious"><code>ambitious</code></a> is true, the planner waits a finite
number of iterations for the cost to improve.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>protected <a href="../../../../../org/apache/calcite/plan/volcano/RelSubset.html" title="class in org.apache.calcite.plan.volcano">RelSubset</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/calcite/plan/volcano/VolcanoPlanner.html#root">root</a></span></code>&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="../../../../../org/apache/calcite/plan/RelOptRule.html" title="class in org.apache.calcite.plan">RelOptRule</a>&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/calcite/plan/volcano/VolcanoPlanner.html#ruleSet">ruleSet</a></span></code>
<div class="block">Set of all registered rules.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="fields.inherited.from.class.org.apache.calcite.plan.AbstractRelOptPlanner">
<!-- -->
</a>
<h3>Fields inherited from class&nbsp;org.apache.calcite.plan.<a href="../../../../../org/apache/calcite/plan/AbstractRelOptPlanner.html" title="class in org.apache.calcite.plan">AbstractRelOptPlanner</a></h3>
<code><a href="../../../../../org/apache/calcite/plan/AbstractRelOptPlanner.html#context">context</a>, <a href="../../../../../org/apache/calcite/plan/AbstractRelOptPlanner.html#costFactory">costFactory</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="fields.inherited.from.class.org.apache.calcite.plan.RelOptPlanner">
<!-- -->
</a>
<h3>Fields inherited from interface&nbsp;org.apache.calcite.plan.<a href="../../../../../org/apache/calcite/plan/RelOptPlanner.html" title="interface in org.apache.calcite.plan">RelOptPlanner</a></h3>
<code><a href="../../../../../org/apache/calcite/plan/RelOptPlanner.html#LOGGER">LOGGER</a></code></li>
</ul>
</li>
</ul>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.summary">
<!-- -->
</a>
<h3>Constructor Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colOne" scope="col">Constructor and Description</th>
</tr>
<tr class="altColor">
<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../org/apache/calcite/plan/volcano/VolcanoPlanner.html#VolcanoPlanner--">VolcanoPlanner</a></span>()</code>
<div class="block">Creates a uninitialized <code>VolcanoPlanner</code>.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../org/apache/calcite/plan/volcano/VolcanoPlanner.html#VolcanoPlanner-org.apache.calcite.plan.Context-">VolcanoPlanner</a></span>(<a href="../../../../../org/apache/calcite/plan/Context.html" title="interface in org.apache.calcite.plan">Context</a>&nbsp;externalContext)</code>
<div class="block">Creates a uninitialized <code>VolcanoPlanner</code>.</div>
</td>
</tr>
<tr class="altColor">
<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../org/apache/calcite/plan/volcano/VolcanoPlanner.html#VolcanoPlanner-org.apache.calcite.plan.RelOptCostFactory-org.apache.calcite.plan.Context-">VolcanoPlanner</a></span>(<a href="../../../../../org/apache/calcite/plan/RelOptCostFactory.html" title="interface in org.apache.calcite.plan">RelOptCostFactory</a>&nbsp;costFactory,
<a href="../../../../../org/apache/calcite/plan/Context.html" title="interface in org.apache.calcite.plan">Context</a>&nbsp;externalContext)</code>
<div class="block">Creates a <code>VolcanoPlanner</code> with a given cost factory.</div>
</td>
</tr>
</table>
</li>
</ul>
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method.summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t1" class="tableTab"><span><a href="javascript:show(1);">Static Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/calcite/plan/volcano/VolcanoPlanner.html#addLattice-org.apache.calcite.plan.RelOptLattice-">addLattice</a></span>(<a href="../../../../../org/apache/calcite/plan/RelOptLattice.html" title="class in org.apache.calcite.plan">RelOptLattice</a>&nbsp;lattice)</code>
<div class="block">Defines a lattice.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/calcite/plan/volcano/VolcanoPlanner.html#addListener-org.apache.calcite.plan.RelOptListener-">addListener</a></span>(<a href="../../../../../org/apache/calcite/plan/RelOptListener.html" title="interface in org.apache.calcite.plan">RelOptListener</a>&nbsp;newListener)</code>
<div class="block">Adds a listener to this planner.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/calcite/plan/volcano/VolcanoPlanner.html#addMaterialization-org.apache.calcite.plan.RelOptMaterialization-">addMaterialization</a></span>(<a href="../../../../../org/apache/calcite/plan/RelOptMaterialization.html" title="class in org.apache.calcite.plan">RelOptMaterialization</a>&nbsp;materialization)</code>
<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>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/calcite/plan/volcano/VolcanoPlanner.html#addRelTraitDef-org.apache.calcite.plan.RelTraitDef-">addRelTraitDef</a></span>(<a href="../../../../../org/apache/calcite/plan/RelTraitDef.html" title="class in org.apache.calcite.plan">RelTraitDef</a>&nbsp;relTraitDef)</code>
<div class="block">Registers a rel trait definition.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/calcite/plan/volcano/VolcanoPlanner.html#addRule-org.apache.calcite.plan.RelOptRule-">addRule</a></span>(<a href="../../../../../org/apache/calcite/plan/RelOptRule.html" title="class in org.apache.calcite.plan">RelOptRule</a>&nbsp;rule)</code>
<div class="block">Registers a rule.</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code><a href="../../../../../org/apache/calcite/rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/calcite/plan/volcano/VolcanoPlanner.html#changeTraits-org.apache.calcite.rel.RelNode-org.apache.calcite.plan.RelTraitSet-">changeTraits</a></span>(<a href="../../../../../org/apache/calcite/rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;rel,
<a href="../../../../../org/apache/calcite/plan/RelTraitSet.html" title="class in org.apache.calcite.plan">RelTraitSet</a>&nbsp;toTraits)</code>
<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="../../../../../org/apache/calcite/plan/RelOptPlanner.html" title="interface in org.apache.calcite.plan">RelOptPlanner</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/calcite/plan/volcano/VolcanoPlanner.html#chooseDelegate--">chooseDelegate</a></span>()</code>
<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>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/calcite/plan/volcano/VolcanoPlanner.html#clear--">clear</a></span>()</code>
<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>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/calcite/plan/volcano/VolcanoPlanner.html#clearRelTraitDefs--">clearRelTraitDefs</a></span>()</code>
<div class="block">Clear all the registered RelTraitDef.</div>
</td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/calcite/plan/volcano/VolcanoPlanner.html#dump-java.io.PrintWriter-">dump</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/PrintWriter.html?is-external=true" title="class or interface in java.io">PrintWriter</a>&nbsp;pw)</code>
<div class="block">Dumps the internal state of this VolcanoPlanner to a writer.</div>
</td>
</tr>
<tr id="i10" class="altColor">
<td class="colFirst"><code><a href="../../../../../org/apache/calcite/plan/RelTraitSet.html" title="class in org.apache.calcite.plan">RelTraitSet</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/calcite/plan/volcano/VolcanoPlanner.html#emptyTraitSet--">emptyTraitSet</a></span>()</code>
<div class="block">Creates an empty trait set.</div>
</td>
</tr>
<tr id="i11" class="rowColor">
<td class="colFirst"><code><a href="../../../../../org/apache/calcite/plan/volcano/RelSubset.html" title="class in org.apache.calcite.plan.volcano">RelSubset</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/calcite/plan/volcano/VolcanoPlanner.html#ensureRegistered-org.apache.calcite.rel.RelNode-org.apache.calcite.rel.RelNode-">ensureRegistered</a></span>(<a href="../../../../../org/apache/calcite/rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;rel,
<a href="../../../../../org/apache/calcite/rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;equivRel)</code>
<div class="block">Registers a relational expression if it is not already registered.</div>
</td>
</tr>
<tr id="i12" class="altColor">
<td class="colFirst"><code><a href="../../../../../org/apache/calcite/rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/calcite/plan/volcano/VolcanoPlanner.html#findBestExp--">findBestExp</a></span>()</code>
<div class="block">Finds the most efficient expression to implement the query given via
<a href="../../../../../org/apache/calcite/plan/RelOptPlanner.html#setRoot-org.apache.calcite.rel.RelNode-"><code>RelOptPlanner.setRoot(org.apache.calcite.rel.RelNode)</code></a>.</div>
</td>
</tr>
<tr id="i13" class="rowColor">
<td class="colFirst"><code><a href="../../../../../org/apache/calcite/plan/RelOptCost.html" title="interface in org.apache.calcite.plan">RelOptCost</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/calcite/plan/volcano/VolcanoPlanner.html#getCost-org.apache.calcite.rel.RelNode-org.apache.calcite.rel.metadata.RelMetadataQuery-">getCost</a></span>(<a href="../../../../../org/apache/calcite/rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;rel,
<a href="../../../../../org/apache/calcite/rel/metadata/RelMetadataQuery.html" title="class in org.apache.calcite.rel.metadata">RelMetadataQuery</a>&nbsp;mq)</code>
<div class="block">Computes the cost of a RelNode.</div>
</td>
</tr>
<tr id="i14" class="altColor">
<td class="colFirst"><code><a href="../../../../../org/apache/calcite/plan/RelOptLattice.html" title="class in org.apache.calcite.plan">RelOptLattice</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/calcite/plan/volcano/VolcanoPlanner.html#getLattice-org.apache.calcite.plan.RelOptTable-">getLattice</a></span>(<a href="../../../../../org/apache/calcite/plan/RelOptTable.html" title="interface in org.apache.calcite.plan">RelOptTable</a>&nbsp;table)</code>
<div class="block">Retrieves a lattice, given its star table.</div>
</td>
</tr>
<tr id="i15" class="rowColor">
<td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/calcite/plan/RelOptMaterialization.html" title="class in org.apache.calcite.plan">RelOptMaterialization</a>&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/calcite/plan/volcano/VolcanoPlanner.html#getMaterializations--">getMaterializations</a></span>()</code>
<div class="block">Returns the materializations that have been registered with the planner.</div>
</td>
</tr>
<tr id="i16" class="altColor">
<td class="colFirst"><code>protected <a href="../../../../../org/apache/calcite/plan/volcano/VolcanoPlannerPhaseRuleMappingInitializer.html" title="interface in org.apache.calcite.plan.volcano">VolcanoPlannerPhaseRuleMappingInitializer</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/calcite/plan/volcano/VolcanoPlanner.html#getPhaseRuleMappingInitializer--">getPhaseRuleMappingInitializer</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i17" class="rowColor">
<td class="colFirst"><code>long</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/calcite/plan/volcano/VolcanoPlanner.html#getRelMetadataTimestamp-org.apache.calcite.rel.RelNode-">getRelMetadataTimestamp</a></span>(<a href="../../../../../org/apache/calcite/rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;rel)</code>
<div class="block">Gets a timestamp for a given rel's metadata.</div>
</td>
</tr>
<tr id="i18" class="altColor">
<td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/calcite/plan/RelTraitDef.html" title="class in org.apache.calcite.plan">RelTraitDef</a>&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/calcite/plan/volcano/VolcanoPlanner.html#getRelTraitDefs--">getRelTraitDefs</a></span>()</code>
<div class="block">Returns the list of active trait types.</div>
</td>
</tr>
<tr id="i19" class="rowColor">
<td class="colFirst"><code><a href="../../../../../org/apache/calcite/rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/calcite/plan/volcano/VolcanoPlanner.html#getRoot--">getRoot</a></span>()</code>
<div class="block">Returns the root node of this query.</div>
</td>
</tr>
<tr id="i20" class="altColor">
<td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/calcite/plan/RelOptRule.html" title="class in org.apache.calcite.plan">RelOptRule</a>&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/calcite/plan/volcano/VolcanoPlanner.html#getRules--">getRules</a></span>()</code>
<div class="block">Returns the list of all registered rules.</div>
</td>
</tr>
<tr id="i21" class="rowColor">
<td class="colFirst"><code>org.apache.calcite.plan.volcano.RelSet</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/calcite/plan/volcano/VolcanoPlanner.html#getSet-org.apache.calcite.rel.RelNode-">getSet</a></span>(<a href="../../../../../org/apache/calcite/rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;rel)</code>
<div class="block">Finds an expression's equivalence set.</div>
</td>
</tr>
<tr id="i22" class="altColor">
<td class="colFirst"><code><a href="../../../../../org/apache/calcite/plan/volcano/RelSubset.html" title="class in org.apache.calcite.plan.volcano">RelSubset</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/calcite/plan/volcano/VolcanoPlanner.html#getSubset-org.apache.calcite.rel.RelNode-">getSubset</a></span>(<a href="../../../../../org/apache/calcite/rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;rel)</code>
<div class="block">Returns the subset that a relational expression belongs to.</div>
</td>
</tr>
<tr id="i23" class="rowColor">
<td class="colFirst"><code><a href="../../../../../org/apache/calcite/plan/volcano/RelSubset.html" title="class in org.apache.calcite.plan.volcano">RelSubset</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/calcite/plan/volcano/VolcanoPlanner.html#getSubset-org.apache.calcite.rel.RelNode-org.apache.calcite.plan.RelTraitSet-">getSubset</a></span>(<a href="../../../../../org/apache/calcite/rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;rel,
<a href="../../../../../org/apache/calcite/plan/RelTraitSet.html" title="class in org.apache.calcite.plan">RelTraitSet</a>&nbsp;traits)</code>&nbsp;</td>
</tr>
<tr id="i24" class="altColor">
<td class="colFirst"><code><a href="../../../../../org/apache/calcite/plan/volcano/RelSubset.html" title="class in org.apache.calcite.plan.volcano">RelSubset</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/calcite/plan/volcano/VolcanoPlanner.html#getSubset-org.apache.calcite.rel.RelNode-org.apache.calcite.plan.RelTraitSet-boolean-">getSubset</a></span>(<a href="../../../../../org/apache/calcite/rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;rel,
<a href="../../../../../org/apache/calcite/plan/RelTraitSet.html" title="class in org.apache.calcite.plan">RelTraitSet</a>&nbsp;traits,
boolean&nbsp;createIfMissing)</code>&nbsp;</td>
</tr>
<tr id="i25" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/calcite/plan/volcano/VolcanoPlanner.html#isRegistered-org.apache.calcite.rel.RelNode-">isRegistered</a></span>(<a href="../../../../../org/apache/calcite/rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;rel)</code>
<div class="block">Determines whether a relational expression has been registered.</div>
</td>
</tr>
<tr id="i26" class="altColor">
<td class="colFirst"><code>protected boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/calcite/plan/volcano/VolcanoPlanner.html#isValid-org.apache.calcite.util.Litmus-">isValid</a></span>(<a href="../../../../../org/apache/calcite/util/Litmus.html" title="interface in org.apache.calcite.util">Litmus</a>&nbsp;litmus)</code>
<div class="block">Checks internal consistency.</div>
</td>
</tr>
<tr id="i27" class="rowColor">
<td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/calcite/plan/volcano/VolcanoPlanner.html#normalizePlan-java.lang.String-">normalizePlan</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;plan)</code>
<div class="block">Normalizes references to subsets within the string representation of a
plan.</div>
</td>
</tr>
<tr id="i28" class="altColor">
<td class="colFirst"><code>protected void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/calcite/plan/volcano/VolcanoPlanner.html#onNewClass-org.apache.calcite.rel.RelNode-">onNewClass</a></span>(<a href="../../../../../org/apache/calcite/rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;node)</code>
<div class="block">Called when a new class of <a href="../../../../../org/apache/calcite/rel/RelNode.html" title="interface in org.apache.calcite.rel"><code>RelNode</code></a> is seen.</div>
</td>
</tr>
<tr id="i29" class="rowColor">
<td class="colFirst"><code><a href="../../../../../org/apache/calcite/plan/volcano/RelSubset.html" title="class in org.apache.calcite.plan.volcano">RelSubset</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/calcite/plan/volcano/VolcanoPlanner.html#register-org.apache.calcite.rel.RelNode-org.apache.calcite.rel.RelNode-">register</a></span>(<a href="../../../../../org/apache/calcite/rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;rel,
<a href="../../../../../org/apache/calcite/rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;equivRel)</code>
<div class="block">Registers a relational expression in the expression bank.</div>
</td>
</tr>
<tr id="i30" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/calcite/plan/volcano/VolcanoPlanner.html#registerAbstractRelationalRules--">registerAbstractRelationalRules</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i31" class="rowColor">
<td class="colFirst"><code>protected void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/calcite/plan/volcano/VolcanoPlanner.html#registerMaterializations--">registerMaterializations</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i32" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/calcite/plan/volcano/VolcanoPlanner.html#registerMetadataProviders-java.util.List-">registerMetadataProviders</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/calcite/rel/metadata/RelMetadataProvider.html" title="interface in org.apache.calcite.rel.metadata">RelMetadataProvider</a>&gt;&nbsp;list)</code>
<div class="block">Gives this planner a chance to register one or more
<a href="../../../../../org/apache/calcite/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="i33" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/calcite/plan/volcano/VolcanoPlanner.html#registerSchema-org.apache.calcite.plan.RelOptSchema-">registerSchema</a></span>(<a href="../../../../../org/apache/calcite/plan/RelOptSchema.html" title="interface in org.apache.calcite.plan">RelOptSchema</a>&nbsp;schema)</code>
<div class="block">Tells this planner that a schema exists.</div>
</td>
</tr>
<tr id="i34" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/calcite/plan/volcano/VolcanoPlanner.html#removeRule-org.apache.calcite.plan.RelOptRule-">removeRule</a></span>(<a href="../../../../../org/apache/calcite/plan/RelOptRule.html" title="class in org.apache.calcite.plan">RelOptRule</a>&nbsp;rule)</code>
<div class="block">Removes a rule.</div>
</td>
</tr>
<tr id="i35" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/calcite/plan/volcano/VolcanoPlanner.html#setImportance-org.apache.calcite.rel.RelNode-double-">setImportance</a></span>(<a href="../../../../../org/apache/calcite/rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;rel,
double&nbsp;importance)</code>
<div class="block">Sets the importance of a relational expression.</div>
</td>
</tr>
<tr id="i36" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/calcite/plan/volcano/VolcanoPlanner.html#setLocked-boolean-">setLocked</a></span>(boolean&nbsp;locked)</code>
<div class="block">Sets whether this planner is locked.</div>
</td>
</tr>
<tr id="i37" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/calcite/plan/volcano/VolcanoPlanner.html#setNoneConventionHasInfiniteCost-boolean-">setNoneConventionHasInfiniteCost</a></span>(boolean&nbsp;infinite)</code>
<div class="block">Sets whether this planner should consider rel nodes with Convention.NONE
to have infinite cost or not.</div>
</td>
</tr>
<tr id="i38" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/calcite/plan/volcano/VolcanoPlanner.html#setRoot-org.apache.calcite.rel.RelNode-">setRoot</a></span>(<a href="../../../../../org/apache/calcite/rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;rel)</code>
<div class="block">Sets the root node of this query.</div>
</td>
</tr>
<tr id="i39" class="rowColor">
<td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/calcite/plan/volcano/VolcanoPlanner.html#toDot--">toDot</a></span>()</code>&nbsp;</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.org.apache.calcite.plan.AbstractRelOptPlanner">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;org.apache.calcite.plan.<a href="../../../../../org/apache/calcite/plan/AbstractRelOptPlanner.html" title="class in org.apache.calcite.plan">AbstractRelOptPlanner</a></h3>
<code><a href="../../../../../org/apache/calcite/plan/AbstractRelOptPlanner.html#checkCancel--">checkCancel</a>, <a href="../../../../../org/apache/calcite/plan/AbstractRelOptPlanner.html#fireRule-org.apache.calcite.plan.RelOptRuleCall-">fireRule</a>, <a href="../../../../../org/apache/calcite/plan/AbstractRelOptPlanner.html#getContext--">getContext</a>, <a href="../../../../../org/apache/calcite/plan/AbstractRelOptPlanner.html#getCost-org.apache.calcite.rel.RelNode-">getCost</a>, <a href="../../../../../org/apache/calcite/plan/AbstractRelOptPlanner.html#getCostFactory--">getCostFactory</a>, <a href="../../../../../org/apache/calcite/plan/AbstractRelOptPlanner.html#getExecutor--">getExecutor</a>, <a href="../../../../../org/apache/calcite/plan/AbstractRelOptPlanner.html#getListener--">getListener</a>, <a href="../../../../../org/apache/calcite/plan/AbstractRelOptPlanner.html#getRuleByDescription-java.lang.String-">getRuleByDescription</a>, <a href="../../../../../org/apache/calcite/plan/AbstractRelOptPlanner.html#isRuleExcluded-org.apache.calcite.plan.RelOptRule-">isRuleExcluded</a>, <a href="../../../../../org/apache/calcite/plan/AbstractRelOptPlanner.html#key-org.apache.calcite.rel.RelNode-">key</a>, <a href="../../../../../org/apache/calcite/plan/AbstractRelOptPlanner.html#key-java.lang.String-org.apache.calcite.rel.type.RelDataType-">key</a>, <a href="../../../../../org/apache/calcite/plan/AbstractRelOptPlanner.html#mapRuleDescription-org.apache.calcite.plan.RelOptRule-">mapRuleDescription</a>, <a href="../../../../../org/apache/calcite/plan/AbstractRelOptPlanner.html#notifyChosen-org.apache.calcite.rel.RelNode-">notifyChosen</a>, <a href="../../../../../org/apache/calcite/plan/AbstractRelOptPlanner.html#notifyDiscard-org.apache.calcite.rel.RelNode-">notifyDiscard</a>, <a href="../../../../../org/apache/calcite/plan/AbstractRelOptPlanner.html#notifyEquivalence-org.apache.calcite.rel.RelNode-java.lang.Object-boolean-">notifyEquivalence</a>, <a href="../../../../../org/apache/calcite/plan/AbstractRelOptPlanner.html#notifyTransformation-org.apache.calcite.plan.RelOptRuleCall-org.apache.calcite.rel.RelNode-boolean-">notifyTransformation</a>, <a href="../../../../../org/apache/calcite/plan/AbstractRelOptPlanner.html#onCopy-org.apache.calcite.rel.RelNode-org.apache.calcite.rel.RelNode-">onCopy</a>, <a href="../../../../../org/apache/calcite/plan/AbstractRelOptPlanner.html#registerClass-org.apache.calcite.rel.RelNode-">registerClass</a>, <a href="../../../../../org/apache/calcite/plan/AbstractRelOptPlanner.html#setCancelFlag-org.apache.calcite.util.CancelFlag-">setCancelFlag</a>, <a href="../../../../../org/apache/calcite/plan/AbstractRelOptPlanner.html#setExecutor-org.apache.calcite.rex.RexExecutor-">setExecutor</a>, <a href="../../../../../org/apache/calcite/plan/AbstractRelOptPlanner.html#setRuleDescExclusionFilter-java.util.regex.Pattern-">setRuleDescExclusionFilter</a>, <a href="../../../../../org/apache/calcite/plan/AbstractRelOptPlanner.html#subClasses-java.lang.Class-">subClasses</a>, <a href="../../../../../org/apache/calcite/plan/AbstractRelOptPlanner.html#unmapRuleDescription-org.apache.calcite.plan.RelOptRule-">unmapRuleDescription</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ FIELD DETAIL =========== -->
<ul class="blockList">
<li class="blockList"><a name="field.detail">
<!-- -->
</a>
<h3>Field Detail</h3>
<a name="COST_IMPROVEMENT">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>COST_IMPROVEMENT</h4>
<pre>protected static final&nbsp;double COST_IMPROVEMENT</pre>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../../constant-values.html#org.apache.calcite.plan.volcano.VolcanoPlanner.COST_IMPROVEMENT">Constant Field Values</a></dd>
</dl>
</li>
</ul>
<a name="root">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>root</h4>
<pre>protected&nbsp;<a href="../../../../../org/apache/calcite/plan/volcano/RelSubset.html" title="class in org.apache.calcite.plan.volcano">RelSubset</a> root</pre>
</li>
</ul>
<a name="ambitious">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>ambitious</h4>
<pre>protected&nbsp;boolean ambitious</pre>
<div class="block">If true, the planner keeps applying rules as long as they continue to
reduce the cost. If false, the planner terminates as soon as it has found
any implementation, no matter how expensive.</div>
</li>
</ul>
<a name="impatient">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>impatient</h4>
<pre>protected&nbsp;boolean impatient</pre>
<div class="block">If true, and if <a href="../../../../../org/apache/calcite/plan/volcano/VolcanoPlanner.html#ambitious"><code>ambitious</code></a> is true, the planner waits a finite
number of iterations for the cost to improve.
<p>The number of iterations K is equal to the number of iterations
required to get the first finite plan. After the first finite plan, it
continues to fire rules to try to improve it. The planner sets a target
cost of the current best cost multiplied by <a href="../../../../../org/apache/calcite/plan/volcano/VolcanoPlanner.html#COST_IMPROVEMENT"><code>COST_IMPROVEMENT</code></a>. If
it does not meet that cost target within K steps, it quits, and uses the
current best plan. If it meets the cost, it sets a new, lower target, and
has another K iterations to meet it. And so forth.
<p>If false, the planner continues to fire rules until the rule queue is
empty.</div>
</li>
</ul>
<a name="ruleSet">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>ruleSet</h4>
<pre>protected final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="../../../../../org/apache/calcite/plan/RelOptRule.html" title="class in org.apache.calcite.plan">RelOptRule</a>&gt; ruleSet</pre>
<div class="block">Set of all registered rules.</div>
</li>
</ul>
</li>
</ul>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a name="VolcanoPlanner--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>VolcanoPlanner</h4>
<pre>public&nbsp;VolcanoPlanner()</pre>
<div class="block">Creates a uninitialized <code>VolcanoPlanner</code>. To fully initialize
it, the caller must register the desired set of relations, rules, and
calling conventions.</div>
</li>
</ul>
<a name="VolcanoPlanner-org.apache.calcite.plan.Context-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>VolcanoPlanner</h4>
<pre>public&nbsp;VolcanoPlanner(<a href="../../../../../org/apache/calcite/plan/Context.html" title="interface in org.apache.calcite.plan">Context</a>&nbsp;externalContext)</pre>
<div class="block">Creates a uninitialized <code>VolcanoPlanner</code>. To fully initialize
it, the caller must register the desired set of relations, rules, and
calling conventions.</div>
</li>
</ul>
<a name="VolcanoPlanner-org.apache.calcite.plan.RelOptCostFactory-org.apache.calcite.plan.Context-">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>VolcanoPlanner</h4>
<pre>public&nbsp;VolcanoPlanner(<a href="../../../../../org/apache/calcite/plan/RelOptCostFactory.html" title="interface in org.apache.calcite.plan">RelOptCostFactory</a>&nbsp;costFactory,
<a href="../../../../../org/apache/calcite/plan/Context.html" title="interface in org.apache.calcite.plan">Context</a>&nbsp;externalContext)</pre>
<div class="block">Creates a <code>VolcanoPlanner</code> with a given cost factory.</div>
</li>
</ul>
</li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a name="getPhaseRuleMappingInitializer--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getPhaseRuleMappingInitializer</h4>
<pre>protected&nbsp;<a href="../../../../../org/apache/calcite/plan/volcano/VolcanoPlannerPhaseRuleMappingInitializer.html" title="interface in org.apache.calcite.plan.volcano">VolcanoPlannerPhaseRuleMappingInitializer</a>&nbsp;getPhaseRuleMappingInitializer()</pre>
</li>
</ul>
<a name="isRegistered-org.apache.calcite.rel.RelNode-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isRegistered</h4>
<pre>public&nbsp;boolean&nbsp;isRegistered(<a href="../../../../../org/apache/calcite/rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;rel)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/calcite/plan/RelOptPlanner.html#isRegistered-org.apache.calcite.rel.RelNode-">RelOptPlanner</a></code></span></div>
<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 name="setRoot-org.apache.calcite.rel.RelNode-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setRoot</h4>
<pre>public&nbsp;void&nbsp;setRoot(<a href="../../../../../org/apache/calcite/rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;rel)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/calcite/plan/RelOptPlanner.html#setRoot-org.apache.calcite.rel.RelNode-">RelOptPlanner</a></code></span></div>
<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 name="getRoot--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getRoot</h4>
<pre>public&nbsp;<a href="../../../../../org/apache/calcite/rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;getRoot()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/calcite/plan/RelOptPlanner.html#getRoot--">RelOptPlanner</a></code></span></div>
<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 name="getMaterializations--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getMaterializations</h4>
<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/calcite/plan/RelOptMaterialization.html" title="class in org.apache.calcite.plan">RelOptMaterialization</a>&gt;&nbsp;getMaterializations()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/calcite/plan/RelOptPlanner.html#getMaterializations--">RelOptPlanner</a></code></span></div>
<div class="block">Returns the materializations that have been registered with the planner.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../org/apache/calcite/plan/RelOptPlanner.html#getMaterializations--">getMaterializations</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/calcite/plan/RelOptPlanner.html" title="interface in org.apache.calcite.plan">RelOptPlanner</a></code></dd>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../../org/apache/calcite/plan/AbstractRelOptPlanner.html#getMaterializations--">getMaterializations</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/calcite/plan/AbstractRelOptPlanner.html" title="class in org.apache.calcite.plan">AbstractRelOptPlanner</a></code></dd>
</dl>
</li>
</ul>
<a name="addMaterialization-org.apache.calcite.plan.RelOptMaterialization-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>addMaterialization</h4>
<pre>public&nbsp;void&nbsp;addMaterialization(<a href="../../../../../org/apache/calcite/plan/RelOptMaterialization.html" title="class in org.apache.calcite.plan">RelOptMaterialization</a>&nbsp;materialization)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/calcite/plan/RelOptPlanner.html#addMaterialization-org.apache.calcite.plan.RelOptMaterialization-">RelOptPlanner</a></code></span></div>
<div class="block">Defines a pair of relational expressions that are equivalent.
<p>Typically <code>tableRel</code> is a
<a href="../../../../../org/apache/calcite/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>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../org/apache/calcite/plan/RelOptPlanner.html#addMaterialization-org.apache.calcite.plan.RelOptMaterialization-">addMaterialization</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/calcite/plan/RelOptPlanner.html" title="interface in org.apache.calcite.plan">RelOptPlanner</a></code></dd>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../../org/apache/calcite/plan/AbstractRelOptPlanner.html#addMaterialization-org.apache.calcite.plan.RelOptMaterialization-">addMaterialization</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/calcite/plan/AbstractRelOptPlanner.html" title="class in org.apache.calcite.plan">AbstractRelOptPlanner</a></code></dd>
</dl>
</li>
</ul>
<a name="addLattice-org.apache.calcite.plan.RelOptLattice-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>addLattice</h4>
<pre>public&nbsp;void&nbsp;addLattice(<a href="../../../../../org/apache/calcite/plan/RelOptLattice.html" title="class in org.apache.calcite.plan">RelOptLattice</a>&nbsp;lattice)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/calcite/plan/RelOptPlanner.html#addLattice-org.apache.calcite.plan.RelOptLattice-">RelOptPlanner</a></code></span></div>
<div class="block">Defines a lattice.
<p>The lattice may have materializations; it is not necessary to call
<a href="../../../../../org/apache/calcite/plan/RelOptPlanner.html#addMaterialization-org.apache.calcite.plan.RelOptMaterialization-"><code>RelOptPlanner.addMaterialization(org.apache.calcite.plan.RelOptMaterialization)</code></a> for these; they are registered implicitly.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../org/apache/calcite/plan/RelOptPlanner.html#addLattice-org.apache.calcite.plan.RelOptLattice-">addLattice</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/calcite/plan/RelOptPlanner.html" title="interface in org.apache.calcite.plan">RelOptPlanner</a></code></dd>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../../org/apache/calcite/plan/AbstractRelOptPlanner.html#addLattice-org.apache.calcite.plan.RelOptLattice-">addLattice</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/calcite/plan/AbstractRelOptPlanner.html" title="class in org.apache.calcite.plan">AbstractRelOptPlanner</a></code></dd>
</dl>
</li>
</ul>
<a name="getLattice-org.apache.calcite.plan.RelOptTable-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getLattice</h4>
<pre>public&nbsp;<a href="../../../../../org/apache/calcite/plan/RelOptLattice.html" title="class in org.apache.calcite.plan">RelOptLattice</a>&nbsp;getLattice(<a href="../../../../../org/apache/calcite/plan/RelOptTable.html" title="interface in org.apache.calcite.plan">RelOptTable</a>&nbsp;table)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/calcite/plan/RelOptPlanner.html#getLattice-org.apache.calcite.plan.RelOptTable-">RelOptPlanner</a></code></span></div>
<div class="block">Retrieves a lattice, given its star table.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../org/apache/calcite/plan/RelOptPlanner.html#getLattice-org.apache.calcite.plan.RelOptTable-">getLattice</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/calcite/plan/RelOptPlanner.html" title="interface in org.apache.calcite.plan">RelOptPlanner</a></code></dd>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../../org/apache/calcite/plan/AbstractRelOptPlanner.html#getLattice-org.apache.calcite.plan.RelOptTable-">getLattice</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/calcite/plan/AbstractRelOptPlanner.html" title="class in org.apache.calcite.plan">AbstractRelOptPlanner</a></code></dd>
</dl>
</li>
</ul>
<a name="registerMaterializations--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>registerMaterializations</h4>
<pre>protected&nbsp;void&nbsp;registerMaterializations()</pre>
</li>
</ul>
<a name="getSet-org.apache.calcite.rel.RelNode-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getSet</h4>
<pre>public&nbsp;org.apache.calcite.plan.volcano.RelSet&nbsp;getSet(<a href="../../../../../org/apache/calcite/rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;rel)</pre>
<div class="block">Finds an expression's equivalence set. If the expression is not
registered, returns null.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>rel</code> - Relational expression</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Equivalence set that expression belongs to, or null if it is not
registered</dd>
</dl>
</li>
</ul>
<a name="addRelTraitDef-org.apache.calcite.plan.RelTraitDef-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>addRelTraitDef</h4>
<pre>public&nbsp;boolean&nbsp;addRelTraitDef(<a href="../../../../../org/apache/calcite/plan/RelTraitDef.html" title="class in org.apache.calcite.plan">RelTraitDef</a>&nbsp;relTraitDef)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/calcite/plan/RelOptPlanner.html#addRelTraitDef-org.apache.calcite.plan.RelTraitDef-">RelOptPlanner</a></code></span></div>
<div class="block">Registers a rel trait definition. If the <a href="../../../../../org/apache/calcite/plan/RelTraitDef.html" title="class in org.apache.calcite.plan"><code>RelTraitDef</code></a> has already
been registered, does nothing.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../org/apache/calcite/plan/RelOptPlanner.html#addRelTraitDef-org.apache.calcite.plan.RelTraitDef-">addRelTraitDef</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/calcite/plan/RelOptPlanner.html" title="interface in org.apache.calcite.plan">RelOptPlanner</a></code></dd>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../../org/apache/calcite/plan/AbstractRelOptPlanner.html#addRelTraitDef-org.apache.calcite.plan.RelTraitDef-">addRelTraitDef</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/calcite/plan/AbstractRelOptPlanner.html" title="class in org.apache.calcite.plan">AbstractRelOptPlanner</a></code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>whether the RelTraitDef was added, as per
<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true#add-E-" title="class or interface in java.util"><code>Collection.add(E)</code></a></dd>
</dl>
</li>
</ul>
<a name="clearRelTraitDefs--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>clearRelTraitDefs</h4>
<pre>public&nbsp;void&nbsp;clearRelTraitDefs()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/calcite/plan/RelOptPlanner.html#clearRelTraitDefs--">RelOptPlanner</a></code></span></div>
<div class="block">Clear all the registered RelTraitDef.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../org/apache/calcite/plan/RelOptPlanner.html#clearRelTraitDefs--">clearRelTraitDefs</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/calcite/plan/RelOptPlanner.html" title="interface in org.apache.calcite.plan">RelOptPlanner</a></code></dd>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../../org/apache/calcite/plan/AbstractRelOptPlanner.html#clearRelTraitDefs--">clearRelTraitDefs</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/calcite/plan/AbstractRelOptPlanner.html" title="class in org.apache.calcite.plan">AbstractRelOptPlanner</a></code></dd>
</dl>
</li>
</ul>
<a name="getRelTraitDefs--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getRelTraitDefs</h4>
<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/calcite/plan/RelTraitDef.html" title="class in org.apache.calcite.plan">RelTraitDef</a>&gt;&nbsp;getRelTraitDefs()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/calcite/plan/RelOptPlanner.html#getRelTraitDefs--">RelOptPlanner</a></code></span></div>
<div class="block">Returns the list of active trait types.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../org/apache/calcite/plan/RelOptPlanner.html#getRelTraitDefs--">getRelTraitDefs</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/calcite/plan/RelOptPlanner.html" title="interface in org.apache.calcite.plan">RelOptPlanner</a></code></dd>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../../org/apache/calcite/plan/AbstractRelOptPlanner.html#getRelTraitDefs--">getRelTraitDefs</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/calcite/plan/AbstractRelOptPlanner.html" title="class in org.apache.calcite.plan">AbstractRelOptPlanner</a></code></dd>
</dl>
</li>
</ul>
<a name="emptyTraitSet--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>emptyTraitSet</h4>
<pre>public&nbsp;<a href="../../../../../org/apache/calcite/plan/RelTraitSet.html" title="class in org.apache.calcite.plan">RelTraitSet</a>&nbsp;emptyTraitSet()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/calcite/plan/RelOptPlanner.html#emptyTraitSet--">RelOptPlanner</a></code></span></div>
<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="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../org/apache/calcite/plan/RelOptPlanner.html#emptyTraitSet--">emptyTraitSet</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/calcite/plan/RelOptPlanner.html" title="interface in org.apache.calcite.plan">RelOptPlanner</a></code></dd>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../../org/apache/calcite/plan/AbstractRelOptPlanner.html#emptyTraitSet--">emptyTraitSet</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/calcite/plan/AbstractRelOptPlanner.html" title="class in org.apache.calcite.plan">AbstractRelOptPlanner</a></code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Empty trait set</dd>
</dl>
</li>
</ul>
<a name="clear--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>clear</h4>
<pre>public&nbsp;void&nbsp;clear()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/calcite/plan/RelOptPlanner.html#clear--">RelOptPlanner</a></code></span></div>
<div class="block">Removes all internal state, including all registered rules,
materialized views, and lattices.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../org/apache/calcite/plan/RelOptPlanner.html#clear--">clear</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/calcite/plan/RelOptPlanner.html" title="interface in org.apache.calcite.plan">RelOptPlanner</a></code></dd>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../../org/apache/calcite/plan/AbstractRelOptPlanner.html#clear--">clear</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/calcite/plan/AbstractRelOptPlanner.html" title="class in org.apache.calcite.plan">AbstractRelOptPlanner</a></code></dd>
</dl>
</li>
</ul>
<a name="getRules--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getRules</h4>
<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/calcite/plan/RelOptRule.html" title="class in org.apache.calcite.plan">RelOptRule</a>&gt;&nbsp;getRules()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/calcite/plan/RelOptPlanner.html#getRules--">RelOptPlanner</a></code></span></div>
<div class="block">Returns the list of all registered rules.</div>
</li>
</ul>
<a name="addRule-org.apache.calcite.plan.RelOptRule-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>addRule</h4>
<pre>public&nbsp;boolean&nbsp;addRule(<a href="../../../../../org/apache/calcite/plan/RelOptRule.html" title="class in org.apache.calcite.plan">RelOptRule</a>&nbsp;rule)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/calcite/plan/RelOptPlanner.html#addRule-org.apache.calcite.plan.RelOptRule-">RelOptPlanner</a></code></span></div>
<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="../../../../../org/apache/calcite/rel/convert/ConverterRule.html" title="class in org.apache.calcite.rel.convert"><code>ConverterRule</code></a> and pass the
ConverterRule to all
<a href="../../../../../org/apache/calcite/plan/RelOptPlanner.html#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
<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true#add-E-" title="class or interface in java.util"><code>Collection.add(E)</code></a></dd>
</dl>
</li>
</ul>
<a name="removeRule-org.apache.calcite.plan.RelOptRule-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>removeRule</h4>
<pre>public&nbsp;boolean&nbsp;removeRule(<a href="../../../../../org/apache/calcite/plan/RelOptRule.html" title="class in org.apache.calcite.plan">RelOptRule</a>&nbsp;rule)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/calcite/plan/RelOptPlanner.html#removeRule-org.apache.calcite.plan.RelOptRule-">RelOptPlanner</a></code></span></div>
<div class="block">Removes a rule.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>true if the rule was present, as per
<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true#remove-java.lang.Object-" title="class or interface in java.util"><code>Collection.remove(Object)</code></a></dd>
</dl>
</li>
</ul>
<a name="onNewClass-org.apache.calcite.rel.RelNode-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>onNewClass</h4>
<pre>protected&nbsp;void&nbsp;onNewClass(<a href="../../../../../org/apache/calcite/rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;node)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../org/apache/calcite/plan/AbstractRelOptPlanner.html#onNewClass-org.apache.calcite.rel.RelNode-">AbstractRelOptPlanner</a></code></span></div>
<div class="block">Called when a new class of <a href="../../../../../org/apache/calcite/rel/RelNode.html" title="interface in org.apache.calcite.rel"><code>RelNode</code></a> is seen.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../../org/apache/calcite/plan/AbstractRelOptPlanner.html#onNewClass-org.apache.calcite.rel.RelNode-">onNewClass</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/calcite/plan/AbstractRelOptPlanner.html" title="class in org.apache.calcite.plan">AbstractRelOptPlanner</a></code></dd>
</dl>
</li>
</ul>
<a name="changeTraits-org.apache.calcite.rel.RelNode-org.apache.calcite.plan.RelTraitSet-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>changeTraits</h4>
<pre>public&nbsp;<a href="../../../../../org/apache/calcite/rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;changeTraits(<a href="../../../../../org/apache/calcite/rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;rel,
<a href="../../../../../org/apache/calcite/plan/RelTraitSet.html" title="class in org.apache.calcite.plan">RelTraitSet</a>&nbsp;toTraits)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/calcite/plan/RelOptPlanner.html#changeTraits-org.apache.calcite.rel.RelNode-org.apache.calcite.plan.RelTraitSet-">RelOptPlanner</a></code></span></div>
<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 name="chooseDelegate--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>chooseDelegate</h4>
<pre>public&nbsp;<a href="../../../../../org/apache/calcite/plan/RelOptPlanner.html" title="interface in org.apache.calcite.plan">RelOptPlanner</a>&nbsp;chooseDelegate()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/calcite/plan/RelOptPlanner.html#chooseDelegate--">RelOptPlanner</a></code></span></div>
<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>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../org/apache/calcite/plan/RelOptPlanner.html#chooseDelegate--">chooseDelegate</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/calcite/plan/RelOptPlanner.html" title="interface in org.apache.calcite.plan">RelOptPlanner</a></code></dd>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../../org/apache/calcite/plan/AbstractRelOptPlanner.html#chooseDelegate--">chooseDelegate</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/calcite/plan/AbstractRelOptPlanner.html" title="class in org.apache.calcite.plan">AbstractRelOptPlanner</a></code></dd>
</dl>
</li>
</ul>
<a name="findBestExp--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>findBestExp</h4>
<pre>public&nbsp;<a href="../../../../../org/apache/calcite/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 the query given via
<a href="../../../../../org/apache/calcite/plan/RelOptPlanner.html#setRoot-org.apache.calcite.rel.RelNode-"><code>RelOptPlanner.setRoot(org.apache.calcite.rel.RelNode)</code></a>.
<p>The algorithm executes repeatedly in a series of phases. In each phase
the exact rules that may be fired varies. The mapping of phases to rule
sets is maintained in the <a href="../../../../../org/apache/calcite/plan/volcano/VolcanoPlanner.html#ruleQueue"><code>ruleQueue</code></a>.
<p>In each phase, the planner sets the initial importance of the existing
RelSubSets (<a href="../../../../../org/apache/calcite/plan/volcano/VolcanoPlanner.html#setInitialImportance--"><code>setInitialImportance()</code></a>). The planner then iterates
over the rule matches presented by the rule queue until:
<ol>
<li>The rule queue becomes empty.</li>
<li>For ambitious planners: No improvements to the plan have been made
recently (specifically within a number of iterations that is 10% of the
number of iterations necessary to first reach an implementable plan or 25
iterations whichever is larger).</li>
<li>For non-ambitious planners: When an implementable plan is found.</li>
</ol>
<p>Furthermore, after every 10 iterations without an implementable plan,
RelSubSets that contain only logical RelNodes are given an importance
boost via <a href="../../../../../org/apache/calcite/plan/volcano/VolcanoPlanner.html#injectImportanceBoost--"><code>injectImportanceBoost()</code></a>. Once an implementable plan is
found, the artificially raised importance values are cleared (see
<a href="../../../../../org/apache/calcite/plan/volcano/VolcanoPlanner.html#clearImportanceBoost--"><code>clearImportanceBoost()</code></a>).</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the most efficient RelNode tree found for implementing the given
query</dd>
</dl>
</li>
</ul>
<a name="register-org.apache.calcite.rel.RelNode-org.apache.calcite.rel.RelNode-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>register</h4>
<pre>public&nbsp;<a href="../../../../../org/apache/calcite/plan/volcano/RelSubset.html" title="class in org.apache.calcite.plan.volcano">RelSubset</a>&nbsp;register(<a href="../../../../../org/apache/calcite/rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;rel,
<a href="../../../../../org/apache/calcite/rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;equivRel)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/calcite/plan/RelOptPlanner.html#register-org.apache.calcite.rel.RelNode-org.apache.calcite.rel.RelNode-">RelOptPlanner</a></code></span></div>
<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="../../../../../org/apache/calcite/plan/RelOptPlanner.html#ensureRegistered-org.apache.calcite.rel.RelNode-org.apache.calcite.rel.RelNode-"><code>RelOptPlanner.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 name="ensureRegistered-org.apache.calcite.rel.RelNode-org.apache.calcite.rel.RelNode-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>ensureRegistered</h4>
<pre>public&nbsp;<a href="../../../../../org/apache/calcite/plan/volcano/RelSubset.html" title="class in org.apache.calcite.plan.volcano">RelSubset</a>&nbsp;ensureRegistered(<a href="../../../../../org/apache/calcite/rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;rel,
<a href="../../../../../org/apache/calcite/rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;equivRel)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/calcite/plan/RelOptPlanner.html#ensureRegistered-org.apache.calcite.rel.RelNode-org.apache.calcite.rel.RelNode-">RelOptPlanner</a></code></span></div>
<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 name="isValid-org.apache.calcite.util.Litmus-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isValid</h4>
<pre>protected&nbsp;boolean&nbsp;isValid(<a href="../../../../../org/apache/calcite/util/Litmus.html" title="interface in org.apache.calcite.util">Litmus</a>&nbsp;litmus)</pre>
<div class="block">Checks internal consistency.</div>
</li>
</ul>
<a name="registerAbstractRelationalRules--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>registerAbstractRelationalRules</h4>
<pre>public&nbsp;void&nbsp;registerAbstractRelationalRules()</pre>
</li>
</ul>
<a name="registerSchema-org.apache.calcite.plan.RelOptSchema-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>registerSchema</h4>
<pre>public&nbsp;void&nbsp;registerSchema(<a href="../../../../../org/apache/calcite/plan/RelOptSchema.html" title="interface in org.apache.calcite.plan">RelOptSchema</a>&nbsp;schema)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/calcite/plan/RelOptPlanner.html#registerSchema-org.apache.calcite.plan.RelOptSchema-">RelOptPlanner</a></code></span></div>
<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>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../org/apache/calcite/plan/RelOptPlanner.html#registerSchema-org.apache.calcite.plan.RelOptSchema-">registerSchema</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/calcite/plan/RelOptPlanner.html" title="interface in org.apache.calcite.plan">RelOptPlanner</a></code></dd>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../../org/apache/calcite/plan/AbstractRelOptPlanner.html#registerSchema-org.apache.calcite.plan.RelOptSchema-">registerSchema</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/calcite/plan/AbstractRelOptPlanner.html" title="class in org.apache.calcite.plan">AbstractRelOptPlanner</a></code></dd>
</dl>
</li>
</ul>
<a name="setNoneConventionHasInfiniteCost-boolean-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setNoneConventionHasInfiniteCost</h4>
<pre>public&nbsp;void&nbsp;setNoneConventionHasInfiniteCost(boolean&nbsp;infinite)</pre>
<div class="block">Sets whether this planner should consider rel nodes with Convention.NONE
to have infinite cost or not.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>infinite</code> - Whether to make none convention rel nodes infinite cost</dd>
</dl>
</li>
</ul>
<a name="getCost-org.apache.calcite.rel.RelNode-org.apache.calcite.rel.metadata.RelMetadataQuery-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getCost</h4>
<pre>public&nbsp;<a href="../../../../../org/apache/calcite/plan/RelOptCost.html" title="interface in org.apache.calcite.plan">RelOptCost</a>&nbsp;getCost(<a href="../../../../../org/apache/calcite/rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;rel,
<a href="../../../../../org/apache/calcite/rel/metadata/RelMetadataQuery.html" title="class in org.apache.calcite.rel.metadata">RelMetadataQuery</a>&nbsp;mq)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/calcite/plan/RelOptPlanner.html#getCost-org.apache.calcite.rel.RelNode-org.apache.calcite.rel.metadata.RelMetadataQuery-">RelOptPlanner</a></code></span></div>
<div class="block">Computes the cost of a RelNode. In most cases, this just dispatches to
<a href="../../../../../org/apache/calcite/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="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../org/apache/calcite/plan/RelOptPlanner.html#getCost-org.apache.calcite.rel.RelNode-org.apache.calcite.rel.metadata.RelMetadataQuery-">getCost</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/calcite/plan/RelOptPlanner.html" title="interface in org.apache.calcite.plan">RelOptPlanner</a></code></dd>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../../org/apache/calcite/plan/AbstractRelOptPlanner.html#getCost-org.apache.calcite.rel.RelNode-org.apache.calcite.rel.metadata.RelMetadataQuery-">getCost</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/calcite/plan/AbstractRelOptPlanner.html" title="class in org.apache.calcite.plan">AbstractRelOptPlanner</a></code></dd>
<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 name="getSubset-org.apache.calcite.rel.RelNode-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getSubset</h4>
<pre>public&nbsp;<a href="../../../../../org/apache/calcite/plan/volcano/RelSubset.html" title="class in org.apache.calcite.plan.volcano">RelSubset</a>&nbsp;getSubset(<a href="../../../../../org/apache/calcite/rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;rel)</pre>
<div class="block">Returns the subset that a relational expression belongs to.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>rel</code> - Relational expression</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Subset it belongs to, or null if it is not registered</dd>
</dl>
</li>
</ul>
<a name="getSubset-org.apache.calcite.rel.RelNode-org.apache.calcite.plan.RelTraitSet-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getSubset</h4>
<pre>public&nbsp;<a href="../../../../../org/apache/calcite/plan/volcano/RelSubset.html" title="class in org.apache.calcite.plan.volcano">RelSubset</a>&nbsp;getSubset(<a href="../../../../../org/apache/calcite/rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;rel,
<a href="../../../../../org/apache/calcite/plan/RelTraitSet.html" title="class in org.apache.calcite.plan">RelTraitSet</a>&nbsp;traits)</pre>
</li>
</ul>
<a name="getSubset-org.apache.calcite.rel.RelNode-org.apache.calcite.plan.RelTraitSet-boolean-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getSubset</h4>
<pre>public&nbsp;<a href="../../../../../org/apache/calcite/plan/volcano/RelSubset.html" title="class in org.apache.calcite.plan.volcano">RelSubset</a>&nbsp;getSubset(<a href="../../../../../org/apache/calcite/rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;rel,
<a href="../../../../../org/apache/calcite/plan/RelTraitSet.html" title="class in org.apache.calcite.plan">RelTraitSet</a>&nbsp;traits,
boolean&nbsp;createIfMissing)</pre>
</li>
</ul>
<a name="setImportance-org.apache.calcite.rel.RelNode-double-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setImportance</h4>
<pre>public&nbsp;void&nbsp;setImportance(<a href="../../../../../org/apache/calcite/rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;rel,
double&nbsp;importance)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/calcite/plan/RelOptPlanner.html#setImportance-org.apache.calcite.rel.RelNode-double-">RelOptPlanner</a></code></span></div>
<div class="block">Sets the importance of a relational expression.
<p>An important use of this method is when a <a href="../../../../../org/apache/calcite/plan/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="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../org/apache/calcite/plan/RelOptPlanner.html#setImportance-org.apache.calcite.rel.RelNode-double-">setImportance</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/calcite/plan/RelOptPlanner.html" title="interface in org.apache.calcite.plan">RelOptPlanner</a></code></dd>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../../org/apache/calcite/plan/AbstractRelOptPlanner.html#setImportance-org.apache.calcite.rel.RelNode-double-">setImportance</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/calcite/plan/AbstractRelOptPlanner.html" title="class in org.apache.calcite.plan">AbstractRelOptPlanner</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>rel</code> - Relational expression</dd>
<dd><code>importance</code> - Importance</dd>
</dl>
</li>
</ul>
<a name="dump-java.io.PrintWriter-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>dump</h4>
<pre>public&nbsp;void&nbsp;dump(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/PrintWriter.html?is-external=true" title="class or interface in java.io">PrintWriter</a>&nbsp;pw)</pre>
<div class="block">Dumps the internal state of this VolcanoPlanner to a writer.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>pw</code> - Print writer</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../../org/apache/calcite/plan/volcano/VolcanoPlanner.html#normalizePlan-java.lang.String-"><code>normalizePlan(String)</code></a></dd>
</dl>
</li>
</ul>
<a name="toDot--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>toDot</h4>
<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;toDot()</pre>
</li>
</ul>
<a name="addListener-org.apache.calcite.plan.RelOptListener-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>addListener</h4>
<pre>public&nbsp;void&nbsp;addListener(<a href="../../../../../org/apache/calcite/plan/RelOptListener.html" title="interface in org.apache.calcite.plan">RelOptListener</a>&nbsp;newListener)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/calcite/plan/RelOptPlanner.html#addListener-org.apache.calcite.plan.RelOptListener-">RelOptPlanner</a></code></span></div>
<div class="block">Adds a listener to this planner.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../org/apache/calcite/plan/RelOptPlanner.html#addListener-org.apache.calcite.plan.RelOptListener-">addListener</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/calcite/plan/RelOptPlanner.html" title="interface in org.apache.calcite.plan">RelOptPlanner</a></code></dd>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../../org/apache/calcite/plan/AbstractRelOptPlanner.html#addListener-org.apache.calcite.plan.RelOptListener-">addListener</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/calcite/plan/AbstractRelOptPlanner.html" title="class in org.apache.calcite.plan">AbstractRelOptPlanner</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>newListener</code> - new listener to be notified of events</dd>
</dl>
</li>
</ul>
<a name="registerMetadataProviders-java.util.List-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>registerMetadataProviders</h4>
<pre>public&nbsp;void&nbsp;registerMetadataProviders(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/calcite/rel/metadata/RelMetadataProvider.html" title="interface in org.apache.calcite.rel.metadata">RelMetadataProvider</a>&gt;&nbsp;list)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/calcite/plan/RelOptPlanner.html#registerMetadataProviders-java.util.List-">RelOptPlanner</a></code></span></div>
<div class="block">Gives this planner a chance to register one or more
<a href="../../../../../org/apache/calcite/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="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../org/apache/calcite/plan/RelOptPlanner.html#registerMetadataProviders-java.util.List-">registerMetadataProviders</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/calcite/plan/RelOptPlanner.html" title="interface in org.apache.calcite.plan">RelOptPlanner</a></code></dd>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../../org/apache/calcite/plan/AbstractRelOptPlanner.html#registerMetadataProviders-java.util.List-">registerMetadataProviders</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/calcite/plan/AbstractRelOptPlanner.html" title="class in org.apache.calcite.plan">AbstractRelOptPlanner</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>list</code> - receives planner's custom providers, if any</dd>
</dl>
</li>
</ul>
<a name="getRelMetadataTimestamp-org.apache.calcite.rel.RelNode-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getRelMetadataTimestamp</h4>
<pre>public&nbsp;long&nbsp;getRelMetadataTimestamp(<a href="../../../../../org/apache/calcite/rel/RelNode.html" title="interface in org.apache.calcite.rel">RelNode</a>&nbsp;rel)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/calcite/plan/RelOptPlanner.html#getRelMetadataTimestamp-org.apache.calcite.rel.RelNode-">RelOptPlanner</a></code></span></div>
<div class="block">Gets a timestamp for a given rel's metadata. This timestamp is used by
<a href="../../../../../org/apache/calcite/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="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../org/apache/calcite/plan/RelOptPlanner.html#getRelMetadataTimestamp-org.apache.calcite.rel.RelNode-">getRelMetadataTimestamp</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/calcite/plan/RelOptPlanner.html" title="interface in org.apache.calcite.plan">RelOptPlanner</a></code></dd>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../../org/apache/calcite/plan/AbstractRelOptPlanner.html#getRelMetadataTimestamp-org.apache.calcite.rel.RelNode-">getRelMetadataTimestamp</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/calcite/plan/AbstractRelOptPlanner.html" title="class in org.apache.calcite.plan">AbstractRelOptPlanner</a></code></dd>
<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 name="normalizePlan-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>normalizePlan</h4>
<pre>public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;normalizePlan(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;plan)</pre>
<div class="block">Normalizes references to subsets within the string representation of a
plan.
<p>This is useful when writing tests: it helps to ensure that tests don't
break when an extra rule is introduced that generates a new subset and
causes subsequent subset numbers to be off by one.
<p>For example,
<blockquote>
FennelAggRel.FENNEL_EXEC(child=Subset#17.FENNEL_EXEC,groupCount=1,
EXPR$1=COUNT())<br>
&nbsp;&nbsp;FennelSortRel.FENNEL_EXEC(child=Subset#2.FENNEL_EXEC,
key=[0], discardDuplicates=false)<br>
&nbsp;&nbsp;&nbsp;&nbsp;FennelCalcRel.FENNEL_EXEC(
child=Subset#4.FENNEL_EXEC, expr#0..8={inputs}, expr#9=3456,
DEPTNO=$t7, $f0=$t9)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MockTableImplRel.FENNEL_EXEC(
table=[CATALOG, SALES, EMP])</blockquote>
<p>becomes
<blockquote>
FennelAggRel.FENNEL_EXEC(child=Subset#{0}.FENNEL_EXEC, groupCount=1,
EXPR$1=COUNT())<br>
&nbsp;&nbsp;FennelSortRel.FENNEL_EXEC(child=Subset#{1}.FENNEL_EXEC,
key=[0], discardDuplicates=false)<br>
&nbsp;&nbsp;&nbsp;&nbsp;FennelCalcRel.FENNEL_EXEC(
child=Subset#{2}.FENNEL_EXEC,expr#0..8={inputs},expr#9=3456,DEPTNO=$t7,
$f0=$t9)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MockTableImplRel.FENNEL_EXEC(
table=[CATALOG, SALES, EMP])</blockquote></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>plan</code> - Plan</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Normalized plan</dd>
</dl>
</li>
</ul>
<a name="setLocked-boolean-">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>setLocked</h4>
<pre>public&nbsp;void&nbsp;setLocked(boolean&nbsp;locked)</pre>
<div class="block">Sets whether this planner is locked. A locked planner does not accept
new rules. <a href="../../../../../org/apache/calcite/plan/volcano/VolcanoPlanner.html#addRule-org.apache.calcite.plan.RelOptRule-"><code>addRule(org.apache.calcite.plan.RelOptRule)</code></a> will do
nothing and return false.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>locked</code> - Whether planner is locked</dd>
</dl>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../help-doc.html">Help</a></li>
</ul>
<div class="aboutLanguage"><b>Apache Calcite</b></div>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../org/apache/calcite/plan/volcano/RelSubset.html" title="class in org.apache.calcite.plan.volcano"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../../org/apache/calcite/plan/volcano/VolcanoPlannerPhase.html" title="enum in org.apache.calcite.plan.volcano"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../index.html?org/apache/calcite/plan/volcano/VolcanoPlanner.html" target="_top">Frames</a></li>
<li><a href="VolcanoPlanner.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<p class="legalCopy"><small>Copyright &copy; 2012-2020 Apache Software Foundation. All Rights Reserved.</small></p>
</body>
</html>