blob: b3dbe2b09768dd6f2dab2da31189fe53c1f9f373 [file] [log] [blame]
<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc -->
<title>SqlTypeTransforms (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="SqlTypeTransforms (Apache Calcite API)";
}
}
catch(err) {
}
//-->
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/SqlTypeTransforms.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>Method</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.sql.type</a></div>
<h2 title="Class SqlTypeTransforms" class="title">Class SqlTypeTransforms</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li>java.lang.Object</li>
<li>
<ul class="inheritance">
<li>org.apache.calcite.sql.type.SqlTypeTransforms</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<hr>
<pre>public abstract class <span class="typeNameLabel">SqlTypeTransforms</span>
extends java.lang.Object</pre>
<div class="block">SqlTypeTransforms defines a number of reusable instances of
<a href="SqlTypeTransform.html" title="interface in org.apache.calcite.sql.type"><code>SqlTypeTransform</code></a>.
<p>NOTE: avoid anonymous inner classes here except for unique,
non-generalizable strategies; anything else belongs in a reusable top-level
class. If you find yourself copying and pasting an existing strategy's
anonymous inner class, you're making a mistake.</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>static <a href="SqlTypeTransform.html" title="interface in org.apache.calcite.sql.type">SqlTypeTransform</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#FORCE_NULLABLE">FORCE_NULLABLE</a></span></code></th>
<td class="colLast">
<div class="block">Parameter type-inference transform strategy where a derived type is
transformed into the same type with nulls allowed.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static <a href="SqlTypeTransform.html" title="interface in org.apache.calcite.sql.type">SqlTypeTransform</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#LEAST_NULLABLE">LEAST_NULLABLE</a></span></code></th>
<td class="colLast">
<div class="block">Type-inference strategy whereby the result is NOT NULL if any of
the arguments is NOT NULL; otherwise the type is unchanged.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static <a href="SqlTypeTransform.html" title="interface in org.apache.calcite.sql.type">SqlTypeTransform</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#ONLY_COLUMN">ONLY_COLUMN</a></span></code></th>
<td class="colLast">
<div class="block">Parameter type-inference transform strategy where a derived type must be
a struct type with precisely one field and the returned type is the type
of that field.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static <a href="SqlTypeTransform.html" title="interface in org.apache.calcite.sql.type">SqlTypeTransform</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#TO_MULTISET">TO_MULTISET</a></span></code></th>
<td class="colLast">
<div class="block">Parameter type-inference transform strategy that wraps a given type
in a multiset.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static <a href="SqlTypeTransform.html" title="interface in org.apache.calcite.sql.type">SqlTypeTransform</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#TO_MULTISET_ELEMENT_TYPE">TO_MULTISET_ELEMENT_TYPE</a></span></code></th>
<td class="colLast">
<div class="block">Parameter type-inference transform strategy where a derived type must be
a multiset type and the returned type is the multiset's element type.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static <a href="SqlTypeTransform.html" title="interface in org.apache.calcite.sql.type">SqlTypeTransform</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#TO_NOT_NULLABLE">TO_NOT_NULLABLE</a></span></code></th>
<td class="colLast">
<div class="block">Parameter type-inference transform strategy where a derived type is
transformed into the same type but not nullable.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static <a href="SqlTypeTransform.html" title="interface in org.apache.calcite.sql.type">SqlTypeTransform</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#TO_NULLABLE">TO_NULLABLE</a></span></code></th>
<td class="colLast">
<div class="block">Parameter type-inference transform strategy where a derived type is
transformed into the same type but nullable if any of a calls operands is
nullable</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static <a href="SqlTypeTransform.html" title="interface in org.apache.calcite.sql.type">SqlTypeTransform</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#TO_NULLABLE_ALL">TO_NULLABLE_ALL</a></span></code></th>
<td class="colLast">
<div class="block">Parameter type-inference transform strategy where a derived type is
transformed into the same type, but nullable if and only if all of a call's
operands are nullable.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static <a href="SqlTypeTransform.html" title="interface in org.apache.calcite.sql.type">SqlTypeTransform</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#TO_VARYING">TO_VARYING</a></span></code></th>
<td class="colLast">
<div class="block">Type-inference strategy whereby the result type of a call is VARYING the
type given.</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">Constructor</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr class="altColor">
<th class="colConstructorName" scope="row"><code><span class="memberNameLink"><a href="#%3Cinit%3E()">SqlTypeTransforms</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>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.java.lang.Object">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.Object</h3>
<code>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</code></li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ FIELD DETAIL =========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="field.detail">
<!-- -->
</a>
<h3>Field Detail</h3>
<a id="TO_NULLABLE">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>TO_NULLABLE</h4>
<pre>public static final&nbsp;<a href="SqlTypeTransform.html" title="interface in org.apache.calcite.sql.type">SqlTypeTransform</a> TO_NULLABLE</pre>
<div class="block">Parameter type-inference transform strategy where a derived type is
transformed into the same type but nullable if any of a calls operands is
nullable</div>
</li>
</ul>
<a id="TO_NULLABLE_ALL">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>TO_NULLABLE_ALL</h4>
<pre>public static final&nbsp;<a href="SqlTypeTransform.html" title="interface in org.apache.calcite.sql.type">SqlTypeTransform</a> TO_NULLABLE_ALL</pre>
<div class="block">Parameter type-inference transform strategy where a derived type is
transformed into the same type, but nullable if and only if all of a call's
operands are nullable.</div>
</li>
</ul>
<a id="TO_NOT_NULLABLE">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>TO_NOT_NULLABLE</h4>
<pre>public static final&nbsp;<a href="SqlTypeTransform.html" title="interface in org.apache.calcite.sql.type">SqlTypeTransform</a> TO_NOT_NULLABLE</pre>
<div class="block">Parameter type-inference transform strategy where a derived type is
transformed into the same type but not nullable.</div>
</li>
</ul>
<a id="FORCE_NULLABLE">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>FORCE_NULLABLE</h4>
<pre>public static final&nbsp;<a href="SqlTypeTransform.html" title="interface in org.apache.calcite.sql.type">SqlTypeTransform</a> FORCE_NULLABLE</pre>
<div class="block">Parameter type-inference transform strategy where a derived type is
transformed into the same type with nulls allowed.</div>
</li>
</ul>
<a id="LEAST_NULLABLE">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>LEAST_NULLABLE</h4>
<pre>public static final&nbsp;<a href="SqlTypeTransform.html" title="interface in org.apache.calcite.sql.type">SqlTypeTransform</a> LEAST_NULLABLE</pre>
<div class="block">Type-inference strategy whereby the result is NOT NULL if any of
the arguments is NOT NULL; otherwise the type is unchanged.</div>
</li>
</ul>
<a id="TO_VARYING">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>TO_VARYING</h4>
<pre>public static final&nbsp;<a href="SqlTypeTransform.html" title="interface in org.apache.calcite.sql.type">SqlTypeTransform</a> TO_VARYING</pre>
<div class="block">Type-inference strategy whereby the result type of a call is VARYING the
type given. The length returned is the same as length of the first
argument. Return type will have same nullability as input type
nullability. First Arg must be of string type.</div>
</li>
</ul>
<a id="TO_MULTISET_ELEMENT_TYPE">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>TO_MULTISET_ELEMENT_TYPE</h4>
<pre>public static final&nbsp;<a href="SqlTypeTransform.html" title="interface in org.apache.calcite.sql.type">SqlTypeTransform</a> TO_MULTISET_ELEMENT_TYPE</pre>
<div class="block">Parameter type-inference transform strategy where a derived type must be
a multiset type and the returned type is the multiset's element type.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="MultisetSqlType.html#getComponentType()"><code>MultisetSqlType.getComponentType()</code></a></dd>
</dl>
</li>
</ul>
<a id="TO_MULTISET">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>TO_MULTISET</h4>
<pre>public static final&nbsp;<a href="SqlTypeTransform.html" title="interface in org.apache.calcite.sql.type">SqlTypeTransform</a> TO_MULTISET</pre>
<div class="block">Parameter type-inference transform strategy that wraps a given type
in a multiset.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../rel/type/RelDataTypeFactory.html#createMultisetType(org.apache.calcite.rel.type.RelDataType,long)"><code>RelDataTypeFactory.createMultisetType(RelDataType, long)</code></a></dd>
</dl>
</li>
</ul>
<a id="ONLY_COLUMN">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>ONLY_COLUMN</h4>
<pre>public static final&nbsp;<a href="SqlTypeTransform.html" title="interface in org.apache.calcite.sql.type">SqlTypeTransform</a> ONLY_COLUMN</pre>
<div class="block">Parameter type-inference transform strategy where a derived type must be
a struct type with precisely one field and the returned type is the type
of that field.</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>SqlTypeTransforms</h4>
<pre>public&nbsp;SqlTypeTransforms()</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/SqlTypeTransforms.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>Method</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>