blob: 60952a93ff98b3a1b8f35afd4792f6f8eaba45b4 [file] [log] [blame]
<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc -->
<title>RexUnknownAs (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="RexUnknownAs (Apache Calcite API)";
}
}
catch(err) {
}
//-->
var data = {"i0":9,"i1":10,"i2":10,"i3":9,"i4":9};
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/RexUnknownAs.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="#enum.constant.summary">Enum Constants</a>&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li><a href="#enum.constant.detail">Enum Constants</a>&nbsp;|&nbsp;</li>
<li>Field&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="Enum RexUnknownAs" class="title">Enum RexUnknownAs</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li>java.lang.Object</li>
<li>
<ul class="inheritance">
<li>java.lang.Enum&lt;<a href="RexUnknownAs.html" title="enum in org.apache.calcite.rex">RexUnknownAs</a>&gt;</li>
<li>
<ul class="inheritance">
<li>org.apache.calcite.rex.RexUnknownAs</li>
</ul>
</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Implemented Interfaces:</dt>
<dd><code>java.io.Serializable</code>, <code>java.lang.Comparable&lt;<a href="RexUnknownAs.html" title="enum in org.apache.calcite.rex">RexUnknownAs</a>&gt;</code></dd>
</dl>
<hr>
<pre>public enum <span class="typeNameLabel">RexUnknownAs</span>
extends java.lang.Enum&lt;<a href="RexUnknownAs.html" title="enum in org.apache.calcite.rex">RexUnknownAs</a>&gt;</pre>
<div class="block">Policy for whether a simplified expression may instead return another
value.
<p>In particular, it deals with converting three-valued logic (TRUE, FALSE,
UNKNOWN) to two-valued logic (TRUE, FALSE) for callers that treat the UNKNOWN
value the same as TRUE or FALSE.
<p>Sometimes the three-valued version of the expression is simpler (has a
smaller expression tree) than the two-valued version. In these cases,
favor simplicity over reduction to two-valued logic.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="RexSimplify.html" title="class in org.apache.calcite.rex"><code>RexSimplify</code></a></dd>
</dl>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- =========== ENUM CONSTANT SUMMARY =========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="enum.constant.summary">
<!-- -->
</a>
<h3>Enum Constant Summary</h3>
<table class="memberSummary">
<caption><span>Enum Constants</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Enum Constant</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr class="altColor">
<th class="colFirst" scope="row"><code><span class="memberNameLink"><a href="#FALSE">FALSE</a></span></code></th>
<td class="colLast">
<div class="block">Policy that indicates that the expression is being used in a context
Where an UNKNOWN value is treated in the same way as FALSE.</div>
</td>
</tr>
<tr class="rowColor">
<th class="colFirst" scope="row"><code><span class="memberNameLink"><a href="#TRUE">TRUE</a></span></code></th>
<td class="colLast">
<div class="block">Policy that indicates that the expression is being used in a context
Where an UNKNOWN value is treated in the same way as TRUE.</div>
</td>
</tr>
<tr class="altColor">
<th class="colFirst" scope="row"><code><span class="memberNameLink"><a href="#UNKNOWN">UNKNOWN</a></span></code></th>
<td class="colLast">
<div class="block">Policy that indicates that the expression is being used in a context
Where an UNKNOWN value is treated as is.</div>
</td>
</tr>
</table>
</li>
</ul>
</section>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="constructor.summary">
<!-- -->
</a>
<h3>Constructor Summary</h3>
<table class="memberSummary">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier</th>
<th class="colSecond" scope="col">Constructor</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>private </code></td>
<th class="colConstructorName" scope="row"><code><span class="memberNameLink"><a href="#%3Cinit%3E()">RexUnknownAs</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
</table>
</li>
</ul>
</section>
<!-- ========== METHOD SUMMARY =========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="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>static <a href="RexUnknownAs.html" title="enum in org.apache.calcite.rex">RexUnknownAs</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#falseIf(boolean)">falseIf</a></span>&#8203;(boolean&nbsp;unknownAsFalse)</code></th>
<td class="colLast">
<div class="block">Returns <a href="#FALSE"><code>FALSE</code></a> if <code>unknownAsFalse</code> is true,
<a href="#UNKNOWN"><code>UNKNOWN</code></a> otherwise.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code><a href="RexUnknownAs.html" title="enum in org.apache.calcite.rex">RexUnknownAs</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#negate()">negate</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#toBoolean()">toBoolean</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>static <a href="RexUnknownAs.html" title="enum in org.apache.calcite.rex">RexUnknownAs</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#valueOf(java.lang.String)">valueOf</a></span>&#8203;(java.lang.String&nbsp;name)</code></th>
<td class="colLast">
<div class="block">Returns the enum constant of this type with the specified name.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>static <a href="RexUnknownAs.html" title="enum in org.apache.calcite.rex">RexUnknownAs</a>[]</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#values()">values</a></span>()</code></th>
<td class="colLast">
<div class="block">Returns an array containing the constants of this enum type, in
the order they are declared.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.java.lang.Enum">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.Enum</h3>
<code>clone, compareTo, equals, finalize, getDeclaringClass, hashCode, name, ordinal, toString, valueOf</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>getClass, notify, notifyAll, wait, wait, wait</code></li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ ENUM CONSTANT DETAIL =========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="enum.constant.detail">
<!-- -->
</a>
<h3>Enum Constant Detail</h3>
<a id="FALSE">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>FALSE</h4>
<pre>public static final&nbsp;<a href="RexUnknownAs.html" title="enum in org.apache.calcite.rex">RexUnknownAs</a> FALSE</pre>
<div class="block">Policy that indicates that the expression is being used in a context
Where an UNKNOWN value is treated in the same way as FALSE. Therefore, when
simplifying the expression, it is acceptable for the simplified expression
to evaluate to FALSE in some situations where the original expression would
evaluate to UNKNOWN.
<p>SQL predicates (<code>WHERE</code>, <code>ON</code>, <code>HAVING</code> and
<code>FILTER (WHERE)</code> clauses, a <code>WHEN</code> clause of a <code>CASE</code>
expression, and in <code>CHECK</code> constraints) all treat UNKNOWN as FALSE.
<p>If the simplified expression never returns UNKNOWN, the simplifier
should make this clear to the caller, if possible, by marking its type as
<code>BOOLEAN NOT NULL</code>.</div>
</li>
</ul>
<a id="TRUE">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>TRUE</h4>
<pre>public static final&nbsp;<a href="RexUnknownAs.html" title="enum in org.apache.calcite.rex">RexUnknownAs</a> TRUE</pre>
<div class="block">Policy that indicates that the expression is being used in a context
Where an UNKNOWN value is treated in the same way as TRUE. Therefore, when
simplifying the expression, it is acceptable for the simplified expression
to evaluate to TRUE in some situations where the original expression would
evaluate to UNKNOWN.
<p>This does not occur commonly in SQL. However, it occurs internally
during simplification. For example, "<code>WHERE NOT expression</code>"
evaluates "<code>NOT expression</code>" in a context that treats UNKNOWN as
FALSE; it is useful to consider that "<code>expression</code>" is evaluated in a
context that treats UNKNOWN as TRUE.
<p>If the simplified expression never returns UNKNOWN, the simplifier
should make this clear to the caller, if possible, by marking its type as
<code>BOOLEAN NOT NULL</code>.</div>
</li>
</ul>
<a id="UNKNOWN">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>UNKNOWN</h4>
<pre>public static final&nbsp;<a href="RexUnknownAs.html" title="enum in org.apache.calcite.rex">RexUnknownAs</a> UNKNOWN</pre>
<div class="block">Policy that indicates that the expression is being used in a context
Where an UNKNOWN value is treated as is. This occurs:
<ul>
<li>In any expression whose type is not <code>BOOLEAN</code>
<li>In <code>BOOLEAN</code> expressions that are <code>NOT NULL</code>
<li>In <code>BOOLEAN</code> expressions where <code>UNKNOWN</code> should be
returned as is, for example in a <code>SELECT</code> clause, or within an
expression such as an operand to <code>AND</code>, <code>OR</code> or
<code>NOT</code>
</ul>
<p>If you are unsure, use UNKNOWN. It is the safest option.</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;()">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>RexUnknownAs</h4>
<pre>private&nbsp;RexUnknownAs()</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="values()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>values</h4>
<pre class="methodSignature">public static&nbsp;<a href="RexUnknownAs.html" title="enum in org.apache.calcite.rex">RexUnknownAs</a>[]&nbsp;values()</pre>
<div class="block">Returns an array containing the constants of this enum type, in
the order they are declared. This method may be used to iterate
over the constants as follows:
<pre>
for (RexUnknownAs c : RexUnknownAs.values())
&nbsp; System.out.println(c);
</pre></div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>an array containing the constants of this enum type, in the order they are declared</dd>
</dl>
</li>
</ul>
<a id="valueOf(java.lang.String)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>valueOf</h4>
<pre class="methodSignature">public static&nbsp;<a href="RexUnknownAs.html" title="enum in org.apache.calcite.rex">RexUnknownAs</a>&nbsp;valueOf&#8203;(java.lang.String&nbsp;name)</pre>
<div class="block">Returns the enum constant of this type with the specified name.
The string must match <i>exactly</i> an identifier used to declare an
enum constant in this type. (Extraneous whitespace characters are
not permitted.)</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>name</code> - the name of the enum constant to be returned.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the enum constant with the specified name</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.IllegalArgumentException</code> - if this enum type has no constant with the specified name</dd>
<dd><code>java.lang.NullPointerException</code> - if the argument is null</dd>
</dl>
</li>
</ul>
<a id="falseIf(boolean)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>falseIf</h4>
<pre class="methodSignature">@Nonnull
public static&nbsp;<a href="RexUnknownAs.html" title="enum in org.apache.calcite.rex">RexUnknownAs</a>&nbsp;falseIf&#8203;(boolean&nbsp;unknownAsFalse)</pre>
<div class="block">Returns <a href="#FALSE"><code>FALSE</code></a> if <code>unknownAsFalse</code> is true,
<a href="#UNKNOWN"><code>UNKNOWN</code></a> otherwise.</div>
</li>
</ul>
<a id="toBoolean()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>toBoolean</h4>
<pre class="methodSignature">public&nbsp;boolean&nbsp;toBoolean()</pre>
</li>
</ul>
<a id="negate()">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>negate</h4>
<pre class="methodSignature">public&nbsp;<a href="RexUnknownAs.html" title="enum in org.apache.calcite.rex">RexUnknownAs</a>&nbsp;negate()</pre>
</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/RexUnknownAs.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="#enum.constant.summary">Enum Constants</a>&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li><a href="#enum.constant.detail">Enum Constants</a>&nbsp;|&nbsp;</li>
<li>Field&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>