blob: d2e31f1b3fbc1dbc190b4eacbca9bd87074eb290 [file] [log] [blame]
<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc -->
<title>RexSimplify (Apache Calcite API)</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../jquery/jquery-ui.css" title="Style">
<script type="text/javascript" src="../../../../script.js"></script>
<script type="text/javascript" src="../../../../jquery/jszip/dist/jszip.min.js"></script>
<script type="text/javascript" src="../../../../jquery/jszip-utils/dist/jszip-utils.min.js"></script>
<!--[if IE]>
<script type="text/javascript" src="../../../../jquery/jszip-utils/dist/jszip-utils-ie.min.js"></script>
<![endif]-->
<script type="text/javascript" src="../../../../jquery/jquery-3.3.1.js"></script>
<script type="text/javascript" src="../../../../jquery/jquery-migrate-3.0.1.js"></script>
<script type="text/javascript" src="../../../../jquery/jquery-ui.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="RexSimplify (Apache Calcite API)";
}
}
catch(err) {
}
//-->
var data = {"i0":10,"i1":9,"i2":10,"i3":10,"i4":9,"i5":9,"i6":9,"i7":9,"i8":9,"i9":10,"i10":9,"i11":10,"i12":10,"i13":10,"i14":10,"i15":42,"i16":10,"i17":10,"i18":10,"i19":10,"i20":42,"i21":10,"i22":10,"i23":9,"i24":9,"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":42,"i41":10,"i42":42,"i43":10,"i44":10,"i45":10,"i46":10,"i47":10,"i48":10,"i49":10,"i50":10,"i51":10,"i52":10,"i53":10,"i54":42};
var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"],32:["t6","Deprecated 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/RexSimplify.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.rex</a></div>
<h2 title="Class RexSimplify" class="title">Class RexSimplify</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li>java.lang.Object</li>
<li>
<ul class="inheritance">
<li>org.apache.calcite.rex.RexSimplify</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<hr>
<pre>public class <span class="typeNameLabel">RexSimplify</span>
extends java.lang.Object</pre>
<div class="block">Context required to simplify a row-expression.</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>(package private) static class&nbsp;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="RexSimplify.CaseBranch.html" title="class in org.apache.calcite.rex">RexSimplify.CaseBranch</a></span></code></th>
<td class="colLast">
<div class="block">Object to describe a Case branch</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="RexSimplify.Comparison.html" title="class in org.apache.calcite.rex">RexSimplify.Comparison</a></span></code></th>
<td class="colLast">
<div class="block">Represents a simple Comparison.</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="RexSimplify.IsPredicate.html" title="class in org.apache.calcite.rex">RexSimplify.IsPredicate</a></span></code></th>
<td class="colLast">
<div class="block">Represents an IS Predicate.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>private static interface&nbsp;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="RexSimplify.Predicate.html" title="interface in org.apache.calcite.rex">RexSimplify.Predicate</a></span></code></th>
<td class="colLast">
<div class="block">Marker interface for predicates (expressions that evaluate to BOOLEAN).</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>(package private) static class&nbsp;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="RexSimplify.SafeRexVisitor.html" title="enum in org.apache.calcite.rex">RexSimplify.SafeRexVisitor</a></span></code></th>
<td class="colLast">
<div class="block">Decides whether it is safe to flatten the given case part into AND/ORs</div>
</td>
</tr>
</table>
</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>(package private) <a href="RexUnknownAs.html" title="enum in org.apache.calcite.rex">RexUnknownAs</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#defaultUnknownAs">defaultUnknownAs</a></span></code></th>
<td class="colLast">
<div class="block">How to treat UNKNOWN values, if one of the deprecated <code>
simplify</code> methods without an <code>unknownAs</code> argument is called.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>private <a href="RexExecutor.html" title="interface in org.apache.calcite.rex">RexExecutor</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#executor">executor</a></span></code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>private boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#paranoid">paranoid</a></span></code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>(package private) boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#predicateElimination">predicateElimination</a></span></code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>private <a href="../plan/RelOptPredicateList.html" title="class in org.apache.calcite.plan">RelOptPredicateList</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#predicates">predicates</a></span></code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code><a href="RexBuilder.html" title="class in org.apache.calcite.rex">RexBuilder</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#rexBuilder">rexBuilder</a></span></code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>private <a href="../plan/Strong.html" title="class in org.apache.calcite.plan">Strong</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#strong">strong</a></span></code></th>
<td class="colLast">&nbsp;</td>
</tr>
</table>
</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">Modifier</th>
<th class="colSecond" scope="col">Constructor</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>&nbsp;</code></td>
<th class="colConstructorName" scope="row"><code><span class="memberNameLink"><a href="#%3Cinit%3E(org.apache.calcite.rex.RexBuilder,boolean,org.apache.calcite.rex.RexExecutor)">RexSimplify</a></span>&#8203;(<a href="RexBuilder.html" title="class in org.apache.calcite.rex">RexBuilder</a>&nbsp;rexBuilder,
boolean&nbsp;unknownAsFalse,
<a href="RexExecutor.html" title="interface in org.apache.calcite.rex">RexExecutor</a>&nbsp;executor)</code></th>
<td class="colLast">
<div class="block"><span class="deprecatedLabel">Deprecated.</span></div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>&nbsp;</code></td>
<th class="colConstructorName" scope="row"><code><span class="memberNameLink"><a href="#%3Cinit%3E(org.apache.calcite.rex.RexBuilder,org.apache.calcite.plan.RelOptPredicateList,boolean,org.apache.calcite.rex.RexExecutor)">RexSimplify</a></span>&#8203;(<a href="RexBuilder.html" title="class in org.apache.calcite.rex">RexBuilder</a>&nbsp;rexBuilder,
<a href="../plan/RelOptPredicateList.html" title="class in org.apache.calcite.plan">RelOptPredicateList</a>&nbsp;predicates,
boolean&nbsp;unknownAsFalse,
<a href="RexExecutor.html" title="interface in org.apache.calcite.rex">RexExecutor</a>&nbsp;executor)</code></th>
<td class="colLast">
<div class="block"><span class="deprecatedLabel">Deprecated.</span></div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>&nbsp;</code></td>
<th class="colConstructorName" scope="row"><code><span class="memberNameLink"><a href="#%3Cinit%3E(org.apache.calcite.rex.RexBuilder,org.apache.calcite.plan.RelOptPredicateList,org.apache.calcite.rex.RexExecutor)">RexSimplify</a></span>&#8203;(<a href="RexBuilder.html" title="class in org.apache.calcite.rex">RexBuilder</a>&nbsp;rexBuilder,
<a href="../plan/RelOptPredicateList.html" title="class in org.apache.calcite.plan">RelOptPredicateList</a>&nbsp;predicates,
<a href="RexExecutor.html" title="interface in org.apache.calcite.rex">RexExecutor</a>&nbsp;executor)</code></th>
<td class="colLast">
<div class="block">Creates a RexSimplify.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>private </code></td>
<th class="colConstructorName" scope="row"><code><span class="memberNameLink"><a href="#%3Cinit%3E(org.apache.calcite.rex.RexBuilder,org.apache.calcite.plan.RelOptPredicateList,org.apache.calcite.rex.RexUnknownAs,boolean,boolean,org.apache.calcite.rex.RexExecutor)">RexSimplify</a></span>&#8203;(<a href="RexBuilder.html" title="class in org.apache.calcite.rex">RexBuilder</a>&nbsp;rexBuilder,
<a href="../plan/RelOptPredicateList.html" title="class in org.apache.calcite.plan">RelOptPredicateList</a>&nbsp;predicates,
<a href="RexUnknownAs.html" title="enum in org.apache.calcite.rex">RexUnknownAs</a>&nbsp;defaultUnknownAs,
boolean&nbsp;predicateElimination,
boolean&nbsp;paranoid,
<a href="RexExecutor.html" title="interface in org.apache.calcite.rex">RexExecutor</a>&nbsp;executor)</code></th>
<td class="colLast">
<div class="block">Internal constructor.</div>
</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="t1" class="tableTab"><span><a href="javascript:show(1);">Static Methods</a></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><span id="t6" class="tableTab"><span><a href="javascript:show(32);">Deprecated 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 boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#allowedAsPredicateDuringOrSimplification(org.apache.calcite.rex.RexNode)">allowedAsPredicateDuringOrSimplification</a></span>&#8203;(<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;t)</code></th>
<td class="colLast">
<div class="block">Decides whether the given node could be used as a predicate during the simplification
of other OR operands.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>private static boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#canRollUp(org.apache.calcite.avatica.util.TimeUnit,org.apache.calcite.avatica.util.TimeUnit)">canRollUp</a></span>&#8203;(org.apache.calcite.avatica.util.TimeUnit&nbsp;outer,
org.apache.calcite.avatica.util.TimeUnit&nbsp;inner)</code></th>
<td class="colLast">
<div class="block">Method that returns whether we can rollup from inner time unit
to outer time unit.</div>
</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="#ensureParanoidOff()">ensureParanoidOff</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>private <a href="RexSimplify.CaseBranch.html" title="class in org.apache.calcite.rex">RexSimplify.CaseBranch</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#generateBranch(boolean,org.apache.calcite.rex.RexSimplify,org.apache.calcite.rex.RexSimplify.CaseBranch)">generateBranch</a></span>&#8203;(boolean&nbsp;simplifyCond,
<a href="RexSimplify.html" title="class in org.apache.calcite.rex">RexSimplify</a>&nbsp;simplifier,
<a href="RexSimplify.CaseBranch.html" title="class in org.apache.calcite.rex">RexSimplify.CaseBranch</a>&nbsp;branch)</code></th>
<td class="colLast">
<div class="block">If boolean is true, simplify cond in input branch and return new branch.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>private static boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isLowerBound(org.apache.calcite.rex.RexNode)">isLowerBound</a></span>&#8203;(<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;e)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code>(package private) static boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isSafeExpression(org.apache.calcite.rex.RexNode)">isSafeExpression</a></span>&#8203;(<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;r)</code></th>
<td class="colLast">
<div class="block">Analyzes a given <a href="RexNode.html" title="class in org.apache.calcite.rex"><code>RexNode</code></a> and decides whenever it is safe to
unwind.</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code>private static boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isUpperBound(org.apache.calcite.rex.RexNode)">isUpperBound</a></span>&#8203;(<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;e)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code>private static &lt;C extends java.lang.Comparable&lt;C&gt;&gt;<br><a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#processRange(org.apache.calcite.rex.RexBuilder,java.util.List,java.util.Map,org.apache.calcite.rex.RexNode,org.apache.calcite.rex.RexNode,C,org.apache.calcite.sql.SqlKind)">processRange</a></span>&#8203;(<a href="RexBuilder.html" title="class in org.apache.calcite.rex">RexBuilder</a>&nbsp;rexBuilder,
java.util.List&lt;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;terms,
java.util.Map&lt;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>,&#8203;<a href="../util/Pair.html" title="class in org.apache.calcite.util">Pair</a>&lt;com.google.common.collect.Range&lt;C&gt;,&#8203;java.util.List&lt;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&gt;&gt;&nbsp;rangeTerms,
<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;term,
<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;ref,
C&nbsp;v0,
<a href="../sql/SqlKind.html" title="enum in org.apache.calcite.sql">SqlKind</a>&nbsp;comparison)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code>private static &lt;C extends java.lang.Comparable&lt;C&gt;&gt;<br>com.google.common.collect.Range&lt;C&gt;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#range(org.apache.calcite.sql.SqlKind,C)">range</a></span>&#8203;(<a href="../sql/SqlKind.html" title="enum in org.apache.calcite.sql">SqlKind</a>&nbsp;comparison,
C&nbsp;c)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code><a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#removeNullabilityCast(org.apache.calcite.rex.RexNode)">removeNullabilityCast</a></span>&#8203;(<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;e)</code></th>
<td class="colLast">
<div class="block">Removes any casts that change nullability but not type.</div>
</td>
</tr>
<tr id="i10" class="altColor">
<td class="colFirst"><code>private static &lt;E&gt;&nbsp;boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#replaceLast(java.util.List,E,E)">replaceLast</a></span>&#8203;(java.util.List&lt;E&gt;&nbsp;list,
E&nbsp;oldVal,
E&nbsp;newVal)</code></th>
<td class="colLast">
<div class="block">Replaces the last occurrence of one specified value in a list with
another.</div>
</td>
</tr>
<tr id="i11" class="rowColor">
<td class="colFirst"><code>private &lt;C extends java.lang.Comparable&lt;C&gt;&gt;<br>com.google.common.collect.Range&lt;C&gt;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#residue(org.apache.calcite.rex.RexNode,com.google.common.collect.Range,java.util.List,java.lang.Class)">residue</a></span>&#8203;(<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;ref,
com.google.common.collect.Range&lt;C&gt;&nbsp;r0,
java.util.List&lt;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;predicates,
java.lang.Class&lt;C&gt;&nbsp;clazz)</code></th>
<td class="colLast">
<div class="block">Weakens a term so that it checks only what is not implied by predicates.</div>
</td>
</tr>
<tr id="i12" class="altColor">
<td class="colFirst"><code>private boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#sameTypeOrNarrowsNullability(org.apache.calcite.rel.type.RelDataType,org.apache.calcite.rel.type.RelDataType)">sameTypeOrNarrowsNullability</a></span>&#8203;(<a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;oldType,
<a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;newType)</code></th>
<td class="colLast">
<div class="block">Return if the new type is the same and at most narrows the nullability.</div>
</td>
</tr>
<tr id="i13" class="rowColor">
<td class="colFirst"><code><a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#simplify(org.apache.calcite.rex.RexNode)">simplify</a></span>&#8203;(<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;e)</code></th>
<td class="colLast">
<div class="block">Simplifies a boolean expression.</div>
</td>
</tr>
<tr id="i14" class="altColor">
<td class="colFirst"><code>(package private) <a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#simplify(org.apache.calcite.rex.RexNode,org.apache.calcite.rex.RexUnknownAs)">simplify</a></span>&#8203;(<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;e,
<a href="RexUnknownAs.html" title="enum in org.apache.calcite.rex">RexUnknownAs</a>&nbsp;unknownAs)</code></th>
<td class="colLast">
<div class="block">Internal method to simplify an expression.</div>
</td>
</tr>
<tr id="i15" class="rowColor">
<td class="colFirst"><code><a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#simplifyAnd(org.apache.calcite.rex.RexCall)">simplifyAnd</a></span>&#8203;(<a href="RexCall.html" title="class in org.apache.calcite.rex">RexCall</a>&nbsp;e)</code></th>
<td class="colLast">
<div class="block"><span class="deprecatedLabel">Deprecated.</span></div>
</td>
</tr>
<tr id="i16" class="altColor">
<td class="colFirst"><code>(package private) <a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#simplifyAnd(org.apache.calcite.rex.RexCall,org.apache.calcite.rex.RexUnknownAs)">simplifyAnd</a></span>&#8203;(<a href="RexCall.html" title="class in org.apache.calcite.rex">RexCall</a>&nbsp;e,
<a href="RexUnknownAs.html" title="enum in org.apache.calcite.rex">RexUnknownAs</a>&nbsp;unknownAs)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i17" class="rowColor">
<td class="colFirst"><code>(package private) <a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#simplifyAnd2(java.util.List,java.util.List)">simplifyAnd2</a></span>&#8203;(java.util.List&lt;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;terms,
java.util.List&lt;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;notTerms)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i18" class="altColor">
<td class="colFirst"><code>(package private) <a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#simplifyAnd2ForUnknownAsFalse(java.util.List,java.util.List)">simplifyAnd2ForUnknownAsFalse</a></span>&#8203;(java.util.List&lt;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;terms,
java.util.List&lt;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;notTerms)</code></th>
<td class="colLast">
<div class="block">As <a href="#simplifyAnd2(java.util.List,java.util.List)"><code>simplifyAnd2(List, List)</code></a> but we assume that if the expression
returns UNKNOWN it will be interpreted as FALSE.</div>
</td>
</tr>
<tr id="i19" class="rowColor">
<td class="colFirst"><code>private &lt;C extends java.lang.Comparable&lt;C&gt;&gt;<br><a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#simplifyAnd2ForUnknownAsFalse(java.util.List,java.util.List,java.lang.Class)">simplifyAnd2ForUnknownAsFalse</a></span>&#8203;(java.util.List&lt;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;terms,
java.util.List&lt;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;notTerms,
java.lang.Class&lt;C&gt;&nbsp;clazz)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i20" class="altColor">
<td class="colFirst"><code><a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#simplifyAnds(java.lang.Iterable)">simplifyAnds</a></span>&#8203;(java.lang.Iterable&lt;? extends <a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;nodes)</code></th>
<td class="colLast">
<div class="block"><span class="deprecatedLabel">Deprecated.</span></div>
</td>
</tr>
<tr id="i21" class="rowColor">
<td class="colFirst"><code>(package private) <a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#simplifyAnds(java.lang.Iterable,org.apache.calcite.rex.RexUnknownAs)">simplifyAnds</a></span>&#8203;(java.lang.Iterable&lt;? extends <a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;nodes,
<a href="RexUnknownAs.html" title="enum in org.apache.calcite.rex">RexUnknownAs</a>&nbsp;unknownAs)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i22" class="altColor">
<td class="colFirst"><code>private void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#simplifyAndTerms(java.util.List,org.apache.calcite.rex.RexUnknownAs)">simplifyAndTerms</a></span>&#8203;(java.util.List&lt;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;terms,
<a href="RexUnknownAs.html" title="enum in org.apache.calcite.rex">RexUnknownAs</a>&nbsp;unknownAs)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i23" class="rowColor">
<td class="colFirst"><code>private static <a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#simplifyBooleanCase(org.apache.calcite.rex.RexBuilder,java.util.List,org.apache.calcite.rex.RexUnknownAs,org.apache.calcite.rel.type.RelDataType)">simplifyBooleanCase</a></span>&#8203;(<a href="RexBuilder.html" title="class in org.apache.calcite.rex">RexBuilder</a>&nbsp;rexBuilder,
java.util.List&lt;<a href="RexSimplify.CaseBranch.html" title="class in org.apache.calcite.rex">RexSimplify.CaseBranch</a>&gt;&nbsp;inputBranches,
<a href="RexUnknownAs.html" title="enum in org.apache.calcite.rex">RexUnknownAs</a>&nbsp;unknownAs,
<a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;branchType)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i24" class="altColor">
<td class="colFirst"><code>private static <a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#simplifyBooleanCaseGeneric(org.apache.calcite.rex.RexBuilder,java.util.List,org.apache.calcite.rel.type.RelDataType)">simplifyBooleanCaseGeneric</a></span>&#8203;(<a href="RexBuilder.html" title="class in org.apache.calcite.rex">RexBuilder</a>&nbsp;rexBuilder,
java.util.List&lt;<a href="RexSimplify.CaseBranch.html" title="class in org.apache.calcite.rex">RexSimplify.CaseBranch</a>&gt;&nbsp;branches,
<a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;outputType)</code></th>
<td class="colLast">
<div class="block">Generic boolean case simplification.</div>
</td>
</tr>
<tr id="i25" class="rowColor">
<td class="colFirst"><code>private <a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#simplifyCase(org.apache.calcite.rex.RexCall,org.apache.calcite.rex.RexUnknownAs)">simplifyCase</a></span>&#8203;(<a href="RexCall.html" title="class in org.apache.calcite.rex">RexCall</a>&nbsp;call,
<a href="RexUnknownAs.html" title="enum in org.apache.calcite.rex">RexUnknownAs</a>&nbsp;unknownAs)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i26" class="altColor">
<td class="colFirst"><code>private <a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#simplifyCast(org.apache.calcite.rex.RexCall)">simplifyCast</a></span>&#8203;(<a href="RexCall.html" title="class in org.apache.calcite.rex">RexCall</a>&nbsp;e)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i27" class="rowColor">
<td class="colFirst"><code>private <a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#simplifyCeilFloor(org.apache.calcite.rex.RexCall)">simplifyCeilFloor</a></span>&#8203;(<a href="RexCall.html" title="class in org.apache.calcite.rex">RexCall</a>&nbsp;e)</code></th>
<td class="colLast">
<div class="block">Tries to simplify CEIL/FLOOR function on top of CEIL/FLOOR.</div>
</td>
</tr>
<tr id="i28" class="altColor">
<td class="colFirst"><code>private <a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#simplifyCoalesce(org.apache.calcite.rex.RexCall)">simplifyCoalesce</a></span>&#8203;(<a href="RexCall.html" title="class in org.apache.calcite.rex">RexCall</a>&nbsp;call)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i29" class="rowColor">
<td class="colFirst"><code>private <a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#simplifyComparison(org.apache.calcite.rex.RexCall,org.apache.calcite.rex.RexUnknownAs)">simplifyComparison</a></span>&#8203;(<a href="RexCall.html" title="class in org.apache.calcite.rex">RexCall</a>&nbsp;e,
<a href="RexUnknownAs.html" title="enum in org.apache.calcite.rex">RexUnknownAs</a>&nbsp;unknownAs)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i30" class="altColor">
<td class="colFirst"><code>private &lt;C extends java.lang.Comparable&lt;C&gt;&gt;<br><a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#simplifyComparison(org.apache.calcite.rex.RexCall,org.apache.calcite.rex.RexUnknownAs,java.lang.Class)">simplifyComparison</a></span>&#8203;(<a href="RexCall.html" title="class in org.apache.calcite.rex">RexCall</a>&nbsp;e,
<a href="RexUnknownAs.html" title="enum in org.apache.calcite.rex">RexUnknownAs</a>&nbsp;unknownAs,
java.lang.Class&lt;C&gt;&nbsp;clazz)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i31" class="rowColor">
<td class="colFirst"><code><a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#simplifyFilterPredicates(java.lang.Iterable)">simplifyFilterPredicates</a></span>&#8203;(java.lang.Iterable&lt;? extends <a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;predicates)</code></th>
<td class="colLast">
<div class="block">Combines predicates AND, optimizes, and returns null if the result is
always false.</div>
</td>
</tr>
<tr id="i32" class="altColor">
<td class="colFirst"><code>private <a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#simplifyGenericNode(org.apache.calcite.rex.RexCall)">simplifyGenericNode</a></span>&#8203;(<a href="RexCall.html" title="class in org.apache.calcite.rex">RexCall</a>&nbsp;e)</code></th>
<td class="colLast">
<div class="block">Runs simplification inside a non-specialized node.</div>
</td>
</tr>
<tr id="i33" class="rowColor">
<td class="colFirst"><code>private <a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#simplifyIs(org.apache.calcite.rex.RexCall,org.apache.calcite.rex.RexUnknownAs)">simplifyIs</a></span>&#8203;(<a href="RexCall.html" title="class in org.apache.calcite.rex">RexCall</a>&nbsp;call,
<a href="RexUnknownAs.html" title="enum in org.apache.calcite.rex">RexUnknownAs</a>&nbsp;unknownAs)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i34" class="altColor">
<td class="colFirst"><code>private <a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#simplifyIs2(org.apache.calcite.sql.SqlKind,org.apache.calcite.rex.RexNode,org.apache.calcite.rex.RexUnknownAs)">simplifyIs2</a></span>&#8203;(<a href="../sql/SqlKind.html" title="enum in org.apache.calcite.sql">SqlKind</a>&nbsp;kind,
<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;a,
<a href="RexUnknownAs.html" title="enum in org.apache.calcite.rex">RexUnknownAs</a>&nbsp;unknownAs)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i35" class="rowColor">
<td class="colFirst"><code>private <a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#simplifyIsNotNull(org.apache.calcite.rex.RexNode)">simplifyIsNotNull</a></span>&#8203;(<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;a)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i36" class="altColor">
<td class="colFirst"><code>private <a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#simplifyIsNull(org.apache.calcite.rex.RexNode)">simplifyIsNull</a></span>&#8203;(<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;a)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i37" class="rowColor">
<td class="colFirst"><code>private <a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#simplifyIsPredicate(org.apache.calcite.sql.SqlKind,org.apache.calcite.rex.RexNode)">simplifyIsPredicate</a></span>&#8203;(<a href="../sql/SqlKind.html" title="enum in org.apache.calcite.sql">SqlKind</a>&nbsp;kind,
<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;a)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i38" class="altColor">
<td class="colFirst"><code>private void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#simplifyList(java.util.List,org.apache.calcite.rex.RexUnknownAs)">simplifyList</a></span>&#8203;(java.util.List&lt;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;terms,
<a href="RexUnknownAs.html" title="enum in org.apache.calcite.rex">RexUnknownAs</a>&nbsp;unknownAs)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i39" class="rowColor">
<td class="colFirst"><code>private <a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#simplifyNot(org.apache.calcite.rex.RexCall,org.apache.calcite.rex.RexUnknownAs)">simplifyNot</a></span>&#8203;(<a href="RexCall.html" title="class in org.apache.calcite.rex">RexCall</a>&nbsp;call,
<a href="RexUnknownAs.html" title="enum in org.apache.calcite.rex">RexUnknownAs</a>&nbsp;unknownAs)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i40" class="altColor">
<td class="colFirst"><code><a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#simplifyOr(org.apache.calcite.rex.RexCall)">simplifyOr</a></span>&#8203;(<a href="RexCall.html" title="class in org.apache.calcite.rex">RexCall</a>&nbsp;call)</code></th>
<td class="colLast">
<div class="block"><span class="deprecatedLabel">Deprecated.</span></div>
</td>
</tr>
<tr id="i41" class="rowColor">
<td class="colFirst"><code>private <a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#simplifyOr(org.apache.calcite.rex.RexCall,org.apache.calcite.rex.RexUnknownAs)">simplifyOr</a></span>&#8203;(<a href="RexCall.html" title="class in org.apache.calcite.rex">RexCall</a>&nbsp;call,
<a href="RexUnknownAs.html" title="enum in org.apache.calcite.rex">RexUnknownAs</a>&nbsp;unknownAs)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i42" class="altColor">
<td class="colFirst"><code><a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#simplifyOrs(java.util.List)">simplifyOrs</a></span>&#8203;(java.util.List&lt;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;terms)</code></th>
<td class="colLast">
<div class="block"><span class="deprecatedLabel">Deprecated.</span></div>
</td>
</tr>
<tr id="i43" class="rowColor">
<td class="colFirst"><code>private <a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#simplifyOrs(java.util.List,org.apache.calcite.rex.RexUnknownAs)">simplifyOrs</a></span>&#8203;(java.util.List&lt;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;terms,
<a href="RexUnknownAs.html" title="enum in org.apache.calcite.rex">RexUnknownAs</a>&nbsp;unknownAs)</code></th>
<td class="colLast">
<div class="block">Simplifies a list of terms and combines them into an OR.</div>
</td>
</tr>
<tr id="i44" class="altColor">
<td class="colFirst"><code>private void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#simplifyOrTerms(java.util.List,org.apache.calcite.rex.RexUnknownAs)">simplifyOrTerms</a></span>&#8203;(java.util.List&lt;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;terms,
<a href="RexUnknownAs.html" title="enum in org.apache.calcite.rex">RexUnknownAs</a>&nbsp;unknownAs)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i45" class="rowColor">
<td class="colFirst"><code><a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#simplifyPreservingType(org.apache.calcite.rex.RexNode)">simplifyPreservingType</a></span>&#8203;(<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;e)</code></th>
<td class="colLast">
<div class="block">Simplifies a boolean expression, always preserving its type and its
nullability.</div>
</td>
</tr>
<tr id="i46" class="altColor">
<td class="colFirst"><code><a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#simplifyPreservingType(org.apache.calcite.rex.RexNode,org.apache.calcite.rex.RexUnknownAs,boolean)">simplifyPreservingType</a></span>&#8203;(<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;e,
<a href="RexUnknownAs.html" title="enum in org.apache.calcite.rex">RexUnknownAs</a>&nbsp;unknownAs,
boolean&nbsp;matchNullability)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i47" class="rowColor">
<td class="colFirst"><code><a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#simplifyUnknownAs(org.apache.calcite.rex.RexNode,org.apache.calcite.rex.RexUnknownAs)">simplifyUnknownAs</a></span>&#8203;(<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;e,
<a href="RexUnknownAs.html" title="enum in org.apache.calcite.rex">RexUnknownAs</a>&nbsp;unknownAs)</code></th>
<td class="colLast">
<div class="block">As <a href="#simplify(org.apache.calcite.rex.RexNode)"><code>simplify(RexNode)</code></a>, but specifying how UNKNOWN values are to be
treated.</div>
</td>
</tr>
<tr id="i48" class="altColor">
<td class="colFirst"><code><a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#simplifyUnknownAsFalse(org.apache.calcite.rex.RexNode)">simplifyUnknownAsFalse</a></span>&#8203;(<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;e)</code></th>
<td class="colLast">
<div class="block">As <a href="#simplify(org.apache.calcite.rex.RexNode)"><code>simplify(RexNode)</code></a>, but for a boolean expression
for which a result of UNKNOWN will be treated as FALSE.</div>
</td>
</tr>
<tr id="i49" class="rowColor">
<td class="colFirst"><code>private &lt;C extends java.lang.Comparable&lt;C&gt;&gt;<br><a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#simplifyUsingPredicates(org.apache.calcite.rex.RexNode,java.lang.Class)">simplifyUsingPredicates</a></span>&#8203;(<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;e,
java.lang.Class&lt;C&gt;&nbsp;clazz)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i50" class="altColor">
<td class="colFirst"><code>private void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#verify(org.apache.calcite.rex.RexNode,org.apache.calcite.rex.RexNode,org.apache.calcite.rex.RexUnknownAs)">verify</a></span>&#8203;(<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;before,
<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;simplified,
<a href="RexUnknownAs.html" title="enum in org.apache.calcite.rex">RexUnknownAs</a>&nbsp;unknownAs)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i51" class="rowColor">
<td class="colFirst"><code><a href="RexSimplify.html" title="class in org.apache.calcite.rex">RexSimplify</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#withParanoid(boolean)">withParanoid</a></span>&#8203;(boolean&nbsp;paranoid)</code></th>
<td class="colLast">
<div class="block">Returns a RexSimplify the same as this but which verifies that
the expression before and after simplification are equivalent.</div>
</td>
</tr>
<tr id="i52" class="altColor">
<td class="colFirst"><code>private <a href="RexSimplify.html" title="class in org.apache.calcite.rex">RexSimplify</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#withPredicateElimination(boolean)">withPredicateElimination</a></span>&#8203;(boolean&nbsp;predicateElimination)</code></th>
<td class="colLast">
<div class="block">Returns a RexSimplify the same as this but with a specified
<a href="#predicateElimination"><code>predicateElimination</code></a> value.</div>
</td>
</tr>
<tr id="i53" class="rowColor">
<td class="colFirst"><code><a href="RexSimplify.html" title="class in org.apache.calcite.rex">RexSimplify</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#withPredicates(org.apache.calcite.plan.RelOptPredicateList)">withPredicates</a></span>&#8203;(<a href="../plan/RelOptPredicateList.html" title="class in org.apache.calcite.plan">RelOptPredicateList</a>&nbsp;predicates)</code></th>
<td class="colLast">
<div class="block">Returns a RexSimplify the same as this but with a specified
<a href="#predicates"><code>predicates</code></a> value.</div>
</td>
</tr>
<tr id="i54" class="altColor">
<td class="colFirst"><code><a href="RexSimplify.html" title="class in org.apache.calcite.rex">RexSimplify</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#withUnknownAsFalse(boolean)">withUnknownAsFalse</a></span>&#8203;(boolean&nbsp;unknownAsFalse)</code></th>
<td class="colLast">
<div class="block"><span class="deprecatedLabel">Deprecated.</span>
<div class="deprecationComment">Use methods with a <a href="RexUnknownAs.html" title="enum in org.apache.calcite.rex"><code>RexUnknownAs</code></a> argument, such as
<a href="#simplify(org.apache.calcite.rex.RexNode,org.apache.calcite.rex.RexUnknownAs)"><code>simplify(RexNode, RexUnknownAs)</code></a>.</div>
</div>
</td>
</tr>
</table>
<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="paranoid">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>paranoid</h4>
<pre>private final&nbsp;boolean paranoid</pre>
</li>
</ul>
<a id="rexBuilder">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>rexBuilder</h4>
<pre>public final&nbsp;<a href="RexBuilder.html" title="class in org.apache.calcite.rex">RexBuilder</a> rexBuilder</pre>
</li>
</ul>
<a id="predicates">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>predicates</h4>
<pre>private final&nbsp;<a href="../plan/RelOptPredicateList.html" title="class in org.apache.calcite.plan">RelOptPredicateList</a> predicates</pre>
</li>
</ul>
<a id="defaultUnknownAs">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>defaultUnknownAs</h4>
<pre>final&nbsp;<a href="RexUnknownAs.html" title="enum in org.apache.calcite.rex">RexUnknownAs</a> defaultUnknownAs</pre>
<div class="block">How to treat UNKNOWN values, if one of the deprecated <code>
simplify</code> methods without an <code>unknownAs</code> argument is called.</div>
</li>
</ul>
<a id="predicateElimination">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>predicateElimination</h4>
<pre>final&nbsp;boolean predicateElimination</pre>
</li>
</ul>
<a id="executor">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>executor</h4>
<pre>private final&nbsp;<a href="RexExecutor.html" title="interface in org.apache.calcite.rex">RexExecutor</a> executor</pre>
</li>
</ul>
<a id="strong">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>strong</h4>
<pre>private final&nbsp;<a href="../plan/Strong.html" title="class in org.apache.calcite.plan">Strong</a> strong</pre>
</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;(org.apache.calcite.rex.RexBuilder,org.apache.calcite.plan.RelOptPredicateList,org.apache.calcite.rex.RexExecutor)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>RexSimplify</h4>
<pre>public&nbsp;RexSimplify&#8203;(<a href="RexBuilder.html" title="class in org.apache.calcite.rex">RexBuilder</a>&nbsp;rexBuilder,
<a href="../plan/RelOptPredicateList.html" title="class in org.apache.calcite.plan">RelOptPredicateList</a>&nbsp;predicates,
<a href="RexExecutor.html" title="interface in org.apache.calcite.rex">RexExecutor</a>&nbsp;executor)</pre>
<div class="block">Creates a RexSimplify.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>rexBuilder</code> - Rex builder</dd>
<dd><code>predicates</code> - Predicates known to hold on input fields</dd>
<dd><code>executor</code> - Executor for constant reduction, not null</dd>
</dl>
</li>
</ul>
<a id="&lt;init&gt;(org.apache.calcite.rex.RexBuilder,org.apache.calcite.plan.RelOptPredicateList,org.apache.calcite.rex.RexUnknownAs,boolean,boolean,org.apache.calcite.rex.RexExecutor)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>RexSimplify</h4>
<pre>private&nbsp;RexSimplify&#8203;(<a href="RexBuilder.html" title="class in org.apache.calcite.rex">RexBuilder</a>&nbsp;rexBuilder,
<a href="../plan/RelOptPredicateList.html" title="class in org.apache.calcite.plan">RelOptPredicateList</a>&nbsp;predicates,
<a href="RexUnknownAs.html" title="enum in org.apache.calcite.rex">RexUnknownAs</a>&nbsp;defaultUnknownAs,
boolean&nbsp;predicateElimination,
boolean&nbsp;paranoid,
<a href="RexExecutor.html" title="interface in org.apache.calcite.rex">RexExecutor</a>&nbsp;executor)</pre>
<div class="block">Internal constructor.</div>
</li>
</ul>
<a id="&lt;init&gt;(org.apache.calcite.rex.RexBuilder,boolean,org.apache.calcite.rex.RexExecutor)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>RexSimplify</h4>
<pre>@Deprecated
public&nbsp;RexSimplify&#8203;(<a href="RexBuilder.html" title="class in org.apache.calcite.rex">RexBuilder</a>&nbsp;rexBuilder,
boolean&nbsp;unknownAsFalse,
<a href="RexExecutor.html" title="interface in org.apache.calcite.rex">RexExecutor</a>&nbsp;executor)</pre>
<div class="deprecationBlock"><span class="deprecatedLabel">Deprecated.</span></div>
</li>
</ul>
<a id="&lt;init&gt;(org.apache.calcite.rex.RexBuilder,org.apache.calcite.plan.RelOptPredicateList,boolean,org.apache.calcite.rex.RexExecutor)">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>RexSimplify</h4>
<pre>@Deprecated
public&nbsp;RexSimplify&#8203;(<a href="RexBuilder.html" title="class in org.apache.calcite.rex">RexBuilder</a>&nbsp;rexBuilder,
<a href="../plan/RelOptPredicateList.html" title="class in org.apache.calcite.plan">RelOptPredicateList</a>&nbsp;predicates,
boolean&nbsp;unknownAsFalse,
<a href="RexExecutor.html" title="interface in org.apache.calcite.rex">RexExecutor</a>&nbsp;executor)</pre>
<div class="deprecationBlock"><span class="deprecatedLabel">Deprecated.</span></div>
</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="withUnknownAsFalse(boolean)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>withUnknownAsFalse</h4>
<pre class="methodSignature">@Deprecated
public&nbsp;<a href="RexSimplify.html" title="class in org.apache.calcite.rex">RexSimplify</a>&nbsp;withUnknownAsFalse&#8203;(boolean&nbsp;unknownAsFalse)</pre>
<div class="deprecationBlock"><span class="deprecatedLabel">Deprecated.</span>
<div class="deprecationComment">Use methods with a <a href="RexUnknownAs.html" title="enum in org.apache.calcite.rex"><code>RexUnknownAs</code></a> argument, such as
<a href="#simplify(org.apache.calcite.rex.RexNode,org.apache.calcite.rex.RexUnknownAs)"><code>simplify(RexNode, RexUnknownAs)</code></a>.</div>
</div>
<div class="block">Returns a RexSimplify the same as this but with a specified
<a href="#defaultUnknownAs"><code>defaultUnknownAs</code></a> value.</div>
</li>
</ul>
<a id="withPredicates(org.apache.calcite.plan.RelOptPredicateList)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>withPredicates</h4>
<pre class="methodSignature">public&nbsp;<a href="RexSimplify.html" title="class in org.apache.calcite.rex">RexSimplify</a>&nbsp;withPredicates&#8203;(<a href="../plan/RelOptPredicateList.html" title="class in org.apache.calcite.plan">RelOptPredicateList</a>&nbsp;predicates)</pre>
<div class="block">Returns a RexSimplify the same as this but with a specified
<a href="#predicates"><code>predicates</code></a> value.</div>
</li>
</ul>
<a id="withParanoid(boolean)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>withParanoid</h4>
<pre class="methodSignature">public&nbsp;<a href="RexSimplify.html" title="class in org.apache.calcite.rex">RexSimplify</a>&nbsp;withParanoid&#8203;(boolean&nbsp;paranoid)</pre>
<div class="block">Returns a RexSimplify the same as this but which verifies that
the expression before and after simplification are equivalent.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="#verify(org.apache.calcite.rex.RexNode,org.apache.calcite.rex.RexNode,org.apache.calcite.rex.RexUnknownAs)"><code>verify(org.apache.calcite.rex.RexNode, org.apache.calcite.rex.RexNode, org.apache.calcite.rex.RexUnknownAs)</code></a></dd>
</dl>
</li>
</ul>
<a id="withPredicateElimination(boolean)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>withPredicateElimination</h4>
<pre class="methodSignature">private&nbsp;<a href="RexSimplify.html" title="class in org.apache.calcite.rex">RexSimplify</a>&nbsp;withPredicateElimination&#8203;(boolean&nbsp;predicateElimination)</pre>
<div class="block">Returns a RexSimplify the same as this but with a specified
<a href="#predicateElimination"><code>predicateElimination</code></a> value.
<p>This is introduced temporarily, until
<a href="../util/Bug.html#CALCITE_2401_FIXED"><code>[CALCITE-2401] is fixed</code></a>.</div>
</li>
</ul>
<a id="simplifyPreservingType(org.apache.calcite.rex.RexNode)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>simplifyPreservingType</h4>
<pre class="methodSignature">public&nbsp;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;simplifyPreservingType&#8203;(<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;e)</pre>
<div class="block">Simplifies a boolean expression, always preserving its type and its
nullability.
<p>This is useful if you are simplifying expressions in a
<a href="../rel/core/Project.html" title="class in org.apache.calcite.rel.core"><code>Project</code></a>.</div>
</li>
</ul>
<a id="simplifyPreservingType(org.apache.calcite.rex.RexNode,org.apache.calcite.rex.RexUnknownAs,boolean)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>simplifyPreservingType</h4>
<pre class="methodSignature">public&nbsp;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;simplifyPreservingType&#8203;(<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;e,
<a href="RexUnknownAs.html" title="enum in org.apache.calcite.rex">RexUnknownAs</a>&nbsp;unknownAs,
boolean&nbsp;matchNullability)</pre>
</li>
</ul>
<a id="simplify(org.apache.calcite.rex.RexNode)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>simplify</h4>
<pre class="methodSignature">public&nbsp;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;simplify&#8203;(<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;e)</pre>
<div class="block">Simplifies a boolean expression.
<p>In particular:</p>
<ul>
<li><code>simplify(x = 1 AND y = 2 AND NOT x = 1)</code>
returns <code>y = 2</code></li>
<li><code>simplify(x = 1 AND FALSE)</code>
returns <code>FALSE</code></li>
</ul>
<p>Handles UNKNOWN values using the policy specified when you created this
<code>RexSimplify</code>. Unless you used a deprecated constructor, that policy
is <a href="RexUnknownAs.html#UNKNOWN"><code>RexUnknownAs.UNKNOWN</code></a>.
<p>If the expression is a predicate in a WHERE clause, consider instead
using <a href="#simplifyUnknownAsFalse(org.apache.calcite.rex.RexNode)"><code>simplifyUnknownAsFalse(RexNode)</code></a>.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>e</code> - Expression to simplify</dd>
</dl>
</li>
</ul>
<a id="simplifyUnknownAsFalse(org.apache.calcite.rex.RexNode)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>simplifyUnknownAsFalse</h4>
<pre class="methodSignature">public final&nbsp;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;simplifyUnknownAsFalse&#8203;(<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;e)</pre>
<div class="block">As <a href="#simplify(org.apache.calcite.rex.RexNode)"><code>simplify(RexNode)</code></a>, but for a boolean expression
for which a result of UNKNOWN will be treated as FALSE.
<p>Use this form for expressions on a WHERE, ON, HAVING or FILTER(WHERE)
clause.
<p>This may allow certain additional simplifications. A result of UNKNOWN
may yield FALSE, however it may still yield UNKNOWN. (If the simplified
expression has type BOOLEAN NOT NULL, then of course it can only return
FALSE.)</div>
</li>
</ul>
<a id="simplifyUnknownAs(org.apache.calcite.rex.RexNode,org.apache.calcite.rex.RexUnknownAs)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>simplifyUnknownAs</h4>
<pre class="methodSignature">public&nbsp;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;simplifyUnknownAs&#8203;(<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;e,
<a href="RexUnknownAs.html" title="enum in org.apache.calcite.rex">RexUnknownAs</a>&nbsp;unknownAs)</pre>
<div class="block">As <a href="#simplify(org.apache.calcite.rex.RexNode)"><code>simplify(RexNode)</code></a>, but specifying how UNKNOWN values are to be
treated.
<p>If UNKNOWN is treated as FALSE, this may allow certain additional
simplifications. A result of UNKNOWN may yield FALSE, however it may still
yield UNKNOWN. (If the simplified expression has type BOOLEAN NOT NULL,
then of course it can only return FALSE.)</div>
</li>
</ul>
<a id="simplify(org.apache.calcite.rex.RexNode,org.apache.calcite.rex.RexUnknownAs)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>simplify</h4>
<pre class="methodSignature"><a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;simplify&#8203;(<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;e,
<a href="RexUnknownAs.html" title="enum in org.apache.calcite.rex">RexUnknownAs</a>&nbsp;unknownAs)</pre>
<div class="block">Internal method to simplify an expression.
<p>Unlike the public <a href="#simplify(org.apache.calcite.rex.RexNode)"><code>simplify(RexNode)</code></a>
and <a href="#simplifyUnknownAsFalse(org.apache.calcite.rex.RexNode)"><code>simplifyUnknownAsFalse(RexNode)</code></a> methods,
never calls <a href="#verify(org.apache.calcite.rex.RexNode,org.apache.calcite.rex.RexNode,org.apache.calcite.rex.RexUnknownAs)"><code>verify(RexNode, RexNode, RexUnknownAs)</code></a>.
Verify adds an overhead that is only acceptable for a top-level call.</div>
</li>
</ul>
<a id="simplifyGenericNode(org.apache.calcite.rex.RexCall)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>simplifyGenericNode</h4>
<pre class="methodSignature">private&nbsp;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;simplifyGenericNode&#8203;(<a href="RexCall.html" title="class in org.apache.calcite.rex">RexCall</a>&nbsp;e)</pre>
<div class="block">Runs simplification inside a non-specialized node.</div>
</li>
</ul>
<a id="simplifyComparison(org.apache.calcite.rex.RexCall,org.apache.calcite.rex.RexUnknownAs)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>simplifyComparison</h4>
<pre class="methodSignature">private&nbsp;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;simplifyComparison&#8203;(<a href="RexCall.html" title="class in org.apache.calcite.rex">RexCall</a>&nbsp;e,
<a href="RexUnknownAs.html" title="enum in org.apache.calcite.rex">RexUnknownAs</a>&nbsp;unknownAs)</pre>
</li>
</ul>
<a id="simplifyComparison(org.apache.calcite.rex.RexCall,org.apache.calcite.rex.RexUnknownAs,java.lang.Class)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>simplifyComparison</h4>
<pre class="methodSignature">private&nbsp;&lt;C extends java.lang.Comparable&lt;C&gt;&gt;&nbsp;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;simplifyComparison&#8203;(<a href="RexCall.html" title="class in org.apache.calcite.rex">RexCall</a>&nbsp;e,
<a href="RexUnknownAs.html" title="enum in org.apache.calcite.rex">RexUnknownAs</a>&nbsp;unknownAs,
java.lang.Class&lt;C&gt;&nbsp;clazz)</pre>
</li>
</ul>
<a id="simplifyAnds(java.lang.Iterable)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>simplifyAnds</h4>
<pre class="methodSignature">@Deprecated
public&nbsp;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;simplifyAnds&#8203;(java.lang.Iterable&lt;? extends <a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;nodes)</pre>
<div class="deprecationBlock"><span class="deprecatedLabel">Deprecated.</span></div>
<div class="block">Simplifies a conjunction of boolean expressions.</div>
</li>
</ul>
<a id="simplifyAnds(java.lang.Iterable,org.apache.calcite.rex.RexUnknownAs)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>simplifyAnds</h4>
<pre class="methodSignature"><a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;simplifyAnds&#8203;(java.lang.Iterable&lt;? extends <a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;nodes,
<a href="RexUnknownAs.html" title="enum in org.apache.calcite.rex">RexUnknownAs</a>&nbsp;unknownAs)</pre>
</li>
</ul>
<a id="simplifyList(java.util.List,org.apache.calcite.rex.RexUnknownAs)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>simplifyList</h4>
<pre class="methodSignature">private&nbsp;void&nbsp;simplifyList&#8203;(java.util.List&lt;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;terms,
<a href="RexUnknownAs.html" title="enum in org.apache.calcite.rex">RexUnknownAs</a>&nbsp;unknownAs)</pre>
</li>
</ul>
<a id="simplifyAndTerms(java.util.List,org.apache.calcite.rex.RexUnknownAs)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>simplifyAndTerms</h4>
<pre class="methodSignature">private&nbsp;void&nbsp;simplifyAndTerms&#8203;(java.util.List&lt;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;terms,
<a href="RexUnknownAs.html" title="enum in org.apache.calcite.rex">RexUnknownAs</a>&nbsp;unknownAs)</pre>
</li>
</ul>
<a id="simplifyOrTerms(java.util.List,org.apache.calcite.rex.RexUnknownAs)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>simplifyOrTerms</h4>
<pre class="methodSignature">private&nbsp;void&nbsp;simplifyOrTerms&#8203;(java.util.List&lt;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;terms,
<a href="RexUnknownAs.html" title="enum in org.apache.calcite.rex">RexUnknownAs</a>&nbsp;unknownAs)</pre>
</li>
</ul>
<a id="allowedAsPredicateDuringOrSimplification(org.apache.calcite.rex.RexNode)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>allowedAsPredicateDuringOrSimplification</h4>
<pre class="methodSignature">private&nbsp;boolean&nbsp;allowedAsPredicateDuringOrSimplification&#8203;(<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;t)</pre>
<div class="block">Decides whether the given node could be used as a predicate during the simplification
of other OR operands.</div>
</li>
</ul>
<a id="simplifyNot(org.apache.calcite.rex.RexCall,org.apache.calcite.rex.RexUnknownAs)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>simplifyNot</h4>
<pre class="methodSignature">private&nbsp;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;simplifyNot&#8203;(<a href="RexCall.html" title="class in org.apache.calcite.rex">RexCall</a>&nbsp;call,
<a href="RexUnknownAs.html" title="enum in org.apache.calcite.rex">RexUnknownAs</a>&nbsp;unknownAs)</pre>
</li>
</ul>
<a id="simplifyIs(org.apache.calcite.rex.RexCall,org.apache.calcite.rex.RexUnknownAs)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>simplifyIs</h4>
<pre class="methodSignature">private&nbsp;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;simplifyIs&#8203;(<a href="RexCall.html" title="class in org.apache.calcite.rex">RexCall</a>&nbsp;call,
<a href="RexUnknownAs.html" title="enum in org.apache.calcite.rex">RexUnknownAs</a>&nbsp;unknownAs)</pre>
</li>
</ul>
<a id="simplifyIsPredicate(org.apache.calcite.sql.SqlKind,org.apache.calcite.rex.RexNode)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>simplifyIsPredicate</h4>
<pre class="methodSignature">private&nbsp;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;simplifyIsPredicate&#8203;(<a href="../sql/SqlKind.html" title="enum in org.apache.calcite.sql">SqlKind</a>&nbsp;kind,
<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;a)</pre>
</li>
</ul>
<a id="simplifyIs2(org.apache.calcite.sql.SqlKind,org.apache.calcite.rex.RexNode,org.apache.calcite.rex.RexUnknownAs)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>simplifyIs2</h4>
<pre class="methodSignature">private&nbsp;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;simplifyIs2&#8203;(<a href="../sql/SqlKind.html" title="enum in org.apache.calcite.sql">SqlKind</a>&nbsp;kind,
<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;a,
<a href="RexUnknownAs.html" title="enum in org.apache.calcite.rex">RexUnknownAs</a>&nbsp;unknownAs)</pre>
</li>
</ul>
<a id="simplifyIsNotNull(org.apache.calcite.rex.RexNode)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>simplifyIsNotNull</h4>
<pre class="methodSignature">private&nbsp;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;simplifyIsNotNull&#8203;(<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;a)</pre>
</li>
</ul>
<a id="simplifyIsNull(org.apache.calcite.rex.RexNode)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>simplifyIsNull</h4>
<pre class="methodSignature">private&nbsp;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;simplifyIsNull&#8203;(<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;a)</pre>
</li>
</ul>
<a id="simplifyCoalesce(org.apache.calcite.rex.RexCall)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>simplifyCoalesce</h4>
<pre class="methodSignature">private&nbsp;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;simplifyCoalesce&#8203;(<a href="RexCall.html" title="class in org.apache.calcite.rex">RexCall</a>&nbsp;call)</pre>
</li>
</ul>
<a id="simplifyCase(org.apache.calcite.rex.RexCall,org.apache.calcite.rex.RexUnknownAs)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>simplifyCase</h4>
<pre class="methodSignature">private&nbsp;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;simplifyCase&#8203;(<a href="RexCall.html" title="class in org.apache.calcite.rex">RexCall</a>&nbsp;call,
<a href="RexUnknownAs.html" title="enum in org.apache.calcite.rex">RexUnknownAs</a>&nbsp;unknownAs)</pre>
</li>
</ul>
<a id="generateBranch(boolean,org.apache.calcite.rex.RexSimplify,org.apache.calcite.rex.RexSimplify.CaseBranch)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>generateBranch</h4>
<pre class="methodSignature">private&nbsp;<a href="RexSimplify.CaseBranch.html" title="class in org.apache.calcite.rex">RexSimplify.CaseBranch</a>&nbsp;generateBranch&#8203;(boolean&nbsp;simplifyCond,
<a href="RexSimplify.html" title="class in org.apache.calcite.rex">RexSimplify</a>&nbsp;simplifier,
<a href="RexSimplify.CaseBranch.html" title="class in org.apache.calcite.rex">RexSimplify.CaseBranch</a>&nbsp;branch)</pre>
<div class="block">If boolean is true, simplify cond in input branch and return new branch.
Otherwise, simply return input branch.</div>
</li>
</ul>
<a id="sameTypeOrNarrowsNullability(org.apache.calcite.rel.type.RelDataType,org.apache.calcite.rel.type.RelDataType)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>sameTypeOrNarrowsNullability</h4>
<pre class="methodSignature">private&nbsp;boolean&nbsp;sameTypeOrNarrowsNullability&#8203;(<a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;oldType,
<a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;newType)</pre>
<div class="block">Return if the new type is the same and at most narrows the nullability.</div>
</li>
</ul>
<a id="isSafeExpression(org.apache.calcite.rex.RexNode)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isSafeExpression</h4>
<pre class="methodSignature">static&nbsp;boolean&nbsp;isSafeExpression&#8203;(<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;r)</pre>
<div class="block">Analyzes a given <a href="RexNode.html" title="class in org.apache.calcite.rex"><code>RexNode</code></a> and decides whenever it is safe to
unwind.
<p>"Safe" means that it only contains a combination of known good operators.
<p>Division is an unsafe operator; consider the following:
<pre>case when a &gt; 0 then 1 / a else null end</pre></div>
</li>
</ul>
<a id="simplifyBooleanCase(org.apache.calcite.rex.RexBuilder,java.util.List,org.apache.calcite.rex.RexUnknownAs,org.apache.calcite.rel.type.RelDataType)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>simplifyBooleanCase</h4>
<pre class="methodSignature">private static&nbsp;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;simplifyBooleanCase&#8203;(<a href="RexBuilder.html" title="class in org.apache.calcite.rex">RexBuilder</a>&nbsp;rexBuilder,
java.util.List&lt;<a href="RexSimplify.CaseBranch.html" title="class in org.apache.calcite.rex">RexSimplify.CaseBranch</a>&gt;&nbsp;inputBranches,
<a href="RexUnknownAs.html" title="enum in org.apache.calcite.rex">RexUnknownAs</a>&nbsp;unknownAs,
<a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;branchType)</pre>
</li>
</ul>
<a id="simplifyBooleanCaseGeneric(org.apache.calcite.rex.RexBuilder,java.util.List,org.apache.calcite.rel.type.RelDataType)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>simplifyBooleanCaseGeneric</h4>
<pre class="methodSignature">private static&nbsp;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;simplifyBooleanCaseGeneric&#8203;(<a href="RexBuilder.html" title="class in org.apache.calcite.rex">RexBuilder</a>&nbsp;rexBuilder,
java.util.List&lt;<a href="RexSimplify.CaseBranch.html" title="class in org.apache.calcite.rex">RexSimplify.CaseBranch</a>&gt;&nbsp;branches,
<a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;outputType)</pre>
<div class="block">Generic boolean case simplification.
<p>Rewrites:
<pre>
CASE
WHEN p1 THEN x
WHEN p2 THEN y
ELSE z
END
</pre>
to
<pre>(p1 and x) or (p2 and y and not(p1)) or (true and z and not(p1) and not(p2))</pre></div>
</li>
</ul>
<a id="simplifyAnd(org.apache.calcite.rex.RexCall)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>simplifyAnd</h4>
<pre class="methodSignature">@Deprecated
public&nbsp;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;simplifyAnd&#8203;(<a href="RexCall.html" title="class in org.apache.calcite.rex">RexCall</a>&nbsp;e)</pre>
<div class="deprecationBlock"><span class="deprecatedLabel">Deprecated.</span></div>
</li>
</ul>
<a id="simplifyAnd(org.apache.calcite.rex.RexCall,org.apache.calcite.rex.RexUnknownAs)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>simplifyAnd</h4>
<pre class="methodSignature"><a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;simplifyAnd&#8203;(<a href="RexCall.html" title="class in org.apache.calcite.rex">RexCall</a>&nbsp;e,
<a href="RexUnknownAs.html" title="enum in org.apache.calcite.rex">RexUnknownAs</a>&nbsp;unknownAs)</pre>
</li>
</ul>
<a id="simplifyAnd2(java.util.List,java.util.List)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>simplifyAnd2</h4>
<pre class="methodSignature"><a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;simplifyAnd2&#8203;(java.util.List&lt;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;terms,
java.util.List&lt;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;notTerms)</pre>
</li>
</ul>
<a id="simplifyAnd2ForUnknownAsFalse(java.util.List,java.util.List)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>simplifyAnd2ForUnknownAsFalse</h4>
<pre class="methodSignature"><a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;simplifyAnd2ForUnknownAsFalse&#8203;(java.util.List&lt;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;terms,
java.util.List&lt;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;notTerms)</pre>
<div class="block">As <a href="#simplifyAnd2(java.util.List,java.util.List)"><code>simplifyAnd2(List, List)</code></a> but we assume that if the expression
returns UNKNOWN it will be interpreted as FALSE.</div>
</li>
</ul>
<a id="simplifyAnd2ForUnknownAsFalse(java.util.List,java.util.List,java.lang.Class)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>simplifyAnd2ForUnknownAsFalse</h4>
<pre class="methodSignature">private&nbsp;&lt;C extends java.lang.Comparable&lt;C&gt;&gt;&nbsp;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;simplifyAnd2ForUnknownAsFalse&#8203;(java.util.List&lt;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;terms,
java.util.List&lt;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;notTerms,
java.lang.Class&lt;C&gt;&nbsp;clazz)</pre>
</li>
</ul>
<a id="simplifyUsingPredicates(org.apache.calcite.rex.RexNode,java.lang.Class)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>simplifyUsingPredicates</h4>
<pre class="methodSignature">private&nbsp;&lt;C extends java.lang.Comparable&lt;C&gt;&gt;&nbsp;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;simplifyUsingPredicates&#8203;(<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;e,
java.lang.Class&lt;C&gt;&nbsp;clazz)</pre>
</li>
</ul>
<a id="residue(org.apache.calcite.rex.RexNode,com.google.common.collect.Range,java.util.List,java.lang.Class)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>residue</h4>
<pre class="methodSignature">private&nbsp;&lt;C extends java.lang.Comparable&lt;C&gt;&gt;&nbsp;com.google.common.collect.Range&lt;C&gt;&nbsp;residue&#8203;(<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;ref,
com.google.common.collect.Range&lt;C&gt;&nbsp;r0,
java.util.List&lt;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;predicates,
java.lang.Class&lt;C&gt;&nbsp;clazz)</pre>
<div class="block">Weakens a term so that it checks only what is not implied by predicates.
<p>The term is broken into "ref comparison constant",
for example "$0 &lt; 5".
<p>Examples:
<ul>
<li><code>residue($0 &lt; 10, [$0 &lt; 5])</code> returns <code>true</code>
<li><code>residue($0 &lt; 10, [$0 &lt; 20, $0 &gt; 0])</code> returns <code>$0 &lt; 10</code>
</ul></div>
</li>
</ul>
<a id="simplifyOr(org.apache.calcite.rex.RexCall)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>simplifyOr</h4>
<pre class="methodSignature">@Deprecated
public&nbsp;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;simplifyOr&#8203;(<a href="RexCall.html" title="class in org.apache.calcite.rex">RexCall</a>&nbsp;call)</pre>
<div class="deprecationBlock"><span class="deprecatedLabel">Deprecated.</span></div>
<div class="block">Simplifies OR(x, x) into x, and similar.
The simplified expression returns UNKNOWN values as is (not as FALSE).</div>
</li>
</ul>
<a id="simplifyOr(org.apache.calcite.rex.RexCall,org.apache.calcite.rex.RexUnknownAs)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>simplifyOr</h4>
<pre class="methodSignature">private&nbsp;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;simplifyOr&#8203;(<a href="RexCall.html" title="class in org.apache.calcite.rex">RexCall</a>&nbsp;call,
<a href="RexUnknownAs.html" title="enum in org.apache.calcite.rex">RexUnknownAs</a>&nbsp;unknownAs)</pre>
</li>
</ul>
<a id="simplifyOrs(java.util.List)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>simplifyOrs</h4>
<pre class="methodSignature">@Deprecated
public&nbsp;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;simplifyOrs&#8203;(java.util.List&lt;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;terms)</pre>
<div class="deprecationBlock"><span class="deprecatedLabel">Deprecated.</span></div>
<div class="block">Simplifies a list of terms and combines them into an OR.
Modifies the list in place.
The simplified expression returns UNKNOWN values as is (not as FALSE).</div>
</li>
</ul>
<a id="ensureParanoidOff()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>ensureParanoidOff</h4>
<pre class="methodSignature">private&nbsp;void&nbsp;ensureParanoidOff()</pre>
</li>
</ul>
<a id="simplifyOrs(java.util.List,org.apache.calcite.rex.RexUnknownAs)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>simplifyOrs</h4>
<pre class="methodSignature">private&nbsp;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;simplifyOrs&#8203;(java.util.List&lt;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;terms,
<a href="RexUnknownAs.html" title="enum in org.apache.calcite.rex">RexUnknownAs</a>&nbsp;unknownAs)</pre>
<div class="block">Simplifies a list of terms and combines them into an OR.
Modifies the list in place.</div>
</li>
</ul>
<a id="verify(org.apache.calcite.rex.RexNode,org.apache.calcite.rex.RexNode,org.apache.calcite.rex.RexUnknownAs)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>verify</h4>
<pre class="methodSignature">private&nbsp;void&nbsp;verify&#8203;(<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;before,
<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;simplified,
<a href="RexUnknownAs.html" title="enum in org.apache.calcite.rex">RexUnknownAs</a>&nbsp;unknownAs)</pre>
</li>
</ul>
<a id="simplifyCast(org.apache.calcite.rex.RexCall)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>simplifyCast</h4>
<pre class="methodSignature">private&nbsp;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;simplifyCast&#8203;(<a href="RexCall.html" title="class in org.apache.calcite.rex">RexCall</a>&nbsp;e)</pre>
</li>
</ul>
<a id="simplifyCeilFloor(org.apache.calcite.rex.RexCall)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>simplifyCeilFloor</h4>
<pre class="methodSignature">private&nbsp;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;simplifyCeilFloor&#8203;(<a href="RexCall.html" title="class in org.apache.calcite.rex">RexCall</a>&nbsp;e)</pre>
<div class="block">Tries to simplify CEIL/FLOOR function on top of CEIL/FLOOR.
<p>Examples:
<ul>
<li><code>floor(floor($0, flag(hour)), flag(day))</code> returns <code>floor($0, flag(day))</code>
<li><code>ceil(ceil($0, flag(second)), flag(day))</code> returns <code>ceil($0, flag(day))</code>
<li><code>floor(floor($0, flag(day)), flag(second))</code> does not change
</ul></div>
</li>
</ul>
<a id="canRollUp(org.apache.calcite.avatica.util.TimeUnit,org.apache.calcite.avatica.util.TimeUnit)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>canRollUp</h4>
<pre class="methodSignature">private static&nbsp;boolean&nbsp;canRollUp&#8203;(org.apache.calcite.avatica.util.TimeUnit&nbsp;outer,
org.apache.calcite.avatica.util.TimeUnit&nbsp;inner)</pre>
<div class="block">Method that returns whether we can rollup from inner time unit
to outer time unit.</div>
</li>
</ul>
<a id="removeNullabilityCast(org.apache.calcite.rex.RexNode)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>removeNullabilityCast</h4>
<pre class="methodSignature">public&nbsp;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;removeNullabilityCast&#8203;(<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;e)</pre>
<div class="block">Removes any casts that change nullability but not type.
<p>For example, <code>CAST(1 = 0 AS BOOLEAN)</code> becomes <code>1 = 0</code>.</div>
</li>
</ul>
<a id="processRange(org.apache.calcite.rex.RexBuilder,java.util.List,java.util.Map,org.apache.calcite.rex.RexNode,org.apache.calcite.rex.RexNode,java.lang.Comparable,org.apache.calcite.sql.SqlKind)">
<!-- -->
</a><a id="processRange(org.apache.calcite.rex.RexBuilder,java.util.List,java.util.Map,org.apache.calcite.rex.RexNode,org.apache.calcite.rex.RexNode,C,org.apache.calcite.sql.SqlKind)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>processRange</h4>
<pre class="methodSignature">private static&nbsp;&lt;C extends java.lang.Comparable&lt;C&gt;&gt;&nbsp;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;processRange&#8203;(<a href="RexBuilder.html" title="class in org.apache.calcite.rex">RexBuilder</a>&nbsp;rexBuilder,
java.util.List&lt;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;terms,
java.util.Map&lt;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>,&#8203;<a href="../util/Pair.html" title="class in org.apache.calcite.util">Pair</a>&lt;com.google.common.collect.Range&lt;C&gt;,&#8203;java.util.List&lt;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&gt;&gt;&nbsp;rangeTerms,
<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;term,
<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;ref,
C&nbsp;v0,
<a href="../sql/SqlKind.html" title="enum in org.apache.calcite.sql">SqlKind</a>&nbsp;comparison)</pre>
</li>
</ul>
<a id="range(org.apache.calcite.sql.SqlKind,java.lang.Comparable)">
<!-- -->
</a><a id="range(org.apache.calcite.sql.SqlKind,C)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>range</h4>
<pre class="methodSignature">private static&nbsp;&lt;C extends java.lang.Comparable&lt;C&gt;&gt;&nbsp;com.google.common.collect.Range&lt;C&gt;&nbsp;range&#8203;(<a href="../sql/SqlKind.html" title="enum in org.apache.calcite.sql">SqlKind</a>&nbsp;comparison,
C&nbsp;c)</pre>
</li>
</ul>
<a id="isUpperBound(org.apache.calcite.rex.RexNode)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isUpperBound</h4>
<pre class="methodSignature">private static&nbsp;boolean&nbsp;isUpperBound&#8203;(<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;e)</pre>
</li>
</ul>
<a id="isLowerBound(org.apache.calcite.rex.RexNode)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isLowerBound</h4>
<pre class="methodSignature">private static&nbsp;boolean&nbsp;isLowerBound&#8203;(<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;e)</pre>
</li>
</ul>
<a id="simplifyFilterPredicates(java.lang.Iterable)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>simplifyFilterPredicates</h4>
<pre class="methodSignature">public&nbsp;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;simplifyFilterPredicates&#8203;(java.lang.Iterable&lt;? extends <a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;predicates)</pre>
<div class="block">Combines predicates AND, optimizes, and returns null if the result is
always false.
<p>The expression is simplified on the assumption that an UNKNOWN value
is always treated as FALSE. Therefore the simplified expression may
sometimes evaluate to FALSE where the original expression would evaluate to
UNKNOWN.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>predicates</code> - Filter condition predicates</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>simplified conjunction of predicates for the filter, null if always false</dd>
</dl>
</li>
</ul>
<a id="replaceLast(java.util.List,java.lang.Object,java.lang.Object)">
<!-- -->
</a><a id="replaceLast(java.util.List,E,E)">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>replaceLast</h4>
<pre class="methodSignature">private static&nbsp;&lt;E&gt;&nbsp;boolean&nbsp;replaceLast&#8203;(java.util.List&lt;E&gt;&nbsp;list,
E&nbsp;oldVal,
E&nbsp;newVal)</pre>
<div class="block">Replaces the last occurrence of one specified value in a list with
another.
<p>Does not change the size of the list.
<p>Returns whether the value was found.</div>
</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/RexSimplify.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>