blob: ca37ec34674293085bd9ed11554c0640bb62a026 [file] [log] [blame]
<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc -->
<title>RexCall (Apache Calcite API)</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../jquery/jquery-ui.css" title="Style">
<script type="text/javascript" src="../../../../script.js"></script>
<script type="text/javascript" src="../../../../jquery/jszip/dist/jszip.min.js"></script>
<script type="text/javascript" src="../../../../jquery/jszip-utils/dist/jszip-utils.min.js"></script>
<!--[if IE]>
<script type="text/javascript" src="../../../../jquery/jszip-utils/dist/jszip-utils-ie.min.js"></script>
<![endif]-->
<script type="text/javascript" src="../../../../jquery/jquery-3.3.1.js"></script>
<script type="text/javascript" src="../../../../jquery/jquery-migrate-3.0.1.js"></script>
<script type="text/javascript" src="../../../../jquery/jquery-ui.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="RexCall (Apache Calcite API)";
}
}
catch(err) {
}
//-->
var data = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":9,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10};
var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
var pathtoroot = "../../../../";
var useModuleDirectories = true;
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<nav role="navigation">
<div class="fixedNav">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a id="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/RexCall.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../index-all.html">Index</a></li>
<li><a href="../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<ul class="navListSearch">
<li><label for="search">SEARCH:</label>
<input type="text" id="search" value="search" disabled="disabled">
<input type="reset" id="reset" value="reset" disabled="disabled">
</li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a id="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
</div>
<div class="navPadding">&nbsp;</div>
<script type="text/javascript"><!--
$('.navPadding').css('padding-top', $('.fixedNav').css("height"));
//-->
</script>
</nav>
</header>
<!-- ======== START OF CLASS DATA ======== -->
<main role="main">
<div class="header">
<div class="subTitle"><span class="packageLabelInType">Package</span>&nbsp;<a href="package-summary.html">org.apache.calcite.rex</a></div>
<h2 title="Class RexCall" class="title">Class RexCall</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li>java.lang.Object</li>
<li>
<ul class="inheritance">
<li><a href="RexNode.html" title="class in org.apache.calcite.rex">org.apache.calcite.rex.RexNode</a></li>
<li>
<ul class="inheritance">
<li>org.apache.calcite.rex.RexCall</li>
</ul>
</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>Direct Known Subclasses:</dt>
<dd><code><a href="../rel/core/Match.RexMRAggCall.html" title="class in org.apache.calcite.rel.core">Match.RexMRAggCall</a></code>, <code><a href="RexOver.html" title="class in org.apache.calcite.rex">RexOver</a></code>, <code><a href="RexSubQuery.html" title="class in org.apache.calcite.rex">RexSubQuery</a></code>, <code><a href="../rel/core/Window.RexWinAggCall.html" title="class in org.apache.calcite.rel.core">Window.RexWinAggCall</a></code></dd>
</dl>
<hr>
<pre>public class <span class="typeNameLabel">RexCall</span>
extends <a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></pre>
<div class="block">An expression formed by a call to an operator with zero or more expressions
as operands.
<p>Operators may be binary, unary, functions, special syntactic constructs
like <code>CASE ... WHEN ... END</code>, or even internally generated
constructs like implicit type conversions. The syntax of the operator is
really irrelevant, because row-expressions (unlike
<a href="../sql/SqlNode.html" title="class in org.apache.calcite.sql"><code>SQL expressions</code></a>)
do not directly represent a piece of source code.
<p>It's not often necessary to sub-class this class. The smarts should be in
the operator, rather than the call. Any extra information about the call can
often be encoded as extra arguments. (These don't need to be hidden, because
no one is going to be generating source code from this tree.)</p></div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- =========== FIELD SUMMARY =========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="field.summary">
<!-- -->
</a>
<h3>Field Summary</h3>
<table class="memberSummary">
<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Field</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code><a href="../sql/SqlOperator.html" title="class in org.apache.calcite.sql">SqlOperator</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#op">op</a></span></code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>com.google.common.collect.ImmutableList&lt;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#operands">operands</a></span></code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>private static java.util.Set&lt;<a href="../sql/SqlKind.html" title="enum in org.apache.calcite.sql">SqlKind</a>&gt;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#SIMPLE_BINARY_OPS">SIMPLE_BINARY_OPS</a></span></code></th>
<td class="colLast">
<div class="block">Simple binary operators are those operators which expects operands from the same Domain.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code><a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#type">type</a></span></code></th>
<td class="colLast">&nbsp;</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a id="fields.inherited.from.class.org.apache.calcite.rex.RexNode">
<!-- -->
</a>
<h3>Fields inherited from class&nbsp;org.apache.calcite.rex.<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></h3>
<code><a href="RexNode.html#digest">digest</a></code></li>
</ul>
</li>
</ul>
</section>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="constructor.summary">
<!-- -->
</a>
<h3>Constructor Summary</h3>
<table class="memberSummary">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier</th>
<th class="colSecond" scope="col">Constructor</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected </code></td>
<th class="colConstructorName" scope="row"><code><span class="memberNameLink"><a href="#%3Cinit%3E(org.apache.calcite.rel.type.RelDataType,org.apache.calcite.sql.SqlOperator,java.util.List)">RexCall</a></span>&#8203;(<a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;type,
<a href="../sql/SqlOperator.html" title="class in org.apache.calcite.sql">SqlOperator</a>&nbsp;op,
java.util.List&lt;? extends <a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;operands)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
</table>
</li>
</ul>
</section>
<!-- ========== METHOD SUMMARY =========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t1" class="tableTab"><span><a href="javascript:show(1);">Static Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Method</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>&lt;R,&#8203;P&gt;<br>R</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#accept(org.apache.calcite.rex.RexBiVisitor,P)">accept</a></span>&#8203;(<a href="RexBiVisitor.html" title="interface in org.apache.calcite.rex">RexBiVisitor</a>&lt;R,&#8203;P&gt;&nbsp;visitor,
P&nbsp;arg)</code></th>
<td class="colLast">
<div class="block">Accepts a visitor with a payload, dispatching to the right overloaded
<a href="RexBiVisitor.html#visitInputRef(org.apache.calcite.rex.RexInputRef,P)"><code>RexBiVisitor.visitInputRef(RexInputRef, Object)</code></a> visitXxx} method.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>&lt;R&gt;&nbsp;R</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#accept(org.apache.calcite.rex.RexVisitor)">accept</a></span>&#8203;(<a href="RexVisitor.html" title="interface in org.apache.calcite.rex">RexVisitor</a>&lt;R&gt;&nbsp;visitor)</code></th>
<td class="colLast">
<div class="block">Accepts a visitor, dispatching to the right overloaded
<a href="RexVisitor.html#visitInputRef(org.apache.calcite.rex.RexInputRef)"><code>visitXxx</code></a> method.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>protected java.lang.StringBuilder</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#appendOperands(java.lang.StringBuilder)">appendOperands</a></span>&#8203;(java.lang.StringBuilder&nbsp;sb)</code></th>
<td class="colLast">
<div class="block">Appends call operands without parenthesis.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code><a href="RexCall.html" title="class in org.apache.calcite.rex">RexCall</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#clone(org.apache.calcite.rel.type.RelDataType,java.util.List)">clone</a></span>&#8203;(<a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;type,
java.util.List&lt;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;operands)</code></th>
<td class="colLast">
<div class="block">Creates a new call to the same operator with different operands.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>protected java.lang.String</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#computeDigest(boolean)">computeDigest</a></span>&#8203;(boolean&nbsp;withType)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#equals(java.lang.Object)">equals</a></span>&#8203;(java.lang.Object&nbsp;obj)</code></th>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code>private static boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#equalSansNullability(org.apache.calcite.rel.type.RelDataType,org.apache.calcite.rel.type.RelDataType)">equalSansNullability</a></span>&#8203;(<a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;a,
<a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;b)</code></th>
<td class="colLast">
<div class="block">This is a poorman's
<a href="../sql/type/SqlTypeUtil.html#equalSansNullability(org.apache.calcite.rel.type.RelDataTypeFactory,org.apache.calcite.rel.type.RelDataType,org.apache.calcite.rel.type.RelDataType)"><code>SqlTypeUtil.equalSansNullability(RelDataTypeFactory, RelDataType, RelDataType)</code></a></div>
</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code><a href="../sql/SqlKind.html" title="enum in org.apache.calcite.sql">SqlKind</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getKind()">getKind</a></span>()</code></th>
<td class="colLast">
<div class="block">Returns the kind of node this is.</div>
</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code>java.util.List&lt;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getOperands()">getOperands</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code><a href="../sql/SqlOperator.html" title="class in org.apache.calcite.sql">SqlOperator</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getOperator()">getOperator</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i10" class="altColor">
<td class="colFirst"><code><a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getType()">getType</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i11" class="rowColor">
<td class="colFirst"><code>int</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#hashCode()">hashCode</a></span>()</code></th>
</tr>
<tr id="i12" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isAlwaysFalse()">isAlwaysFalse</a></span>()</code></th>
<td class="colLast">
<div class="block">Returns whether this expression always returns false.</div>
</td>
</tr>
<tr id="i13" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isAlwaysTrue()">isAlwaysTrue</a></span>()</code></th>
<td class="colLast">
<div class="block">Returns whether this expression always returns true.</div>
</td>
</tr>
<tr id="i14" class="altColor">
<td class="colFirst"><code>java.lang.String</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#toString()">toString</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.org.apache.calcite.rex.RexNode">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;org.apache.calcite.rex.<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></h3>
<code><a href="RexNode.html#isA(java.util.Collection)">isA</a>, <a href="RexNode.html#isA(org.apache.calcite.sql.SqlKind)">isA</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.java.lang.Object">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.Object</h3>
<code>clone, finalize, getClass, notify, notifyAll, wait, wait, wait</code></li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ FIELD DETAIL =========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="field.detail">
<!-- -->
</a>
<h3>Field Detail</h3>
<a id="op">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>op</h4>
<pre>public final&nbsp;<a href="../sql/SqlOperator.html" title="class in org.apache.calcite.sql">SqlOperator</a> op</pre>
</li>
</ul>
<a id="operands">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>operands</h4>
<pre>public final&nbsp;com.google.common.collect.ImmutableList&lt;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt; operands</pre>
</li>
</ul>
<a id="type">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>type</h4>
<pre>public final&nbsp;<a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a> type</pre>
</li>
</ul>
<a id="SIMPLE_BINARY_OPS">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>SIMPLE_BINARY_OPS</h4>
<pre>private static final&nbsp;java.util.Set&lt;<a href="../sql/SqlKind.html" title="enum in org.apache.calcite.sql">SqlKind</a>&gt; SIMPLE_BINARY_OPS</pre>
<div class="block">Simple binary operators are those operators which expects operands from the same Domain.
<p>Example: simple comparisions (<code>=</code>, <code>&lt;</code>).
<p>Note: it does not contain <code>IN</code> because that is defined on D x D^n.</div>
</li>
</ul>
</li>
</ul>
</section>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="constructor.detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a id="&lt;init&gt;(org.apache.calcite.rel.type.RelDataType,org.apache.calcite.sql.SqlOperator,java.util.List)">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>RexCall</h4>
<pre>protected&nbsp;RexCall&#8203;(<a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;type,
<a href="../sql/SqlOperator.html" title="class in org.apache.calcite.sql">SqlOperator</a>&nbsp;op,
java.util.List&lt;? extends <a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;operands)</pre>
</li>
</ul>
</li>
</ul>
</section>
<!-- ============ METHOD DETAIL ========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a id="appendOperands(java.lang.StringBuilder)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>appendOperands</h4>
<pre class="methodSignature">protected final&nbsp;java.lang.StringBuilder&nbsp;appendOperands&#8203;(java.lang.StringBuilder&nbsp;sb)</pre>
<div class="block">Appends call operands without parenthesis.
<a href="RexLiteral.html" title="class in org.apache.calcite.rex"><code>RexLiteral</code></a> might omit data type depending on the context.
For instance, <code>null:BOOLEAN</code> vs <code>=(true, null)</code>.
The idea here is to omit "obvious" types for readability purposes while
still maintain <a href="../plan/RelOptNode.html#getDigest()"><code>RelOptNode.getDigest()</code></a> contract.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>sb</code> - destination</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>original StringBuilder for fluent API</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="RexLiteral.html#computeDigest(org.apache.calcite.rex.RexDigestIncludeType)"><code>RexLiteral.computeDigest(RexDigestIncludeType)</code></a></dd>
</dl>
</li>
</ul>
<a id="equalSansNullability(org.apache.calcite.rel.type.RelDataType,org.apache.calcite.rel.type.RelDataType)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>equalSansNullability</h4>
<pre class="methodSignature">private static&nbsp;boolean&nbsp;equalSansNullability&#8203;(<a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;a,
<a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;b)</pre>
<div class="block">This is a poorman's
<a href="../sql/type/SqlTypeUtil.html#equalSansNullability(org.apache.calcite.rel.type.RelDataTypeFactory,org.apache.calcite.rel.type.RelDataType,org.apache.calcite.rel.type.RelDataType)"><code>SqlTypeUtil.equalSansNullability(RelDataTypeFactory, RelDataType, RelDataType)</code></a>
<p><code>SqlTypeUtil</code> requires <a href="../rel/type/RelDataTypeFactory.html" title="interface in org.apache.calcite.rel.type"><code>RelDataTypeFactory</code></a> which we haven't, so we assume that
"not null" is represented in the type's digest as a trailing "NOT NULL" (case sensitive)</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>a</code> - first type</dd>
<dd><code>b</code> - second type</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>true if the types are equal or the only difference is nullability</dd>
</dl>
</li>
</ul>
<a id="computeDigest(boolean)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>computeDigest</h4>
<pre class="methodSignature">@Nonnull
protected&nbsp;java.lang.String&nbsp;computeDigest&#8203;(boolean&nbsp;withType)</pre>
</li>
</ul>
<a id="toString()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>toString</h4>
<pre class="methodSignature">@Nonnull
public final&nbsp;java.lang.String&nbsp;toString()</pre>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="RexNode.html#toString()">toString</a></code>&nbsp;in class&nbsp;<code><a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></code></dd>
</dl>
</li>
</ul>
<a id="accept(org.apache.calcite.rex.RexVisitor)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>accept</h4>
<pre class="methodSignature">public&nbsp;&lt;R&gt;&nbsp;R&nbsp;accept&#8203;(<a href="RexVisitor.html" title="interface in org.apache.calcite.rex">RexVisitor</a>&lt;R&gt;&nbsp;visitor)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="RexNode.html#accept(org.apache.calcite.rex.RexVisitor)">RexNode</a></code></span></div>
<div class="block">Accepts a visitor, dispatching to the right overloaded
<a href="RexVisitor.html#visitInputRef(org.apache.calcite.rex.RexInputRef)"><code>visitXxx</code></a> method.
<p>Also see <a href="RexUtil.html#apply(org.apache.calcite.rex.RexVisitor,java.util.List,org.apache.calcite.rex.RexNode)"><code>RexUtil.apply(RexVisitor, java.util.List, RexNode)</code></a>,
which applies a visitor to several expressions simultaneously.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="RexNode.html#accept(org.apache.calcite.rex.RexVisitor)">accept</a></code>&nbsp;in class&nbsp;<code><a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></code></dd>
</dl>
</li>
</ul>
<a id="accept(org.apache.calcite.rex.RexBiVisitor,java.lang.Object)">
<!-- -->
</a><a id="accept(org.apache.calcite.rex.RexBiVisitor,P)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>accept</h4>
<pre class="methodSignature">public&nbsp;&lt;R,&#8203;P&gt;&nbsp;R&nbsp;accept&#8203;(<a href="RexBiVisitor.html" title="interface in org.apache.calcite.rex">RexBiVisitor</a>&lt;R,&#8203;P&gt;&nbsp;visitor,
P&nbsp;arg)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="RexNode.html#accept(org.apache.calcite.rex.RexBiVisitor,P)">RexNode</a></code></span></div>
<div class="block">Accepts a visitor with a payload, dispatching to the right overloaded
<a href="RexBiVisitor.html#visitInputRef(org.apache.calcite.rex.RexInputRef,P)"><code>RexBiVisitor.visitInputRef(RexInputRef, Object)</code></a> visitXxx} method.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="RexNode.html#accept(org.apache.calcite.rex.RexBiVisitor,P)">accept</a></code>&nbsp;in class&nbsp;<code><a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></code></dd>
</dl>
</li>
</ul>
<a id="getType()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getType</h4>
<pre class="methodSignature">public&nbsp;<a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;getType()</pre>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="RexNode.html#getType()">getType</a></code>&nbsp;in class&nbsp;<code><a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></code></dd>
</dl>
</li>
</ul>
<a id="isAlwaysTrue()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isAlwaysTrue</h4>
<pre class="methodSignature">public&nbsp;boolean&nbsp;isAlwaysTrue()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="RexNode.html#isAlwaysTrue()">RexNode</a></code></span></div>
<div class="block">Returns whether this expression always returns true. (Such as if this
expression is equal to the literal <code>TRUE</code>.)</div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="RexNode.html#isAlwaysTrue()">isAlwaysTrue</a></code>&nbsp;in class&nbsp;<code><a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></code></dd>
</dl>
</li>
</ul>
<a id="isAlwaysFalse()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isAlwaysFalse</h4>
<pre class="methodSignature">public&nbsp;boolean&nbsp;isAlwaysFalse()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="RexNode.html#isAlwaysFalse()">RexNode</a></code></span></div>
<div class="block">Returns whether this expression always returns false. (Such as if this
expression is equal to the literal <code>FALSE</code>.)</div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="RexNode.html#isAlwaysFalse()">isAlwaysFalse</a></code>&nbsp;in class&nbsp;<code><a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></code></dd>
</dl>
</li>
</ul>
<a id="getKind()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getKind</h4>
<pre class="methodSignature">public&nbsp;<a href="../sql/SqlKind.html" title="enum in org.apache.calcite.sql">SqlKind</a>&nbsp;getKind()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="RexNode.html#getKind()">RexNode</a></code></span></div>
<div class="block">Returns the kind of node this is.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="RexNode.html#getKind()">getKind</a></code>&nbsp;in class&nbsp;<code><a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Node kind, never null</dd>
</dl>
</li>
</ul>
<a id="getOperands()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getOperands</h4>
<pre class="methodSignature">public&nbsp;java.util.List&lt;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;getOperands()</pre>
</li>
</ul>
<a id="getOperator()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getOperator</h4>
<pre class="methodSignature">public&nbsp;<a href="../sql/SqlOperator.html" title="class in org.apache.calcite.sql">SqlOperator</a>&nbsp;getOperator()</pre>
</li>
</ul>
<a id="clone(org.apache.calcite.rel.type.RelDataType,java.util.List)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>clone</h4>
<pre class="methodSignature">public&nbsp;<a href="RexCall.html" title="class in org.apache.calcite.rex">RexCall</a>&nbsp;clone&#8203;(<a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;type,
java.util.List&lt;<a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a>&gt;&nbsp;operands)</pre>
<div class="block">Creates a new call to the same operator with different operands.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>type</code> - Return type</dd>
<dd><code>operands</code> - Operands to call</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>New call</dd>
</dl>
</li>
</ul>
<a id="equals(java.lang.Object)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>equals</h4>
<pre class="methodSignature">public&nbsp;boolean&nbsp;equals&#8203;(java.lang.Object&nbsp;obj)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="RexNode.html#equals(java.lang.Object)">RexNode</a></code></span></div>
<div class="block">
<p>Every node must implement <a href="RexNode.html#equals(java.lang.Object)"><code>RexNode.equals(java.lang.Object)</code></a> based on its content</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="RexNode.html#equals(java.lang.Object)">equals</a></code>&nbsp;in class&nbsp;<code><a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></code></dd>
</dl>
</li>
</ul>
<a id="hashCode()">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>hashCode</h4>
<pre class="methodSignature">public&nbsp;int&nbsp;hashCode()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="RexNode.html#hashCode()">RexNode</a></code></span></div>
<div class="block">
<p>Every node must implement <a href="RexNode.html#hashCode()"><code>RexNode.hashCode()</code></a> consistent with
<a href="RexNode.html#equals(java.lang.Object)"><code>RexNode.equals(java.lang.Object)</code></a></div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="RexNode.html#hashCode()">hashCode</a></code>&nbsp;in class&nbsp;<code><a href="RexNode.html" title="class in org.apache.calcite.rex">RexNode</a></code></dd>
</dl>
</li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
</div>
</main>
<!-- ========= END OF CLASS DATA ========= -->
<footer role="contentinfo">
<nav role="navigation">
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a id="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/RexCall.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../index-all.html">Index</a></li>
<li><a href="../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a id="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</nav>
<p class="legalCopy"><small>Copyright &#169; 2012&#x2013;2019 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
</footer>
</body>
</html>