blob: c3a7e778337fb361026be2d59ebd7cea74a44c82 [file] [log] [blame]
<!DOCTYPE HTML>
<html lang="en">
<head>
<!-- Generated by javadoc (17) -->
<title>org.apache.calcite.rel.rules (Apache Calcite API)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="description" content="declaration: package: org.apache.calcite.rel.rules">
<meta name="generator" content="javadoc/PackageWriterImpl">
<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
<script type="text/javascript" src="../../../../../script.js"></script>
<script type="text/javascript" src="../../../../../script-dir/jquery-3.5.1.min.js"></script>
<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
</head>
<body class="package-declaration-page">
<script type="text/javascript">var evenRowColor = "even-row-color";
var oddRowColor = "odd-row-color";
var tableTab = "table-tab";
var activeTableTab = "active-table-tab";
var pathtoroot = "../../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<div class="flex-box">
<header role="banner" class="flex-header">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top">
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<div class="about-language"><b>Apache Calcite</b></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../../../../../index.html">Overview</a></li>
<li class="nav-bar-cell1-rev">Package</li>
<li>Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../help-doc.html#package">Help</a></li>
</ul>
</div>
<div class="sub-nav">
<div>
<ul class="sub-nav-list">
<li>Package:&nbsp;</li>
<li><a href="#package-description">Description</a>&nbsp;|&nbsp;</li>
<li><a href="#related-package-summary">Related Packages</a>&nbsp;|&nbsp;</li>
<li><a href="#class-summary">Classes and Interfaces</a></li>
</ul>
</div>
<div class="nav-list-search"><label for="search-input">SEARCH:</label>
<input type="text" id="search-input" value="search" disabled="disabled">
<input type="reset" id="reset-button" value="reset" disabled="disabled">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<div class="header">
<h1 title="Package org.apache.calcite.rel.rules" class="title">Package org.apache.calcite.rel.rules</h1>
</div>
<hr>
<div class="package-signature">package <span class="element-name">org.apache.calcite.rel.rules</span></div>
<section class="package-description" id="package-description">
<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>
</section>
<section class="summary">
<ul class="summary-list">
<li>
<div id="related-package-summary">
<div class="caption"><span>Related Packages</span></div>
<div class="summary-table two-column-summary">
<div class="table-header col-first">Package</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color"><a href="../package-summary.html">org.apache.calcite.rel</a></div>
<div class="col-last even-row-color">
<div class="block">Defines relational expressions.</div>
</div>
<div class="col-first odd-row-color"><a href="materialize/package-summary.html">org.apache.calcite.rel.rules.materialize</a></div>
<div class="col-last odd-row-color">
<div class="block">Provides a materialized rewriting algorithm encapsulated within a planner rule.</div>
</div>
</div>
</div>
</li>
<li>
<div id="class-summary">
<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="class-summary-tab0" role="tab" aria-selected="true" aria-controls="class-summary.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary', 2)" class="active-table-tab">All Classes and Interfaces</button><button id="class-summary-tab1" role="tab" aria-selected="false" aria-controls="class-summary.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary-tab1', 2)" class="table-tab">Interfaces</button><button id="class-summary-tab2" role="tab" aria-selected="false" aria-controls="class-summary.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary-tab2', 2)" class="table-tab">Classes</button></div>
<div id="class-summary.tabpanel" role="tabpanel">
<div class="summary-table two-column-summary" aria-labelledby="class-summary-tab0">
<div class="table-header col-first">Class</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="AbstractJoinExtractFilterRule.html" title="class in org.apache.calcite.rel.rules">AbstractJoinExtractFilterRule</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<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>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab1"><a href="AbstractJoinExtractFilterRule.Config.html" title="interface in org.apache.calcite.rel.rules">AbstractJoinExtractFilterRule.Config</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab1">
<div class="block">Rule configuration.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="AggregateCaseToFilterRule.html" title="class in org.apache.calcite.rel.rules">AggregateCaseToFilterRule</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<div class="block">Rule that converts CASE-style filtered aggregates into true filtered
aggregates.</div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab1"><a href="AggregateCaseToFilterRule.Config.html" title="interface in org.apache.calcite.rel.rules">AggregateCaseToFilterRule.Config</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab1">
<div class="block">Rule configuration.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="AggregateExpandDistinctAggregatesRule.html" title="class in org.apache.calcite.rel.rules">AggregateExpandDistinctAggregatesRule</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<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>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab1"><a href="AggregateExpandDistinctAggregatesRule.Config.html" title="interface in org.apache.calcite.rel.rules">AggregateExpandDistinctAggregatesRule.Config</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab1">
<div class="block">Rule configuration.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="AggregateExpandWithinDistinctRule.html" title="class in org.apache.calcite.rel.rules">AggregateExpandWithinDistinctRule</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<div class="block">Planner rule that rewrites an <a href="../core/Aggregate.html" title="class in org.apache.calcite.rel.core"><code>Aggregate</code></a> that contains
<code>WITHIN DISTINCT</code> aggregate functions.</div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab1"><a href="AggregateExpandWithinDistinctRule.Config.html" title="interface in org.apache.calcite.rel.rules">AggregateExpandWithinDistinctRule.Config</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab1">
<div class="block">Rule configuration.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="AggregateExtractProjectRule.html" title="class in org.apache.calcite.rel.rules">AggregateExtractProjectRule</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<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>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab1"><a href="AggregateExtractProjectRule.Config.html" title="interface in org.apache.calcite.rel.rules">AggregateExtractProjectRule.Config</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab1">
<div class="block">Rule configuration.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="AggregateFilterTransposeRule.html" title="class in org.apache.calcite.rel.rules">AggregateFilterTransposeRule</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<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>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab1"><a href="AggregateFilterTransposeRule.Config.html" title="interface in org.apache.calcite.rel.rules">AggregateFilterTransposeRule.Config</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab1">
<div class="block">Rule configuration.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="AggregateJoinJoinRemoveRule.html" title="class in org.apache.calcite.rel.rules">AggregateJoinJoinRemoveRule</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<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>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab1"><a href="AggregateJoinJoinRemoveRule.Config.html" title="interface in org.apache.calcite.rel.rules">AggregateJoinJoinRemoveRule.Config</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab1">
<div class="block">Rule configuration.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="AggregateJoinRemoveRule.html" title="class in org.apache.calcite.rel.rules">AggregateJoinRemoveRule</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<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>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab1"><a href="AggregateJoinRemoveRule.Config.html" title="interface in org.apache.calcite.rel.rules">AggregateJoinRemoveRule.Config</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab1">
<div class="block">Rule configuration.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="AggregateJoinTransposeRule.html" title="class in org.apache.calcite.rel.rules">AggregateJoinTransposeRule</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<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>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab1"><a href="AggregateJoinTransposeRule.Config.html" title="interface in org.apache.calcite.rel.rules">AggregateJoinTransposeRule.Config</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab1">
<div class="block">Rule configuration.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="AggregateMergeRule.html" title="class in org.apache.calcite.rel.rules">AggregateMergeRule</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<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>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab1"><a href="AggregateMergeRule.Config.html" title="interface in org.apache.calcite.rel.rules">AggregateMergeRule.Config</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab1">
<div class="block">Rule configuration.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="AggregateProjectConstantToDummyJoinRule.html" title="class in org.apache.calcite.rel.rules">AggregateProjectConstantToDummyJoinRule</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<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> where the aggregate's group set
contains literals (true, false, DATE, chars, etc), and removes the literals from the
group keys by joining with a dummy table of literals.</div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab1"><a href="AggregateProjectConstantToDummyJoinRule.Config.html" title="interface in org.apache.calcite.rel.rules">AggregateProjectConstantToDummyJoinRule.Config</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab1">
<div class="block">Rule configuration.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="AggregateProjectMergeRule.html" title="class in org.apache.calcite.rel.rules">AggregateProjectMergeRule</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<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>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab1"><a href="AggregateProjectMergeRule.Config.html" title="interface in org.apache.calcite.rel.rules">AggregateProjectMergeRule.Config</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab1">
<div class="block">Rule configuration.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="AggregateProjectPullUpConstantsRule.html" title="class in org.apache.calcite.rel.rules">AggregateProjectPullUpConstantsRule</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<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>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab1"><a href="AggregateProjectPullUpConstantsRule.Config.html" title="interface in org.apache.calcite.rel.rules">AggregateProjectPullUpConstantsRule.Config</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab1">
<div class="block">Rule configuration.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="AggregateProjectStarTableRule.html" title="class in org.apache.calcite.rel.rules">AggregateProjectStarTableRule</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<div class="block">Variant of <a href="AggregateStarTableRule.html" title="class in org.apache.calcite.rel.rules"><code>AggregateStarTableRule</code></a> that accepts a <a href="../core/Project.html" title="class in org.apache.calcite.rel.core"><code>Project</code></a>
between the <a href="../core/Aggregate.html" title="class in org.apache.calcite.rel.core"><code>Aggregate</code></a> and its <a href="../../schema/impl/StarTable.StarTableScan.html" title="class in org.apache.calcite.schema.impl"><code>StarTable.StarTableScan</code></a>
input.</div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab1"><a href="AggregateProjectStarTableRule.Config.html" title="interface in org.apache.calcite.rel.rules">AggregateProjectStarTableRule.Config</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab1">
<div class="block">Rule configuration.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="AggregateReduceFunctionsRule.html" title="class in org.apache.calcite.rel.rules">AggregateReduceFunctionsRule</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<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>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab1"><a href="AggregateReduceFunctionsRule.Config.html" title="interface in org.apache.calcite.rel.rules">AggregateReduceFunctionsRule.Config</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab1">
<div class="block">Rule configuration.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="AggregateRemoveRule.html" title="class in org.apache.calcite.rel.rules">AggregateRemoveRule</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<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>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab1"><a href="AggregateRemoveRule.Config.html" title="interface in org.apache.calcite.rel.rules">AggregateRemoveRule.Config</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab1">
<div class="block">Rule configuration.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="AggregateStarTableRule.html" title="class in org.apache.calcite.rel.rules">AggregateStarTableRule</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<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>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab1"><a href="AggregateStarTableRule.Config.html" title="interface in org.apache.calcite.rel.rules">AggregateStarTableRule.Config</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab1">
<div class="block">Rule configuration.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="AggregateUnionAggregateRule.html" title="class in org.apache.calcite.rel.rules">AggregateUnionAggregateRule</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<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>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab1"><a href="AggregateUnionAggregateRule.Config.html" title="interface in org.apache.calcite.rel.rules">AggregateUnionAggregateRule.Config</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab1">
<div class="block">Rule configuration.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="AggregateUnionTransposeRule.html" title="class in org.apache.calcite.rel.rules">AggregateUnionTransposeRule</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<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>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab1"><a href="AggregateUnionTransposeRule.Config.html" title="interface in org.apache.calcite.rel.rules">AggregateUnionTransposeRule.Config</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab1">
<div class="block">Rule configuration.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="AggregateValuesRule.html" title="class in org.apache.calcite.rel.rules">AggregateValuesRule</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<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>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab1"><a href="AggregateValuesRule.Config.html" title="interface in org.apache.calcite.rel.rules">AggregateValuesRule.Config</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab1">
<div class="block">Rule configuration.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="CalcMergeRule.html" title="class in org.apache.calcite.rel.rules">CalcMergeRule</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<div class="block">Planner rule that merges a
<a href="../core/Calc.html" title="class in org.apache.calcite.rel.core"><code>Calc</code></a> onto a
<a href="../core/Calc.html" title="class in org.apache.calcite.rel.core"><code>Calc</code></a>.</div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab1"><a href="CalcMergeRule.Config.html" title="interface in org.apache.calcite.rel.rules">CalcMergeRule.Config</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab1">
<div class="block">Rule configuration.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="CalcRelSplitter.html" title="class in org.apache.calcite.rel.rules">CalcRelSplitter</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<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>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="CalcRelSplitter.RelType.html" title="class in org.apache.calcite.rel.rules">CalcRelSplitter.RelType</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab2">
<div class="block">Type of relational expression.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="CalcRemoveRule.html" title="class in org.apache.calcite.rel.rules">CalcRemoveRule</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<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>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab1"><a href="CalcRemoveRule.Config.html" title="interface in org.apache.calcite.rel.rules">CalcRemoveRule.Config</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab1">
<div class="block">Rule configuration.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="CalcSplitRule.html" title="class in org.apache.calcite.rel.rules">CalcSplitRule</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<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>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab1"><a href="CalcSplitRule.Config.html" title="interface in org.apache.calcite.rel.rules">CalcSplitRule.Config</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab1">
<div class="block">Rule configuration.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="CoerceInputsRule.html" title="class in org.apache.calcite.rel.rules">CoerceInputsRule</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<div class="block">CoerceInputsRule pre-casts inputs to a particular type.</div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab1"><a href="CoerceInputsRule.Config.html" title="interface in org.apache.calcite.rel.rules">CoerceInputsRule.Config</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab1">
<div class="block">Rule configuration.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="CoreRules.html" title="class in org.apache.calcite.rel.rules">CoreRules</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<div class="block">Rules that perform logical transformations on relational expressions.</div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="DateRangeRules.html" title="class in org.apache.calcite.rel.rules">DateRangeRules</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab2">
<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>
</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="DateRangeRules.FilterDateRangeRule.html" title="class in org.apache.calcite.rel.rules">DateRangeRules.FilterDateRangeRule</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<div class="block">Rule that converts EXTRACT, FLOOR and CEIL in a <a href="../core/Filter.html" title="class in org.apache.calcite.rel.core"><code>Filter</code></a> into a date
range.</div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab1"><a href="DateRangeRules.FilterDateRangeRule.FilterDateRangeRuleConfig.html" title="interface in org.apache.calcite.rel.rules">DateRangeRules.FilterDateRangeRule.FilterDateRangeRuleConfig</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab1">
<div class="block">Rule configuration.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="EquiJoin.html" title="class in org.apache.calcite.rel.rules">EquiJoin</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">Deprecated.
<div class="deprecation-comment">Use
<a href="../core/EquiJoin.html" title="class in org.apache.calcite.rel.core"><code>EquiJoin in 'core' package</code></a></div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="ExchangeRemoveConstantKeysRule.html" title="class in org.apache.calcite.rel.rules">ExchangeRemoveConstantKeysRule</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab2">
<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>
</div>
<div class="col-first even-row-color class-summary class-summary-tab1"><a href="ExchangeRemoveConstantKeysRule.Config.html" title="interface in org.apache.calcite.rel.rules">ExchangeRemoveConstantKeysRule.Config</a></div>
<div class="col-last even-row-color class-summary class-summary-tab1">
<div class="block">Rule configuration.</div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="FilterAggregateTransposeRule.html" title="class in org.apache.calcite.rel.rules">FilterAggregateTransposeRule</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab2">
<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>
</div>
<div class="col-first even-row-color class-summary class-summary-tab1"><a href="FilterAggregateTransposeRule.Config.html" title="interface in org.apache.calcite.rel.rules">FilterAggregateTransposeRule.Config</a></div>
<div class="col-last even-row-color class-summary class-summary-tab1">
<div class="block">Rule configuration.</div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="FilterCalcMergeRule.html" title="class in org.apache.calcite.rel.rules">FilterCalcMergeRule</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab2">
<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> and a
<a href="../core/Calc.html" title="class in org.apache.calcite.rel.core"><code>Calc</code></a>.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab1"><a href="FilterCalcMergeRule.Config.html" title="interface in org.apache.calcite.rel.rules">FilterCalcMergeRule.Config</a></div>
<div class="col-last even-row-color class-summary class-summary-tab1">
<div class="block">Rule configuration.</div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="FilterCorrelateRule.html" title="class in org.apache.calcite.rel.rules">FilterCorrelateRule</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab2">
<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>
</div>
<div class="col-first even-row-color class-summary class-summary-tab1"><a href="FilterCorrelateRule.Config.html" title="interface in org.apache.calcite.rel.rules">FilterCorrelateRule.Config</a></div>
<div class="col-last even-row-color class-summary class-summary-tab1">
<div class="block">Rule configuration.</div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="FilterFlattenCorrelatedConditionRule.html" title="class in org.apache.calcite.rel.rules">FilterFlattenCorrelatedConditionRule</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab2">
<div class="block">Planner rule that matches a <a href="../core/Filter.html" title="class in org.apache.calcite.rel.core"><code>Filter</code></a> expression with correlated variables, and rewrites the
condition in a simpler form that is more convenient for the decorrelation logic.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab1"><a href="FilterFlattenCorrelatedConditionRule.Config.html" title="interface in org.apache.calcite.rel.rules">FilterFlattenCorrelatedConditionRule.Config</a></div>
<div class="col-last even-row-color class-summary class-summary-tab1">
<div class="block">Rule configuration.</div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="FilterJoinRule.html" title="class in org.apache.calcite.rel.rules">FilterJoinRule</a>&lt;C extends <a href="FilterJoinRule.Config.html" title="interface in org.apache.calcite.rel.rules">FilterJoinRule.Config</a>&gt;</div>
<div class="col-last odd-row-color class-summary class-summary-tab2">
<div class="block">Planner rule that pushes filters above and
within a join node into the join node and/or its children nodes.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab1"><a href="FilterJoinRule.Config.html" title="interface in org.apache.calcite.rel.rules">FilterJoinRule.Config</a></div>
<div class="col-last even-row-color class-summary class-summary-tab1">
<div class="block">Rule configuration.</div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="FilterJoinRule.FilterIntoJoinRule.html" title="class in org.apache.calcite.rel.rules">FilterJoinRule.FilterIntoJoinRule</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab2">
<div class="block">Rule that tries to push filter expressions into a join
condition and into the inputs of the join.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab1"><a href="FilterJoinRule.FilterIntoJoinRule.FilterIntoJoinRuleConfig.html" title="interface in org.apache.calcite.rel.rules">FilterJoinRule.FilterIntoJoinRule.FilterIntoJoinRuleConfig</a></div>
<div class="col-last even-row-color class-summary class-summary-tab1">
<div class="block">Rule configuration.</div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="FilterJoinRule.JoinConditionPushRule.html" title="class in org.apache.calcite.rel.rules">FilterJoinRule.JoinConditionPushRule</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab2">
<div class="block">Rule that pushes parts of the join condition to its inputs.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab1"><a href="FilterJoinRule.JoinConditionPushRule.JoinConditionPushRuleConfig.html" title="interface in org.apache.calcite.rel.rules">FilterJoinRule.JoinConditionPushRule.JoinConditionPushRuleConfig</a></div>
<div class="col-last even-row-color class-summary class-summary-tab1">
<div class="block">Rule configuration.</div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab1"><a href="FilterJoinRule.Predicate.html" title="interface in org.apache.calcite.rel.rules">FilterJoinRule.Predicate</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab1">
<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>
</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="FilterMergeRule.html" title="class in org.apache.calcite.rel.rules">FilterMergeRule</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<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>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab1"><a href="FilterMergeRule.Config.html" title="interface in org.apache.calcite.rel.rules">FilterMergeRule.Config</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab1">
<div class="block">Rule configuration.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="FilterMultiJoinMergeRule.html" title="class in org.apache.calcite.rel.rules">FilterMultiJoinMergeRule</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<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>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab1"><a href="FilterMultiJoinMergeRule.Config.html" title="interface in org.apache.calcite.rel.rules">FilterMultiJoinMergeRule.Config</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab1">
<div class="block">Rule configuration.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="FilterProjectTransposeRule.html" title="class in org.apache.calcite.rel.rules">FilterProjectTransposeRule</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<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>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab1"><a href="FilterProjectTransposeRule.Config.html" title="interface in org.apache.calcite.rel.rules">FilterProjectTransposeRule.Config</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab1">
<div class="block">Rule configuration.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="FilterRemoveIsNotDistinctFromRule.html" title="class in org.apache.calcite.rel.rules">FilterRemoveIsNotDistinctFromRule</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<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>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab1"><a href="FilterRemoveIsNotDistinctFromRule.Config.html" title="interface in org.apache.calcite.rel.rules">FilterRemoveIsNotDistinctFromRule.Config</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab1">
<div class="block">Rule configuration.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="FilterSetOpTransposeRule.html" title="class in org.apache.calcite.rel.rules">FilterSetOpTransposeRule</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<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>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab1"><a href="FilterSetOpTransposeRule.Config.html" title="interface in org.apache.calcite.rel.rules">FilterSetOpTransposeRule.Config</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab1">
<div class="block">Rule configuration.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="FilterTableFunctionTransposeRule.html" title="class in org.apache.calcite.rel.rules">FilterTableFunctionTransposeRule</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<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>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab1"><a href="FilterTableFunctionTransposeRule.Config.html" title="interface in org.apache.calcite.rel.rules">FilterTableFunctionTransposeRule.Config</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab1">
<div class="block">Rule configuration.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="FilterTableScanRule.html" title="class in org.apache.calcite.rel.rules">FilterTableScanRule</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<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>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab1"><a href="FilterTableScanRule.Config.html" title="interface in org.apache.calcite.rel.rules">FilterTableScanRule.Config</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab1">
<div class="block">Rule configuration.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="FilterToCalcRule.html" title="class in org.apache.calcite.rel.rules">FilterToCalcRule</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<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>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab1"><a href="FilterToCalcRule.Config.html" title="interface in org.apache.calcite.rel.rules">FilterToCalcRule.Config</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab1">
<div class="block">Rule configuration.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="IntersectToDistinctRule.html" title="class in org.apache.calcite.rel.rules">IntersectToDistinctRule</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<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>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab1"><a href="IntersectToDistinctRule.Config.html" title="interface in org.apache.calcite.rel.rules">IntersectToDistinctRule.Config</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab1">
<div class="block">Rule configuration.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="JoinAddRedundantSemiJoinRule.html" title="class in org.apache.calcite.rel.rules">JoinAddRedundantSemiJoinRule</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<div class="block">Rule to add a semi-join into a join.</div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab1"><a href="JoinAddRedundantSemiJoinRule.Config.html" title="interface in org.apache.calcite.rel.rules">JoinAddRedundantSemiJoinRule.Config</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab1">
<div class="block">Rule configuration.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="JoinAssociateRule.html" title="class in org.apache.calcite.rel.rules">JoinAssociateRule</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<div class="block">Planner rule that changes a join based on the associativity rule.</div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab1"><a href="JoinAssociateRule.Config.html" title="interface in org.apache.calcite.rel.rules">JoinAssociateRule.Config</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab1">
<div class="block">Rule configuration.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="JoinCommuteRule.html" title="class in org.apache.calcite.rel.rules">JoinCommuteRule</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<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>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab1"><a href="JoinCommuteRule.Config.html" title="interface in org.apache.calcite.rel.rules">JoinCommuteRule.Config</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab1">
<div class="block">Rule configuration.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="JoinDeriveIsNotNullFilterRule.html" title="class in org.apache.calcite.rel.rules">JoinDeriveIsNotNullFilterRule</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<div class="block">Planner rule that derives IS NOT NULL predicates from a inner
<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 with those predicates as new inputs of the join.</div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab1"><a href="JoinDeriveIsNotNullFilterRule.Config.html" title="interface in org.apache.calcite.rel.rules">JoinDeriveIsNotNullFilterRule.Config</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab1">
<div class="block">Rule configuration.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="JoinExtractFilterRule.html" title="class in org.apache.calcite.rel.rules">JoinExtractFilterRule</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<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>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab1"><a href="JoinExtractFilterRule.Config.html" title="interface in org.apache.calcite.rel.rules">JoinExtractFilterRule.Config</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab1">
<div class="block">Rule configuration.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="JoinProjectTransposeRule.html" title="class in org.apache.calcite.rel.rules">JoinProjectTransposeRule</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<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>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab1"><a href="JoinProjectTransposeRule.Config.html" title="interface in org.apache.calcite.rel.rules">JoinProjectTransposeRule.Config</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab1">
<div class="block">Rule configuration.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="JoinPushExpressionsRule.html" title="class in org.apache.calcite.rel.rules">JoinPushExpressionsRule</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<div class="block">Planner rule that pushes down expressions in "equal" join condition.</div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab1"><a href="JoinPushExpressionsRule.Config.html" title="interface in org.apache.calcite.rel.rules">JoinPushExpressionsRule.Config</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab1">
<div class="block">Rule configuration.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="JoinPushThroughJoinRule.html" title="class in org.apache.calcite.rel.rules">JoinPushThroughJoinRule</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<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>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab1"><a href="JoinPushThroughJoinRule.Config.html" title="interface in org.apache.calcite.rel.rules">JoinPushThroughJoinRule.Config</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab1">
<div class="block">Rule configuration.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="JoinPushTransitivePredicatesRule.html" title="class in org.apache.calcite.rel.rules">JoinPushTransitivePredicatesRule</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<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>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab1"><a href="JoinPushTransitivePredicatesRule.Config.html" title="interface in org.apache.calcite.rel.rules">JoinPushTransitivePredicatesRule.Config</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab1">
<div class="block">Rule configuration.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="JoinToCorrelateRule.html" title="class in org.apache.calcite.rel.rules">JoinToCorrelateRule</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<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>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab1"><a href="JoinToCorrelateRule.Config.html" title="interface in org.apache.calcite.rel.rules">JoinToCorrelateRule.Config</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab1">
<div class="block">Rule configuration.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="JoinToMultiJoinRule.html" title="class in org.apache.calcite.rel.rules">JoinToMultiJoinRule</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<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>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab1"><a href="JoinToMultiJoinRule.Config.html" title="interface in org.apache.calcite.rel.rules">JoinToMultiJoinRule.Config</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab1">
<div class="block">Rule configuration.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="JoinUnionTransposeRule.html" title="class in org.apache.calcite.rel.rules">JoinUnionTransposeRule</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<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>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab1"><a href="JoinUnionTransposeRule.Config.html" title="interface in org.apache.calcite.rel.rules">JoinUnionTransposeRule.Config</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab1">
<div class="block">Rule configuration.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="LoptJoinTree.html" title="class in org.apache.calcite.rel.rules">LoptJoinTree</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<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>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="LoptJoinTree.BinaryTree.html" title="class in org.apache.calcite.rel.rules">LoptJoinTree.BinaryTree</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab2">
<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>
</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="LoptJoinTree.Leaf.html" title="class in org.apache.calcite.rel.rules">LoptJoinTree.Leaf</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<div class="block">Binary tree node that has no children.</div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="LoptJoinTree.Node.html" title="class in org.apache.calcite.rel.rules">LoptJoinTree.Node</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab2">
<div class="block">Binary tree node that has two children.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="LoptMultiJoin.html" title="class in org.apache.calcite.rel.rules">LoptMultiJoin</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<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>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="LoptOptimizeJoinRule.html" title="class in org.apache.calcite.rel.rules">LoptOptimizeJoinRule</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab2">
<div class="block">Planner rule that implements the heuristic planner for determining optimal
join orderings.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab1"><a href="LoptOptimizeJoinRule.Config.html" title="interface in org.apache.calcite.rel.rules">LoptOptimizeJoinRule.Config</a></div>
<div class="col-last even-row-color class-summary class-summary-tab1">
<div class="block">Rule configuration.</div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="LoptSemiJoinOptimizer.html" title="class in org.apache.calcite.rel.rules">LoptSemiJoinOptimizer</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab2">
<div class="block">Implements the logic for determining the optimal
semi-joins to be used in processing joins in a query.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="MatchRule.html" title="class in org.apache.calcite.rel.rules">MatchRule</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<div class="block">Planner rule that converts a
<a href="../logical/LogicalMatch.html" title="class in org.apache.calcite.rel.logical"><code>LogicalMatch</code></a> to the result
of calling <a href="../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>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab1"><a href="MatchRule.Config.html" title="interface in org.apache.calcite.rel.rules">MatchRule.Config</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab1">
<div class="block">Rule configuration.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="MaterializedViewFilterScanRule.html" title="class in org.apache.calcite.rel.rules">MaterializedViewFilterScanRule</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<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 a Materialized View.</div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab1"><a href="MaterializedViewFilterScanRule.Config.html" title="interface in org.apache.calcite.rel.rules">MaterializedViewFilterScanRule.Config</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab1">
<div class="block">Rule configuration.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="MultiJoin.html" title="class in org.apache.calcite.rel.rules">MultiJoin</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<div class="block">A MultiJoin represents a join of N inputs, whereas regular Joins
represent strictly binary joins.</div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="MultiJoinOptimizeBushyRule.html" title="class in org.apache.calcite.rel.rules">MultiJoinOptimizeBushyRule</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab2">
<div class="block">Planner rule that finds an approximately optimal ordering for join operators
using a heuristic algorithm.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab1"><a href="MultiJoinOptimizeBushyRule.Config.html" title="interface in org.apache.calcite.rel.rules">MultiJoinOptimizeBushyRule.Config</a></div>
<div class="col-last even-row-color class-summary class-summary-tab1">
<div class="block">Rule configuration.</div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="MultiJoinProjectTransposeRule.html" title="class in org.apache.calcite.rel.rules">MultiJoinProjectTransposeRule</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab2">
<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>
</div>
<div class="col-first even-row-color class-summary class-summary-tab1"><a href="MultiJoinProjectTransposeRule.Config.html" title="interface in org.apache.calcite.rel.rules">MultiJoinProjectTransposeRule.Config</a></div>
<div class="col-last even-row-color class-summary class-summary-tab1">
<div class="block">Rule configuration.</div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="ProjectAggregateMergeRule.html" title="class in org.apache.calcite.rel.rules">ProjectAggregateMergeRule</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab2">
<div class="block">Planner rule that matches a <a href="../core/Project.html" title="class in org.apache.calcite.rel.core"><code>Project</code></a> on a <a href="../core/Aggregate.html" title="class in org.apache.calcite.rel.core"><code>Aggregate</code></a>
and projects away aggregate calls that are not used.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab1"><a href="ProjectAggregateMergeRule.Config.html" title="interface in org.apache.calcite.rel.rules">ProjectAggregateMergeRule.Config</a></div>
<div class="col-last even-row-color class-summary class-summary-tab1">
<div class="block">Rule configuration.</div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="ProjectCalcMergeRule.html" title="class in org.apache.calcite.rel.rules">ProjectCalcMergeRule</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab2">
<div class="block">Planner rule that merges a
<a href="../core/Project.html" title="class in org.apache.calcite.rel.core"><code>Project</code></a> and a
<a href="../core/Calc.html" title="class in org.apache.calcite.rel.core"><code>Calc</code></a>.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab1"><a href="ProjectCalcMergeRule.Config.html" title="interface in org.apache.calcite.rel.rules">ProjectCalcMergeRule.Config</a></div>
<div class="col-last even-row-color class-summary class-summary-tab1">
<div class="block">Rule configuration.</div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="ProjectCorrelateTransposeRule.html" title="class in org.apache.calcite.rel.rules">ProjectCorrelateTransposeRule</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab2">
<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> under <a href="../core/Correlate.html" title="class in org.apache.calcite.rel.core"><code>Correlate</code></a> to apply
on Correlate's left and right inputs.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab1"><a href="ProjectCorrelateTransposeRule.Config.html" title="interface in org.apache.calcite.rel.rules">ProjectCorrelateTransposeRule.Config</a></div>
<div class="col-last even-row-color class-summary class-summary-tab1">
<div class="block">Rule configuration.</div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="ProjectCorrelateTransposeRule.RelNodesExprsHandler.html" title="class in org.apache.calcite.rel.rules">ProjectCorrelateTransposeRule.RelNodesExprsHandler</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab2">
<div class="block">Visitor for RelNodes which applies specified <a href="../../rex/RexShuttle.html" title="class in org.apache.calcite.rex"><code>RexShuttle</code></a> visitor
for every node in the tree.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="ProjectCorrelateTransposeRule.RexFieldAccessReplacer.html" title="class in org.apache.calcite.rel.rules">ProjectCorrelateTransposeRule.RexFieldAccessReplacer</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<div class="block">Visitor for RexNodes which replaces <a href="../../rex/RexCorrelVariable.html" title="class in org.apache.calcite.rex"><code>RexCorrelVariable</code></a> with specified.</div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="ProjectFilterTransposeRule.html" title="class in org.apache.calcite.rel.rules">ProjectFilterTransposeRule</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab2">
<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>
</div>
<div class="col-first even-row-color class-summary class-summary-tab1"><a href="ProjectFilterTransposeRule.Config.html" title="interface in org.apache.calcite.rel.rules">ProjectFilterTransposeRule.Config</a></div>
<div class="col-last even-row-color class-summary class-summary-tab1">
<div class="block">Rule configuration.</div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="ProjectJoinJoinRemoveRule.html" title="class in org.apache.calcite.rel.rules">ProjectJoinJoinRemoveRule</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab2">
<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>
</div>
<div class="col-first even-row-color class-summary class-summary-tab1"><a href="ProjectJoinJoinRemoveRule.Config.html" title="interface in org.apache.calcite.rel.rules">ProjectJoinJoinRemoveRule.Config</a></div>
<div class="col-last even-row-color class-summary class-summary-tab1">
<div class="block">Rule configuration.</div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="ProjectJoinRemoveRule.html" title="class in org.apache.calcite.rel.rules">ProjectJoinRemoveRule</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab2">
<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>
</div>
<div class="col-first even-row-color class-summary class-summary-tab1"><a href="ProjectJoinRemoveRule.Config.html" title="interface in org.apache.calcite.rel.rules">ProjectJoinRemoveRule.Config</a></div>
<div class="col-last even-row-color class-summary class-summary-tab1">
<div class="block">Rule configuration.</div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="ProjectJoinTransposeRule.html" title="class in org.apache.calcite.rel.rules">ProjectJoinTransposeRule</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab2">
<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>
</div>
<div class="col-first even-row-color class-summary class-summary-tab1"><a href="ProjectJoinTransposeRule.Config.html" title="interface in org.apache.calcite.rel.rules">ProjectJoinTransposeRule.Config</a></div>
<div class="col-last even-row-color class-summary class-summary-tab1">
<div class="block">Rule configuration.</div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="ProjectMergeRule.html" title="class in org.apache.calcite.rel.rules">ProjectMergeRule</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab2">
<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>
</div>
<div class="col-first even-row-color class-summary class-summary-tab1"><a href="ProjectMergeRule.Config.html" title="interface in org.apache.calcite.rel.rules">ProjectMergeRule.Config</a></div>
<div class="col-last even-row-color class-summary class-summary-tab1">
<div class="block">Rule configuration.</div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="ProjectMultiJoinMergeRule.html" title="class in org.apache.calcite.rel.rules">ProjectMultiJoinMergeRule</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab2">
<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>
</div>
<div class="col-first even-row-color class-summary class-summary-tab1"><a href="ProjectMultiJoinMergeRule.Config.html" title="interface in org.apache.calcite.rel.rules">ProjectMultiJoinMergeRule.Config</a></div>
<div class="col-last even-row-color class-summary class-summary-tab1">
<div class="block">Rule configuration.</div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="ProjectRemoveRule.html" title="class in org.apache.calcite.rel.rules">ProjectRemoveRule</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab2">
<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>
</div>
<div class="col-first even-row-color class-summary class-summary-tab1"><a href="ProjectRemoveRule.Config.html" title="interface in org.apache.calcite.rel.rules">ProjectRemoveRule.Config</a></div>
<div class="col-last even-row-color class-summary class-summary-tab1">
<div class="block">Rule configuration.</div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="ProjectSetOpTransposeRule.html" title="class in org.apache.calcite.rel.rules">ProjectSetOpTransposeRule</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab2">
<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>
</div>
<div class="col-first even-row-color class-summary class-summary-tab1"><a href="ProjectSetOpTransposeRule.Config.html" title="interface in org.apache.calcite.rel.rules">ProjectSetOpTransposeRule.Config</a></div>
<div class="col-last even-row-color class-summary class-summary-tab1">
<div class="block">Rule configuration.</div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="ProjectTableScanRule.html" title="class in org.apache.calcite.rel.rules">ProjectTableScanRule</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab2">
<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>
</div>
<div class="col-first even-row-color class-summary class-summary-tab1"><a href="ProjectTableScanRule.Config.html" title="interface in org.apache.calcite.rel.rules">ProjectTableScanRule.Config</a></div>
<div class="col-last even-row-color class-summary class-summary-tab1">
<div class="block">Rule configuration.</div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="ProjectToCalcRule.html" title="class in org.apache.calcite.rel.rules">ProjectToCalcRule</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab2">
<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>
</div>
<div class="col-first even-row-color class-summary class-summary-tab1"><a href="ProjectToCalcRule.Config.html" title="interface in org.apache.calcite.rel.rules">ProjectToCalcRule.Config</a></div>
<div class="col-last even-row-color class-summary class-summary-tab1">
<div class="block">Rule configuration.</div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="ProjectToWindowRule.html" title="class in org.apache.calcite.rel.rules">ProjectToWindowRule</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab2">
<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>
</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="ProjectToWindowRule.CalcToWindowRule.html" title="class in org.apache.calcite.rel.rules">ProjectToWindowRule.CalcToWindowRule</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<div class="block">Instance of the rule that applies to a
<a href="../core/Calc.html" title="class in org.apache.calcite.rel.core"><code>Calc</code></a> that contains
windowed aggregates and converts it into a mixture of
<a href="../logical/LogicalWindow.html" title="class in org.apache.calcite.rel.logical"><code>LogicalWindow</code></a> and <code>Calc</code>.</div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab1"><a href="ProjectToWindowRule.CalcToWindowRule.CalcToWindowRuleConfig.html" title="interface in org.apache.calcite.rel.rules">ProjectToWindowRule.CalcToWindowRule.CalcToWindowRuleConfig</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab1">
<div class="block">Rule configuration.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab1"><a href="ProjectToWindowRule.Config.html" title="interface in org.apache.calcite.rel.rules">ProjectToWindowRule.Config</a></div>
<div class="col-last even-row-color class-summary class-summary-tab1">
<div class="block">Rule configuration.</div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="ProjectToWindowRule.ProjectToLogicalProjectAndWindowRule.html" title="class in org.apache.calcite.rel.rules">ProjectToWindowRule.ProjectToLogicalProjectAndWindowRule</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab2">
<div class="block">Instance of the rule that can be applied to a
<a href="../core/Project.html" title="class in org.apache.calcite.rel.core"><code>Project</code></a> and that produces, in turn,
a mixture of <code>LogicalProject</code>
and <a href="../logical/LogicalWindow.html" title="class in org.apache.calcite.rel.logical"><code>LogicalWindow</code></a>.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab1"><a href="ProjectToWindowRule.ProjectToLogicalProjectAndWindowRule.ProjectToLogicalProjectAndWindowRuleConfig.html" title="interface in org.apache.calcite.rel.rules">ProjectToWindowRule.ProjectToLogicalProjectAndWindowRule.ProjectToLogicalProjectAndWindowRuleConfig</a></div>
<div class="col-last even-row-color class-summary class-summary-tab1">
<div class="block">Rule configuration.</div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="ProjectWindowTransposeRule.html" title="class in org.apache.calcite.rel.rules">ProjectWindowTransposeRule</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab2">
<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>
</div>
<div class="col-first even-row-color class-summary class-summary-tab1"><a href="ProjectWindowTransposeRule.Config.html" title="interface in org.apache.calcite.rel.rules">ProjectWindowTransposeRule.Config</a></div>
<div class="col-last even-row-color class-summary class-summary-tab1">
<div class="block">Rule configuration.</div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="PruneEmptyRules.html" title="class in org.apache.calcite.rel.rules">PruneEmptyRules</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab2">
<div class="block">Collection of rules which remove sections of a query plan known never to
produce any rows.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab1"><a href="PruneEmptyRules.IntersectEmptyPruneRuleConfig.html" title="interface in org.apache.calcite.rel.rules">PruneEmptyRules.IntersectEmptyPruneRuleConfig</a></div>
<div class="col-last even-row-color class-summary class-summary-tab1">
<div class="block">Configuration for a rule that prunes an Intersect if any of its inputs
is empty.</div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab1"><a href="PruneEmptyRules.JoinLeftEmptyRuleConfig.html" title="interface in org.apache.calcite.rel.rules">PruneEmptyRules.JoinLeftEmptyRuleConfig</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab1">
<div class="block">Configuration for rule that prunes a join it its left input is
empty.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab1"><a href="PruneEmptyRules.JoinRightEmptyRuleConfig.html" title="interface in org.apache.calcite.rel.rules">PruneEmptyRules.JoinRightEmptyRuleConfig</a></div>
<div class="col-last even-row-color class-summary class-summary-tab1">
<div class="block">Configuration for rule that prunes a join it its right input is
empty.</div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab1"><a href="PruneEmptyRules.MinusEmptyPruneRuleConfig.html" title="interface in org.apache.calcite.rel.rules">PruneEmptyRules.MinusEmptyPruneRuleConfig</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab1">
<div class="block">Configuration for a rule that prunes empty inputs from a Minus.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="PruneEmptyRules.PruneEmptyRule.html" title="class in org.apache.calcite.rel.rules">PruneEmptyRules.PruneEmptyRule</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<div class="block">Abstract prune empty rule that implements SubstitutionRule interface.</div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab1"><a href="PruneEmptyRules.PruneEmptyRule.Config.html" title="interface in org.apache.calcite.rel.rules">PruneEmptyRules.PruneEmptyRule.Config</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab1">
<div class="block">Rule configuration.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="PruneEmptyRules.RemoveEmptySingleRule.html" title="class in org.apache.calcite.rel.rules">PruneEmptyRules.RemoveEmptySingleRule</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<div class="block">Planner rule that converts a single-rel (e.g.</div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab1"><a href="PruneEmptyRules.RemoveEmptySingleRule.RemoveEmptySingleRuleConfig.html" title="interface in org.apache.calcite.rel.rules">PruneEmptyRules.RemoveEmptySingleRule.RemoveEmptySingleRuleConfig</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab1">
<div class="block">Rule configuration.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab1"><a href="PruneEmptyRules.SortFetchZeroRuleConfig.html" title="interface in org.apache.calcite.rel.rules">PruneEmptyRules.SortFetchZeroRuleConfig</a></div>
<div class="col-last even-row-color class-summary class-summary-tab1">
<div class="block">Configuration for a rule that prunes a Sort if it has limit 0.</div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab1"><a href="PruneEmptyRules.UnionEmptyPruneRuleConfig.html" title="interface in org.apache.calcite.rel.rules">PruneEmptyRules.UnionEmptyPruneRuleConfig</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab1">
<div class="block">Configuration for a rule that prunes empty inputs from a Minus.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab1"><a href="PruneEmptyRules.ZeroMaxRowsRuleConfig.html" title="interface in org.apache.calcite.rel.rules">PruneEmptyRules.ZeroMaxRowsRuleConfig</a></div>
<div class="col-last even-row-color class-summary class-summary-tab1">
<div class="block">Configuration for rule that transforms an empty relational expression into an empty values.</div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="PushProjector.html" title="class in org.apache.calcite.rel.rules">PushProjector</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab2">
<div class="block">PushProjector is a utility class used to perform operations used in push
projection rules.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab1"><a href="PushProjector.ExprCondition.html" title="interface in org.apache.calcite.rel.rules">PushProjector.ExprCondition</a></div>
<div class="col-last even-row-color class-summary class-summary-tab1">
<div class="block">A functor that replies true or false for a given expression.</div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="ReduceDecimalsRule.html" title="class in org.apache.calcite.rel.rules">ReduceDecimalsRule</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab2">
<div class="block">Rule that reduces decimal operations (such as casts
or arithmetic) into operations involving more primitive types (such as longs
and doubles).</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab1"><a href="ReduceDecimalsRule.Config.html" title="interface in org.apache.calcite.rel.rules">ReduceDecimalsRule.Config</a></div>
<div class="col-last even-row-color class-summary class-summary-tab1">
<div class="block">Rule configuration.</div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="ReduceDecimalsRule.DecimalShuttle.html" title="class in org.apache.calcite.rel.rules">ReduceDecimalsRule.DecimalShuttle</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab2">
<div class="block">A shuttle which converts decimal expressions to expressions based on
longs.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="ReduceDecimalsRule.RexExpander.html" title="class in org.apache.calcite.rel.rules">ReduceDecimalsRule.RexExpander</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<div class="block">Rewrites a decimal expression for a specific set of SqlOperator's.</div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="ReduceExpressionsRule.html" title="class in org.apache.calcite.rel.rules">ReduceExpressionsRule</a>&lt;C extends <a href="ReduceExpressionsRule.Config.html" title="interface in org.apache.calcite.rel.rules">ReduceExpressionsRule.Config</a>&gt;</div>
<div class="col-last odd-row-color class-summary class-summary-tab2">
<div class="block">Collection of planner rules that apply various simplifying transformations on
RexNode trees.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="ReduceExpressionsRule.CalcReduceExpressionsRule.html" title="class in org.apache.calcite.rel.rules">ReduceExpressionsRule.CalcReduceExpressionsRule</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<div class="block">Rule that reduces constants inside a <a href="../core/Calc.html" title="class in org.apache.calcite.rel.core"><code>Calc</code></a>.</div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab1"><a href="ReduceExpressionsRule.CalcReduceExpressionsRule.CalcReduceExpressionsRuleConfig.html" title="interface in org.apache.calcite.rel.rules">ReduceExpressionsRule.CalcReduceExpressionsRule.CalcReduceExpressionsRuleConfig</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab1">
<div class="block">Rule configuration.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="ReduceExpressionsRule.CaseShuttle.html" title="class in org.apache.calcite.rel.rules">ReduceExpressionsRule.CaseShuttle</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<div class="block">Shuttle that pushes predicates into a CASE.</div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab1"><a href="ReduceExpressionsRule.Config.html" title="interface in org.apache.calcite.rel.rules">ReduceExpressionsRule.Config</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab1">
<div class="block">Rule configuration.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="ReduceExpressionsRule.FilterReduceExpressionsRule.html" title="class in org.apache.calcite.rel.rules">ReduceExpressionsRule.FilterReduceExpressionsRule</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<div class="block">Rule that reduces constants inside a <a href="../core/Filter.html" title="class in org.apache.calcite.rel.core"><code>Filter</code></a>.</div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab1"><a href="ReduceExpressionsRule.FilterReduceExpressionsRule.FilterReduceExpressionsRuleConfig.html" title="interface in org.apache.calcite.rel.rules">ReduceExpressionsRule.FilterReduceExpressionsRule.FilterReduceExpressionsRuleConfig</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab1">
<div class="block">Rule configuration.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="ReduceExpressionsRule.JoinReduceExpressionsRule.html" title="class in org.apache.calcite.rel.rules">ReduceExpressionsRule.JoinReduceExpressionsRule</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<div class="block">Rule that reduces constants inside a <a href="../core/Join.html" title="class in org.apache.calcite.rel.core"><code>Join</code></a>.</div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab1"><a href="ReduceExpressionsRule.JoinReduceExpressionsRule.JoinReduceExpressionsRuleConfig.html" title="interface in org.apache.calcite.rel.rules">ReduceExpressionsRule.JoinReduceExpressionsRule.JoinReduceExpressionsRuleConfig</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab1">
<div class="block">Rule configuration.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="ReduceExpressionsRule.ProjectReduceExpressionsRule.html" title="class in org.apache.calcite.rel.rules">ReduceExpressionsRule.ProjectReduceExpressionsRule</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<div class="block">Rule that reduces constants inside a
<a href="../core/Project.html" title="class in org.apache.calcite.rel.core"><code>Project</code></a>.</div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab1"><a href="ReduceExpressionsRule.ProjectReduceExpressionsRule.ProjectReduceExpressionsRuleConfig.html" title="interface in org.apache.calcite.rel.rules">ReduceExpressionsRule.ProjectReduceExpressionsRule.ProjectReduceExpressionsRuleConfig</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab1">
<div class="block">Rule configuration.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="ReduceExpressionsRule.ReducibleExprLocator.html" title="class in org.apache.calcite.rel.rules">ReduceExpressionsRule.ReducibleExprLocator</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<div class="block">Helper class used to locate expressions that either can be reduced to
literals or contain redundant casts.</div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="ReduceExpressionsRule.RexReplacer.html" title="class in org.apache.calcite.rel.rules">ReduceExpressionsRule.RexReplacer</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab2">
<div class="block">Replaces expressions with their reductions.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="ReduceExpressionsRule.WindowReduceExpressionsRule.html" title="class in org.apache.calcite.rel.rules">ReduceExpressionsRule.WindowReduceExpressionsRule</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<div class="block">Rule that reduces constants inside a <a href="../core/Window.html" title="class in org.apache.calcite.rel.core"><code>Window</code></a>.</div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab1"><a href="ReduceExpressionsRule.WindowReduceExpressionsRule.WindowReduceExpressionsRuleConfig.html" title="interface in org.apache.calcite.rel.rules">ReduceExpressionsRule.WindowReduceExpressionsRule.WindowReduceExpressionsRuleConfig</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab1">
<div class="block">Rule configuration.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="SemiJoinFilterTransposeRule.html" title="class in org.apache.calcite.rel.rules">SemiJoinFilterTransposeRule</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<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>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab1"><a href="SemiJoinFilterTransposeRule.Config.html" title="interface in org.apache.calcite.rel.rules">SemiJoinFilterTransposeRule.Config</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab1">
<div class="block">Rule configuration.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="SemiJoinJoinTransposeRule.html" title="class in org.apache.calcite.rel.rules">SemiJoinJoinTransposeRule</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<div class="block">Planner rule that pushes a <a href="../core/Join.html#isSemiJoin()"><code>semi-join</code></a>
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>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab1"><a href="SemiJoinJoinTransposeRule.Config.html" title="interface in org.apache.calcite.rel.rules">SemiJoinJoinTransposeRule.Config</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab1">
<div class="block">Rule configuration.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="SemiJoinProjectTransposeRule.html" title="class in org.apache.calcite.rel.rules">SemiJoinProjectTransposeRule</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<div class="block">Planner rule that pushes
a <a href="../core/Join.html#isSemiJoin()"><code>semi-join</code></a> down in a tree past
a <a href="../core/Project.html" title="class in org.apache.calcite.rel.core"><code>Project</code></a>.</div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab1"><a href="SemiJoinProjectTransposeRule.Config.html" title="interface in org.apache.calcite.rel.rules">SemiJoinProjectTransposeRule.Config</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab1">
<div class="block">Rule configuration.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="SemiJoinRemoveRule.html" title="class in org.apache.calcite.rel.rules">SemiJoinRemoveRule</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<div class="block">Planner rule that removes a <a href="../core/Join.html#isSemiJoin()"><code>semi-join</code></a> from a join
tree.</div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab1"><a href="SemiJoinRemoveRule.Config.html" title="interface in org.apache.calcite.rel.rules">SemiJoinRemoveRule.Config</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab1">
<div class="block">Rule configuration.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="SemiJoinRule.html" title="class in org.apache.calcite.rel.rules">SemiJoinRule</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<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> or
on a <a href="../RelNode.html" title="interface in org.apache.calcite.rel"><code>RelNode</code></a> which is
unique for join's right keys.</div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab1"><a href="SemiJoinRule.Config.html" title="interface in org.apache.calcite.rel.rules">SemiJoinRule.Config</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab1">
<div class="block">Rule configuration.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="SemiJoinRule.JoinOnUniqueToSemiJoinRule.html" title="class in org.apache.calcite.rel.rules">SemiJoinRule.JoinOnUniqueToSemiJoinRule</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<div class="block">SemiJoinRule that matches a Project on top of a Join with a RelNode
which is unique for Join's right keys.</div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab1"><a href="SemiJoinRule.JoinOnUniqueToSemiJoinRule.JoinOnUniqueToSemiJoinRuleConfig.html" title="interface in org.apache.calcite.rel.rules">SemiJoinRule.JoinOnUniqueToSemiJoinRule.JoinOnUniqueToSemiJoinRuleConfig</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab1">
<div class="block">Rule configuration.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="SemiJoinRule.JoinToSemiJoinRule.html" title="class in org.apache.calcite.rel.rules">SemiJoinRule.JoinToSemiJoinRule</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<div class="block">SemiJoinRule that matches a Join with an empty Aggregate as its right
input.</div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab1"><a href="SemiJoinRule.JoinToSemiJoinRule.JoinToSemiJoinRuleConfig.html" title="interface in org.apache.calcite.rel.rules">SemiJoinRule.JoinToSemiJoinRule.JoinToSemiJoinRuleConfig</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab1">
<div class="block">Rule configuration.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="SemiJoinRule.ProjectToSemiJoinRule.html" title="class in org.apache.calcite.rel.rules">SemiJoinRule.ProjectToSemiJoinRule</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<div class="block">SemiJoinRule that matches a Project on top of a Join with an Aggregate
as its right child.</div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab1"><a href="SemiJoinRule.ProjectToSemiJoinRule.ProjectToSemiJoinRuleConfig.html" title="interface in org.apache.calcite.rel.rules">SemiJoinRule.ProjectToSemiJoinRule.ProjectToSemiJoinRuleConfig</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab1">
<div class="block">Rule configuration.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="SortJoinCopyRule.html" title="class in org.apache.calcite.rel.rules">SortJoinCopyRule</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<div class="block">Planner rule that copies 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> without its limit and offset.</div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab1"><a href="SortJoinCopyRule.Config.html" title="interface in org.apache.calcite.rel.rules">SortJoinCopyRule.Config</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab1">
<div class="block">Rule configuration.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="SortJoinTransposeRule.html" title="class in org.apache.calcite.rel.rules">SortJoinTransposeRule</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<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>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab1"><a href="SortJoinTransposeRule.Config.html" title="interface in org.apache.calcite.rel.rules">SortJoinTransposeRule.Config</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab1">
<div class="block">Rule configuration.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="SortProjectTransposeRule.html" title="class in org.apache.calcite.rel.rules">SortProjectTransposeRule</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<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>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab1"><a href="SortProjectTransposeRule.Config.html" title="interface in org.apache.calcite.rel.rules">SortProjectTransposeRule.Config</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab1">
<div class="block">Rule configuration.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="SortRemoveConstantKeysRule.html" title="class in org.apache.calcite.rel.rules">SortRemoveConstantKeysRule</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<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>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab1"><a href="SortRemoveConstantKeysRule.Config.html" title="interface in org.apache.calcite.rel.rules">SortRemoveConstantKeysRule.Config</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab1">
<div class="block">Rule configuration.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="SortRemoveRule.html" title="class in org.apache.calcite.rel.rules">SortRemoveRule</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<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>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab1"><a href="SortRemoveRule.Config.html" title="interface in org.apache.calcite.rel.rules">SortRemoveRule.Config</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab1">
<div class="block">Rule configuration.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="SortUnionTransposeRule.html" title="class in org.apache.calcite.rel.rules">SortUnionTransposeRule</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<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>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab1"><a href="SortUnionTransposeRule.Config.html" title="interface in org.apache.calcite.rel.rules">SortUnionTransposeRule.Config</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab1">
<div class="block">Rule configuration.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="SpatialRules.html" title="class in org.apache.calcite.rel.rules">SpatialRules</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<div class="block">Collection of planner rules that convert
calls to spatial functions into more efficient expressions.</div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="SpatialRules.FilterHilbertRule.html" title="class in org.apache.calcite.rel.rules">SpatialRules.FilterHilbertRule</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab2">
<div class="block">Rule that converts ST_DWithin in a Filter condition into a predicate on
a Hilbert curve.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab1"><a href="SpatialRules.FilterHilbertRule.Config.html" title="interface in org.apache.calcite.rel.rules">SpatialRules.FilterHilbertRule.Config</a></div>
<div class="col-last even-row-color class-summary class-summary-tab1">
<div class="block">Rule configuration.</div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="SubQueryRemoveRule.html" title="class in org.apache.calcite.rel.rules">SubQueryRemoveRule</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab2">
<div class="block">Transform that converts IN, EXISTS and scalar sub-queries into joins.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab1"><a href="SubQueryRemoveRule.Config.html" title="interface in org.apache.calcite.rel.rules">SubQueryRemoveRule.Config</a></div>
<div class="col-last even-row-color class-summary class-summary-tab1">
<div class="block">Rule configuration.</div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab1"><a href="SubstitutionRule.html" title="interface in org.apache.calcite.rel.rules">SubstitutionRule</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab1">
<div class="block">A rule that implements this interface indicates that the new RelNode
is typically better than the old one.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="TableScanRule.html" title="class in org.apache.calcite.rel.rules">TableScanRule</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">Deprecated.
<div class="deprecation-comment"><code>org.apache.calcite.rel.core.RelFactories.TableScanFactoryImpl</code>
has called <a href="../../plan/RelOptTable.html#toRel(org.apache.calcite.plan.RelOptTable.ToRelContext)"><code>RelOptTable.toRel(RelOptTable.ToRelContext)</code></a>.</div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab1"><a href="TableScanRule.Config.html" title="interface in org.apache.calcite.rel.rules">TableScanRule.Config</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab1">
<div class="block">Rule configuration.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab1"><a href="TransformationRule.html" title="interface in org.apache.calcite.rel.rules">TransformationRule</a></div>
<div class="col-last even-row-color class-summary class-summary-tab1">
<div class="block">Logical transformation rule, only logical operator can be rule operand,
and only generate logical alternatives.</div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="UnionEliminatorRule.html" title="class in org.apache.calcite.rel.rules">UnionEliminatorRule</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab2">
<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>
</div>
<div class="col-first even-row-color class-summary class-summary-tab1"><a href="UnionEliminatorRule.Config.html" title="interface in org.apache.calcite.rel.rules">UnionEliminatorRule.Config</a></div>
<div class="col-last even-row-color class-summary class-summary-tab1">
<div class="block">Rule configuration.</div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="UnionMergeRule.html" title="class in org.apache.calcite.rel.rules">UnionMergeRule</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab2">
<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>
</div>
<div class="col-first even-row-color class-summary class-summary-tab1"><a href="UnionMergeRule.Config.html" title="interface in org.apache.calcite.rel.rules">UnionMergeRule.Config</a></div>
<div class="col-last even-row-color class-summary class-summary-tab1">
<div class="block">Rule configuration.</div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="UnionPullUpConstantsRule.html" title="class in org.apache.calcite.rel.rules">UnionPullUpConstantsRule</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab2">
<div class="block">Planner rule that pulls up constants through a Union operator.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab1"><a href="UnionPullUpConstantsRule.Config.html" title="interface in org.apache.calcite.rel.rules">UnionPullUpConstantsRule.Config</a></div>
<div class="col-last even-row-color class-summary class-summary-tab1">
<div class="block">Rule configuration.</div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="UnionToDistinctRule.html" title="class in org.apache.calcite.rel.rules">UnionToDistinctRule</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab2">
<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>
</div>
<div class="col-first even-row-color class-summary class-summary-tab1"><a href="UnionToDistinctRule.Config.html" title="interface in org.apache.calcite.rel.rules">UnionToDistinctRule.Config</a></div>
<div class="col-last even-row-color class-summary class-summary-tab1">
<div class="block">Rule configuration.</div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="ValuesReduceRule.html" title="class in org.apache.calcite.rel.rules">ValuesReduceRule</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab2">
<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>
</div>
<div class="col-first even-row-color class-summary class-summary-tab1"><a href="ValuesReduceRule.Config.html" title="interface in org.apache.calcite.rel.rules">ValuesReduceRule.Config</a></div>
<div class="col-last even-row-color class-summary class-summary-tab1">
<div class="block">Rule configuration.</div>
</div>
</div>
</div>
</div>
</li>
</ul>
</section>
</main>
<footer role="contentinfo">
<hr>
<p class="legal-copy"><small>Copyright &copy; 2012-2023 Apache Software Foundation. All Rights Reserved.</small></p>
</footer>
</div>
</div>
</body>
</html>