blob: 35f669213332fec537cf9f50819b3a528643432a [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>org.apache.calcite.rel.rules (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="org.apache.calcite.rel.rules (Apache Calcite calcite API)";
}
}
catch(err) {
}
//-->
</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 class="navBarCell1Rev">程序包</li>
<li></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/rel/rel2sql/package-summary.html">上一个程序包</a></li>
<li><a href="../../../../../org/apache/calcite/rel/rules/materialize/package-summary.html">下一个程序包</a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../index.html?org/apache/calcite/rel/rules/package-summary.html" target="_top">框架</a></li>
<li><a href="package-summary.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>
<a name="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<div class="header">
<h1 title="程序包" class="title">程序包&nbsp;org.apache.calcite.rel.rules</h1>
<div class="docSummary">
<div class="block">Provides a core set of planner rules.</div>
</div>
<p>请参阅:&nbsp;<a href="#package.description">说明</a></p>
</div>
<div class="contentContainer">
<ul class="blockList">
<li class="blockList">
<table class="typeSummary" 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>
<tbody>
<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/FilterJoinRule.Predicate.html" title="org.apache.calcite.rel.rules中的接口">FilterJoinRule.Predicate</a></td>
<td class="colLast">
<div class="block">Predicate that returns whether a filter is valid in the ON clause of a
join for this particular kind of join.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/PushProjector.ExprCondition.html" title="org.apache.calcite.rel.rules中的接口">PushProjector.ExprCondition</a></td>
<td class="colLast">
<div class="block">A functor that replies true or false for a given expression.</div>
</td>
</tr>
</tbody>
</table>
</li>
<li class="blockList">
<table class="typeSummary" 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>
<tbody>
<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/AbstractJoinExtractFilterRule.html" title="org.apache.calcite.rel.rules中的类">AbstractJoinExtractFilterRule</a></td>
<td class="colLast">
<div class="block">Rule to convert an
<a href="../../../../../org/apache/calcite/rel/core/Join.html" title="org.apache.calcite.rel.core中的类"><code>inner join</code></a> to a
<a href="../../../../../org/apache/calcite/rel/core/Filter.html" title="org.apache.calcite.rel.core中的类"><code>filter</code></a> on top of a
<a href="../../../../../org/apache/calcite/rel/core/Join.html" title="org.apache.calcite.rel.core中的类"><code>cartesian inner join</code></a>.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/AggregateCaseToFilterRule.html" title="org.apache.calcite.rel.rules中的类">AggregateCaseToFilterRule</a></td>
<td class="colLast">
<div class="block">Rule that converts CASE-style filtered aggregates into true filtered
aggregates.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/AggregateExpandDistinctAggregatesRule.html" title="org.apache.calcite.rel.rules中的类">AggregateExpandDistinctAggregatesRule</a></td>
<td class="colLast">
<div class="block">Planner rule that expands distinct aggregates
(such as <code>COUNT(DISTINCT x)</code>) from a
<a href="../../../../../org/apache/calcite/rel/core/Aggregate.html" title="org.apache.calcite.rel.core中的类"><code>Aggregate</code></a>.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/AggregateExtractProjectRule.html" title="org.apache.calcite.rel.rules中的类">AggregateExtractProjectRule</a></td>
<td class="colLast">
<div class="block">Rule to extract a <a href="../../../../../org/apache/calcite/rel/core/Project.html" title="org.apache.calcite.rel.core中的类"><code>Project</code></a>
from an <a href="../../../../../org/apache/calcite/rel/core/Aggregate.html" title="org.apache.calcite.rel.core中的类"><code>Aggregate</code></a>
and push it down towards the input.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/AggregateFilterTransposeRule.html" title="org.apache.calcite.rel.rules中的类">AggregateFilterTransposeRule</a></td>
<td class="colLast">
<div class="block">Planner rule that matches an <a href="../../../../../org/apache/calcite/rel/core/Aggregate.html" title="org.apache.calcite.rel.core中的类"><code>Aggregate</code></a>
on a <a href="../../../../../org/apache/calcite/rel/core/Filter.html" title="org.apache.calcite.rel.core中的类"><code>Filter</code></a> and transposes them,
pushing the aggregate below the filter.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/AggregateJoinJoinRemoveRule.html" title="org.apache.calcite.rel.rules中的类">AggregateJoinJoinRemoveRule</a></td>
<td class="colLast">
<div class="block">Planner rule that matches an <a href="../../../../../org/apache/calcite/rel/core/Aggregate.html" title="org.apache.calcite.rel.core中的类"><code>Aggregate</code></a>
on a <a href="../../../../../org/apache/calcite/rel/core/Join.html" title="org.apache.calcite.rel.core中的类"><code>Join</code></a> and removes the left input
of the join provided that the left input is also a left join if possible.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/AggregateJoinRemoveRule.html" title="org.apache.calcite.rel.rules中的类">AggregateJoinRemoveRule</a></td>
<td class="colLast">
<div class="block">Planner rule that matches an <a href="../../../../../org/apache/calcite/rel/core/Aggregate.html" title="org.apache.calcite.rel.core中的类"><code>Aggregate</code></a>
on a <a href="../../../../../org/apache/calcite/rel/core/Join.html" title="org.apache.calcite.rel.core中的类"><code>Join</code></a> and removes the join
provided that the join is a left join or right join and it computes no
aggregate functions or all the aggregate calls have distinct.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/AggregateJoinTransposeRule.html" title="org.apache.calcite.rel.rules中的类">AggregateJoinTransposeRule</a></td>
<td class="colLast">
<div class="block">Planner rule that pushes an
<a href="../../../../../org/apache/calcite/rel/core/Aggregate.html" title="org.apache.calcite.rel.core中的类"><code>Aggregate</code></a>
past a <a href="../../../../../org/apache/calcite/rel/core/Join.html" title="org.apache.calcite.rel.core中的类"><code>Join</code></a>.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/AggregateMergeRule.html" title="org.apache.calcite.rel.rules中的类">AggregateMergeRule</a></td>
<td class="colLast">
<div class="block">Planner rule that matches an <a href="../../../../../org/apache/calcite/rel/core/Aggregate.html" title="org.apache.calcite.rel.core中的类"><code>Aggregate</code></a> on a <a href="../../../../../org/apache/calcite/rel/core/Aggregate.html" title="org.apache.calcite.rel.core中的类"><code>Aggregate</code></a>
and the top aggregate's group key is a subset of the lower aggregate's
group key, and the aggregates are expansions of rollups, then it would
convert into a single aggregate.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/AggregateProjectMergeRule.html" title="org.apache.calcite.rel.rules中的类">AggregateProjectMergeRule</a></td>
<td class="colLast">
<div class="block">Planner rule that recognizes a <a href="../../../../../org/apache/calcite/rel/core/Aggregate.html" title="org.apache.calcite.rel.core中的类"><code>Aggregate</code></a>
on top of a <a href="../../../../../org/apache/calcite/rel/core/Project.html" title="org.apache.calcite.rel.core中的类"><code>Project</code></a> and if possible
aggregate through the project or removes the project.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/AggregateProjectPullUpConstantsRule.html" title="org.apache.calcite.rel.rules中的类">AggregateProjectPullUpConstantsRule</a></td>
<td class="colLast">
<div class="block">Planner rule that removes constant keys from an
<a href="../../../../../org/apache/calcite/rel/core/Aggregate.html" title="org.apache.calcite.rel.core中的类"><code>Aggregate</code></a>.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/AggregateReduceFunctionsRule.html" title="org.apache.calcite.rel.rules中的类">AggregateReduceFunctionsRule</a></td>
<td class="colLast">
<div class="block">Planner rule that reduces aggregate functions in
<a href="../../../../../org/apache/calcite/rel/core/Aggregate.html" title="org.apache.calcite.rel.core中的类"><code>Aggregate</code></a>s to simpler forms.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/AggregateRemoveRule.html" title="org.apache.calcite.rel.rules中的类">AggregateRemoveRule</a></td>
<td class="colLast">
<div class="block">Planner rule that removes
a <a href="../../../../../org/apache/calcite/rel/core/Aggregate.html" title="org.apache.calcite.rel.core中的类"><code>Aggregate</code></a>
if it computes no aggregate functions
(that is, it is implementing <code>SELECT DISTINCT</code>),
or all the aggregate functions are splittable,
and the underlying relational expression is already distinct.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/AggregateStarTableRule.html" title="org.apache.calcite.rel.rules中的类">AggregateStarTableRule</a></td>
<td class="colLast">
<div class="block">Planner rule that matches an <a href="../../../../../org/apache/calcite/rel/core/Aggregate.html" title="org.apache.calcite.rel.core中的类"><code>Aggregate</code></a> on
top of a <a href="../../../../../org/apache/calcite/schema/impl/StarTable.StarTableScan.html" title="org.apache.calcite.schema.impl中的类"><code>StarTable.StarTableScan</code></a>.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/AggregateUnionAggregateRule.html" title="org.apache.calcite.rel.rules中的类">AggregateUnionAggregateRule</a></td>
<td class="colLast">
<div class="block">Planner rule that matches
<a href="../../../../../org/apache/calcite/rel/core/Aggregate.html" title="org.apache.calcite.rel.core中的类"><code>Aggregate</code></a>s beneath a
<a href="../../../../../org/apache/calcite/rel/core/Union.html" title="org.apache.calcite.rel.core中的类"><code>Union</code></a> and pulls them up, so
that a single
<a href="../../../../../org/apache/calcite/rel/core/Aggregate.html" title="org.apache.calcite.rel.core中的类"><code>Aggregate</code></a> removes duplicates.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/AggregateUnionTransposeRule.html" title="org.apache.calcite.rel.rules中的类">AggregateUnionTransposeRule</a></td>
<td class="colLast">
<div class="block">Planner rule that pushes an
<a href="../../../../../org/apache/calcite/rel/core/Aggregate.html" title="org.apache.calcite.rel.core中的类"><code>Aggregate</code></a>
past a non-distinct <a href="../../../../../org/apache/calcite/rel/core/Union.html" title="org.apache.calcite.rel.core中的类"><code>Union</code></a>.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/AggregateValuesRule.html" title="org.apache.calcite.rel.rules中的类">AggregateValuesRule</a></td>
<td class="colLast">
<div class="block">Rule that applies <a href="../../../../../org/apache/calcite/rel/core/Aggregate.html" title="org.apache.calcite.rel.core中的类"><code>Aggregate</code></a> to a <a href="../../../../../org/apache/calcite/rel/core/Values.html" title="org.apache.calcite.rel.core中的类"><code>Values</code></a> (currently just an
empty <code>Value</code>s).</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/CalcMergeRule.html" title="org.apache.calcite.rel.rules中的类">CalcMergeRule</a></td>
<td class="colLast">
<div class="block">Planner rule that merges a
<a href="../../../../../org/apache/calcite/rel/logical/LogicalCalc.html" title="org.apache.calcite.rel.logical中的类"><code>LogicalCalc</code></a> onto a
<a href="../../../../../org/apache/calcite/rel/logical/LogicalCalc.html" title="org.apache.calcite.rel.logical中的类"><code>LogicalCalc</code></a>.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/CalcRelSplitter.html" title="org.apache.calcite.rel.rules中的类">CalcRelSplitter</a></td>
<td class="colLast">
<div class="block">CalcRelSplitter operates on a
<a href="../../../../../org/apache/calcite/rel/core/Calc.html" title="org.apache.calcite.rel.core中的类"><code>Calc</code></a> with multiple <a href="../../../../../org/apache/calcite/rex/RexCall.html" title="org.apache.calcite.rex中的类"><code>RexCall</code></a>
sub-expressions that cannot all be implemented by a single concrete
<a href="../../../../../org/apache/calcite/rel/RelNode.html" title="org.apache.calcite.rel中的接口"><code>RelNode</code></a>.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/CalcRelSplitter.RelType.html" title="org.apache.calcite.rel.rules中的类">CalcRelSplitter.RelType</a></td>
<td class="colLast">
<div class="block">Type of relational expression.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/CalcRemoveRule.html" title="org.apache.calcite.rel.rules中的类">CalcRemoveRule</a></td>
<td class="colLast">
<div class="block">Planner rule that removes a trivial
<a href="../../../../../org/apache/calcite/rel/logical/LogicalCalc.html" title="org.apache.calcite.rel.logical中的类"><code>LogicalCalc</code></a>.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/CalcSplitRule.html" title="org.apache.calcite.rel.rules中的类">CalcSplitRule</a></td>
<td class="colLast">
<div class="block">Planner rule that converts a <a href="../../../../../org/apache/calcite/rel/core/Calc.html" title="org.apache.calcite.rel.core中的类"><code>Calc</code></a>
to a <a href="../../../../../org/apache/calcite/rel/core/Project.html" title="org.apache.calcite.rel.core中的类"><code>Project</code></a>
and <a href="../../../../../org/apache/calcite/rel/core/Filter.html" title="org.apache.calcite.rel.core中的类"><code>Filter</code></a>.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/CoerceInputsRule.html" title="org.apache.calcite.rel.rules中的类">CoerceInputsRule</a></td>
<td class="colLast">
<div class="block">CoerceInputsRule pre-casts inputs to a particular type.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/DateRangeRules.html" title="org.apache.calcite.rel.rules中的类">DateRangeRules</a></td>
<td class="colLast">
<div class="block">Collection of planner rules that convert
<code>EXTRACT(timeUnit FROM dateTime) = constant</code>,
<code>FLOOR(dateTime to timeUnit</code> = constant} and
<code>CEIL(dateTime to timeUnit</code> = constant} to
<code>dateTime BETWEEN lower AND upper</code>.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/DateRangeRules.FilterDateRangeRule.html" title="org.apache.calcite.rel.rules中的类">DateRangeRules.FilterDateRangeRule</a></td>
<td class="colLast">
<div class="block">Rule that converts EXTRACT, FLOOR and CEIL in a <a href="../../../../../org/apache/calcite/rel/core/Filter.html" title="org.apache.calcite.rel.core中的类"><code>Filter</code></a> into a date
range.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/EquiJoin.html" title="org.apache.calcite.rel.rules中的类">EquiJoin</a></td>
<td class="colLast">已过时
<div class="block"><span class="deprecationComment">Use
<a href="../../../../../org/apache/calcite/rel/core/EquiJoin.html" title="org.apache.calcite.rel.core中的类"><code>EquiJoin in 'core' package</code></a></span></div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/ExchangeRemoveConstantKeysRule.html" title="org.apache.calcite.rel.rules中的类">ExchangeRemoveConstantKeysRule</a></td>
<td class="colLast">
<div class="block">Planner rule that removes keys from
a <a href="../../../../../org/apache/calcite/rel/core/Exchange.html" title="org.apache.calcite.rel.core中的类"><code>Exchange</code></a> if those keys are known to be constant.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/ExchangeRemoveConstantKeysRule.SortExchangeRemoveConstantKeysRule.html" title="org.apache.calcite.rel.rules中的类">ExchangeRemoveConstantKeysRule.SortExchangeRemoveConstantKeysRule</a></td>
<td class="colLast">
<div class="block">Rule that reduces constants inside a <a href="../../../../../org/apache/calcite/rel/core/SortExchange.html" title="org.apache.calcite.rel.core中的类"><code>SortExchange</code></a>.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/FilterAggregateTransposeRule.html" title="org.apache.calcite.rel.rules中的类">FilterAggregateTransposeRule</a></td>
<td class="colLast">
<div class="block">Planner rule that pushes a <a href="../../../../../org/apache/calcite/rel/core/Filter.html" title="org.apache.calcite.rel.core中的类"><code>Filter</code></a>
past a <a href="../../../../../org/apache/calcite/rel/core/Aggregate.html" title="org.apache.calcite.rel.core中的类"><code>Aggregate</code></a>.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/FilterCalcMergeRule.html" title="org.apache.calcite.rel.rules中的类">FilterCalcMergeRule</a></td>
<td class="colLast">
<div class="block">Planner rule that merges a
<a href="../../../../../org/apache/calcite/rel/logical/LogicalFilter.html" title="org.apache.calcite.rel.logical中的类"><code>LogicalFilter</code></a> and a
<a href="../../../../../org/apache/calcite/rel/logical/LogicalCalc.html" title="org.apache.calcite.rel.logical中的类"><code>LogicalCalc</code></a>.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/FilterCorrelateRule.html" title="org.apache.calcite.rel.rules中的类">FilterCorrelateRule</a></td>
<td class="colLast">
<div class="block">Planner rule that pushes a <a href="../../../../../org/apache/calcite/rel/core/Filter.html" title="org.apache.calcite.rel.core中的类"><code>Filter</code></a> above a <a href="../../../../../org/apache/calcite/rel/core/Correlate.html" title="org.apache.calcite.rel.core中的类"><code>Correlate</code></a> into the
inputs of the Correlate.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/FilterJoinRule.html" title="org.apache.calcite.rel.rules中的类">FilterJoinRule</a></td>
<td class="colLast">
<div class="block">Planner rule that pushes filters above and
within a join node into the join node and/or its children nodes.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/FilterJoinRule.FilterIntoJoinRule.html" title="org.apache.calcite.rel.rules中的类">FilterJoinRule.FilterIntoJoinRule</a></td>
<td class="colLast">
<div class="block">Rule that tries to push filter expressions into a join
condition and into the inputs of the join.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/FilterJoinRule.JoinConditionPushRule.html" title="org.apache.calcite.rel.rules中的类">FilterJoinRule.JoinConditionPushRule</a></td>
<td class="colLast">
<div class="block">Rule that pushes parts of the join condition to its inputs.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/FilterMergeRule.html" title="org.apache.calcite.rel.rules中的类">FilterMergeRule</a></td>
<td class="colLast">
<div class="block">Planner rule that combines two
<a href="../../../../../org/apache/calcite/rel/logical/LogicalFilter.html" title="org.apache.calcite.rel.logical中的类"><code>LogicalFilter</code></a>s.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/FilterMultiJoinMergeRule.html" title="org.apache.calcite.rel.rules中的类">FilterMultiJoinMergeRule</a></td>
<td class="colLast">
<div class="block">Planner rule that merges a
<a href="../../../../../org/apache/calcite/rel/core/Filter.html" title="org.apache.calcite.rel.core中的类"><code>Filter</code></a> into a <a href="../../../../../org/apache/calcite/rel/rules/MultiJoin.html" title="org.apache.calcite.rel.rules中的类"><code>MultiJoin</code></a>,
creating a richer <code>MultiJoin</code>.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/FilterProjectTransposeRule.html" title="org.apache.calcite.rel.rules中的类">FilterProjectTransposeRule</a></td>
<td class="colLast">
<div class="block">Planner rule that pushes
a <a href="../../../../../org/apache/calcite/rel/core/Filter.html" title="org.apache.calcite.rel.core中的类"><code>Filter</code></a>
past a <a href="../../../../../org/apache/calcite/rel/core/Project.html" title="org.apache.calcite.rel.core中的类"><code>Project</code></a>.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/FilterRemoveIsNotDistinctFromRule.html" title="org.apache.calcite.rel.rules中的类">FilterRemoveIsNotDistinctFromRule</a></td>
<td class="colLast">
<div class="block">Planner rule that replaces <code>IS NOT DISTINCT FROM</code>
in a <a href="../../../../../org/apache/calcite/rel/core/Filter.html" title="org.apache.calcite.rel.core中的类"><code>Filter</code></a> with logically equivalent operations.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/FilterSetOpTransposeRule.html" title="org.apache.calcite.rel.rules中的类">FilterSetOpTransposeRule</a></td>
<td class="colLast">
<div class="block">Planner rule that pushes a <a href="../../../../../org/apache/calcite/rel/core/Filter.html" title="org.apache.calcite.rel.core中的类"><code>Filter</code></a>
past a <a href="../../../../../org/apache/calcite/rel/core/SetOp.html" title="org.apache.calcite.rel.core中的类"><code>SetOp</code></a>.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/FilterTableFunctionTransposeRule.html" title="org.apache.calcite.rel.rules中的类">FilterTableFunctionTransposeRule</a></td>
<td class="colLast">
<div class="block">Planner rule that pushes
a <a href="../../../../../org/apache/calcite/rel/logical/LogicalFilter.html" title="org.apache.calcite.rel.logical中的类"><code>LogicalFilter</code></a>
past a <a href="../../../../../org/apache/calcite/rel/logical/LogicalTableFunctionScan.html" title="org.apache.calcite.rel.logical中的类"><code>LogicalTableFunctionScan</code></a>.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/FilterTableScanRule.html" title="org.apache.calcite.rel.rules中的类">FilterTableScanRule</a></td>
<td class="colLast">
<div class="block">Planner rule that converts
a <a href="../../../../../org/apache/calcite/rel/core/Filter.html" title="org.apache.calcite.rel.core中的类"><code>Filter</code></a>
on a <a href="../../../../../org/apache/calcite/rel/core/TableScan.html" title="org.apache.calcite.rel.core中的类"><code>TableScan</code></a>
of a <a href="../../../../../org/apache/calcite/schema/FilterableTable.html" title="org.apache.calcite.schema中的接口"><code>FilterableTable</code></a>
or a <a href="../../../../../org/apache/calcite/schema/ProjectableFilterableTable.html" title="org.apache.calcite.schema中的接口"><code>ProjectableFilterableTable</code></a>
to a <a href="../../../../../org/apache/calcite/interpreter/Bindables.BindableTableScan.html" title="org.apache.calcite.interpreter中的类"><code>Bindables.BindableTableScan</code></a>.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/FilterToCalcRule.html" title="org.apache.calcite.rel.rules中的类">FilterToCalcRule</a></td>
<td class="colLast">
<div class="block">Planner rule that converts a
<a href="../../../../../org/apache/calcite/rel/logical/LogicalFilter.html" title="org.apache.calcite.rel.logical中的类"><code>LogicalFilter</code></a> to a
<a href="../../../../../org/apache/calcite/rel/logical/LogicalCalc.html" title="org.apache.calcite.rel.logical中的类"><code>LogicalCalc</code></a>.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/IntersectToDistinctRule.html" title="org.apache.calcite.rel.rules中的类">IntersectToDistinctRule</a></td>
<td class="colLast">
<div class="block">Planner rule that translates a distinct
<a href="../../../../../org/apache/calcite/rel/core/Intersect.html" title="org.apache.calcite.rel.core中的类"><code>Intersect</code></a>
(<code>all</code> = <code>false</code>)
into a group of operators composed of
<a href="../../../../../org/apache/calcite/rel/core/Union.html" title="org.apache.calcite.rel.core中的类"><code>Union</code></a>,
<a href="../../../../../org/apache/calcite/rel/core/Aggregate.html" title="org.apache.calcite.rel.core中的类"><code>Aggregate</code></a>, etc.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/JoinAddRedundantSemiJoinRule.html" title="org.apache.calcite.rel.rules中的类">JoinAddRedundantSemiJoinRule</a></td>
<td class="colLast">
<div class="block">Rule to add a semi-join into a join.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/JoinAssociateRule.html" title="org.apache.calcite.rel.rules中的类">JoinAssociateRule</a></td>
<td class="colLast">
<div class="block">Planner rule that changes a join based on the associativity rule.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/JoinCommuteRule.html" title="org.apache.calcite.rel.rules中的类">JoinCommuteRule</a></td>
<td class="colLast">
<div class="block">Planner rule that permutes the inputs to a
<a href="../../../../../org/apache/calcite/rel/core/Join.html" title="org.apache.calcite.rel.core中的类"><code>Join</code></a>.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/JoinExtractFilterRule.html" title="org.apache.calcite.rel.rules中的类">JoinExtractFilterRule</a></td>
<td class="colLast">
<div class="block">Rule to convert an
<a href="../../../../../org/apache/calcite/rel/logical/LogicalJoin.html" title="org.apache.calcite.rel.logical中的类"><code>inner join</code></a> to a
<a href="../../../../../org/apache/calcite/rel/logical/LogicalFilter.html" title="org.apache.calcite.rel.logical中的类"><code>filter</code></a> on top of a
<a href="../../../../../org/apache/calcite/rel/logical/LogicalJoin.html" title="org.apache.calcite.rel.logical中的类"><code>cartesian inner join</code></a>.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/JoinProjectTransposeRule.html" title="org.apache.calcite.rel.rules中的类">JoinProjectTransposeRule</a></td>
<td class="colLast">
<div class="block">Planner rule that matches a
<a href="../../../../../org/apache/calcite/rel/core/Join.html" title="org.apache.calcite.rel.core中的类"><code>Join</code></a> one of whose inputs is a
<a href="../../../../../org/apache/calcite/rel/logical/LogicalProject.html" title="org.apache.calcite.rel.logical中的类"><code>LogicalProject</code></a>, and
pulls the project up.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/JoinPushExpressionsRule.html" title="org.apache.calcite.rel.rules中的类">JoinPushExpressionsRule</a></td>
<td class="colLast">
<div class="block">Planner rule that pushes down expressions in "equal" join condition.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/JoinPushThroughJoinRule.html" title="org.apache.calcite.rel.rules中的类">JoinPushThroughJoinRule</a></td>
<td class="colLast">
<div class="block">Rule that pushes the right input of a join into through the left input of
the join, provided that the left input is also a join.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/JoinPushTransitivePredicatesRule.html" title="org.apache.calcite.rel.rules中的类">JoinPushTransitivePredicatesRule</a></td>
<td class="colLast">
<div class="block">Planner rule that infers predicates from on a
<a href="../../../../../org/apache/calcite/rel/core/Join.html" title="org.apache.calcite.rel.core中的类"><code>Join</code></a> and creates
<a href="../../../../../org/apache/calcite/rel/core/Filter.html" title="org.apache.calcite.rel.core中的类"><code>Filter</code></a>s if those predicates can be pushed
to its inputs.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/JoinToCorrelateRule.html" title="org.apache.calcite.rel.rules中的类">JoinToCorrelateRule</a></td>
<td class="colLast">
<div class="block">Rule that converts a <a href="../../../../../org/apache/calcite/rel/core/Join.html" title="org.apache.calcite.rel.core中的类"><code>Join</code></a>
into a <a href="../../../../../org/apache/calcite/rel/logical/LogicalCorrelate.html" title="org.apache.calcite.rel.logical中的类"><code>LogicalCorrelate</code></a>, which can
then be implemented using nested loops.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/JoinToMultiJoinRule.html" title="org.apache.calcite.rel.rules中的类">JoinToMultiJoinRule</a></td>
<td class="colLast">
<div class="block">Planner rule to flatten a tree of
<a href="../../../../../org/apache/calcite/rel/logical/LogicalJoin.html" title="org.apache.calcite.rel.logical中的类"><code>LogicalJoin</code></a>s
into a single <a href="../../../../../org/apache/calcite/rel/rules/MultiJoin.html" title="org.apache.calcite.rel.rules中的类"><code>MultiJoin</code></a> with N inputs.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/JoinUnionTransposeRule.html" title="org.apache.calcite.rel.rules中的类">JoinUnionTransposeRule</a></td>
<td class="colLast">
<div class="block">Planner rule that pushes a
<a href="../../../../../org/apache/calcite/rel/core/Join.html" title="org.apache.calcite.rel.core中的类"><code>Join</code></a>
past a non-distinct <a href="../../../../../org/apache/calcite/rel/core/Union.html" title="org.apache.calcite.rel.core中的类"><code>Union</code></a>.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/LoptJoinTree.html" title="org.apache.calcite.rel.rules中的类">LoptJoinTree</a></td>
<td class="colLast">
<div class="block">Utility class used to store a <a href="../../../../../org/apache/calcite/rel/core/Join.html" title="org.apache.calcite.rel.core中的类"><code>Join</code></a> tree
and the factors that make up the tree.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/LoptJoinTree.BinaryTree.html" title="org.apache.calcite.rel.rules中的类">LoptJoinTree.BinaryTree</a></td>
<td class="colLast">
<div class="block">Simple binary tree class that stores an id in the leaf nodes and keeps
track of the parent LoptJoinTree object associated with the binary tree.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/LoptJoinTree.Leaf.html" title="org.apache.calcite.rel.rules中的类">LoptJoinTree.Leaf</a></td>
<td class="colLast">
<div class="block">Binary tree node that has no children.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/LoptJoinTree.Node.html" title="org.apache.calcite.rel.rules中的类">LoptJoinTree.Node</a></td>
<td class="colLast">
<div class="block">Binary tree node that has two children.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/LoptMultiJoin.html" title="org.apache.calcite.rel.rules中的类">LoptMultiJoin</a></td>
<td class="colLast">
<div class="block">Utility class that keeps track of the join factors that
make up a <a href="../../../../../org/apache/calcite/rel/rules/MultiJoin.html" title="org.apache.calcite.rel.rules中的类"><code>MultiJoin</code></a>.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/LoptOptimizeJoinRule.html" title="org.apache.calcite.rel.rules中的类">LoptOptimizeJoinRule</a></td>
<td class="colLast">
<div class="block">Planner rule that implements the heuristic planner for determining optimal
join orderings.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/LoptSemiJoinOptimizer.html" title="org.apache.calcite.rel.rules中的类">LoptSemiJoinOptimizer</a></td>
<td class="colLast">
<div class="block">Implements the logic for determining the optimal
semi-joins to be used in processing joins in a query.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/MatchRule.html" title="org.apache.calcite.rel.rules中的类">MatchRule</a></td>
<td class="colLast">
<div class="block">Planner rule that converts a
<a href="../../../../../org/apache/calcite/rel/logical/LogicalMatch.html" title="org.apache.calcite.rel.logical中的类"><code>LogicalMatch</code></a> to the result
of calling <a href="../../../../../org/apache/calcite/rel/logical/LogicalMatch.html#copy-org.apache.calcite.plan.RelTraitSet-java.util.List-"><code>LogicalMatch.copy(org.apache.calcite.plan.RelTraitSet, java.util.List&lt;org.apache.calcite.rel.RelNode&gt;)</code></a>.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/MaterializedViewFilterScanRule.html" title="org.apache.calcite.rel.rules中的类">MaterializedViewFilterScanRule</a></td>
<td class="colLast">
<div class="block">Planner rule that converts
a <a href="../../../../../org/apache/calcite/rel/core/Filter.html" title="org.apache.calcite.rel.core中的类"><code>Filter</code></a>
on a <a href="../../../../../org/apache/calcite/rel/core/TableScan.html" title="org.apache.calcite.rel.core中的类"><code>TableScan</code></a>
to a <a href="../../../../../org/apache/calcite/rel/core/Filter.html" title="org.apache.calcite.rel.core中的类"><code>Filter</code></a> on Materialized View</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/MultiJoin.html" title="org.apache.calcite.rel.rules中的类">MultiJoin</a></td>
<td class="colLast">
<div class="block">A MultiJoin represents a join of N inputs, whereas regular Joins
represent strictly binary joins.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/MultiJoinOptimizeBushyRule.html" title="org.apache.calcite.rel.rules中的类">MultiJoinOptimizeBushyRule</a></td>
<td class="colLast">
<div class="block">Planner rule that finds an approximately optimal ordering for join operators
using a heuristic algorithm.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/MultiJoinProjectTransposeRule.html" title="org.apache.calcite.rel.rules中的类">MultiJoinProjectTransposeRule</a></td>
<td class="colLast">
<div class="block">MultiJoinProjectTransposeRule implements the rule for pulling
<a href="../../../../../org/apache/calcite/rel/logical/LogicalProject.html" title="org.apache.calcite.rel.logical中的类"><code>LogicalProject</code></a>s that are on top of a
<a href="../../../../../org/apache/calcite/rel/rules/MultiJoin.html" title="org.apache.calcite.rel.rules中的类"><code>MultiJoin</code></a> and beneath a
<a href="../../../../../org/apache/calcite/rel/logical/LogicalJoin.html" title="org.apache.calcite.rel.logical中的类"><code>LogicalJoin</code></a> so the
<a href="../../../../../org/apache/calcite/rel/logical/LogicalProject.html" title="org.apache.calcite.rel.logical中的类"><code>LogicalProject</code></a> appears above the
<a href="../../../../../org/apache/calcite/rel/logical/LogicalJoin.html" title="org.apache.calcite.rel.logical中的类"><code>LogicalJoin</code></a>.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/ProjectCalcMergeRule.html" title="org.apache.calcite.rel.rules中的类">ProjectCalcMergeRule</a></td>
<td class="colLast">
<div class="block">Planner rule which merges a
<a href="../../../../../org/apache/calcite/rel/logical/LogicalProject.html" title="org.apache.calcite.rel.logical中的类"><code>LogicalProject</code></a> and a
<a href="../../../../../org/apache/calcite/rel/logical/LogicalCalc.html" title="org.apache.calcite.rel.logical中的类"><code>LogicalCalc</code></a>.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/ProjectCorrelateTransposeRule.html" title="org.apache.calcite.rel.rules中的类">ProjectCorrelateTransposeRule</a></td>
<td class="colLast">
<div class="block">Push Project under Correlate to apply on Correlate's left and right child</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/ProjectCorrelateTransposeRule.RelNodesExprsHandler.html" title="org.apache.calcite.rel.rules中的类">ProjectCorrelateTransposeRule.RelNodesExprsHandler</a></td>
<td class="colLast">
<div class="block">Visitor for RelNodes which applies specified <a href="../../../../../org/apache/calcite/rex/RexShuttle.html" title="org.apache.calcite.rex中的类"><code>RexShuttle</code></a> visitor
for every node in the tree.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/ProjectCorrelateTransposeRule.RexFieldAccessReplacer.html" title="org.apache.calcite.rel.rules中的类">ProjectCorrelateTransposeRule.RexFieldAccessReplacer</a></td>
<td class="colLast">
<div class="block">Visitor for RexNodes which replaces <a href="../../../../../org/apache/calcite/rex/RexCorrelVariable.html" title="org.apache.calcite.rex中的类"><code>RexCorrelVariable</code></a> with specified.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/ProjectFilterTransposeRule.html" title="org.apache.calcite.rel.rules中的类">ProjectFilterTransposeRule</a></td>
<td class="colLast">
<div class="block">Planner rule that pushes a <a href="../../../../../org/apache/calcite/rel/core/Project.html" title="org.apache.calcite.rel.core中的类"><code>Project</code></a>
past a <a href="../../../../../org/apache/calcite/rel/core/Filter.html" title="org.apache.calcite.rel.core中的类"><code>Filter</code></a>.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/ProjectJoinJoinRemoveRule.html" title="org.apache.calcite.rel.rules中的类">ProjectJoinJoinRemoveRule</a></td>
<td class="colLast">
<div class="block">Planner rule that matches an <a href="../../../../../org/apache/calcite/rel/core/Project.html" title="org.apache.calcite.rel.core中的类"><code>Project</code></a>
on a <a href="../../../../../org/apache/calcite/rel/core/Join.html" title="org.apache.calcite.rel.core中的类"><code>Join</code></a> and removes the left input
of the join provided that the left input is also a left join if possible.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/ProjectJoinRemoveRule.html" title="org.apache.calcite.rel.rules中的类">ProjectJoinRemoveRule</a></td>
<td class="colLast">
<div class="block">Planner rule that matches an <a href="../../../../../org/apache/calcite/rel/core/Project.html" title="org.apache.calcite.rel.core中的类"><code>Project</code></a>
on a <a href="../../../../../org/apache/calcite/rel/core/Join.html" title="org.apache.calcite.rel.core中的类"><code>Join</code></a> and removes the join provided that the join is a left join
or right join and the join keys are unique.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/ProjectJoinTransposeRule.html" title="org.apache.calcite.rel.rules中的类">ProjectJoinTransposeRule</a></td>
<td class="colLast">
<div class="block">Planner rule that pushes a <a href="../../../../../org/apache/calcite/rel/core/Project.html" title="org.apache.calcite.rel.core中的类"><code>Project</code></a>
past a <a href="../../../../../org/apache/calcite/rel/core/Join.html" title="org.apache.calcite.rel.core中的类"><code>Join</code></a>
by splitting the projection into a projection on top of each child of
the join.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/ProjectMergeRule.html" title="org.apache.calcite.rel.rules中的类">ProjectMergeRule</a></td>
<td class="colLast">
<div class="block">ProjectMergeRule merges a <a href="../../../../../org/apache/calcite/rel/core/Project.html" title="org.apache.calcite.rel.core中的类"><code>Project</code></a> into
another <a href="../../../../../org/apache/calcite/rel/core/Project.html" title="org.apache.calcite.rel.core中的类"><code>Project</code></a>,
provided the projects aren't projecting identical sets of input references.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/ProjectMultiJoinMergeRule.html" title="org.apache.calcite.rel.rules中的类">ProjectMultiJoinMergeRule</a></td>
<td class="colLast">
<div class="block">Planner rule that pushes
<a href="../../../../../org/apache/calcite/rel/core/Project.html" title="org.apache.calcite.rel.core中的类"><code>Project</code></a>
into a <a href="../../../../../org/apache/calcite/rel/rules/MultiJoin.html" title="org.apache.calcite.rel.rules中的类"><code>MultiJoin</code></a>,
creating a richer <code>MultiJoin</code>.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/ProjectRemoveRule.html" title="org.apache.calcite.rel.rules中的类">ProjectRemoveRule</a></td>
<td class="colLast">
<div class="block">Planner rule that,
given a <a href="../../../../../org/apache/calcite/rel/core/Project.html" title="org.apache.calcite.rel.core中的类"><code>Project</code></a> node that
merely returns its input, converts the node into its child.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/ProjectSetOpTransposeRule.html" title="org.apache.calcite.rel.rules中的类">ProjectSetOpTransposeRule</a></td>
<td class="colLast">
<div class="block">Planner rule that pushes
a <a href="../../../../../org/apache/calcite/rel/logical/LogicalProject.html" title="org.apache.calcite.rel.logical中的类"><code>LogicalProject</code></a>
past a <a href="../../../../../org/apache/calcite/rel/core/SetOp.html" title="org.apache.calcite.rel.core中的类"><code>SetOp</code></a>.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/ProjectSortTransposeRule.html" title="org.apache.calcite.rel.rules中的类">ProjectSortTransposeRule</a></td>
<td class="colLast">
<div class="block">Planner rule that pushes
a <a href="../../../../../org/apache/calcite/rel/core/Project.html" title="org.apache.calcite.rel.core中的类"><code>Project</code></a>
past a <a href="../../../../../org/apache/calcite/rel/core/Sort.html" title="org.apache.calcite.rel.core中的类"><code>Sort</code></a>.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/ProjectTableScanRule.html" title="org.apache.calcite.rel.rules中的类">ProjectTableScanRule</a></td>
<td class="colLast">
<div class="block">Planner rule that converts a <a href="../../../../../org/apache/calcite/rel/core/Project.html" title="org.apache.calcite.rel.core中的类"><code>Project</code></a>
on a <a href="../../../../../org/apache/calcite/rel/core/TableScan.html" title="org.apache.calcite.rel.core中的类"><code>TableScan</code></a>
of a <a href="../../../../../org/apache/calcite/schema/ProjectableFilterableTable.html" title="org.apache.calcite.schema中的接口"><code>ProjectableFilterableTable</code></a>
to a <a href="../../../../../org/apache/calcite/interpreter/Bindables.BindableTableScan.html" title="org.apache.calcite.interpreter中的类"><code>Bindables.BindableTableScan</code></a>.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/ProjectToCalcRule.html" title="org.apache.calcite.rel.rules中的类">ProjectToCalcRule</a></td>
<td class="colLast">
<div class="block">Rule to convert a
<a href="../../../../../org/apache/calcite/rel/logical/LogicalProject.html" title="org.apache.calcite.rel.logical中的类"><code>LogicalProject</code></a> to a
<a href="../../../../../org/apache/calcite/rel/logical/LogicalCalc.html" title="org.apache.calcite.rel.logical中的类"><code>LogicalCalc</code></a>
The rule does not fire if the child is a
<a href="../../../../../org/apache/calcite/rel/logical/LogicalProject.html" title="org.apache.calcite.rel.logical中的类"><code>LogicalProject</code></a>,
<a href="../../../../../org/apache/calcite/rel/logical/LogicalFilter.html" title="org.apache.calcite.rel.logical中的类"><code>LogicalFilter</code></a> or
<a href="../../../../../org/apache/calcite/rel/logical/LogicalCalc.html" title="org.apache.calcite.rel.logical中的类"><code>LogicalCalc</code></a>.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/ProjectToWindowRule.html" title="org.apache.calcite.rel.rules中的类">ProjectToWindowRule</a></td>
<td class="colLast">
<div class="block">Planner rule that slices a
<a href="../../../../../org/apache/calcite/rel/core/Project.html" title="org.apache.calcite.rel.core中的类"><code>Project</code></a>
into sections which contain windowed
aggregate functions and sections which do not.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/ProjectToWindowRule.CalcToWindowRule.html" title="org.apache.calcite.rel.rules中的类">ProjectToWindowRule.CalcToWindowRule</a></td>
<td class="colLast">
<div class="block">Instance of the rule that applies to a
<a href="../../../../../org/apache/calcite/rel/core/Calc.html" title="org.apache.calcite.rel.core中的类"><code>Calc</code></a> that contains
windowed aggregates and converts it into a mixture of
<a href="../../../../../org/apache/calcite/rel/logical/LogicalWindow.html" title="org.apache.calcite.rel.logical中的类"><code>LogicalWindow</code></a> and <code>Calc</code>.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/ProjectToWindowRule.ProjectToLogicalProjectAndWindowRule.html" title="org.apache.calcite.rel.rules中的类">ProjectToWindowRule.ProjectToLogicalProjectAndWindowRule</a></td>
<td class="colLast">
<div class="block">Instance of the rule that can be applied to a
<a href="../../../../../org/apache/calcite/rel/core/Project.html" title="org.apache.calcite.rel.core中的类"><code>Project</code></a> and that produces, in turn,
a mixture of <code>LogicalProject</code>
and <a href="../../../../../org/apache/calcite/rel/logical/LogicalWindow.html" title="org.apache.calcite.rel.logical中的类"><code>LogicalWindow</code></a>.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/ProjectWindowTransposeRule.html" title="org.apache.calcite.rel.rules中的类">ProjectWindowTransposeRule</a></td>
<td class="colLast">
<div class="block">Planner rule that pushes
a <a href="../../../../../org/apache/calcite/rel/logical/LogicalProject.html" title="org.apache.calcite.rel.logical中的类"><code>LogicalProject</code></a>
past a <a href="../../../../../org/apache/calcite/rel/logical/LogicalWindow.html" title="org.apache.calcite.rel.logical中的类"><code>LogicalWindow</code></a>.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/PruneEmptyRules.html" title="org.apache.calcite.rel.rules中的类">PruneEmptyRules</a></td>
<td class="colLast">
<div class="block">Collection of rules which remove sections of a query plan known never to
produce any rows.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/PruneEmptyRules.RemoveEmptySingleRule.html" title="org.apache.calcite.rel.rules中的类">PruneEmptyRules.RemoveEmptySingleRule</a></td>
<td class="colLast">
<div class="block">Planner rule that converts a single-rel (e.g. project, sort, aggregate or
filter) on top of the empty relational expression into empty.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/PushProjector.html" title="org.apache.calcite.rel.rules中的类">PushProjector</a></td>
<td class="colLast">
<div class="block">PushProjector is a utility class used to perform operations used in push
projection rules.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/ReduceDecimalsRule.html" title="org.apache.calcite.rel.rules中的类">ReduceDecimalsRule</a></td>
<td class="colLast">
<div class="block">ReduceDecimalsRule is a rule which reduces decimal operations (such as casts
or arithmetic) into operations involving more primitive types (such as longs
and doubles).</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/ReduceExpressionsRule.html" title="org.apache.calcite.rel.rules中的类">ReduceExpressionsRule</a></td>
<td class="colLast">
<div class="block">Collection of planner rules that apply various simplifying transformations on
RexNode trees.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/ReduceExpressionsRule.CalcReduceExpressionsRule.html" title="org.apache.calcite.rel.rules中的类">ReduceExpressionsRule.CalcReduceExpressionsRule</a></td>
<td class="colLast">
<div class="block">Rule that reduces constants inside a <a href="../../../../../org/apache/calcite/rel/core/Calc.html" title="org.apache.calcite.rel.core中的类"><code>Calc</code></a>.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/ReduceExpressionsRule.CaseShuttle.html" title="org.apache.calcite.rel.rules中的类">ReduceExpressionsRule.CaseShuttle</a></td>
<td class="colLast">
<div class="block">Shuttle that pushes predicates into a CASE.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/ReduceExpressionsRule.FilterReduceExpressionsRule.html" title="org.apache.calcite.rel.rules中的类">ReduceExpressionsRule.FilterReduceExpressionsRule</a></td>
<td class="colLast">
<div class="block">Rule that reduces constants inside a <a href="../../../../../org/apache/calcite/rel/core/Filter.html" title="org.apache.calcite.rel.core中的类"><code>Filter</code></a>.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/ReduceExpressionsRule.JoinReduceExpressionsRule.html" title="org.apache.calcite.rel.rules中的类">ReduceExpressionsRule.JoinReduceExpressionsRule</a></td>
<td class="colLast">
<div class="block">Rule that reduces constants inside a <a href="../../../../../org/apache/calcite/rel/core/Join.html" title="org.apache.calcite.rel.core中的类"><code>Join</code></a>.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/ReduceExpressionsRule.ProjectReduceExpressionsRule.html" title="org.apache.calcite.rel.rules中的类">ReduceExpressionsRule.ProjectReduceExpressionsRule</a></td>
<td class="colLast">
<div class="block">Rule that reduces constants inside a <a href="../../../../../org/apache/calcite/rel/core/Project.html" title="org.apache.calcite.rel.core中的类"><code>Project</code></a>.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/ReduceExpressionsRule.ReducibleExprLocator.html" title="org.apache.calcite.rel.rules中的类">ReduceExpressionsRule.ReducibleExprLocator</a></td>
<td class="colLast">
<div class="block">Helper class used to locate expressions that either can be reduced to
literals or contain redundant casts.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/ReduceExpressionsRule.RexReplacer.html" title="org.apache.calcite.rel.rules中的类">ReduceExpressionsRule.RexReplacer</a></td>
<td class="colLast">
<div class="block">Replaces expressions with their reductions.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/ReduceExpressionsRule.WindowReduceExpressionsRule.html" title="org.apache.calcite.rel.rules中的类">ReduceExpressionsRule.WindowReduceExpressionsRule</a></td>
<td class="colLast">
<div class="block">Rule that reduces constants inside a <a href="../../../../../org/apache/calcite/rel/core/Window.html" title="org.apache.calcite.rel.core中的类"><code>Window</code></a>.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/SemiJoinFilterTransposeRule.html" title="org.apache.calcite.rel.rules中的类">SemiJoinFilterTransposeRule</a></td>
<td class="colLast">
<div class="block">Planner rule that pushes <code>SemiJoin</code>s down in a tree past
a <a href="../../../../../org/apache/calcite/rel/core/Filter.html" title="org.apache.calcite.rel.core中的类"><code>Filter</code></a>.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/SemiJoinJoinTransposeRule.html" title="org.apache.calcite.rel.rules中的类">SemiJoinJoinTransposeRule</a></td>
<td class="colLast">
<div class="block">Planner rule that pushes a <code>SemiJoin</code>
down in a tree past a <a href="../../../../../org/apache/calcite/rel/core/Join.html" title="org.apache.calcite.rel.core中的类"><code>Join</code></a>
in order to trigger other rules that will convert <code>SemiJoin</code>s.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/SemiJoinProjectTransposeRule.html" title="org.apache.calcite.rel.rules中的类">SemiJoinProjectTransposeRule</a></td>
<td class="colLast">
<div class="block">Planner rule that pushes
a <code>SemiJoin</code> down in a tree past
a <a href="../../../../../org/apache/calcite/rel/core/Project.html" title="org.apache.calcite.rel.core中的类"><code>Project</code></a>.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/SemiJoinRemoveRule.html" title="org.apache.calcite.rel.rules中的类">SemiJoinRemoveRule</a></td>
<td class="colLast">
<div class="block">Planner rule that removes a <code>SemiJoin</code>s from a join tree.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/SemiJoinRule.html" title="org.apache.calcite.rel.rules中的类">SemiJoinRule</a></td>
<td class="colLast">
<div class="block">Planner rule that creates a <code>SemiJoin</code> from a
<a href="../../../../../org/apache/calcite/rel/core/Join.html" title="org.apache.calcite.rel.core中的类"><code>Join</code></a> on top of a
<a href="../../../../../org/apache/calcite/rel/logical/LogicalAggregate.html" title="org.apache.calcite.rel.logical中的类"><code>LogicalAggregate</code></a>.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/SemiJoinRule.JoinToSemiJoinRule.html" title="org.apache.calcite.rel.rules中的类">SemiJoinRule.JoinToSemiJoinRule</a></td>
<td class="colLast">
<div class="block">SemiJoinRule that matches a Join with an empty Aggregate as its right
child.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/SemiJoinRule.ProjectToSemiJoinRule.html" title="org.apache.calcite.rel.rules中的类">SemiJoinRule.ProjectToSemiJoinRule</a></td>
<td class="colLast">
<div class="block">SemiJoinRule that matches a Project on top of a Join with an Aggregate
as its right child.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/SortJoinCopyRule.html" title="org.apache.calcite.rel.rules中的类">SortJoinCopyRule</a></td>
<td class="colLast">
<div class="block">Planner rule that copies a <a href="../../../../../org/apache/calcite/rel/core/Sort.html" title="org.apache.calcite.rel.core中的类"><code>Sort</code></a> past a
<a href="../../../../../org/apache/calcite/rel/core/Join.html" title="org.apache.calcite.rel.core中的类"><code>Join</code></a> without its limit and offset.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/SortJoinTransposeRule.html" title="org.apache.calcite.rel.rules中的类">SortJoinTransposeRule</a></td>
<td class="colLast">
<div class="block">Planner rule that pushes a <a href="../../../../../org/apache/calcite/rel/core/Sort.html" title="org.apache.calcite.rel.core中的类"><code>Sort</code></a> past a
<a href="../../../../../org/apache/calcite/rel/core/Join.html" title="org.apache.calcite.rel.core中的类"><code>Join</code></a>.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/SortProjectTransposeRule.html" title="org.apache.calcite.rel.rules中的类">SortProjectTransposeRule</a></td>
<td class="colLast">
<div class="block">Planner rule that pushes
a <a href="../../../../../org/apache/calcite/rel/core/Sort.html" title="org.apache.calcite.rel.core中的类"><code>Sort</code></a>
past a <a href="../../../../../org/apache/calcite/rel/core/Project.html" title="org.apache.calcite.rel.core中的类"><code>Project</code></a>.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/SortRemoveConstantKeysRule.html" title="org.apache.calcite.rel.rules中的类">SortRemoveConstantKeysRule</a></td>
<td class="colLast">
<div class="block">Planner rule that removes keys from a
a <a href="../../../../../org/apache/calcite/rel/core/Sort.html" title="org.apache.calcite.rel.core中的类"><code>Sort</code></a> if those keys are known to be
constant, or removes the entire Sort if all keys are constant.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/SortRemoveRule.html" title="org.apache.calcite.rel.rules中的类">SortRemoveRule</a></td>
<td class="colLast">
<div class="block">Planner rule that removes
a <a href="../../../../../org/apache/calcite/rel/core/Sort.html" title="org.apache.calcite.rel.core中的类"><code>Sort</code></a> if its input is already sorted.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/SortUnionTransposeRule.html" title="org.apache.calcite.rel.rules中的类">SortUnionTransposeRule</a></td>
<td class="colLast">
<div class="block">Planner rule that pushes a <a href="../../../../../org/apache/calcite/rel/core/Sort.html" title="org.apache.calcite.rel.core中的类"><code>Sort</code></a> past a
<a href="../../../../../org/apache/calcite/rel/core/Union.html" title="org.apache.calcite.rel.core中的类"><code>Union</code></a>.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/SubQueryRemoveRule.html" title="org.apache.calcite.rel.rules中的类">SubQueryRemoveRule</a></td>
<td class="colLast">
<div class="block">Transform that converts IN, EXISTS and scalar sub-queries into joins.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/SubQueryRemoveRule.SubQueryFilterRemoveRule.html" title="org.apache.calcite.rel.rules中的类">SubQueryRemoveRule.SubQueryFilterRemoveRule</a></td>
<td class="colLast">
<div class="block">Rule that converts a sub-queries from filter expressions into
<a href="../../../../../org/apache/calcite/rel/core/Correlate.html" title="org.apache.calcite.rel.core中的类"><code>Correlate</code></a> instances.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/SubQueryRemoveRule.SubQueryJoinRemoveRule.html" title="org.apache.calcite.rel.rules中的类">SubQueryRemoveRule.SubQueryJoinRemoveRule</a></td>
<td class="colLast">
<div class="block">Rule that converts sub-queries from join expressions into
<a href="../../../../../org/apache/calcite/rel/core/Correlate.html" title="org.apache.calcite.rel.core中的类"><code>Correlate</code></a> instances.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/SubQueryRemoveRule.SubQueryProjectRemoveRule.html" title="org.apache.calcite.rel.rules中的类">SubQueryRemoveRule.SubQueryProjectRemoveRule</a></td>
<td class="colLast">
<div class="block">Rule that converts sub-queries from project expressions into
<a href="../../../../../org/apache/calcite/rel/core/Correlate.html" title="org.apache.calcite.rel.core中的类"><code>Correlate</code></a> instances.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/TableScanRule.html" title="org.apache.calcite.rel.rules中的类">TableScanRule</a></td>
<td class="colLast">已过时
<div class="block"><span class="deprecationComment"><code>org.apache.calcite.rel.core.RelFactories.TableScanFactoryImpl</code>
has called <a href="../../../../../org/apache/calcite/plan/RelOptTable.html#toRel-org.apache.calcite.plan.RelOptTable.ToRelContext-"><code>RelOptTable.toRel(RelOptTable.ToRelContext)</code></a>.</span></div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/UnionEliminatorRule.html" title="org.apache.calcite.rel.rules中的类">UnionEliminatorRule</a></td>
<td class="colLast">
<div class="block"><code>UnionEliminatorRule</code> checks to see if its possible to optimize a
Union call by eliminating the Union operator altogether in the case the call
consists of only one input.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/UnionMergeRule.html" title="org.apache.calcite.rel.rules中的类">UnionMergeRule</a></td>
<td class="colLast">
<div class="block">UnionMergeRule implements the rule for combining two
non-distinct <a href="../../../../../org/apache/calcite/rel/core/SetOp.html" title="org.apache.calcite.rel.core中的类"><code>SetOp</code></a>s
into a single <a href="../../../../../org/apache/calcite/rel/core/SetOp.html" title="org.apache.calcite.rel.core中的类"><code>SetOp</code></a>.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/UnionPullUpConstantsRule.html" title="org.apache.calcite.rel.rules中的类">UnionPullUpConstantsRule</a></td>
<td class="colLast">
<div class="block">Planner rule that pulls up constants through a Union operator.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/UnionToDistinctRule.html" title="org.apache.calcite.rel.rules中的类">UnionToDistinctRule</a></td>
<td class="colLast">
<div class="block">Planner rule that translates a distinct
<a href="../../../../../org/apache/calcite/rel/core/Union.html" title="org.apache.calcite.rel.core中的类"><code>Union</code></a>
(<code>all</code> = <code>false</code>)
into an <a href="../../../../../org/apache/calcite/rel/core/Aggregate.html" title="org.apache.calcite.rel.core中的类"><code>Aggregate</code></a>
on top of a non-distinct <a href="../../../../../org/apache/calcite/rel/core/Union.html" title="org.apache.calcite.rel.core中的类"><code>Union</code></a>
(<code>all</code> = <code>true</code>).</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/calcite/rel/rules/ValuesReduceRule.html" title="org.apache.calcite.rel.rules中的类">ValuesReduceRule</a></td>
<td class="colLast">
<div class="block">Planner rule that folds projections and filters into an underlying
<a href="../../../../../org/apache/calcite/rel/logical/LogicalValues.html" title="org.apache.calcite.rel.logical中的类"><code>LogicalValues</code></a>.</div>
</td>
</tr>
</tbody>
</table>
</li>
</ul>
<a name="package.description">
<!-- -->
</a>
<h2 title="程序包org.apache.calcite.rel.rules的说明">程序包org.apache.calcite.rel.rules的说明</h2>
<div class="block">Provides a core set of planner rules.
<p>Consider this package to be the "standard library" of planner rules.
Most of the common rewrites that you would want to perform on logical
relational expressions, or generically on any data source, are present,
and have been well tested.
<p>Of course, the library is never complete, and contributions are welcome.
<p>Not present are rules specific to a particular data source: look in that
data source's adapter.
<p>Also out of the scope of this package are rules that support a particular
operation, such as decorrelation or recognizing materialized views. Those are
defined along with the algorithm.
<p>For
<h2>Related packages and classes</h2>
<ul>
<li>Package<code> <a href="../../sql/package-summary.html">
org.apache.calcite.sql</a></code>
is an object model for SQL expressions</li>
<li>Package<code> <a href="../../rex/package-summary.html">
org.apache.calcite.rex</a></code>
is an object model for relational row expressions</li>
<li>Package<code> <a href="../../plan/package-summary.html">
org.apache.calcite.plan</a></code>
provides an optimizer interface.</li>
</ul></div>
</div>
<!-- ======= 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 class="navBarCell1Rev">程序包</li>
<li></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/rel/rel2sql/package-summary.html">上一个程序包</a></li>
<li><a href="../../../../../org/apache/calcite/rel/rules/materialize/package-summary.html">下一个程序包</a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../index.html?org/apache/calcite/rel/rules/package-summary.html" target="_top">框架</a></li>
<li><a href="package-summary.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>
<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>