blob: 6147f7ea98e8a39fb565878701308638cc6d2897 [file] [log] [blame]
<!DOCTYPE HTML>
<html lang="en">
<head>
<!-- Generated by javadoc (17) -->
<title>RexUtil (Apache Calcite API)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="description" content="declaration: package: org.apache.calcite.rex, class: RexUtil">
<meta name="generator" content="javadoc/ClassWriterImpl">
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../script-dir/jquery-ui.min.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../jquery-ui.overrides.css" title="Style">
<script type="text/javascript" src="../../../../script.js"></script>
<script type="text/javascript" src="../../../../script-dir/jquery-3.5.1.min.js"></script>
<script type="text/javascript" src="../../../../script-dir/jquery-ui.min.js"></script>
</head>
<body class="class-declaration-page">
<script type="text/javascript">var evenRowColor = "even-row-color";
var oddRowColor = "odd-row-color";
var tableTab = "table-tab";
var activeTableTab = "active-table-tab";
var pathtoroot = "../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<div class="flex-box">
<header role="banner" class="flex-header">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top">
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<div class="about-language"><b>Apache Calcite</b></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="nav-bar-cell1-rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../index-all.html">Index</a></li>
<li><a href="../../../../help-doc.html#class">Help</a></li>
</ul>
</div>
<div class="sub-nav">
<div>
<ul class="sub-nav-list">
<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>Constr&nbsp;|&nbsp;</li>
<li><a href="#method-summary">Method</a></li>
</ul>
<ul class="sub-nav-list">
<li>Detail:&nbsp;</li>
<li><a href="#field-detail">Field</a>&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method-detail">Method</a></li>
</ul>
</div>
<div class="nav-list-search"><label for="search-input">SEARCH:</label>
<input type="text" id="search-input" value="search" disabled="disabled">
<input type="reset" id="reset-button" value="reset" disabled="disabled">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">org.apache.calcite.rex</a></div>
<h1 title="Class RexUtil" class="title">Class RexUtil</h1>
</div>
<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
<div class="inheritance">org.apache.calcite.rex.RexUtil</div>
</div>
<section class="class-description" id="class-description">
<hr>
<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">RexUtil</span>
<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
<div class="block">Utility methods concerning row-expressions.</div>
</section>
<section class="summary">
<ul class="summary-list">
<!-- ======== NESTED CLASS SUMMARY ======== -->
<li>
<section class="nested-class-summary" id="nested-class-summary">
<h2>Nested Class Summary</h2>
<div class="caption"><span>Nested Classes</span></div>
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Class</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color"><code>static class&nbsp;</code></div>
<div class="col-second even-row-color"><code><a href="RexUtil.ExprSimplifier.html" class="type-name-link" title="class in org.apache.calcite.rex">RexUtil.ExprSimplifier</a></code></div>
<div class="col-last even-row-color">
<div class="block"><span class="deprecated-label">Deprecated.</span></div>
</div>
<div class="col-first odd-row-color"><code>static class&nbsp;</code></div>
<div class="col-second odd-row-color"><code><a href="RexUtil.FieldAccessFinder.html" class="type-name-link" title="class in org.apache.calcite.rex">RexUtil.FieldAccessFinder</a></code></div>
<div class="col-last odd-row-color">
<div class="block">Visitor which builds a bitmap of the inputs used by an expression.</div>
</div>
<div class="col-first even-row-color"><code>static class&nbsp;</code></div>
<div class="col-second even-row-color"><code><a href="RexUtil.FixNullabilityShuttle.html" class="type-name-link" title="class in org.apache.calcite.rex">RexUtil.FixNullabilityShuttle</a></code></div>
<div class="col-last even-row-color">
<div class="block">Shuttle that fixes up an expression to match changes in nullability of
input fields.</div>
</div>
<div class="col-first odd-row-color"><code>static class&nbsp;</code></div>
<div class="col-second odd-row-color"><code><a href="RexUtil.RexFinder.html" class="type-name-link" title="class in org.apache.calcite.rex">RexUtil.RexFinder</a></code></div>
<div class="col-last odd-row-color">
<div class="block">Visitor that tells whether a node matching a particular description exists
in a tree.</div>
</div>
<div class="col-first even-row-color"><code>static class&nbsp;</code></div>
<div class="col-second even-row-color"><code><a href="RexUtil.SubQueryFinder.html" class="type-name-link" title="class in org.apache.calcite.rex">RexUtil.SubQueryFinder</a></code></div>
<div class="col-last even-row-color">
<div class="block">Visitor that throws <a href="../util/Util.FoundOne.html" title="class in org.apache.calcite.util"><code>Util.FoundOne</code></a> if
applied to an expression that contains a <a href="RexSubQuery.html" title="class in org.apache.calcite.rex"><code>RexSubQuery</code></a>.</div>
</div>
</div>
</section>
</li>
<!-- =========== FIELD SUMMARY =========== -->
<li>
<section class="field-summary" id="field-summary">
<h2>Field Summary</h2>
<div class="caption"><span>Fields</span></div>
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Field</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color"><code>static final <a href="RexExecutor.html" title="interface in org.apache.calcite.rex">RexExecutor</a></code></div>
<div class="col-second even-row-color"><code><a href="#EXECUTOR" class="member-name-link">EXECUTOR</a></code></div>
<div class="col-last even-row-color">
<div class="block">Executor for a bit of constant reduction.</div>
</div>
</div>
</section>
</li>
<!-- ========== METHOD SUMMARY =========== -->
<li>
<section class="method-summary" id="method-summary">
<h2>Method Summary</h2>
<div id="method-summary-table">
<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab1" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab1', 3)" class="table-tab">Static Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button><button id="method-summary-table-tab6" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab6', 3)" class="table-tab">Deprecated Methods</button></div>
<div id="method-summary-table.tabpanel" role="tabpanel">
<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Method</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static &lt;E&gt;&nbsp;boolean</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#all(java.util.List,org.apache.calcite.linq4j.function.Predicate1)" class="member-name-link">all</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;? extends E&gt;&nbsp;list,
<a href="../linq4j/function/Predicate1.html" title="interface in org.apache.calcite.linq4j.function">Predicate1</a>&lt;E&gt;&nbsp;predicate)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Returns whether <code>predicate</code> is true for all elements of
<code>list</code>.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static boolean</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#allLiterals(java.util.List)" class="member-name-link">allLiterals</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;expressionOperands)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Returns whether every expression in a list is a literal.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#andNot(org.apache.calcite.rex.RexBuilder,org.apache.calcite.rex.RexNode,java.lang.Iterable)" class="member-name-link">andNot</a><wbr>(<a href="RexBuilder.html" title="class in org.apache.calcite.rex">RexBuilder</a>&nbsp;rexBuilder,
<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;e,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Iterable.html" title="class or interface in java.lang" class="external-link">Iterable</a>&lt;? extends <a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;notTerms)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Creates the expression <code>e1 AND NOT notTerm1 AND NOT notTerm2 ...</code>.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#andNot(org.apache.calcite.rex.RexBuilder,org.apache.calcite.rex.RexNode,org.apache.calcite.rex.RexNode...)" class="member-name-link">andNot</a><wbr>(<a href="RexBuilder.html" title="class in org.apache.calcite.rex">RexBuilder</a>&nbsp;rexBuilder,
<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;e,
<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>...&nbsp;notTerms)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Creates the expression <code>e1 AND NOT notTerm1 AND NOT notTerm2 ...</code>.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#apply(org.apache.calcite.rex.RexVisitor,java.util.List,org.apache.calcite.rex.RexNode)" class="member-name-link">apply</a><wbr>(<a href="RexVisitor.html" title="interface in org.apache.calcite.rex">RexVisitor</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Void.html" title="class or interface in java.lang" class="external-link">Void</a>&gt;&nbsp;visitor,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;? extends <a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;exprs,
@Nullable <a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;expr)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Applies a visitor to a list of expressions and, if specified, a single
expression.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#apply(org.apache.calcite.rex.RexVisitor,org.apache.calcite.rex.RexNode%5B%5D,org.apache.calcite.rex.RexNode)" class="member-name-link">apply</a><wbr>(<a href="RexVisitor.html" title="interface in org.apache.calcite.rex">RexVisitor</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Void.html" title="class or interface in java.lang" class="external-link">Void</a>&gt;&nbsp;visitor,
<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>[]&nbsp;exprs,
@Nullable <a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;expr)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Applies a visitor to an array of expressions and, if specified, a single
expression.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static &lt;T extends <a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;<br>T[]</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#apply(org.apache.calcite.rex.RexVisitor,T%5B%5D)" class="member-name-link">apply</a><wbr>(<a href="RexVisitor.html" title="interface in org.apache.calcite.rex">RexVisitor</a>&lt;T&gt;&nbsp;shuttle,
T[]&nbsp;exprs)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Applies a shuttle to an array of expressions.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#apply(org.apache.calcite.util.mapping.Mappings.TargetMapping,java.lang.Iterable)" class="member-name-link">apply</a><wbr>(<a href="../util/mapping/Mappings.TargetMapping.html" title="interface in org.apache.calcite.util.mapping">Mappings.TargetMapping</a>&nbsp;mapping,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Iterable.html" title="class or interface in java.lang" class="external-link">Iterable</a>&lt;? extends <a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;nodes)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Applies a mapping to an iterable over expressions.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="../rel/RelCollation.html" title="interface in org.apache.calcite.rel">RelCollation</a>&gt;</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#apply(org.apache.calcite.util.mapping.Mappings.TargetMapping,java.util.List)" class="member-name-link">apply</a><wbr>(<a href="../util/mapping/Mappings.TargetMapping.html" title="interface in org.apache.calcite.util.mapping">Mappings.TargetMapping</a>&nbsp;mapping,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="../rel/RelCollation.html" title="interface in org.apache.calcite.rel">RelCollation</a>&gt;&nbsp;collationList)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Applies a mapping to a collation list.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="../rel/RelCollation.html" title="interface in org.apache.calcite.rel">RelCollation</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#apply(org.apache.calcite.util.mapping.Mappings.TargetMapping,org.apache.calcite.rel.RelCollation)" class="member-name-link">apply</a><wbr>(<a href="../util/mapping/Mappings.TargetMapping.html" title="interface in org.apache.calcite.util.mapping">Mappings.TargetMapping</a>&nbsp;mapping,
<a href="../rel/RelCollation.html" title="interface in org.apache.calcite.rel">RelCollation</a>&nbsp;collation)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Applies a mapping to a collation.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static @Nullable <a href="../rel/RelFieldCollation.html" title="class in org.apache.calcite.rel">RelFieldCollation</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#apply(org.apache.calcite.util.mapping.Mappings.TargetMapping,org.apache.calcite.rel.RelFieldCollation)" class="member-name-link">apply</a><wbr>(<a href="../util/mapping/Mappings.TargetMapping.html" title="interface in org.apache.calcite.util.mapping">Mappings.TargetMapping</a>&nbsp;mapping,
<a href="../rel/RelFieldCollation.html" title="class in org.apache.calcite.rel">RelFieldCollation</a>&nbsp;fieldCollation)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Applies a mapping to a field collation.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#apply(org.apache.calcite.util.mapping.Mappings.TargetMapping,org.apache.calcite.rex.RexNode)" class="member-name-link">apply</a><wbr>(<a href="../util/mapping/Mappings.TargetMapping.html" title="interface in org.apache.calcite.util.mapping">Mappings.TargetMapping</a>&nbsp;mapping,
<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;node)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Applies a mapping to an expression.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="../rel/RelFieldCollation.html" title="class in org.apache.calcite.rel">RelFieldCollation</a>&gt;</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#applyFields(org.apache.calcite.util.mapping.Mappings.TargetMapping,java.util.List)" class="member-name-link">applyFields</a><wbr>(<a href="../util/mapping/Mappings.TargetMapping.html" title="interface in org.apache.calcite.util.mapping">Mappings.TargetMapping</a>&nbsp;mapping,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="../rel/RelFieldCollation.html" title="class in org.apache.calcite.rel">RelFieldCollation</a>&gt;&nbsp;fieldCollations)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Applies a mapping to a list of field collations.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static boolean</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#canReinterpretOverflow(org.apache.calcite.rex.RexCall)" class="member-name-link">canReinterpretOverflow</a><wbr>(<a href="RexCall.html" title="class in org.apache.calcite.rex">RexCall</a>&nbsp;call)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">&nbsp;</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static boolean</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#compatibleTypes(java.util.List,org.apache.calcite.rel.type.RelDataType,org.apache.calcite.util.Litmus)" class="member-name-link">compatibleTypes</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;exprs,
<a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;type,
<a href="../util/Litmus.html" title="interface in org.apache.calcite.util">Litmus</a>&nbsp;litmus)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Returns whether the type of an array of expressions is compatible with a
struct type.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#composeConjunction(org.apache.calcite.rex.RexBuilder,java.lang.Iterable)" class="member-name-link">composeConjunction</a><wbr>(<a href="RexBuilder.html" title="class in org.apache.calcite.rex">RexBuilder</a>&nbsp;rexBuilder,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Iterable.html" title="class or interface in java.lang" class="external-link">Iterable</a>&lt;? extends @Nullable <a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;nodes)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">As <a href="#composeConjunction(org.apache.calcite.rex.RexBuilder,java.lang.Iterable,boolean)"><code>composeConjunction(RexBuilder, Iterable, boolean)</code></a> but never
returns null.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static @Nullable <a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#composeConjunction(org.apache.calcite.rex.RexBuilder,java.lang.Iterable,boolean)" class="member-name-link">composeConjunction</a><wbr>(<a href="RexBuilder.html" title="class in org.apache.calcite.rex">RexBuilder</a>&nbsp;rexBuilder,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Iterable.html" title="class or interface in java.lang" class="external-link">Iterable</a>&lt;? extends @Nullable <a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;nodes,
boolean&nbsp;nullOnEmpty)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Converts a collection of expressions into an AND.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#composeDisjunction(org.apache.calcite.rex.RexBuilder,java.lang.Iterable)" class="member-name-link">composeDisjunction</a><wbr>(<a href="RexBuilder.html" title="class in org.apache.calcite.rex">RexBuilder</a>&nbsp;rexBuilder,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Iterable.html" title="class or interface in java.lang" class="external-link">Iterable</a>&lt;? extends <a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;nodes)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Converts a collection of expressions into an OR.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static @Nullable <a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#composeDisjunction(org.apache.calcite.rex.RexBuilder,java.lang.Iterable,boolean)" class="member-name-link">composeDisjunction</a><wbr>(<a href="RexBuilder.html" title="class in org.apache.calcite.rex">RexBuilder</a>&nbsp;rexBuilder,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Iterable.html" title="class or interface in java.lang" class="external-link">Iterable</a>&lt;? extends <a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;nodes,
boolean&nbsp;nullOnEmpty)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Converts a collection of expressions into an OR,
optionally returning null if the list is empty.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static boolean</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#containComplexExprs(java.util.List)" class="member-name-link">containComplexExprs</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;exprs)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Returns whether a list of expressions contains complex expressions, that
is, a call whose arguments are not <a href="RexVariable.html" title="class in org.apache.calcite.rex"><code>RexVariable</code></a> (or a subtype such
as <a href="RexInputRef.html" title="class in org.apache.calcite.rex"><code>RexInputRef</code></a>) or <a href="RexLiteral.html" title="class in org.apache.calcite.rex"><code>RexLiteral</code></a>.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static boolean</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#containIdentity(java.util.List,org.apache.calcite.rel.type.RelDataType,org.apache.calcite.util.Litmus)" class="member-name-link">containIdentity</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;? extends <a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;exprs,
<a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;rowType,
<a href="../util/Litmus.html" title="interface in org.apache.calcite.util">Litmus</a>&nbsp;litmus)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Returns whether the leading edge of a given array of expressions is
wholly <a href="RexInputRef.html" title="class in org.apache.calcite.rex"><code>RexInputRef</code></a> objects with types corresponding to the
underlying datatype.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static boolean</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#containNoCommonExprs(java.util.List,org.apache.calcite.util.Litmus)" class="member-name-link">containNoCommonExprs</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;exprs,
<a href="../util/Litmus.html" title="interface in org.apache.calcite.util">Litmus</a>&nbsp;litmus)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Returns whether an array of expressions has any common sub-expressions.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static boolean</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#containNoForwardRefs(java.util.List,org.apache.calcite.rel.type.RelDataType,org.apache.calcite.util.Litmus)" class="member-name-link">containNoForwardRefs</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;exprs,
<a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;inputRowType,
<a href="../util/Litmus.html" title="interface in org.apache.calcite.util">Litmus</a>&nbsp;litmus)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Returns whether an array of expressions contains no forward references.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static boolean</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#containsCorrelation(org.apache.calcite.rex.RexNode)" class="member-name-link">containsCorrelation</a><wbr>(<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;condition)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Returns whether an expression contains a <a href="RexCorrelVariable.html" title="class in org.apache.calcite.rex"><code>RexCorrelVariable</code></a>.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static boolean</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#containsFieldAccess(org.apache.calcite.rex.RexNode)" class="member-name-link">containsFieldAccess</a><wbr>(<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;node)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Returns whether a given tree contains any
<a href="RexFieldAccess.html" title="class in org.apache.calcite.rex"><code>RexFieldAccess</code></a> nodes.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static boolean</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#containsInputRef(org.apache.calcite.rex.RexNode)" class="member-name-link">containsInputRef</a><wbr>(<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;node)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Returns whether a given tree contains any {link RexInputRef} nodes.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static boolean</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#containsTableInputRef(java.util.List)" class="member-name-link">containsTableInputRef</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;nodes)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Returns whether any of the given expression trees contains a
{link RexTableInputRef} node.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static @Nullable <a href="RexTableInputRef.html" title="class in org.apache.calcite.rex">RexTableInputRef</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#containsTableInputRef(org.apache.calcite.rex.RexNode)" class="member-name-link">containsTableInputRef</a><wbr>(<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;node)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Returns whether a given tree contains any {link RexTableInputRef} nodes.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#createStructType(org.apache.calcite.rel.type.RelDataTypeFactory,java.util.List,java.util.List,org.apache.calcite.sql.validate.SqlValidatorUtil.Suggester)" class="member-name-link">createStructType</a><wbr>(<a href="../rel/type/RelDataTypeFactory.html" title="interface in org.apache.calcite.rel.type">RelDataTypeFactory</a>&nbsp;typeFactory,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;? extends <a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;exprs,
@Nullable <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;? extends @Nullable <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;&nbsp;names,
@Nullable <a href="../sql/validate/SqlValidatorUtil.Suggester.html" title="interface in org.apache.calcite.sql.validate">SqlValidatorUtil.Suggester</a>&nbsp;suggester)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Creates a record type with specified field names.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4 method-summary-table-tab6"><code>static <a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4 method-summary-table-tab6"><code><a href="#createStructType(org.apache.calcite.rel.type.RelDataTypeFactory,java.util.List,java.util.List)" class="member-name-link">createStructType</a><wbr>(<a href="../rel/type/RelDataTypeFactory.html" title="interface in org.apache.calcite.rel.type">RelDataTypeFactory</a>&nbsp;typeFactory,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;? extends <a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;exprs,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;&nbsp;names)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4 method-summary-table-tab6">
<div class="block"><span class="deprecated-label">Deprecated.</span></div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#createStructType(org.apache.calcite.rel.type.RelDataTypeFactory,java.util.List)" class="member-name-link">createStructType</a><wbr>(<a href="../rel/type/RelDataTypeFactory.html" title="interface in org.apache.calcite.rel.type">RelDataTypeFactory</a>&nbsp;typeFactory,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;exprs)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Creates a record type with anonymous field names.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4 method-summary-table-tab6"><code>static boolean</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4 method-summary-table-tab6"><code><a href="#eq(org.apache.calcite.rex.RexNode,org.apache.calcite.rex.RexNode)" class="member-name-link">eq</a><wbr>(<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;e1,
<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;e2)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4 method-summary-table-tab6">
<div class="block"><span class="deprecated-label">Deprecated.</span></div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static &lt;E&gt;&nbsp;boolean</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#exists(java.util.List,org.apache.calcite.linq4j.function.Predicate1)" class="member-name-link">exists</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;? extends E&gt;&nbsp;list,
<a href="../linq4j/function/Predicate1.html" title="interface in org.apache.calcite.linq4j.function">Predicate1</a>&lt;E&gt;&nbsp;predicate)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Returns whether there is an element in <code>list</code> for which
<code>predicate</code> is true.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#expandSearch(org.apache.calcite.rex.RexBuilder,org.apache.calcite.rex.RexProgram,org.apache.calcite.rex.RexNode)" class="member-name-link">expandSearch</a><wbr>(<a href="RexBuilder.html" title="class in org.apache.calcite.rex">RexBuilder</a>&nbsp;rexBuilder,
@Nullable <a href="RexProgram.html" title="class in org.apache.calcite.rex">RexProgram</a>&nbsp;program,
<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;node)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Expands all the calls to <a href="../sql/fun/SqlStdOperatorTable.html#SEARCH"><code>SqlStdOperatorTable.SEARCH</code></a> in an expression.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#expandSearch(org.apache.calcite.rex.RexBuilder,org.apache.calcite.rex.RexProgram,org.apache.calcite.rex.RexNode,int)" class="member-name-link">expandSearch</a><wbr>(<a href="RexBuilder.html" title="class in org.apache.calcite.rex">RexBuilder</a>&nbsp;rexBuilder,
@Nullable <a href="RexProgram.html" title="class in org.apache.calcite.rex">RexProgram</a>&nbsp;program,
<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;node,
int&nbsp;maxComplexity)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Expands calls to <a href="../sql/fun/SqlStdOperatorTable.html#SEARCH"><code>SqlStdOperatorTable.SEARCH</code></a>
whose complexity is greater than <code>maxComplexity</code> in an expression.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="../rel/type/RelDataTypeFamily.html" title="interface in org.apache.calcite.rel.type">RelDataTypeFamily</a>&gt;</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#families(java.util.List)" class="member-name-link">families</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&gt;&nbsp;types)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">&nbsp;</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="RexUtil.RexFinder.html" title="class in org.apache.calcite.rex">RexUtil.RexFinder</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#find(java.util.Set)" class="member-name-link">find</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Set.html" title="class or interface in java.util" class="external-link">Set</a>&lt;<a href="../sql/SqlKind.html" title="enum in org.apache.calcite.sql">SqlKind</a>&gt;&nbsp;kinds)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Returns a visitor that finds nodes of given <a href="../sql/SqlKind.html" title="enum in org.apache.calcite.sql"><code>SqlKind</code></a>s.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="RexUtil.RexFinder.html" title="class in org.apache.calcite.rex">RexUtil.RexFinder</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#find(org.apache.calcite.rex.RexInputRef)" class="member-name-link">find</a><wbr>(<a href="RexInputRef.html" title="class in org.apache.calcite.rex">RexInputRef</a>&nbsp;ref)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Returns a visitor that finds a particular <a href="RexInputRef.html" title="class in org.apache.calcite.rex"><code>RexInputRef</code></a>.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="RexUtil.RexFinder.html" title="class in org.apache.calcite.rex">RexUtil.RexFinder</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#find(org.apache.calcite.sql.SqlKind)" class="member-name-link">find</a><wbr>(<a href="../sql/SqlKind.html" title="enum in org.apache.calcite.sql">SqlKind</a>&nbsp;kind)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Returns a visitor that finds nodes of a given <a href="../sql/SqlKind.html" title="enum in org.apache.calcite.sql"><code>SqlKind</code></a>.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static @Nullable <a href="RexCall.html" title="class in org.apache.calcite.rex">RexCall</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#findOperatorCall(org.apache.calcite.sql.SqlOperator,org.apache.calcite.rex.RexNode)" class="member-name-link">findOperatorCall</a><wbr>(<a href="../sql/SqlOperator.html" title="class in org.apache.calcite.sql">SqlOperator</a>&nbsp;operator,
<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;node)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Returns whether a given node contains a RexCall with a specified operator.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#fixUp(org.apache.calcite.rex.RexBuilder,java.util.List,java.util.List)" class="member-name-link">fixUp</a><wbr>(<a href="RexBuilder.html" title="class in org.apache.calcite.rex">RexBuilder</a>&nbsp;rexBuilder,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;nodes,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&gt;&nbsp;fieldTypes)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Fixes up the type of all <a href="RexInputRef.html" title="class in org.apache.calcite.rex"><code>RexInputRef</code></a>s in an
expression to match differences in nullability.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4 method-summary-table-tab6"><code>static <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4 method-summary-table-tab6"><code><a href="#fixUp(org.apache.calcite.rex.RexBuilder,java.util.List,org.apache.calcite.rel.type.RelDataType)" class="member-name-link">fixUp</a><wbr>(<a href="RexBuilder.html" title="class in org.apache.calcite.rex">RexBuilder</a>&nbsp;rexBuilder,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;nodes,
<a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;rowType)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4 method-summary-table-tab6">
<div class="block"><span class="deprecated-label">Deprecated.</span></div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#flatten(java.util.List,org.apache.calcite.sql.SqlOperator)" class="member-name-link">flatten</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;? extends <a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;exprs,
<a href="../sql/SqlOperator.html" title="class in org.apache.calcite.sql">SqlOperator</a>&nbsp;op)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Converts a list of operands into a list that is flat with respect to
the given operator.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#flatten(org.apache.calcite.rex.RexBuilder,org.apache.calcite.rex.RexNode)" class="member-name-link">flatten</a><wbr>(<a href="RexBuilder.html" title="class in org.apache.calcite.rex">RexBuilder</a>&nbsp;rexBuilder,
<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;node)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Flattens an expression.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static com.google.common.collect.ImmutableList&lt;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#flattenAnd(java.lang.Iterable)" class="member-name-link">flattenAnd</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Iterable.html" title="class or interface in java.lang" class="external-link">Iterable</a>&lt;? extends @Nullable <a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;nodes)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Flattens a list of AND nodes.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static com.google.common.collect.ImmutableList&lt;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#flattenOr(java.lang.Iterable)" class="member-name-link">flattenOr</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Iterable.html" title="class or interface in java.lang" class="external-link">Iterable</a>&lt;? extends <a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;nodes)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Flattens a list of OR nodes.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Set.html" title="class or interface in java.util" class="external-link">Set</a>&lt;<a href="RexTableInputRef.RelTableRef.html" title="class in org.apache.calcite.rex">RexTableInputRef.RelTableRef</a>&gt;</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#gatherTableReferences(java.util.List)" class="member-name-link">gatherTableReferences</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;nodes)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Gather all table references in input expressions.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#generateCastExpressions(org.apache.calcite.rex.RexBuilder,org.apache.calcite.rel.type.RelDataType,java.util.List)" class="member-name-link">generateCastExpressions</a><wbr>(<a href="RexBuilder.html" title="class in org.apache.calcite.rex">RexBuilder</a>&nbsp;rexBuilder,
<a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;lhsRowType,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;rhsExps)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Generates a cast for a row type.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#generateCastExpressions(org.apache.calcite.rex.RexBuilder,org.apache.calcite.rel.type.RelDataType,org.apache.calcite.rel.type.RelDataType)" class="member-name-link">generateCastExpressions</a><wbr>(<a href="RexBuilder.html" title="class in org.apache.calcite.rex">RexBuilder</a>&nbsp;rexBuilder,
<a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;lhsRowType,
<a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;rhsRowType)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Generates a cast from one row type to another.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="../util/ImmutableBitSet.html" title="class in org.apache.calcite.util">ImmutableBitSet</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#getNonConstColumns(java.util.List)" class="member-name-link">getNonConstColumns</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;expressions)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Given some expressions, gets the indices of the non-constant ones.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="../util/ImmutableBitSet.html" title="class in org.apache.calcite.util">ImmutableBitSet</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#getNonConstColumns(org.apache.calcite.util.ImmutableBitSet,java.util.List)" class="member-name-link">getNonConstColumns</a><wbr>(<a href="../util/ImmutableBitSet.html" title="class in org.apache.calcite.util">ImmutableBitSet</a>&nbsp;columns,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;expressions)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Given some expressions and columns, gets the indices of the non-constant ones.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static double</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#getSelectivity(org.apache.calcite.rex.RexNode)" class="member-name-link">getSelectivity</a><wbr>(@Nullable <a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;exp)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Returns a guess for the selectivity of an expression.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static @Nullable <a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#invert(org.apache.calcite.rex.RexBuilder,org.apache.calcite.rex.RexCall)" class="member-name-link">invert</a><wbr>(<a href="RexBuilder.html" title="class in org.apache.calcite.rex">RexBuilder</a>&nbsp;rexBuilder,
<a href="RexCall.html" title="class in org.apache.calcite.rex">RexCall</a>&nbsp;call)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">&nbsp;</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static boolean</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#isAtomic(org.apache.calcite.rex.RexNode)" class="member-name-link">isAtomic</a><wbr>(<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;expr)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">&nbsp;</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static boolean</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#isCallTo(org.apache.calcite.rex.RexNode,org.apache.calcite.sql.SqlOperator)" class="member-name-link">isCallTo</a><wbr>(<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;expr,
<a href="../sql/SqlOperator.html" title="class in org.apache.calcite.sql">SqlOperator</a>&nbsp;op)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Returns whether a <a href="RexNode.html" title="class in org.apache.calcite.rex"><code>node</code></a> is a <a href="RexCall.html" title="class in org.apache.calcite.rex"><code>call</code></a> to a
given <a href="../sql/SqlOperator.html" title="class in org.apache.calcite.sql"><code>operator</code></a>.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static boolean</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#isCasePredicate(org.apache.calcite.rex.RexCall,int)" class="member-name-link">isCasePredicate</a><wbr>(<a href="RexCall.html" title="class in org.apache.calcite.rex">RexCall</a>&nbsp;call,
int&nbsp;i)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Returns whether a given operand of a CASE expression is a predicate.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static boolean</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#isConstant(org.apache.calcite.rex.RexNode)" class="member-name-link">isConstant</a><wbr>(<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;node)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Returns whether node is made up of constants.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static boolean</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#isDeterministic(org.apache.calcite.rex.RexNode)" class="member-name-link">isDeterministic</a><wbr>(<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;e)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Returns whether a given expression is deterministic.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static boolean</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#isFlat(org.apache.calcite.rex.RexNode)" class="member-name-link">isFlat</a><wbr>(<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;expr)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Returns false if the expression can be optimized by flattening
calls to an associative operator such as AND and OR.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static boolean</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#isIdentity(java.util.List,org.apache.calcite.rel.type.RelDataType)" class="member-name-link">isIdentity</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;? extends <a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;exps,
<a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;inputRowType)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Returns whether a list of expressions projects the incoming fields.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static boolean</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#isLiteral(org.apache.calcite.rex.RexNode,boolean)" class="member-name-link">isLiteral</a><wbr>(<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;node,
boolean&nbsp;allowCast)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Returns whether a node represents a literal.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static boolean</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#isLosslessCast(org.apache.calcite.rel.type.RelDataType,org.apache.calcite.rel.type.RelDataType)" class="member-name-link">isLosslessCast</a><wbr>(<a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;source,
<a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;target)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Returns whether the conversion from <code>source</code> to <code>target</code> type
is a 'loss-less' cast, that is, a cast from which
the original value of the field can be certainly recovered.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static boolean</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#isLosslessCast(org.apache.calcite.rex.RexNode)" class="member-name-link">isLosslessCast</a><wbr>(<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;node)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Returns whether the input is a 'loss-less' cast, that is, a cast from which
the original value of the field can be certainly recovered.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static boolean</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#isNull(org.apache.calcite.rex.RexNode)" class="member-name-link">isNull</a><wbr>(<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;expr)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Returns whether a node represents the NULL value or a series of nested
<code>CAST(NULL AS type)</code> calls.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static boolean</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#isNullabilityCast(org.apache.calcite.rel.type.RelDataTypeFactory,org.apache.calcite.rex.RexNode)" class="member-name-link">isNullabilityCast</a><wbr>(<a href="../rel/type/RelDataTypeFactory.html" title="interface in org.apache.calcite.rel.type">RelDataTypeFactory</a>&nbsp;typeFactory,
<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;node)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Returns whether an expression is a cast just for the purposes of
nullability, not changing any other aspect of the type.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static boolean</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#isNullLiteral(org.apache.calcite.rex.RexNode,boolean)" class="member-name-link">isNullLiteral</a><wbr>(<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;node,
boolean&nbsp;allowCast)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Returns whether a node represents the NULL value.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static boolean</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#isReferenceOrAccess(org.apache.calcite.rex.RexNode,boolean)" class="member-name-link">isReferenceOrAccess</a><wbr>(<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;node,
boolean&nbsp;allowCast)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Returns whether a node represents an input reference or field access.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static boolean</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#isSymbolLiteral(org.apache.calcite.rex.RexNode)" class="member-name-link">isSymbolLiteral</a><wbr>(<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;expr)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Returns whether a node represents a <a href="../sql/type/SqlTypeName.html#SYMBOL"><code>SqlTypeName.SYMBOL</code></a> literal.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="../util/Pair.html" title="class in org.apache.calcite.util">Pair</a>&lt;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#makeKey(org.apache.calcite.rex.RexNode)" class="member-name-link">makeKey</a><wbr>(<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;expr)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Creates a key for <a href="RexNode.html" title="class in org.apache.calcite.rex"><code>RexNode</code></a> which is the same as another key of
another RexNode only if the two have both the same type and textual
representation.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static @Nullable <a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#negate(org.apache.calcite.rex.RexBuilder,org.apache.calcite.rex.RexCall)" class="member-name-link">negate</a><wbr>(<a href="RexBuilder.html" title="class in org.apache.calcite.rex">RexBuilder</a>&nbsp;rexBuilder,
<a href="RexCall.html" title="class in org.apache.calcite.rex">RexCall</a>&nbsp;call)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">&nbsp;</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static int</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#nodeCount(java.util.List)" class="member-name-link">nodeCount</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;? extends <a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;nodes)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Returns the number of nodes (including leaves) in a list of
expressions.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#not(org.apache.calcite.rex.RexNode)" class="member-name-link">not</a><wbr>(<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;e)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Negates a logical expression by adding or removing a NOT.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4 method-summary-table-tab6"><code>static com.google.common.base.Function&lt;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>,<wbr><a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4 method-summary-table-tab6"><code><a href="#notFn(org.apache.calcite.rex.RexBuilder)" class="member-name-link">notFn</a><wbr>(<a href="RexBuilder.html" title="class in org.apache.calcite.rex">RexBuilder</a>&nbsp;rexBuilder)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4 method-summary-table-tab6">
<div class="block"><span class="deprecated-label">Deprecated.</span>
<div class="deprecation-comment">Use <a href="#not(org.apache.calcite.rex.RexNode)"><code>not(org.apache.calcite.rex.RexNode)</code></a></div>
</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="../sql/SqlOperator.html" title="class in org.apache.calcite.sql">SqlOperator</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#op(org.apache.calcite.sql.SqlKind)" class="member-name-link">op</a><wbr>(<a href="../sql/SqlKind.html" title="enum in org.apache.calcite.sql">SqlKind</a>&nbsp;kind)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">&nbsp;</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static &lt;C extends <a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;<br>com.google.common.collect.ImmutableMap&lt;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>,<wbr>C&gt;</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#predicateConstants(java.lang.Class,org.apache.calcite.rex.RexBuilder,java.util.List)" class="member-name-link">predicateConstants</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;C&gt;&nbsp;clazz,
<a href="RexBuilder.html" title="class in org.apache.calcite.rex">RexBuilder</a>&nbsp;rexBuilder,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;predicates)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Creates a map containing each (e, constant) pair that occurs within
a predicate list.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#pullFactors(org.apache.calcite.rex.RexBuilder,org.apache.calcite.rex.RexNode)" class="member-name-link">pullFactors</a><wbr>(<a href="RexBuilder.html" title="class in org.apache.calcite.rex">RexBuilder</a>&nbsp;rexBuilder,
<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;node)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Creates an equivalent version of a node where common factors among ORs
are pulled up.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static boolean</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#removeAll(java.util.List,org.apache.calcite.rex.RexNode)" class="member-name-link">removeAll</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;targets,
<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;e)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Removes all expressions from a list that are equivalent to a given
expression.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#removeCast(org.apache.calcite.rex.RexNode)" class="member-name-link">removeCast</a><wbr>(<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;e)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Removes any casts.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#removeNullabilityCast(org.apache.calcite.rel.type.RelDataTypeFactory,org.apache.calcite.rex.RexNode)" class="member-name-link">removeNullabilityCast</a><wbr>(<a href="../rel/type/RelDataTypeFactory.html" title="interface in org.apache.calcite.rel.type">RelDataTypeFactory</a>&nbsp;typeFactory,
<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;node)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Removes any casts that change nullability but not type.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static boolean</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#requiresDecimalExpansion(java.util.List,boolean)" class="member-name-link">requiresDecimalExpansion</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;operands,
boolean&nbsp;recurse)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Determines whether any operand of a set requires decimal expansion.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static boolean</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#requiresDecimalExpansion(org.apache.calcite.rex.RexNode,boolean)" class="member-name-link">requiresDecimalExpansion</a><wbr>(<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;expr,
boolean&nbsp;recurse)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Determines whether a <a href="RexCall.html" title="class in org.apache.calcite.rex"><code>RexCall</code></a> requires decimal expansion.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static boolean</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#requiresDecimalExpansion(org.apache.calcite.rex.RexProgram,boolean)" class="member-name-link">requiresDecimalExpansion</a><wbr>(<a href="RexProgram.html" title="class in org.apache.calcite.rex">RexProgram</a>&nbsp;program,
boolean&nbsp;recurse)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Returns whether a <a href="RexProgram.html" title="class in org.apache.calcite.rex"><code>RexProgram</code></a> contains expressions which require
decimal expansion.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#retainDeterministic(java.util.List)" class="member-name-link">retainDeterministic</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;list)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">&nbsp;</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static &lt;C extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Comparable.html" title="class or interface in java.lang" class="external-link">Comparable</a>&lt;C&gt;&gt;<br><a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#sargRef(org.apache.calcite.rex.RexBuilder,org.apache.calcite.rex.RexNode,org.apache.calcite.util.Sarg,org.apache.calcite.rel.type.RelDataType,org.apache.calcite.rex.RexUnknownAs)" class="member-name-link">sargRef</a><wbr>(<a href="RexBuilder.html" title="class in org.apache.calcite.rex">RexBuilder</a>&nbsp;rexBuilder,
<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;ref,
<a href="../util/Sarg.html" title="class in org.apache.calcite.util">Sarg</a>&lt;C&gt;&nbsp;sarg,
<a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;type,
<a href="RexUnknownAs.html" title="enum in org.apache.calcite.rex">RexUnknownAs</a>&nbsp;unknownAs)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">&nbsp;</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="RexShuttle.html" title="class in org.apache.calcite.rex">RexShuttle</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#searchShuttle(org.apache.calcite.rex.RexBuilder,org.apache.calcite.rex.RexProgram,int)" class="member-name-link">searchShuttle</a><wbr>(<a href="RexBuilder.html" title="class in org.apache.calcite.rex">RexBuilder</a>&nbsp;rexBuilder,
@Nullable <a href="RexProgram.html" title="class in org.apache.calcite.rex">RexProgram</a>&nbsp;program,
int&nbsp;maxComplexity)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Creates a shuttle that expands calls to
<a href="../sql/fun/SqlStdOperatorTable.html#SEARCH"><code>SqlStdOperatorTable.SEARCH</code></a>.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#shift(java.lang.Iterable,int)" class="member-name-link">shift</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Iterable.html" title="class or interface in java.lang" class="external-link">Iterable</a>&lt;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;nodes,
int&nbsp;offset)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Shifts every <a href="RexInputRef.html" title="class in org.apache.calcite.rex"><code>RexInputRef</code></a> in an expression by <code>offset</code>.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#shift(org.apache.calcite.rex.RexNode,int)" class="member-name-link">shift</a><wbr>(<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;node,
int&nbsp;offset)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Shifts every <a href="RexInputRef.html" title="class in org.apache.calcite.rex"><code>RexInputRef</code></a> in an expression by <code>offset</code>.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#shift(org.apache.calcite.rex.RexNode,int,int)" class="member-name-link">shift</a><wbr>(<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;node,
int&nbsp;start,
int&nbsp;offset)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Shifts every <a href="RexInputRef.html" title="class in org.apache.calcite.rex"><code>RexInputRef</code></a> in an expression higher than <code>start</code>
by <code>offset</code>.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static &lt;C extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Comparable.html" title="class or interface in java.lang" class="external-link">Comparable</a>&lt;C&gt;&gt;<br><a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#simpleSarg(org.apache.calcite.rex.RexBuilder,org.apache.calcite.rex.RexNode,org.apache.calcite.util.Sarg,org.apache.calcite.rex.RexUnknownAs)" class="member-name-link">simpleSarg</a><wbr>(<a href="RexBuilder.html" title="class in org.apache.calcite.rex">RexBuilder</a>&nbsp;rexBuilder,
<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;ref,
<a href="../util/Sarg.html" title="class in org.apache.calcite.util">Sarg</a>&lt;C&gt;&nbsp;sarg,
<a href="RexUnknownAs.html" title="enum in org.apache.calcite.rex">RexUnknownAs</a>&nbsp;unknownAs)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Expands an 'all' or 'none' sarg.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4 method-summary-table-tab6"><code>static <a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4 method-summary-table-tab6"><code><a href="#simplify(org.apache.calcite.rex.RexBuilder,org.apache.calcite.rex.RexNode)" class="member-name-link">simplify</a><wbr>(<a href="RexBuilder.html" title="class in org.apache.calcite.rex">RexBuilder</a>&nbsp;rexBuilder,
<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;e)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4 method-summary-table-tab6">
<div class="block"><span class="deprecated-label">Deprecated.</span>
<div class="deprecation-comment">Create a <a href="RexSimplify.html" title="class in org.apache.calcite.rex"><code>RexSimplify</code></a>, then call its
<code>RexSimplify.simplify(RexNode, RexUnknownAs)</code> method.</div>
</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4 method-summary-table-tab6"><code>static <a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4 method-summary-table-tab6"><code><a href="#simplify(org.apache.calcite.rex.RexBuilder,org.apache.calcite.rex.RexNode,boolean)" class="member-name-link">simplify</a><wbr>(<a href="RexBuilder.html" title="class in org.apache.calcite.rex">RexBuilder</a>&nbsp;rexBuilder,
<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;e,
boolean&nbsp;unknownAsFalse)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4 method-summary-table-tab6">
<div class="block"><span class="deprecated-label">Deprecated.</span>
<div class="deprecation-comment">Create a <a href="RexSimplify.html" title="class in org.apache.calcite.rex"><code>RexSimplify</code></a>, then call its
<code>RexSimplify.simplify(RexNode, RexUnknownAs)</code> method.</div>
</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4 method-summary-table-tab6"><code>static <a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4 method-summary-table-tab6"><code><a href="#simplifyAnd(org.apache.calcite.rex.RexBuilder,org.apache.calcite.rex.RexCall,boolean)" class="member-name-link">simplifyAnd</a><wbr>(<a href="RexBuilder.html" title="class in org.apache.calcite.rex">RexBuilder</a>&nbsp;rexBuilder,
<a href="RexCall.html" title="class in org.apache.calcite.rex">RexCall</a>&nbsp;e,
boolean&nbsp;unknownAsFalse)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4 method-summary-table-tab6">
<div class="block"><span class="deprecated-label">Deprecated.</span></div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4 method-summary-table-tab6"><code>static <a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4 method-summary-table-tab6"><code><a href="#simplifyAnd2(org.apache.calcite.rex.RexBuilder,java.util.List,java.util.List)" class="member-name-link">simplifyAnd2</a><wbr>(<a href="RexBuilder.html" title="class in org.apache.calcite.rex">RexBuilder</a>&nbsp;rexBuilder,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;terms,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;notTerms)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4 method-summary-table-tab6">
<div class="block"><span class="deprecated-label">Deprecated.</span></div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4 method-summary-table-tab6"><code>static <a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4 method-summary-table-tab6"><code><a href="#simplifyAnd2ForUnknownAsFalse(org.apache.calcite.rex.RexBuilder,java.util.List,java.util.List)" class="member-name-link">simplifyAnd2ForUnknownAsFalse</a><wbr>(<a href="RexBuilder.html" title="class in org.apache.calcite.rex">RexBuilder</a>&nbsp;rexBuilder,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;terms,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;notTerms)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4 method-summary-table-tab6">
<div class="block"><span class="deprecated-label">Deprecated.</span></div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4 method-summary-table-tab6"><code>static <a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4 method-summary-table-tab6"><code><a href="#simplifyAnds(org.apache.calcite.rex.RexBuilder,java.lang.Iterable)" class="member-name-link">simplifyAnds</a><wbr>(<a href="RexBuilder.html" title="class in org.apache.calcite.rex">RexBuilder</a>&nbsp;rexBuilder,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Iterable.html" title="class or interface in java.lang" class="external-link">Iterable</a>&lt;? extends <a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;nodes)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4 method-summary-table-tab6">
<div class="block"><span class="deprecated-label">Deprecated.</span>
<div class="deprecation-comment">Use
<code>RexSimplify.simplifyAnds(Iterable, RexUnknownAs)</code>.</div>
</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4 method-summary-table-tab6"><code>static <a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4 method-summary-table-tab6"><code><a href="#simplifyAnds(org.apache.calcite.rex.RexBuilder,java.lang.Iterable,boolean)" class="member-name-link">simplifyAnds</a><wbr>(<a href="RexBuilder.html" title="class in org.apache.calcite.rex">RexBuilder</a>&nbsp;rexBuilder,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Iterable.html" title="class or interface in java.lang" class="external-link">Iterable</a>&lt;? extends <a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;nodes,
boolean&nbsp;unknownAsFalse)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4 method-summary-table-tab6">
<div class="block"><span class="deprecated-label">Deprecated.</span></div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4 method-summary-table-tab6"><code>static <a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4 method-summary-table-tab6"><code><a href="#simplifyOr(org.apache.calcite.rex.RexBuilder,org.apache.calcite.rex.RexCall)" class="member-name-link">simplifyOr</a><wbr>(<a href="RexBuilder.html" title="class in org.apache.calcite.rex">RexBuilder</a>&nbsp;rexBuilder,
<a href="RexCall.html" title="class in org.apache.calcite.rex">RexCall</a>&nbsp;call)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4 method-summary-table-tab6">
<div class="block"><span class="deprecated-label">Deprecated.</span></div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4 method-summary-table-tab6"><code>static <a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4 method-summary-table-tab6"><code><a href="#simplifyOrs(org.apache.calcite.rex.RexBuilder,java.util.List)" class="member-name-link">simplifyOrs</a><wbr>(<a href="RexBuilder.html" title="class in org.apache.calcite.rex">RexBuilder</a>&nbsp;rexBuilder,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;terms)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4 method-summary-table-tab6">
<div class="block"><span class="deprecated-label">Deprecated.</span></div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4 method-summary-table-tab6"><code>static <a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4 method-summary-table-tab6"><code><a href="#simplifyPreservingType(org.apache.calcite.rex.RexBuilder,org.apache.calcite.rex.RexNode)" class="member-name-link">simplifyPreservingType</a><wbr>(<a href="RexBuilder.html" title="class in org.apache.calcite.rex">RexBuilder</a>&nbsp;rexBuilder,
<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;e)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4 method-summary-table-tab6">
<div class="block"><span class="deprecated-label">Deprecated.</span>
<div class="deprecation-comment">Use <a href="RexSimplify.html#simplifyPreservingType(org.apache.calcite.rex.RexNode)"><code>RexSimplify.simplifyPreservingType(RexNode)</code></a>,
which allows you to specify an <a href="RexExecutor.html" title="interface in org.apache.calcite.rex"><code>RexExecutor</code></a>.</div>
</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#strings(java.util.List)" class="member-name-link">strings</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;list)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Transforms a list of expressions to the list of digests.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#swapColumnReferences(org.apache.calcite.rex.RexBuilder,org.apache.calcite.rex.RexNode,java.util.Map)" class="member-name-link">swapColumnReferences</a><wbr>(<a href="RexBuilder.html" title="class in org.apache.calcite.rex">RexBuilder</a>&nbsp;rexBuilder,
<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;node,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a>&lt;<a href="RexTableInputRef.html" title="class in org.apache.calcite.rex">RexTableInputRef</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Set.html" title="class or interface in java.util" class="external-link">Set</a>&lt;<a href="RexTableInputRef.html" title="class in org.apache.calcite.rex">RexTableInputRef</a>&gt;&gt;&nbsp;ec)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Given an expression, it will swap its column references <a href="RexTableInputRef.html" title="class in org.apache.calcite.rex"><code>RexTableInputRef</code></a>
using the contents in the map (in particular, the first element of the set in the
map value).</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#swapColumnTableReferences(org.apache.calcite.rex.RexBuilder,org.apache.calcite.rex.RexNode,java.util.Map,java.util.Map)" class="member-name-link">swapColumnTableReferences</a><wbr>(<a href="RexBuilder.html" title="class in org.apache.calcite.rex">RexBuilder</a>&nbsp;rexBuilder,
<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;node,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a>&lt;<a href="RexTableInputRef.html" title="class in org.apache.calcite.rex">RexTableInputRef</a>,<wbr>? extends @Nullable <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Set.html" title="class or interface in java.util" class="external-link">Set</a>&lt;<a href="RexTableInputRef.html" title="class in org.apache.calcite.rex">RexTableInputRef</a>&gt;&gt;&nbsp;ec,
@Nullable <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a>&lt;<a href="RexTableInputRef.RelTableRef.html" title="class in org.apache.calcite.rex">RexTableInputRef.RelTableRef</a>,<wbr><a href="RexTableInputRef.RelTableRef.html" title="class in org.apache.calcite.rex">RexTableInputRef.RelTableRef</a>&gt;&nbsp;tableMapping)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Given an expression, it will swap the column references <a href="RexTableInputRef.html" title="class in org.apache.calcite.rex"><code>RexTableInputRef</code></a>
using the contents in the first map (in particular, the first element of the set
in the map value), and then it will swap the table references contained in its
<a href="RexTableInputRef.html" title="class in org.apache.calcite.rex"><code>RexTableInputRef</code></a> using the contents in the second map.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#swapTableColumnReferences(org.apache.calcite.rex.RexBuilder,org.apache.calcite.rex.RexNode,java.util.Map,java.util.Map)" class="member-name-link">swapTableColumnReferences</a><wbr>(<a href="RexBuilder.html" title="class in org.apache.calcite.rex">RexBuilder</a>&nbsp;rexBuilder,
<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;node,
@Nullable <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a>&lt;<a href="RexTableInputRef.RelTableRef.html" title="class in org.apache.calcite.rex">RexTableInputRef.RelTableRef</a>,<wbr><a href="RexTableInputRef.RelTableRef.html" title="class in org.apache.calcite.rex">RexTableInputRef.RelTableRef</a>&gt;&nbsp;tableMapping,
@Nullable <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a>&lt;<a href="RexTableInputRef.html" title="class in org.apache.calcite.rex">RexTableInputRef</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Set.html" title="class or interface in java.util" class="external-link">Set</a>&lt;<a href="RexTableInputRef.html" title="class in org.apache.calcite.rex">RexTableInputRef</a>&gt;&gt;&nbsp;ec)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Given an expression, it will swap the table references contained in its
<a href="RexTableInputRef.html" title="class in org.apache.calcite.rex"><code>RexTableInputRef</code></a> using the contents in the first map, and then
it will swap the column references <a href="RexTableInputRef.html" title="class in org.apache.calcite.rex"><code>RexTableInputRef</code></a> using the contents
in the second map (in particular, the first element of the set in the map value).</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#swapTableReferences(org.apache.calcite.rex.RexBuilder,org.apache.calcite.rex.RexNode,java.util.Map)" class="member-name-link">swapTableReferences</a><wbr>(<a href="RexBuilder.html" title="class in org.apache.calcite.rex">RexBuilder</a>&nbsp;rexBuilder,
<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;node,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a>&lt;<a href="RexTableInputRef.RelTableRef.html" title="class in org.apache.calcite.rex">RexTableInputRef.RelTableRef</a>,<wbr><a href="RexTableInputRef.RelTableRef.html" title="class in org.apache.calcite.rex">RexTableInputRef.RelTableRef</a>&gt;&nbsp;tableMapping)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Given an expression, it will swap the table references contained in its
<a href="RexTableInputRef.html" title="class in org.apache.calcite.rex"><code>RexTableInputRef</code></a> using the contents in the map.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#toCnf(org.apache.calcite.rex.RexBuilder,int,org.apache.calcite.rex.RexNode)" class="member-name-link">toCnf</a><wbr>(<a href="RexBuilder.html" title="class in org.apache.calcite.rex">RexBuilder</a>&nbsp;rexBuilder,
int&nbsp;maxCnfNodeCount,
<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;rex)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Similar to <a href="#toCnf(org.apache.calcite.rex.RexBuilder,org.apache.calcite.rex.RexNode)"><code>toCnf(RexBuilder, RexNode)</code></a>; however, it lets you
specify a threshold in the number of nodes that can be created out of
the conversion.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#toCnf(org.apache.calcite.rex.RexBuilder,org.apache.calcite.rex.RexNode)" class="member-name-link">toCnf</a><wbr>(<a href="RexBuilder.html" title="class in org.apache.calcite.rex">RexBuilder</a>&nbsp;rexBuilder,
<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;rex)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Converts an expression to conjunctive normal form (CNF).</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#toDnf(org.apache.calcite.rex.RexBuilder,org.apache.calcite.rex.RexNode)" class="member-name-link">toDnf</a><wbr>(<a href="RexBuilder.html" title="class in org.apache.calcite.rex">RexBuilder</a>&nbsp;rexBuilder,
<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;rex)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Converts an expression to disjunctive normal form (DNF).</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&gt;</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#types(java.util.List)" class="member-name-link">types</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;? extends <a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;nodes)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Transforms a list of expressions into a list of their types.</div>
</div>
</div>
</div>
</div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
</section>
</li>
</ul>
</section>
<section class="details">
<ul class="details-list">
<!-- ============ FIELD DETAIL =========== -->
<li>
<section class="field-details" id="field-detail">
<h2>Field Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="EXECUTOR">
<h3>EXECUTOR</h3>
<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="RexExecutor.html" title="interface in org.apache.calcite.rex">RexExecutor</a></span>&nbsp;<span class="element-name">EXECUTOR</span></div>
<div class="block">Executor for a bit of constant reduction. The user can pass in another executor.</div>
</section>
</li>
</ul>
</section>
</li>
<!-- ============ METHOD DETAIL ========== -->
<li>
<section class="method-details" id="method-detail">
<h2>Method Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="getSelectivity(org.apache.calcite.rex.RexNode)">
<h3>getSelectivity</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">double</span>&nbsp;<span class="element-name">getSelectivity</span><wbr><span class="parameters">(@Nullable <a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;exp)</span></div>
<div class="block">Returns a guess for the selectivity of an expression.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>exp</code> - expression of interest, or null for none (implying a
selectivity of 1.0)</dd>
<dt>Returns:</dt>
<dd>guessed selectivity</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="generateCastExpressions(org.apache.calcite.rex.RexBuilder,org.apache.calcite.rel.type.RelDataType,org.apache.calcite.rel.type.RelDataType)">
<h3>generateCastExpressions</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;</span>&nbsp;<span class="element-name">generateCastExpressions</span><wbr><span class="parameters">(<a href="RexBuilder.html" title="class in org.apache.calcite.rex">RexBuilder</a>&nbsp;rexBuilder,
<a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;lhsRowType,
<a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;rhsRowType)</span></div>
<div class="block">Generates a cast from one row type to another.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>rexBuilder</code> - RexBuilder to use for constructing casts</dd>
<dd><code>lhsRowType</code> - target row type</dd>
<dd><code>rhsRowType</code> - source row type; fields must be 1-to-1 with lhsRowType,
in same order</dd>
<dt>Returns:</dt>
<dd>cast expressions</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="generateCastExpressions(org.apache.calcite.rex.RexBuilder,org.apache.calcite.rel.type.RelDataType,java.util.List)">
<h3>generateCastExpressions</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;</span>&nbsp;<span class="element-name">generateCastExpressions</span><wbr><span class="parameters">(<a href="RexBuilder.html" title="class in org.apache.calcite.rex">RexBuilder</a>&nbsp;rexBuilder,
<a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;lhsRowType,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;rhsExps)</span></div>
<div class="block">Generates a cast for a row type.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>rexBuilder</code> - RexBuilder to use for constructing casts</dd>
<dd><code>lhsRowType</code> - target row type</dd>
<dd><code>rhsExps</code> - expressions to be cast</dd>
<dt>Returns:</dt>
<dd>cast expressions</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="isNullLiteral(org.apache.calcite.rex.RexNode,boolean)">
<h3>isNullLiteral</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">isNullLiteral</span><wbr><span class="parameters">(<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;node,
boolean&nbsp;allowCast)</span></div>
<div class="block">Returns whether a node represents the NULL value.
<p>Examples:
<ul>
<li>For <a href="RexLiteral.html" title="class in org.apache.calcite.rex"><code>RexLiteral</code></a> Unknown, returns false.
<li>For <code>CAST(NULL AS <i>type</i>)</code>, returns true if <code>
allowCast</code> is true, false otherwise.
<li>For <code>CAST(CAST(NULL AS <i>type</i>) AS <i>type</i>))</code>,
returns false.
</ul></div>
</section>
</li>
<li>
<section class="detail" id="isNull(org.apache.calcite.rex.RexNode)">
<h3>isNull</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">isNull</span><wbr><span class="parameters">(<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;expr)</span></div>
<div class="block">Returns whether a node represents the NULL value or a series of nested
<code>CAST(NULL AS type)</code> calls. For example:
<code>isNull(CAST(CAST(NULL as INTEGER) AS VARCHAR(1)))</code>
returns <code>true</code>.</div>
</section>
</li>
<li>
<section class="detail" id="isSymbolLiteral(org.apache.calcite.rex.RexNode)">
<h3>isSymbolLiteral</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">isSymbolLiteral</span><wbr><span class="parameters">(<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;expr)</span></div>
<div class="block">Returns whether a node represents a <a href="../sql/type/SqlTypeName.html#SYMBOL"><code>SqlTypeName.SYMBOL</code></a> literal.</div>
</section>
</li>
<li>
<section class="detail" id="isLiteral(org.apache.calcite.rex.RexNode,boolean)">
<h3>isLiteral</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">isLiteral</span><wbr><span class="parameters">(<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;node,
boolean&nbsp;allowCast)</span></div>
<div class="block">Returns whether a node represents a literal.
<p>Examples:
<ul>
<li>For <code>CAST(literal AS <i>type</i>)</code>, returns true if <code>
allowCast</code> is true, false otherwise.
<li>For <code>CAST(CAST(literal AS <i>type</i>) AS <i>type</i>))</code>,
returns false.
</ul></div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>node</code> - The node, never null.</dd>
<dd><code>allowCast</code> - whether to regard CAST(literal) as a literal</dd>
<dt>Returns:</dt>
<dd>Whether the node is a literal</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="allLiterals(java.util.List)">
<h3>allLiterals</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">allLiterals</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;expressionOperands)</span></div>
<div class="block">Returns whether every expression in a list is a literal.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>expressionOperands</code> - list of expressions to check</dd>
<dt>Returns:</dt>
<dd>true if every expression from the specified list is literal.</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="isReferenceOrAccess(org.apache.calcite.rex.RexNode,boolean)">
<h3>isReferenceOrAccess</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">isReferenceOrAccess</span><wbr><span class="parameters">(<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;node,
boolean&nbsp;allowCast)</span></div>
<div class="block">Returns whether a node represents an input reference or field access.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>node</code> - The node, never null.</dd>
<dd><code>allowCast</code> - whether to regard CAST(x) as true</dd>
<dt>Returns:</dt>
<dd>Whether the node is a reference or access</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="isNullabilityCast(org.apache.calcite.rel.type.RelDataTypeFactory,org.apache.calcite.rex.RexNode)">
<h3>isNullabilityCast</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">isNullabilityCast</span><wbr><span class="parameters">(<a href="../rel/type/RelDataTypeFactory.html" title="interface in org.apache.calcite.rel.type">RelDataTypeFactory</a>&nbsp;typeFactory,
<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;node)</span></div>
<div class="block">Returns whether an expression is a cast just for the purposes of
nullability, not changing any other aspect of the type.</div>
</section>
</li>
<li>
<section class="detail" id="removeNullabilityCast(org.apache.calcite.rel.type.RelDataTypeFactory,org.apache.calcite.rex.RexNode)">
<h3>removeNullabilityCast</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></span>&nbsp;<span class="element-name">removeNullabilityCast</span><wbr><span class="parameters">(<a href="../rel/type/RelDataTypeFactory.html" title="interface in org.apache.calcite.rel.type">RelDataTypeFactory</a>&nbsp;typeFactory,
<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;node)</span></div>
<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>
</section>
</li>
<li>
<section class="detail" id="removeCast(org.apache.calcite.rex.RexNode)">
<h3>removeCast</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></span>&nbsp;<span class="element-name">removeCast</span><wbr><span class="parameters">(<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;e)</span></div>
<div class="block">Removes any casts.
<p>For example, <code>CAST('1' AS INTEGER)</code> becomes <code>'1'</code>.</div>
</section>
</li>
<li>
<section class="detail" id="predicateConstants(java.lang.Class,org.apache.calcite.rex.RexBuilder,java.util.List)">
<h3>predicateConstants</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="type-parameters">&lt;C extends <a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;</span>
<span class="return-type">com.google.common.collect.ImmutableMap&lt;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>,<wbr>C&gt;</span>&nbsp;<span class="element-name">predicateConstants</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;C&gt;&nbsp;clazz,
<a href="RexBuilder.html" title="class in org.apache.calcite.rex">RexBuilder</a>&nbsp;rexBuilder,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;predicates)</span></div>
<div class="block">Creates a map containing each (e, constant) pair that occurs within
a predicate list.</div>
<dl class="notes">
<dt>Type Parameters:</dt>
<dd><code>C</code> - what to consider a constant: <a href="RexLiteral.html" title="class in org.apache.calcite.rex"><code>RexLiteral</code></a> to use a narrow
definition of constant, or <a href="RexNode.html" title="class in org.apache.calcite.rex"><code>RexNode</code></a> to use
<a href="#isConstant(org.apache.calcite.rex.RexNode)"><code>isConstant(RexNode)</code></a></dd>
<dt>Parameters:</dt>
<dd><code>clazz</code> - Class of expression that is considered constant</dd>
<dd><code>rexBuilder</code> - Rex builder</dd>
<dd><code>predicates</code> - Predicate list</dd>
<dt>Returns:</dt>
<dd>Map from values to constants</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="nodeCount(java.util.List)">
<h3>nodeCount</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">nodeCount</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;? extends <a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;nodes)</span></div>
<div class="block">Returns the number of nodes (including leaves) in a list of
expressions.</div>
<dl class="notes">
<dt>See Also:</dt>
<dd>
<ul class="see-list">
<li><a href="RexNode.html#nodeCount()"><code>RexNode.nodeCount()</code></a></li>
</ul>
</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="find(org.apache.calcite.sql.SqlKind)">
<h3>find</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="RexUtil.RexFinder.html" title="class in org.apache.calcite.rex">RexUtil.RexFinder</a></span>&nbsp;<span class="element-name">find</span><wbr><span class="parameters">(<a href="../sql/SqlKind.html" title="enum in org.apache.calcite.sql">SqlKind</a>&nbsp;kind)</span></div>
<div class="block">Returns a visitor that finds nodes of a given <a href="../sql/SqlKind.html" title="enum in org.apache.calcite.sql"><code>SqlKind</code></a>.</div>
</section>
</li>
<li>
<section class="detail" id="find(java.util.Set)">
<h3>find</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="RexUtil.RexFinder.html" title="class in org.apache.calcite.rex">RexUtil.RexFinder</a></span>&nbsp;<span class="element-name">find</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Set.html" title="class or interface in java.util" class="external-link">Set</a>&lt;<a href="../sql/SqlKind.html" title="enum in org.apache.calcite.sql">SqlKind</a>&gt;&nbsp;kinds)</span></div>
<div class="block">Returns a visitor that finds nodes of given <a href="../sql/SqlKind.html" title="enum in org.apache.calcite.sql"><code>SqlKind</code></a>s.</div>
</section>
</li>
<li>
<section class="detail" id="find(org.apache.calcite.rex.RexInputRef)">
<h3>find</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="RexUtil.RexFinder.html" title="class in org.apache.calcite.rex">RexUtil.RexFinder</a></span>&nbsp;<span class="element-name">find</span><wbr><span class="parameters">(<a href="RexInputRef.html" title="class in org.apache.calcite.rex">RexInputRef</a>&nbsp;ref)</span></div>
<div class="block">Returns a visitor that finds a particular <a href="RexInputRef.html" title="class in org.apache.calcite.rex"><code>RexInputRef</code></a>.</div>
</section>
</li>
<li>
<section class="detail" id="expandSearch(org.apache.calcite.rex.RexBuilder,org.apache.calcite.rex.RexProgram,org.apache.calcite.rex.RexNode)">
<h3>expandSearch</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></span>&nbsp;<span class="element-name">expandSearch</span><wbr><span class="parameters">(<a href="RexBuilder.html" title="class in org.apache.calcite.rex">RexBuilder</a>&nbsp;rexBuilder,
@Nullable <a href="RexProgram.html" title="class in org.apache.calcite.rex">RexProgram</a>&nbsp;program,
<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;node)</span></div>
<div class="block">Expands all the calls to <a href="../sql/fun/SqlStdOperatorTable.html#SEARCH"><code>SqlStdOperatorTable.SEARCH</code></a> in an expression.</div>
</section>
</li>
<li>
<section class="detail" id="expandSearch(org.apache.calcite.rex.RexBuilder,org.apache.calcite.rex.RexProgram,org.apache.calcite.rex.RexNode,int)">
<h3>expandSearch</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></span>&nbsp;<span class="element-name">expandSearch</span><wbr><span class="parameters">(<a href="RexBuilder.html" title="class in org.apache.calcite.rex">RexBuilder</a>&nbsp;rexBuilder,
@Nullable <a href="RexProgram.html" title="class in org.apache.calcite.rex">RexProgram</a>&nbsp;program,
<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;node,
int&nbsp;maxComplexity)</span></div>
<div class="block">Expands calls to <a href="../sql/fun/SqlStdOperatorTable.html#SEARCH"><code>SqlStdOperatorTable.SEARCH</code></a>
whose complexity is greater than <code>maxComplexity</code> in an expression.</div>
</section>
</li>
<li>
<section class="detail" id="searchShuttle(org.apache.calcite.rex.RexBuilder,org.apache.calcite.rex.RexProgram,int)">
<h3>searchShuttle</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="RexShuttle.html" title="class in org.apache.calcite.rex">RexShuttle</a></span>&nbsp;<span class="element-name">searchShuttle</span><wbr><span class="parameters">(<a href="RexBuilder.html" title="class in org.apache.calcite.rex">RexBuilder</a>&nbsp;rexBuilder,
@Nullable <a href="RexProgram.html" title="class in org.apache.calcite.rex">RexProgram</a>&nbsp;program,
int&nbsp;maxComplexity)</span></div>
<div class="block">Creates a shuttle that expands calls to
<a href="../sql/fun/SqlStdOperatorTable.html#SEARCH"><code>SqlStdOperatorTable.SEARCH</code></a>.
<p>If <code>maxComplexity</code> is non-negative, a <a href="../util/Sarg.html" title="class in org.apache.calcite.util"><code>Sarg</code></a> whose
complexity is greater than <code>maxComplexity</code> is retained (not
expanded); this gives a means to simplify simple expressions such as
<code>x IS NULL</code> or <code>x &gt; 10</code> while keeping more complex expressions
such as <code>x IN (3, 5, 7) OR x IS NULL</code> as a Sarg.</div>
</section>
</li>
<li>
<section class="detail" id="sargRef(org.apache.calcite.rex.RexBuilder,org.apache.calcite.rex.RexNode,org.apache.calcite.util.Sarg,org.apache.calcite.rel.type.RelDataType,org.apache.calcite.rex.RexUnknownAs)">
<h3>sargRef</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="type-parameters">&lt;C extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Comparable.html" title="class or interface in java.lang" class="external-link">Comparable</a>&lt;C&gt;&gt;</span>&nbsp;<span class="return-type"><a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></span>&nbsp;<span class="element-name">sargRef</span><wbr><span class="parameters">(<a href="RexBuilder.html" title="class in org.apache.calcite.rex">RexBuilder</a>&nbsp;rexBuilder,
<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;ref,
<a href="../util/Sarg.html" title="class in org.apache.calcite.util">Sarg</a>&lt;C&gt;&nbsp;sarg,
<a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;type,
<a href="RexUnknownAs.html" title="enum in org.apache.calcite.rex">RexUnknownAs</a>&nbsp;unknownAs)</span></div>
</section>
</li>
<li>
<section class="detail" id="simpleSarg(org.apache.calcite.rex.RexBuilder,org.apache.calcite.rex.RexNode,org.apache.calcite.util.Sarg,org.apache.calcite.rex.RexUnknownAs)">
<h3>simpleSarg</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="type-parameters">&lt;C extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Comparable.html" title="class or interface in java.lang" class="external-link">Comparable</a>&lt;C&gt;&gt;</span>&nbsp;<span class="return-type"><a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></span>&nbsp;<span class="element-name">simpleSarg</span><wbr><span class="parameters">(<a href="RexBuilder.html" title="class in org.apache.calcite.rex">RexBuilder</a>&nbsp;rexBuilder,
<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;ref,
<a href="../util/Sarg.html" title="class in org.apache.calcite.util">Sarg</a>&lt;C&gt;&nbsp;sarg,
<a href="RexUnknownAs.html" title="enum in org.apache.calcite.rex">RexUnknownAs</a>&nbsp;unknownAs)</span></div>
<div class="block">Expands an 'all' or 'none' sarg.</div>
</section>
</li>
<li>
<section class="detail" id="isConstant(org.apache.calcite.rex.RexNode)">
<h3>isConstant</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">isConstant</span><wbr><span class="parameters">(<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;node)</span></div>
<div class="block">Returns whether node is made up of constants.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>node</code> - Node to inspect</dd>
<dt>Returns:</dt>
<dd>true if node is made up of constants, false otherwise</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="isDeterministic(org.apache.calcite.rex.RexNode)">
<h3>isDeterministic</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">isDeterministic</span><wbr><span class="parameters">(<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;e)</span></div>
<div class="block">Returns whether a given expression is deterministic.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>e</code> - Expression</dd>
<dt>Returns:</dt>
<dd>true if tree result is deterministic, false otherwise</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="retainDeterministic(java.util.List)">
<h3>retainDeterministic</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;</span>&nbsp;<span class="element-name">retainDeterministic</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;list)</span></div>
</section>
</li>
<li>
<section class="detail" id="findOperatorCall(org.apache.calcite.sql.SqlOperator,org.apache.calcite.rex.RexNode)">
<h3>findOperatorCall</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">@Nullable <a href="RexCall.html" title="class in org.apache.calcite.rex">RexCall</a></span>&nbsp;<span class="element-name">findOperatorCall</span><wbr><span class="parameters">(<a href="../sql/SqlOperator.html" title="class in org.apache.calcite.sql">SqlOperator</a>&nbsp;operator,
<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;node)</span></div>
<div class="block">Returns whether a given node contains a RexCall with a specified operator.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>operator</code> - Operator to look for</dd>
<dd><code>node</code> - a RexNode tree</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="containsInputRef(org.apache.calcite.rex.RexNode)">
<h3>containsInputRef</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">containsInputRef</span><wbr><span class="parameters">(<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;node)</span></div>
<div class="block">Returns whether a given tree contains any {link RexInputRef} nodes.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>node</code> - a RexNode tree</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="containsFieldAccess(org.apache.calcite.rex.RexNode)">
<h3>containsFieldAccess</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">containsFieldAccess</span><wbr><span class="parameters">(<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;node)</span></div>
<div class="block">Returns whether a given tree contains any
<a href="RexFieldAccess.html" title="class in org.apache.calcite.rex"><code>RexFieldAccess</code></a> nodes.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>node</code> - a RexNode tree</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="requiresDecimalExpansion(org.apache.calcite.rex.RexNode,boolean)">
<h3>requiresDecimalExpansion</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">requiresDecimalExpansion</span><wbr><span class="parameters">(<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;expr,
boolean&nbsp;recurse)</span></div>
<div class="block">Determines whether a <a href="RexCall.html" title="class in org.apache.calcite.rex"><code>RexCall</code></a> requires decimal expansion. It
usually requires expansion if it has decimal operands.
<p>Exceptions to this rule are:
<ul>
<li>isNull doesn't require expansion
<li>It's okay to cast decimals to and from char types
<li>It's okay to cast nulls as decimals
<li>Casts require expansion if their return type is decimal
<li>Reinterpret casts can handle a decimal operand
</ul></div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>expr</code> - expression possibly in need of expansion</dd>
<dd><code>recurse</code> - whether to check nested calls</dd>
<dt>Returns:</dt>
<dd>whether the expression requires expansion</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="requiresDecimalExpansion(java.util.List,boolean)">
<h3>requiresDecimalExpansion</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">requiresDecimalExpansion</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;operands,
boolean&nbsp;recurse)</span></div>
<div class="block">Determines whether any operand of a set requires decimal expansion.</div>
</section>
</li>
<li>
<section class="detail" id="requiresDecimalExpansion(org.apache.calcite.rex.RexProgram,boolean)">
<h3>requiresDecimalExpansion</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">requiresDecimalExpansion</span><wbr><span class="parameters">(<a href="RexProgram.html" title="class in org.apache.calcite.rex">RexProgram</a>&nbsp;program,
boolean&nbsp;recurse)</span></div>
<div class="block">Returns whether a <a href="RexProgram.html" title="class in org.apache.calcite.rex"><code>RexProgram</code></a> contains expressions which require
decimal expansion.</div>
</section>
</li>
<li>
<section class="detail" id="canReinterpretOverflow(org.apache.calcite.rex.RexCall)">
<h3>canReinterpretOverflow</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">canReinterpretOverflow</span><wbr><span class="parameters">(<a href="RexCall.html" title="class in org.apache.calcite.rex">RexCall</a>&nbsp;call)</span></div>
</section>
</li>
<li>
<section class="detail" id="containNoCommonExprs(java.util.List,org.apache.calcite.util.Litmus)">
<h3>containNoCommonExprs</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">containNoCommonExprs</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;exprs,
<a href="../util/Litmus.html" title="interface in org.apache.calcite.util">Litmus</a>&nbsp;litmus)</span></div>
<div class="block">Returns whether an array of expressions has any common sub-expressions.</div>
</section>
</li>
<li>
<section class="detail" id="containNoForwardRefs(java.util.List,org.apache.calcite.rel.type.RelDataType,org.apache.calcite.util.Litmus)">
<h3>containNoForwardRefs</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">containNoForwardRefs</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;exprs,
<a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;inputRowType,
<a href="../util/Litmus.html" title="interface in org.apache.calcite.util">Litmus</a>&nbsp;litmus)</span></div>
<div class="block">Returns whether an array of expressions contains no forward references.
That is, if expression #i contains a <a href="RexInputRef.html" title="class in org.apache.calcite.rex"><code>RexInputRef</code></a> referencing
field i or greater.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>exprs</code> - Array of expressions</dd>
<dd><code>inputRowType</code> - Input row type</dd>
<dd><code>litmus</code> - What to do if an error is detected (there is a
forward reference)</dd>
<dt>Returns:</dt>
<dd>Whether there is a forward reference</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="containComplexExprs(java.util.List)">
<h3>containComplexExprs</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">containComplexExprs</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;exprs)</span></div>
<div class="block">Returns whether a list of expressions contains complex expressions, that
is, a call whose arguments are not <a href="RexVariable.html" title="class in org.apache.calcite.rex"><code>RexVariable</code></a> (or a subtype such
as <a href="RexInputRef.html" title="class in org.apache.calcite.rex"><code>RexInputRef</code></a>) or <a href="RexLiteral.html" title="class in org.apache.calcite.rex"><code>RexLiteral</code></a>.</div>
</section>
</li>
<li>
<section class="detail" id="containsTableInputRef(java.util.List)">
<h3>containsTableInputRef</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">containsTableInputRef</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;nodes)</span></div>
<div class="block">Returns whether any of the given expression trees contains a
{link RexTableInputRef} node.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>nodes</code> - a list of RexNode trees</dd>
<dt>Returns:</dt>
<dd>true if at least one was found, otherwise false</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="containsTableInputRef(org.apache.calcite.rex.RexNode)">
<h3>containsTableInputRef</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">@Nullable <a href="RexTableInputRef.html" title="class in org.apache.calcite.rex">RexTableInputRef</a></span>&nbsp;<span class="element-name">containsTableInputRef</span><wbr><span class="parameters">(<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;node)</span></div>
<div class="block">Returns whether a given tree contains any {link RexTableInputRef} nodes.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>node</code> - a RexNode tree</dd>
<dt>Returns:</dt>
<dd>first such node found or null if it there is no such node</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="isAtomic(org.apache.calcite.rex.RexNode)">
<h3>isAtomic</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">isAtomic</span><wbr><span class="parameters">(<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;expr)</span></div>
</section>
</li>
<li>
<section class="detail" id="isCallTo(org.apache.calcite.rex.RexNode,org.apache.calcite.sql.SqlOperator)">
<h3>isCallTo</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">isCallTo</span><wbr><span class="parameters">(<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;expr,
<a href="../sql/SqlOperator.html" title="class in org.apache.calcite.sql">SqlOperator</a>&nbsp;op)</span></div>
<div class="block">Returns whether a <a href="RexNode.html" title="class in org.apache.calcite.rex"><code>node</code></a> is a <a href="RexCall.html" title="class in org.apache.calcite.rex"><code>call</code></a> to a
given <a href="../sql/SqlOperator.html" title="class in org.apache.calcite.sql"><code>operator</code></a>.</div>
</section>
</li>
<li>
<section class="detail" id="createStructType(org.apache.calcite.rel.type.RelDataTypeFactory,java.util.List)">
<h3>createStructType</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></span>&nbsp;<span class="element-name">createStructType</span><wbr><span class="parameters">(<a href="../rel/type/RelDataTypeFactory.html" title="interface in org.apache.calcite.rel.type">RelDataTypeFactory</a>&nbsp;typeFactory,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;exprs)</span></div>
<div class="block">Creates a record type with anonymous field names.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>typeFactory</code> - Type factory</dd>
<dd><code>exprs</code> - Expressions</dd>
<dt>Returns:</dt>
<dd>Record type</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="createStructType(org.apache.calcite.rel.type.RelDataTypeFactory,java.util.List,java.util.List,org.apache.calcite.sql.validate.SqlValidatorUtil.Suggester)">
<h3>createStructType</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></span>&nbsp;<span class="element-name">createStructType</span><wbr><span class="parameters">(<a href="../rel/type/RelDataTypeFactory.html" title="interface in org.apache.calcite.rel.type">RelDataTypeFactory</a>&nbsp;typeFactory,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;? extends <a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;exprs,
@Nullable <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;? extends @Nullable <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;&nbsp;names,
@Nullable <a href="../sql/validate/SqlValidatorUtil.Suggester.html" title="interface in org.apache.calcite.sql.validate">SqlValidatorUtil.Suggester</a>&nbsp;suggester)</span></div>
<div class="block">Creates a record type with specified field names.
<p>The array of field names may be null, or any of the names within it
can be null. We recommend using explicit names where possible, because it
makes it much easier to figure out the intent of fields when looking at
planner output.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>typeFactory</code> - Type factory</dd>
<dd><code>exprs</code> - Expressions</dd>
<dd><code>names</code> - Field names, may be null, or elements may be null</dd>
<dd><code>suggester</code> - Generates alternative names if <code>names</code> is not
null and its elements are not unique</dd>
<dt>Returns:</dt>
<dd>Record type</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="createStructType(org.apache.calcite.rel.type.RelDataTypeFactory,java.util.List,java.util.List)">
<h3>createStructType</h3>
<div class="member-signature"><span class="annotations"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Deprecated.html" title="class or interface in java.lang" class="external-link">@Deprecated</a>
</span><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></span>&nbsp;<span class="element-name">createStructType</span><wbr><span class="parameters">(<a href="../rel/type/RelDataTypeFactory.html" title="interface in org.apache.calcite.rel.type">RelDataTypeFactory</a>&nbsp;typeFactory,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;? extends <a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;exprs,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;&nbsp;names)</span></div>
<div class="deprecation-block"><span class="deprecated-label">Deprecated.</span></div>
</section>
</li>
<li>
<section class="detail" id="compatibleTypes(java.util.List,org.apache.calcite.rel.type.RelDataType,org.apache.calcite.util.Litmus)">
<h3>compatibleTypes</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">compatibleTypes</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;exprs,
<a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;type,
<a href="../util/Litmus.html" title="interface in org.apache.calcite.util">Litmus</a>&nbsp;litmus)</span></div>
<div class="block">Returns whether the type of an array of expressions is compatible with a
struct type.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>exprs</code> - Array of expressions</dd>
<dd><code>type</code> - Type</dd>
<dd><code>litmus</code> - What to do if an error is detected (there is a mismatch)</dd>
<dt>Returns:</dt>
<dd>Whether every expression has the same type as the corresponding
member of the struct type</dd>
<dt>See Also:</dt>
<dd>
<ul class="see-list-long">
<li><a href="../plan/RelOptUtil.html#eq(java.lang.String,org.apache.calcite.rel.type.RelDataType,java.lang.String,org.apache.calcite.rel.type.RelDataType,org.apache.calcite.util.Litmus)"><code>RelOptUtil.eq(String, RelDataType, String, RelDataType, org.apache.calcite.util.Litmus)</code></a></li>
</ul>
</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="makeKey(org.apache.calcite.rex.RexNode)">
<h3>makeKey</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="../util/Pair.html" title="class in org.apache.calcite.util">Pair</a>&lt;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</span>&nbsp;<span class="element-name">makeKey</span><wbr><span class="parameters">(<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;expr)</span></div>
<div class="block">Creates a key for <a href="RexNode.html" title="class in org.apache.calcite.rex"><code>RexNode</code></a> which is the same as another key of
another RexNode only if the two have both the same type and textual
representation. For example, "10" integer and "10" bigint result in
different keys.</div>
</section>
</li>
<li>
<section class="detail" id="containIdentity(java.util.List,org.apache.calcite.rel.type.RelDataType,org.apache.calcite.util.Litmus)">
<h3>containIdentity</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">containIdentity</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;? extends <a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;exprs,
<a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;rowType,
<a href="../util/Litmus.html" title="interface in org.apache.calcite.util">Litmus</a>&nbsp;litmus)</span></div>
<div class="block">Returns whether the leading edge of a given array of expressions is
wholly <a href="RexInputRef.html" title="class in org.apache.calcite.rex"><code>RexInputRef</code></a> objects with types corresponding to the
underlying datatype.</div>
</section>
</li>
<li>
<section class="detail" id="isIdentity(java.util.List,org.apache.calcite.rel.type.RelDataType)">
<h3>isIdentity</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">isIdentity</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;? extends <a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;exps,
<a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;inputRowType)</span></div>
<div class="block">Returns whether a list of expressions projects the incoming fields.</div>
</section>
</li>
<li>
<section class="detail" id="composeConjunction(org.apache.calcite.rex.RexBuilder,java.lang.Iterable)">
<h3>composeConjunction</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></span>&nbsp;<span class="element-name">composeConjunction</span><wbr><span class="parameters">(<a href="RexBuilder.html" title="class in org.apache.calcite.rex">RexBuilder</a>&nbsp;rexBuilder,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Iterable.html" title="class or interface in java.lang" class="external-link">Iterable</a>&lt;? extends @Nullable <a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;nodes)</span></div>
<div class="block">As <a href="#composeConjunction(org.apache.calcite.rex.RexBuilder,java.lang.Iterable,boolean)"><code>composeConjunction(RexBuilder, Iterable, boolean)</code></a> but never
returns null.</div>
</section>
</li>
<li>
<section class="detail" id="composeConjunction(org.apache.calcite.rex.RexBuilder,java.lang.Iterable,boolean)">
<h3>composeConjunction</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">@Nullable <a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></span>&nbsp;<span class="element-name">composeConjunction</span><wbr><span class="parameters">(<a href="RexBuilder.html" title="class in org.apache.calcite.rex">RexBuilder</a>&nbsp;rexBuilder,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Iterable.html" title="class or interface in java.lang" class="external-link">Iterable</a>&lt;? extends @Nullable <a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;nodes,
boolean&nbsp;nullOnEmpty)</span></div>
<div class="block">Converts a collection of expressions into an AND.
If there are zero expressions, returns TRUE.
If there is one expression, returns just that expression.
If any of the expressions are FALSE, returns FALSE.
Removes expressions that always evaluate to TRUE.
Returns null only if <code>nullOnEmpty</code> and expression is TRUE.</div>
</section>
</li>
<li>
<section class="detail" id="flattenAnd(java.lang.Iterable)">
<h3>flattenAnd</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">com.google.common.collect.ImmutableList&lt;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;</span>&nbsp;<span class="element-name">flattenAnd</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Iterable.html" title="class or interface in java.lang" class="external-link">Iterable</a>&lt;? extends @Nullable <a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;nodes)</span></div>
<div class="block">Flattens a list of AND nodes.
<p>Treats null nodes as literal TRUE (i.e. ignores them).</div>
</section>
</li>
<li>
<section class="detail" id="composeDisjunction(org.apache.calcite.rex.RexBuilder,java.lang.Iterable)">
<h3>composeDisjunction</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></span>&nbsp;<span class="element-name">composeDisjunction</span><wbr><span class="parameters">(<a href="RexBuilder.html" title="class in org.apache.calcite.rex">RexBuilder</a>&nbsp;rexBuilder,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Iterable.html" title="class or interface in java.lang" class="external-link">Iterable</a>&lt;? extends <a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;nodes)</span></div>
<div class="block">Converts a collection of expressions into an OR.
If there are zero expressions, returns FALSE.
If there is one expression, returns just that expression.
If any of the expressions are TRUE, returns TRUE.
Removes expressions that always evaluate to FALSE.
Flattens expressions that are ORs.</div>
</section>
</li>
<li>
<section class="detail" id="composeDisjunction(org.apache.calcite.rex.RexBuilder,java.lang.Iterable,boolean)">
<h3>composeDisjunction</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">@Nullable <a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></span>&nbsp;<span class="element-name">composeDisjunction</span><wbr><span class="parameters">(<a href="RexBuilder.html" title="class in org.apache.calcite.rex">RexBuilder</a>&nbsp;rexBuilder,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Iterable.html" title="class or interface in java.lang" class="external-link">Iterable</a>&lt;? extends <a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;nodes,
boolean&nbsp;nullOnEmpty)</span></div>
<div class="block">Converts a collection of expressions into an OR,
optionally returning null if the list is empty.</div>
</section>
</li>
<li>
<section class="detail" id="flattenOr(java.lang.Iterable)">
<h3>flattenOr</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">com.google.common.collect.ImmutableList&lt;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;</span>&nbsp;<span class="element-name">flattenOr</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Iterable.html" title="class or interface in java.lang" class="external-link">Iterable</a>&lt;? extends <a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;nodes)</span></div>
<div class="block">Flattens a list of OR nodes.</div>
</section>
</li>
<li>
<section class="detail" id="apply(org.apache.calcite.util.mapping.Mappings.TargetMapping,java.util.List)">
<h3>apply</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="../rel/RelCollation.html" title="interface in org.apache.calcite.rel">RelCollation</a>&gt;</span>&nbsp;<span class="element-name">apply</span><wbr><span class="parameters">(<a href="../util/mapping/Mappings.TargetMapping.html" title="interface in org.apache.calcite.util.mapping">Mappings.TargetMapping</a>&nbsp;mapping,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="../rel/RelCollation.html" title="interface in org.apache.calcite.rel">RelCollation</a>&gt;&nbsp;collationList)</span></div>
<div class="block">Applies a mapping to a collation list.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>mapping</code> - Mapping</dd>
<dd><code>collationList</code> - Collation list</dd>
<dt>Returns:</dt>
<dd>collation list with mapping applied to each field</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="apply(org.apache.calcite.util.mapping.Mappings.TargetMapping,org.apache.calcite.rel.RelCollation)">
<h3>apply</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="../rel/RelCollation.html" title="interface in org.apache.calcite.rel">RelCollation</a></span>&nbsp;<span class="element-name">apply</span><wbr><span class="parameters">(<a href="../util/mapping/Mappings.TargetMapping.html" title="interface in org.apache.calcite.util.mapping">Mappings.TargetMapping</a>&nbsp;mapping,
<a href="../rel/RelCollation.html" title="interface in org.apache.calcite.rel">RelCollation</a>&nbsp;collation)</span></div>
<div class="block">Applies a mapping to a collation.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>mapping</code> - Mapping</dd>
<dd><code>collation</code> - Collation</dd>
<dt>Returns:</dt>
<dd>collation with mapping applied</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="apply(org.apache.calcite.util.mapping.Mappings.TargetMapping,org.apache.calcite.rel.RelFieldCollation)">
<h3>apply</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">@Nullable <a href="../rel/RelFieldCollation.html" title="class in org.apache.calcite.rel">RelFieldCollation</a></span>&nbsp;<span class="element-name">apply</span><wbr><span class="parameters">(<a href="../util/mapping/Mappings.TargetMapping.html" title="interface in org.apache.calcite.util.mapping">Mappings.TargetMapping</a>&nbsp;mapping,
<a href="../rel/RelFieldCollation.html" title="class in org.apache.calcite.rel">RelFieldCollation</a>&nbsp;fieldCollation)</span></div>
<div class="block">Applies a mapping to a field collation.
<p>If the field is not mapped, returns null.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>mapping</code> - Mapping</dd>
<dd><code>fieldCollation</code> - Field collation</dd>
<dt>Returns:</dt>
<dd>collation with mapping applied</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="applyFields(org.apache.calcite.util.mapping.Mappings.TargetMapping,java.util.List)">
<h3>applyFields</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="../rel/RelFieldCollation.html" title="class in org.apache.calcite.rel">RelFieldCollation</a>&gt;</span>&nbsp;<span class="element-name">applyFields</span><wbr><span class="parameters">(<a href="../util/mapping/Mappings.TargetMapping.html" title="interface in org.apache.calcite.util.mapping">Mappings.TargetMapping</a>&nbsp;mapping,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="../rel/RelFieldCollation.html" title="class in org.apache.calcite.rel">RelFieldCollation</a>&gt;&nbsp;fieldCollations)</span></div>
<div class="block">Applies a mapping to a list of field collations.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>mapping</code> - Mapping</dd>
<dd><code>fieldCollations</code> - Field collations</dd>
<dt>Returns:</dt>
<dd>collations with mapping applied</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="apply(org.apache.calcite.util.mapping.Mappings.TargetMapping,org.apache.calcite.rex.RexNode)">
<h3>apply</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></span>&nbsp;<span class="element-name">apply</span><wbr><span class="parameters">(<a href="../util/mapping/Mappings.TargetMapping.html" title="interface in org.apache.calcite.util.mapping">Mappings.TargetMapping</a>&nbsp;mapping,
<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;node)</span></div>
<div class="block">Applies a mapping to an expression.</div>
</section>
</li>
<li>
<section class="detail" id="apply(org.apache.calcite.util.mapping.Mappings.TargetMapping,java.lang.Iterable)">
<h3>apply</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;</span>&nbsp;<span class="element-name">apply</span><wbr><span class="parameters">(<a href="../util/mapping/Mappings.TargetMapping.html" title="interface in org.apache.calcite.util.mapping">Mappings.TargetMapping</a>&nbsp;mapping,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Iterable.html" title="class or interface in java.lang" class="external-link">Iterable</a>&lt;? extends <a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;nodes)</span></div>
<div class="block">Applies a mapping to an iterable over expressions.</div>
</section>
</li>
<li>
<section class="detail" id="apply(org.apache.calcite.rex.RexVisitor,T[])">
<h3 id="apply(org.apache.calcite.rex.RexVisitor,org.apache.calcite.rex.RexNode[])">apply</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="type-parameters">&lt;T extends <a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;</span>&nbsp;<span class="return-type">T[]</span>&nbsp;<span class="element-name">apply</span><wbr><span class="parameters">(<a href="RexVisitor.html" title="interface in org.apache.calcite.rex">RexVisitor</a>&lt;T&gt;&nbsp;shuttle,
T[]&nbsp;exprs)</span></div>
<div class="block">Applies a shuttle to an array of expressions. Creates a copy first.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>shuttle</code> - Shuttle</dd>
<dd><code>exprs</code> - Array of expressions</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="apply(org.apache.calcite.rex.RexVisitor,org.apache.calcite.rex.RexNode[],org.apache.calcite.rex.RexNode)">
<h3>apply</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">apply</span><wbr><span class="parameters">(<a href="RexVisitor.html" title="interface in org.apache.calcite.rex">RexVisitor</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Void.html" title="class or interface in java.lang" class="external-link">Void</a>&gt;&nbsp;visitor,
<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>[]&nbsp;exprs,
@Nullable <a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;expr)</span></div>
<div class="block">Applies a visitor to an array of expressions and, if specified, a single
expression.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>visitor</code> - Visitor</dd>
<dd><code>exprs</code> - Array of expressions</dd>
<dd><code>expr</code> - Single expression, may be null</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="apply(org.apache.calcite.rex.RexVisitor,java.util.List,org.apache.calcite.rex.RexNode)">
<h3>apply</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">apply</span><wbr><span class="parameters">(<a href="RexVisitor.html" title="interface in org.apache.calcite.rex">RexVisitor</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Void.html" title="class or interface in java.lang" class="external-link">Void</a>&gt;&nbsp;visitor,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;? extends <a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;exprs,
@Nullable <a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;expr)</span></div>
<div class="block">Applies a visitor to a list of expressions and, if specified, a single
expression.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>visitor</code> - Visitor</dd>
<dd><code>exprs</code> - List of expressions</dd>
<dd><code>expr</code> - Single expression, may be null</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="flatten(org.apache.calcite.rex.RexBuilder,org.apache.calcite.rex.RexNode)">
<h3>flatten</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></span>&nbsp;<span class="element-name">flatten</span><wbr><span class="parameters">(<a href="RexBuilder.html" title="class in org.apache.calcite.rex">RexBuilder</a>&nbsp;rexBuilder,
<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;node)</span></div>
<div class="block">Flattens an expression.
<p>Returns the same expression if it is already flat.</div>
</section>
</li>
<li>
<section class="detail" id="flatten(java.util.List,org.apache.calcite.sql.SqlOperator)">
<h3>flatten</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;</span>&nbsp;<span class="element-name">flatten</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;? extends <a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;exprs,
<a href="../sql/SqlOperator.html" title="class in org.apache.calcite.sql">SqlOperator</a>&nbsp;op)</span></div>
<div class="block">Converts a list of operands into a list that is flat with respect to
the given operator. The operands are assumed to be flat already.</div>
</section>
</li>
<li>
<section class="detail" id="isFlat(org.apache.calcite.rex.RexNode)">
<h3>isFlat</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">isFlat</span><wbr><span class="parameters">(<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;expr)</span></div>
<div class="block">Returns false if the expression can be optimized by flattening
calls to an associative operator such as AND and OR.</div>
</section>
</li>
<li>
<section class="detail" id="isLosslessCast(org.apache.calcite.rex.RexNode)">
<h3>isLosslessCast</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">isLosslessCast</span><wbr><span class="parameters">(<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;node)</span></div>
<div class="block">Returns whether the input is a 'loss-less' cast, that is, a cast from which
the original value of the field can be certainly recovered.
<p>For instance, int &rarr; bigint is loss-less (as you can cast back to
int without loss of information), but bigint &rarr; int is not loss-less.
<p>The implementation of this method does not return false positives.
However, it is not complete.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>node</code> - input node to verify if it represents a loss-less cast</dd>
<dt>Returns:</dt>
<dd>true iff the node is a loss-less cast</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="isLosslessCast(org.apache.calcite.rel.type.RelDataType,org.apache.calcite.rel.type.RelDataType)">
<h3>isLosslessCast</h3>
<div class="member-signature"><span class="annotations">@API(since="1.22",
status=EXPERIMENTAL)
</span><span class="modifiers">public static</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">isLosslessCast</span><wbr><span class="parameters">(<a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;source,
<a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;target)</span></div>
<div class="block">Returns whether the conversion from <code>source</code> to <code>target</code> type
is a 'loss-less' cast, that is, a cast from which
the original value of the field can be certainly recovered.
<p>For instance, int &rarr; bigint is loss-less (as you can cast back to
int without loss of information), but bigint &rarr; int is not loss-less.
<p>The implementation of this method does not return false positives.
However, it is not complete.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>source</code> - source type</dd>
<dd><code>target</code> - target type</dd>
<dt>Returns:</dt>
<dd>true iff the conversion is a loss-less cast</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="toCnf(org.apache.calcite.rex.RexBuilder,org.apache.calcite.rex.RexNode)">
<h3>toCnf</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></span>&nbsp;<span class="element-name">toCnf</span><wbr><span class="parameters">(<a href="RexBuilder.html" title="class in org.apache.calcite.rex">RexBuilder</a>&nbsp;rexBuilder,
<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;rex)</span></div>
<div class="block">Converts an expression to conjunctive normal form (CNF).
<p>The following expression is in CNF:
<blockquote>(a OR b) AND (c OR d)</blockquote>
<p>The following expression is not in CNF:
<blockquote>(a AND b) OR c</blockquote>
<p>but can be converted to CNF:
<blockquote>(a OR c) AND (b OR c)</blockquote>
<p>The following expression is not in CNF:
<blockquote>NOT (a OR NOT b)</blockquote>
<p>but can be converted to CNF by applying de Morgan's theorem:
<blockquote>NOT a AND b</blockquote>
<p>Expressions not involving AND, OR or NOT at the top level are in CNF.</div>
</section>
</li>
<li>
<section class="detail" id="toCnf(org.apache.calcite.rex.RexBuilder,int,org.apache.calcite.rex.RexNode)">
<h3>toCnf</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></span>&nbsp;<span class="element-name">toCnf</span><wbr><span class="parameters">(<a href="RexBuilder.html" title="class in org.apache.calcite.rex">RexBuilder</a>&nbsp;rexBuilder,
int&nbsp;maxCnfNodeCount,
<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;rex)</span></div>
<div class="block">Similar to <a href="#toCnf(org.apache.calcite.rex.RexBuilder,org.apache.calcite.rex.RexNode)"><code>toCnf(RexBuilder, RexNode)</code></a>; however, it lets you
specify a threshold in the number of nodes that can be created out of
the conversion.
<p>If the number of resulting nodes exceeds that threshold,
stops conversion and returns the original expression.
<p>If the threshold is negative it is ignored.
<p>Leaf nodes in the expression do not count towards the threshold.</div>
</section>
</li>
<li>
<section class="detail" id="toDnf(org.apache.calcite.rex.RexBuilder,org.apache.calcite.rex.RexNode)">
<h3>toDnf</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></span>&nbsp;<span class="element-name">toDnf</span><wbr><span class="parameters">(<a href="RexBuilder.html" title="class in org.apache.calcite.rex">RexBuilder</a>&nbsp;rexBuilder,
<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;rex)</span></div>
<div class="block">Converts an expression to disjunctive normal form (DNF).
<p>DNF: It is a form of logical formula which is disjunction of conjunctive
clauses.
<p>All logical formulas can be converted into DNF.
<p>The following expression is in DNF:
<blockquote>(a AND b) OR (c AND d)</blockquote>
<p>The following expression is not in CNF:
<blockquote>(a OR b) AND c</blockquote>
<p>but can be converted to DNF:
<blockquote>(a AND c) OR (b AND c)</blockquote>
<p>The following expression is not in CNF:
<blockquote>NOT (a OR NOT b)</blockquote>
<p>but can be converted to DNF by applying de Morgan's theorem:
<blockquote>NOT a AND b</blockquote>
<p>Expressions not involving AND, OR or NOT at the top level are in DNF.</div>
</section>
</li>
<li>
<section class="detail" id="exists(java.util.List,org.apache.calcite.linq4j.function.Predicate1)">
<h3>exists</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="type-parameters">&lt;E&gt;</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">exists</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;? extends E&gt;&nbsp;list,
<a href="../linq4j/function/Predicate1.html" title="interface in org.apache.calcite.linq4j.function">Predicate1</a>&lt;E&gt;&nbsp;predicate)</span></div>
<div class="block">Returns whether there is an element in <code>list</code> for which
<code>predicate</code> is true.</div>
</section>
</li>
<li>
<section class="detail" id="all(java.util.List,org.apache.calcite.linq4j.function.Predicate1)">
<h3>all</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="type-parameters">&lt;E&gt;</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">all</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;? extends E&gt;&nbsp;list,
<a href="../linq4j/function/Predicate1.html" title="interface in org.apache.calcite.linq4j.function">Predicate1</a>&lt;E&gt;&nbsp;predicate)</span></div>
<div class="block">Returns whether <code>predicate</code> is true for all elements of
<code>list</code>.</div>
</section>
</li>
<li>
<section class="detail" id="shift(org.apache.calcite.rex.RexNode,int)">
<h3>shift</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></span>&nbsp;<span class="element-name">shift</span><wbr><span class="parameters">(<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;node,
int&nbsp;offset)</span></div>
<div class="block">Shifts every <a href="RexInputRef.html" title="class in org.apache.calcite.rex"><code>RexInputRef</code></a> in an expression by <code>offset</code>.</div>
</section>
</li>
<li>
<section class="detail" id="shift(java.lang.Iterable,int)">
<h3>shift</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;</span>&nbsp;<span class="element-name">shift</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Iterable.html" title="class or interface in java.lang" class="external-link">Iterable</a>&lt;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;nodes,
int&nbsp;offset)</span></div>
<div class="block">Shifts every <a href="RexInputRef.html" title="class in org.apache.calcite.rex"><code>RexInputRef</code></a> in an expression by <code>offset</code>.</div>
</section>
</li>
<li>
<section class="detail" id="shift(org.apache.calcite.rex.RexNode,int,int)">
<h3>shift</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></span>&nbsp;<span class="element-name">shift</span><wbr><span class="parameters">(<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;node,
int&nbsp;start,
int&nbsp;offset)</span></div>
<div class="block">Shifts every <a href="RexInputRef.html" title="class in org.apache.calcite.rex"><code>RexInputRef</code></a> in an expression higher than <code>start</code>
by <code>offset</code>.</div>
</section>
</li>
<li>
<section class="detail" id="pullFactors(org.apache.calcite.rex.RexBuilder,org.apache.calcite.rex.RexNode)">
<h3>pullFactors</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></span>&nbsp;<span class="element-name">pullFactors</span><wbr><span class="parameters">(<a href="RexBuilder.html" title="class in org.apache.calcite.rex">RexBuilder</a>&nbsp;rexBuilder,
<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;node)</span></div>
<div class="block">Creates an equivalent version of a node where common factors among ORs
are pulled up.
<p>For example,
<blockquote>(a AND b) OR (a AND c AND d)</blockquote>
<p>becomes
<blockquote>a AND (b OR (c AND d))</blockquote>
<p>Note that this result is not in CNF
(see <a href="#toCnf(org.apache.calcite.rex.RexBuilder,org.apache.calcite.rex.RexNode)"><code>toCnf(RexBuilder, RexNode)</code></a>) because there is an AND inside an
OR.
<p>This form is useful if, say, <code>a</code> contains columns from only the
left-hand side of a join, and can be pushed to the left input.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>rexBuilder</code> - Rex builder</dd>
<dd><code>node</code> - Expression to transform</dd>
<dt>Returns:</dt>
<dd>Equivalent expression with common factors pulled up</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="fixUp(org.apache.calcite.rex.RexBuilder,java.util.List,org.apache.calcite.rel.type.RelDataType)">
<h3>fixUp</h3>
<div class="member-signature"><span class="annotations"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Deprecated.html" title="class or interface in java.lang" class="external-link">@Deprecated</a>
</span><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;</span>&nbsp;<span class="element-name">fixUp</span><wbr><span class="parameters">(<a href="RexBuilder.html" title="class in org.apache.calcite.rex">RexBuilder</a>&nbsp;rexBuilder,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;nodes,
<a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;rowType)</span></div>
<div class="deprecation-block"><span class="deprecated-label">Deprecated.</span></div>
</section>
</li>
<li>
<section class="detail" id="fixUp(org.apache.calcite.rex.RexBuilder,java.util.List,java.util.List)">
<h3>fixUp</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;</span>&nbsp;<span class="element-name">fixUp</span><wbr><span class="parameters">(<a href="RexBuilder.html" title="class in org.apache.calcite.rex">RexBuilder</a>&nbsp;rexBuilder,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;nodes,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&gt;&nbsp;fieldTypes)</span></div>
<div class="block">Fixes up the type of all <a href="RexInputRef.html" title="class in org.apache.calcite.rex"><code>RexInputRef</code></a>s in an
expression to match differences in nullability.
<p>Such differences in nullability occur when expressions are moved
through outer joins.
<p>Throws if there any greater inconsistencies of type.</div>
</section>
</li>
<li>
<section class="detail" id="types(java.util.List)">
<h3>types</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&gt;</span>&nbsp;<span class="element-name">types</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;? extends <a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;nodes)</span></div>
<div class="block">Transforms a list of expressions into a list of their types.</div>
</section>
</li>
<li>
<section class="detail" id="families(java.util.List)">
<h3>families</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="../rel/type/RelDataTypeFamily.html" title="interface in org.apache.calcite.rel.type">RelDataTypeFamily</a>&gt;</span>&nbsp;<span class="element-name">families</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&gt;&nbsp;types)</span></div>
</section>
</li>
<li>
<section class="detail" id="removeAll(java.util.List,org.apache.calcite.rex.RexNode)">
<h3>removeAll</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">removeAll</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;targets,
<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;e)</span></div>
<div class="block">Removes all expressions from a list that are equivalent to a given
expression. Returns whether any were removed.</div>
</section>
</li>
<li>
<section class="detail" id="eq(org.apache.calcite.rex.RexNode,org.apache.calcite.rex.RexNode)">
<h3>eq</h3>
<div class="member-signature"><span class="annotations"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Deprecated.html" title="class or interface in java.lang" class="external-link">@Deprecated</a>
</span><span class="modifiers">public static</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">eq</span><wbr><span class="parameters">(<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;e1,
<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;e2)</span></div>
<div class="deprecation-block"><span class="deprecated-label">Deprecated.</span></div>
<div class="block">Returns whether two <a href="RexNode.html" title="class in org.apache.calcite.rex"><code>RexNode</code></a>s are structurally equal.
<p>This method considers structure, not semantics. 'x &lt; y' is not
equivalent to 'y &gt; x'.</div>
</section>
</li>
<li>
<section class="detail" id="simplifyPreservingType(org.apache.calcite.rex.RexBuilder,org.apache.calcite.rex.RexNode)">
<h3>simplifyPreservingType</h3>
<div class="member-signature"><span class="annotations"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Deprecated.html" title="class or interface in java.lang" class="external-link">@Deprecated</a>
</span><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></span>&nbsp;<span class="element-name">simplifyPreservingType</span><wbr><span class="parameters">(<a href="RexBuilder.html" title="class in org.apache.calcite.rex">RexBuilder</a>&nbsp;rexBuilder,
<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;e)</span></div>
<div class="deprecation-block"><span class="deprecated-label">Deprecated.</span>
<div class="deprecation-comment">Use <a href="RexSimplify.html#simplifyPreservingType(org.apache.calcite.rex.RexNode)"><code>RexSimplify.simplifyPreservingType(RexNode)</code></a>,
which allows you to specify an <a href="RexExecutor.html" title="interface in org.apache.calcite.rex"><code>RexExecutor</code></a>.</div>
</div>
<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>
</section>
</li>
<li>
<section class="detail" id="simplify(org.apache.calcite.rex.RexBuilder,org.apache.calcite.rex.RexNode)">
<h3>simplify</h3>
<div class="member-signature"><span class="annotations"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Deprecated.html" title="class or interface in java.lang" class="external-link">@Deprecated</a>
</span><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></span>&nbsp;<span class="element-name">simplify</span><wbr><span class="parameters">(<a href="RexBuilder.html" title="class in org.apache.calcite.rex">RexBuilder</a>&nbsp;rexBuilder,
<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;e)</span></div>
<div class="deprecation-block"><span class="deprecated-label">Deprecated.</span>
<div class="deprecation-comment">Create a <a href="RexSimplify.html" title="class in org.apache.calcite.rex"><code>RexSimplify</code></a>, then call its
<code>RexSimplify.simplify(RexNode, RexUnknownAs)</code> method.</div>
</div>
<div class="block">Simplifies a boolean expression, leaving UNKNOWN values as UNKNOWN, and
using the default executor.</div>
</section>
</li>
<li>
<section class="detail" id="simplify(org.apache.calcite.rex.RexBuilder,org.apache.calcite.rex.RexNode,boolean)">
<h3>simplify</h3>
<div class="member-signature"><span class="annotations"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Deprecated.html" title="class or interface in java.lang" class="external-link">@Deprecated</a>
</span><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></span>&nbsp;<span class="element-name">simplify</span><wbr><span class="parameters">(<a href="RexBuilder.html" title="class in org.apache.calcite.rex">RexBuilder</a>&nbsp;rexBuilder,
<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;e,
boolean&nbsp;unknownAsFalse)</span></div>
<div class="deprecation-block"><span class="deprecated-label">Deprecated.</span>
<div class="deprecation-comment">Create a <a href="RexSimplify.html" title="class in org.apache.calcite.rex"><code>RexSimplify</code></a>, then call its
<code>RexSimplify.simplify(RexNode, RexUnknownAs)</code> method.</div>
</div>
<div class="block">Simplifies a boolean expression,
using the default executor.
<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>If the expression is a predicate in a WHERE clause, UNKNOWN values have
the same effect as FALSE. In situations like this, specify
<code>unknownAsFalse = true</code>, so and we can switch from 3-valued logic to
simpler 2-valued logic and make more optimizations.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>rexBuilder</code> - Rex builder</dd>
<dd><code>e</code> - Expression to simplify</dd>
<dd><code>unknownAsFalse</code> - Whether to convert UNKNOWN values to FALSE</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="simplifyAnds(org.apache.calcite.rex.RexBuilder,java.lang.Iterable)">
<h3>simplifyAnds</h3>
<div class="member-signature"><span class="annotations"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Deprecated.html" title="class or interface in java.lang" class="external-link">@Deprecated</a>
</span><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></span>&nbsp;<span class="element-name">simplifyAnds</span><wbr><span class="parameters">(<a href="RexBuilder.html" title="class in org.apache.calcite.rex">RexBuilder</a>&nbsp;rexBuilder,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Iterable.html" title="class or interface in java.lang" class="external-link">Iterable</a>&lt;? extends <a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;nodes)</span></div>
<div class="deprecation-block"><span class="deprecated-label">Deprecated.</span>
<div class="deprecation-comment">Use
<code>RexSimplify.simplifyAnds(Iterable, RexUnknownAs)</code>.</div>
</div>
<div class="block">Simplifies a conjunction of boolean expressions.</div>
</section>
</li>
<li>
<section class="detail" id="simplifyAnds(org.apache.calcite.rex.RexBuilder,java.lang.Iterable,boolean)">
<h3>simplifyAnds</h3>
<div class="member-signature"><span class="annotations"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Deprecated.html" title="class or interface in java.lang" class="external-link">@Deprecated</a>
</span><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></span>&nbsp;<span class="element-name">simplifyAnds</span><wbr><span class="parameters">(<a href="RexBuilder.html" title="class in org.apache.calcite.rex">RexBuilder</a>&nbsp;rexBuilder,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Iterable.html" title="class or interface in java.lang" class="external-link">Iterable</a>&lt;? extends <a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;nodes,
boolean&nbsp;unknownAsFalse)</span></div>
<div class="deprecation-block"><span class="deprecated-label">Deprecated.</span></div>
</section>
</li>
<li>
<section class="detail" id="not(org.apache.calcite.rex.RexNode)">
<h3>not</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></span>&nbsp;<span class="element-name">not</span><wbr><span class="parameters">(<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;e)</span></div>
<div class="block">Negates a logical expression by adding or removing a NOT.</div>
</section>
</li>
<li>
<section class="detail" id="op(org.apache.calcite.sql.SqlKind)">
<h3>op</h3>
<div class="member-signature"><span class="annotations">@API(since="1.27.0",
status=EXPERIMENTAL)
</span><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="../sql/SqlOperator.html" title="class in org.apache.calcite.sql">SqlOperator</a></span>&nbsp;<span class="element-name">op</span><wbr><span class="parameters">(<a href="../sql/SqlKind.html" title="enum in org.apache.calcite.sql">SqlKind</a>&nbsp;kind)</span></div>
</section>
</li>
<li>
<section class="detail" id="simplifyAnd(org.apache.calcite.rex.RexBuilder,org.apache.calcite.rex.RexCall,boolean)">
<h3>simplifyAnd</h3>
<div class="member-signature"><span class="annotations"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Deprecated.html" title="class or interface in java.lang" class="external-link">@Deprecated</a>
</span><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></span>&nbsp;<span class="element-name">simplifyAnd</span><wbr><span class="parameters">(<a href="RexBuilder.html" title="class in org.apache.calcite.rex">RexBuilder</a>&nbsp;rexBuilder,
<a href="RexCall.html" title="class in org.apache.calcite.rex">RexCall</a>&nbsp;e,
boolean&nbsp;unknownAsFalse)</span></div>
<div class="deprecation-block"><span class="deprecated-label">Deprecated.</span></div>
</section>
</li>
<li>
<section class="detail" id="simplifyAnd2(org.apache.calcite.rex.RexBuilder,java.util.List,java.util.List)">
<h3>simplifyAnd2</h3>
<div class="member-signature"><span class="annotations"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Deprecated.html" title="class or interface in java.lang" class="external-link">@Deprecated</a>
</span><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></span>&nbsp;<span class="element-name">simplifyAnd2</span><wbr><span class="parameters">(<a href="RexBuilder.html" title="class in org.apache.calcite.rex">RexBuilder</a>&nbsp;rexBuilder,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;terms,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;notTerms)</span></div>
<div class="deprecation-block"><span class="deprecated-label">Deprecated.</span></div>
</section>
</li>
<li>
<section class="detail" id="simplifyAnd2ForUnknownAsFalse(org.apache.calcite.rex.RexBuilder,java.util.List,java.util.List)">
<h3>simplifyAnd2ForUnknownAsFalse</h3>
<div class="member-signature"><span class="annotations"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Deprecated.html" title="class or interface in java.lang" class="external-link">@Deprecated</a>
</span><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></span>&nbsp;<span class="element-name">simplifyAnd2ForUnknownAsFalse</span><wbr><span class="parameters">(<a href="RexBuilder.html" title="class in org.apache.calcite.rex">RexBuilder</a>&nbsp;rexBuilder,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;terms,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;notTerms)</span></div>
<div class="deprecation-block"><span class="deprecated-label">Deprecated.</span></div>
</section>
</li>
<li>
<section class="detail" id="negate(org.apache.calcite.rex.RexBuilder,org.apache.calcite.rex.RexCall)">
<h3>negate</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">@Nullable <a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></span>&nbsp;<span class="element-name">negate</span><wbr><span class="parameters">(<a href="RexBuilder.html" title="class in org.apache.calcite.rex">RexBuilder</a>&nbsp;rexBuilder,
<a href="RexCall.html" title="class in org.apache.calcite.rex">RexCall</a>&nbsp;call)</span></div>
</section>
</li>
<li>
<section class="detail" id="invert(org.apache.calcite.rex.RexBuilder,org.apache.calcite.rex.RexCall)">
<h3>invert</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">@Nullable <a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></span>&nbsp;<span class="element-name">invert</span><wbr><span class="parameters">(<a href="RexBuilder.html" title="class in org.apache.calcite.rex">RexBuilder</a>&nbsp;rexBuilder,
<a href="RexCall.html" title="class in org.apache.calcite.rex">RexCall</a>&nbsp;call)</span></div>
</section>
</li>
<li>
<section class="detail" id="simplifyOr(org.apache.calcite.rex.RexBuilder,org.apache.calcite.rex.RexCall)">
<h3>simplifyOr</h3>
<div class="member-signature"><span class="annotations"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Deprecated.html" title="class or interface in java.lang" class="external-link">@Deprecated</a>
</span><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></span>&nbsp;<span class="element-name">simplifyOr</span><wbr><span class="parameters">(<a href="RexBuilder.html" title="class in org.apache.calcite.rex">RexBuilder</a>&nbsp;rexBuilder,
<a href="RexCall.html" title="class in org.apache.calcite.rex">RexCall</a>&nbsp;call)</span></div>
<div class="deprecation-block"><span class="deprecated-label">Deprecated.</span></div>
</section>
</li>
<li>
<section class="detail" id="simplifyOrs(org.apache.calcite.rex.RexBuilder,java.util.List)">
<h3>simplifyOrs</h3>
<div class="member-signature"><span class="annotations"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Deprecated.html" title="class or interface in java.lang" class="external-link">@Deprecated</a>
</span><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></span>&nbsp;<span class="element-name">simplifyOrs</span><wbr><span class="parameters">(<a href="RexBuilder.html" title="class in org.apache.calcite.rex">RexBuilder</a>&nbsp;rexBuilder,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;terms)</span></div>
<div class="deprecation-block"><span class="deprecated-label">Deprecated.</span></div>
</section>
</li>
<li>
<section class="detail" id="andNot(org.apache.calcite.rex.RexBuilder,org.apache.calcite.rex.RexNode,org.apache.calcite.rex.RexNode...)">
<h3>andNot</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></span>&nbsp;<span class="element-name">andNot</span><wbr><span class="parameters">(<a href="RexBuilder.html" title="class in org.apache.calcite.rex">RexBuilder</a>&nbsp;rexBuilder,
<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;e,
<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>...&nbsp;notTerms)</span></div>
<div class="block">Creates the expression <code>e1 AND NOT notTerm1 AND NOT notTerm2 ...</code>.</div>
</section>
</li>
<li>
<section class="detail" id="andNot(org.apache.calcite.rex.RexBuilder,org.apache.calcite.rex.RexNode,java.lang.Iterable)">
<h3>andNot</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></span>&nbsp;<span class="element-name">andNot</span><wbr><span class="parameters">(<a href="RexBuilder.html" title="class in org.apache.calcite.rex">RexBuilder</a>&nbsp;rexBuilder,
<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;e,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Iterable.html" title="class or interface in java.lang" class="external-link">Iterable</a>&lt;? extends <a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;notTerms)</span></div>
<div class="block">Creates the expression <code>e1 AND NOT notTerm1 AND NOT notTerm2 ...</code>.
<p>Examples:
<ul>
<li>andNot(p) returns "p"
<li>andNot(p, n1, n2) returns "p AND NOT n1 AND NOT n2"
<li>andNot(x = 10, x = 20, y = 30, x = 30)
returns "x = 10 AND NOT (y = 30)"
</ul></div>
</section>
</li>
<li>
<section class="detail" id="isCasePredicate(org.apache.calcite.rex.RexCall,int)">
<h3>isCasePredicate</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">isCasePredicate</span><wbr><span class="parameters">(<a href="RexCall.html" title="class in org.apache.calcite.rex">RexCall</a>&nbsp;call,
int&nbsp;i)</span></div>
<div class="block">Returns whether a given operand of a CASE expression is a predicate.
<p>A switched case (CASE x WHEN x1 THEN v1 ... ELSE e END) has an even
number of arguments and odd-numbered arguments are predicates.
<p>A condition case (CASE WHEN p1 THEN v1 ... ELSE e END) has an odd
number of arguments and even-numbered arguments are predicates, except for
the last argument.</div>
</section>
</li>
<li>
<section class="detail" id="notFn(org.apache.calcite.rex.RexBuilder)">
<h3>notFn</h3>
<div class="member-signature"><span class="annotations"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Deprecated.html" title="class or interface in java.lang" class="external-link">@Deprecated</a>
</span><span class="modifiers">public static</span>&nbsp;<span class="return-type">com.google.common.base.Function&lt;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>,<wbr><a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;</span>&nbsp;<span class="element-name">notFn</span><wbr><span class="parameters">(<a href="RexBuilder.html" title="class in org.apache.calcite.rex">RexBuilder</a>&nbsp;rexBuilder)</span></div>
<div class="deprecation-block"><span class="deprecated-label">Deprecated.</span>
<div class="deprecation-comment">Use <a href="#not(org.apache.calcite.rex.RexNode)"><code>not(org.apache.calcite.rex.RexNode)</code></a></div>
</div>
<div class="block">Returns a function that applies NOT to its argument.</div>
</section>
</li>
<li>
<section class="detail" id="containsCorrelation(org.apache.calcite.rex.RexNode)">
<h3>containsCorrelation</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">containsCorrelation</span><wbr><span class="parameters">(<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;condition)</span></div>
<div class="block">Returns whether an expression contains a <a href="RexCorrelVariable.html" title="class in org.apache.calcite.rex"><code>RexCorrelVariable</code></a>.</div>
</section>
</li>
<li>
<section class="detail" id="swapTableReferences(org.apache.calcite.rex.RexBuilder,org.apache.calcite.rex.RexNode,java.util.Map)">
<h3>swapTableReferences</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></span>&nbsp;<span class="element-name">swapTableReferences</span><wbr><span class="parameters">(<a href="RexBuilder.html" title="class in org.apache.calcite.rex">RexBuilder</a>&nbsp;rexBuilder,
<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;node,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a>&lt;<a href="RexTableInputRef.RelTableRef.html" title="class in org.apache.calcite.rex">RexTableInputRef.RelTableRef</a>,<wbr><a href="RexTableInputRef.RelTableRef.html" title="class in org.apache.calcite.rex">RexTableInputRef.RelTableRef</a>&gt;&nbsp;tableMapping)</span></div>
<div class="block">Given an expression, it will swap the table references contained in its
<a href="RexTableInputRef.html" title="class in org.apache.calcite.rex"><code>RexTableInputRef</code></a> using the contents in the map.</div>
</section>
</li>
<li>
<section class="detail" id="swapColumnReferences(org.apache.calcite.rex.RexBuilder,org.apache.calcite.rex.RexNode,java.util.Map)">
<h3>swapColumnReferences</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></span>&nbsp;<span class="element-name">swapColumnReferences</span><wbr><span class="parameters">(<a href="RexBuilder.html" title="class in org.apache.calcite.rex">RexBuilder</a>&nbsp;rexBuilder,
<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;node,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a>&lt;<a href="RexTableInputRef.html" title="class in org.apache.calcite.rex">RexTableInputRef</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Set.html" title="class or interface in java.util" class="external-link">Set</a>&lt;<a href="RexTableInputRef.html" title="class in org.apache.calcite.rex">RexTableInputRef</a>&gt;&gt;&nbsp;ec)</span></div>
<div class="block">Given an expression, it will swap its column references <a href="RexTableInputRef.html" title="class in org.apache.calcite.rex"><code>RexTableInputRef</code></a>
using the contents in the map (in particular, the first element of the set in the
map value).</div>
</section>
</li>
<li>
<section class="detail" id="swapTableColumnReferences(org.apache.calcite.rex.RexBuilder,org.apache.calcite.rex.RexNode,java.util.Map,java.util.Map)">
<h3>swapTableColumnReferences</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></span>&nbsp;<span class="element-name">swapTableColumnReferences</span><wbr><span class="parameters">(<a href="RexBuilder.html" title="class in org.apache.calcite.rex">RexBuilder</a>&nbsp;rexBuilder,
<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;node,
@Nullable <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a>&lt;<a href="RexTableInputRef.RelTableRef.html" title="class in org.apache.calcite.rex">RexTableInputRef.RelTableRef</a>,<wbr><a href="RexTableInputRef.RelTableRef.html" title="class in org.apache.calcite.rex">RexTableInputRef.RelTableRef</a>&gt;&nbsp;tableMapping,
@Nullable <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a>&lt;<a href="RexTableInputRef.html" title="class in org.apache.calcite.rex">RexTableInputRef</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Set.html" title="class or interface in java.util" class="external-link">Set</a>&lt;<a href="RexTableInputRef.html" title="class in org.apache.calcite.rex">RexTableInputRef</a>&gt;&gt;&nbsp;ec)</span></div>
<div class="block">Given an expression, it will swap the table references contained in its
<a href="RexTableInputRef.html" title="class in org.apache.calcite.rex"><code>RexTableInputRef</code></a> using the contents in the first map, and then
it will swap the column references <a href="RexTableInputRef.html" title="class in org.apache.calcite.rex"><code>RexTableInputRef</code></a> using the contents
in the second map (in particular, the first element of the set in the map value).</div>
</section>
</li>
<li>
<section class="detail" id="swapColumnTableReferences(org.apache.calcite.rex.RexBuilder,org.apache.calcite.rex.RexNode,java.util.Map,java.util.Map)">
<h3>swapColumnTableReferences</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></span>&nbsp;<span class="element-name">swapColumnTableReferences</span><wbr><span class="parameters">(<a href="RexBuilder.html" title="class in org.apache.calcite.rex">RexBuilder</a>&nbsp;rexBuilder,
<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&nbsp;node,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a>&lt;<a href="RexTableInputRef.html" title="class in org.apache.calcite.rex">RexTableInputRef</a>,<wbr>? extends @Nullable <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Set.html" title="class or interface in java.util" class="external-link">Set</a>&lt;<a href="RexTableInputRef.html" title="class in org.apache.calcite.rex">RexTableInputRef</a>&gt;&gt;&nbsp;ec,
@Nullable <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a>&lt;<a href="RexTableInputRef.RelTableRef.html" title="class in org.apache.calcite.rex">RexTableInputRef.RelTableRef</a>,<wbr><a href="RexTableInputRef.RelTableRef.html" title="class in org.apache.calcite.rex">RexTableInputRef.RelTableRef</a>&gt;&nbsp;tableMapping)</span></div>
<div class="block">Given an expression, it will swap the column references <a href="RexTableInputRef.html" title="class in org.apache.calcite.rex"><code>RexTableInputRef</code></a>
using the contents in the first map (in particular, the first element of the set
in the map value), and then it will swap the table references contained in its
<a href="RexTableInputRef.html" title="class in org.apache.calcite.rex"><code>RexTableInputRef</code></a> using the contents in the second map.</div>
</section>
</li>
<li>
<section class="detail" id="gatherTableReferences(java.util.List)">
<h3>gatherTableReferences</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Set.html" title="class or interface in java.util" class="external-link">Set</a>&lt;<a href="RexTableInputRef.RelTableRef.html" title="class in org.apache.calcite.rex">RexTableInputRef.RelTableRef</a>&gt;</span>&nbsp;<span class="element-name">gatherTableReferences</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;nodes)</span></div>
<div class="block">Gather all table references in input expressions.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>nodes</code> - expressions</dd>
<dt>Returns:</dt>
<dd>set of table references</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="getNonConstColumns(java.util.List)">
<h3>getNonConstColumns</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="../util/ImmutableBitSet.html" title="class in org.apache.calcite.util">ImmutableBitSet</a></span>&nbsp;<span class="element-name">getNonConstColumns</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;expressions)</span></div>
<div class="block">Given some expressions, gets the indices of the non-constant ones.</div>
</section>
</li>
<li>
<section class="detail" id="getNonConstColumns(org.apache.calcite.util.ImmutableBitSet,java.util.List)">
<h3>getNonConstColumns</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="../util/ImmutableBitSet.html" title="class in org.apache.calcite.util">ImmutableBitSet</a></span>&nbsp;<span class="element-name">getNonConstColumns</span><wbr><span class="parameters">(<a href="../util/ImmutableBitSet.html" title="class in org.apache.calcite.util">ImmutableBitSet</a>&nbsp;columns,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;expressions)</span></div>
<div class="block">Given some expressions and columns, gets the indices of the non-constant ones.</div>
</section>
</li>
<li>
<section class="detail" id="strings(java.util.List)">
<h3>strings</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</span>&nbsp;<span class="element-name">strings</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;list)</span></div>
<div class="block">Transforms a list of expressions to the list of digests.</div>
</section>
</li>
</ul>
</section>
</li>
</ul>
</section>
<!-- ========= END OF CLASS DATA ========= -->
</main>
<footer role="contentinfo">
<hr>
<p class="legal-copy"><small>Copyright &copy; 2012-2023 Apache Software Foundation. All Rights Reserved.</small></p>
</footer>
</div>
</div>
</body>
</html>