blob: c5ac028ca3761094ae64631c6d5e9cc5ef4e0613 [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="zh">
<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","所有方法"],1:["t1","静态方法"],2:["t2","实例方法"],8:["t4","具体方法"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
</script>
<noscript>
<div>您的浏览器已禁用 JavaScript。</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="跳过导航链接">跳过导航链接</a></div>
<a name="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="导航">
<li><a href="../../../../../overview-summary.html">概览</a></li>
<li><a href="package-summary.html">程序包</a></li>
<li class="navBarCell1Rev"></li>
<li><a href="package-tree.html"></a></li>
<li><a href="../../../../../deprecated-list.html">已过时</a></li>
<li><a href="../../../../../index-all.html">索引</a></li>
<li><a href="../../../../../help-doc.html">帮助</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="org.apache.calcite.plan.volcano中的类"><span class="typeNameLink">上一个类</span></a></li>
<li><a href="../../../../../org/apache/calcite/plan/volcano/VolcanoPlannerPhase.html" title="org.apache.calcite.plan.volcano中的枚举"><span class="typeNameLink">下一个类</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../index.html?org/apache/calcite/plan/volcano/VolcanoPlanner.html" target="_top">框架</a></li>
<li><a href="VolcanoPlanner.html" target="_top">无框架</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../../allclasses-noframe.html">所有类</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>概要:&nbsp;</li>
<li>嵌套&nbsp;|&nbsp;</li>
<li><a href="#field.summary">字段</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">构造器</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">方法</a></li>
</ul>
<ul class="subNavList">
<li>详细资料:&nbsp;</li>
<li><a href="#field.detail">字段</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">构造器</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">方法</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="类 VolcanoPlanner" class="title">类 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="java.lang中的类或接口">java.lang.Object</a></li>
<li>
<ul class="inheritance">
<li><a href="../../../../../org/apache/calcite/plan/AbstractRelOptPlanner.html" title="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>所有已实现的接口:</dt>
<dd><a href="../../../../../org/apache/calcite/plan/RelOptPlanner.html" title="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="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>嵌套类概要</h3>
<ul class="blockList">
<li class="blockList"><a name="nested.classes.inherited.from.class.org.apache.calcite.plan.RelOptPlanner">
<!-- -->
</a>
<h3>从接口继承的嵌套类/接口&nbsp;org.apache.calcite.plan.<a href="../../../../../org/apache/calcite/plan/RelOptPlanner.html" title="org.apache.calcite.plan中的接口">RelOptPlanner</a></h3>
<code><a href="../../../../../org/apache/calcite/plan/RelOptPlanner.CannotPlanException.html" title="org.apache.calcite.plan中的类">RelOptPlanner.CannotPlanException</a>, <a href="../../../../../org/apache/calcite/plan/RelOptPlanner.Executor.html" title="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>字段概要</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="字段概要表, 列表字段和解释">
<caption><span>字段</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">限定符和类型</th>
<th class="colLast" scope="col">字段和说明</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="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="java.util中的类或接口">Set</a>&lt;<a href="../../../../../org/apache/calcite/plan/RelOptRule.html" title="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>从类继承的字段&nbsp;org.apache.calcite.plan.<a href="../../../../../org/apache/calcite/plan/AbstractRelOptPlanner.html" title="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>从接口继承的字段&nbsp;org.apache.calcite.plan.<a href="../../../../../org/apache/calcite/plan/RelOptPlanner.html" title="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>构造器概要</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="构造器概要表, 列表构造器和解释">
<caption><span>构造器</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colOne" scope="col">构造器和说明</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="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="org.apache.calcite.plan中的接口">RelOptCostFactory</a>&nbsp;costFactory,
<a href="../../../../../org/apache/calcite/plan/Context.html" title="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>方法概要</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="方法概要表, 列表方法和解释">
<caption><span id="t0" class="activeTableTab"><span>所有方法</span><span class="tabEnd">&nbsp;</span></span><span id="t1" class="tableTab"><span><a href="javascript:show(1);">静态方法</a></span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">实例方法</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">具体方法</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">限定符和类型</th>
<th class="colLast" scope="col">方法和说明</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="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="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="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="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="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="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="org.apache.calcite.rel中的接口">RelNode</a>&nbsp;rel,
<a href="../../../../../org/apache/calcite/plan/RelTraitSet.html" title="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="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="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="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="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="org.apache.calcite.rel中的接口">RelNode</a>&nbsp;rel,
<a href="../../../../../org/apache/calcite/rel/RelNode.html" title="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="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="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="org.apache.calcite.rel中的接口">RelNode</a>&nbsp;rel,
<a href="../../../../../org/apache/calcite/rel/metadata/RelMetadataQuery.html" title="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="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="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="java.util中的类或接口">List</a>&lt;<a href="../../../../../org/apache/calcite/plan/RelOptMaterialization.html" title="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="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="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="java.util中的类或接口">List</a>&lt;<a href="../../../../../org/apache/calcite/plan/RelTraitDef.html" title="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="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="java.util中的类或接口">List</a>&lt;<a href="../../../../../org/apache/calcite/plan/RelOptRule.html" title="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="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="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="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="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="org.apache.calcite.rel中的接口">RelNode</a>&nbsp;rel,
<a href="../../../../../org/apache/calcite/plan/RelTraitSet.html" title="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="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="org.apache.calcite.rel中的接口">RelNode</a>&nbsp;rel,
<a href="../../../../../org/apache/calcite/plan/RelTraitSet.html" title="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="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="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="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="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="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="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="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="org.apache.calcite.rel中的接口">RelNode</a>&nbsp;rel,
<a href="../../../../../org/apache/calcite/rel/RelNode.html" title="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="java.util中的类或接口">List</a>&lt;<a href="../../../../../org/apache/calcite/rel/metadata/RelMetadataProvider.html" title="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="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="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="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="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="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="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>从类继承的方法&nbsp;org.apache.calcite.plan.<a href="../../../../../org/apache/calcite/plan/AbstractRelOptPlanner.html" title="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>从类继承的方法&nbsp;java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="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="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="java.lang中的类或接口">equals</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--" title="java.lang中的类或接口">finalize</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--" title="java.lang中的类或接口">getClass</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="java.lang中的类或接口">hashCode</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--" title="java.lang中的类或接口">notify</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--" title="java.lang中的类或接口">notifyAll</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="java.lang中的类或接口">toString</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--" title="java.lang中的类或接口">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-" title="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="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>字段详细资料</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">另请参阅:</span></dt>
<dd><a href="../../../../../constant-values.html#org.apache.calcite.plan.volcano.VolcanoPlanner.COST_IMPROVEMENT">常量字段值</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="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="java.util中的类或接口">Set</a>&lt;<a href="../../../../../org/apache/calcite/plan/RelOptRule.html" title="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>构造器详细资料</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="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="org.apache.calcite.plan中的接口">RelOptCostFactory</a>&nbsp;costFactory,
<a href="../../../../../org/apache/calcite/plan/Context.html" title="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>方法详细资料</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="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="org.apache.calcite.rel中的接口">RelNode</a>&nbsp;rel)</pre>
<div class="block"><span class="descfrmTypeLabel">从接口复制的说明:&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">参数:</span></dt>
<dd><code>rel</code> - expression to test</dd>
<dt><span class="returnLabel">返回:</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="org.apache.calcite.rel中的接口">RelNode</a>&nbsp;rel)</pre>
<div class="block"><span class="descfrmTypeLabel">从接口复制的说明:&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">参数:</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="org.apache.calcite.rel中的接口">RelNode</a>&nbsp;getRoot()</pre>
<div class="block"><span class="descfrmTypeLabel">从接口复制的说明:&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">返回:</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="java.util中的类或接口">List</a>&lt;<a href="../../../../../org/apache/calcite/plan/RelOptMaterialization.html" title="org.apache.calcite.plan中的类">RelOptMaterialization</a>&gt;&nbsp;getMaterializations()</pre>
<div class="block"><span class="descfrmTypeLabel">从接口复制的说明:&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">指定者:</span></dt>
<dd><code><a href="../../../../../org/apache/calcite/plan/RelOptPlanner.html#getMaterializations--">getMaterializations</a></code>&nbsp;在接口中&nbsp;<code><a href="../../../../../org/apache/calcite/plan/RelOptPlanner.html" title="org.apache.calcite.plan中的接口">RelOptPlanner</a></code></dd>
<dt><span class="overrideSpecifyLabel">覆盖:</span></dt>
<dd><code><a href="../../../../../org/apache/calcite/plan/AbstractRelOptPlanner.html#getMaterializations--">getMaterializations</a></code>&nbsp;在类中&nbsp;<code><a href="../../../../../org/apache/calcite/plan/AbstractRelOptPlanner.html" title="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="org.apache.calcite.plan中的类">RelOptMaterialization</a>&nbsp;materialization)</pre>
<div class="block"><span class="descfrmTypeLabel">从接口复制的说明:&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="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">指定者:</span></dt>
<dd><code><a href="../../../../../org/apache/calcite/plan/RelOptPlanner.html#addMaterialization-org.apache.calcite.plan.RelOptMaterialization-">addMaterialization</a></code>&nbsp;在接口中&nbsp;<code><a href="../../../../../org/apache/calcite/plan/RelOptPlanner.html" title="org.apache.calcite.plan中的接口">RelOptPlanner</a></code></dd>
<dt><span class="overrideSpecifyLabel">覆盖:</span></dt>
<dd><code><a href="../../../../../org/apache/calcite/plan/AbstractRelOptPlanner.html#addMaterialization-org.apache.calcite.plan.RelOptMaterialization-">addMaterialization</a></code>&nbsp;在类中&nbsp;<code><a href="../../../../../org/apache/calcite/plan/AbstractRelOptPlanner.html" title="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="org.apache.calcite.plan中的类">RelOptLattice</a>&nbsp;lattice)</pre>
<div class="block"><span class="descfrmTypeLabel">从接口复制的说明:&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">指定者:</span></dt>
<dd><code><a href="../../../../../org/apache/calcite/plan/RelOptPlanner.html#addLattice-org.apache.calcite.plan.RelOptLattice-">addLattice</a></code>&nbsp;在接口中&nbsp;<code><a href="../../../../../org/apache/calcite/plan/RelOptPlanner.html" title="org.apache.calcite.plan中的接口">RelOptPlanner</a></code></dd>
<dt><span class="overrideSpecifyLabel">覆盖:</span></dt>
<dd><code><a href="../../../../../org/apache/calcite/plan/AbstractRelOptPlanner.html#addLattice-org.apache.calcite.plan.RelOptLattice-">addLattice</a></code>&nbsp;在类中&nbsp;<code><a href="../../../../../org/apache/calcite/plan/AbstractRelOptPlanner.html" title="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="org.apache.calcite.plan中的类">RelOptLattice</a>&nbsp;getLattice(<a href="../../../../../org/apache/calcite/plan/RelOptTable.html" title="org.apache.calcite.plan中的接口">RelOptTable</a>&nbsp;table)</pre>
<div class="block"><span class="descfrmTypeLabel">从接口复制的说明:&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">指定者:</span></dt>
<dd><code><a href="../../../../../org/apache/calcite/plan/RelOptPlanner.html#getLattice-org.apache.calcite.plan.RelOptTable-">getLattice</a></code>&nbsp;在接口中&nbsp;<code><a href="../../../../../org/apache/calcite/plan/RelOptPlanner.html" title="org.apache.calcite.plan中的接口">RelOptPlanner</a></code></dd>
<dt><span class="overrideSpecifyLabel">覆盖:</span></dt>
<dd><code><a href="../../../../../org/apache/calcite/plan/AbstractRelOptPlanner.html#getLattice-org.apache.calcite.plan.RelOptTable-">getLattice</a></code>&nbsp;在类中&nbsp;<code><a href="../../../../../org/apache/calcite/plan/AbstractRelOptPlanner.html" title="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="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">参数:</span></dt>
<dd><code>rel</code> - Relational expression</dd>
<dt><span class="returnLabel">返回:</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="org.apache.calcite.plan中的类">RelTraitDef</a>&nbsp;relTraitDef)</pre>
<div class="block"><span class="descfrmTypeLabel">从接口复制的说明:&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="org.apache.calcite.plan中的类"><code>RelTraitDef</code></a> has already
been registered, does nothing.</div>
<dl>
<dt><span class="overrideSpecifyLabel">指定者:</span></dt>
<dd><code><a href="../../../../../org/apache/calcite/plan/RelOptPlanner.html#addRelTraitDef-org.apache.calcite.plan.RelTraitDef-">addRelTraitDef</a></code>&nbsp;在接口中&nbsp;<code><a href="../../../../../org/apache/calcite/plan/RelOptPlanner.html" title="org.apache.calcite.plan中的接口">RelOptPlanner</a></code></dd>
<dt><span class="overrideSpecifyLabel">覆盖:</span></dt>
<dd><code><a href="../../../../../org/apache/calcite/plan/AbstractRelOptPlanner.html#addRelTraitDef-org.apache.calcite.plan.RelTraitDef-">addRelTraitDef</a></code>&nbsp;在类中&nbsp;<code><a href="../../../../../org/apache/calcite/plan/AbstractRelOptPlanner.html" title="org.apache.calcite.plan中的类">AbstractRelOptPlanner</a></code></dd>
<dt><span class="returnLabel">返回:</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="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">从接口复制的说明:&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">指定者:</span></dt>
<dd><code><a href="../../../../../org/apache/calcite/plan/RelOptPlanner.html#clearRelTraitDefs--">clearRelTraitDefs</a></code>&nbsp;在接口中&nbsp;<code><a href="../../../../../org/apache/calcite/plan/RelOptPlanner.html" title="org.apache.calcite.plan中的接口">RelOptPlanner</a></code></dd>
<dt><span class="overrideSpecifyLabel">覆盖:</span></dt>
<dd><code><a href="../../../../../org/apache/calcite/plan/AbstractRelOptPlanner.html#clearRelTraitDefs--">clearRelTraitDefs</a></code>&nbsp;在类中&nbsp;<code><a href="../../../../../org/apache/calcite/plan/AbstractRelOptPlanner.html" title="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="java.util中的类或接口">List</a>&lt;<a href="../../../../../org/apache/calcite/plan/RelTraitDef.html" title="org.apache.calcite.plan中的类">RelTraitDef</a>&gt;&nbsp;getRelTraitDefs()</pre>
<div class="block"><span class="descfrmTypeLabel">从接口复制的说明:&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">指定者:</span></dt>
<dd><code><a href="../../../../../org/apache/calcite/plan/RelOptPlanner.html#getRelTraitDefs--">getRelTraitDefs</a></code>&nbsp;在接口中&nbsp;<code><a href="../../../../../org/apache/calcite/plan/RelOptPlanner.html" title="org.apache.calcite.plan中的接口">RelOptPlanner</a></code></dd>
<dt><span class="overrideSpecifyLabel">覆盖:</span></dt>
<dd><code><a href="../../../../../org/apache/calcite/plan/AbstractRelOptPlanner.html#getRelTraitDefs--">getRelTraitDefs</a></code>&nbsp;在类中&nbsp;<code><a href="../../../../../org/apache/calcite/plan/AbstractRelOptPlanner.html" title="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="org.apache.calcite.plan中的类">RelTraitSet</a>&nbsp;emptyTraitSet()</pre>
<div class="block"><span class="descfrmTypeLabel">从接口复制的说明:&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">指定者:</span></dt>
<dd><code><a href="../../../../../org/apache/calcite/plan/RelOptPlanner.html#emptyTraitSet--">emptyTraitSet</a></code>&nbsp;在接口中&nbsp;<code><a href="../../../../../org/apache/calcite/plan/RelOptPlanner.html" title="org.apache.calcite.plan中的接口">RelOptPlanner</a></code></dd>
<dt><span class="overrideSpecifyLabel">覆盖:</span></dt>
<dd><code><a href="../../../../../org/apache/calcite/plan/AbstractRelOptPlanner.html#emptyTraitSet--">emptyTraitSet</a></code>&nbsp;在类中&nbsp;<code><a href="../../../../../org/apache/calcite/plan/AbstractRelOptPlanner.html" title="org.apache.calcite.plan中的类">AbstractRelOptPlanner</a></code></dd>
<dt><span class="returnLabel">返回:</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">从接口复制的说明:&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">指定者:</span></dt>
<dd><code><a href="../../../../../org/apache/calcite/plan/RelOptPlanner.html#clear--">clear</a></code>&nbsp;在接口中&nbsp;<code><a href="../../../../../org/apache/calcite/plan/RelOptPlanner.html" title="org.apache.calcite.plan中的接口">RelOptPlanner</a></code></dd>
<dt><span class="overrideSpecifyLabel">覆盖:</span></dt>
<dd><code><a href="../../../../../org/apache/calcite/plan/AbstractRelOptPlanner.html#clear--">clear</a></code>&nbsp;在类中&nbsp;<code><a href="../../../../../org/apache/calcite/plan/AbstractRelOptPlanner.html" title="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="java.util中的类或接口">List</a>&lt;<a href="../../../../../org/apache/calcite/plan/RelOptRule.html" title="org.apache.calcite.plan中的类">RelOptRule</a>&gt;&nbsp;getRules()</pre>
<div class="block"><span class="descfrmTypeLabel">从接口复制的说明:&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="org.apache.calcite.plan中的类">RelOptRule</a>&nbsp;rule)</pre>
<div class="block"><span class="descfrmTypeLabel">从接口复制的说明:&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="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">返回:</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="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="org.apache.calcite.plan中的类">RelOptRule</a>&nbsp;rule)</pre>
<div class="block"><span class="descfrmTypeLabel">从接口复制的说明:&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">返回:</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="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="org.apache.calcite.rel中的接口">RelNode</a>&nbsp;node)</pre>
<div class="block"><span class="descfrmTypeLabel">从类复制的说明:&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="org.apache.calcite.rel中的接口"><code>RelNode</code></a> is seen.</div>
<dl>
<dt><span class="overrideSpecifyLabel">覆盖:</span></dt>
<dd><code><a href="../../../../../org/apache/calcite/plan/AbstractRelOptPlanner.html#onNewClass-org.apache.calcite.rel.RelNode-">onNewClass</a></code>&nbsp;在类中&nbsp;<code><a href="../../../../../org/apache/calcite/plan/AbstractRelOptPlanner.html" title="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="org.apache.calcite.rel中的接口">RelNode</a>&nbsp;changeTraits(<a href="../../../../../org/apache/calcite/rel/RelNode.html" title="org.apache.calcite.rel中的接口">RelNode</a>&nbsp;rel,
<a href="../../../../../org/apache/calcite/plan/RelTraitSet.html" title="org.apache.calcite.plan中的类">RelTraitSet</a>&nbsp;toTraits)</pre>
<div class="block"><span class="descfrmTypeLabel">从接口复制的说明:&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">参数:</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">返回:</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="org.apache.calcite.plan中的接口">RelOptPlanner</a>&nbsp;chooseDelegate()</pre>
<div class="block"><span class="descfrmTypeLabel">从接口复制的说明:&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">指定者:</span></dt>
<dd><code><a href="../../../../../org/apache/calcite/plan/RelOptPlanner.html#chooseDelegate--">chooseDelegate</a></code>&nbsp;在接口中&nbsp;<code><a href="../../../../../org/apache/calcite/plan/RelOptPlanner.html" title="org.apache.calcite.plan中的接口">RelOptPlanner</a></code></dd>
<dt><span class="overrideSpecifyLabel">覆盖:</span></dt>
<dd><code><a href="../../../../../org/apache/calcite/plan/AbstractRelOptPlanner.html#chooseDelegate--">chooseDelegate</a></code>&nbsp;在类中&nbsp;<code><a href="../../../../../org/apache/calcite/plan/AbstractRelOptPlanner.html" title="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="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">返回:</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="org.apache.calcite.plan.volcano中的类">RelSubset</a>&nbsp;register(<a href="../../../../../org/apache/calcite/rel/RelNode.html" title="org.apache.calcite.rel中的接口">RelNode</a>&nbsp;rel,
<a href="../../../../../org/apache/calcite/rel/RelNode.html" title="org.apache.calcite.rel中的接口">RelNode</a>&nbsp;equivRel)</pre>
<div class="block"><span class="descfrmTypeLabel">从接口复制的说明:&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">参数:</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">返回:</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="org.apache.calcite.plan.volcano中的类">RelSubset</a>&nbsp;ensureRegistered(<a href="../../../../../org/apache/calcite/rel/RelNode.html" title="org.apache.calcite.rel中的接口">RelNode</a>&nbsp;rel,
<a href="../../../../../org/apache/calcite/rel/RelNode.html" title="org.apache.calcite.rel中的接口">RelNode</a>&nbsp;equivRel)</pre>
<div class="block"><span class="descfrmTypeLabel">从接口复制的说明:&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">参数:</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">返回:</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="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="org.apache.calcite.plan中的接口">RelOptSchema</a>&nbsp;schema)</pre>
<div class="block"><span class="descfrmTypeLabel">从接口复制的说明:&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">指定者:</span></dt>
<dd><code><a href="../../../../../org/apache/calcite/plan/RelOptPlanner.html#registerSchema-org.apache.calcite.plan.RelOptSchema-">registerSchema</a></code>&nbsp;在接口中&nbsp;<code><a href="../../../../../org/apache/calcite/plan/RelOptPlanner.html" title="org.apache.calcite.plan中的接口">RelOptPlanner</a></code></dd>
<dt><span class="overrideSpecifyLabel">覆盖:</span></dt>
<dd><code><a href="../../../../../org/apache/calcite/plan/AbstractRelOptPlanner.html#registerSchema-org.apache.calcite.plan.RelOptSchema-">registerSchema</a></code>&nbsp;在类中&nbsp;<code><a href="../../../../../org/apache/calcite/plan/AbstractRelOptPlanner.html" title="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">参数:</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="org.apache.calcite.plan中的接口">RelOptCost</a>&nbsp;getCost(<a href="../../../../../org/apache/calcite/rel/RelNode.html" title="org.apache.calcite.rel中的接口">RelNode</a>&nbsp;rel,
<a href="../../../../../org/apache/calcite/rel/metadata/RelMetadataQuery.html" title="org.apache.calcite.rel.metadata中的类">RelMetadataQuery</a>&nbsp;mq)</pre>
<div class="block"><span class="descfrmTypeLabel">从接口复制的说明:&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">指定者:</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;在接口中&nbsp;<code><a href="../../../../../org/apache/calcite/plan/RelOptPlanner.html" title="org.apache.calcite.plan中的接口">RelOptPlanner</a></code></dd>
<dt><span class="overrideSpecifyLabel">覆盖:</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;在类中&nbsp;<code><a href="../../../../../org/apache/calcite/plan/AbstractRelOptPlanner.html" title="org.apache.calcite.plan中的类">AbstractRelOptPlanner</a></code></dd>
<dt><span class="paramLabel">参数:</span></dt>
<dd><code>rel</code> - Relational expression of interest</dd>
<dd><code>mq</code> - Metadata query</dd>
<dt><span class="returnLabel">返回:</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="org.apache.calcite.plan.volcano中的类">RelSubset</a>&nbsp;getSubset(<a href="../../../../../org/apache/calcite/rel/RelNode.html" title="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">参数:</span></dt>
<dd><code>rel</code> - Relational expression</dd>
<dt><span class="returnLabel">返回:</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="org.apache.calcite.plan.volcano中的类">RelSubset</a>&nbsp;getSubset(<a href="../../../../../org/apache/calcite/rel/RelNode.html" title="org.apache.calcite.rel中的接口">RelNode</a>&nbsp;rel,
<a href="../../../../../org/apache/calcite/plan/RelTraitSet.html" title="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="org.apache.calcite.plan.volcano中的类">RelSubset</a>&nbsp;getSubset(<a href="../../../../../org/apache/calcite/rel/RelNode.html" title="org.apache.calcite.rel中的接口">RelNode</a>&nbsp;rel,
<a href="../../../../../org/apache/calcite/plan/RelTraitSet.html" title="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="org.apache.calcite.rel中的接口">RelNode</a>&nbsp;rel,
double&nbsp;importance)</pre>
<div class="block"><span class="descfrmTypeLabel">从接口复制的说明:&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="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">指定者:</span></dt>
<dd><code><a href="../../../../../org/apache/calcite/plan/RelOptPlanner.html#setImportance-org.apache.calcite.rel.RelNode-double-">setImportance</a></code>&nbsp;在接口中&nbsp;<code><a href="../../../../../org/apache/calcite/plan/RelOptPlanner.html" title="org.apache.calcite.plan中的接口">RelOptPlanner</a></code></dd>
<dt><span class="overrideSpecifyLabel">覆盖:</span></dt>
<dd><code><a href="../../../../../org/apache/calcite/plan/AbstractRelOptPlanner.html#setImportance-org.apache.calcite.rel.RelNode-double-">setImportance</a></code>&nbsp;在类中&nbsp;<code><a href="../../../../../org/apache/calcite/plan/AbstractRelOptPlanner.html" title="org.apache.calcite.plan中的类">AbstractRelOptPlanner</a></code></dd>
<dt><span class="paramLabel">参数:</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="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">参数:</span></dt>
<dd><code>pw</code> - Print writer</dd>
<dt><span class="seeLabel">另请参阅:</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="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="org.apache.calcite.plan中的接口">RelOptListener</a>&nbsp;newListener)</pre>
<div class="block"><span class="descfrmTypeLabel">从接口复制的说明:&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">指定者:</span></dt>
<dd><code><a href="../../../../../org/apache/calcite/plan/RelOptPlanner.html#addListener-org.apache.calcite.plan.RelOptListener-">addListener</a></code>&nbsp;在接口中&nbsp;<code><a href="../../../../../org/apache/calcite/plan/RelOptPlanner.html" title="org.apache.calcite.plan中的接口">RelOptPlanner</a></code></dd>
<dt><span class="overrideSpecifyLabel">覆盖:</span></dt>
<dd><code><a href="../../../../../org/apache/calcite/plan/AbstractRelOptPlanner.html#addListener-org.apache.calcite.plan.RelOptListener-">addListener</a></code>&nbsp;在类中&nbsp;<code><a href="../../../../../org/apache/calcite/plan/AbstractRelOptPlanner.html" title="org.apache.calcite.plan中的类">AbstractRelOptPlanner</a></code></dd>
<dt><span class="paramLabel">参数:</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="java.util中的类或接口">List</a>&lt;<a href="../../../../../org/apache/calcite/rel/metadata/RelMetadataProvider.html" title="org.apache.calcite.rel.metadata中的接口">RelMetadataProvider</a>&gt;&nbsp;list)</pre>
<div class="block"><span class="descfrmTypeLabel">从接口复制的说明:&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="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">指定者:</span></dt>
<dd><code><a href="../../../../../org/apache/calcite/plan/RelOptPlanner.html#registerMetadataProviders-java.util.List-">registerMetadataProviders</a></code>&nbsp;在接口中&nbsp;<code><a href="../../../../../org/apache/calcite/plan/RelOptPlanner.html" title="org.apache.calcite.plan中的接口">RelOptPlanner</a></code></dd>
<dt><span class="overrideSpecifyLabel">覆盖:</span></dt>
<dd><code><a href="../../../../../org/apache/calcite/plan/AbstractRelOptPlanner.html#registerMetadataProviders-java.util.List-">registerMetadataProviders</a></code>&nbsp;在类中&nbsp;<code><a href="../../../../../org/apache/calcite/plan/AbstractRelOptPlanner.html" title="org.apache.calcite.plan中的类">AbstractRelOptPlanner</a></code></dd>
<dt><span class="paramLabel">参数:</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="org.apache.calcite.rel中的接口">RelNode</a>&nbsp;rel)</pre>
<div class="block"><span class="descfrmTypeLabel">从接口复制的说明:&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="org.apache.calcite.rel.metadata中的类"><code>CachingRelMetadataProvider</code></a> to decide whether cached metadata has
gone stale.</div>
<dl>
<dt><span class="overrideSpecifyLabel">指定者:</span></dt>
<dd><code><a href="../../../../../org/apache/calcite/plan/RelOptPlanner.html#getRelMetadataTimestamp-org.apache.calcite.rel.RelNode-">getRelMetadataTimestamp</a></code>&nbsp;在接口中&nbsp;<code><a href="../../../../../org/apache/calcite/plan/RelOptPlanner.html" title="org.apache.calcite.plan中的接口">RelOptPlanner</a></code></dd>
<dt><span class="overrideSpecifyLabel">覆盖:</span></dt>
<dd><code><a href="../../../../../org/apache/calcite/plan/AbstractRelOptPlanner.html#getRelMetadataTimestamp-org.apache.calcite.rel.RelNode-">getRelMetadataTimestamp</a></code>&nbsp;在类中&nbsp;<code><a href="../../../../../org/apache/calcite/plan/AbstractRelOptPlanner.html" title="org.apache.calcite.plan中的类">AbstractRelOptPlanner</a></code></dd>
<dt><span class="paramLabel">参数:</span></dt>
<dd><code>rel</code> - rel of interest</dd>
<dt><span class="returnLabel">返回:</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="java.lang中的类或接口">String</a>&nbsp;normalizePlan(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="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">参数:</span></dt>
<dd><code>plan</code> - Plan</dd>
<dt><span class="returnLabel">返回:</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">参数:</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="跳过导航链接">跳过导航链接</a></div>
<a name="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="导航">
<li><a href="../../../../../overview-summary.html">概览</a></li>
<li><a href="package-summary.html">程序包</a></li>
<li class="navBarCell1Rev"></li>
<li><a href="package-tree.html"></a></li>
<li><a href="../../../../../deprecated-list.html">已过时</a></li>
<li><a href="../../../../../index-all.html">索引</a></li>
<li><a href="../../../../../help-doc.html">帮助</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="org.apache.calcite.plan.volcano中的类"><span class="typeNameLink">上一个类</span></a></li>
<li><a href="../../../../../org/apache/calcite/plan/volcano/VolcanoPlannerPhase.html" title="org.apache.calcite.plan.volcano中的枚举"><span class="typeNameLink">下一个类</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../index.html?org/apache/calcite/plan/volcano/VolcanoPlanner.html" target="_top">框架</a></li>
<li><a href="VolcanoPlanner.html" target="_top">无框架</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../../allclasses-noframe.html">所有类</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>概要:&nbsp;</li>
<li>嵌套&nbsp;|&nbsp;</li>
<li><a href="#field.summary">字段</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">构造器</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">方法</a></li>
</ul>
<ul class="subNavList">
<li>详细资料:&nbsp;</li>
<li><a href="#field.detail">字段</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">构造器</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">方法</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>