blob: d8517591c2ea2a4a12d2092902afd3d8c5bfb090 [file] [log] [blame]
<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc -->
<title>Uses of Package org.apache.calcite.rel.rules (Apache Calcite API)</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../jquery/jquery-ui.css" title="Style">
<script type="text/javascript" src="../../../../../script.js"></script>
<script type="text/javascript" src="../../../../../jquery/jszip/dist/jszip.min.js"></script>
<script type="text/javascript" src="../../../../../jquery/jszip-utils/dist/jszip-utils.min.js"></script>
<!--[if IE]>
<script type="text/javascript" src="../../../../../jquery/jszip-utils/dist/jszip-utils-ie.min.js"></script>
<![endif]-->
<script type="text/javascript" src="../../../../../jquery/jquery-3.3.1.js"></script>
<script type="text/javascript" src="../../../../../jquery/jquery-migrate-3.0.1.js"></script>
<script type="text/javascript" src="../../../../../jquery/jquery-ui.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="Uses of Package org.apache.calcite.rel.rules (Apache Calcite API)";
}
}
catch(err) {
}
//-->
var pathtoroot = "../../../../../";
var useModuleDirectories = true;
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<nav role="navigation">
<div class="fixedNav">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a id="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li>Class</li>
<li class="navBarCell1Rev">Use</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<ul class="navListSearch">
<li><label for="search">SEARCH:</label>
<input type="text" id="search" value="search" disabled="disabled">
<input type="reset" id="reset" value="reset" disabled="disabled">
</li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<a id="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
</div>
<div class="navPadding">&nbsp;</div>
<script type="text/javascript"><!--
$('.navPadding').css('padding-top', $('.fixedNav').css("height"));
//-->
</script>
</nav>
</header>
<main role="main">
<div class="header">
<h1 title="Uses of Package org.apache.calcite.rel.rules" class="title">Uses of Package<br>org.apache.calcite.rel.rules</h1>
</div>
<div class="contentContainer">
<ul class="blockList">
<li class="blockList">
<table class="useSummary">
<caption><span>Packages that use <a href="package-summary.html">org.apache.calcite.rel.rules</a></span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Package</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tbody>
<tr class="altColor">
<th class="colFirst" scope="row"><a href="#org.apache.calcite.adapter.druid">org.apache.calcite.adapter.druid</a></th>
<td class="colLast">
<div class="block">Query provider based on a Druid database.</div>
</td>
</tr>
<tr class="rowColor">
<th class="colFirst" scope="row"><a href="#org.apache.calcite.plan">org.apache.calcite.plan</a></th>
<td class="colLast">
<div class="block">Defines interfaces for constructing rule-based optimizers of
relational expressions.</div>
</td>
</tr>
<tr class="altColor">
<th class="colFirst" scope="row"><a href="#org.apache.calcite.rel.rules">org.apache.calcite.rel.rules</a></th>
<td class="colLast">
<div class="block">Provides a core set of planner rules.</div>
</td>
</tr>
</tbody>
</table>
</li>
<li class="blockList"><a id="org.apache.calcite.adapter.druid">
<!-- -->
</a>
<table class="useSummary">
<caption><span>Classes in <a href="package-summary.html">org.apache.calcite.rel.rules</a> used by <a href="../../adapter/druid/package-summary.html">org.apache.calcite.adapter.druid</a></span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Class</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tbody>
<tr class="altColor">
<th class="colFirst" scope="row"><a href="class-use/AggregateExtractProjectRule.html#org.apache.calcite.adapter.druid">AggregateExtractProjectRule</a></th>
<td class="colLast">
<div class="block">Rule to extract a <a href="../core/Project.html" title="class in org.apache.calcite.rel.core"><code>Project</code></a>
from an <a href="../core/Aggregate.html" title="class in org.apache.calcite.rel.core"><code>Aggregate</code></a>
and push it down towards the input.</div>
</td>
</tr>
<tr class="rowColor">
<th class="colFirst" scope="row"><a href="class-use/AggregateFilterTransposeRule.html#org.apache.calcite.adapter.druid">AggregateFilterTransposeRule</a></th>
<td class="colLast">
<div class="block">Planner rule that matches an <a href="../core/Aggregate.html" title="class in org.apache.calcite.rel.core"><code>Aggregate</code></a>
on a <a href="../core/Filter.html" title="class in org.apache.calcite.rel.core"><code>Filter</code></a> and transposes them,
pushing the aggregate below the filter.</div>
</td>
</tr>
<tr class="altColor">
<th class="colFirst" scope="row"><a href="class-use/FilterAggregateTransposeRule.html#org.apache.calcite.adapter.druid">FilterAggregateTransposeRule</a></th>
<td class="colLast">
<div class="block">Planner rule that pushes a <a href="../core/Filter.html" title="class in org.apache.calcite.rel.core"><code>Filter</code></a>
past a <a href="../core/Aggregate.html" title="class in org.apache.calcite.rel.core"><code>Aggregate</code></a>.</div>
</td>
</tr>
<tr class="rowColor">
<th class="colFirst" scope="row"><a href="class-use/FilterProjectTransposeRule.html#org.apache.calcite.adapter.druid">FilterProjectTransposeRule</a></th>
<td class="colLast">
<div class="block">Planner rule that pushes
a <a href="../core/Filter.html" title="class in org.apache.calcite.rel.core"><code>Filter</code></a>
past a <a href="../core/Project.html" title="class in org.apache.calcite.rel.core"><code>Project</code></a>.</div>
</td>
</tr>
<tr class="altColor">
<th class="colFirst" scope="row"><a href="class-use/ProjectFilterTransposeRule.html#org.apache.calcite.adapter.druid">ProjectFilterTransposeRule</a></th>
<td class="colLast">
<div class="block">Planner rule that pushes a <a href="../core/Project.html" title="class in org.apache.calcite.rel.core"><code>Project</code></a>
past a <a href="../core/Filter.html" title="class in org.apache.calcite.rel.core"><code>Filter</code></a>.</div>
</td>
</tr>
<tr class="rowColor">
<th class="colFirst" scope="row"><a href="class-use/ProjectSortTransposeRule.html#org.apache.calcite.adapter.druid">ProjectSortTransposeRule</a></th>
<td class="colLast">
<div class="block">Planner rule that pushes
a <a href="../core/Project.html" title="class in org.apache.calcite.rel.core"><code>Project</code></a>
past a <a href="../core/Sort.html" title="class in org.apache.calcite.rel.core"><code>Sort</code></a>.</div>
</td>
</tr>
<tr class="altColor">
<th class="colFirst" scope="row"><a href="class-use/SortProjectTransposeRule.html#org.apache.calcite.adapter.druid">SortProjectTransposeRule</a></th>
<td class="colLast">
<div class="block">Planner rule that pushes
a <a href="../core/Sort.html" title="class in org.apache.calcite.rel.core"><code>Sort</code></a>
past a <a href="../core/Project.html" title="class in org.apache.calcite.rel.core"><code>Project</code></a>.</div>
</td>
</tr>
</tbody>
</table>
</li>
<li class="blockList"><a id="org.apache.calcite.plan">
<!-- -->
</a>
<table class="useSummary">
<caption><span>Classes in <a href="package-summary.html">org.apache.calcite.rel.rules</a> used by <a href="../../plan/package-summary.html">org.apache.calcite.plan</a></span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Class</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tbody>
<tr class="altColor">
<th class="colFirst" scope="row"><a href="class-use/MultiJoin.html#org.apache.calcite.plan">MultiJoin</a></th>
<td class="colLast">
<div class="block">A MultiJoin represents a join of N inputs, whereas regular Joins
represent strictly binary joins.</div>
</td>
</tr>
</tbody>
</table>
</li>
<li class="blockList"><a id="org.apache.calcite.rel.rules">
<!-- -->
</a>
<table class="useSummary">
<caption><span>Classes in <a href="package-summary.html">org.apache.calcite.rel.rules</a> used by <a href="package-summary.html">org.apache.calcite.rel.rules</a></span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Class</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tbody>
<tr class="altColor">
<th class="colFirst" scope="row"><a href="class-use/AbstractJoinExtractFilterRule.html#org.apache.calcite.rel.rules">AbstractJoinExtractFilterRule</a></th>
<td class="colLast">
<div class="block">Rule to convert an
<a href="../core/Join.html" title="class in org.apache.calcite.rel.core"><code>inner join</code></a> to a
<a href="../core/Filter.html" title="class in org.apache.calcite.rel.core"><code>filter</code></a> on top of a
<a href="../core/Join.html" title="class in org.apache.calcite.rel.core"><code>cartesian inner join</code></a>.</div>
</td>
</tr>
<tr class="rowColor">
<th class="colFirst" scope="row"><a href="class-use/AbstractMaterializedViewRule.html#org.apache.calcite.rel.rules">AbstractMaterializedViewRule</a></th>
<td class="colLast">
<div class="block">Planner rule that converts a <a href="../core/Project.html" title="class in org.apache.calcite.rel.core"><code>Project</code></a>
followed by <a href="../core/Aggregate.html" title="class in org.apache.calcite.rel.core"><code>Aggregate</code></a> or an
<a href="../core/Aggregate.html" title="class in org.apache.calcite.rel.core"><code>Aggregate</code></a> to a scan (and possibly
other operations) over a materialized view.</div>
</td>
</tr>
<tr class="altColor">
<th class="colFirst" scope="row"><a href="class-use/AbstractMaterializedViewRule.EquivalenceClasses.html#org.apache.calcite.rel.rules">AbstractMaterializedViewRule.EquivalenceClasses</a></th>
<td class="colLast">
<div class="block">Class representing an equivalence class, i.e., a set of equivalent columns</div>
</td>
</tr>
<tr class="rowColor">
<th class="colFirst" scope="row"><a href="class-use/AbstractMaterializedViewRule.MatchModality.html#org.apache.calcite.rel.rules">AbstractMaterializedViewRule.MatchModality</a></th>
<td class="colLast">
<div class="block">Complete, view partial, or query partial.</div>
</td>
</tr>
<tr class="altColor">
<th class="colFirst" scope="row"><a href="class-use/AbstractMaterializedViewRule.MaterializedViewAggregateRule.html#org.apache.calcite.rel.rules">AbstractMaterializedViewRule.MaterializedViewAggregateRule</a></th>
<td class="colLast">
<div class="block">Materialized view rewriting for aggregate</div>
</td>
</tr>
<tr class="rowColor">
<th class="colFirst" scope="row"><a href="class-use/AbstractMaterializedViewRule.MaterializedViewJoinRule.html#org.apache.calcite.rel.rules">AbstractMaterializedViewRule.MaterializedViewJoinRule</a></th>
<td class="colLast">
<div class="block">Materialized view rewriting for join</div>
</td>
</tr>
<tr class="altColor">
<th class="colFirst" scope="row"><a href="class-use/AbstractMaterializedViewRule.MaterializedViewOnlyAggregateRule.html#org.apache.calcite.rel.rules">AbstractMaterializedViewRule.MaterializedViewOnlyAggregateRule</a></th>
<td class="colLast">
<div class="block">Rule that matches Aggregate.</div>
</td>
</tr>
<tr class="rowColor">
<th class="colFirst" scope="row"><a href="class-use/AbstractMaterializedViewRule.MaterializedViewOnlyFilterRule.html#org.apache.calcite.rel.rules">AbstractMaterializedViewRule.MaterializedViewOnlyFilterRule</a></th>
<td class="colLast">
<div class="block">Rule that matches Filter.</div>
</td>
</tr>
<tr class="altColor">
<th class="colFirst" scope="row"><a href="class-use/AbstractMaterializedViewRule.MaterializedViewOnlyJoinRule.html#org.apache.calcite.rel.rules">AbstractMaterializedViewRule.MaterializedViewOnlyJoinRule</a></th>
<td class="colLast">
<div class="block">Rule that matches Join.</div>
</td>
</tr>
<tr class="rowColor">
<th class="colFirst" scope="row"><a href="class-use/AbstractMaterializedViewRule.MaterializedViewProjectAggregateRule.html#org.apache.calcite.rel.rules">AbstractMaterializedViewRule.MaterializedViewProjectAggregateRule</a></th>
<td class="colLast">
<div class="block">Rule that matches Project on Aggregate.</div>
</td>
</tr>
<tr class="altColor">
<th class="colFirst" scope="row"><a href="class-use/AbstractMaterializedViewRule.MaterializedViewProjectFilterRule.html#org.apache.calcite.rel.rules">AbstractMaterializedViewRule.MaterializedViewProjectFilterRule</a></th>
<td class="colLast">
<div class="block">Rule that matches Project on Filter.</div>
</td>
</tr>
<tr class="rowColor">
<th class="colFirst" scope="row"><a href="class-use/AbstractMaterializedViewRule.MaterializedViewProjectJoinRule.html#org.apache.calcite.rel.rules">AbstractMaterializedViewRule.MaterializedViewProjectJoinRule</a></th>
<td class="colLast">
<div class="block">Rule that matches Project on Join.</div>
</td>
</tr>
<tr class="altColor">
<th class="colFirst" scope="row"><a href="class-use/AbstractMaterializedViewRule.NodeLineage.html#org.apache.calcite.rel.rules">AbstractMaterializedViewRule.NodeLineage</a></th>
<td class="colLast">
<div class="block">Expression lineage details.</div>
</td>
</tr>
<tr class="rowColor">
<th class="colFirst" scope="row"><a href="class-use/AbstractMaterializedViewRule.ViewPartialRewriting.html#org.apache.calcite.rel.rules">AbstractMaterializedViewRule.ViewPartialRewriting</a></th>
<td class="colLast">
<div class="block">View partitioning result</div>
</td>
</tr>
<tr class="altColor">
<th class="colFirst" scope="row"><a href="class-use/AggregateExpandDistinctAggregatesRule.html#org.apache.calcite.rel.rules">AggregateExpandDistinctAggregatesRule</a></th>
<td class="colLast">
<div class="block">Planner rule that expands distinct aggregates
(such as <code>COUNT(DISTINCT x)</code>) from a
<a href="../core/Aggregate.html" title="class in org.apache.calcite.rel.core"><code>Aggregate</code></a>.</div>
</td>
</tr>
<tr class="rowColor">
<th class="colFirst" scope="row"><a href="class-use/AggregateFilterTransposeRule.html#org.apache.calcite.rel.rules">AggregateFilterTransposeRule</a></th>
<td class="colLast">
<div class="block">Planner rule that matches an <a href="../core/Aggregate.html" title="class in org.apache.calcite.rel.core"><code>Aggregate</code></a>
on a <a href="../core/Filter.html" title="class in org.apache.calcite.rel.core"><code>Filter</code></a> and transposes them,
pushing the aggregate below the filter.</div>
</td>
</tr>
<tr class="altColor">
<th class="colFirst" scope="row"><a href="class-use/AggregateJoinJoinRemoveRule.html#org.apache.calcite.rel.rules">AggregateJoinJoinRemoveRule</a></th>
<td class="colLast">
<div class="block">Planner rule that matches an <a href="../core/Aggregate.html" title="class in org.apache.calcite.rel.core"><code>Aggregate</code></a>
on a <a href="../core/Join.html" title="class in 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="rowColor">
<th class="colFirst" scope="row"><a href="class-use/AggregateJoinRemoveRule.html#org.apache.calcite.rel.rules">AggregateJoinRemoveRule</a></th>
<td class="colLast">
<div class="block">Planner rule that matches an <a href="../core/Aggregate.html" title="class in org.apache.calcite.rel.core"><code>Aggregate</code></a>
on a <a href="../core/Join.html" title="class in 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="altColor">
<th class="colFirst" scope="row"><a href="class-use/AggregateJoinTransposeRule.html#org.apache.calcite.rel.rules">AggregateJoinTransposeRule</a></th>
<td class="colLast">
<div class="block">Planner rule that pushes an
<a href="../core/Aggregate.html" title="class in org.apache.calcite.rel.core"><code>Aggregate</code></a>
past a <a href="../core/Join.html" title="class in org.apache.calcite.rel.core"><code>Join</code></a>.</div>
</td>
</tr>
<tr class="rowColor">
<th class="colFirst" scope="row"><a href="class-use/AggregateMergeRule.html#org.apache.calcite.rel.rules">AggregateMergeRule</a></th>
<td class="colLast">
<div class="block">Planner rule that matches an <a href="../core/Aggregate.html" title="class in org.apache.calcite.rel.core"><code>Aggregate</code></a> on a <a href="../core/Aggregate.html" title="class in 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="altColor">
<th class="colFirst" scope="row"><a href="class-use/AggregateProjectMergeRule.html#org.apache.calcite.rel.rules">AggregateProjectMergeRule</a></th>
<td class="colLast">
<div class="block">Planner rule that recognizes a <a href="../core/Aggregate.html" title="class in org.apache.calcite.rel.core"><code>Aggregate</code></a>
on top of a <a href="../core/Project.html" title="class in 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="rowColor">
<th class="colFirst" scope="row"><a href="class-use/AggregateProjectPullUpConstantsRule.html#org.apache.calcite.rel.rules">AggregateProjectPullUpConstantsRule</a></th>
<td class="colLast">
<div class="block">Planner rule that removes constant keys from an
<a href="../core/Aggregate.html" title="class in org.apache.calcite.rel.core"><code>Aggregate</code></a>.</div>
</td>
</tr>
<tr class="altColor">
<th class="colFirst" scope="row"><a href="class-use/AggregateReduceFunctionsRule.html#org.apache.calcite.rel.rules">AggregateReduceFunctionsRule</a></th>
<td class="colLast">
<div class="block">Planner rule that reduces aggregate functions in
<a href="../core/Aggregate.html" title="class in org.apache.calcite.rel.core"><code>Aggregate</code></a>s to simpler forms.</div>
</td>
</tr>
<tr class="rowColor">
<th class="colFirst" scope="row"><a href="class-use/AggregateRemoveRule.html#org.apache.calcite.rel.rules">AggregateRemoveRule</a></th>
<td class="colLast">
<div class="block">Planner rule that removes
a <a href="../core/Aggregate.html" title="class in 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="altColor">
<th class="colFirst" scope="row"><a href="class-use/AggregateStarTableRule.html#org.apache.calcite.rel.rules">AggregateStarTableRule</a></th>
<td class="colLast">
<div class="block">Planner rule that matches an <a href="../core/Aggregate.html" title="class in org.apache.calcite.rel.core"><code>Aggregate</code></a> on
top of a <a href="../../schema/impl/StarTable.StarTableScan.html" title="class in org.apache.calcite.schema.impl"><code>StarTable.StarTableScan</code></a>.</div>
</td>
</tr>
<tr class="rowColor">
<th class="colFirst" scope="row"><a href="class-use/AggregateUnionAggregateRule.html#org.apache.calcite.rel.rules">AggregateUnionAggregateRule</a></th>
<td class="colLast">
<div class="block">Planner rule that matches
<a href="../core/Aggregate.html" title="class in org.apache.calcite.rel.core"><code>Aggregate</code></a>s beneath a
<a href="../core/Union.html" title="class in org.apache.calcite.rel.core"><code>Union</code></a> and pulls them up, so
that a single
<a href="../core/Aggregate.html" title="class in org.apache.calcite.rel.core"><code>Aggregate</code></a> removes duplicates.</div>
</td>
</tr>
<tr class="altColor">
<th class="colFirst" scope="row"><a href="class-use/AggregateUnionTransposeRule.html#org.apache.calcite.rel.rules">AggregateUnionTransposeRule</a></th>
<td class="colLast">
<div class="block">Planner rule that pushes an
<a href="../core/Aggregate.html" title="class in org.apache.calcite.rel.core"><code>Aggregate</code></a>
past a non-distinct <a href="../core/Union.html" title="class in org.apache.calcite.rel.core"><code>Union</code></a>.</div>
</td>
</tr>
<tr class="rowColor">
<th class="colFirst" scope="row"><a href="class-use/AggregateValuesRule.html#org.apache.calcite.rel.rules">AggregateValuesRule</a></th>
<td class="colLast">
<div class="block">Rule that applies <a href="../core/Aggregate.html" title="class in org.apache.calcite.rel.core"><code>Aggregate</code></a> to a <a href="../core/Values.html" title="class in org.apache.calcite.rel.core"><code>Values</code></a> (currently just an
empty <code>Value</code>s).</div>
</td>
</tr>
<tr class="altColor">
<th class="colFirst" scope="row"><a href="class-use/CalcMergeRule.html#org.apache.calcite.rel.rules">CalcMergeRule</a></th>
<td class="colLast">
<div class="block">Planner rule that merges a
<a href="../logical/LogicalCalc.html" title="class in org.apache.calcite.rel.logical"><code>LogicalCalc</code></a> onto a
<a href="../logical/LogicalCalc.html" title="class in org.apache.calcite.rel.logical"><code>LogicalCalc</code></a>.</div>
</td>
</tr>
<tr class="rowColor">
<th class="colFirst" scope="row"><a href="class-use/CalcRelSplitter.html#org.apache.calcite.rel.rules">CalcRelSplitter</a></th>
<td class="colLast">
<div class="block">CalcRelSplitter operates on a
<a href="../core/Calc.html" title="class in org.apache.calcite.rel.core"><code>Calc</code></a> with multiple <a href="../../rex/RexCall.html" title="class in org.apache.calcite.rex"><code>RexCall</code></a>
sub-expressions that cannot all be implemented by a single concrete
<a href="../RelNode.html" title="interface in org.apache.calcite.rel"><code>RelNode</code></a>.</div>
</td>
</tr>
<tr class="altColor">
<th class="colFirst" scope="row"><a href="class-use/CalcRelSplitter.CannotImplement.html#org.apache.calcite.rel.rules">CalcRelSplitter.CannotImplement</a></th>
<td class="colLast">
<div class="block">Control exception for <a href="CalcRelSplitter.ImplementTester.html" title="class in org.apache.calcite.rel.rules"><code>CalcRelSplitter.ImplementTester</code></a>.</div>
</td>
</tr>
<tr class="rowColor">
<th class="colFirst" scope="row"><a href="class-use/CalcRelSplitter.RelType.html#org.apache.calcite.rel.rules">CalcRelSplitter.RelType</a></th>
<td class="colLast">
<div class="block">Type of relational expression.</div>
</td>
</tr>
<tr class="altColor">
<th class="colFirst" scope="row"><a href="class-use/CalcRemoveRule.html#org.apache.calcite.rel.rules">CalcRemoveRule</a></th>
<td class="colLast">
<div class="block">Planner rule that removes a trivial
<a href="../logical/LogicalCalc.html" title="class in org.apache.calcite.rel.logical"><code>LogicalCalc</code></a>.</div>
</td>
</tr>
<tr class="rowColor">
<th class="colFirst" scope="row"><a href="class-use/CalcSplitRule.html#org.apache.calcite.rel.rules">CalcSplitRule</a></th>
<td class="colLast">
<div class="block">Planner rule that converts a <a href="../core/Calc.html" title="class in org.apache.calcite.rel.core"><code>Calc</code></a>
to a <a href="../core/Project.html" title="class in org.apache.calcite.rel.core"><code>Project</code></a>
and <a href="../core/Filter.html" title="class in org.apache.calcite.rel.core"><code>Filter</code></a>.</div>
</td>
</tr>
<tr class="altColor">
<th class="colFirst" scope="row"><a href="class-use/DateRangeRules.ExtractFinder.html#org.apache.calcite.rel.rules">DateRangeRules.ExtractFinder</a></th>
<td class="colLast">
<div class="block">Visitor that searches for calls to <code>EXTRACT</code>, <code>FLOOR</code> or
<code>CEIL</code>, building a list of distinct time units.</div>
</td>
</tr>
<tr class="rowColor">
<th class="colFirst" scope="row"><a href="class-use/ExchangeRemoveConstantKeysRule.html#org.apache.calcite.rel.rules">ExchangeRemoveConstantKeysRule</a></th>
<td class="colLast">
<div class="block">Planner rule that removes keys from
a <a href="../core/Exchange.html" title="class in org.apache.calcite.rel.core"><code>Exchange</code></a> if those keys are known to be constant.</div>
</td>
</tr>
<tr class="altColor">
<th class="colFirst" scope="row"><a href="class-use/FilterAggregateTransposeRule.html#org.apache.calcite.rel.rules">FilterAggregateTransposeRule</a></th>
<td class="colLast">
<div class="block">Planner rule that pushes a <a href="../core/Filter.html" title="class in org.apache.calcite.rel.core"><code>Filter</code></a>
past a <a href="../core/Aggregate.html" title="class in org.apache.calcite.rel.core"><code>Aggregate</code></a>.</div>
</td>
</tr>
<tr class="rowColor">
<th class="colFirst" scope="row"><a href="class-use/FilterCalcMergeRule.html#org.apache.calcite.rel.rules">FilterCalcMergeRule</a></th>
<td class="colLast">
<div class="block">Planner rule that merges a
<a href="../logical/LogicalFilter.html" title="class in org.apache.calcite.rel.logical"><code>LogicalFilter</code></a> and a
<a href="../logical/LogicalCalc.html" title="class in org.apache.calcite.rel.logical"><code>LogicalCalc</code></a>.</div>
</td>
</tr>
<tr class="altColor">
<th class="colFirst" scope="row"><a href="class-use/FilterCorrelateRule.html#org.apache.calcite.rel.rules">FilterCorrelateRule</a></th>
<td class="colLast">
<div class="block">Planner rule that pushes a <a href="../core/Filter.html" title="class in org.apache.calcite.rel.core"><code>Filter</code></a> above a <a href="../core/Correlate.html" title="class in org.apache.calcite.rel.core"><code>Correlate</code></a> into the
inputs of the Correlate.</div>
</td>
</tr>
<tr class="rowColor">
<th class="colFirst" scope="row"><a href="class-use/FilterJoinRule.html#org.apache.calcite.rel.rules">FilterJoinRule</a></th>
<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">
<th class="colFirst" scope="row"><a href="class-use/FilterJoinRule.Predicate.html#org.apache.calcite.rel.rules">FilterJoinRule.Predicate</a></th>
<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">
<th class="colFirst" scope="row"><a href="class-use/FilterMergeRule.html#org.apache.calcite.rel.rules">FilterMergeRule</a></th>
<td class="colLast">
<div class="block">Planner rule that combines two
<a href="../logical/LogicalFilter.html" title="class in org.apache.calcite.rel.logical"><code>LogicalFilter</code></a>s.</div>
</td>
</tr>
<tr class="altColor">
<th class="colFirst" scope="row"><a href="class-use/FilterMultiJoinMergeRule.html#org.apache.calcite.rel.rules">FilterMultiJoinMergeRule</a></th>
<td class="colLast">
<div class="block">Planner rule that merges a
<a href="../core/Filter.html" title="class in org.apache.calcite.rel.core"><code>Filter</code></a> into a <a href="MultiJoin.html" title="class in org.apache.calcite.rel.rules"><code>MultiJoin</code></a>,
creating a richer <code>MultiJoin</code>.</div>
</td>
</tr>
<tr class="rowColor">
<th class="colFirst" scope="row"><a href="class-use/FilterProjectTransposeRule.html#org.apache.calcite.rel.rules">FilterProjectTransposeRule</a></th>
<td class="colLast">
<div class="block">Planner rule that pushes
a <a href="../core/Filter.html" title="class in org.apache.calcite.rel.core"><code>Filter</code></a>
past a <a href="../core/Project.html" title="class in org.apache.calcite.rel.core"><code>Project</code></a>.</div>
</td>
</tr>
<tr class="altColor">
<th class="colFirst" scope="row"><a href="class-use/FilterRemoveIsNotDistinctFromRule.html#org.apache.calcite.rel.rules">FilterRemoveIsNotDistinctFromRule</a></th>
<td class="colLast">
<div class="block">Planner rule that replaces <code>IS NOT DISTINCT FROM</code>
in a <a href="../core/Filter.html" title="class in org.apache.calcite.rel.core"><code>Filter</code></a> with logically equivalent operations.</div>
</td>
</tr>
<tr class="rowColor">
<th class="colFirst" scope="row"><a href="class-use/FilterSetOpTransposeRule.html#org.apache.calcite.rel.rules">FilterSetOpTransposeRule</a></th>
<td class="colLast">
<div class="block">Planner rule that pushes a <a href="../core/Filter.html" title="class in org.apache.calcite.rel.core"><code>Filter</code></a>
past a <a href="../core/SetOp.html" title="class in org.apache.calcite.rel.core"><code>SetOp</code></a>.</div>
</td>
</tr>
<tr class="altColor">
<th class="colFirst" scope="row"><a href="class-use/FilterTableFunctionTransposeRule.html#org.apache.calcite.rel.rules">FilterTableFunctionTransposeRule</a></th>
<td class="colLast">
<div class="block">Planner rule that pushes
a <a href="../logical/LogicalFilter.html" title="class in org.apache.calcite.rel.logical"><code>LogicalFilter</code></a>
past a <a href="../logical/LogicalTableFunctionScan.html" title="class in org.apache.calcite.rel.logical"><code>LogicalTableFunctionScan</code></a>.</div>
</td>
</tr>
<tr class="rowColor">
<th class="colFirst" scope="row"><a href="class-use/FilterTableScanRule.html#org.apache.calcite.rel.rules">FilterTableScanRule</a></th>
<td class="colLast">
<div class="block">Planner rule that converts
a <a href="../core/Filter.html" title="class in org.apache.calcite.rel.core"><code>Filter</code></a>
on a <a href="../core/TableScan.html" title="class in org.apache.calcite.rel.core"><code>TableScan</code></a>
of a <a href="../../schema/FilterableTable.html" title="interface in org.apache.calcite.schema"><code>FilterableTable</code></a>
or a <a href="../../schema/ProjectableFilterableTable.html" title="interface in org.apache.calcite.schema"><code>ProjectableFilterableTable</code></a>
to a <a href="../../interpreter/Bindables.BindableTableScan.html" title="class in org.apache.calcite.interpreter"><code>Bindables.BindableTableScan</code></a>.</div>
</td>
</tr>
<tr class="altColor">
<th class="colFirst" scope="row"><a href="class-use/FilterToCalcRule.html#org.apache.calcite.rel.rules">FilterToCalcRule</a></th>
<td class="colLast">
<div class="block">Planner rule that converts a
<a href="../logical/LogicalFilter.html" title="class in org.apache.calcite.rel.logical"><code>LogicalFilter</code></a> to a
<a href="../logical/LogicalCalc.html" title="class in org.apache.calcite.rel.logical"><code>LogicalCalc</code></a>.</div>
</td>
</tr>
<tr class="rowColor">
<th class="colFirst" scope="row"><a href="class-use/IntersectToDistinctRule.html#org.apache.calcite.rel.rules">IntersectToDistinctRule</a></th>
<td class="colLast">
<div class="block">Planner rule that translates a distinct
<a href="../core/Intersect.html" title="class in org.apache.calcite.rel.core"><code>Intersect</code></a>
(<code>all</code> = <code>false</code>)
into a group of operators composed of
<a href="../core/Union.html" title="class in org.apache.calcite.rel.core"><code>Union</code></a>,
<a href="../core/Aggregate.html" title="class in org.apache.calcite.rel.core"><code>Aggregate</code></a>, etc.</div>
</td>
</tr>
<tr class="altColor">
<th class="colFirst" scope="row"><a href="class-use/JoinAddRedundantSemiJoinRule.html#org.apache.calcite.rel.rules">JoinAddRedundantSemiJoinRule</a></th>
<td class="colLast">
<div class="block">Rule to add a semi-join into a join.</div>
</td>
</tr>
<tr class="rowColor">
<th class="colFirst" scope="row"><a href="class-use/JoinAssociateRule.html#org.apache.calcite.rel.rules">JoinAssociateRule</a></th>
<td class="colLast">
<div class="block">Planner rule that changes a join based on the associativity rule.</div>
</td>
</tr>
<tr class="altColor">
<th class="colFirst" scope="row"><a href="class-use/JoinCommuteRule.html#org.apache.calcite.rel.rules">JoinCommuteRule</a></th>
<td class="colLast">
<div class="block">Planner rule that permutes the inputs to a
<a href="../core/Join.html" title="class in org.apache.calcite.rel.core"><code>Join</code></a>.</div>
</td>
</tr>
<tr class="rowColor">
<th class="colFirst" scope="row"><a href="class-use/JoinExtractFilterRule.html#org.apache.calcite.rel.rules">JoinExtractFilterRule</a></th>
<td class="colLast">
<div class="block">Rule to convert an
<a href="../logical/LogicalJoin.html" title="class in org.apache.calcite.rel.logical"><code>inner join</code></a> to a
<a href="../logical/LogicalFilter.html" title="class in org.apache.calcite.rel.logical"><code>filter</code></a> on top of a
<a href="../logical/LogicalJoin.html" title="class in org.apache.calcite.rel.logical"><code>cartesian inner join</code></a>.</div>
</td>
</tr>
<tr class="altColor">
<th class="colFirst" scope="row"><a href="class-use/JoinProjectTransposeRule.html#org.apache.calcite.rel.rules">JoinProjectTransposeRule</a></th>
<td class="colLast">
<div class="block">Planner rule that matches a
<a href="../core/Join.html" title="class in org.apache.calcite.rel.core"><code>Join</code></a> one of whose inputs is a
<a href="../logical/LogicalProject.html" title="class in org.apache.calcite.rel.logical"><code>LogicalProject</code></a>, and
pulls the project up.</div>
</td>
</tr>
<tr class="rowColor">
<th class="colFirst" scope="row"><a href="class-use/JoinPushExpressionsRule.html#org.apache.calcite.rel.rules">JoinPushExpressionsRule</a></th>
<td class="colLast">
<div class="block">Planner rule that pushes down expressions in "equal" join condition.</div>
</td>
</tr>
<tr class="altColor">
<th class="colFirst" scope="row"><a href="class-use/JoinPushTransitivePredicatesRule.html#org.apache.calcite.rel.rules">JoinPushTransitivePredicatesRule</a></th>
<td class="colLast">
<div class="block">Planner rule that infers predicates from on a
<a href="../core/Join.html" title="class in org.apache.calcite.rel.core"><code>Join</code></a> and creates
<a href="../core/Filter.html" title="class in 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">
<th class="colFirst" scope="row"><a href="class-use/JoinToCorrelateRule.html#org.apache.calcite.rel.rules">JoinToCorrelateRule</a></th>
<td class="colLast">
<div class="block">Rule that converts a <a href="../core/Join.html" title="class in org.apache.calcite.rel.core"><code>Join</code></a>
into a <a href="../logical/LogicalCorrelate.html" title="class in org.apache.calcite.rel.logical"><code>LogicalCorrelate</code></a>, which can
then be implemented using nested loops.</div>
</td>
</tr>
<tr class="altColor">
<th class="colFirst" scope="row"><a href="class-use/JoinToMultiJoinRule.html#org.apache.calcite.rel.rules">JoinToMultiJoinRule</a></th>
<td class="colLast">
<div class="block">Planner rule to flatten a tree of
<a href="../logical/LogicalJoin.html" title="class in org.apache.calcite.rel.logical"><code>LogicalJoin</code></a>s
into a single <a href="MultiJoin.html" title="class in org.apache.calcite.rel.rules"><code>MultiJoin</code></a> with N inputs.</div>
</td>
</tr>
<tr class="rowColor">
<th class="colFirst" scope="row"><a href="class-use/JoinUnionTransposeRule.html#org.apache.calcite.rel.rules">JoinUnionTransposeRule</a></th>
<td class="colLast">
<div class="block">Planner rule that pushes a
<a href="../core/Join.html" title="class in org.apache.calcite.rel.core"><code>Join</code></a>
past a non-distinct <a href="../core/Union.html" title="class in org.apache.calcite.rel.core"><code>Union</code></a>.</div>
</td>
</tr>
<tr class="altColor">
<th class="colFirst" scope="row"><a href="class-use/LoptJoinTree.html#org.apache.calcite.rel.rules">LoptJoinTree</a></th>
<td class="colLast">
<div class="block">Utility class used to store a <a href="../core/Join.html" title="class in org.apache.calcite.rel.core"><code>Join</code></a> tree
and the factors that make up the tree.</div>
</td>
</tr>
<tr class="rowColor">
<th class="colFirst" scope="row"><a href="class-use/LoptJoinTree.BinaryTree.html#org.apache.calcite.rel.rules">LoptJoinTree.BinaryTree</a></th>
<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">
<th class="colFirst" scope="row"><a href="class-use/LoptMultiJoin.html#org.apache.calcite.rel.rules">LoptMultiJoin</a></th>
<td class="colLast">
<div class="block">Utility class that keeps track of the join factors that
make up a <a href="MultiJoin.html" title="class in org.apache.calcite.rel.rules"><code>MultiJoin</code></a>.</div>
</td>
</tr>
<tr class="rowColor">
<th class="colFirst" scope="row"><a href="class-use/LoptMultiJoin.Edge.html#org.apache.calcite.rel.rules">LoptMultiJoin.Edge</a></th>
<td class="colLast">
<div class="block">Information about a join-condition.</div>
</td>
</tr>
<tr class="altColor">
<th class="colFirst" scope="row"><a href="class-use/LoptMultiJoin.RemovableSelfJoin.html#org.apache.calcite.rel.rules">LoptMultiJoin.RemovableSelfJoin</a></th>
<td class="colLast">
<div class="block">Utility class used to keep track of the factors in a removable self-join.</div>
</td>
</tr>
<tr class="rowColor">
<th class="colFirst" scope="row"><a href="class-use/LoptOptimizeJoinRule.html#org.apache.calcite.rel.rules">LoptOptimizeJoinRule</a></th>
<td class="colLast">
<div class="block">Planner rule that implements the heuristic planner for determining optimal
join orderings.</div>
</td>
</tr>
<tr class="altColor">
<th class="colFirst" scope="row"><a href="class-use/LoptSemiJoinOptimizer.html#org.apache.calcite.rel.rules">LoptSemiJoinOptimizer</a></th>
<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">
<th class="colFirst" scope="row"><a href="class-use/LoptSemiJoinOptimizer.FemLocalIndex.html#org.apache.calcite.rel.rules">LoptSemiJoinOptimizer.FemLocalIndex</a></th>
<td class="colLast">
<div class="block">Dummy class to allow code to compile.</div>
</td>
</tr>
<tr class="altColor">
<th class="colFirst" scope="row"><a href="class-use/LoptSemiJoinOptimizer.LcsTable.html#org.apache.calcite.rel.rules">LoptSemiJoinOptimizer.LcsTable</a></th>
<td class="colLast">
<div class="block">Dummy class to allow code to compile.</div>
</td>
</tr>
<tr class="rowColor">
<th class="colFirst" scope="row"><a href="class-use/LoptSemiJoinOptimizer.LcsTableScan.html#org.apache.calcite.rel.rules">LoptSemiJoinOptimizer.LcsTableScan</a></th>
<td class="colLast">
<div class="block">Dummy class to allow code to compile.</div>
</td>
</tr>
<tr class="altColor">
<th class="colFirst" scope="row"><a href="class-use/MaterializedViewFilterScanRule.html#org.apache.calcite.rel.rules">MaterializedViewFilterScanRule</a></th>
<td class="colLast">
<div class="block">Planner rule that converts
a <a href="../core/Filter.html" title="class in org.apache.calcite.rel.core"><code>Filter</code></a>
on a <a href="../core/TableScan.html" title="class in org.apache.calcite.rel.core"><code>TableScan</code></a>
to a <a href="../core/Filter.html" title="class in org.apache.calcite.rel.core"><code>Filter</code></a> on Materialized View</div>
</td>
</tr>
<tr class="rowColor">
<th class="colFirst" scope="row"><a href="class-use/MultiJoin.html#org.apache.calcite.rel.rules">MultiJoin</a></th>
<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">
<th class="colFirst" scope="row"><a href="class-use/MultiJoinOptimizeBushyRule.html#org.apache.calcite.rel.rules">MultiJoinOptimizeBushyRule</a></th>
<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">
<th class="colFirst" scope="row"><a href="class-use/MultiJoinOptimizeBushyRule.Vertex.html#org.apache.calcite.rel.rules">MultiJoinOptimizeBushyRule.Vertex</a></th>
<td class="colLast">
<div class="block">Participant in a join (relation or join).</div>
</td>
</tr>
<tr class="altColor">
<th class="colFirst" scope="row"><a href="class-use/MultiJoinProjectTransposeRule.html#org.apache.calcite.rel.rules">MultiJoinProjectTransposeRule</a></th>
<td class="colLast">
<div class="block">MultiJoinProjectTransposeRule implements the rule for pulling
<a href="../logical/LogicalProject.html" title="class in org.apache.calcite.rel.logical"><code>LogicalProject</code></a>s that are on top of a
<a href="MultiJoin.html" title="class in org.apache.calcite.rel.rules"><code>MultiJoin</code></a> and beneath a
<a href="../logical/LogicalJoin.html" title="class in org.apache.calcite.rel.logical"><code>LogicalJoin</code></a> so the
<a href="../logical/LogicalProject.html" title="class in org.apache.calcite.rel.logical"><code>LogicalProject</code></a> appears above the
<a href="../logical/LogicalJoin.html" title="class in org.apache.calcite.rel.logical"><code>LogicalJoin</code></a>.</div>
</td>
</tr>
<tr class="rowColor">
<th class="colFirst" scope="row"><a href="class-use/ProjectCalcMergeRule.html#org.apache.calcite.rel.rules">ProjectCalcMergeRule</a></th>
<td class="colLast">
<div class="block">Planner rule which merges a
<a href="../logical/LogicalProject.html" title="class in org.apache.calcite.rel.logical"><code>LogicalProject</code></a> and a
<a href="../logical/LogicalCalc.html" title="class in org.apache.calcite.rel.logical"><code>LogicalCalc</code></a>.</div>
</td>
</tr>
<tr class="altColor">
<th class="colFirst" scope="row"><a href="class-use/ProjectCorrelateTransposeRule.html#org.apache.calcite.rel.rules">ProjectCorrelateTransposeRule</a></th>
<td class="colLast">
<div class="block">Push Project under Correlate to apply on Correlate's left and right child</div>
</td>
</tr>
<tr class="rowColor">
<th class="colFirst" scope="row"><a href="class-use/ProjectFilterTransposeRule.html#org.apache.calcite.rel.rules">ProjectFilterTransposeRule</a></th>
<td class="colLast">
<div class="block">Planner rule that pushes a <a href="../core/Project.html" title="class in org.apache.calcite.rel.core"><code>Project</code></a>
past a <a href="../core/Filter.html" title="class in org.apache.calcite.rel.core"><code>Filter</code></a>.</div>
</td>
</tr>
<tr class="altColor">
<th class="colFirst" scope="row"><a href="class-use/ProjectJoinJoinRemoveRule.html#org.apache.calcite.rel.rules">ProjectJoinJoinRemoveRule</a></th>
<td class="colLast">
<div class="block">Planner rule that matches an <a href="../core/Project.html" title="class in org.apache.calcite.rel.core"><code>Project</code></a>
on a <a href="../core/Join.html" title="class in 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="rowColor">
<th class="colFirst" scope="row"><a href="class-use/ProjectJoinRemoveRule.html#org.apache.calcite.rel.rules">ProjectJoinRemoveRule</a></th>
<td class="colLast">
<div class="block">Planner rule that matches an <a href="../core/Project.html" title="class in org.apache.calcite.rel.core"><code>Project</code></a>
on a <a href="../core/Join.html" title="class in 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="altColor">
<th class="colFirst" scope="row"><a href="class-use/ProjectJoinTransposeRule.html#org.apache.calcite.rel.rules">ProjectJoinTransposeRule</a></th>
<td class="colLast">
<div class="block">Planner rule that pushes a <a href="../core/Project.html" title="class in org.apache.calcite.rel.core"><code>Project</code></a>
past a <a href="../core/Join.html" title="class in 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="rowColor">
<th class="colFirst" scope="row"><a href="class-use/ProjectMergeRule.html#org.apache.calcite.rel.rules">ProjectMergeRule</a></th>
<td class="colLast">
<div class="block">ProjectMergeRule merges a <a href="../core/Project.html" title="class in org.apache.calcite.rel.core"><code>Project</code></a> into
another <a href="../core/Project.html" title="class in 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="altColor">
<th class="colFirst" scope="row"><a href="class-use/ProjectMultiJoinMergeRule.html#org.apache.calcite.rel.rules">ProjectMultiJoinMergeRule</a></th>
<td class="colLast">
<div class="block">Planner rule that pushes
<a href="../core/Project.html" title="class in org.apache.calcite.rel.core"><code>Project</code></a>
into a <a href="MultiJoin.html" title="class in org.apache.calcite.rel.rules"><code>MultiJoin</code></a>,
creating a richer <code>MultiJoin</code>.</div>
</td>
</tr>
<tr class="rowColor">
<th class="colFirst" scope="row"><a href="class-use/ProjectRemoveRule.html#org.apache.calcite.rel.rules">ProjectRemoveRule</a></th>
<td class="colLast">
<div class="block">Planner rule that,
given a <a href="../core/Project.html" title="class in 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="altColor">
<th class="colFirst" scope="row"><a href="class-use/ProjectSetOpTransposeRule.html#org.apache.calcite.rel.rules">ProjectSetOpTransposeRule</a></th>
<td class="colLast">
<div class="block">Planner rule that pushes
a <a href="../logical/LogicalProject.html" title="class in org.apache.calcite.rel.logical"><code>LogicalProject</code></a>
past a <a href="../core/SetOp.html" title="class in org.apache.calcite.rel.core"><code>SetOp</code></a>.</div>
</td>
</tr>
<tr class="rowColor">
<th class="colFirst" scope="row"><a href="class-use/ProjectSortTransposeRule.html#org.apache.calcite.rel.rules">ProjectSortTransposeRule</a></th>
<td class="colLast">
<div class="block">Planner rule that pushes
a <a href="../core/Project.html" title="class in org.apache.calcite.rel.core"><code>Project</code></a>
past a <a href="../core/Sort.html" title="class in org.apache.calcite.rel.core"><code>Sort</code></a>.</div>
</td>
</tr>
<tr class="altColor">
<th class="colFirst" scope="row"><a href="class-use/ProjectTableScanRule.html#org.apache.calcite.rel.rules">ProjectTableScanRule</a></th>
<td class="colLast">
<div class="block">Planner rule that converts a <a href="../core/Project.html" title="class in org.apache.calcite.rel.core"><code>Project</code></a>
on a <a href="../core/TableScan.html" title="class in org.apache.calcite.rel.core"><code>TableScan</code></a>
of a <a href="../../schema/ProjectableFilterableTable.html" title="interface in org.apache.calcite.schema"><code>ProjectableFilterableTable</code></a>
to a <a href="../../interpreter/Bindables.BindableTableScan.html" title="class in org.apache.calcite.interpreter"><code>Bindables.BindableTableScan</code></a>.</div>
</td>
</tr>
<tr class="rowColor">
<th class="colFirst" scope="row"><a href="class-use/ProjectToCalcRule.html#org.apache.calcite.rel.rules">ProjectToCalcRule</a></th>
<td class="colLast">
<div class="block">Rule to convert a
<a href="../logical/LogicalProject.html" title="class in org.apache.calcite.rel.logical"><code>LogicalProject</code></a> to a
<a href="../logical/LogicalCalc.html" title="class in org.apache.calcite.rel.logical"><code>LogicalCalc</code></a></div>
</td>
</tr>
<tr class="altColor">
<th class="colFirst" scope="row"><a href="class-use/ProjectToWindowRule.html#org.apache.calcite.rel.rules">ProjectToWindowRule</a></th>
<td class="colLast">
<div class="block">Planner rule that slices a
<a href="../core/Project.html" title="class in 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="rowColor">
<th class="colFirst" scope="row"><a href="class-use/ProjectWindowTransposeRule.html#org.apache.calcite.rel.rules">ProjectWindowTransposeRule</a></th>
<td class="colLast">
<div class="block">Planner rule that pushes
a <a href="../logical/LogicalProject.html" title="class in org.apache.calcite.rel.logical"><code>LogicalProject</code></a>
past a <a href="../logical/LogicalWindow.html" title="class in org.apache.calcite.rel.logical"><code>LogicalWindow</code></a>.</div>
</td>
</tr>
<tr class="altColor">
<th class="colFirst" scope="row"><a href="class-use/PushProjector.ExprCondition.html#org.apache.calcite.rel.rules">PushProjector.ExprCondition</a></th>
<td class="colLast">
<div class="block">A functor that replies true or false for a given expression.</div>
</td>
</tr>
<tr class="rowColor">
<th class="colFirst" scope="row"><a href="class-use/ReduceDecimalsRule.html#org.apache.calcite.rel.rules">ReduceDecimalsRule</a></th>
<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="altColor">
<th class="colFirst" scope="row"><a href="class-use/ReduceDecimalsRule.CastArgAsTypeExpander.html#org.apache.calcite.rel.rules">ReduceDecimalsRule.CastArgAsTypeExpander</a></th>
<td class="colLast">
<div class="block">An expander which casts decimal arguments as another type</div>
</td>
</tr>
<tr class="rowColor">
<th class="colFirst" scope="row"><a href="class-use/ReduceDecimalsRule.ExpanderMap.html#org.apache.calcite.rel.rules">ReduceDecimalsRule.ExpanderMap</a></th>
<td class="colLast">
<div class="block">Maps a RexCall to a RexExpander</div>
</td>
</tr>
<tr class="altColor">
<th class="colFirst" scope="row"><a href="class-use/ReduceDecimalsRule.RexExpander.html#org.apache.calcite.rel.rules">ReduceDecimalsRule.RexExpander</a></th>
<td class="colLast">
<div class="block">Rewrites a decimal expression for a specific set of SqlOperator's.</div>
</td>
</tr>
<tr class="rowColor">
<th class="colFirst" scope="row"><a href="class-use/ReduceExpressionsRule.html#org.apache.calcite.rel.rules">ReduceExpressionsRule</a></th>
<td class="colLast">
<div class="block">Collection of planner rules that apply various simplifying transformations on
RexNode trees.</div>
</td>
</tr>
<tr class="altColor">
<th class="colFirst" scope="row"><a href="class-use/ReduceExpressionsRule.ReducibleExprLocator.Constancy.html#org.apache.calcite.rel.rules">ReduceExpressionsRule.ReducibleExprLocator.Constancy</a></th>
<td class="colLast">
<div class="block">Whether an expression is constant, and if so, whether it can be
reduced to a simpler constant.</div>
</td>
</tr>
<tr class="rowColor">
<th class="colFirst" scope="row"><a href="class-use/SemiJoinFilterTransposeRule.html#org.apache.calcite.rel.rules">SemiJoinFilterTransposeRule</a></th>
<td class="colLast">
<div class="block">Planner rule that pushes <code>SemiJoin</code>s down in a tree past
a <a href="../core/Filter.html" title="class in org.apache.calcite.rel.core"><code>Filter</code></a>.</div>
</td>
</tr>
<tr class="altColor">
<th class="colFirst" scope="row"><a href="class-use/SemiJoinJoinTransposeRule.html#org.apache.calcite.rel.rules">SemiJoinJoinTransposeRule</a></th>
<td class="colLast">
<div class="block">Planner rule that pushes a <code>SemiJoin</code>
down in a tree past a <a href="../core/Join.html" title="class in 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="rowColor">
<th class="colFirst" scope="row"><a href="class-use/SemiJoinProjectTransposeRule.html#org.apache.calcite.rel.rules">SemiJoinProjectTransposeRule</a></th>
<td class="colLast">
<div class="block">Planner rule that pushes
a <code>SemiJoin</code> down in a tree past
a <a href="../core/Project.html" title="class in org.apache.calcite.rel.core"><code>Project</code></a>.</div>
</td>
</tr>
<tr class="altColor">
<th class="colFirst" scope="row"><a href="class-use/SemiJoinRemoveRule.html#org.apache.calcite.rel.rules">SemiJoinRemoveRule</a></th>
<td class="colLast">
<div class="block">Planner rule that removes a <code>SemiJoin</code>s from a join tree.</div>
</td>
</tr>
<tr class="rowColor">
<th class="colFirst" scope="row"><a href="class-use/SemiJoinRule.html#org.apache.calcite.rel.rules">SemiJoinRule</a></th>
<td class="colLast">
<div class="block">Planner rule that creates a <code>SemiJoin</code> from a
<a href="../core/Join.html" title="class in org.apache.calcite.rel.core"><code>Join</code></a> on top of a
<a href="../logical/LogicalAggregate.html" title="class in org.apache.calcite.rel.logical"><code>LogicalAggregate</code></a>.</div>
</td>
</tr>
<tr class="altColor">
<th class="colFirst" scope="row"><a href="class-use/SortJoinTransposeRule.html#org.apache.calcite.rel.rules">SortJoinTransposeRule</a></th>
<td class="colLast">
<div class="block">Planner rule that pushes a <a href="../core/Sort.html" title="class in org.apache.calcite.rel.core"><code>Sort</code></a> past a
<a href="../core/Join.html" title="class in org.apache.calcite.rel.core"><code>Join</code></a>.</div>
</td>
</tr>
<tr class="rowColor">
<th class="colFirst" scope="row"><a href="class-use/SortProjectTransposeRule.html#org.apache.calcite.rel.rules">SortProjectTransposeRule</a></th>
<td class="colLast">
<div class="block">Planner rule that pushes
a <a href="../core/Sort.html" title="class in org.apache.calcite.rel.core"><code>Sort</code></a>
past a <a href="../core/Project.html" title="class in org.apache.calcite.rel.core"><code>Project</code></a>.</div>
</td>
</tr>
<tr class="altColor">
<th class="colFirst" scope="row"><a href="class-use/SortRemoveConstantKeysRule.html#org.apache.calcite.rel.rules">SortRemoveConstantKeysRule</a></th>
<td class="colLast">
<div class="block">Planner rule that removes keys from a
a <a href="../core/Sort.html" title="class in 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">
<th class="colFirst" scope="row"><a href="class-use/SortRemoveRule.html#org.apache.calcite.rel.rules">SortRemoveRule</a></th>
<td class="colLast">
<div class="block">Planner rule that removes
a <a href="../core/Sort.html" title="class in org.apache.calcite.rel.core"><code>Sort</code></a> if its input is already sorted.</div>
</td>
</tr>
<tr class="altColor">
<th class="colFirst" scope="row"><a href="class-use/SortUnionTransposeRule.html#org.apache.calcite.rel.rules">SortUnionTransposeRule</a></th>
<td class="colLast">
<div class="block">Planner rule that pushes a <a href="../core/Sort.html" title="class in org.apache.calcite.rel.core"><code>Sort</code></a> past a
<a href="../core/Union.html" title="class in org.apache.calcite.rel.core"><code>Union</code></a>.</div>
</td>
</tr>
<tr class="rowColor">
<th class="colFirst" scope="row"><a href="class-use/SubQueryRemoveRule.html#org.apache.calcite.rel.rules">SubQueryRemoveRule</a></th>
<td class="colLast">
<div class="block">Transform that converts IN, EXISTS and scalar sub-queries into joins.</div>
</td>
</tr>
<tr class="altColor">
<th class="colFirst" scope="row"><a href="class-use/TableScanRule.html#org.apache.calcite.rel.rules">TableScanRule</a></th>
<td class="colLast">
<div class="block">Planner rule that converts a
<a href="../logical/LogicalTableScan.html" title="class in org.apache.calcite.rel.logical"><code>LogicalTableScan</code></a> to the result
of calling <a href="../../plan/RelOptTable.html#toRel(org.apache.calcite.plan.RelOptTable.ToRelContext)"><code>RelOptTable.toRel(org.apache.calcite.plan.RelOptTable.ToRelContext)</code></a>.</div>
</td>
</tr>
<tr class="rowColor">
<th class="colFirst" scope="row"><a href="class-use/UnionEliminatorRule.html#org.apache.calcite.rel.rules">UnionEliminatorRule</a></th>
<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="altColor">
<th class="colFirst" scope="row"><a href="class-use/UnionMergeRule.html#org.apache.calcite.rel.rules">UnionMergeRule</a></th>
<td class="colLast">
<div class="block">UnionMergeRule implements the rule for combining two
non-distinct <a href="../core/SetOp.html" title="class in org.apache.calcite.rel.core"><code>SetOp</code></a>s
into a single <a href="../core/SetOp.html" title="class in org.apache.calcite.rel.core"><code>SetOp</code></a>.</div>
</td>
</tr>
<tr class="rowColor">
<th class="colFirst" scope="row"><a href="class-use/UnionPullUpConstantsRule.html#org.apache.calcite.rel.rules">UnionPullUpConstantsRule</a></th>
<td class="colLast">
<div class="block">Planner rule that pulls up constants through a Union operator.</div>
</td>
</tr>
<tr class="altColor">
<th class="colFirst" scope="row"><a href="class-use/UnionToDistinctRule.html#org.apache.calcite.rel.rules">UnionToDistinctRule</a></th>
<td class="colLast">
<div class="block">Planner rule that translates a distinct
<a href="../core/Union.html" title="class in org.apache.calcite.rel.core"><code>Union</code></a>
(<code>all</code> = <code>false</code>)
into an <a href="../core/Aggregate.html" title="class in org.apache.calcite.rel.core"><code>Aggregate</code></a>
on top of a non-distinct <a href="../core/Union.html" title="class in org.apache.calcite.rel.core"><code>Union</code></a>
(<code>all</code> = <code>true</code>).</div>
</td>
</tr>
<tr class="rowColor">
<th class="colFirst" scope="row"><a href="class-use/ValuesReduceRule.html#org.apache.calcite.rel.rules">ValuesReduceRule</a></th>
<td class="colLast">
<div class="block">Planner rule that folds projections and filters into an underlying
<a href="../logical/LogicalValues.html" title="class in org.apache.calcite.rel.logical"><code>LogicalValues</code></a>.</div>
</td>
</tr>
</tbody>
</table>
</li>
</ul>
</div>
</main>
<footer role="contentinfo">
<nav role="navigation">
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a id="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li>Class</li>
<li class="navBarCell1Rev">Use</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<a id="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</nav>
<p class="legalCopy"><small>Copyright &#169; 2012&#x2013;2019 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
</footer>
</body>
</html>