blob: f6b12e75273a170a9d5d660776893707f9becd31 [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>RelTraitDef (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="RelTraitDef (Apache Calcite calcite API)";
}
}
catch(err) {
}
//-->
var methods = {"i0":6,"i1":10,"i2":10,"i3":6,"i4":10,"i5":6,"i6":6,"i7":6,"i8":10,"i9":10};
var tabs = {65535:["t0","所有方法"],2:["t2","实例方法"],4:["t3","抽象方法"],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/RelTrait.html" title="org.apache.calcite.plan中的接口"><span class="typeNameLink">上一个类</span></a></li>
<li><a href="../../../../org/apache/calcite/plan/RelTraitPropagationVisitor.html" title="org.apache.calcite.plan中的类"><span class="typeNameLink">下一个类</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../index.html?org/apache/calcite/plan/RelTraitDef.html" target="_top">框架</a></li>
<li><a href="RelTraitDef.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>字段&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>字段&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</div>
<h2 title="类 RelTraitDef" class="title">类 RelTraitDef&lt;T extends <a href="../../../../org/apache/calcite/plan/RelTrait.html" title="org.apache.calcite.plan中的接口">RelTrait</a>&gt;</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>org.apache.calcite.plan.RelTraitDef&lt;T&gt;</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt><span class="paramLabel">类型参数:</span></dt>
<dd><code>T</code> - Trait that this trait definition is based upon</dd>
</dl>
<dl>
<dt>直接已知子类:</dt>
<dd><a href="../../../../org/apache/calcite/plan/ConventionTraitDef.html" title="org.apache.calcite.plan中的类">ConventionTraitDef</a>, <a href="../../../../org/apache/calcite/rel/RelCollationTraitDef.html" title="org.apache.calcite.rel中的类">RelCollationTraitDef</a>, <a href="../../../../org/apache/calcite/rel/RelDistributionTraitDef.html" title="org.apache.calcite.rel中的类">RelDistributionTraitDef</a></dd>
</dl>
<hr>
<br>
<pre>public abstract class <span class="typeNameLabel">RelTraitDef&lt;T extends <a href="../../../../org/apache/calcite/plan/RelTrait.html" title="org.apache.calcite.plan中的接口">RelTrait</a>&gt;</span>
extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="java.lang中的类或接口">Object</a></pre>
<div class="block">RelTraitDef represents a class of <a href="../../../../org/apache/calcite/plan/RelTrait.html" title="org.apache.calcite.plan中的接口"><code>RelTrait</code></a>s. Implementations of
RelTraitDef may be singletons under the following conditions:
<ol>
<li>if the set of all possible associated RelTraits is finite and fixed (e.g.
all RelTraits for this RelTraitDef are known at compile time). For example,
the CallingConvention trait meets this requirement, because CallingConvention
is effectively an enumeration.</li>
<li>Either
<ul>
<li> <a href="../../../../org/apache/calcite/plan/RelTraitDef.html#canConvert-org.apache.calcite.plan.RelOptPlanner-T-T-"><code>canConvert(RelOptPlanner, RelTrait, RelTrait)</code></a> and
<a href="../../../../org/apache/calcite/plan/RelTraitDef.html#convert-org.apache.calcite.plan.RelOptPlanner-org.apache.calcite.rel.RelNode-T-boolean-"><code>convert(RelOptPlanner, RelNode, RelTrait, boolean)</code></a> do not require
planner-instance-specific information, <b>or</b></li>
<li>the RelTraitDef manages separate sets of conversion data internally. See
<a href="../../../../org/apache/calcite/plan/ConventionTraitDef.html" title="org.apache.calcite.plan中的类"><code>ConventionTraitDef</code></a> for an example of this.</li>
</ul>
</li>
</ol>
<p>Otherwise, a new instance of RelTraitDef must be constructed and
registered with each new planner instantiated.</p></div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ======== 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="colFirst" scope="col">限定符</th>
<th class="colLast" scope="col">构造器和说明</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected </code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/calcite/plan/RelTraitDef.html#RelTraitDef--">RelTraitDef</a></span>()</code>&nbsp;</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="t2" class="tableTab"><span><a href="javascript:show(2);">实例方法</a></span><span class="tabEnd">&nbsp;</span></span><span id="t3" class="tableTab"><span><a href="javascript:show(4);">抽象方法</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>abstract boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/calcite/plan/RelTraitDef.html#canConvert-org.apache.calcite.plan.RelOptPlanner-T-T-">canConvert</a></span>(<a href="../../../../org/apache/calcite/plan/RelOptPlanner.html" title="org.apache.calcite.plan中的接口">RelOptPlanner</a>&nbsp;planner,
<a href="../../../../org/apache/calcite/plan/RelTraitDef.html" title="RelTraitDef中的类型参数">T</a>&nbsp;fromTrait,
<a href="../../../../org/apache/calcite/plan/RelTraitDef.html" title="RelTraitDef中的类型参数">T</a>&nbsp;toTrait)</code>
<div class="block">Tests whether the given RelTrait can be converted to another RelTrait.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/calcite/plan/RelTraitDef.html#canConvert-org.apache.calcite.plan.RelOptPlanner-T-T-org.apache.calcite.rel.RelNode-">canConvert</a></span>(<a href="../../../../org/apache/calcite/plan/RelOptPlanner.html" title="org.apache.calcite.plan中的接口">RelOptPlanner</a>&nbsp;planner,
<a href="../../../../org/apache/calcite/plan/RelTraitDef.html" title="RelTraitDef中的类型参数">T</a>&nbsp;fromTrait,
<a href="../../../../org/apache/calcite/plan/RelTraitDef.html" title="RelTraitDef中的类型参数">T</a>&nbsp;toTrait,
<a href="../../../../org/apache/calcite/rel/RelNode.html" title="org.apache.calcite.rel中的接口">RelNode</a>&nbsp;fromRel)</code>
<div class="block">Tests whether the given RelTrait can be converted to another RelTrait.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/calcite/plan/RelTraitDef.html" title="RelTraitDef中的类型参数">T</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/calcite/plan/RelTraitDef.html#canonize-T-">canonize</a></span>(<a href="../../../../org/apache/calcite/plan/RelTraitDef.html" title="RelTraitDef中的类型参数">T</a>&nbsp;trait)</code>
<div class="block">Takes an arbitrary RelTrait and returns the canonical representation of
that RelTrait.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>abstract <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/RelTraitDef.html#convert-org.apache.calcite.plan.RelOptPlanner-org.apache.calcite.rel.RelNode-T-boolean-">convert</a></span>(<a href="../../../../org/apache/calcite/plan/RelOptPlanner.html" title="org.apache.calcite.plan中的接口">RelOptPlanner</a>&nbsp;planner,
<a href="../../../../org/apache/calcite/rel/RelNode.html" title="org.apache.calcite.rel中的接口">RelNode</a>&nbsp;rel,
<a href="../../../../org/apache/calcite/plan/RelTraitDef.html" title="RelTraitDef中的类型参数">T</a>&nbsp;toTrait,
boolean&nbsp;allowInfiniteCostConverters)</code>
<div class="block">Converts the given RelNode to the given RelTrait.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/calcite/plan/RelTraitDef.html#deregisterConverterRule-org.apache.calcite.plan.RelOptPlanner-org.apache.calcite.rel.convert.ConverterRule-">deregisterConverterRule</a></span>(<a href="../../../../org/apache/calcite/plan/RelOptPlanner.html" title="org.apache.calcite.plan中的接口">RelOptPlanner</a>&nbsp;planner,
<a href="../../../../org/apache/calcite/rel/convert/ConverterRule.html" title="org.apache.calcite.rel.convert中的类">ConverterRule</a>&nbsp;converterRule)</code>
<div class="block">Provides notification that a particular <a href="../../../../org/apache/calcite/rel/convert/ConverterRule.html" title="org.apache.calcite.rel.convert中的类"><code>ConverterRule</code></a> has been
de-registered from a <a href="../../../../org/apache/calcite/plan/RelOptPlanner.html" title="org.apache.calcite.plan中的接口"><code>RelOptPlanner</code></a>.</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code>abstract <a href="../../../../org/apache/calcite/plan/RelTraitDef.html" title="RelTraitDef中的类型参数">T</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/calcite/plan/RelTraitDef.html#getDefault--">getDefault</a></span>()</code>
<div class="block">Returns the default member of this trait.</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code>abstract <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/RelTraitDef.html#getSimpleName--">getSimpleName</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code>abstract <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="java.lang中的类或接口">Class</a>&lt;<a href="../../../../org/apache/calcite/plan/RelTraitDef.html" title="RelTraitDef中的类型参数">T</a>&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/calcite/plan/RelTraitDef.html#getTraitClass--">getTraitClass</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/calcite/plan/RelTraitDef.html#multiple--">multiple</a></span>()</code>
<div class="block">Whether a relational expression may possess more than one instance of
this trait simultaneously.</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/RelTraitDef.html#registerConverterRule-org.apache.calcite.plan.RelOptPlanner-org.apache.calcite.rel.convert.ConverterRule-">registerConverterRule</a></span>(<a href="../../../../org/apache/calcite/plan/RelOptPlanner.html" title="org.apache.calcite.plan中的接口">RelOptPlanner</a>&nbsp;planner,
<a href="../../../../org/apache/calcite/rel/convert/ConverterRule.html" title="org.apache.calcite.rel.convert中的类">ConverterRule</a>&nbsp;converterRule)</code>
<div class="block">Provides notification of the registration of a particular
<a href="../../../../org/apache/calcite/rel/convert/ConverterRule.html" title="org.apache.calcite.rel.convert中的类"><code>ConverterRule</code></a> with a <a href="../../../../org/apache/calcite/plan/RelOptPlanner.html" title="org.apache.calcite.plan中的接口"><code>RelOptPlanner</code></a>.</div>
</td>
</tr>
</table>
<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">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.detail">
<!-- -->
</a>
<h3>构造器详细资料</h3>
<a name="RelTraitDef--">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>RelTraitDef</h4>
<pre>protected&nbsp;RelTraitDef()</pre>
</li>
</ul>
</li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!-- -->
</a>
<h3>方法详细资料</h3>
<a name="multiple--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>multiple</h4>
<pre>public&nbsp;boolean&nbsp;multiple()</pre>
<div class="block">Whether a relational expression may possess more than one instance of
this trait simultaneously.
<p>A subset has only one instance of a trait.</p></div>
</li>
</ul>
<a name="getTraitClass--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getTraitClass</h4>
<pre>public abstract&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="java.lang中的类或接口">Class</a>&lt;<a href="../../../../org/apache/calcite/plan/RelTraitDef.html" title="RelTraitDef中的类型参数">T</a>&gt;&nbsp;getTraitClass()</pre>
<dl>
<dt><span class="returnLabel">返回:</span></dt>
<dd>the specific RelTrait type associated with this RelTraitDef.</dd>
</dl>
</li>
</ul>
<a name="getSimpleName--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getSimpleName</h4>
<pre>public abstract&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="java.lang中的类或接口">String</a>&nbsp;getSimpleName()</pre>
<dl>
<dt><span class="returnLabel">返回:</span></dt>
<dd>a simple name for this RelTraitDef (for use in
<a href="../../../../org/apache/calcite/rel/RelNode.html#explain-org.apache.calcite.rel.RelWriter-"><code>RelNode.explain(org.apache.calcite.rel.RelWriter)</code></a>).</dd>
</dl>
</li>
</ul>
<a name="canonize-org.apache.calcite.plan.RelTrait-">
<!-- -->
</a><a name="canonize-T-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>canonize</h4>
<pre>public final&nbsp;<a href="../../../../org/apache/calcite/plan/RelTraitDef.html" title="RelTraitDef中的类型参数">T</a>&nbsp;canonize(<a href="../../../../org/apache/calcite/plan/RelTraitDef.html" title="RelTraitDef中的类型参数">T</a>&nbsp;trait)</pre>
<div class="block">Takes an arbitrary RelTrait and returns the canonical representation of
that RelTrait. Canonized RelTrait objects may always be compared using
the equality operator (<code>==</code>).
<p>If an equal RelTrait has already been canonized and is still in use,
it will be returned. Otherwise, the given RelTrait is made canonical and
returned.</div>
<dl>
<dt><span class="paramLabel">参数:</span></dt>
<dd><code>trait</code> - a possibly non-canonical RelTrait</dd>
<dt><span class="returnLabel">返回:</span></dt>
<dd>a canonical RelTrait.</dd>
</dl>
</li>
</ul>
<a name="convert-org.apache.calcite.plan.RelOptPlanner-org.apache.calcite.rel.RelNode-org.apache.calcite.plan.RelTrait-boolean-">
<!-- -->
</a><a name="convert-org.apache.calcite.plan.RelOptPlanner-org.apache.calcite.rel.RelNode-T-boolean-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>convert</h4>
<pre>public abstract&nbsp;<a href="../../../../org/apache/calcite/rel/RelNode.html" title="org.apache.calcite.rel中的接口">RelNode</a>&nbsp;convert(<a href="../../../../org/apache/calcite/plan/RelOptPlanner.html" title="org.apache.calcite.plan中的接口">RelOptPlanner</a>&nbsp;planner,
<a href="../../../../org/apache/calcite/rel/RelNode.html" title="org.apache.calcite.rel中的接口">RelNode</a>&nbsp;rel,
<a href="../../../../org/apache/calcite/plan/RelTraitDef.html" title="RelTraitDef中的类型参数">T</a>&nbsp;toTrait,
boolean&nbsp;allowInfiniteCostConverters)</pre>
<div class="block">Converts the given RelNode to the given RelTrait.</div>
<dl>
<dt><span class="paramLabel">参数:</span></dt>
<dd><code>planner</code> - the planner requesting the conversion</dd>
<dd><code>rel</code> - RelNode to convert</dd>
<dd><code>toTrait</code> - RelTrait to convert to</dd>
<dd><code>allowInfiniteCostConverters</code> - flag indicating whether infinite cost
converters are allowed</dd>
<dt><span class="returnLabel">返回:</span></dt>
<dd>a converted RelNode or null if conversion is not possible</dd>
</dl>
</li>
</ul>
<a name="canConvert-org.apache.calcite.plan.RelOptPlanner-org.apache.calcite.plan.RelTrait-org.apache.calcite.plan.RelTrait-">
<!-- -->
</a><a name="canConvert-org.apache.calcite.plan.RelOptPlanner-T-T-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>canConvert</h4>
<pre>public abstract&nbsp;boolean&nbsp;canConvert(<a href="../../../../org/apache/calcite/plan/RelOptPlanner.html" title="org.apache.calcite.plan中的接口">RelOptPlanner</a>&nbsp;planner,
<a href="../../../../org/apache/calcite/plan/RelTraitDef.html" title="RelTraitDef中的类型参数">T</a>&nbsp;fromTrait,
<a href="../../../../org/apache/calcite/plan/RelTraitDef.html" title="RelTraitDef中的类型参数">T</a>&nbsp;toTrait)</pre>
<div class="block">Tests whether the given RelTrait can be converted to another RelTrait.</div>
<dl>
<dt><span class="paramLabel">参数:</span></dt>
<dd><code>planner</code> - the planner requesting the conversion test</dd>
<dd><code>fromTrait</code> - the RelTrait to convert from</dd>
<dd><code>toTrait</code> - the RelTrait to convert to</dd>
<dt><span class="returnLabel">返回:</span></dt>
<dd>true if fromTrait can be converted to toTrait</dd>
</dl>
</li>
</ul>
<a name="canConvert-org.apache.calcite.plan.RelOptPlanner-org.apache.calcite.plan.RelTrait-org.apache.calcite.plan.RelTrait-org.apache.calcite.rel.RelNode-">
<!-- -->
</a><a name="canConvert-org.apache.calcite.plan.RelOptPlanner-T-T-org.apache.calcite.rel.RelNode-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>canConvert</h4>
<pre>public&nbsp;boolean&nbsp;canConvert(<a href="../../../../org/apache/calcite/plan/RelOptPlanner.html" title="org.apache.calcite.plan中的接口">RelOptPlanner</a>&nbsp;planner,
<a href="../../../../org/apache/calcite/plan/RelTraitDef.html" title="RelTraitDef中的类型参数">T</a>&nbsp;fromTrait,
<a href="../../../../org/apache/calcite/plan/RelTraitDef.html" title="RelTraitDef中的类型参数">T</a>&nbsp;toTrait,
<a href="../../../../org/apache/calcite/rel/RelNode.html" title="org.apache.calcite.rel中的接口">RelNode</a>&nbsp;fromRel)</pre>
<div class="block">Tests whether the given RelTrait can be converted to another RelTrait.</div>
<dl>
<dt><span class="paramLabel">参数:</span></dt>
<dd><code>planner</code> - the planner requesting the conversion test</dd>
<dd><code>fromTrait</code> - the RelTrait to convert from</dd>
<dd><code>toTrait</code> - the RelTrait to convert to</dd>
<dd><code>fromRel</code> - the RelNode to convert from (with fromTrait)</dd>
<dt><span class="returnLabel">返回:</span></dt>
<dd>true if fromTrait can be converted to toTrait</dd>
</dl>
</li>
</ul>
<a name="registerConverterRule-org.apache.calcite.plan.RelOptPlanner-org.apache.calcite.rel.convert.ConverterRule-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>registerConverterRule</h4>
<pre>public&nbsp;void&nbsp;registerConverterRule(<a href="../../../../org/apache/calcite/plan/RelOptPlanner.html" title="org.apache.calcite.plan中的接口">RelOptPlanner</a>&nbsp;planner,
<a href="../../../../org/apache/calcite/rel/convert/ConverterRule.html" title="org.apache.calcite.rel.convert中的类">ConverterRule</a>&nbsp;converterRule)</pre>
<div class="block">Provides notification of the registration of a particular
<a href="../../../../org/apache/calcite/rel/convert/ConverterRule.html" title="org.apache.calcite.rel.convert中的类"><code>ConverterRule</code></a> with a <a href="../../../../org/apache/calcite/plan/RelOptPlanner.html" title="org.apache.calcite.plan中的接口"><code>RelOptPlanner</code></a>. The default
implementation does nothing.</div>
<dl>
<dt><span class="paramLabel">参数:</span></dt>
<dd><code>planner</code> - the planner registering the rule</dd>
<dd><code>converterRule</code> - the registered converter rule</dd>
</dl>
</li>
</ul>
<a name="deregisterConverterRule-org.apache.calcite.plan.RelOptPlanner-org.apache.calcite.rel.convert.ConverterRule-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>deregisterConverterRule</h4>
<pre>public&nbsp;void&nbsp;deregisterConverterRule(<a href="../../../../org/apache/calcite/plan/RelOptPlanner.html" title="org.apache.calcite.plan中的接口">RelOptPlanner</a>&nbsp;planner,
<a href="../../../../org/apache/calcite/rel/convert/ConverterRule.html" title="org.apache.calcite.rel.convert中的类">ConverterRule</a>&nbsp;converterRule)</pre>
<div class="block">Provides notification that a particular <a href="../../../../org/apache/calcite/rel/convert/ConverterRule.html" title="org.apache.calcite.rel.convert中的类"><code>ConverterRule</code></a> has been
de-registered from a <a href="../../../../org/apache/calcite/plan/RelOptPlanner.html" title="org.apache.calcite.plan中的接口"><code>RelOptPlanner</code></a>. The default implementation
does nothing.</div>
<dl>
<dt><span class="paramLabel">参数:</span></dt>
<dd><code>planner</code> - the planner registering the rule</dd>
<dd><code>converterRule</code> - the registered converter rule</dd>
</dl>
</li>
</ul>
<a name="getDefault--">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>getDefault</h4>
<pre>public abstract&nbsp;<a href="../../../../org/apache/calcite/plan/RelTraitDef.html" title="RelTraitDef中的类型参数">T</a>&nbsp;getDefault()</pre>
<div class="block">Returns the default member of this trait.</div>
</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/RelTrait.html" title="org.apache.calcite.plan中的接口"><span class="typeNameLink">上一个类</span></a></li>
<li><a href="../../../../org/apache/calcite/plan/RelTraitPropagationVisitor.html" title="org.apache.calcite.plan中的类"><span class="typeNameLink">下一个类</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../index.html?org/apache/calcite/plan/RelTraitDef.html" target="_top">框架</a></li>
<li><a href="RelTraitDef.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>字段&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>字段&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>