blob: 8c26de4c927ce830cbb8909130f9f174476b2e8c [file] [log] [blame]
<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc -->
<title>RelOptRulesTest (Calcite 1.20.0 Test API)</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../jquery/jquery-ui.css" title="Style">
<script type="text/javascript" src="../../../../script.js"></script>
<script type="text/javascript" src="../../../../jquery/jszip/dist/jszip.min.js"></script>
<script type="text/javascript" src="../../../../jquery/jszip-utils/dist/jszip-utils.min.js"></script>
<!--[if IE]>
<script type="text/javascript" src="../../../../jquery/jszip-utils/dist/jszip-utils-ie.min.js"></script>
<![endif]-->
<script type="text/javascript" src="../../../../jquery/jquery-3.3.1.js"></script>
<script type="text/javascript" src="../../../../jquery/jquery-migrate-3.0.1.js"></script>
<script type="text/javascript" src="../../../../jquery/jquery-ui.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="RelOptRulesTest (Calcite 1.20.0 Test API)";
}
}
catch(err) {
}
//-->
var data = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10,"i20":10,"i21":10,"i22":10,"i23":10,"i24":10,"i25":10,"i26":10,"i27":10,"i28":10,"i29":10,"i30":10,"i31":10,"i32":10,"i33":10,"i34":10,"i35":10,"i36":10,"i37":10,"i38":10,"i39":10,"i40":10,"i41":10,"i42":10,"i43":10,"i44":10,"i45":10,"i46":10,"i47":10,"i48":10,"i49":10,"i50":10,"i51":10,"i52":10,"i53":10,"i54":10,"i55":10,"i56":10,"i57":10,"i58":10,"i59":10,"i60":10,"i61":10,"i62":10,"i63":10,"i64":10,"i65":10,"i66":10,"i67":10,"i68":10,"i69":10,"i70":10,"i71":10,"i72":10,"i73":10,"i74":10,"i75":10,"i76":10,"i77":10,"i78":10,"i79":10,"i80":10,"i81":10,"i82":10,"i83":10,"i84":10,"i85":10,"i86":10,"i87":10,"i88":10,"i89":10,"i90":10,"i91":10,"i92":10,"i93":10,"i94":10,"i95":10,"i96":10,"i97":10,"i98":10,"i99":10,"i100":10,"i101":10,"i102":10,"i103":10,"i104":10,"i105":10,"i106":10,"i107":10,"i108":10,"i109":10,"i110":10,"i111":10,"i112":10,"i113":10,"i114":10,"i115":10,"i116":10,"i117":10,"i118":10,"i119":10,"i120":10,"i121":10,"i122":10,"i123":10,"i124":10,"i125":10,"i126":10,"i127":10,"i128":10,"i129":10,"i130":10,"i131":10,"i132":10,"i133":10,"i134":10,"i135":10,"i136":10,"i137":10,"i138":10,"i139":10,"i140":10,"i141":10,"i142":10,"i143":10,"i144":10,"i145":10,"i146":10,"i147":10,"i148":10,"i149":10,"i150":10,"i151":10,"i152":10,"i153":10,"i154":10,"i155":10,"i156":10,"i157":10,"i158":10,"i159":10,"i160":10,"i161":10,"i162":10,"i163":10,"i164":10,"i165":10,"i166":10,"i167":10,"i168":10,"i169":10,"i170":10,"i171":10,"i172":10,"i173":10,"i174":10,"i175":10,"i176":10,"i177":10,"i178":10,"i179":10,"i180":10,"i181":10,"i182":10,"i183":10,"i184":10,"i185":10,"i186":10,"i187":10,"i188":10,"i189":10,"i190":10,"i191":10,"i192":10,"i193":10,"i194":10,"i195":10,"i196":10,"i197":10,"i198":10,"i199":10,"i200":10,"i201":10,"i202":10,"i203":10,"i204":10,"i205":10,"i206":10,"i207":10,"i208":10,"i209":10,"i210":10,"i211":10,"i212":10,"i213":10,"i214":10,"i215":10,"i216":10,"i217":10,"i218":10,"i219":10,"i220":10,"i221":10,"i222":10,"i223":10,"i224":10,"i225":10,"i226":10,"i227":10,"i228":10,"i229":10,"i230":10,"i231":10,"i232":10,"i233":10,"i234":10,"i235":10,"i236":10,"i237":10,"i238":10,"i239":10,"i240":10,"i241":10,"i242":10,"i243":10,"i244":10,"i245":10,"i246":10,"i247":10,"i248":10,"i249":10,"i250":10,"i251":10,"i252":10,"i253":10,"i254":10,"i255":10,"i256":10,"i257":10,"i258":10,"i259":10,"i260":10,"i261":10,"i262":10,"i263":10,"i264":10,"i265":10,"i266":10,"i267":10,"i268":10,"i269":10,"i270":10,"i271":10,"i272":10,"i273":10,"i274":10,"i275":10,"i276":10,"i277":10,"i278":10,"i279":10,"i280":10,"i281":10,"i282":10,"i283":10,"i284":10,"i285":10,"i286":10,"i287":10,"i288":10,"i289":10,"i290":10,"i291":10,"i292":10,"i293":10,"i294":10,"i295":10,"i296":10,"i297":10,"i298":10,"i299":10,"i300":10,"i301":10,"i302":10,"i303":10,"i304":10,"i305":10,"i306":10,"i307":10,"i308":10,"i309":10,"i310":10,"i311":10,"i312":10,"i313":10,"i314":10,"i315":10,"i316":10,"i317":10,"i318":10,"i319":10,"i320":10,"i321":10,"i322":10,"i323":10,"i324":10,"i325":10,"i326":10,"i327":10,"i328":10,"i329":10,"i330":10,"i331":10,"i332":10,"i333":10,"i334":10,"i335":10,"i336":10,"i337":10,"i338":10,"i339":10,"i340":10,"i341":10,"i342":10,"i343":10,"i344":10,"i345":10,"i346":10,"i347":10,"i348":10,"i349":10,"i350":10,"i351":10,"i352":10,"i353":10,"i354":10,"i355":10,"i356":10,"i357":10,"i358":10,"i359":10,"i360":10,"i361":10,"i362":10,"i363":10,"i364":10,"i365":10,"i366":10,"i367":10,"i368":10,"i369":10,"i370":10,"i371":10,"i372":10,"i373":10,"i374":10,"i375":10,"i376":10,"i377":10,"i378":10,"i379":10,"i380":10,"i381":10,"i382":10,"i383":10,"i384":10,"i385":10,"i386":10,"i387":10,"i388":10,"i389":10,"i390":10,"i391":10,"i392":10,"i393":10,"i394":10,"i395":10,"i396":10,"i397":10,"i398":10,"i399":10,"i400":10,"i401":10,"i402":10,"i403":10,"i404":10,"i405":10,"i406":10};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
var pathtoroot = "../../../../";
var useModuleDirectories = true;
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<nav role="navigation">
<div class="fixedNav">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a id="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/RelOptRulesTest.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../index-all.html">Index</a></li>
<li><a href="../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<ul class="navListSearch">
<li><label for="search">SEARCH:</label>
<input type="text" id="search" value="search" disabled="disabled">
<input type="reset" id="reset" value="reset" disabled="disabled">
</li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a id="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
</div>
<div class="navPadding">&nbsp;</div>
<script type="text/javascript"><!--
$('.navPadding').css('padding-top', $('.fixedNav').css("height"));
//-->
</script>
</nav>
</header>
<!-- ======== START OF CLASS DATA ======== -->
<main role="main">
<div class="header">
<div class="subTitle"><span class="packageLabelInType">Package</span>&nbsp;<a href="package-summary.html">org.apache.calcite.test</a></div>
<h2 title="Class RelOptRulesTest" class="title">Class RelOptRulesTest</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li>java.lang.Object</li>
<li>
<ul class="inheritance">
<li><a href="SqlToRelTestBase.html" title="class in org.apache.calcite.test">org.apache.calcite.test.SqlToRelTestBase</a></li>
<li>
<ul class="inheritance">
<li><a href="RelOptTestBase.html" title="class in org.apache.calcite.test">org.apache.calcite.test.RelOptTestBase</a></li>
<li>
<ul class="inheritance">
<li>org.apache.calcite.test.RelOptRulesTest</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<hr>
<pre>public class <span class="typeNameLabel">RelOptRulesTest</span>
extends <a href="RelOptTestBase.html" title="class in org.apache.calcite.test">RelOptTestBase</a></pre>
<div class="block">Unit test for rules in <code>org.apache.calcite.rel</code> and subpackages.
<p>As input, the test supplies a SQL statement and a single rule; the SQL is
translated into relational algebra and then fed into a
<code>HepPlanner</code>. The planner fires the rule on
every
pattern match in a depth-first left-to-right pre-order traversal of the tree
for as long as the rule continues to succeed in applying its transform. (For
rules which call transformTo more than once, only the last result is used.)
The plan before and after "optimization" is diffed against a .ref file using
<a href="DiffRepository.html" title="class in org.apache.calcite.test"><code>DiffRepository</code></a>.
<p>Procedure for adding a new test case:
<ol>
<li>Add a new public test method for your rule, following the existing
examples. You'll have to come up with an SQL statement to which your rule
will apply in a meaningful way. See <a href="SqlToRelTestBase.html" title="class in org.apache.calcite.test"><code>SqlToRelTestBase</code></a> class comments
for details on the schema.
<li>Run the test. It should fail. Inspect the output in
<code>target/surefire/.../RelOptRulesTest.xml</code>.
(If you are running using maven and this file does not exist, add a
<code>-X</code> flag to the maven command line.)
<li>Verify that the "planBefore" is the correct
translation of your SQL, and that it contains the pattern on which your rule
is supposed to fire. If all is well, replace
<code>src/test/resources/.../RelOptRulesTest.xml</code> and
with the new <code>target/surefire/.../RelOptRulesTest.xml</code>.
<li>Run the test again. It should fail again, but this time it should contain
a "planAfter" entry for your rule. Verify that your rule applied its
transformation correctly, and then update the
<code>src/test/resources/.../RelOptRulesTest.xml</code> file again.
<li>Run the test one last time; this time it should pass.
</ol></div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ======== NESTED CLASS SUMMARY ======== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="nested.class.summary">
<!-- -->
</a>
<h3>Nested Class Summary</h3>
<table class="memberSummary">
<caption><span>Nested Classes</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Class</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>private static class&nbsp;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="RelOptRulesTest.MyFilter.html" title="class in org.apache.calcite.test">RelOptRulesTest.MyFilter</a></span></code></th>
<td class="colLast">
<div class="block">Custom implementation of <code>Filter</code> for use
in test case to verify that <code>FilterMultiJoinMergeRule</code>
can be created with any <code>Filter</code> and not limited to
<code>LogicalFilter</code></div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>private static class&nbsp;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="RelOptRulesTest.MyFilterRule.html" title="class in org.apache.calcite.test">RelOptRulesTest.MyFilterRule</a></span></code></th>
<td class="colLast">
<div class="block">Rule to transform <code>LogicalFilter</code> into
custom MyFilter</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>private static class&nbsp;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="RelOptRulesTest.MyProject.html" title="class in org.apache.calcite.test">RelOptRulesTest.MyProject</a></span></code></th>
<td class="colLast">
<div class="block">Custom implementation of <code>Project</code> for use
in test case to verify that <code>ProjectMultiJoinMergeRule</code>
can be created with any <code>Project</code> and not limited to
<code>LogicalProject</code></div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>private static class&nbsp;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="RelOptRulesTest.MyProjectRule.html" title="class in org.apache.calcite.test">RelOptRulesTest.MyProjectRule</a></span></code></th>
<td class="colLast">
<div class="block">Rule to transform <code>LogicalProject</code> into custom
MyProject</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a id="nested.classes.inherited.from.class.org.apache.calcite.test.RelOptTestBase">
<!-- -->
</a>
<h3>Nested classes/interfaces inherited from class&nbsp;org.apache.calcite.test.<a href="RelOptTestBase.html" title="class in org.apache.calcite.test">RelOptTestBase</a></h3>
<code><a href="RelOptTestBase.Sql.html" title="class in org.apache.calcite.test">RelOptTestBase.Sql</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a id="nested.classes.inherited.from.class.org.apache.calcite.test.SqlToRelTestBase">
<!-- -->
</a>
<h3>Nested classes/interfaces inherited from class&nbsp;org.apache.calcite.test.<a href="SqlToRelTestBase.html" title="class in org.apache.calcite.test">SqlToRelTestBase</a></h3>
<code><a href="SqlToRelTestBase.MockRelOptSchema.html" title="class in org.apache.calcite.test">SqlToRelTestBase.MockRelOptSchema</a>, <a href="SqlToRelTestBase.Tester.html" title="interface in org.apache.calcite.test">SqlToRelTestBase.Tester</a>, <a href="SqlToRelTestBase.TesterImpl.html" title="class in org.apache.calcite.test">SqlToRelTestBase.TesterImpl</a></code></li>
</ul>
</li>
</ul>
</section>
<!-- =========== FIELD SUMMARY =========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="field.summary">
<!-- -->
</a>
<h3>Field Summary</h3>
<table class="memberSummary">
<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Field</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>private static java.lang.String</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#NOT_STRONG_EXPR">NOT_STRONG_EXPR</a></span></code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>private org.apache.calcite.rel.rules.PushProjector.ExprCondition</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#skipItem">skipItem</a></span></code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>private static java.lang.String</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#STRONG_EXPR">STRONG_EXPR</a></span></code></th>
<td class="colLast">&nbsp;</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a id="fields.inherited.from.class.org.apache.calcite.test.SqlToRelTestBase">
<!-- -->
</a>
<h3>Fields inherited from class&nbsp;org.apache.calcite.test.<a href="SqlToRelTestBase.html" title="class in org.apache.calcite.test">SqlToRelTestBase</a></h3>
<code><a href="SqlToRelTestBase.html#NL">NL</a>, <a href="SqlToRelTestBase.html#tester">tester</a></code></li>
</ul>
</li>
</ul>
</section>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="constructor.summary">
<!-- -->
</a>
<h3>Constructor Summary</h3>
<table class="memberSummary">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Constructor</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr class="altColor">
<th class="colConstructorName" scope="row"><code><span class="memberNameLink"><a href="#%3Cinit%3E()">RelOptRulesTest</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
</table>
</li>
</ul>
</section>
<!-- ========== METHOD SUMMARY =========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Method</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>private void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#basePullConstantTroughAggregate()">basePullConstantTroughAggregate</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>private void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#basePushAggThroughUnion()">basePushAggThroughUnion</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>private void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#basePushFilterPastAggWithGroupingSets(boolean)">basePushFilterPastAggWithGroupingSets</a></span>&#8203;(boolean&nbsp;unchanged)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>private void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#checkPlanning(java.lang.String)">checkPlanning</a></span>&#8203;(java.lang.String&nbsp;query)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>private void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#checkReduceNullableToNotNull(org.apache.calcite.rel.rules.ReduceExpressionsRule)">checkReduceNullableToNotNull</a></span>&#8203;(org.apache.calcite.rel.rules.ReduceExpressionsRule&nbsp;rule)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code>private <a href="RelOptTestBase.Sql.html" title="class in org.apache.calcite.test">RelOptTestBase.Sql</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#checkSubQuery(java.lang.String)">checkSubQuery</a></span>&#8203;(java.lang.String&nbsp;sql)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code>protected <a href="DiffRepository.html" title="class in org.apache.calcite.test">DiffRepository</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getDiffRepos()">getDiffRepos</a></span>()</code></th>
<td class="colLast">
<div class="block">Returns the default diff repository for this test, or null if there is
no repository.</div>
</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testAddRedundantSemiJoinRule()">testAddRedundantSemiJoinRule</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testAggregateConstantKeyRule()">testAggregateConstantKeyRule</a></span>()</code></th>
<td class="colLast">
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-1023">[CALCITE-1023]
Planner rule that removes Aggregate keys that are constant</a>.</div>
</td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testAggregateConstantKeyRule2()">testAggregateConstantKeyRule2</a></span>()</code></th>
<td class="colLast">
<div class="block">Tests <code>AggregateProjectPullUpConstantsRule</code> where reduction is not
possible because "deptno" is the only key.</div>
</td>
</tr>
<tr id="i10" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testAggregateConstantKeyRule3()">testAggregateConstantKeyRule3</a></span>()</code></th>
<td class="colLast">
<div class="block">Tests <code>AggregateProjectPullUpConstantsRule</code> where both keys are
constants but only one can be removed.</div>
</td>
</tr>
<tr id="i11" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testAggregateExtractProjectRule()">testAggregateExtractProjectRule</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i12" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testAggregateExtractProjectRuleWithFilter()">testAggregateExtractProjectRuleWithFilter</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i13" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testAggregateExtractProjectRuleWithGroupingSets()">testAggregateExtractProjectRuleWithGroupingSets</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i14" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testAggregateExtractProjectRuleWithGroupingSets2()">testAggregateExtractProjectRuleWithGroupingSets2</a></span>()</code></th>
<td class="colLast">
<div class="block">Test with column used in both grouping set and argument to aggregate
function.</div>
</td>
</tr>
<tr id="i15" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testAggregateGroupingSetsProjectMerge()">testAggregateGroupingSetsProjectMerge</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i16" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testAggregateJoinRemove1()">testAggregateJoinRemove1</a></span>()</code></th>
<td class="colLast">
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-2712">[CALCITE-2712]
Should remove the left join since the aggregate has no call and
only uses column in the left input of the bottom join as group key.</a>.</div>
</td>
</tr>
<tr id="i17" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testAggregateJoinRemove10()">testAggregateJoinRemove10</a></span>()</code></th>
<td class="colLast">
<div class="block">Similar to <a href="#testAggregateJoinRemove1()"><code>testAggregateJoinRemove1()</code></a>;
Should not remove the bottom join since the aggregate uses column in the
right input of bottom join.</div>
</td>
</tr>
<tr id="i18" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testAggregateJoinRemove2()">testAggregateJoinRemove2</a></span>()</code></th>
<td class="colLast">
<div class="block">Similar to <a href="#testAggregateJoinRemove1()"><code>testAggregateJoinRemove1()</code></a> but has aggregate
call with distinct.</div>
</td>
</tr>
<tr id="i19" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testAggregateJoinRemove3()">testAggregateJoinRemove3</a></span>()</code></th>
<td class="colLast">
<div class="block">Similar to <a href="#testAggregateJoinRemove1()"><code>testAggregateJoinRemove1()</code></a> but should not
remove the left join since the aggregate uses column in the right
input of the bottom join.</div>
</td>
</tr>
<tr id="i20" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testAggregateJoinRemove4()">testAggregateJoinRemove4</a></span>()</code></th>
<td class="colLast">
<div class="block">Similar to <a href="#testAggregateJoinRemove1()"><code>testAggregateJoinRemove1()</code></a> but right join.</div>
</td>
</tr>
<tr id="i21" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testAggregateJoinRemove5()">testAggregateJoinRemove5</a></span>()</code></th>
<td class="colLast">
<div class="block">Similar to <a href="#testAggregateJoinRemove2()"><code>testAggregateJoinRemove2()</code></a> but right join.</div>
</td>
</tr>
<tr id="i22" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testAggregateJoinRemove6()">testAggregateJoinRemove6</a></span>()</code></th>
<td class="colLast">
<div class="block">Similar to <a href="#testAggregateJoinRemove3()"><code>testAggregateJoinRemove3()</code></a> but right join.</div>
</td>
</tr>
<tr id="i23" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testAggregateJoinRemove7()">testAggregateJoinRemove7</a></span>()</code></th>
<td class="colLast">
<div class="block">Similar to <a href="#testAggregateJoinRemove1()"><code>testAggregateJoinRemove1()</code></a>;
Should remove the bottom join since the aggregate has no aggregate
call.</div>
</td>
</tr>
<tr id="i24" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testAggregateJoinRemove8()">testAggregateJoinRemove8</a></span>()</code></th>
<td class="colLast">
<div class="block">Similar to <a href="#testAggregateJoinRemove7()"><code>testAggregateJoinRemove7()</code></a> but has aggregate
call.</div>
</td>
</tr>
<tr id="i25" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testAggregateJoinRemove9()">testAggregateJoinRemove9</a></span>()</code></th>
<td class="colLast">
<div class="block">Similar to <a href="#testAggregateJoinRemove7()"><code>testAggregateJoinRemove7()</code></a> but use columns in
the right input of the top join.</div>
</td>
</tr>
<tr id="i26" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testAggregateMerge1()">testAggregateMerge1</a></span>()</code></th>
<td class="colLast">
<div class="block">Test case for AggregateMergeRule, should merge 2 aggregates
into a single aggregate.</div>
</td>
</tr>
<tr id="i27" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testAggregateMerge2()">testAggregateMerge2</a></span>()</code></th>
<td class="colLast">
<div class="block">Test case for AggregateMergeRule, should merge 2 aggregates
into a single aggregate, top aggregate is not simple aggregate.</div>
</td>
</tr>
<tr id="i28" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testAggregateMerge3()">testAggregateMerge3</a></span>()</code></th>
<td class="colLast">
<div class="block">Test case for AggregateMergeRule, should not merge 2 aggregates
into a single aggregate, since lower aggregate is not simple aggregate.</div>
</td>
</tr>
<tr id="i29" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testAggregateMerge4()">testAggregateMerge4</a></span>()</code></th>
<td class="colLast">
<div class="block">Test case for AggregateMergeRule, should not merge 2 aggregates
into a single aggregate, since it contains distinct aggregate
function.</div>
</td>
</tr>
<tr id="i30" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testAggregateMerge5()">testAggregateMerge5</a></span>()</code></th>
<td class="colLast">
<div class="block">Test case for AggregateMergeRule, should not merge 2 aggregates
into a single aggregate, since AVG doesn't support splitting.</div>
</td>
</tr>
<tr id="i31" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testAggregateMerge6()">testAggregateMerge6</a></span>()</code></th>
<td class="colLast">
<div class="block">Test case for AggregateMergeRule, should not merge 2 aggregates
into a single aggregate, since top agg has no group key, and
lower agg function is COUNT.</div>
</td>
</tr>
<tr id="i32" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testAggregateMerge7()">testAggregateMerge7</a></span>()</code></th>
<td class="colLast">
<div class="block">Test case for AggregateMergeRule, should not merge 2 aggregates
into a single aggregate, since top agg contains empty grouping set,
and lower agg function is COUNT.</div>
</td>
</tr>
<tr id="i33" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testAggregateMerge8()">testAggregateMerge8</a></span>()</code></th>
<td class="colLast">
<div class="block">Test case for AggregateMergeRule, should merge 2 aggregates
into a single aggregate, since both top and bottom aggregates
contains empty grouping set and they are mergable.</div>
</td>
</tr>
<tr id="i34" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testAggregateProjectMerge()">testAggregateProjectMerge</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i35" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testAggregateProjectPullUpConstants()">testAggregateProjectPullUpConstants</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i36" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testAggregateProjectPullUpConstants2()">testAggregateProjectPullUpConstants2</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i37" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testAggregateRemove1()">testAggregateRemove1</a></span>()</code></th>
<td class="colLast">
<div class="block">Test case for AggregateRemoveRule, should remove aggregates since
empno is unique and all aggregate functions are splittable.</div>
</td>
</tr>
<tr id="i38" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testAggregateRemove2()">testAggregateRemove2</a></span>()</code></th>
<td class="colLast">
<div class="block">Test case for AggregateRemoveRule, should remove aggregates since
empno is unique and there are no aggregate functions.</div>
</td>
</tr>
<tr id="i39" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testAggregateRemove3()">testAggregateRemove3</a></span>()</code></th>
<td class="colLast">
<div class="block">Test case for AggregateRemoveRule, should remove aggregates since
empno is unique and all aggregate functions are splittable.</div>
</td>
</tr>
<tr id="i40" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testAggregateRemove4()">testAggregateRemove4</a></span>()</code></th>
<td class="colLast">
<div class="block">Negative test case for AggregateRemoveRule, should not
remove aggregate because avg is not splittable.</div>
</td>
</tr>
<tr id="i41" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testAggregateRemove5()">testAggregateRemove5</a></span>()</code></th>
<td class="colLast">
<div class="block">Negative test case for AggregateRemoveRule, should not
remove non-simple aggregates.</div>
</td>
</tr>
<tr id="i42" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testAggregateRemove6()">testAggregateRemove6</a></span>()</code></th>
<td class="colLast">
<div class="block">Negative test case for AggregateRemoveRule, should not
remove aggregate because deptno is not unique.</div>
</td>
</tr>
<tr id="i43" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testAll()">testAll</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i44" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testAlreadyFalseEliminatesFilter()">testAlreadyFalseEliminatesFilter</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i45" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testAnyInProjectNonNullable()">testAnyInProjectNonNullable</a></span>()</code></th>
<td class="colLast">
<div class="block">Test case for testing type created by SubQueryRemoveRule: an
ANY sub-query is non-nullable therefore plan should have cast.</div>
</td>
</tr>
<tr id="i46" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testAnyInProjectNullable()">testAnyInProjectNullable</a></span>()</code></th>
<td class="colLast">
<div class="block">Test case for testing type created by SubQueryRemoveRule; an
ANY sub-query is nullable therefore plan should not have cast.</div>
</td>
</tr>
<tr id="i47" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testCasePushIsAlwaysWorking()">testCasePushIsAlwaysWorking</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i48" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testCastInAggregateExpandDistinctAggregatesRule()">testCastInAggregateExpandDistinctAggregatesRule</a></span>()</code></th>
<td class="colLast">
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-1621">[CALCITE-1621]
Adding a cast around the null literal in aggregate rules</a>.</div>
</td>
</tr>
<tr id="i49" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testCastInAggregateReduceFunctions()">testCastInAggregateReduceFunctions</a></span>()</code></th>
<td class="colLast">
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-1621">[CALCITE-1621]
Adding a cast around the null literal in aggregate rules</a>.</div>
</td>
</tr>
<tr id="i50" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testConvertMultiJoinRule()">testConvertMultiJoinRule</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i51" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testConvertMultiJoinRuleOuterJoins()">testConvertMultiJoinRuleOuterJoins</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i52" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testConvertMultiJoinRuleOuterJoins2()">testConvertMultiJoinRuleOuterJoins2</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i53" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testConvertMultiJoinRuleOuterJoins3()">testConvertMultiJoinRuleOuterJoins3</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i54" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testConvertMultiJoinRuleOuterJoins4()">testConvertMultiJoinRuleOuterJoins4</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i55" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testCorrelationScalarAggAndFilter()">testCorrelationScalarAggAndFilter</a></span>()</code></th>
<td class="colLast">
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-2110">[CALCITE-2110]
ArrayIndexOutOfBoundsException in RexSimplify when using
ReduceExpressionsRule.JOIN_INSTANCE</a>.</div>
</td>
</tr>
<tr id="i56" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testCustomColumnResolvingInCorrelatedSubQuery()">testCustomColumnResolvingInCorrelatedSubQuery</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i57" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testCustomColumnResolvingInCorrelatedSubQuery2()">testCustomColumnResolvingInCorrelatedSubQuery2</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i58" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testCustomColumnResolvingInNonCorrelatedSubQuery()">testCustomColumnResolvingInNonCorrelatedSubQuery</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i59" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testDecorrelateAggWithConstantGroupKey()">testDecorrelateAggWithConstantGroupKey</a></span>()</code></th>
<td class="colLast">
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-2744">[CALCITE-2744]
RelDecorrelator use wrong output map for LogicalAggregate decorrelate</a>.</div>
</td>
</tr>
<tr id="i60" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testDecorrelateAggWithMultiParamsAggCall()">testDecorrelateAggWithMultiParamsAggCall</a></span>()</code></th>
<td class="colLast">
<div class="block">Test case for CALCITE-2744 for aggregate decorrelate with multi-param agg call
but without group key.</div>
</td>
</tr>
<tr id="i61" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testDecorrelateAggWithMultiParamsAggCall2()">testDecorrelateAggWithMultiParamsAggCall2</a></span>()</code></th>
<td class="colLast">
<div class="block">Same as <a href="#testDecorrelateAggWithMultiParamsAggCall()"><code>testDecorrelateAggWithMultiParamsAggCall()</code></a>
but with a constant group key.</div>
</td>
</tr>
<tr id="i62" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testDecorrelateExists()">testDecorrelateExists</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i63" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testDecorrelateTwoExists()">testDecorrelateTwoExists</a></span>()</code></th>
<td class="colLast">
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-1511">[CALCITE-1511]
AssertionError while decorrelating query with two EXISTS
sub-queries</a>.</div>
</td>
</tr>
<tr id="i64" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testDecorrelateTwoIn()">testDecorrelateTwoIn</a></span>()</code></th>
<td class="colLast">
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-1537">[CALCITE-1537]
Unnecessary project expression in multi-sub-query plan</a>.</div>
</td>
</tr>
<tr id="i65" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testDecorrelateTwoScalar()">testDecorrelateTwoScalar</a></span>()</code></th>
<td class="colLast">
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-1045">[CALCITE-1045]
Decorrelate sub-queries in Project and Join</a>, with the added
complication that there are two sub-queries.</div>
</td>
</tr>
<tr id="i66" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testDecorrelateUncorrelatedInAndCorrelatedExists()">testDecorrelateUncorrelatedInAndCorrelatedExists</a></span>()</code></th>
<td class="colLast">
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-2028">[CALCITE-2028]
Un-correlated IN sub-query should be converted into a Join,
rather than a Correlate without correlation variables </a>.</div>
</td>
</tr>
<tr id="i67" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testDistinctCount1()">testDistinctCount1</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i68" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testDistinctCount2()">testDistinctCount2</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i69" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testDistinctCount3()">testDistinctCount3</a></span>()</code></th>
<td class="colLast">
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-1293">[CALCITE-1293]
Bad code generated when argument to COUNT(DISTINCT) is a # GROUP BY
column</a>.</div>
</td>
</tr>
<tr id="i70" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testDistinctCountGroupingSets1()">testDistinctCountGroupingSets1</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i71" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testDistinctCountGroupingSets2()">testDistinctCountGroupingSets2</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i72" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testDistinctCountMixed()">testDistinctCountMixed</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i73" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testDistinctCountMixed2()">testDistinctCountMixed2</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i74" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testDistinctCountMixedJoin()">testDistinctCountMixedJoin</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i75" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testDistinctCountMultiple()">testDistinctCountMultiple</a></span>()</code></th>
<td class="colLast">
<div class="block">Tests implementing multiple distinct count the new way, using GROUPING
SETS.</div>
</td>
</tr>
<tr id="i76" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testDistinctCountMultipleNoGroup()">testDistinctCountMultipleNoGroup</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i77" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testDistinctCountMultipleViaJoin()">testDistinctCountMultipleViaJoin</a></span>()</code></th>
<td class="colLast">
<div class="block">Tests implementing multiple distinct count the old way, using a join.</div>
</td>
</tr>
<tr id="i78" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testDistinctCountWithoutGroupBy()">testDistinctCountWithoutGroupBy</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i79" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testDistinctNonDistinctAggregates()">testDistinctNonDistinctAggregates</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i80" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testDistinctNonDistinctAggregatesWithGrouping1()">testDistinctNonDistinctAggregatesWithGrouping1</a></span>()</code></th>
<td class="colLast">
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-1558">[CALCITE-1558]
AggregateExpandDistinctAggregatesRule gets field mapping wrong if groupKey
is used in aggregate function</a>.</div>
</td>
</tr>
<tr id="i81" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testDistinctNonDistinctAggregatesWithGrouping2()">testDistinctNonDistinctAggregatesWithGrouping2</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i82" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testDistinctNonDistinctTwoAggregatesWithGrouping()">testDistinctNonDistinctTwoAggregatesWithGrouping</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i83" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testDistinctWithGrouping()">testDistinctWithGrouping</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i84" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testDistinctWithMultipleInputs()">testDistinctWithMultipleInputs</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i85" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testDistinctWithMultipleInputsAndGroupby()">testDistinctWithMultipleInputsAndGroupby</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i86" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testDynamicStarWithUnion()">testDynamicStarWithUnion</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i87" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testEmptyAggregate()">testEmptyAggregate</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i88" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testEmptyAggregateEmptyKey()">testEmptyAggregateEmptyKey</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i89" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testEmptyAggregateEmptyKeyWithAggregateValuesRule()">testEmptyAggregateEmptyKeyWithAggregateValuesRule</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i90" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testEmptyFilterProjectUnion()">testEmptyFilterProjectUnion</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i91" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testEmptyIntersect()">testEmptyIntersect</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i92" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testEmptyJoin()">testEmptyJoin</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i93" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testEmptyJoinLeft()">testEmptyJoinLeft</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i94" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testEmptyJoinRight()">testEmptyJoinRight</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i95" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testEmptyMinus()">testEmptyMinus</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i96" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testEmptyMinus2()">testEmptyMinus2</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i97" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testEmptyProject()">testEmptyProject</a></span>()</code></th>
<td class="colLast">
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-1488">[CALCITE-1488]
ValuesReduceRule should ignore empty Values</a>.</div>
</td>
</tr>
<tr id="i98" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testEmptyProject2()">testEmptyProject2</a></span>()</code></th>
<td class="colLast">
<div class="block">Same query as <a href="#testEmptyProject()"><code>testEmptyProject()</code></a>, and <code>PruneEmptyRules</code>
is able to do the job that <code>ValuesReduceRule</code> cannot do.</div>
</td>
</tr>
<tr id="i99" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testEmptySort()">testEmptySort</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i100" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testEmptySortLimitZero()">testEmptySortLimitZero</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i101" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testExchangeRemoveConstantKeysRule()">testExchangeRemoveConstantKeysRule</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i102" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testExpandFilterExists()">testExpandFilterExists</a></span>()</code></th>
<td class="colLast">
<div class="block">An EXISTS filter that can be converted into true/false.</div>
</td>
</tr>
<tr id="i103" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testExpandFilterExistsSimple()">testExpandFilterExistsSimple</a></span>()</code></th>
<td class="colLast">
<div class="block">An EXISTS filter that can be converted into a semi-join.</div>
</td>
</tr>
<tr id="i104" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testExpandFilterExistsSimpleAnd()">testExpandFilterExistsSimpleAnd</a></span>()</code></th>
<td class="colLast">
<div class="block">An EXISTS filter that can be converted into a semi-join.</div>
</td>
</tr>
<tr id="i105" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testExpandFilterIn()">testExpandFilterIn</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i106" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testExpandFilterIn3Value()">testExpandFilterIn3Value</a></span>()</code></th>
<td class="colLast">
<div class="block">An IN filter that requires full 3-value logic (true, false, unknown).</div>
</td>
</tr>
<tr id="i107" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testExpandFilterInComposite()">testExpandFilterInComposite</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i108" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testExpandFilterScalar()">testExpandFilterScalar</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i109" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testExpandJoinExists()">testExpandJoinExists</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i110" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testExpandJoinIn()">testExpandJoinIn</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i111" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testExpandJoinInComposite()">testExpandJoinInComposite</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i112" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testExpandJoinScalar()">testExpandJoinScalar</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i113" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testExpandProjectExists()">testExpandProjectExists</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i114" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testExpandProjectIn()">testExpandProjectIn</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i115" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testExpandProjectInComposite()">testExpandProjectInComposite</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i116" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testExpandProjectInNullable()">testExpandProjectInNullable</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i117" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testExpandProjectScalar()">testExpandProjectScalar</a></span>()</code></th>
<td class="colLast">
<div class="block">Tests expanding a sub-query, specifically an uncorrelated scalar
sub-query in a project (SELECT clause).</div>
</td>
</tr>
<tr id="i118" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testExpandWhereComparisonCorrelated()">testExpandWhereComparisonCorrelated</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i119" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testExpressionInWindowFunction()">testExpressionInWindowFunction</a></span>()</code></th>
<td class="colLast">
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-841">[CALCITE-841]
Redundant windows when window function arguments are expressions</a>.</div>
</td>
</tr>
<tr id="i120" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testExtractJoinFilterRule()">testExtractJoinFilterRule</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i121" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testExtractYearMonthToRange()">testExtractYearMonthToRange</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i122" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testExtractYearToRange()">testExtractYearToRange</a></span>()</code></th>
<td class="colLast">
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-434">[CALCITE-434]
Converting predicates on date dimension columns into date ranges</a>,
specifically a rule that converts <code>EXTRACT(YEAR FROM ...) = constant</code>
to a range.</div>
</td>
</tr>
<tr id="i123" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testFilterAndProjectWithMultiJoin()">testFilterAndProjectWithMultiJoin</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i124" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testFilterProjectTranspose()">testFilterProjectTranspose</a></span>()</code></th>
<td class="colLast">
<div class="block">Tests a variant of <code>FilterProjectTransposeRule</code>
that pushes a Filter that contains a correlating variable.</div>
</td>
</tr>
<tr id="i125" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testFilterProjectTransposePreventedByCorrelation()">testFilterProjectTransposePreventedByCorrelation</a></span>()</code></th>
<td class="colLast">
<div class="block">Tests that the default instance of <code>FilterProjectTransposeRule</code>
does not push a Filter that contains a correlating variable.</div>
</td>
</tr>
<tr id="i126" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testFilterProjectTransposeRule()">testFilterProjectTransposeRule</a></span>()</code></th>
<td class="colLast">
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-2865">[CALCITE-2865]
FilterProjectTransposeRule generates wrong traitSet when copyFilter/Project is true</a>.</div>
</td>
</tr>
<tr id="i127" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testFilterRemoveIsNotDistinctFromRule()">testFilterRemoveIsNotDistinctFromRule</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i128" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testFullOuterJoinSimplificationToInner()">testFullOuterJoinSimplificationToInner</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i129" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testFullOuterJoinSimplificationToLeftOuter()">testFullOuterJoinSimplificationToLeftOuter</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i130" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testFullOuterJoinSimplificationToRightOuter()">testFullOuterJoinSimplificationToRightOuter</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i131" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testHeterogeneousConversion()">testHeterogeneousConversion</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i132" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testInferringPredicatesWithNotOperatorInJoinCondition()">testInferringPredicatesWithNotOperatorInJoinCondition</a></span>()</code></th>
<td class="colLast">
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-2275">[CALCITE-2275]
JoinPushTransitivePredicatesRule wrongly pushes down NOT condition</a>.</div>
</td>
</tr>
<tr id="i133" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testIntersectToDistinct()">testIntersectToDistinct</a></span>()</code></th>
<td class="colLast">
<div class="block">Tests <code>IntersectToDistinctRule</code>,
which rewrites an <code>Intersect</code> operator with 3 inputs.</div>
</td>
</tr>
<tr id="i134" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testIntersectToDistinctAll()">testIntersectToDistinctAll</a></span>()</code></th>
<td class="colLast">
<div class="block">Tests that <code>IntersectToDistinctRule</code>
correctly ignores an <code>INTERSECT ALL</code>.</div>
</td>
</tr>
<tr id="i135" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testIsNullPushDown()">testIsNullPushDown</a></span>()</code></th>
<td class="colLast">
<div class="block">Test case for DX-11490
Make sure the planner doesn't fail over wrong push down
of is null</div>
</td>
</tr>
<tr id="i136" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testIsNullPushDown2()">testIsNullPushDown2</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i137" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testJoinProjectTranspose1()">testJoinProjectTranspose1</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i138" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testJoinProjectTranspose2()">testJoinProjectTranspose2</a></span>()</code></th>
<td class="colLast">
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-1338">[CALCITE-1338]
JoinProjectTransposeRule should not pull a literal above the
null-generating side of a join</a>.</div>
</td>
</tr>
<tr id="i139" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testJoinProjectTranspose3()">testJoinProjectTranspose3</a></span>()</code></th>
<td class="colLast">
<div class="block">As <a href="#testJoinProjectTranspose2()"><code>testJoinProjectTranspose2()</code></a>;
should not transpose since the left project of right join has literal.</div>
</td>
</tr>
<tr id="i140" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testJoinProjectTranspose4()">testJoinProjectTranspose4</a></span>()</code></th>
<td class="colLast">
<div class="block">As <a href="#testJoinProjectTranspose2()"><code>testJoinProjectTranspose2()</code></a>;
should not transpose since the right project of left join has not-strong
expression <code>y is not null</code>.</div>
</td>
</tr>
<tr id="i141" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testJoinProjectTranspose5()">testJoinProjectTranspose5</a></span>()</code></th>
<td class="colLast">
<div class="block">As <a href="#testJoinProjectTranspose2()"><code>testJoinProjectTranspose2()</code></a>;
should not transpose since the right project of left join has not-strong
expression <code>1 + 1</code>.</div>
</td>
</tr>
<tr id="i142" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testJoinProjectTranspose6()">testJoinProjectTranspose6</a></span>()</code></th>
<td class="colLast">
<div class="block">As <a href="#testJoinProjectTranspose2()"><code>testJoinProjectTranspose2()</code></a>;
should not transpose since both the left project and right project have
literal.</div>
</td>
</tr>
<tr id="i143" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testJoinProjectTranspose7()">testJoinProjectTranspose7</a></span>()</code></th>
<td class="colLast">
<div class="block">As <a href="#testJoinProjectTranspose2()"><code>testJoinProjectTranspose2()</code></a>;
Should transpose since all expressions in the right project of left join
are strong.</div>
</td>
</tr>
<tr id="i144" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testJoinProjectTranspose8()">testJoinProjectTranspose8</a></span>()</code></th>
<td class="colLast">
<div class="block">As <a href="#testJoinProjectTranspose2()"><code>testJoinProjectTranspose2()</code></a>;
should transpose since all expressions including
<code>deptno &gt; 10 and cast(null as boolean)</code> in the right project of left
join are strong.</div>
</td>
</tr>
<tr id="i145" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testJoinPushTransitivePredicatesRule()">testJoinPushTransitivePredicatesRule</a></span>()</code></th>
<td class="colLast">
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-2200">[CALCITE-2200]
Infinite loop for JoinPushTransitivePredicatesRule</a>.</div>
</td>
</tr>
<tr id="i146" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testJoinPushTransitivePredicatesRule2()">testJoinPushTransitivePredicatesRule2</a></span>()</code></th>
<td class="colLast">
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-2205">[CALCITE-2205]
One more infinite loop for JoinPushTransitivePredicatesRule</a>.</div>
</td>
</tr>
<tr id="i147" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testLeftOuterJoinSimplificationToInner()">testLeftOuterJoinSimplificationToInner</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i148" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testManyFiltersOnTopOfMultiJoinShouldCollapse()">testManyFiltersOnTopOfMultiJoinShouldCollapse</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i149" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testMergeFilter()">testMergeFilter</a></span>()</code></th>
<td class="colLast">
<div class="block">Tests that filters are combined if they are identical.</div>
</td>
</tr>
<tr id="i150" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testMergeFilterWithJoinCondition()">testMergeFilterWithJoinCondition</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i151" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testMergeIntersect()">testMergeIntersect</a></span>()</code></th>
<td class="colLast">
<div class="block">Tests <code>UnionMergeRule.INTERSECT_INSTANCE</code>, which merges 2
<code>Intersect</code> operators into a single <code>Intersect</code> with 3
inputs.</div>
</td>
</tr>
<tr id="i152" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testMergeJoinFilter()">testMergeJoinFilter</a></span>()</code></th>
<td class="colLast">
<div class="block">Tests that a filters is combined are combined if they are identical,
even if one of them originates in an ON clause of a JOIN.</div>
</td>
</tr>
<tr id="i153" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testMergeMinus()">testMergeMinus</a></span>()</code></th>
<td class="colLast">
<div class="block">Tests <code>UnionMergeRule.MINUS_INSTANCE</code>, which merges 2
<code>Minus</code> operators into a single <code>Minus</code> with 3
inputs.</div>
</td>
</tr>
<tr id="i154" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testMergeMinusRightDeep()">testMergeMinusRightDeep</a></span>()</code></th>
<td class="colLast">
<div class="block">Tests <code>UnionMergeRule.MINUS_INSTANCE</code>
does not merge <code>Minus(a, Minus(b, c))</code>
into <code>Minus(a, b, c)</code>, which would be incorrect.</div>
</td>
</tr>
<tr id="i155" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testMergeSetOpMixed()">testMergeSetOpMixed</a></span>()</code></th>
<td class="colLast">
<div class="block">Tests that <code>UnionMergeRule</code> does nothing if its arguments have
are different set operators, <code>Union</code> and <code>Intersect</code>.</div>
</td>
</tr>
<tr id="i156" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testMergeUnionAll()">testMergeUnionAll</a></span>()</code></th>
<td class="colLast">
<div class="block">Tests <code>UnionMergeRule</code>, which merges 2 <code>Union</code> operators into
a single <code>Union</code> with 3 inputs.</div>
</td>
</tr>
<tr id="i157" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testMergeUnionDistinct()">testMergeUnionDistinct</a></span>()</code></th>
<td class="colLast">
<div class="block">Tests <code>UnionMergeRule</code>, which merges 2 <code>Union</code>
<code>DISTINCT</code> (not <code>ALL</code>) operators into a single
<code>Union</code> with 3 inputs.</div>
</td>
</tr>
<tr id="i158" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testMergeUnionMixed()">testMergeUnionMixed</a></span>()</code></th>
<td class="colLast">
<div class="block">Tests that <code>UnionMergeRule</code> does nothing if its arguments have
different <code>ALL</code> settings.</div>
</td>
</tr>
<tr id="i159" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testMergeUnionMixed2()">testMergeUnionMixed2</a></span>()</code></th>
<td class="colLast">
<div class="block">Tests that <code>UnionMergeRule</code> converts all inputs to DISTINCT
if the top one is DISTINCT.</div>
</td>
</tr>
<tr id="i160" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testMinusMergeRule()">testMinusMergeRule</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i161" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testMultipleDistinctWithGrouping()">testMultipleDistinctWithGrouping</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i162" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testNestedAggregates()">testNestedAggregates</a></span>()</code></th>
<td class="colLast">
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-750">[CALCITE-750]
Allow windowed aggregate on top of regular aggregate</a>.</div>
</td>
</tr>
<tr id="i163" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testNoOversimplificationBelowIsNull()">testNoOversimplificationBelowIsNull</a></span>()</code></th>
<td class="colLast">
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-2726">[CALCITE-2726]
ReduceExpressionRule may oversimplify filter conditions containing nulls</a>.</div>
</td>
</tr>
<tr id="i164" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testNoReduceAverage()">testNoReduceAverage</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i165" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testNoReduceSum()">testNoReduceSum</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i166" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testOrAlwaysTrue()">testOrAlwaysTrue</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i167" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testOrAlwaysTrue2()">testOrAlwaysTrue2</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i168" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testOversimplifiedCaseStatement()">testOversimplifiedCaseStatement</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i169" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testProjectCorrelateTranspose()">testProjectCorrelateTranspose</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i170" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testProjectCorrelateTransposeDynamic()">testProjectCorrelateTransposeDynamic</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i171" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testProjectCorrelateTransposeRuleAntiCorrelate()">testProjectCorrelateTransposeRuleAntiCorrelate</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i172" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testProjectCorrelateTransposeRuleLeftCorrelate()">testProjectCorrelateTransposeRuleLeftCorrelate</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i173" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testProjectCorrelateTransposeRuleSemiCorrelate()">testProjectCorrelateTransposeRuleSemiCorrelate</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i174" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testProjectCorrelateTransposeWithExprCond()">testProjectCorrelateTransposeWithExprCond</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i175" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testProjectCorrelateTransposeWithOver()">testProjectCorrelateTransposeWithOver</a></span>()</code></th>
<td class="colLast">
<div class="block">As <a href="#testProjectSetOpTranspose()"><code>testProjectSetOpTranspose()</code></a>;
should not push over past correlate but its operands can since correlate
will affect row count.</div>
</td>
</tr>
<tr id="i176" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testProjectJoinRemove1()">testProjectJoinRemove1</a></span>()</code></th>
<td class="colLast">
<div class="block">Similar to <a href="#testAggregateJoinRemove1()"><code>testAggregateJoinRemove1()</code></a>;
Should remove the bottom join since the project uses column in the
right input of bottom join.</div>
</td>
</tr>
<tr id="i177" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testProjectJoinRemove2()">testProjectJoinRemove2</a></span>()</code></th>
<td class="colLast">
<div class="block">Similar to <a href="#testAggregateJoinRemove1()"><code>testAggregateJoinRemove1()</code></a>;
Should not remove the bottom join since the project uses column in the
left input of bottom join.</div>
</td>
</tr>
<tr id="i178" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testProjectJoinRemove3()">testProjectJoinRemove3</a></span>()</code></th>
<td class="colLast">
<div class="block">Similar to <a href="#testAggregateJoinRemove1()"><code>testAggregateJoinRemove1()</code></a>;
Should not remove the bottom join since the right join keys of bottom
join are not unique.</div>
</td>
</tr>
<tr id="i179" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testProjectJoinRemove4()">testProjectJoinRemove4</a></span>()</code></th>
<td class="colLast">
<div class="block">Similar to <a href="#testAggregateJoinRemove1()"><code>testAggregateJoinRemove1()</code></a>;
Should remove the left join since the join key of the right input is
unique.</div>
</td>
</tr>
<tr id="i180" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testProjectJoinRemove5()">testProjectJoinRemove5</a></span>()</code></th>
<td class="colLast">
<div class="block">Similar to <a href="#testAggregateJoinRemove1()"><code>testAggregateJoinRemove1()</code></a>;
Should not remove the left join since the join key of the right input is
not unique.</div>
</td>
</tr>
<tr id="i181" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testProjectJoinRemove6()">testProjectJoinRemove6</a></span>()</code></th>
<td class="colLast">
<div class="block">Similar to <a href="#testAggregateJoinRemove1()"><code>testAggregateJoinRemove1()</code></a>;
Should not remove the left join since the project use columns in the right
input of the join.</div>
</td>
</tr>
<tr id="i182" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testProjectJoinRemove7()">testProjectJoinRemove7</a></span>()</code></th>
<td class="colLast">
<div class="block">Similar to <a href="#testAggregateJoinRemove1()"><code>testAggregateJoinRemove1()</code></a>;
Should remove the right join since the join key of the left input is
unique.</div>
</td>
</tr>
<tr id="i183" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testProjectJoinRemove8()">testProjectJoinRemove8</a></span>()</code></th>
<td class="colLast">
<div class="block">Similar to <a href="#testAggregateJoinRemove1()"><code>testAggregateJoinRemove1()</code></a>;
Should not remove the right join since the join key of the left input is
not unique.</div>
</td>
</tr>
<tr id="i184" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testProjectJoinRemove9()">testProjectJoinRemove9</a></span>()</code></th>
<td class="colLast">
<div class="block">Similar to <a href="#testAggregateJoinRemove1()"><code>testAggregateJoinRemove1()</code></a>;
Should not remove the right join since the project uses columns in the
left input of the join.</div>
</td>
</tr>
<tr id="i185" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testProjectSetOpTranspose()">testProjectSetOpTranspose</a></span>()</code></th>
<td class="colLast">
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-3004">[CALCITE-3004]
Should not push over past union but its operands can since setop
will affect row count</a>.</div>
</td>
</tr>
<tr id="i186" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testProjectToWindowRuleForMultipleWindows()">testProjectToWindowRuleForMultipleWindows</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i187" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testProjectWindowTransposeRule()">testProjectWindowTransposeRule</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i188" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testProjectWindowTransposeRuleWithConstants()">testProjectWindowTransposeRuleWithConstants</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i189" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testPullAggregateThroughUnion()">testPullAggregateThroughUnion</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i190" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testPullAggregateThroughUnion2()">testPullAggregateThroughUnion2</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i191" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testPullConstantIntoFilter()">testPullConstantIntoFilter</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i192" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testPullConstantIntoJoin()">testPullConstantIntoJoin</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i193" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testPullConstantIntoJoin2()">testPullConstantIntoJoin2</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i194" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testPullConstantIntoProject()">testPullConstantIntoProject</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i195" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testPullConstantThroughAggregateAllConst()">testPullConstantThroughAggregateAllConst</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i196" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testPullConstantThroughAggregateAllLiterals()">testPullConstantThroughAggregateAllLiterals</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i197" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testPullConstantThroughAggregateConstGroupBy()">testPullConstantThroughAggregateConstGroupBy</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i198" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testPullConstantThroughAggregatePermuted()">testPullConstantThroughAggregatePermuted</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i199" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testPullConstantThroughAggregatePermutedConstFirst()">testPullConstantThroughAggregatePermutedConstFirst</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i200" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testPullConstantThroughAggregatePermutedConstGroupBy()">testPullConstantThroughAggregatePermutedConstGroupBy</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i201" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testPullConstantThroughAggregateSimpleNonNullable()">testPullConstantThroughAggregateSimpleNonNullable</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i202" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testPullConstantThroughConstLast()">testPullConstantThroughConstLast</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i203" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testPullConstantThroughUnion()">testPullConstantThroughUnion</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i204" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testPullConstantThroughUnion2()">testPullConstantThroughUnion2</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i205" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testPullConstantThroughUnion3()">testPullConstantThroughUnion3</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i206" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testPullFilterThroughAggregate()">testPullFilterThroughAggregate</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i207" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testPullFilterThroughAggregateGroupingSets()">testPullFilterThroughAggregateGroupingSets</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i208" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testPullNull()">testPullNull</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i209" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testPushAggregateFunctionsThroughJoin()">testPushAggregateFunctionsThroughJoin</a></span>()</code></th>
<td class="colLast">
<div class="block">Push a variety of aggregate functions.</div>
</td>
</tr>
<tr id="i210" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testPushAggregateSumNoGroup()">testPushAggregateSumNoGroup</a></span>()</code></th>
<td class="colLast">
<div class="block">Push count(*) through join, no GROUP BY.</div>
</td>
</tr>
<tr id="i211" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testPushAggregateSumThroughJoin()">testPushAggregateSumThroughJoin</a></span>()</code></th>
<td class="colLast">
<div class="block">SUM is the easiest aggregate function to split.</div>
</td>
</tr>
<tr id="i212" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testPushAggregateSumThroughJoinAfterAggregateReduce()">testPushAggregateSumThroughJoinAfterAggregateReduce</a></span>()</code></th>
<td class="colLast">
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-2108">[CALCITE-2108]
AggregateJoinTransposeRule incorrectly splits a SUM0 call when Aggregate
has no group keys</a>.</div>
</td>
</tr>
<tr id="i213" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testPushAggregateSumWithoutGroupKeyThroughJoin()">testPushAggregateSumWithoutGroupKeyThroughJoin</a></span>()</code></th>
<td class="colLast">
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-2105">[CALCITE-2105]
AggregateJoinTransposeRule incorrectly makes a SUM NOT NULL when Aggregate
has no group keys</a>.</div>
</td>
</tr>
<tr id="i214" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testPushAggregateThroughJoin1()">testPushAggregateThroughJoin1</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i215" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testPushAggregateThroughJoin2()">testPushAggregateThroughJoin2</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i216" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testPushAggregateThroughJoin3()">testPushAggregateThroughJoin3</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i217" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testPushAggregateThroughJoin4()">testPushAggregateThroughJoin4</a></span>()</code></th>
<td class="colLast">
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-1544">[CALCITE-1544]
AggregateJoinTransposeRule fails to preserve row type</a>.</div>
</td>
</tr>
<tr id="i218" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testPushAggregateThroughJoin5()">testPushAggregateThroughJoin5</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i219" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testPushAggregateThroughJoin6()">testPushAggregateThroughJoin6</a></span>()</code></th>
<td class="colLast">
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-2195">[CALCITE-2195]
AggregateJoinTransposeRule fails to aggregate over unique column</a>.</div>
</td>
</tr>
<tr id="i220" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testPushAggregateThroughJoinDistinct()">testPushAggregateThroughJoinDistinct</a></span>()</code></th>
<td class="colLast">
<div class="block">Push a aggregate functions into a relation that is unique on the join
key.</div>
</td>
</tr>
<tr id="i221" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testPushAggregateThroughJoinOnEmptyLogicalValues()">testPushAggregateThroughJoinOnEmptyLogicalValues</a></span>()</code></th>
<td class="colLast">
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-3076">[CALCITE-3076]
AggregateJoinTransposeRule throws error for unique under aggregate keys when
generating merged calls</a>.</div>
</td>
</tr>
<tr id="i222" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testPushAggregateThroughJoinWithUniqueInput()">testPushAggregateThroughJoinWithUniqueInput</a></span>()</code></th>
<td class="colLast">
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-2278">[CALCITE-2278]
AggregateJoinTransposeRule fails to split aggregate call if input contains
an aggregate call and has distinct rows</a>.</div>
</td>
</tr>
<tr id="i223" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testPushAggregateThroughOuterJoin1()">testPushAggregateThroughOuterJoin1</a></span>()</code></th>
<td class="colLast">
<div class="block">Test case for
outer join, group by on non-join keys, group by on non-null generating side only</div>
</td>
</tr>
<tr id="i224" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testPushAggregateThroughOuterJoin10()">testPushAggregateThroughOuterJoin10</a></span>()</code></th>
<td class="colLast">
<div class="block">Test case for
outer join, with aggregate functions</div>
</td>
</tr>
<tr id="i225" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testPushAggregateThroughOuterJoin11()">testPushAggregateThroughOuterJoin11</a></span>()</code></th>
<td class="colLast">
<div class="block">Test case for
non-equi outer join</div>
</td>
</tr>
<tr id="i226" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testPushAggregateThroughOuterJoin12()">testPushAggregateThroughOuterJoin12</a></span>()</code></th>
<td class="colLast">
<div class="block">Test case for
right outer join, group by on key same as join key, group by on (left)null generating side</div>
</td>
</tr>
<tr id="i227" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testPushAggregateThroughOuterJoin13()">testPushAggregateThroughOuterJoin13</a></span>()</code></th>
<td class="colLast">
<div class="block">Test case for
full outer join, group by on key same as join key, group by on one side</div>
</td>
</tr>
<tr id="i228" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testPushAggregateThroughOuterJoin14()">testPushAggregateThroughOuterJoin14</a></span>()</code></th>
<td class="colLast">
<div class="block">Test case for
full outer join, group by on key same as join key, group by on both side</div>
</td>
</tr>
<tr id="i229" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testPushAggregateThroughOuterJoin15()">testPushAggregateThroughOuterJoin15</a></span>()</code></th>
<td class="colLast">
<div class="block">Test case for
full outer join, group by on both side on non-join keys</div>
</td>
</tr>
<tr id="i230" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testPushAggregateThroughOuterJoin16()">testPushAggregateThroughOuterJoin16</a></span>()</code></th>
<td class="colLast">
<div class="block">Test case for
full outer join, group by key is susbset of join keys</div>
</td>
</tr>
<tr id="i231" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testPushAggregateThroughOuterJoin2()">testPushAggregateThroughOuterJoin2</a></span>()</code></th>
<td class="colLast">
<div class="block">Test case for
outer join, group by on non-join keys, on null generating side only</div>
</td>
</tr>
<tr id="i232" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testPushAggregateThroughOuterJoin3()">testPushAggregateThroughOuterJoin3</a></span>()</code></th>
<td class="colLast">
<div class="block">Test case for
outer join, group by on both side on non-join keys</div>
</td>
</tr>
<tr id="i233" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testPushAggregateThroughOuterJoin4()">testPushAggregateThroughOuterJoin4</a></span>()</code></th>
<td class="colLast">
<div class="block">Test case for
outer join, group by on key same as join key, group by on non-null generating side</div>
</td>
</tr>
<tr id="i234" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testPushAggregateThroughOuterJoin5()">testPushAggregateThroughOuterJoin5</a></span>()</code></th>
<td class="colLast">
<div class="block">Test case for
outer join, group by on key same as join key, group by on null generating side</div>
</td>
</tr>
<tr id="i235" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testPushAggregateThroughOuterJoin6()">testPushAggregateThroughOuterJoin6</a></span>()</code></th>
<td class="colLast">
<div class="block">Test case for
outer join, group by on key same as join key, group by on both side</div>
</td>
</tr>
<tr id="i236" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testPushAggregateThroughOuterJoin7()">testPushAggregateThroughOuterJoin7</a></span>()</code></th>
<td class="colLast">
<div class="block">Test case for
outer join, group by key is susbset of join keys, group by on non-null generating side</div>
</td>
</tr>
<tr id="i237" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testPushAggregateThroughOuterJoin8()">testPushAggregateThroughOuterJoin8</a></span>()</code></th>
<td class="colLast">
<div class="block">Test case for
outer join, group by key is susbset of join keys, group by on null generating side</div>
</td>
</tr>
<tr id="i238" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testPushAggregateThroughOuterJoin9()">testPushAggregateThroughOuterJoin9</a></span>()</code></th>
<td class="colLast">
<div class="block">Test case for
outer join, group by key is susbset of join keys, group by on both sides</div>
</td>
</tr>
<tr id="i239" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testPushAvgGroupingSetsThroughUnion()">testPushAvgGroupingSetsThroughUnion</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i240" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testPushAvgThroughUnion()">testPushAvgThroughUnion</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i241" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testPushCountFilterThroughUnion()">testPushCountFilterThroughUnion</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i242" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testPushCountNullableGroupingSetsThroughUnion()">testPushCountNullableGroupingSetsThroughUnion</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i243" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testPushCountNullableThroughUnion()">testPushCountNullableThroughUnion</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i244" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testPushCountStarGroupingSetsThroughUnion()">testPushCountStarGroupingSetsThroughUnion</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i245" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testPushCountStarThroughUnion()">testPushCountStarThroughUnion</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i246" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testPushDistinctAggregateIntoJoin()">testPushDistinctAggregateIntoJoin</a></span>()</code></th>
<td class="colLast">
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-2249">[CALCITE-2249]
AggregateJoinTransposeRule generates inequivalent nodes if Aggregate relNode contains
distinct aggregate function.</a>.</div>
</td>
</tr>
<tr id="i247" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testPushFilterPastAgg()">testPushFilterPastAgg</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i248" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testPushFilterPastAggFour()">testPushFilterPastAggFour</a></span>()</code></th>
<td class="colLast">
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-1109">[CALCITE-1109]
FilterAggregateTransposeRule pushes down incorrect condition</a>.</div>
</td>
</tr>
<tr id="i249" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testPushFilterPastAggThree()">testPushFilterPastAggThree</a></span>()</code></th>
<td class="colLast">
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-799">[CALCITE-799]
Incorrect result for <code>HAVING count(*) &gt; 1</code></a>.</div>
</td>
</tr>
<tr id="i250" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testPushFilterPastAggTwo()">testPushFilterPastAggTwo</a></span>()</code></th>
<td class="colLast">
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-434">[CALCITE-434]
FilterAggregateTransposeRule loses conditions that cannot be pushed</a>.</div>
</td>
</tr>
<tr id="i251" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testPushFilterPastAggWithGroupingSets1()">testPushFilterPastAggWithGroupingSets1</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i252" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testPushFilterPastAggWithGroupingSets2()">testPushFilterPastAggWithGroupingSets2</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i253" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testPushFilterPastProject()">testPushFilterPastProject</a></span>()</code></th>
<td class="colLast">
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-448">[CALCITE-448]
FilterIntoJoinRule creates filters containing invalid RexInputRef</a>.</div>
</td>
</tr>
<tr id="i254" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testPushFilterThroughSemiJoin()">testPushFilterThroughSemiJoin</a></span>()</code></th>
<td class="colLast">
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-438">[CALCITE-438]
Push predicates through SemiJoin</a>.</div>
</td>
</tr>
<tr id="i255" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testPushFilterWithRank()">testPushFilterWithRank</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i256" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testPushFilterWithRankExpr()">testPushFilterWithRankExpr</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i257" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testPushJoinCondDownToProject()">testPushJoinCondDownToProject</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i258" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testPushJoinThroughUnionOnLeft()">testPushJoinThroughUnionOnLeft</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i259" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testPushJoinThroughUnionOnRight()">testPushJoinThroughUnionOnRight</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i260" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testPushMaxNullableGroupingSetsThroughUnion()">testPushMaxNullableGroupingSetsThroughUnion</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i261" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testPushMaxNullableThroughUnion()">testPushMaxNullableThroughUnion</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i262" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testPushMinGroupingSetsThroughUnion()">testPushMinGroupingSetsThroughUnion</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i263" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testPushMinThroughUnion()">testPushMinThroughUnion</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i264" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testPushProjectPastFilter()">testPushProjectPastFilter</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i265" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testPushProjectPastFilter2()">testPushProjectPastFilter2</a></span>()</code></th>
<td class="colLast">
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-1778">[CALCITE-1778]
Query with "WHERE CASE" throws AssertionError "Cast for just nullability
not allowed"</a>.</div>
</td>
</tr>
<tr id="i266" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testPushProjectPastFullJoin()">testPushProjectPastFullJoin</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i267" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testPushProjectPastFullJoinStrong()">testPushProjectPastFullJoinStrong</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i268" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testPushProjectPastInnerJoin()">testPushProjectPastInnerJoin</a></span>()</code></th>
<td class="colLast">
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-1753">[CALCITE-1753]
PushProjector should only preserve expressions if the expression is strong
when pushing into the nullable-side of outer join</a>.</div>
</td>
</tr>
<tr id="i269" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testPushProjectPastInnerJoinStrong()">testPushProjectPastInnerJoinStrong</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i270" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testPushProjectPastJoin()">testPushProjectPastJoin</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i271" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testPushProjectPastLeftJoin()">testPushProjectPastLeftJoin</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i272" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testPushProjectPastLeftJoinSwap()">testPushProjectPastLeftJoinSwap</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i273" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testPushProjectPastLeftJoinSwapStrong()">testPushProjectPastLeftJoinSwapStrong</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i274" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testPushProjectPastRightJoin()">testPushProjectPastRightJoin</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i275" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testPushProjectPastRightJoinStrong()">testPushProjectPastRightJoinStrong</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i276" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testPushProjectPastRightJoinSwap()">testPushProjectPastRightJoinSwap</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i277" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testPushProjectPastRightJoinSwapStrong()">testPushProjectPastRightJoinSwapStrong</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i278" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testPushProjectPastSetOp()">testPushProjectPastSetOp</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i279" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testPushProjectWithIsNotDistinctFromPastJoin()">testPushProjectWithIsNotDistinctFromPastJoin</a></span>()</code></th>
<td class="colLast">
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-2803">[CALCITE-2803]
Identify expanded IS NOT DISTINCT FROM expression when pushing project past join</a>.</div>
</td>
</tr>
<tr id="i280" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testPushProjectWithOverPastJoin1()">testPushProjectWithOverPastJoin1</a></span>()</code></th>
<td class="colLast">
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-2343">[CALCITE-2343]
Should not push over whose columns are all from left child past join since
join will affect row count.</a>.</div>
</td>
</tr>
<tr id="i281" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testPushProjectWithOverPastJoin2()">testPushProjectWithOverPastJoin2</a></span>()</code></th>
<td class="colLast">
<div class="block">As <a href="#testPushProjectWithOverPastJoin1()"><code>testPushProjectWithOverPastJoin1()</code></a>;
should not push over whose columns are all from right child past join since
join will affect row count.</div>
</td>
</tr>
<tr id="i282" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testPushProjectWithOverPastJoin3()">testPushProjectWithOverPastJoin3</a></span>()</code></th>
<td class="colLast">
<div class="block">As <a href="#testPushProjectWithOverPastJoin2()"><code>testPushProjectWithOverPastJoin2()</code></a>;
should not push over past join but should push the operands of over past
join.</div>
</td>
</tr>
<tr id="i283" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testPushSemiJoinPastFilter()">testPushSemiJoinPastFilter</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i284" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testPushSemiJoinPastJoinRuleLeft()">testPushSemiJoinPastJoinRuleLeft</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i285" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testPushSemiJoinPastJoinRuleRight()">testPushSemiJoinPastJoinRuleRight</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i286" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testPushSemiJoinPastProject()">testPushSemiJoinPastProject</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i287" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testPushSumConstantGroupingSetsThroughUnion()">testPushSumConstantGroupingSetsThroughUnion</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i288" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testPushSumConstantThroughUnion()">testPushSumConstantThroughUnion</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i289" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testPushSumCountStarGroupingSetsThroughUnion()">testPushSumCountStarGroupingSetsThroughUnion</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i290" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testPushSumCountStarThroughUnion()">testPushSumCountStarThroughUnion</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i291" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testPushSumNullableGroupingSetsThroughUnion()">testPushSumNullableGroupingSetsThroughUnion</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i292" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testPushSumNullableNOGBYThroughUnion()">testPushSumNullableNOGBYThroughUnion</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i293" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testPushSumNullableThroughUnion()">testPushSumNullableThroughUnion</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i294" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testPushSumNullConstantGroupingSetsThroughUnion()">testPushSumNullConstantGroupingSetsThroughUnion</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i295" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testPushSumNullConstantThroughUnion()">testPushSumNullConstantThroughUnion</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i296" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testReduceAllAggregateFunctions()">testReduceAllAggregateFunctions</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i297" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testReduceAverage()">testReduceAverage</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i298" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testReduceAverageAndSumWithNoReduceStddevAndVar()">testReduceAverageAndSumWithNoReduceStddevAndVar</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i299" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testReduceAverageAndVarWithNoReduceStddev()">testReduceAverageAndVarWithNoReduceStddev</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i300" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testReduceAverageWithNoReduceSum()">testReduceAverageWithNoReduceSum</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i301" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testReduceCase()">testReduceCase</a></span>()</code></th>
<td class="colLast">
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-1439">[CALCITE-1439]
Handling errors during constant reduction</a>.</div>
</td>
</tr>
<tr id="i302" class="altColor">
<td class="colFirst"><code>&lt;T&gt;&nbsp;void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testReduceCaseNullabilityChange()">testReduceCaseNullabilityChange</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i303" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testReduceCastAndConsts()">testReduceCastAndConsts</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i304" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testReduceCasts()">testReduceCasts</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i305" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testReduceCastsNullable()">testReduceCastsNullable</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i306" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testReduceCastTimeUnchanged()">testReduceCastTimeUnchanged</a></span>()</code></th>
<td class="colLast">
<div class="block">Tests that a cast from a TIME to a TIMESTAMP is not reduced.</div>
</td>
</tr>
<tr id="i307" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testReduceCompositeInSubQuery()">testReduceCompositeInSubQuery</a></span>()</code></th>
<td class="colLast">
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-1479">[CALCITE-1479]
AssertionError in ReduceExpressionsRule on multi-column IN
sub-query</a>.</div>
</td>
</tr>
<tr id="i308" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testReduceConstants()">testReduceConstants</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i309" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testReduceConstants2()">testReduceConstants2</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i310" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testReduceConstants3()">testReduceConstants3</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i311" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testReduceConstantsCalc()">testReduceConstantsCalc</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i312" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testReduceConstantsCaseEquals()">testReduceConstantsCaseEquals</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i313" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testReduceConstantsCaseEquals2()">testReduceConstantsCaseEquals2</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i314" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testReduceConstantsCaseEquals3()">testReduceConstantsCaseEquals3</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i315" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testReduceConstantsDup()">testReduceConstantsDup</a></span>()</code></th>
<td class="colLast">
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-570">[CALCITE-570]
ReduceExpressionsRule throws "duplicate key" exception</a>.</div>
</td>
</tr>
<tr id="i316" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testReduceConstantsDup2()">testReduceConstantsDup2</a></span>()</code></th>
<td class="colLast">
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-935">[CALCITE-935]
Improve how ReduceExpressionsRule handles duplicate constraints</a>.</div>
</td>
</tr>
<tr id="i317" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testReduceConstantsDynamicFunction()">testReduceConstantsDynamicFunction</a></span>()</code></th>
<td class="colLast">
<div class="block">Checks that constant reducer duplicates calls to dynamic functions, if
appropriate.</div>
</td>
</tr>
<tr id="i318" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testReduceConstantsEliminatesFilter()">testReduceConstantsEliminatesFilter</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i319" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testReduceConstantsIsNotNull()">testReduceConstantsIsNotNull</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i320" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testReduceConstantsIsNull()">testReduceConstantsIsNull</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i321" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testReduceConstantsNegated()">testReduceConstantsNegated</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i322" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testReduceConstantsNegatedInverted()">testReduceConstantsNegatedInverted</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i323" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testReduceConstantsNonDeterministicFunction()">testReduceConstantsNonDeterministicFunction</a></span>()</code></th>
<td class="colLast">
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-2638">[CALCITE-2638]
Constant reducer must not duplicate calls to non-deterministic
functions</a>.</div>
</td>
</tr>
<tr id="i324" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testReduceConstantsNull()">testReduceConstantsNull</a></span>()</code></th>
<td class="colLast">
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-1860">[CALCITE-1860]
Duplicate null predicates cause NullPointerException in RexUtil</a>.</div>
</td>
</tr>
<tr id="i325" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testReduceConstantsNullEqualsOne()">testReduceConstantsNullEqualsOne</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i326" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testReduceConstantsProjectNullable()">testReduceConstantsProjectNullable</a></span>()</code></th>
<td class="colLast">
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-902">[CALCITE-902]
Match nullability when reducing expressions in a Project</a>.</div>
</td>
</tr>
<tr id="i327" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testReduceConstantsRequiresExecutor()">testReduceConstantsRequiresExecutor</a></span>()</code></th>
<td class="colLast">
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-566">[CALCITE-566]
ReduceExpressionsRule requires planner to have an Executor</a>.</div>
</td>
</tr>
<tr id="i328" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testReduceConstantsWindow()">testReduceConstantsWindow</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i329" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testReduceExpressionsNot()">testReduceExpressionsNot</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i330" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testReduceNestedCaseWhen()">testReduceNestedCaseWhen</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i331" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testReduceNot()">testReduceNot</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i332" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testReduceNullableCase()">testReduceNullableCase</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i333" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testReduceNullableCase2()">testReduceNullableCase2</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i334" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testReduceNullableToNotNull()">testReduceNullableToNotNull</a></span>()</code></th>
<td class="colLast">
<div class="block">Test case that reduces a nullable expression to a NOT NULL literal that
is cast to nullable.</div>
</td>
</tr>
<tr id="i335" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testReduceNullableToNotNull2()">testReduceNullableToNotNull2</a></span>()</code></th>
<td class="colLast">
<div class="block">Test case that reduces a nullable expression to a NOT NULL literal.</div>
</td>
</tr>
<tr id="i336" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testReduceOrCaseWhen()">testReduceOrCaseWhen</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i337" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testReduceValuesNull()">testReduceValuesNull</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i338" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testReduceValuesToEmpty()">testReduceValuesToEmpty</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i339" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testReduceValuesUnderFilter()">testReduceValuesUnderFilter</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i340" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testReduceValuesUnderProject()">testReduceValuesUnderProject</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i341" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testReduceValuesUnderProjectFilter()">testReduceValuesUnderProjectFilter</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i342" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testRemoveSemiJoin()">testRemoveSemiJoin</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i343" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testRemoveSemiJoinRight()">testRemoveSemiJoinRight</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i344" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testRemoveSemiJoinRightWithFilter()">testRemoveSemiJoinRightWithFilter</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i345" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testRemoveSemiJoinWithFilter()">testRemoveSemiJoinWithFilter</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i346" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testRightOuterJoinSimplificationToInner()">testRightOuterJoinSimplificationToInner</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i347" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testSelectNotInCorrelated()">testSelectNotInCorrelated</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i348" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testSemiJoinReduceConstants()">testSemiJoinReduceConstants</a></span>()</code></th>
<td class="colLast">
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-571">[CALCITE-571]
ReduceExpressionsRule tries to reduce SemiJoin condition to non-equi
condition</a>.</div>
</td>
</tr>
<tr id="i349" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testSemiJoinRule()">testSemiJoinRule</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i350" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testSemiJoinRuleExists()">testSemiJoinRuleExists</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i351" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testSemiJoinRuleFull()">testSemiJoinRuleFull</a></span>()</code></th>
<td class="colLast">
<div class="block">Similar to <a href="#testSemiJoinRuleRight()"><code>testSemiJoinRuleRight()</code></a> but FULL.</div>
</td>
</tr>
<tr id="i352" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testSemiJoinRuleLeft()">testSemiJoinRuleLeft</a></span>()</code></th>
<td class="colLast">
<div class="block">Similar to <a href="#testSemiJoinRule()"><code>testSemiJoinRule()</code></a> but LEFT.</div>
</td>
</tr>
<tr id="i353" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testSemiJoinRuleRight()">testSemiJoinRuleRight</a></span>()</code></th>
<td class="colLast">
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-1495">[CALCITE-1495]
SemiJoinRule should not apply to RIGHT and FULL JOIN</a>.</div>
</td>
</tr>
<tr id="i354" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testSemiJoinTrim()">testSemiJoinTrim</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i355" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testSimplifyFilter()">testSimplifyFilter</a></span>()</code></th>
<td class="colLast">
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-1995">[CALCITE-1995]
Remove predicates from Filter if they can be proved to be always true or
false</a>.</div>
</td>
</tr>
<tr id="i356" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testSkipReduceConstantsCaseEquals()">testSkipReduceConstantsCaseEquals</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i357" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testSome()">testSome</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i358" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testSomeWithEquality()">testSomeWithEquality</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i359" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testSomeWithEquality2()">testSomeWithEquality2</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i360" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testSortJoinTranspose1()">testSortJoinTranspose1</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i361" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testSortJoinTranspose2()">testSortJoinTranspose2</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i362" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testSortJoinTranspose3()">testSortJoinTranspose3</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i363" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testSortJoinTranspose4()">testSortJoinTranspose4</a></span>()</code></th>
<td class="colLast">
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-931">[CALCITE-931]
Wrong collation trait in SortJoinTransposeRule for right joins</a>.</div>
</td>
</tr>
<tr id="i364" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testSortJoinTranspose5()">testSortJoinTranspose5</a></span>()</code></th>
<td class="colLast">
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-1498">[CALCITE-1498]
Avoid LIMIT with trivial ORDER BY being pushed through JOIN endlessly</a>.</div>
</td>
</tr>
<tr id="i365" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testSortJoinTranspose6()">testSortJoinTranspose6</a></span>()</code></th>
<td class="colLast">
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-1507">[CALCITE-1507]
OFFSET cannot be pushed through a JOIN if the non-preserved side of outer
join is not count-preserving</a>.</div>
</td>
</tr>
<tr id="i366" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testSortJoinTranspose7()">testSortJoinTranspose7</a></span>()</code></th>
<td class="colLast">
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-1507">[CALCITE-1507]
OFFSET cannot be pushed through a JOIN if the non-preserved side of outer
join is not count-preserving</a>.</div>
</td>
</tr>
<tr id="i367" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testSortProjectTranspose1()">testSortProjectTranspose1</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i368" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testSortProjectTranspose2()">testSortProjectTranspose2</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i369" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testSortProjectTranspose3()">testSortProjectTranspose3</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i370" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testSortRemovalAllKeysConstant()">testSortRemovalAllKeysConstant</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i371" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testSortRemovalOneKeyConstant()">testSortRemovalOneKeyConstant</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i372" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testSortUnionTranspose()">testSortUnionTranspose</a></span>()</code></th>
<td class="colLast">
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-889">[CALCITE-889]
Implement SortUnionTransposeRule</a>.</div>
</td>
</tr>
<tr id="i373" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testSortUnionTranspose2()">testSortUnionTranspose2</a></span>()</code></th>
<td class="colLast">
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-889">[CALCITE-889]
Implement SortUnionTransposeRule</a>.</div>
</td>
</tr>
<tr id="i374" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testSortUnionTranspose3()">testSortUnionTranspose3</a></span>()</code></th>
<td class="colLast">
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-987">[CALCITE-987]
Push limit 0 will result in an infinite loop</a>.</div>
</td>
</tr>
<tr id="i375" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testStrengthenJoinType()">testStrengthenJoinType</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i376" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testSwapOuterJoin()">testSwapOuterJoin</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i377" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testTransitiveInferenceAggregate()">testTransitiveInferenceAggregate</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i378" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testTransitiveInferenceComplexPredicate()">testTransitiveInferenceComplexPredicate</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i379" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testTransitiveInferenceConjunctInPullUp()">testTransitiveInferenceConjunctInPullUp</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i380" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testTransitiveInferenceConstantEquiPredicate()">testTransitiveInferenceConstantEquiPredicate</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i381" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testTransitiveInferenceFullOuterJoin()">testTransitiveInferenceFullOuterJoin</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i382" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testTransitiveInferenceJoin()">testTransitiveInferenceJoin</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i383" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testTransitiveInferenceJoin3way()">testTransitiveInferenceJoin3way</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i384" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testTransitiveInferenceJoin3wayAgg()">testTransitiveInferenceJoin3wayAgg</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i385" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testTransitiveInferenceLeftOuterJoin()">testTransitiveInferenceLeftOuterJoin</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i386" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testTransitiveInferenceNoPullUpExprs()">testTransitiveInferenceNoPullUpExprs</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i387" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testTransitiveInferencePreventProjectPullUp()">testTransitiveInferencePreventProjectPullUp</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i388" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testTransitiveInferenceProject()">testTransitiveInferenceProject</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i389" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testTransitiveInferencePullUpThruAlias()">testTransitiveInferencePullUpThruAlias</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i390" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testTransitiveInferenceRightOuterJoin()">testTransitiveInferenceRightOuterJoin</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i391" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testTransitiveInferenceUnion()">testTransitiveInferenceUnion</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i392" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testTransitiveInferenceUnion3way()">testTransitiveInferenceUnion3way</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i393" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testTransitiveInferenceUnion3wayOr()">testTransitiveInferenceUnion3wayOr</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i394" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testTransitiveInferenceUnionAlwaysTrue()">testTransitiveInferenceUnionAlwaysTrue</a></span>()</code></th>
<td class="colLast">
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-443">[CALCITE-443]
getPredicates from a union is not correct</a>.</div>
</td>
</tr>
<tr id="i395" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testUnionMergeRule()">testUnionMergeRule</a></span>()</code></th>
<td class="colLast">
<div class="block">Tests to see if the final branch of union is missed</div>
</td>
</tr>
<tr id="i396" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testUnionToDistinctRule()">testUnionToDistinctRule</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i397" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testWhereExpressionInCorrelated()">testWhereExpressionInCorrelated</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i398" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testWhereExpressionInCorrelated2()">testWhereExpressionInCorrelated2</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i399" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testWhereInCorrelated()">testWhereInCorrelated</a></span>()</code></th>
<td class="colLast">
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-1494">[CALCITE-1494]
Inefficient plan for correlated sub-queries</a>.</div>
</td>
</tr>
<tr id="i400" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testWhereInJoinCorrelated()">testWhereInJoinCorrelated</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i401" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testWhereNotInCorrelated()">testWhereNotInCorrelated</a></span>()</code></th>
<td class="colLast">
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-1493">[CALCITE-1493]
Wrong plan for NOT IN correlated queries</a>.</div>
</td>
</tr>
<tr id="i402" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testWhereNotInCorrelated2()">testWhereNotInCorrelated2</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i403" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testWhereOrSubQuery()">testWhereOrSubQuery</a></span>()</code></th>
<td class="colLast">
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-1546">[CALCITE-1546]
Sub-queries connected by OR</a>.</div>
</td>
</tr>
<tr id="i404" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testWindowFunctionOnAggregations()">testWindowFunctionOnAggregations</a></span>()</code></th>
<td class="colLast">
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-2078">[CALCITE-2078]
Aggregate functions in OVER clause</a>.</div>
</td>
</tr>
<tr id="i405" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#testWindowInParenthesis()">testWindowInParenthesis</a></span>()</code></th>
<td class="colLast">
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-888">[CALCITE-888]
Overlay window loses PARTITION BY list</a>.</div>
</td>
</tr>
<tr id="i406" class="altColor">
<td class="colFirst"><code>private void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#transitiveInference(org.apache.calcite.plan.RelOptRule...)">transitiveInference</a></span>&#8203;(org.apache.calcite.plan.RelOptRule...&nbsp;extraRules)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.org.apache.calcite.test.RelOptTestBase">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;org.apache.calcite.test.<a href="RelOptTestBase.html" title="class in org.apache.calcite.test">RelOptTestBase</a></h3>
<code><a href="RelOptTestBase.html#checkPlanning(org.apache.calcite.plan.hep.HepProgram,java.lang.String)">checkPlanning</a>, <a href="RelOptTestBase.html#checkPlanning(org.apache.calcite.plan.RelOptPlanner,java.lang.String)">checkPlanning</a>, <a href="RelOptTestBase.html#checkPlanning(org.apache.calcite.plan.RelOptRule,java.lang.String)">checkPlanning</a>, <a href="RelOptTestBase.html#checkPlanning(org.apache.calcite.test.SqlToRelTestBase.Tester,org.apache.calcite.plan.hep.HepProgram,org.apache.calcite.plan.RelOptPlanner,java.lang.String)">checkPlanning</a>, <a href="RelOptTestBase.html#checkPlanning(org.apache.calcite.test.SqlToRelTestBase.Tester,org.apache.calcite.plan.hep.HepProgram,org.apache.calcite.plan.RelOptPlanner,java.lang.String,boolean)">checkPlanning</a>, <a href="RelOptTestBase.html#checkPlanningDynamic(java.lang.String)">checkPlanningDynamic</a>, <a href="RelOptTestBase.html#checkPlanningDynamic(org.apache.calcite.plan.RelOptRule,java.lang.String)">checkPlanningDynamic</a>, <a href="RelOptTestBase.html#checkPlanUnchanged(org.apache.calcite.plan.RelOptPlanner,java.lang.String)">checkPlanUnchanged</a>, <a href="RelOptTestBase.html#createDynamicTester()">createDynamicTester</a>, <a href="RelOptTestBase.html#createTester()">createTester</a>, <a href="RelOptTestBase.html#sql(java.lang.String)">sql</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.org.apache.calcite.test.SqlToRelTestBase">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;org.apache.calcite.test.<a href="SqlToRelTestBase.html" title="class in org.apache.calcite.test">SqlToRelTestBase</a></h3>
<code><a href="SqlToRelTestBase.html#assertValid(org.apache.calcite.rel.RelNode)">assertValid</a>, <a href="SqlToRelTestBase.html#createTester(org.apache.calcite.sql.validate.SqlConformance)">createTester</a>, <a href="SqlToRelTestBase.html#getTesterWithDynamicTable()">getTesterWithDynamicTable</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.java.lang.Object">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.Object</h3>
<code>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</code></li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ FIELD DETAIL =========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="field.detail">
<!-- -->
</a>
<h3>Field Detail</h3>
<a id="skipItem">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>skipItem</h4>
<pre>private final&nbsp;org.apache.calcite.rel.rules.PushProjector.ExprCondition skipItem</pre>
</li>
</ul>
<a id="NOT_STRONG_EXPR">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>NOT_STRONG_EXPR</h4>
<pre>private static final&nbsp;java.lang.String NOT_STRONG_EXPR</pre>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../constant-values.html#org.apache.calcite.test.RelOptRulesTest.NOT_STRONG_EXPR">Constant Field Values</a></dd>
</dl>
</li>
</ul>
<a id="STRONG_EXPR">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>STRONG_EXPR</h4>
<pre>private static final&nbsp;java.lang.String STRONG_EXPR</pre>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../constant-values.html#org.apache.calcite.test.RelOptRulesTest.STRONG_EXPR">Constant Field Values</a></dd>
</dl>
</li>
</ul>
</li>
</ul>
</section>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="constructor.detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a id="&lt;init&gt;()">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>RelOptRulesTest</h4>
<pre>public&nbsp;RelOptRulesTest()</pre>
</li>
</ul>
</li>
</ul>
</section>
<!-- ============ METHOD DETAIL ========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a id="getDiffRepos()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getDiffRepos</h4>
<pre class="methodSignature">protected&nbsp;<a href="DiffRepository.html" title="class in org.apache.calcite.test">DiffRepository</a>&nbsp;getDiffRepos()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="SqlToRelTestBase.html#getDiffRepos()">SqlToRelTestBase</a></code></span></div>
<div class="block">Returns the default diff repository for this test, or null if there is
no repository.
<p>The default implementation returns null.
<p>Sub-classes that want to use a diff repository can override.
Sub-sub-classes can override again, inheriting test cases and overriding
selected test results.
<p>And individual test cases can override by providing a different
tester object.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="SqlToRelTestBase.html#getDiffRepos()">getDiffRepos</a></code>&nbsp;in class&nbsp;<code><a href="SqlToRelTestBase.html" title="class in org.apache.calcite.test">SqlToRelTestBase</a></code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Diff repository</dd>
</dl>
</li>
</ul>
<a id="testReduceNot()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testReduceNot</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testReduceNot()</pre>
</li>
</ul>
<a id="testReduceNestedCaseWhen()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testReduceNestedCaseWhen</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testReduceNestedCaseWhen()</pre>
</li>
</ul>
<a id="testReduceCompositeInSubQuery()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testReduceCompositeInSubQuery</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testReduceCompositeInSubQuery()</pre>
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-1479">[CALCITE-1479]
AssertionError in ReduceExpressionsRule on multi-column IN
sub-query</a>.</div>
</li>
</ul>
<a id="testFilterProjectTransposeRule()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testFilterProjectTransposeRule</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testFilterProjectTransposeRule()</pre>
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-2865">[CALCITE-2865]
FilterProjectTransposeRule generates wrong traitSet when copyFilter/Project is true</a>.</div>
</li>
</ul>
<a id="testReduceOrCaseWhen()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testReduceOrCaseWhen</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testReduceOrCaseWhen()</pre>
</li>
</ul>
<a id="testReduceNullableCase()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testReduceNullableCase</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testReduceNullableCase()</pre>
</li>
</ul>
<a id="testReduceNullableCase2()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testReduceNullableCase2</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testReduceNullableCase2()</pre>
</li>
</ul>
<a id="testProjectToWindowRuleForMultipleWindows()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testProjectToWindowRuleForMultipleWindows</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testProjectToWindowRuleForMultipleWindows()</pre>
</li>
</ul>
<a id="testUnionToDistinctRule()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testUnionToDistinctRule</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testUnionToDistinctRule()</pre>
</li>
</ul>
<a id="testExtractJoinFilterRule()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testExtractJoinFilterRule</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testExtractJoinFilterRule()</pre>
</li>
</ul>
<a id="testAddRedundantSemiJoinRule()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testAddRedundantSemiJoinRule</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testAddRedundantSemiJoinRule()</pre>
</li>
</ul>
<a id="testStrengthenJoinType()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testStrengthenJoinType</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testStrengthenJoinType()</pre>
</li>
</ul>
<a id="testFullOuterJoinSimplificationToLeftOuter()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testFullOuterJoinSimplificationToLeftOuter</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testFullOuterJoinSimplificationToLeftOuter()</pre>
</li>
</ul>
<a id="testFullOuterJoinSimplificationToRightOuter()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testFullOuterJoinSimplificationToRightOuter</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testFullOuterJoinSimplificationToRightOuter()</pre>
</li>
</ul>
<a id="testFullOuterJoinSimplificationToInner()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testFullOuterJoinSimplificationToInner</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testFullOuterJoinSimplificationToInner()</pre>
</li>
</ul>
<a id="testLeftOuterJoinSimplificationToInner()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testLeftOuterJoinSimplificationToInner</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testLeftOuterJoinSimplificationToInner()</pre>
</li>
</ul>
<a id="testRightOuterJoinSimplificationToInner()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testRightOuterJoinSimplificationToInner</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testRightOuterJoinSimplificationToInner()</pre>
</li>
</ul>
<a id="testPushFilterPastAgg()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testPushFilterPastAgg</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testPushFilterPastAgg()</pre>
</li>
</ul>
<a id="basePushFilterPastAggWithGroupingSets(boolean)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>basePushFilterPastAggWithGroupingSets</h4>
<pre class="methodSignature">private&nbsp;void&nbsp;basePushFilterPastAggWithGroupingSets&#8203;(boolean&nbsp;unchanged)
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testPushFilterPastAggWithGroupingSets1()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testPushFilterPastAggWithGroupingSets1</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testPushFilterPastAggWithGroupingSets1()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testPushFilterPastAggWithGroupingSets2()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testPushFilterPastAggWithGroupingSets2</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testPushFilterPastAggWithGroupingSets2()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testPushFilterPastAggTwo()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testPushFilterPastAggTwo</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testPushFilterPastAggTwo()</pre>
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-434">[CALCITE-434]
FilterAggregateTransposeRule loses conditions that cannot be pushed</a>.</div>
</li>
</ul>
<a id="testPushFilterPastAggThree()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testPushFilterPastAggThree</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testPushFilterPastAggThree()</pre>
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-799">[CALCITE-799]
Incorrect result for <code>HAVING count(*) &gt; 1</code></a>.</div>
</li>
</ul>
<a id="testPushFilterPastAggFour()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testPushFilterPastAggFour</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testPushFilterPastAggFour()</pre>
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-1109">[CALCITE-1109]
FilterAggregateTransposeRule pushes down incorrect condition</a>.</div>
</li>
</ul>
<a id="testPushFilterPastProject()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testPushFilterPastProject</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testPushFilterPastProject()</pre>
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-448">[CALCITE-448]
FilterIntoJoinRule creates filters containing invalid RexInputRef</a>.</div>
</li>
</ul>
<a id="testJoinProjectTranspose1()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testJoinProjectTranspose1</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testJoinProjectTranspose1()</pre>
</li>
</ul>
<a id="testJoinProjectTranspose2()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testJoinProjectTranspose2</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testJoinProjectTranspose2()</pre>
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-1338">[CALCITE-1338]
JoinProjectTransposeRule should not pull a literal above the
null-generating side of a join</a>.</div>
</li>
</ul>
<a id="testJoinProjectTranspose3()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testJoinProjectTranspose3</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testJoinProjectTranspose3()</pre>
<div class="block">As <a href="#testJoinProjectTranspose2()"><code>testJoinProjectTranspose2()</code></a>;
should not transpose since the left project of right join has literal.</div>
</li>
</ul>
<a id="testJoinProjectTranspose4()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testJoinProjectTranspose4</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testJoinProjectTranspose4()</pre>
<div class="block">As <a href="#testJoinProjectTranspose2()"><code>testJoinProjectTranspose2()</code></a>;
should not transpose since the right project of left join has not-strong
expression <code>y is not null</code>.</div>
</li>
</ul>
<a id="testJoinProjectTranspose5()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testJoinProjectTranspose5</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testJoinProjectTranspose5()</pre>
<div class="block">As <a href="#testJoinProjectTranspose2()"><code>testJoinProjectTranspose2()</code></a>;
should not transpose since the right project of left join has not-strong
expression <code>1 + 1</code>.</div>
</li>
</ul>
<a id="testJoinProjectTranspose6()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testJoinProjectTranspose6</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testJoinProjectTranspose6()</pre>
<div class="block">As <a href="#testJoinProjectTranspose2()"><code>testJoinProjectTranspose2()</code></a>;
should not transpose since both the left project and right project have
literal.</div>
</li>
</ul>
<a id="testJoinProjectTranspose7()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testJoinProjectTranspose7</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testJoinProjectTranspose7()</pre>
<div class="block">As <a href="#testJoinProjectTranspose2()"><code>testJoinProjectTranspose2()</code></a>;
Should transpose since all expressions in the right project of left join
are strong.</div>
</li>
</ul>
<a id="testJoinProjectTranspose8()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testJoinProjectTranspose8</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testJoinProjectTranspose8()</pre>
<div class="block">As <a href="#testJoinProjectTranspose2()"><code>testJoinProjectTranspose2()</code></a>;
should transpose since all expressions including
<code>deptno &gt; 10 and cast(null as boolean)</code> in the right project of left
join are strong.</div>
</li>
</ul>
<a id="testSortUnionTranspose()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testSortUnionTranspose</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testSortUnionTranspose()</pre>
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-889">[CALCITE-889]
Implement SortUnionTransposeRule</a>.</div>
</li>
</ul>
<a id="testSortUnionTranspose2()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testSortUnionTranspose2</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testSortUnionTranspose2()</pre>
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-889">[CALCITE-889]
Implement SortUnionTransposeRule</a>.</div>
</li>
</ul>
<a id="testSortUnionTranspose3()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testSortUnionTranspose3</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testSortUnionTranspose3()</pre>
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-987">[CALCITE-987]
Push limit 0 will result in an infinite loop</a>.</div>
</li>
</ul>
<a id="testSortRemovalAllKeysConstant()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testSortRemovalAllKeysConstant</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testSortRemovalAllKeysConstant()</pre>
</li>
</ul>
<a id="testSortRemovalOneKeyConstant()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testSortRemovalOneKeyConstant</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testSortRemovalOneKeyConstant()</pre>
</li>
</ul>
<a id="testSemiJoinRuleExists()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testSemiJoinRuleExists</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testSemiJoinRuleExists()</pre>
</li>
</ul>
<a id="testSemiJoinRule()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testSemiJoinRule</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testSemiJoinRule()</pre>
</li>
</ul>
<a id="testSemiJoinRuleRight()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testSemiJoinRuleRight</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testSemiJoinRuleRight()</pre>
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-1495">[CALCITE-1495]
SemiJoinRule should not apply to RIGHT and FULL JOIN</a>.</div>
</li>
</ul>
<a id="testSemiJoinRuleFull()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testSemiJoinRuleFull</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testSemiJoinRuleFull()</pre>
<div class="block">Similar to <a href="#testSemiJoinRuleRight()"><code>testSemiJoinRuleRight()</code></a> but FULL.</div>
</li>
</ul>
<a id="testSemiJoinRuleLeft()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testSemiJoinRuleLeft</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testSemiJoinRuleLeft()</pre>
<div class="block">Similar to <a href="#testSemiJoinRule()"><code>testSemiJoinRule()</code></a> but LEFT.</div>
</li>
</ul>
<a id="testPushFilterThroughSemiJoin()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testPushFilterThroughSemiJoin</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testPushFilterThroughSemiJoin()</pre>
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-438">[CALCITE-438]
Push predicates through SemiJoin</a>.</div>
</li>
</ul>
<a id="testSemiJoinReduceConstants()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testSemiJoinReduceConstants</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testSemiJoinReduceConstants()</pre>
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-571">[CALCITE-571]
ReduceExpressionsRule tries to reduce SemiJoin condition to non-equi
condition</a>.</div>
</li>
</ul>
<a id="testSemiJoinTrim()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testSemiJoinTrim</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testSemiJoinTrim()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testReduceAverage()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testReduceAverage</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testReduceAverage()</pre>
</li>
</ul>
<a id="testCastInAggregateReduceFunctions()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testCastInAggregateReduceFunctions</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testCastInAggregateReduceFunctions()</pre>
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-1621">[CALCITE-1621]
Adding a cast around the null literal in aggregate rules</a>.</div>
</li>
</ul>
<a id="testDistinctCountWithoutGroupBy()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testDistinctCountWithoutGroupBy</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testDistinctCountWithoutGroupBy()</pre>
</li>
</ul>
<a id="testDistinctCount1()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testDistinctCount1</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testDistinctCount1()</pre>
</li>
</ul>
<a id="testDistinctCount2()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testDistinctCount2</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testDistinctCount2()</pre>
</li>
</ul>
<a id="testDistinctCount3()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testDistinctCount3</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testDistinctCount3()</pre>
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-1293">[CALCITE-1293]
Bad code generated when argument to COUNT(DISTINCT) is a # GROUP BY
column</a>.</div>
</li>
</ul>
<a id="testDistinctCountMultipleViaJoin()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testDistinctCountMultipleViaJoin</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testDistinctCountMultipleViaJoin()</pre>
<div class="block">Tests implementing multiple distinct count the old way, using a join.</div>
</li>
</ul>
<a id="testDistinctCountMultiple()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testDistinctCountMultiple</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testDistinctCountMultiple()</pre>
<div class="block">Tests implementing multiple distinct count the new way, using GROUPING
SETS.</div>
</li>
</ul>
<a id="testDistinctCountMultipleNoGroup()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testDistinctCountMultipleNoGroup</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testDistinctCountMultipleNoGroup()</pre>
</li>
</ul>
<a id="testDistinctCountMixedJoin()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testDistinctCountMixedJoin</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testDistinctCountMixedJoin()</pre>
</li>
</ul>
<a id="testDistinctCountMixed()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testDistinctCountMixed</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testDistinctCountMixed()</pre>
</li>
</ul>
<a id="testDistinctCountMixed2()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testDistinctCountMixed2</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testDistinctCountMixed2()</pre>
</li>
</ul>
<a id="testDistinctCountGroupingSets1()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testDistinctCountGroupingSets1</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testDistinctCountGroupingSets1()</pre>
</li>
</ul>
<a id="testDistinctCountGroupingSets2()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testDistinctCountGroupingSets2</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testDistinctCountGroupingSets2()</pre>
</li>
</ul>
<a id="testDistinctNonDistinctAggregates()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testDistinctNonDistinctAggregates</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testDistinctNonDistinctAggregates()</pre>
</li>
</ul>
<a id="testCastInAggregateExpandDistinctAggregatesRule()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testCastInAggregateExpandDistinctAggregatesRule</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testCastInAggregateExpandDistinctAggregatesRule()</pre>
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-1621">[CALCITE-1621]
Adding a cast around the null literal in aggregate rules</a>.</div>
</li>
</ul>
<a id="testDistinctNonDistinctAggregatesWithGrouping1()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testDistinctNonDistinctAggregatesWithGrouping1</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testDistinctNonDistinctAggregatesWithGrouping1()</pre>
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-1558">[CALCITE-1558]
AggregateExpandDistinctAggregatesRule gets field mapping wrong if groupKey
is used in aggregate function</a>.</div>
</li>
</ul>
<a id="testDistinctNonDistinctAggregatesWithGrouping2()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testDistinctNonDistinctAggregatesWithGrouping2</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testDistinctNonDistinctAggregatesWithGrouping2()</pre>
</li>
</ul>
<a id="testDistinctNonDistinctTwoAggregatesWithGrouping()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testDistinctNonDistinctTwoAggregatesWithGrouping</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testDistinctNonDistinctTwoAggregatesWithGrouping()</pre>
</li>
</ul>
<a id="testDistinctWithGrouping()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testDistinctWithGrouping</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testDistinctWithGrouping()</pre>
</li>
</ul>
<a id="testMultipleDistinctWithGrouping()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testMultipleDistinctWithGrouping</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testMultipleDistinctWithGrouping()</pre>
</li>
</ul>
<a id="testDistinctWithMultipleInputs()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testDistinctWithMultipleInputs</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testDistinctWithMultipleInputs()</pre>
</li>
</ul>
<a id="testDistinctWithMultipleInputsAndGroupby()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testDistinctWithMultipleInputsAndGroupby</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testDistinctWithMultipleInputsAndGroupby()</pre>
</li>
</ul>
<a id="testPushProjectPastFilter()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testPushProjectPastFilter</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testPushProjectPastFilter()</pre>
</li>
</ul>
<a id="testPushProjectPastFilter2()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testPushProjectPastFilter2</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testPushProjectPastFilter2()</pre>
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-1778">[CALCITE-1778]
Query with "WHERE CASE" throws AssertionError "Cast for just nullability
not allowed"</a>.</div>
</li>
</ul>
<a id="testPushProjectPastJoin()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testPushProjectPastJoin</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testPushProjectPastJoin()</pre>
</li>
</ul>
<a id="testProjectSetOpTranspose()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testProjectSetOpTranspose</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testProjectSetOpTranspose()</pre>
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-3004">[CALCITE-3004]
Should not push over past union but its operands can since setop
will affect row count</a>.</div>
</li>
</ul>
<a id="testProjectCorrelateTransposeDynamic()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testProjectCorrelateTransposeDynamic</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testProjectCorrelateTransposeDynamic()</pre>
</li>
</ul>
<a id="testProjectCorrelateTransposeRuleLeftCorrelate()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testProjectCorrelateTransposeRuleLeftCorrelate</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testProjectCorrelateTransposeRuleLeftCorrelate()</pre>
</li>
</ul>
<a id="testProjectCorrelateTransposeRuleSemiCorrelate()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testProjectCorrelateTransposeRuleSemiCorrelate</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testProjectCorrelateTransposeRuleSemiCorrelate()</pre>
</li>
</ul>
<a id="testProjectCorrelateTransposeRuleAntiCorrelate()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testProjectCorrelateTransposeRuleAntiCorrelate</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testProjectCorrelateTransposeRuleAntiCorrelate()</pre>
</li>
</ul>
<a id="testProjectCorrelateTransposeWithExprCond()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testProjectCorrelateTransposeWithExprCond</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testProjectCorrelateTransposeWithExprCond()</pre>
</li>
</ul>
<a id="testProjectCorrelateTranspose()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testProjectCorrelateTranspose</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testProjectCorrelateTranspose()</pre>
</li>
</ul>
<a id="testProjectCorrelateTransposeWithOver()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testProjectCorrelateTransposeWithOver</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testProjectCorrelateTransposeWithOver()</pre>
<div class="block">As <a href="#testProjectSetOpTranspose()"><code>testProjectSetOpTranspose()</code></a>;
should not push over past correlate but its operands can since correlate
will affect row count.</div>
</li>
</ul>
<a id="testFilterProjectTransposePreventedByCorrelation()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testFilterProjectTransposePreventedByCorrelation</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testFilterProjectTransposePreventedByCorrelation()</pre>
<div class="block">Tests that the default instance of <code>FilterProjectTransposeRule</code>
does not push a Filter that contains a correlating variable.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="#testFilterProjectTranspose()"><code>testFilterProjectTranspose()</code></a></dd>
</dl>
</li>
</ul>
<a id="testFilterProjectTranspose()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testFilterProjectTranspose</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testFilterProjectTranspose()</pre>
<div class="block">Tests a variant of <code>FilterProjectTransposeRule</code>
that pushes a Filter that contains a correlating variable.</div>
</li>
</ul>
<a id="testPushProjectPastInnerJoin()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testPushProjectPastInnerJoin</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testPushProjectPastInnerJoin()</pre>
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-1753">[CALCITE-1753]
PushProjector should only preserve expressions if the expression is strong
when pushing into the nullable-side of outer join</a>.</div>
</li>
</ul>
<a id="testPushProjectPastInnerJoinStrong()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testPushProjectPastInnerJoinStrong</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testPushProjectPastInnerJoinStrong()</pre>
</li>
</ul>
<a id="testPushProjectPastLeftJoin()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testPushProjectPastLeftJoin</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testPushProjectPastLeftJoin()</pre>
</li>
</ul>
<a id="testPushProjectPastLeftJoinSwap()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testPushProjectPastLeftJoinSwap</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testPushProjectPastLeftJoinSwap()</pre>
</li>
</ul>
<a id="testPushProjectPastLeftJoinSwapStrong()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testPushProjectPastLeftJoinSwapStrong</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testPushProjectPastLeftJoinSwapStrong()</pre>
</li>
</ul>
<a id="testPushProjectPastRightJoin()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testPushProjectPastRightJoin</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testPushProjectPastRightJoin()</pre>
</li>
</ul>
<a id="testPushProjectPastRightJoinStrong()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testPushProjectPastRightJoinStrong</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testPushProjectPastRightJoinStrong()</pre>
</li>
</ul>
<a id="testPushProjectPastRightJoinSwap()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testPushProjectPastRightJoinSwap</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testPushProjectPastRightJoinSwap()</pre>
</li>
</ul>
<a id="testPushProjectPastRightJoinSwapStrong()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testPushProjectPastRightJoinSwapStrong</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testPushProjectPastRightJoinSwapStrong()</pre>
</li>
</ul>
<a id="testPushProjectPastFullJoin()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testPushProjectPastFullJoin</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testPushProjectPastFullJoin()</pre>
</li>
</ul>
<a id="testPushProjectPastFullJoinStrong()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testPushProjectPastFullJoinStrong</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testPushProjectPastFullJoinStrong()</pre>
</li>
</ul>
<a id="testPushProjectWithOverPastJoin1()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testPushProjectWithOverPastJoin1</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testPushProjectWithOverPastJoin1()</pre>
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-2343">[CALCITE-2343]
Should not push over whose columns are all from left child past join since
join will affect row count.</a>.</div>
</li>
</ul>
<a id="testPushProjectWithOverPastJoin2()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testPushProjectWithOverPastJoin2</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testPushProjectWithOverPastJoin2()</pre>
<div class="block">As <a href="#testPushProjectWithOverPastJoin1()"><code>testPushProjectWithOverPastJoin1()</code></a>;
should not push over whose columns are all from right child past join since
join will affect row count.</div>
</li>
</ul>
<a id="testPushProjectWithOverPastJoin3()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testPushProjectWithOverPastJoin3</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testPushProjectWithOverPastJoin3()</pre>
<div class="block">As <a href="#testPushProjectWithOverPastJoin2()"><code>testPushProjectWithOverPastJoin2()</code></a>;
should not push over past join but should push the operands of over past
join.</div>
</li>
</ul>
<a id="testPushProjectPastSetOp()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testPushProjectPastSetOp</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testPushProjectPastSetOp()</pre>
</li>
</ul>
<a id="testPushJoinThroughUnionOnLeft()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testPushJoinThroughUnionOnLeft</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testPushJoinThroughUnionOnLeft()</pre>
</li>
</ul>
<a id="testPushJoinThroughUnionOnRight()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testPushJoinThroughUnionOnRight</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testPushJoinThroughUnionOnRight()</pre>
</li>
</ul>
<a id="testMergeFilterWithJoinCondition()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testMergeFilterWithJoinCondition</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testMergeFilterWithJoinCondition()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testMergeFilter()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testMergeFilter</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testMergeFilter()
throws java.lang.Exception</pre>
<div class="block">Tests that filters are combined if they are identical.</div>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testUnionMergeRule()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testUnionMergeRule</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testUnionMergeRule()
throws java.lang.Exception</pre>
<div class="block">Tests to see if the final branch of union is missed</div>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testMinusMergeRule()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testMinusMergeRule</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testMinusMergeRule()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testMergeJoinFilter()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testMergeJoinFilter</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testMergeJoinFilter()
throws java.lang.Exception</pre>
<div class="block">Tests that a filters is combined are combined if they are identical,
even if one of them originates in an ON clause of a JOIN.</div>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testMergeUnionAll()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testMergeUnionAll</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testMergeUnionAll()
throws java.lang.Exception</pre>
<div class="block">Tests <code>UnionMergeRule</code>, which merges 2 <code>Union</code> operators into
a single <code>Union</code> with 3 inputs.</div>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testMergeUnionDistinct()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testMergeUnionDistinct</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testMergeUnionDistinct()
throws java.lang.Exception</pre>
<div class="block">Tests <code>UnionMergeRule</code>, which merges 2 <code>Union</code>
<code>DISTINCT</code> (not <code>ALL</code>) operators into a single
<code>Union</code> with 3 inputs.</div>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testMergeUnionMixed()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testMergeUnionMixed</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testMergeUnionMixed()
throws java.lang.Exception</pre>
<div class="block">Tests that <code>UnionMergeRule</code> does nothing if its arguments have
different <code>ALL</code> settings.</div>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testMergeUnionMixed2()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testMergeUnionMixed2</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testMergeUnionMixed2()
throws java.lang.Exception</pre>
<div class="block">Tests that <code>UnionMergeRule</code> converts all inputs to DISTINCT
if the top one is DISTINCT.
(Since UNION is left-associative, the "top one" is the rightmost.)</div>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testMergeSetOpMixed()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testMergeSetOpMixed</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testMergeSetOpMixed()
throws java.lang.Exception</pre>
<div class="block">Tests that <code>UnionMergeRule</code> does nothing if its arguments have
are different set operators, <code>Union</code> and <code>Intersect</code>.</div>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testMergeIntersect()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testMergeIntersect</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testMergeIntersect()
throws java.lang.Exception</pre>
<div class="block">Tests <code>UnionMergeRule.INTERSECT_INSTANCE</code>, which merges 2
<code>Intersect</code> operators into a single <code>Intersect</code> with 3
inputs.</div>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testIntersectToDistinct()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testIntersectToDistinct</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testIntersectToDistinct()
throws java.lang.Exception</pre>
<div class="block">Tests <code>IntersectToDistinctRule</code>,
which rewrites an <code>Intersect</code> operator with 3 inputs.</div>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testIntersectToDistinctAll()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testIntersectToDistinctAll</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testIntersectToDistinctAll()
throws java.lang.Exception</pre>
<div class="block">Tests that <code>IntersectToDistinctRule</code>
correctly ignores an <code>INTERSECT ALL</code>. It can only handle
<code>INTERSECT DISTINCT</code>.</div>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testMergeMinus()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testMergeMinus</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testMergeMinus()
throws java.lang.Exception</pre>
<div class="block">Tests <code>UnionMergeRule.MINUS_INSTANCE</code>, which merges 2
<code>Minus</code> operators into a single <code>Minus</code> with 3
inputs.</div>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testMergeMinusRightDeep()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testMergeMinusRightDeep</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testMergeMinusRightDeep()
throws java.lang.Exception</pre>
<div class="block">Tests <code>UnionMergeRule.MINUS_INSTANCE</code>
does not merge <code>Minus(a, Minus(b, c))</code>
into <code>Minus(a, b, c)</code>, which would be incorrect.</div>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testHeterogeneousConversion()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testHeterogeneousConversion</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testHeterogeneousConversion()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testPushSemiJoinPastJoinRuleLeft()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testPushSemiJoinPastJoinRuleLeft</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testPushSemiJoinPastJoinRuleLeft()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testPushSemiJoinPastJoinRuleRight()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testPushSemiJoinPastJoinRuleRight</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testPushSemiJoinPastJoinRuleRight()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testPushSemiJoinPastFilter()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testPushSemiJoinPastFilter</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testPushSemiJoinPastFilter()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testConvertMultiJoinRule()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testConvertMultiJoinRule</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testConvertMultiJoinRule()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testManyFiltersOnTopOfMultiJoinShouldCollapse()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testManyFiltersOnTopOfMultiJoinShouldCollapse</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testManyFiltersOnTopOfMultiJoinShouldCollapse()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testReduceConstants()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testReduceConstants</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testReduceConstants()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testReduceConstantsDup()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testReduceConstantsDup</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testReduceConstantsDup()
throws java.lang.Exception</pre>
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-570">[CALCITE-570]
ReduceExpressionsRule throws "duplicate key" exception</a>.</div>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testReduceConstantsDup2()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testReduceConstantsDup2</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testReduceConstantsDup2()
throws java.lang.Exception</pre>
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-935">[CALCITE-935]
Improve how ReduceExpressionsRule handles duplicate constraints</a>.</div>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testPullNull()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testPullNull</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testPullNull()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testOrAlwaysTrue()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testOrAlwaysTrue</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testOrAlwaysTrue()</pre>
</li>
</ul>
<a id="testOrAlwaysTrue2()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testOrAlwaysTrue2</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testOrAlwaysTrue2()</pre>
</li>
</ul>
<a id="testReduceConstants2()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testReduceConstants2</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testReduceConstants2()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testReduceConstants3()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testReduceConstants3</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testReduceConstants3()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testReduceConstantsProjectNullable()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testReduceConstantsProjectNullable</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testReduceConstantsProjectNullable()
throws java.lang.Exception</pre>
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-902">[CALCITE-902]
Match nullability when reducing expressions in a Project</a>.</div>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testReduceConstantsNullEqualsOne()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testReduceConstantsNullEqualsOne</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testReduceConstantsNullEqualsOne()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testReduceConstantsCaseEquals()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testReduceConstantsCaseEquals</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testReduceConstantsCaseEquals()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testReduceConstantsCaseEquals2()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testReduceConstantsCaseEquals2</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testReduceConstantsCaseEquals2()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testReduceConstantsCaseEquals3()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testReduceConstantsCaseEquals3</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testReduceConstantsCaseEquals3()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testSkipReduceConstantsCaseEquals()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testSkipReduceConstantsCaseEquals</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testSkipReduceConstantsCaseEquals()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testReduceConstantsEliminatesFilter()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testReduceConstantsEliminatesFilter</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testReduceConstantsEliminatesFilter()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testReduceConstantsNull()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testReduceConstantsNull</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testReduceConstantsNull()
throws java.lang.Exception</pre>
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-1860">[CALCITE-1860]
Duplicate null predicates cause NullPointerException in RexUtil</a>.</div>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testReduceConstantsRequiresExecutor()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testReduceConstantsRequiresExecutor</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testReduceConstantsRequiresExecutor()
throws java.lang.Exception</pre>
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-566">[CALCITE-566]
ReduceExpressionsRule requires planner to have an Executor</a>.</div>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testAlreadyFalseEliminatesFilter()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testAlreadyFalseEliminatesFilter</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testAlreadyFalseEliminatesFilter()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testReduceConstantsCalc()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testReduceConstantsCalc</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testReduceConstantsCalc()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testRemoveSemiJoin()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testRemoveSemiJoin</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testRemoveSemiJoin()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testRemoveSemiJoinWithFilter()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testRemoveSemiJoinWithFilter</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testRemoveSemiJoinWithFilter()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testRemoveSemiJoinRight()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testRemoveSemiJoinRight</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testRemoveSemiJoinRight()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testRemoveSemiJoinRightWithFilter()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testRemoveSemiJoinRightWithFilter</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testRemoveSemiJoinRightWithFilter()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="checkPlanning(java.lang.String)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>checkPlanning</h4>
<pre class="methodSignature">private&nbsp;void&nbsp;checkPlanning&#8203;(java.lang.String&nbsp;query)
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testConvertMultiJoinRuleOuterJoins()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testConvertMultiJoinRuleOuterJoins</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testConvertMultiJoinRuleOuterJoins()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testConvertMultiJoinRuleOuterJoins2()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testConvertMultiJoinRuleOuterJoins2</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testConvertMultiJoinRuleOuterJoins2()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testConvertMultiJoinRuleOuterJoins3()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testConvertMultiJoinRuleOuterJoins3</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testConvertMultiJoinRuleOuterJoins3()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testConvertMultiJoinRuleOuterJoins4()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testConvertMultiJoinRuleOuterJoins4</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testConvertMultiJoinRuleOuterJoins4()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testPushSemiJoinPastProject()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testPushSemiJoinPastProject</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testPushSemiJoinPastProject()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testReduceValuesUnderFilter()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testReduceValuesUnderFilter</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testReduceValuesUnderFilter()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testReduceValuesUnderProject()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testReduceValuesUnderProject</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testReduceValuesUnderProject()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testReduceValuesUnderProjectFilter()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testReduceValuesUnderProjectFilter</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testReduceValuesUnderProjectFilter()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testReduceCase()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testReduceCase</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testReduceCase()
throws java.lang.Exception</pre>
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-1439">[CALCITE-1439]
Handling errors during constant reduction</a>.</div>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="checkReduceNullableToNotNull(org.apache.calcite.rel.rules.ReduceExpressionsRule)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>checkReduceNullableToNotNull</h4>
<pre class="methodSignature">private&nbsp;void&nbsp;checkReduceNullableToNotNull&#8203;(org.apache.calcite.rel.rules.ReduceExpressionsRule&nbsp;rule)</pre>
</li>
</ul>
<a id="testReduceNullableToNotNull()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testReduceNullableToNotNull</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testReduceNullableToNotNull()
throws java.lang.Exception</pre>
<div class="block">Test case that reduces a nullable expression to a NOT NULL literal that
is cast to nullable.</div>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testReduceNullableToNotNull2()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testReduceNullableToNotNull2</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testReduceNullableToNotNull2()
throws java.lang.Exception</pre>
<div class="block">Test case that reduces a nullable expression to a NOT NULL literal.</div>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testReduceConstantsIsNull()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testReduceConstantsIsNull</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testReduceConstantsIsNull()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testReduceConstantsIsNotNull()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testReduceConstantsIsNotNull</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testReduceConstantsIsNotNull()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testReduceConstantsNegated()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testReduceConstantsNegated</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testReduceConstantsNegated()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testReduceConstantsNegatedInverted()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testReduceConstantsNegatedInverted</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testReduceConstantsNegatedInverted()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testReduceConstantsNonDeterministicFunction()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testReduceConstantsNonDeterministicFunction</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testReduceConstantsNonDeterministicFunction()</pre>
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-2638">[CALCITE-2638]
Constant reducer must not duplicate calls to non-deterministic
functions</a>.</div>
</li>
</ul>
<a id="testReduceConstantsDynamicFunction()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testReduceConstantsDynamicFunction</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testReduceConstantsDynamicFunction()</pre>
<div class="block">Checks that constant reducer duplicates calls to dynamic functions, if
appropriate. CURRENT_TIMESTAMP is a dynamic function.</div>
</li>
</ul>
<a id="testCasePushIsAlwaysWorking()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testCasePushIsAlwaysWorking</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testCasePushIsAlwaysWorking()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testReduceValuesNull()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testReduceValuesNull</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testReduceValuesNull()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testReduceValuesToEmpty()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testReduceValuesToEmpty</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testReduceValuesToEmpty()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testReduceConstantsWindow()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testReduceConstantsWindow</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testReduceConstantsWindow()</pre>
</li>
</ul>
<a id="testEmptyFilterProjectUnion()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testEmptyFilterProjectUnion</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testEmptyFilterProjectUnion()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testEmptyProject()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testEmptyProject</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testEmptyProject()
throws java.lang.Exception</pre>
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-1488">[CALCITE-1488]
ValuesReduceRule should ignore empty Values</a>.</div>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testEmptyProject2()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testEmptyProject2</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testEmptyProject2()
throws java.lang.Exception</pre>
<div class="block">Same query as <a href="#testEmptyProject()"><code>testEmptyProject()</code></a>, and <code>PruneEmptyRules</code>
is able to do the job that <code>ValuesReduceRule</code> cannot do.</div>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testEmptyIntersect()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testEmptyIntersect</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testEmptyIntersect()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testEmptyMinus()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testEmptyMinus</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testEmptyMinus()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testEmptyMinus2()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testEmptyMinus2</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testEmptyMinus2()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testEmptyJoin()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testEmptyJoin</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testEmptyJoin()</pre>
</li>
</ul>
<a id="testEmptyJoinLeft()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testEmptyJoinLeft</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testEmptyJoinLeft()</pre>
</li>
</ul>
<a id="testEmptyJoinRight()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testEmptyJoinRight</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testEmptyJoinRight()</pre>
</li>
</ul>
<a id="testEmptySort()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testEmptySort</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testEmptySort()</pre>
</li>
</ul>
<a id="testEmptySortLimitZero()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testEmptySortLimitZero</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testEmptySortLimitZero()</pre>
</li>
</ul>
<a id="testEmptyAggregate()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testEmptyAggregate</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testEmptyAggregate()</pre>
</li>
</ul>
<a id="testEmptyAggregateEmptyKey()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testEmptyAggregateEmptyKey</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testEmptyAggregateEmptyKey()</pre>
</li>
</ul>
<a id="testEmptyAggregateEmptyKeyWithAggregateValuesRule()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testEmptyAggregateEmptyKeyWithAggregateValuesRule</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testEmptyAggregateEmptyKeyWithAggregateValuesRule()</pre>
</li>
</ul>
<a id="testReduceCasts()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testReduceCasts</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testReduceCasts()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testReduceCastTimeUnchanged()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testReduceCastTimeUnchanged</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testReduceCastTimeUnchanged()
throws java.lang.Exception</pre>
<div class="block">Tests that a cast from a TIME to a TIMESTAMP is not reduced. It is not
constant because the result depends upon the current date.</div>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testReduceCastAndConsts()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testReduceCastAndConsts</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testReduceCastAndConsts()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testReduceCaseNullabilityChange()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testReduceCaseNullabilityChange</h4>
<pre class="methodSignature">public&nbsp;&lt;T&gt;&nbsp;void&nbsp;testReduceCaseNullabilityChange()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testReduceCastsNullable()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testReduceCastsNullable</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testReduceCastsNullable()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="basePushAggThroughUnion()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>basePushAggThroughUnion</h4>
<pre class="methodSignature">private&nbsp;void&nbsp;basePushAggThroughUnion()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testPushSumConstantThroughUnion()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testPushSumConstantThroughUnion</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testPushSumConstantThroughUnion()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testPushSumNullConstantThroughUnion()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testPushSumNullConstantThroughUnion</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testPushSumNullConstantThroughUnion()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testPushSumNullableThroughUnion()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testPushSumNullableThroughUnion</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testPushSumNullableThroughUnion()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testPushSumNullableNOGBYThroughUnion()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testPushSumNullableNOGBYThroughUnion</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testPushSumNullableNOGBYThroughUnion()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testPushCountStarThroughUnion()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testPushCountStarThroughUnion</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testPushCountStarThroughUnion()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testPushCountNullableThroughUnion()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testPushCountNullableThroughUnion</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testPushCountNullableThroughUnion()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testPushMaxNullableThroughUnion()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testPushMaxNullableThroughUnion</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testPushMaxNullableThroughUnion()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testPushMinThroughUnion()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testPushMinThroughUnion</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testPushMinThroughUnion()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testPushAvgThroughUnion()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testPushAvgThroughUnion</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testPushAvgThroughUnion()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testPushSumCountStarThroughUnion()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testPushSumCountStarThroughUnion</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testPushSumCountStarThroughUnion()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testPushSumConstantGroupingSetsThroughUnion()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testPushSumConstantGroupingSetsThroughUnion</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testPushSumConstantGroupingSetsThroughUnion()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testPushSumNullConstantGroupingSetsThroughUnion()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testPushSumNullConstantGroupingSetsThroughUnion</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testPushSumNullConstantGroupingSetsThroughUnion()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testPushSumNullableGroupingSetsThroughUnion()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testPushSumNullableGroupingSetsThroughUnion</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testPushSumNullableGroupingSetsThroughUnion()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testPushCountStarGroupingSetsThroughUnion()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testPushCountStarGroupingSetsThroughUnion</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testPushCountStarGroupingSetsThroughUnion()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testPushCountNullableGroupingSetsThroughUnion()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testPushCountNullableGroupingSetsThroughUnion</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testPushCountNullableGroupingSetsThroughUnion()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testPushMaxNullableGroupingSetsThroughUnion()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testPushMaxNullableGroupingSetsThroughUnion</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testPushMaxNullableGroupingSetsThroughUnion()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testPushMinGroupingSetsThroughUnion()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testPushMinGroupingSetsThroughUnion</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testPushMinGroupingSetsThroughUnion()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testPushAvgGroupingSetsThroughUnion()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testPushAvgGroupingSetsThroughUnion</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testPushAvgGroupingSetsThroughUnion()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testPushSumCountStarGroupingSetsThroughUnion()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testPushSumCountStarGroupingSetsThroughUnion</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testPushSumCountStarGroupingSetsThroughUnion()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testPushCountFilterThroughUnion()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testPushCountFilterThroughUnion</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testPushCountFilterThroughUnion()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testPullFilterThroughAggregate()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testPullFilterThroughAggregate</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testPullFilterThroughAggregate()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testPullFilterThroughAggregateGroupingSets()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testPullFilterThroughAggregateGroupingSets</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testPullFilterThroughAggregateGroupingSets()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="basePullConstantTroughAggregate()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>basePullConstantTroughAggregate</h4>
<pre class="methodSignature">private&nbsp;void&nbsp;basePullConstantTroughAggregate()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testPullConstantThroughConstLast()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testPullConstantThroughConstLast</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testPullConstantThroughConstLast()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testPullConstantThroughAggregateSimpleNonNullable()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testPullConstantThroughAggregateSimpleNonNullable</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testPullConstantThroughAggregateSimpleNonNullable()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testPullConstantThroughAggregatePermuted()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testPullConstantThroughAggregatePermuted</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testPullConstantThroughAggregatePermuted()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testPullConstantThroughAggregatePermutedConstFirst()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testPullConstantThroughAggregatePermutedConstFirst</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testPullConstantThroughAggregatePermutedConstFirst()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testPullConstantThroughAggregatePermutedConstGroupBy()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testPullConstantThroughAggregatePermutedConstGroupBy</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testPullConstantThroughAggregatePermutedConstGroupBy()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testPullConstantThroughAggregateConstGroupBy()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testPullConstantThroughAggregateConstGroupBy</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testPullConstantThroughAggregateConstGroupBy()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testPullConstantThroughAggregateAllConst()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testPullConstantThroughAggregateAllConst</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testPullConstantThroughAggregateAllConst()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testPullConstantThroughAggregateAllLiterals()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testPullConstantThroughAggregateAllLiterals</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testPullConstantThroughAggregateAllLiterals()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testPullConstantThroughUnion()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testPullConstantThroughUnion</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testPullConstantThroughUnion()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testPullConstantThroughUnion2()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testPullConstantThroughUnion2</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testPullConstantThroughUnion2()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testPullConstantThroughUnion3()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testPullConstantThroughUnion3</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testPullConstantThroughUnion3()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testAggregateProjectMerge()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testAggregateProjectMerge</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testAggregateProjectMerge()</pre>
</li>
</ul>
<a id="testAggregateGroupingSetsProjectMerge()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testAggregateGroupingSetsProjectMerge</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testAggregateGroupingSetsProjectMerge()</pre>
</li>
</ul>
<a id="testAggregateExtractProjectRule()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testAggregateExtractProjectRule</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testAggregateExtractProjectRule()</pre>
</li>
</ul>
<a id="testAggregateExtractProjectRuleWithGroupingSets()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testAggregateExtractProjectRuleWithGroupingSets</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testAggregateExtractProjectRuleWithGroupingSets()</pre>
</li>
</ul>
<a id="testAggregateExtractProjectRuleWithGroupingSets2()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testAggregateExtractProjectRuleWithGroupingSets2</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testAggregateExtractProjectRuleWithGroupingSets2()</pre>
<div class="block">Test with column used in both grouping set and argument to aggregate
function.</div>
</li>
</ul>
<a id="testAggregateExtractProjectRuleWithFilter()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testAggregateExtractProjectRuleWithFilter</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testAggregateExtractProjectRuleWithFilter()</pre>
</li>
</ul>
<a id="testPullAggregateThroughUnion()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testPullAggregateThroughUnion</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testPullAggregateThroughUnion()</pre>
</li>
</ul>
<a id="testPullAggregateThroughUnion2()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testPullAggregateThroughUnion2</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testPullAggregateThroughUnion2()</pre>
</li>
</ul>
<a id="transitiveInference(org.apache.calcite.plan.RelOptRule...)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>transitiveInference</h4>
<pre class="methodSignature">private&nbsp;void&nbsp;transitiveInference&#8203;(org.apache.calcite.plan.RelOptRule...&nbsp;extraRules)
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testTransitiveInferenceJoin()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testTransitiveInferenceJoin</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testTransitiveInferenceJoin()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testTransitiveInferenceProject()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testTransitiveInferenceProject</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testTransitiveInferenceProject()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testTransitiveInferenceAggregate()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testTransitiveInferenceAggregate</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testTransitiveInferenceAggregate()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testTransitiveInferenceUnion()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testTransitiveInferenceUnion</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testTransitiveInferenceUnion()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testTransitiveInferenceJoin3way()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testTransitiveInferenceJoin3way</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testTransitiveInferenceJoin3way()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testTransitiveInferenceJoin3wayAgg()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testTransitiveInferenceJoin3wayAgg</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testTransitiveInferenceJoin3wayAgg()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testTransitiveInferenceLeftOuterJoin()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testTransitiveInferenceLeftOuterJoin</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testTransitiveInferenceLeftOuterJoin()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testTransitiveInferenceRightOuterJoin()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testTransitiveInferenceRightOuterJoin</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testTransitiveInferenceRightOuterJoin()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testTransitiveInferenceFullOuterJoin()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testTransitiveInferenceFullOuterJoin</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testTransitiveInferenceFullOuterJoin()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testTransitiveInferencePreventProjectPullUp()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testTransitiveInferencePreventProjectPullUp</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testTransitiveInferencePreventProjectPullUp()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testTransitiveInferencePullUpThruAlias()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testTransitiveInferencePullUpThruAlias</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testTransitiveInferencePullUpThruAlias()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testTransitiveInferenceConjunctInPullUp()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testTransitiveInferenceConjunctInPullUp</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testTransitiveInferenceConjunctInPullUp()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testTransitiveInferenceNoPullUpExprs()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testTransitiveInferenceNoPullUpExprs</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testTransitiveInferenceNoPullUpExprs()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testTransitiveInferenceUnion3way()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testTransitiveInferenceUnion3way</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testTransitiveInferenceUnion3way()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testTransitiveInferenceUnion3wayOr()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testTransitiveInferenceUnion3wayOr</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testTransitiveInferenceUnion3wayOr()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testTransitiveInferenceUnionAlwaysTrue()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testTransitiveInferenceUnionAlwaysTrue</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testTransitiveInferenceUnionAlwaysTrue()
throws java.lang.Exception</pre>
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-443">[CALCITE-443]
getPredicates from a union is not correct</a>.</div>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testTransitiveInferenceConstantEquiPredicate()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testTransitiveInferenceConstantEquiPredicate</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testTransitiveInferenceConstantEquiPredicate()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testTransitiveInferenceComplexPredicate()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testTransitiveInferenceComplexPredicate</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testTransitiveInferenceComplexPredicate()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testPullConstantIntoProject()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testPullConstantIntoProject</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testPullConstantIntoProject()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testPullConstantIntoFilter()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testPullConstantIntoFilter</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testPullConstantIntoFilter()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testSimplifyFilter()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testSimplifyFilter</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testSimplifyFilter()
throws java.lang.Exception</pre>
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-1995">[CALCITE-1995]
Remove predicates from Filter if they can be proved to be always true or
false</a>.</div>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testPullConstantIntoJoin()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testPullConstantIntoJoin</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testPullConstantIntoJoin()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testPullConstantIntoJoin2()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testPullConstantIntoJoin2</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testPullConstantIntoJoin2()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testCorrelationScalarAggAndFilter()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testCorrelationScalarAggAndFilter</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testCorrelationScalarAggAndFilter()</pre>
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-2110">[CALCITE-2110]
ArrayIndexOutOfBoundsException in RexSimplify when using
ReduceExpressionsRule.JOIN_INSTANCE</a>.</div>
</li>
</ul>
<a id="testProjectWindowTransposeRule()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testProjectWindowTransposeRule</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testProjectWindowTransposeRule()</pre>
</li>
</ul>
<a id="testProjectWindowTransposeRuleWithConstants()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testProjectWindowTransposeRuleWithConstants</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testProjectWindowTransposeRuleWithConstants()</pre>
</li>
</ul>
<a id="testAggregateProjectPullUpConstants()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testAggregateProjectPullUpConstants</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testAggregateProjectPullUpConstants()</pre>
</li>
</ul>
<a id="testAggregateProjectPullUpConstants2()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testAggregateProjectPullUpConstants2</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testAggregateProjectPullUpConstants2()</pre>
</li>
</ul>
<a id="testPushFilterWithRank()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testPushFilterWithRank</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testPushFilterWithRank()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testPushFilterWithRankExpr()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testPushFilterWithRankExpr</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testPushFilterWithRankExpr()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testExpressionInWindowFunction()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testExpressionInWindowFunction</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testExpressionInWindowFunction()</pre>
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-841">[CALCITE-841]
Redundant windows when window function arguments are expressions</a>.</div>
</li>
</ul>
<a id="testWindowInParenthesis()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testWindowInParenthesis</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testWindowInParenthesis()</pre>
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-888">[CALCITE-888]
Overlay window loses PARTITION BY list</a>.</div>
</li>
</ul>
<a id="testIsNullPushDown()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testIsNullPushDown</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testIsNullPushDown()</pre>
<div class="block">Test case for DX-11490
Make sure the planner doesn't fail over wrong push down
of is null</div>
</li>
</ul>
<a id="testIsNullPushDown2()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testIsNullPushDown2</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testIsNullPushDown2()</pre>
</li>
</ul>
<a id="testNestedAggregates()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testNestedAggregates</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testNestedAggregates()</pre>
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-750">[CALCITE-750]
Allow windowed aggregate on top of regular aggregate</a>.</div>
</li>
</ul>
<a id="testWindowFunctionOnAggregations()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testWindowFunctionOnAggregations</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testWindowFunctionOnAggregations()</pre>
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-2078">[CALCITE-2078]
Aggregate functions in OVER clause</a>.</div>
</li>
</ul>
<a id="testPushAggregateThroughJoin1()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testPushAggregateThroughJoin1</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testPushAggregateThroughJoin1()</pre>
</li>
</ul>
<a id="testPushAggregateThroughOuterJoin1()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testPushAggregateThroughOuterJoin1</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testPushAggregateThroughOuterJoin1()</pre>
<div class="block">Test case for
outer join, group by on non-join keys, group by on non-null generating side only</div>
</li>
</ul>
<a id="testPushAggregateThroughOuterJoin2()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testPushAggregateThroughOuterJoin2</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testPushAggregateThroughOuterJoin2()</pre>
<div class="block">Test case for
outer join, group by on non-join keys, on null generating side only</div>
</li>
</ul>
<a id="testPushAggregateThroughOuterJoin3()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testPushAggregateThroughOuterJoin3</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testPushAggregateThroughOuterJoin3()</pre>
<div class="block">Test case for
outer join, group by on both side on non-join keys</div>
</li>
</ul>
<a id="testPushAggregateThroughOuterJoin4()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testPushAggregateThroughOuterJoin4</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testPushAggregateThroughOuterJoin4()</pre>
<div class="block">Test case for
outer join, group by on key same as join key, group by on non-null generating side</div>
</li>
</ul>
<a id="testPushAggregateThroughOuterJoin5()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testPushAggregateThroughOuterJoin5</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testPushAggregateThroughOuterJoin5()</pre>
<div class="block">Test case for
outer join, group by on key same as join key, group by on null generating side</div>
</li>
</ul>
<a id="testPushAggregateThroughOuterJoin6()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testPushAggregateThroughOuterJoin6</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testPushAggregateThroughOuterJoin6()</pre>
<div class="block">Test case for
outer join, group by on key same as join key, group by on both side</div>
</li>
</ul>
<a id="testPushAggregateThroughOuterJoin7()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testPushAggregateThroughOuterJoin7</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testPushAggregateThroughOuterJoin7()</pre>
<div class="block">Test case for
outer join, group by key is susbset of join keys, group by on non-null generating side</div>
</li>
</ul>
<a id="testPushAggregateThroughOuterJoin8()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testPushAggregateThroughOuterJoin8</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testPushAggregateThroughOuterJoin8()</pre>
<div class="block">Test case for
outer join, group by key is susbset of join keys, group by on null generating side</div>
</li>
</ul>
<a id="testPushAggregateThroughOuterJoin9()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testPushAggregateThroughOuterJoin9</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testPushAggregateThroughOuterJoin9()</pre>
<div class="block">Test case for
outer join, group by key is susbset of join keys, group by on both sides</div>
</li>
</ul>
<a id="testPushAggregateThroughOuterJoin10()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testPushAggregateThroughOuterJoin10</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testPushAggregateThroughOuterJoin10()</pre>
<div class="block">Test case for
outer join, with aggregate functions</div>
</li>
</ul>
<a id="testPushAggregateThroughOuterJoin11()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testPushAggregateThroughOuterJoin11</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testPushAggregateThroughOuterJoin11()</pre>
<div class="block">Test case for
non-equi outer join</div>
</li>
</ul>
<a id="testPushAggregateThroughOuterJoin12()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testPushAggregateThroughOuterJoin12</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testPushAggregateThroughOuterJoin12()</pre>
<div class="block">Test case for
right outer join, group by on key same as join key, group by on (left)null generating side</div>
</li>
</ul>
<a id="testPushAggregateThroughOuterJoin13()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testPushAggregateThroughOuterJoin13</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testPushAggregateThroughOuterJoin13()</pre>
<div class="block">Test case for
full outer join, group by on key same as join key, group by on one side</div>
</li>
</ul>
<a id="testPushAggregateThroughOuterJoin14()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testPushAggregateThroughOuterJoin14</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testPushAggregateThroughOuterJoin14()</pre>
<div class="block">Test case for
full outer join, group by on key same as join key, group by on both side</div>
</li>
</ul>
<a id="testPushAggregateThroughOuterJoin15()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testPushAggregateThroughOuterJoin15</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testPushAggregateThroughOuterJoin15()</pre>
<div class="block">Test case for
full outer join, group by on both side on non-join keys</div>
</li>
</ul>
<a id="testPushAggregateThroughOuterJoin16()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testPushAggregateThroughOuterJoin16</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testPushAggregateThroughOuterJoin16()</pre>
<div class="block">Test case for
full outer join, group by key is susbset of join keys</div>
</li>
</ul>
<a id="testPushAggregateThroughJoin2()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testPushAggregateThroughJoin2</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testPushAggregateThroughJoin2()</pre>
</li>
</ul>
<a id="testPushAggregateThroughJoin3()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testPushAggregateThroughJoin3</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testPushAggregateThroughJoin3()</pre>
</li>
</ul>
<a id="testPushAggregateThroughJoin4()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testPushAggregateThroughJoin4</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testPushAggregateThroughJoin4()</pre>
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-1544">[CALCITE-1544]
AggregateJoinTransposeRule fails to preserve row type</a>.</div>
</li>
</ul>
<a id="testPushAggregateThroughJoin5()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testPushAggregateThroughJoin5</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testPushAggregateThroughJoin5()</pre>
</li>
</ul>
<a id="testJoinPushTransitivePredicatesRule()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testJoinPushTransitivePredicatesRule</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testJoinPushTransitivePredicatesRule()</pre>
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-2200">[CALCITE-2200]
Infinite loop for JoinPushTransitivePredicatesRule</a>.</div>
</li>
</ul>
<a id="testJoinPushTransitivePredicatesRule2()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testJoinPushTransitivePredicatesRule2</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testJoinPushTransitivePredicatesRule2()</pre>
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-2205">[CALCITE-2205]
One more infinite loop for JoinPushTransitivePredicatesRule</a>.</div>
</li>
</ul>
<a id="testInferringPredicatesWithNotOperatorInJoinCondition()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testInferringPredicatesWithNotOperatorInJoinCondition</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testInferringPredicatesWithNotOperatorInJoinCondition()</pre>
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-2275">[CALCITE-2275]
JoinPushTransitivePredicatesRule wrongly pushes down NOT condition</a>.</div>
</li>
</ul>
<a id="testPushAggregateThroughJoin6()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testPushAggregateThroughJoin6</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testPushAggregateThroughJoin6()</pre>
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-2195">[CALCITE-2195]
AggregateJoinTransposeRule fails to aggregate over unique column</a>.</div>
</li>
</ul>
<a id="testPushAggregateThroughJoinWithUniqueInput()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testPushAggregateThroughJoinWithUniqueInput</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testPushAggregateThroughJoinWithUniqueInput()</pre>
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-2278">[CALCITE-2278]
AggregateJoinTransposeRule fails to split aggregate call if input contains
an aggregate call and has distinct rows</a>.</div>
</li>
</ul>
<a id="testPushAggregateSumThroughJoin()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testPushAggregateSumThroughJoin</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testPushAggregateSumThroughJoin()</pre>
<div class="block">SUM is the easiest aggregate function to split.</div>
</li>
</ul>
<a id="testPushAggregateSumWithoutGroupKeyThroughJoin()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testPushAggregateSumWithoutGroupKeyThroughJoin</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testPushAggregateSumWithoutGroupKeyThroughJoin()</pre>
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-2105">[CALCITE-2105]
AggregateJoinTransposeRule incorrectly makes a SUM NOT NULL when Aggregate
has no group keys</a>.</div>
</li>
</ul>
<a id="testPushAggregateSumThroughJoinAfterAggregateReduce()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testPushAggregateSumThroughJoinAfterAggregateReduce</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testPushAggregateSumThroughJoinAfterAggregateReduce()</pre>
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-2108">[CALCITE-2108]
AggregateJoinTransposeRule incorrectly splits a SUM0 call when Aggregate
has no group keys</a>.
<p>Similar to <a href="#testPushAggregateSumThroughJoin()"><code>testPushAggregateSumThroughJoin()</code></a>,
but also uses <code>AggregateReduceFunctionsRule</code>.</div>
</li>
</ul>
<a id="testPushAggregateFunctionsThroughJoin()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testPushAggregateFunctionsThroughJoin</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testPushAggregateFunctionsThroughJoin()</pre>
<div class="block">Push a variety of aggregate functions.</div>
</li>
</ul>
<a id="testPushAggregateThroughJoinDistinct()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testPushAggregateThroughJoinDistinct</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testPushAggregateThroughJoinDistinct()</pre>
<div class="block">Push a aggregate functions into a relation that is unique on the join
key.</div>
</li>
</ul>
<a id="testPushAggregateSumNoGroup()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testPushAggregateSumNoGroup</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testPushAggregateSumNoGroup()</pre>
<div class="block">Push count(*) through join, no GROUP BY.</div>
</li>
</ul>
<a id="testPushAggregateThroughJoinOnEmptyLogicalValues()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testPushAggregateThroughJoinOnEmptyLogicalValues</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testPushAggregateThroughJoinOnEmptyLogicalValues()</pre>
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-3076">[CALCITE-3076]
AggregateJoinTransposeRule throws error for unique under aggregate keys when
generating merged calls</a>.</div>
</li>
</ul>
<a id="testPushDistinctAggregateIntoJoin()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testPushDistinctAggregateIntoJoin</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testPushDistinctAggregateIntoJoin()
throws java.lang.Exception</pre>
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-2249">[CALCITE-2249]
AggregateJoinTransposeRule generates inequivalent nodes if Aggregate relNode contains
distinct aggregate function.</a>.</div>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testAggregateMerge1()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testAggregateMerge1</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testAggregateMerge1()</pre>
<div class="block">Test case for AggregateMergeRule, should merge 2 aggregates
into a single aggregate.</div>
</li>
</ul>
<a id="testAggregateMerge2()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testAggregateMerge2</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testAggregateMerge2()</pre>
<div class="block">Test case for AggregateMergeRule, should merge 2 aggregates
into a single aggregate, top aggregate is not simple aggregate.</div>
</li>
</ul>
<a id="testAggregateMerge3()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testAggregateMerge3</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testAggregateMerge3()</pre>
<div class="block">Test case for AggregateMergeRule, should not merge 2 aggregates
into a single aggregate, since lower aggregate is not simple aggregate.</div>
</li>
</ul>
<a id="testAggregateMerge4()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testAggregateMerge4</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testAggregateMerge4()</pre>
<div class="block">Test case for AggregateMergeRule, should not merge 2 aggregates
into a single aggregate, since it contains distinct aggregate
function.</div>
</li>
</ul>
<a id="testAggregateMerge5()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testAggregateMerge5</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testAggregateMerge5()</pre>
<div class="block">Test case for AggregateMergeRule, should not merge 2 aggregates
into a single aggregate, since AVG doesn't support splitting.</div>
</li>
</ul>
<a id="testAggregateMerge6()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testAggregateMerge6</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testAggregateMerge6()</pre>
<div class="block">Test case for AggregateMergeRule, should not merge 2 aggregates
into a single aggregate, since top agg has no group key, and
lower agg function is COUNT.</div>
</li>
</ul>
<a id="testAggregateMerge7()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testAggregateMerge7</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testAggregateMerge7()</pre>
<div class="block">Test case for AggregateMergeRule, should not merge 2 aggregates
into a single aggregate, since top agg contains empty grouping set,
and lower agg function is COUNT.</div>
</li>
</ul>
<a id="testAggregateMerge8()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testAggregateMerge8</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testAggregateMerge8()</pre>
<div class="block">Test case for AggregateMergeRule, should merge 2 aggregates
into a single aggregate, since both top and bottom aggregates
contains empty grouping set and they are mergable.</div>
</li>
</ul>
<a id="testAggregateRemove1()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testAggregateRemove1</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testAggregateRemove1()</pre>
<div class="block">Test case for AggregateRemoveRule, should remove aggregates since
empno is unique and all aggregate functions are splittable.</div>
</li>
</ul>
<a id="testAggregateRemove2()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testAggregateRemove2</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testAggregateRemove2()</pre>
<div class="block">Test case for AggregateRemoveRule, should remove aggregates since
empno is unique and there are no aggregate functions.</div>
</li>
</ul>
<a id="testAggregateRemove3()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testAggregateRemove3</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testAggregateRemove3()</pre>
<div class="block">Test case for AggregateRemoveRule, should remove aggregates since
empno is unique and all aggregate functions are splittable. Count
aggregate function should be transformed to CASE function call
because mgr is nullable.</div>
</li>
</ul>
<a id="testAggregateRemove4()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testAggregateRemove4</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testAggregateRemove4()</pre>
<div class="block">Negative test case for AggregateRemoveRule, should not
remove aggregate because avg is not splittable.</div>
</li>
</ul>
<a id="testAggregateRemove5()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testAggregateRemove5</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testAggregateRemove5()</pre>
<div class="block">Negative test case for AggregateRemoveRule, should not
remove non-simple aggregates.</div>
</li>
</ul>
<a id="testAggregateRemove6()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testAggregateRemove6</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testAggregateRemove6()</pre>
<div class="block">Negative test case for AggregateRemoveRule, should not
remove aggregate because deptno is not unique.</div>
</li>
</ul>
<a id="testAggregateJoinRemove1()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testAggregateJoinRemove1</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testAggregateJoinRemove1()</pre>
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-2712">[CALCITE-2712]
Should remove the left join since the aggregate has no call and
only uses column in the left input of the bottom join as group key.</a>.</div>
</li>
</ul>
<a id="testAggregateJoinRemove2()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testAggregateJoinRemove2</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testAggregateJoinRemove2()</pre>
<div class="block">Similar to <a href="#testAggregateJoinRemove1()"><code>testAggregateJoinRemove1()</code></a> but has aggregate
call with distinct.</div>
</li>
</ul>
<a id="testAggregateJoinRemove3()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testAggregateJoinRemove3</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testAggregateJoinRemove3()</pre>
<div class="block">Similar to <a href="#testAggregateJoinRemove1()"><code>testAggregateJoinRemove1()</code></a> but should not
remove the left join since the aggregate uses column in the right
input of the bottom join.</div>
</li>
</ul>
<a id="testAggregateJoinRemove4()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testAggregateJoinRemove4</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testAggregateJoinRemove4()</pre>
<div class="block">Similar to <a href="#testAggregateJoinRemove1()"><code>testAggregateJoinRemove1()</code></a> but right join.</div>
</li>
</ul>
<a id="testAggregateJoinRemove5()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testAggregateJoinRemove5</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testAggregateJoinRemove5()</pre>
<div class="block">Similar to <a href="#testAggregateJoinRemove2()"><code>testAggregateJoinRemove2()</code></a> but right join.</div>
</li>
</ul>
<a id="testAggregateJoinRemove6()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testAggregateJoinRemove6</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testAggregateJoinRemove6()</pre>
<div class="block">Similar to <a href="#testAggregateJoinRemove3()"><code>testAggregateJoinRemove3()</code></a> but right join.</div>
</li>
</ul>
<a id="testAggregateJoinRemove7()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testAggregateJoinRemove7</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testAggregateJoinRemove7()</pre>
<div class="block">Similar to <a href="#testAggregateJoinRemove1()"><code>testAggregateJoinRemove1()</code></a>;
Should remove the bottom join since the aggregate has no aggregate
call.</div>
</li>
</ul>
<a id="testAggregateJoinRemove8()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testAggregateJoinRemove8</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testAggregateJoinRemove8()</pre>
<div class="block">Similar to <a href="#testAggregateJoinRemove7()"><code>testAggregateJoinRemove7()</code></a> but has aggregate
call.</div>
</li>
</ul>
<a id="testAggregateJoinRemove9()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testAggregateJoinRemove9</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testAggregateJoinRemove9()</pre>
<div class="block">Similar to <a href="#testAggregateJoinRemove7()"><code>testAggregateJoinRemove7()</code></a> but use columns in
the right input of the top join.</div>
</li>
</ul>
<a id="testAggregateJoinRemove10()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testAggregateJoinRemove10</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testAggregateJoinRemove10()</pre>
<div class="block">Similar to <a href="#testAggregateJoinRemove1()"><code>testAggregateJoinRemove1()</code></a>;
Should not remove the bottom join since the aggregate uses column in the
right input of bottom join.</div>
</li>
</ul>
<a id="testProjectJoinRemove1()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testProjectJoinRemove1</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testProjectJoinRemove1()</pre>
<div class="block">Similar to <a href="#testAggregateJoinRemove1()"><code>testAggregateJoinRemove1()</code></a>;
Should remove the bottom join since the project uses column in the
right input of bottom join.</div>
</li>
</ul>
<a id="testProjectJoinRemove2()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testProjectJoinRemove2</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testProjectJoinRemove2()</pre>
<div class="block">Similar to <a href="#testAggregateJoinRemove1()"><code>testAggregateJoinRemove1()</code></a>;
Should not remove the bottom join since the project uses column in the
left input of bottom join.</div>
</li>
</ul>
<a id="testProjectJoinRemove3()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testProjectJoinRemove3</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testProjectJoinRemove3()</pre>
<div class="block">Similar to <a href="#testAggregateJoinRemove1()"><code>testAggregateJoinRemove1()</code></a>;
Should not remove the bottom join since the right join keys of bottom
join are not unique.</div>
</li>
</ul>
<a id="testProjectJoinRemove4()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testProjectJoinRemove4</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testProjectJoinRemove4()</pre>
<div class="block">Similar to <a href="#testAggregateJoinRemove1()"><code>testAggregateJoinRemove1()</code></a>;
Should remove the left join since the join key of the right input is
unique.</div>
</li>
</ul>
<a id="testProjectJoinRemove5()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testProjectJoinRemove5</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testProjectJoinRemove5()</pre>
<div class="block">Similar to <a href="#testAggregateJoinRemove1()"><code>testAggregateJoinRemove1()</code></a>;
Should not remove the left join since the join key of the right input is
not unique.</div>
</li>
</ul>
<a id="testProjectJoinRemove6()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testProjectJoinRemove6</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testProjectJoinRemove6()</pre>
<div class="block">Similar to <a href="#testAggregateJoinRemove1()"><code>testAggregateJoinRemove1()</code></a>;
Should not remove the left join since the project use columns in the right
input of the join.</div>
</li>
</ul>
<a id="testProjectJoinRemove7()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testProjectJoinRemove7</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testProjectJoinRemove7()</pre>
<div class="block">Similar to <a href="#testAggregateJoinRemove1()"><code>testAggregateJoinRemove1()</code></a>;
Should remove the right join since the join key of the left input is
unique.</div>
</li>
</ul>
<a id="testProjectJoinRemove8()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testProjectJoinRemove8</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testProjectJoinRemove8()</pre>
<div class="block">Similar to <a href="#testAggregateJoinRemove1()"><code>testAggregateJoinRemove1()</code></a>;
Should not remove the right join since the join key of the left input is
not unique.</div>
</li>
</ul>
<a id="testProjectJoinRemove9()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testProjectJoinRemove9</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testProjectJoinRemove9()</pre>
<div class="block">Similar to <a href="#testAggregateJoinRemove1()"><code>testAggregateJoinRemove1()</code></a>;
Should not remove the right join since the project uses columns in the
left input of the join.</div>
</li>
</ul>
<a id="testSwapOuterJoin()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testSwapOuterJoin</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testSwapOuterJoin()</pre>
</li>
</ul>
<a id="testPushJoinCondDownToProject()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testPushJoinCondDownToProject</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testPushJoinCondDownToProject()</pre>
</li>
</ul>
<a id="testSortJoinTranspose1()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testSortJoinTranspose1</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testSortJoinTranspose1()</pre>
</li>
</ul>
<a id="testSortJoinTranspose2()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testSortJoinTranspose2</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testSortJoinTranspose2()</pre>
</li>
</ul>
<a id="testSortJoinTranspose3()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testSortJoinTranspose3</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testSortJoinTranspose3()</pre>
</li>
</ul>
<a id="testSortJoinTranspose4()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testSortJoinTranspose4</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testSortJoinTranspose4()</pre>
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-931">[CALCITE-931]
Wrong collation trait in SortJoinTransposeRule for right joins</a>.</div>
</li>
</ul>
<a id="testSortJoinTranspose5()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testSortJoinTranspose5</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testSortJoinTranspose5()</pre>
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-1498">[CALCITE-1498]
Avoid LIMIT with trivial ORDER BY being pushed through JOIN endlessly</a>.</div>
</li>
</ul>
<a id="testSortJoinTranspose6()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testSortJoinTranspose6</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testSortJoinTranspose6()</pre>
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-1507">[CALCITE-1507]
OFFSET cannot be pushed through a JOIN if the non-preserved side of outer
join is not count-preserving</a>.</div>
</li>
</ul>
<a id="testSortJoinTranspose7()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testSortJoinTranspose7</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testSortJoinTranspose7()</pre>
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-1507">[CALCITE-1507]
OFFSET cannot be pushed through a JOIN if the non-preserved side of outer
join is not count-preserving</a>.</div>
</li>
</ul>
<a id="testSortProjectTranspose1()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testSortProjectTranspose1</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testSortProjectTranspose1()</pre>
</li>
</ul>
<a id="testSortProjectTranspose2()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testSortProjectTranspose2</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testSortProjectTranspose2()</pre>
</li>
</ul>
<a id="testSortProjectTranspose3()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testSortProjectTranspose3</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testSortProjectTranspose3()</pre>
</li>
</ul>
<a id="testAggregateConstantKeyRule()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testAggregateConstantKeyRule</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testAggregateConstantKeyRule()</pre>
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-1023">[CALCITE-1023]
Planner rule that removes Aggregate keys that are constant</a>.</div>
</li>
</ul>
<a id="testAggregateConstantKeyRule2()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testAggregateConstantKeyRule2</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testAggregateConstantKeyRule2()</pre>
<div class="block">Tests <code>AggregateProjectPullUpConstantsRule</code> where reduction is not
possible because "deptno" is the only key.</div>
</li>
</ul>
<a id="testAggregateConstantKeyRule3()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testAggregateConstantKeyRule3</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testAggregateConstantKeyRule3()</pre>
<div class="block">Tests <code>AggregateProjectPullUpConstantsRule</code> where both keys are
constants but only one can be removed.</div>
</li>
</ul>
<a id="testReduceExpressionsNot()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testReduceExpressionsNot</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testReduceExpressionsNot()</pre>
</li>
</ul>
<a id="checkSubQuery(java.lang.String)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>checkSubQuery</h4>
<pre class="methodSignature">private&nbsp;<a href="RelOptTestBase.Sql.html" title="class in org.apache.calcite.test">RelOptTestBase.Sql</a>&nbsp;checkSubQuery&#8203;(java.lang.String&nbsp;sql)</pre>
</li>
</ul>
<a id="testExpandProjectScalar()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testExpandProjectScalar</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testExpandProjectScalar()
throws java.lang.Exception</pre>
<div class="block">Tests expanding a sub-query, specifically an uncorrelated scalar
sub-query in a project (SELECT clause).</div>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testSelectNotInCorrelated()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testSelectNotInCorrelated</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testSelectNotInCorrelated()</pre>
</li>
</ul>
<a id="testWhereNotInCorrelated()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testWhereNotInCorrelated</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testWhereNotInCorrelated()</pre>
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-1493">[CALCITE-1493]
Wrong plan for NOT IN correlated queries</a>.</div>
</li>
</ul>
<a id="testWhereNotInCorrelated2()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testWhereNotInCorrelated2</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testWhereNotInCorrelated2()</pre>
</li>
</ul>
<a id="testAll()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testAll</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testAll()</pre>
</li>
</ul>
<a id="testSome()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testSome</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testSome()</pre>
</li>
</ul>
<a id="testAnyInProjectNonNullable()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testAnyInProjectNonNullable</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testAnyInProjectNonNullable()</pre>
<div class="block">Test case for testing type created by SubQueryRemoveRule: an
ANY sub-query is non-nullable therefore plan should have cast.</div>
</li>
</ul>
<a id="testAnyInProjectNullable()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testAnyInProjectNullable</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testAnyInProjectNullable()</pre>
<div class="block">Test case for testing type created by SubQueryRemoveRule; an
ANY sub-query is nullable therefore plan should not have cast.</div>
</li>
</ul>
<a id="testSomeWithEquality()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testSomeWithEquality</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testSomeWithEquality()</pre>
</li>
</ul>
<a id="testSomeWithEquality2()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testSomeWithEquality2</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testSomeWithEquality2()</pre>
</li>
</ul>
<a id="testWhereOrSubQuery()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testWhereOrSubQuery</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testWhereOrSubQuery()</pre>
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-1546">[CALCITE-1546]
Sub-queries connected by OR</a>.</div>
</li>
</ul>
<a id="testExpandProjectIn()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testExpandProjectIn</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testExpandProjectIn()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testExpandProjectInNullable()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testExpandProjectInNullable</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testExpandProjectInNullable()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testExpandProjectInComposite()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testExpandProjectInComposite</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testExpandProjectInComposite()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testExpandProjectExists()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testExpandProjectExists</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testExpandProjectExists()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testExpandFilterScalar()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testExpandFilterScalar</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testExpandFilterScalar()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testExpandFilterIn()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testExpandFilterIn</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testExpandFilterIn()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testExpandFilterInComposite()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testExpandFilterInComposite</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testExpandFilterInComposite()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testExpandFilterIn3Value()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testExpandFilterIn3Value</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testExpandFilterIn3Value()
throws java.lang.Exception</pre>
<div class="block">An IN filter that requires full 3-value logic (true, false, unknown).</div>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testExpandFilterExists()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testExpandFilterExists</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testExpandFilterExists()
throws java.lang.Exception</pre>
<div class="block">An EXISTS filter that can be converted into true/false.</div>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testExpandFilterExistsSimple()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testExpandFilterExistsSimple</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testExpandFilterExistsSimple()
throws java.lang.Exception</pre>
<div class="block">An EXISTS filter that can be converted into a semi-join.</div>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testExpandFilterExistsSimpleAnd()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testExpandFilterExistsSimpleAnd</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testExpandFilterExistsSimpleAnd()
throws java.lang.Exception</pre>
<div class="block">An EXISTS filter that can be converted into a semi-join.</div>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testExpandJoinScalar()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testExpandJoinScalar</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testExpandJoinScalar()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testExpandJoinIn()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testExpandJoinIn</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testExpandJoinIn()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testExpandJoinInComposite()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testExpandJoinInComposite</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testExpandJoinInComposite()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testExpandJoinExists()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testExpandJoinExists</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testExpandJoinExists()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testDecorrelateExists()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testDecorrelateExists</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testDecorrelateExists()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testDecorrelateTwoExists()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testDecorrelateTwoExists</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testDecorrelateTwoExists()
throws java.lang.Exception</pre>
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-1511">[CALCITE-1511]
AssertionError while decorrelating query with two EXISTS
sub-queries</a>.</div>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testDecorrelateUncorrelatedInAndCorrelatedExists()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testDecorrelateUncorrelatedInAndCorrelatedExists</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testDecorrelateUncorrelatedInAndCorrelatedExists()
throws java.lang.Exception</pre>
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-2028">[CALCITE-2028]
Un-correlated IN sub-query should be converted into a Join,
rather than a Correlate without correlation variables </a>.</div>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testDecorrelateTwoIn()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testDecorrelateTwoIn</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testDecorrelateTwoIn()
throws java.lang.Exception</pre>
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-1537">[CALCITE-1537]
Unnecessary project expression in multi-sub-query plan</a>.</div>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testDecorrelateTwoScalar()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testDecorrelateTwoScalar</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testDecorrelateTwoScalar()
throws java.lang.Exception</pre>
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-1045">[CALCITE-1045]
Decorrelate sub-queries in Project and Join</a>, with the added
complication that there are two sub-queries.</div>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testWhereInJoinCorrelated()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testWhereInJoinCorrelated</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testWhereInJoinCorrelated()</pre>
</li>
</ul>
<a id="testWhereInCorrelated()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testWhereInCorrelated</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testWhereInCorrelated()</pre>
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-1494">[CALCITE-1494]
Inefficient plan for correlated sub-queries</a>. In "planAfter", there
must be only one scan each of emp and dept. We don't need a separate
value-generator for emp.job.</div>
</li>
</ul>
<a id="testWhereExpressionInCorrelated()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testWhereExpressionInCorrelated</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testWhereExpressionInCorrelated()</pre>
</li>
</ul>
<a id="testWhereExpressionInCorrelated2()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testWhereExpressionInCorrelated2</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testWhereExpressionInCorrelated2()</pre>
</li>
</ul>
<a id="testExpandWhereComparisonCorrelated()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testExpandWhereComparisonCorrelated</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testExpandWhereComparisonCorrelated()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="testCustomColumnResolvingInNonCorrelatedSubQuery()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testCustomColumnResolvingInNonCorrelatedSubQuery</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testCustomColumnResolvingInNonCorrelatedSubQuery()</pre>
</li>
</ul>
<a id="testCustomColumnResolvingInCorrelatedSubQuery()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testCustomColumnResolvingInCorrelatedSubQuery</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testCustomColumnResolvingInCorrelatedSubQuery()</pre>
</li>
</ul>
<a id="testCustomColumnResolvingInCorrelatedSubQuery2()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testCustomColumnResolvingInCorrelatedSubQuery2</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testCustomColumnResolvingInCorrelatedSubQuery2()</pre>
</li>
</ul>
<a id="testDecorrelateAggWithConstantGroupKey()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testDecorrelateAggWithConstantGroupKey</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testDecorrelateAggWithConstantGroupKey()</pre>
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-2744">[CALCITE-2744]
RelDecorrelator use wrong output map for LogicalAggregate decorrelate</a>.</div>
</li>
</ul>
<a id="testDecorrelateAggWithMultiParamsAggCall()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testDecorrelateAggWithMultiParamsAggCall</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testDecorrelateAggWithMultiParamsAggCall()</pre>
<div class="block">Test case for CALCITE-2744 for aggregate decorrelate with multi-param agg call
but without group key.</div>
</li>
</ul>
<a id="testDecorrelateAggWithMultiParamsAggCall2()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testDecorrelateAggWithMultiParamsAggCall2</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testDecorrelateAggWithMultiParamsAggCall2()</pre>
<div class="block">Same as <a href="#testDecorrelateAggWithMultiParamsAggCall()"><code>testDecorrelateAggWithMultiParamsAggCall()</code></a>
but with a constant group key.</div>
</li>
</ul>
<a id="testExtractYearToRange()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testExtractYearToRange</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testExtractYearToRange()</pre>
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-434">[CALCITE-434]
Converting predicates on date dimension columns into date ranges</a>,
specifically a rule that converts <code>EXTRACT(YEAR FROM ...) = constant</code>
to a range.</div>
</li>
</ul>
<a id="testExtractYearMonthToRange()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testExtractYearMonthToRange</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testExtractYearMonthToRange()</pre>
</li>
</ul>
<a id="testFilterRemoveIsNotDistinctFromRule()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testFilterRemoveIsNotDistinctFromRule</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testFilterRemoveIsNotDistinctFromRule()</pre>
</li>
</ul>
<a id="testOversimplifiedCaseStatement()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testOversimplifiedCaseStatement</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testOversimplifiedCaseStatement()</pre>
</li>
</ul>
<a id="testNoOversimplificationBelowIsNull()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testNoOversimplificationBelowIsNull</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testNoOversimplificationBelowIsNull()</pre>
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-2726">[CALCITE-2726]
ReduceExpressionRule may oversimplify filter conditions containing nulls</a>.</div>
</li>
</ul>
<a id="testExchangeRemoveConstantKeysRule()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testExchangeRemoveConstantKeysRule</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testExchangeRemoveConstantKeysRule()</pre>
</li>
</ul>
<a id="testReduceAverageWithNoReduceSum()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testReduceAverageWithNoReduceSum</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testReduceAverageWithNoReduceSum()</pre>
</li>
</ul>
<a id="testNoReduceAverage()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testNoReduceAverage</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testNoReduceAverage()</pre>
</li>
</ul>
<a id="testNoReduceSum()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testNoReduceSum</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testNoReduceSum()</pre>
</li>
</ul>
<a id="testReduceAverageAndVarWithNoReduceStddev()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testReduceAverageAndVarWithNoReduceStddev</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testReduceAverageAndVarWithNoReduceStddev()</pre>
</li>
</ul>
<a id="testReduceAverageAndSumWithNoReduceStddevAndVar()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testReduceAverageAndSumWithNoReduceStddevAndVar</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testReduceAverageAndSumWithNoReduceStddevAndVar()</pre>
</li>
</ul>
<a id="testReduceAllAggregateFunctions()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testReduceAllAggregateFunctions</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testReduceAllAggregateFunctions()</pre>
</li>
</ul>
<a id="testPushProjectWithIsNotDistinctFromPastJoin()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testPushProjectWithIsNotDistinctFromPastJoin</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testPushProjectWithIsNotDistinctFromPastJoin()</pre>
<div class="block">Test case for
<a href="https://issues.apache.org/jira/browse/CALCITE-2803">[CALCITE-2803]
Identify expanded IS NOT DISTINCT FROM expression when pushing project past join</a>.</div>
</li>
</ul>
<a id="testDynamicStarWithUnion()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testDynamicStarWithUnion</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testDynamicStarWithUnion()</pre>
</li>
</ul>
<a id="testFilterAndProjectWithMultiJoin()">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>testFilterAndProjectWithMultiJoin</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;testFilterAndProjectWithMultiJoin()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
</div>
</main>
<!-- ========= END OF CLASS DATA ========= -->
<footer role="contentinfo">
<nav role="navigation">
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a id="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/RelOptRulesTest.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../index-all.html">Index</a></li>
<li><a href="../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a id="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</nav>
<p class="legalCopy"><small>Copyright &#169; 2012&#x2013;2019 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
</footer>
</body>
</html>