blob: a4cffa7aeefec338fc351f8af7a4f23472cf4a06 [file] [log] [blame]
<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc -->
<title>ReturnTypes (Apache Calcite calcite API)</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="description" content="declaration: package: org.apache.calcite.sql.type, class: ReturnTypes">
<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.css" title="Style">
<script type="text/javascript" src="../../../../../script.js"></script>
<script type="text/javascript" src="../../../../../script-dir/jszip/dist/jszip.min.js"></script>
<script type="text/javascript" src="../../../../../script-dir/jszip-utils/dist/jszip-utils.min.js"></script>
<!--[if IE]>
<script type="text/javascript" src="../../../../../script-dir/jszip-utils/dist/jszip-utils-ie.min.js"></script>
<![endif]-->
<script type="text/javascript" src="../../../../../script-dir/jquery-3.4.1.js"></script>
<script type="text/javascript" src="../../../../../script-dir/jquery-ui.js"></script>
</head>
<body class="class-declaration">
<script type="text/javascript">var data = {"i0":9,"i1":9,"i2":9,"i3":9,"i4":9,"i5":9,"i6":9,"i7":9,"i8":9,"i9":9};
var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
var pathtoroot = "../../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<div class="flexBox">
<header role="banner" class="flexHeader">
<nav role="navigation">
<!-- ========= 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="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 class="aboutLanguage"><b>Apache Calcite</b></div>
</div>
<div class="subNav">
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&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="subNavList">
<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="navListSearch"><label for="search">SEARCH:</label>
<input type="text" id="search" value="search" disabled="disabled">
<input type="reset" id="reset" value="reset" disabled="disabled">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<div class="skipNav"><a id="skip.navbar.top">
<!-- -->
</a></div>
</nav>
</header>
<div class="flexContent">
<main role="main">
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle"><span class="packageLabelInType">Package</span>&nbsp;<a href="package-summary.html">org.apache.calcite.sql.type</a></div>
<h1 title="Class ReturnTypes" class="title">Class ReturnTypes</h1>
</div>
<div class="contentContainer">
<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/javase/9/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang" class="externalLink">java.lang.Object</a>
<div class="inheritance">org.apache.calcite.sql.type.ReturnTypes</div>
</div>
<section class="description">
<hr>
<pre>public abstract class <span class="typeNameLabel">ReturnTypes</span>
extends <a href="https://docs.oracle.com/javase/9/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang" class="externalLink">Object</a></pre>
<div class="block">A collection of return-type inference strategies.</div>
</section>
<section class="summary">
<ul class="blockList">
<!-- =========== FIELD SUMMARY =========== -->
<li class="blockList">
<section class="fieldSummary"><a id="field.summary">
<!-- -->
</a>
<h2>Field Summary</h2>
<div class="memberSummary">
<table>
<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
<thead>
<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>
</thead>
<tbody>
<tr class="altColor">
<td class="colFirst"><code>static <a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#AGG_SUM">AGG_SUM</a></span></code></th>
<td class="colLast">
<div class="block">Type-inference strategy for SUM aggregate function inferred from the
operand type, and nullable if the call occurs within a "GROUP BY ()"
query.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static <a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#AGG_SUM_EMPTY_IS_ZERO">AGG_SUM_EMPTY_IS_ZERO</a></span></code></th>
<td class="colLast">
<div class="block">Type-inference strategy for $SUM0 aggregate function inferred from the
operand type.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static <a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#ARG0">ARG0</a></span></code></th>
<td class="colLast">
<div class="block">Type-inference strategy whereby the result type of a call is the type of
the operand #0 (0-based).</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static <a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#ARG0_FORCE_NULLABLE">ARG0_FORCE_NULLABLE</a></span></code></th>
<td class="colLast">
<div class="block">Type-inference strategy whereby the result type of a call is the type of
the operand #0 (0-based), with nulls always allowed.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static <a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#ARG0_INTERVAL">ARG0_INTERVAL</a></span></code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static <a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#ARG0_INTERVAL_NULLABLE">ARG0_INTERVAL_NULLABLE</a></span></code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static <a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#ARG0_NULLABLE">ARG0_NULLABLE</a></span></code></th>
<td class="colLast">
<div class="block">Type-inference strategy whereby the result type of a call is the type of
the operand #0 (0-based).</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static <a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#ARG0_NULLABLE_IF_EMPTY">ARG0_NULLABLE_IF_EMPTY</a></span></code></th>
<td class="colLast">
<div class="block">Type-inference strategy whereby the result type of a call is the type of
the operand #0 (0-based), and nullable if the call occurs within a
"GROUP BY ()" query.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static <a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#ARG0_NULLABLE_VARYING">ARG0_NULLABLE_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 of the first argument.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static <a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#ARG0_OR_EXACT_NO_SCALE">ARG0_OR_EXACT_NO_SCALE</a></span></code></th>
<td class="colLast">
<div class="block">Type-inference strategy whereby the result type of a call is
<a href="#DECIMAL_SCALE0"><code>DECIMAL_SCALE0</code></a> with a fallback to <a href="#ARG0"><code>ARG0</code></a> This rule
is used for floor, ceiling.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static <a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#ARG1">ARG1</a></span></code></th>
<td class="colLast">
<div class="block">Type-inference strategy whereby the result type of a call is the type of
the operand #1 (0-based).</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static <a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#ARG1_NULLABLE">ARG1_NULLABLE</a></span></code></th>
<td class="colLast">
<div class="block">Type-inference strategy whereby the result type of a call is the type of
the operand #1 (0-based).</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static <a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#ARG2">ARG2</a></span></code></th>
<td class="colLast">
<div class="block">Type-inference strategy whereby the result type of a call is the type of
operand #2 (0-based).</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static <a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#ARG2_NULLABLE">ARG2_NULLABLE</a></span></code></th>
<td class="colLast">
<div class="block">Type-inference strategy whereby the result type of a call is the type of
operand #2 (0-based).</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static <a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#AVG_AGG_FUNCTION">AVG_AGG_FUNCTION</a></span></code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static <a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#BIGINT">BIGINT</a></span></code></th>
<td class="colLast">
<div class="block">Type-inference strategy whereby the result type of a call is a BIGINT.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static <a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#BIGINT_FORCE_NULLABLE">BIGINT_FORCE_NULLABLE</a></span></code></th>
<td class="colLast">
<div class="block">Type-inference strategy whereby the result type of a call is a nullable
BIGINT.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static <a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#BIGINT_NULLABLE">BIGINT_NULLABLE</a></span></code></th>
<td class="colLast">
<div class="block">Type-inference strategy whereby the result type of a call is a BIGINT
with nulls allowed if any of the operands allow nulls.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static <a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#BOOLEAN">BOOLEAN</a></span></code></th>
<td class="colLast">
<div class="block">Type-inference strategy whereby the result type of a call is Boolean.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static <a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#BOOLEAN_FORCE_NULLABLE">BOOLEAN_FORCE_NULLABLE</a></span></code></th>
<td class="colLast">
<div class="block">Type-inference strategy whereby the result type of a call is a nullable
Boolean.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static <a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#BOOLEAN_NOT_NULL">BOOLEAN_NOT_NULL</a></span></code></th>
<td class="colLast">
<div class="block">Type-inference strategy whereby the result type of a call is BOOLEAN
NOT NULL.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static <a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#BOOLEAN_NULLABLE">BOOLEAN_NULLABLE</a></span></code></th>
<td class="colLast">
<div class="block">Type-inference strategy whereby the result type of a call is Boolean,
with nulls allowed if any of the operands allow nulls.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static <a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#BOOLEAN_NULLABLE_OPTIMIZED">BOOLEAN_NULLABLE_OPTIMIZED</a></span></code></th>
<td class="colLast">
<div class="block">Type-inference strategy with similar effect to <a href="#BOOLEAN_NULLABLE"><code>BOOLEAN_NULLABLE</code></a>,
which is more efficient, but can only be used if all arguments are
BOOLEAN.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static <a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#CHAR">CHAR</a></span></code></th>
<td class="colLast">
<div class="block">Type-inference strategy whereby the result type of a call is a Char.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static <a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#COLUMN_LIST">COLUMN_LIST</a></span></code></th>
<td class="colLast">
<div class="block">Type-inference strategy that always returns "COLUMN_LIST".</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static <a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#COVAR_REGR_FUNCTION">COVAR_REGR_FUNCTION</a></span></code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static <a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#CURSOR">CURSOR</a></span></code></th>
<td class="colLast">
<div class="block">Type-inference strategy that always returns "CURSOR".</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static <a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#DATE">DATE</a></span></code></th>
<td class="colLast">
<div class="block">Type-inference strategy whereby the result type of a call is DATE.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static <a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#DATE_NULLABLE">DATE_NULLABLE</a></span></code></th>
<td class="colLast">
<div class="block">Type-inference strategy whereby the result type of a call is nullable
DATE.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static <a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#DECIMAL_MOD">DECIMAL_MOD</a></span></code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static <a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#DECIMAL_MOD_NULLABLE">DECIMAL_MOD_NULLABLE</a></span></code></th>
<td class="colLast">
<div class="block">Type-inference strategy whereby the result type of a call is the decimal
modulus of two exact numeric operands where at least one of the operands is a
decimal.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static <a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#DECIMAL_PRODUCT">DECIMAL_PRODUCT</a></span></code></th>
<td class="colLast">
<div class="block">Type-inference strategy whereby the result type of a call is the decimal
product of two exact numeric operands where at least one of the operands
is a decimal.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static <a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#DECIMAL_PRODUCT_NULLABLE">DECIMAL_PRODUCT_NULLABLE</a></span></code></th>
<td class="colLast">
<div class="block">Same as <a href="#DECIMAL_PRODUCT"><code>DECIMAL_PRODUCT</code></a> but returns with nullability if any of
the operands is nullable by using
<a href="SqlTypeTransforms.html#TO_NULLABLE"><code>SqlTypeTransforms.TO_NULLABLE</code></a>.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static <a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#DECIMAL_QUOTIENT">DECIMAL_QUOTIENT</a></span></code></th>
<td class="colLast">
<div class="block">Type-inference strategy whereby the result type of a call is the decimal
quotient of two exact numeric operands where at least one of the operands
is a decimal.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static <a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#DECIMAL_QUOTIENT_NULLABLE">DECIMAL_QUOTIENT_NULLABLE</a></span></code></th>
<td class="colLast">
<div class="block">Same as <a href="#DECIMAL_QUOTIENT"><code>DECIMAL_QUOTIENT</code></a> but returns with nullability if any of
the operands is nullable by using
<a href="SqlTypeTransforms.html#TO_NULLABLE"><code>SqlTypeTransforms.TO_NULLABLE</code></a>.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static <a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#DECIMAL_SCALE0">DECIMAL_SCALE0</a></span></code></th>
<td class="colLast">
<div class="block">Type-inference strategy for a call where the first argument is a decimal.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static <a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#DECIMAL_SUM">DECIMAL_SUM</a></span></code></th>
<td class="colLast">
<div class="block">Type-inference strategy whereby the result type of a call is the decimal
sum of two exact numeric operands where at least one of the operands is a
decimal.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static <a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#DECIMAL_SUM_NULLABLE">DECIMAL_SUM_NULLABLE</a></span></code></th>
<td class="colLast">
<div class="block">Same as <a href="#DECIMAL_SUM"><code>DECIMAL_SUM</code></a> but returns with nullability if any
of the operands is nullable by using
<a href="SqlTypeTransforms.html#TO_NULLABLE"><code>SqlTypeTransforms.TO_NULLABLE</code></a>.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static <a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#DOUBLE">DOUBLE</a></span></code></th>
<td class="colLast">
<div class="block">Type-inference strategy whereby the result type of a call is Double.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static <a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#DOUBLE_NULLABLE">DOUBLE_NULLABLE</a></span></code></th>
<td class="colLast">
<div class="block">Type-inference strategy whereby the result type of a call is Double with
nulls allowed if any of the operands allow nulls.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static <a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#DYADIC_STRING_SUM_PRECISION">DYADIC_STRING_SUM_PRECISION</a></span></code></th>
<td class="colLast">
<div class="block">Type-inference strategy for concatenating two string arguments.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static <a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#DYADIC_STRING_SUM_PRECISION_NULLABLE">DYADIC_STRING_SUM_PRECISION_NULLABLE</a></span></code></th>
<td class="colLast">
<div class="block">Same as <a href="#DYADIC_STRING_SUM_PRECISION"><code>DYADIC_STRING_SUM_PRECISION</code></a> and using
<a href="SqlTypeTransforms.html#TO_NULLABLE"><code>SqlTypeTransforms.TO_NULLABLE</code></a>.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static <a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#DYADIC_STRING_SUM_PRECISION_NULLABLE_VARYING">DYADIC_STRING_SUM_PRECISION_NULLABLE_VARYING</a></span></code></th>
<td class="colLast">
<div class="block">Same as <a href="#DYADIC_STRING_SUM_PRECISION"><code>DYADIC_STRING_SUM_PRECISION</code></a> and using
<a href="SqlTypeTransforms.html#TO_NULLABLE"><code>SqlTypeTransforms.TO_NULLABLE</code></a>,
<a href="SqlTypeTransforms.html#TO_VARYING"><code>SqlTypeTransforms.TO_VARYING</code></a>.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static <a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#FRACTIONAL_RANK">FRACTIONAL_RANK</a></span></code></th>
<td class="colLast">
<div class="block">Type-inference strategy for the <code>CUME_DIST</code> and <code>PERCENT_RANK</code>
aggregate functions.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static <a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#HISTOGRAM">HISTOGRAM</a></span></code></th>
<td class="colLast">
<div class="block">Type-inference strategy for Histogram agg support.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static <a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#INTEGER">INTEGER</a></span></code></th>
<td class="colLast">
<div class="block">Type-inference strategy whereby the result type of a call is an Integer.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static <a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#INTEGER_NULLABLE">INTEGER_NULLABLE</a></span></code></th>
<td class="colLast">
<div class="block">Type-inference strategy whereby the result type of a call is an Integer
with nulls allowed if any of the operands allow nulls.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static <a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#INTEGER_QUOTIENT_NULLABLE">INTEGER_QUOTIENT_NULLABLE</a></span></code></th>
<td class="colLast">
<div class="block">Type-inference strategy whereby the result type of a call is
<a href="#ARG0_INTERVAL_NULLABLE"><code>ARG0_INTERVAL_NULLABLE</code></a> and <a href="#LEAST_RESTRICTIVE"><code>LEAST_RESTRICTIVE</code></a>.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static <a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#LEAST_RESTRICTIVE">LEAST_RESTRICTIVE</a></span></code></th>
<td class="colLast">
<div class="block">Type-inference strategy whereby the result type of a call is using its
operands biggest type, using the SQL:1999 rules described in "Data types
of results of aggregations".</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static <a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#MULTISET">MULTISET</a></span></code></th>
<td class="colLast">
<div class="block">Returns the same type as the multiset carries.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static <a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#MULTISET_ELEMENT_NULLABLE">MULTISET_ELEMENT_NULLABLE</a></span></code></th>
<td class="colLast">
<div class="block">Returns the element type of a MULTISET.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static <a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#MULTISET_NULLABLE">MULTISET_NULLABLE</a></span></code></th>
<td class="colLast">
<div class="block">Same as <a href="#MULTISET"><code>MULTISET</code></a> but returns with nullability if any of the
operands is nullable.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static <a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#MULTISET_PROJECT_ONLY">MULTISET_PROJECT_ONLY</a></span></code></th>
<td class="colLast">
<div class="block">Returns the type of the only column of a multiset.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static <a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#MULTISET_PROJECT0">MULTISET_PROJECT0</a></span></code></th>
<td class="colLast">
<div class="block">Returns a multiset of column #0 of a multiset.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static <a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#MULTISET_RECORD">MULTISET_RECORD</a></span></code></th>
<td class="colLast">
<div class="block">Returns a multiset of the first column of a multiset.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static <a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#MULTIVALENT_STRING_SUM_PRECISION">MULTIVALENT_STRING_SUM_PRECISION</a></span></code></th>
<td class="colLast">
<div class="block">Type-inference strategy for String concatenation.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static <a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#MULTIVALENT_STRING_SUM_PRECISION_NULLABLE">MULTIVALENT_STRING_SUM_PRECISION_NULLABLE</a></span></code></th>
<td class="colLast">
<div class="block">Same as <a href="#MULTIVALENT_STRING_SUM_PRECISION"><code>MULTIVALENT_STRING_SUM_PRECISION</code></a> and using
<a href="SqlTypeTransforms.html#TO_NULLABLE"><code>SqlTypeTransforms.TO_NULLABLE</code></a>.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static <a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#NULLABLE_MOD">NULLABLE_MOD</a></span></code></th>
<td class="colLast">
<div class="block">Type-inference strategy whereby the result type of a call is
<a href="#DECIMAL_MOD_NULLABLE"><code>DECIMAL_MOD_NULLABLE</code></a> with a fallback to <a href="#ARG1_NULLABLE"><code>ARG1_NULLABLE</code></a>
These rules are used for modulus.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static <a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#NULLABLE_SUM">NULLABLE_SUM</a></span></code></th>
<td class="colLast">
<div class="block">Type-inference strategy whereby the result type of a call is
<a href="#DECIMAL_SUM_NULLABLE"><code>DECIMAL_SUM_NULLABLE</code></a> with a fallback to <a href="#LEAST_RESTRICTIVE"><code>LEAST_RESTRICTIVE</code></a>
These rules are used for addition and subtraction.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static <a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#PRODUCT_NULLABLE">PRODUCT_NULLABLE</a></span></code></th>
<td class="colLast">
<div class="block">Type-inference strategy whereby the result type of a call is
<a href="#DECIMAL_PRODUCT_NULLABLE"><code>DECIMAL_PRODUCT_NULLABLE</code></a> with a fallback to
<a href="#ARG0_INTERVAL_NULLABLE"><code>ARG0_INTERVAL_NULLABLE</code></a>
and <a href="#LEAST_RESTRICTIVE"><code>LEAST_RESTRICTIVE</code></a>.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static <a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#QUOTIENT_NULLABLE">QUOTIENT_NULLABLE</a></span></code></th>
<td class="colLast">
<div class="block">Type-inference strategy whereby the result type of a call is
<a href="#DECIMAL_QUOTIENT_NULLABLE"><code>DECIMAL_QUOTIENT_NULLABLE</code></a> with a fallback to
<a href="#ARG0_INTERVAL_NULLABLE"><code>ARG0_INTERVAL_NULLABLE</code></a> and <a href="#LEAST_RESTRICTIVE"><code>LEAST_RESTRICTIVE</code></a>.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static <a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#RANK">RANK</a></span></code></th>
<td class="colLast">
<div class="block">Type-inference strategy for the <code>NTILE</code>, <code>RANK</code>,
<code>DENSE_RANK</code>, and <code>ROW_NUMBER</code> aggregate functions.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static <a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#RECORD_TO_SCALAR">RECORD_TO_SCALAR</a></span></code></th>
<td class="colLast">
<div class="block">Returns the field type of a structured type which has only one field.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static <a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#SCOPE">SCOPE</a></span></code></th>
<td class="colLast">
<div class="block">Type-inference strategy where the expression is assumed to be registered
as a <a href="../validate/SqlValidatorNamespace.html" title="interface in org.apache.calcite.sql.validate"><code>SqlValidatorNamespace</code></a>, and
therefore the result type of the call is the type of that namespace.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static <a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#TIME">TIME</a></span></code></th>
<td class="colLast">
<div class="block">Type-inference strategy whereby the result type of a call is TIME(0).</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static <a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#TIME_NULLABLE">TIME_NULLABLE</a></span></code></th>
<td class="colLast">
<div class="block">Type-inference strategy whereby the result type of a call is nullable
TIME(0).</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static <a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#TIMESTAMP">TIMESTAMP</a></span></code></th>
<td class="colLast">
<div class="block">Type-inference strategy whereby the result type of a call is TIMESTAMP.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static <a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#TIMESTAMP_NULLABLE">TIMESTAMP_NULLABLE</a></span></code></th>
<td class="colLast">
<div class="block">Type-inference strategy whereby the result type of a call is nullable
TIMESTAMP.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static <a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#TO_ARRAY">TO_ARRAY</a></span></code></th>
<td class="colLast">
<div class="block">Returns an ARRAY type.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static <a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</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">Returns a MULTISET type.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static <a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#VARCHAR_2000">VARCHAR_2000</a></span></code></th>
<td class="colLast">
<div class="block">Type-inference strategy that always returns "VARCHAR(2000)".</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static <a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#VARCHAR_2000_NULLABLE">VARCHAR_2000_NULLABLE</a></span></code></th>
<td class="colLast">
<div class="block">Type-inference strategy that always returns "VARCHAR(2000)" with nulls
allowed if any of the operands allow nulls.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static <a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#VARCHAR_4">VARCHAR_4</a></span></code></th>
<td class="colLast">
<div class="block">Type-inference strategy that always returns "VARCHAR(4)".</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static <a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#VARCHAR_4_NULLABLE">VARCHAR_4_NULLABLE</a></span></code></th>
<td class="colLast">
<div class="block">Type-inference strategy that always returns "VARCHAR(4)" with nulls
allowed if any of the operands allow nulls.</div>
</td>
</tr>
</tbody>
</table>
</div>
</section>
</li>
<!-- ========== METHOD SUMMARY =========== -->
<li class="blockList">
<section class="methodSummary"><a id="method.summary">
<!-- -->
</a>
<h2>Method Summary</h2>
<div class="memberSummary">
<div role="tablist" aria-orientation="horizontal"><button role="tab" aria-selected="true" aria-controls="memberSummary_tabpanel" tabindex="0" onkeydown="switchTab(event)" id="t0" class="activeTableTab">All Methods</button><button role="tab" aria-selected="false" aria-controls="memberSummary_tabpanel" tabindex="-1" onkeydown="switchTab(event)" id="t1" class="tableTab" onclick="show(1);">Static Methods</button><button role="tab" aria-selected="false" aria-controls="memberSummary_tabpanel" tabindex="-1" onkeydown="switchTab(event)" id="t4" class="tableTab" onclick="show(8);">Concrete Methods</button></div>
<div id="memberSummary_tabpanel" role="tabpanel">
<table aria-labelledby="t0">
<thead>
<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>
</thead>
<tbody>
<tr class="altColor" id="i0">
<td class="colFirst"><code>static <a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#andThen(java.util.function.UnaryOperator,org.apache.calcite.sql.type.SqlReturnTypeInference)">andThen</a></span>&#8203;(<a href="https://docs.oracle.com/javase/9/docs/api/java/util/function/UnaryOperator.html?is-external=true" title="class or interface in java.util.function" class="externalLink">UnaryOperator</a>&lt;<a href="../SqlOperatorBinding.html" title="class in org.apache.calcite.sql">SqlOperatorBinding</a>&gt;&nbsp;bindingTransform,
<a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a>&nbsp;typeInference)</code></th>
<td class="colLast">
<div class="block">Returns a return-type inference that first transforms a binding and
then applies an inference.</div>
</td>
</tr>
<tr class="rowColor" id="i1">
<td class="colFirst"><code>static <a href="SqlTypeTransformCascade.html" title="class in org.apache.calcite.sql.type">SqlTypeTransformCascade</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#cascade(org.apache.calcite.sql.type.SqlReturnTypeInference,org.apache.calcite.sql.type.SqlTypeTransform...)">cascade</a></span>&#8203;(<a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a>&nbsp;rule,
<a href="SqlTypeTransform.html" title="interface in org.apache.calcite.sql.type">SqlTypeTransform</a>...&nbsp;transforms)</code></th>
<td class="colLast">
<div class="block">Creates a return-type inference that applies a rule then a sequence of
transforms.</div>
</td>
</tr>
<tr class="altColor" id="i2">
<td class="colFirst"><code>static <a href="SqlReturnTypeInferenceChain.html" title="class in org.apache.calcite.sql.type">SqlReturnTypeInferenceChain</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#chain(org.apache.calcite.sql.type.SqlReturnTypeInference...)">chain</a></span>&#8203;(<a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a>...&nbsp;rules)</code></th>
<td class="colLast">
<div class="block">Creates a return-type inference that applies a rule then a sequence of
rules, returning the first non-null result.</div>
</td>
</tr>
<tr class="rowColor" id="i3">
<td class="colFirst"><code>static <a href="ExplicitReturnTypeInference.html" title="class in org.apache.calcite.sql.type">ExplicitReturnTypeInference</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#explicit(org.apache.calcite.rel.type.RelDataType)">explicit</a></span>&#8203;(<a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;type)</code></th>
<td class="colLast">
<div class="block">Creates an inference rule which returns a copy of a given data type.</div>
</td>
</tr>
<tr class="altColor" id="i4">
<td class="colFirst"><code>static <a href="ExplicitReturnTypeInference.html" title="class in org.apache.calcite.sql.type">ExplicitReturnTypeInference</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#explicit(org.apache.calcite.rel.type.RelProtoDataType)">explicit</a></span>&#8203;(<a href="../../rel/type/RelProtoDataType.html" title="interface in org.apache.calcite.rel.type">RelProtoDataType</a>&nbsp;protoType)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="rowColor" id="i5">
<td class="colFirst"><code>static <a href="ExplicitReturnTypeInference.html" title="class in org.apache.calcite.sql.type">ExplicitReturnTypeInference</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#explicit(org.apache.calcite.sql.type.SqlTypeName)">explicit</a></span>&#8203;(<a href="SqlTypeName.html" title="enum in org.apache.calcite.sql.type">SqlTypeName</a>&nbsp;typeName)</code></th>
<td class="colLast">
<div class="block">Creates an inference rule which returns a type with no precision or scale,
such as <code>DATE</code>.</div>
</td>
</tr>
<tr class="altColor" id="i6">
<td class="colFirst"><code>static <a href="ExplicitReturnTypeInference.html" title="class in org.apache.calcite.sql.type">ExplicitReturnTypeInference</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#explicit(org.apache.calcite.sql.type.SqlTypeName,int)">explicit</a></span>&#8203;(<a href="SqlTypeName.html" title="enum in org.apache.calcite.sql.type">SqlTypeName</a>&nbsp;typeName,
int&nbsp;precision)</code></th>
<td class="colLast">
<div class="block">Creates an inference rule which returns a type with precision but no scale,
such as <code>VARCHAR(100)</code>.</div>
</td>
</tr>
<tr class="rowColor" id="i7">
<td class="colFirst"><code>static <a href="../SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#stripOrderBy(org.apache.calcite.sql.SqlCall)">stripOrderBy</a></span>&#8203;(<a href="../SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a>&nbsp;call)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="altColor" id="i8">
<td class="colFirst"><code>static <a href="../SqlOperatorBinding.html" title="class in org.apache.calcite.sql">SqlOperatorBinding</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#stripOrderBy(org.apache.calcite.sql.SqlOperatorBinding)">stripOrderBy</a></span>&#8203;(<a href="../SqlOperatorBinding.html" title="class in org.apache.calcite.sql">SqlOperatorBinding</a>&nbsp;operatorBinding)</code></th>
<td class="colLast">
<div class="block">Converts a binding of <code>FOO(x, y ORDER BY z)</code>
or <code>FOO(x, y ORDER BY z SEPARATOR s)</code>
to a binding of <code>FOO(x, y)</code>.</div>
</td>
</tr>
<tr class="rowColor" id="i9">
<td class="colFirst"><code>static <a href="../SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#stripSeparator(org.apache.calcite.sql.SqlCall)">stripSeparator</a></span>&#8203;(<a href="../SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a>&nbsp;call)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="inheritedList">
<h3>Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/javase/9/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang" class="externalLink">Object</a></h3>
<a id="methods.inherited.from.class.java.lang.Object">
<!-- -->
</a><code><a href="https://docs.oracle.com/javase/9/docs/api/java/lang/Object.html?is-external=true#clone()" title="class or interface in java.lang" class="externalLink">clone</a>, <a href="https://docs.oracle.com/javase/9/docs/api/java/lang/Object.html?is-external=true#equals(java.lang.Object)" title="class or interface in java.lang" class="externalLink">equals</a>, <a href="https://docs.oracle.com/javase/9/docs/api/java/lang/Object.html?is-external=true#finalize()" title="class or interface in java.lang" class="externalLink">finalize</a>, <a href="https://docs.oracle.com/javase/9/docs/api/java/lang/Object.html?is-external=true#getClass()" title="class or interface in java.lang" class="externalLink">getClass</a>, <a href="https://docs.oracle.com/javase/9/docs/api/java/lang/Object.html?is-external=true#hashCode()" title="class or interface in java.lang" class="externalLink">hashCode</a>, <a href="https://docs.oracle.com/javase/9/docs/api/java/lang/Object.html?is-external=true#notify()" title="class or interface in java.lang" class="externalLink">notify</a>, <a href="https://docs.oracle.com/javase/9/docs/api/java/lang/Object.html?is-external=true#notifyAll()" title="class or interface in java.lang" class="externalLink">notifyAll</a>, <a href="https://docs.oracle.com/javase/9/docs/api/java/lang/Object.html?is-external=true#toString()" title="class or interface in java.lang" class="externalLink">toString</a>, <a href="https://docs.oracle.com/javase/9/docs/api/java/lang/Object.html?is-external=true#wait()" title="class or interface in java.lang" class="externalLink">wait</a>, <a href="https://docs.oracle.com/javase/9/docs/api/java/lang/Object.html?is-external=true#wait(long)" title="class or interface in java.lang" class="externalLink">wait</a>, <a href="https://docs.oracle.com/javase/9/docs/api/java/lang/Object.html?is-external=true#wait(long,int)" title="class or interface in java.lang" class="externalLink">wait</a></code></div>
</section>
</li>
</ul>
</section>
<section class="details">
<ul class="blockList">
<!-- ============ FIELD DETAIL =========== -->
<li class="blockList">
<section class="fieldDetails"><a id="field.detail">
<!-- -->
</a>
<h2>Field Details</h2>
<ul class="blockList">
<li class="blockList">
<section class="detail">
<h3><a id="ARG0">ARG0</a></h3>
<div class="memberSignature"><span class="modifiers">public static final</span>&nbsp;<span class="returnType"><a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></span>&nbsp;<span class="memberName">ARG0</span></div>
<div class="block">Type-inference strategy whereby the result type of a call is the type of
the operand #0 (0-based).</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="ARG0_NULLABLE_VARYING">ARG0_NULLABLE_VARYING</a></h3>
<div class="memberSignature"><span class="modifiers">public static final</span>&nbsp;<span class="returnType"><a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></span>&nbsp;<span class="memberName">ARG0_NULLABLE_VARYING</span></div>
<div class="block">Type-inference strategy whereby the result type of a call is VARYING the
type of the first argument. The length returned is the same as length of
the first argument. If any of the other operands are nullable the
returned type will also be nullable. First Arg must be of string type.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="ARG0_NULLABLE">ARG0_NULLABLE</a></h3>
<div class="memberSignature"><span class="modifiers">public static final</span>&nbsp;<span class="returnType"><a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></span>&nbsp;<span class="memberName">ARG0_NULLABLE</span></div>
<div class="block">Type-inference strategy whereby the result type of a call is the type of
the operand #0 (0-based). If any of the other operands are nullable the
returned type will also be nullable.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="ARG0_FORCE_NULLABLE">ARG0_FORCE_NULLABLE</a></h3>
<div class="memberSignature"><span class="modifiers">public static final</span>&nbsp;<span class="returnType"><a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></span>&nbsp;<span class="memberName">ARG0_FORCE_NULLABLE</span></div>
<div class="block">Type-inference strategy whereby the result type of a call is the type of
the operand #0 (0-based), with nulls always allowed.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="ARG0_INTERVAL">ARG0_INTERVAL</a></h3>
<div class="memberSignature"><span class="modifiers">public static final</span>&nbsp;<span class="returnType"><a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></span>&nbsp;<span class="memberName">ARG0_INTERVAL</span></div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="ARG0_INTERVAL_NULLABLE">ARG0_INTERVAL_NULLABLE</a></h3>
<div class="memberSignature"><span class="modifiers">public static final</span>&nbsp;<span class="returnType"><a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></span>&nbsp;<span class="memberName">ARG0_INTERVAL_NULLABLE</span></div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="ARG0_NULLABLE_IF_EMPTY">ARG0_NULLABLE_IF_EMPTY</a></h3>
<div class="memberSignature"><span class="modifiers">public static final</span>&nbsp;<span class="returnType"><a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></span>&nbsp;<span class="memberName">ARG0_NULLABLE_IF_EMPTY</span></div>
<div class="block">Type-inference strategy whereby the result type of a call is the type of
the operand #0 (0-based), and nullable if the call occurs within a
"GROUP BY ()" query. E.g. in "select sum(1) as s from empty", s may be
null.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="ARG1">ARG1</a></h3>
<div class="memberSignature"><span class="modifiers">public static final</span>&nbsp;<span class="returnType"><a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></span>&nbsp;<span class="memberName">ARG1</span></div>
<div class="block">Type-inference strategy whereby the result type of a call is the type of
the operand #1 (0-based).</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="ARG1_NULLABLE">ARG1_NULLABLE</a></h3>
<div class="memberSignature"><span class="modifiers">public static final</span>&nbsp;<span class="returnType"><a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></span>&nbsp;<span class="memberName">ARG1_NULLABLE</span></div>
<div class="block">Type-inference strategy whereby the result type of a call is the type of
the operand #1 (0-based). If any of the other operands are nullable the
returned type will also be nullable.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="ARG2">ARG2</a></h3>
<div class="memberSignature"><span class="modifiers">public static final</span>&nbsp;<span class="returnType"><a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></span>&nbsp;<span class="memberName">ARG2</span></div>
<div class="block">Type-inference strategy whereby the result type of a call is the type of
operand #2 (0-based).</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="ARG2_NULLABLE">ARG2_NULLABLE</a></h3>
<div class="memberSignature"><span class="modifiers">public static final</span>&nbsp;<span class="returnType"><a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></span>&nbsp;<span class="memberName">ARG2_NULLABLE</span></div>
<div class="block">Type-inference strategy whereby the result type of a call is the type of
operand #2 (0-based). If any of the other operands are nullable the
returned type will also be nullable.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="BOOLEAN">BOOLEAN</a></h3>
<div class="memberSignature"><span class="modifiers">public static final</span>&nbsp;<span class="returnType"><a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></span>&nbsp;<span class="memberName">BOOLEAN</span></div>
<div class="block">Type-inference strategy whereby the result type of a call is Boolean.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="BOOLEAN_NULLABLE">BOOLEAN_NULLABLE</a></h3>
<div class="memberSignature"><span class="modifiers">public static final</span>&nbsp;<span class="returnType"><a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></span>&nbsp;<span class="memberName">BOOLEAN_NULLABLE</span></div>
<div class="block">Type-inference strategy whereby the result type of a call is Boolean,
with nulls allowed if any of the operands allow nulls.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="BOOLEAN_NULLABLE_OPTIMIZED">BOOLEAN_NULLABLE_OPTIMIZED</a></h3>
<div class="memberSignature"><span class="modifiers">public static final</span>&nbsp;<span class="returnType"><a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></span>&nbsp;<span class="memberName">BOOLEAN_NULLABLE_OPTIMIZED</span></div>
<div class="block">Type-inference strategy with similar effect to <a href="#BOOLEAN_NULLABLE"><code>BOOLEAN_NULLABLE</code></a>,
which is more efficient, but can only be used if all arguments are
BOOLEAN.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="BOOLEAN_FORCE_NULLABLE">BOOLEAN_FORCE_NULLABLE</a></h3>
<div class="memberSignature"><span class="modifiers">public static final</span>&nbsp;<span class="returnType"><a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></span>&nbsp;<span class="memberName">BOOLEAN_FORCE_NULLABLE</span></div>
<div class="block">Type-inference strategy whereby the result type of a call is a nullable
Boolean.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="BOOLEAN_NOT_NULL">BOOLEAN_NOT_NULL</a></h3>
<div class="memberSignature"><span class="modifiers">public static final</span>&nbsp;<span class="returnType"><a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></span>&nbsp;<span class="memberName">BOOLEAN_NOT_NULL</span></div>
<div class="block">Type-inference strategy whereby the result type of a call is BOOLEAN
NOT NULL.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="DATE">DATE</a></h3>
<div class="memberSignature"><span class="modifiers">public static final</span>&nbsp;<span class="returnType"><a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></span>&nbsp;<span class="memberName">DATE</span></div>
<div class="block">Type-inference strategy whereby the result type of a call is DATE.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="DATE_NULLABLE">DATE_NULLABLE</a></h3>
<div class="memberSignature"><span class="modifiers">public static final</span>&nbsp;<span class="returnType"><a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></span>&nbsp;<span class="memberName">DATE_NULLABLE</span></div>
<div class="block">Type-inference strategy whereby the result type of a call is nullable
DATE.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="TIME">TIME</a></h3>
<div class="memberSignature"><span class="modifiers">public static final</span>&nbsp;<span class="returnType"><a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></span>&nbsp;<span class="memberName">TIME</span></div>
<div class="block">Type-inference strategy whereby the result type of a call is TIME(0).</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="TIME_NULLABLE">TIME_NULLABLE</a></h3>
<div class="memberSignature"><span class="modifiers">public static final</span>&nbsp;<span class="returnType"><a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></span>&nbsp;<span class="memberName">TIME_NULLABLE</span></div>
<div class="block">Type-inference strategy whereby the result type of a call is nullable
TIME(0).</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="TIMESTAMP">TIMESTAMP</a></h3>
<div class="memberSignature"><span class="modifiers">public static final</span>&nbsp;<span class="returnType"><a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></span>&nbsp;<span class="memberName">TIMESTAMP</span></div>
<div class="block">Type-inference strategy whereby the result type of a call is TIMESTAMP.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="TIMESTAMP_NULLABLE">TIMESTAMP_NULLABLE</a></h3>
<div class="memberSignature"><span class="modifiers">public static final</span>&nbsp;<span class="returnType"><a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></span>&nbsp;<span class="memberName">TIMESTAMP_NULLABLE</span></div>
<div class="block">Type-inference strategy whereby the result type of a call is nullable
TIMESTAMP.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="DOUBLE">DOUBLE</a></h3>
<div class="memberSignature"><span class="modifiers">public static final</span>&nbsp;<span class="returnType"><a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></span>&nbsp;<span class="memberName">DOUBLE</span></div>
<div class="block">Type-inference strategy whereby the result type of a call is Double.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="DOUBLE_NULLABLE">DOUBLE_NULLABLE</a></h3>
<div class="memberSignature"><span class="modifiers">public static final</span>&nbsp;<span class="returnType"><a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></span>&nbsp;<span class="memberName">DOUBLE_NULLABLE</span></div>
<div class="block">Type-inference strategy whereby the result type of a call is Double with
nulls allowed if any of the operands allow nulls.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="CHAR">CHAR</a></h3>
<div class="memberSignature"><span class="modifiers">public static final</span>&nbsp;<span class="returnType"><a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></span>&nbsp;<span class="memberName">CHAR</span></div>
<div class="block">Type-inference strategy whereby the result type of a call is a Char.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="INTEGER">INTEGER</a></h3>
<div class="memberSignature"><span class="modifiers">public static final</span>&nbsp;<span class="returnType"><a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></span>&nbsp;<span class="memberName">INTEGER</span></div>
<div class="block">Type-inference strategy whereby the result type of a call is an Integer.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="INTEGER_NULLABLE">INTEGER_NULLABLE</a></h3>
<div class="memberSignature"><span class="modifiers">public static final</span>&nbsp;<span class="returnType"><a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></span>&nbsp;<span class="memberName">INTEGER_NULLABLE</span></div>
<div class="block">Type-inference strategy whereby the result type of a call is an Integer
with nulls allowed if any of the operands allow nulls.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="BIGINT">BIGINT</a></h3>
<div class="memberSignature"><span class="modifiers">public static final</span>&nbsp;<span class="returnType"><a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></span>&nbsp;<span class="memberName">BIGINT</span></div>
<div class="block">Type-inference strategy whereby the result type of a call is a BIGINT.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="BIGINT_FORCE_NULLABLE">BIGINT_FORCE_NULLABLE</a></h3>
<div class="memberSignature"><span class="modifiers">public static final</span>&nbsp;<span class="returnType"><a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></span>&nbsp;<span class="memberName">BIGINT_FORCE_NULLABLE</span></div>
<div class="block">Type-inference strategy whereby the result type of a call is a nullable
BIGINT.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="BIGINT_NULLABLE">BIGINT_NULLABLE</a></h3>
<div class="memberSignature"><span class="modifiers">public static final</span>&nbsp;<span class="returnType"><a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></span>&nbsp;<span class="memberName">BIGINT_NULLABLE</span></div>
<div class="block">Type-inference strategy whereby the result type of a call is a BIGINT
with nulls allowed if any of the operands allow nulls.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="VARCHAR_4">VARCHAR_4</a></h3>
<div class="memberSignature"><span class="modifiers">public static final</span>&nbsp;<span class="returnType"><a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></span>&nbsp;<span class="memberName">VARCHAR_4</span></div>
<div class="block">Type-inference strategy that always returns "VARCHAR(4)".</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="VARCHAR_4_NULLABLE">VARCHAR_4_NULLABLE</a></h3>
<div class="memberSignature"><span class="modifiers">public static final</span>&nbsp;<span class="returnType"><a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></span>&nbsp;<span class="memberName">VARCHAR_4_NULLABLE</span></div>
<div class="block">Type-inference strategy that always returns "VARCHAR(4)" with nulls
allowed if any of the operands allow nulls.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="VARCHAR_2000">VARCHAR_2000</a></h3>
<div class="memberSignature"><span class="modifiers">public static final</span>&nbsp;<span class="returnType"><a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></span>&nbsp;<span class="memberName">VARCHAR_2000</span></div>
<div class="block">Type-inference strategy that always returns "VARCHAR(2000)".</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="VARCHAR_2000_NULLABLE">VARCHAR_2000_NULLABLE</a></h3>
<div class="memberSignature"><span class="modifiers">public static final</span>&nbsp;<span class="returnType"><a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></span>&nbsp;<span class="memberName">VARCHAR_2000_NULLABLE</span></div>
<div class="block">Type-inference strategy that always returns "VARCHAR(2000)" with nulls
allowed if any of the operands allow nulls.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="HISTOGRAM">HISTOGRAM</a></h3>
<div class="memberSignature"><span class="modifiers">public static final</span>&nbsp;<span class="returnType"><a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></span>&nbsp;<span class="memberName">HISTOGRAM</span></div>
<div class="block">Type-inference strategy for Histogram agg support.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="CURSOR">CURSOR</a></h3>
<div class="memberSignature"><span class="modifiers">public static final</span>&nbsp;<span class="returnType"><a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></span>&nbsp;<span class="memberName">CURSOR</span></div>
<div class="block">Type-inference strategy that always returns "CURSOR".</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="COLUMN_LIST">COLUMN_LIST</a></h3>
<div class="memberSignature"><span class="modifiers">public static final</span>&nbsp;<span class="returnType"><a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></span>&nbsp;<span class="memberName">COLUMN_LIST</span></div>
<div class="block">Type-inference strategy that always returns "COLUMN_LIST".</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="LEAST_RESTRICTIVE">LEAST_RESTRICTIVE</a></h3>
<div class="memberSignature"><span class="modifiers">public static final</span>&nbsp;<span class="returnType"><a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></span>&nbsp;<span class="memberName">LEAST_RESTRICTIVE</span></div>
<div class="block">Type-inference strategy whereby the result type of a call is using its
operands biggest type, using the SQL:1999 rules described in "Data types
of results of aggregations". These rules are used in union, except,
intersect, case and other places.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../util/Glossary.html#SQL99"><code>SQL:1999 Part 2 Section 9.3</code></a></dd>
</dl>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="MULTISET">MULTISET</a></h3>
<div class="memberSignature"><span class="modifiers">public static final</span>&nbsp;<span class="returnType"><a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></span>&nbsp;<span class="memberName">MULTISET</span></div>
<div class="block">Returns the same type as the multiset carries. The multiset type returned
is the least restrictive of the call's multiset operands</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="TO_MULTISET">TO_MULTISET</a></h3>
<div class="memberSignature"><span class="modifiers">public static final</span>&nbsp;<span class="returnType"><a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></span>&nbsp;<span class="memberName">TO_MULTISET</span></div>
<div class="block">Returns a MULTISET type.
<p>For example, given <code>INTEGER</code>, returns
<code>INTEGER MULTISET</code>.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="MULTISET_ELEMENT_NULLABLE">MULTISET_ELEMENT_NULLABLE</a></h3>
<div class="memberSignature"><span class="modifiers">public static final</span>&nbsp;<span class="returnType"><a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></span>&nbsp;<span class="memberName">MULTISET_ELEMENT_NULLABLE</span></div>
<div class="block">Returns the element type of a MULTISET.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="MULTISET_NULLABLE">MULTISET_NULLABLE</a></h3>
<div class="memberSignature"><span class="modifiers">public static final</span>&nbsp;<span class="returnType"><a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></span>&nbsp;<span class="memberName">MULTISET_NULLABLE</span></div>
<div class="block">Same as <a href="#MULTISET"><code>MULTISET</code></a> but returns with nullability if any of the
operands is nullable.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="MULTISET_PROJECT_ONLY">MULTISET_PROJECT_ONLY</a></h3>
<div class="memberSignature"><span class="modifiers">public static final</span>&nbsp;<span class="returnType"><a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></span>&nbsp;<span class="memberName">MULTISET_PROJECT_ONLY</span></div>
<div class="block">Returns the type of the only column of a multiset.
<p>For example, given <code>RECORD(x INTEGER) MULTISET</code>, returns
<code>INTEGER MULTISET</code>.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="TO_ARRAY">TO_ARRAY</a></h3>
<div class="memberSignature"><span class="modifiers">public static final</span>&nbsp;<span class="returnType"><a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></span>&nbsp;<span class="memberName">TO_ARRAY</span></div>
<div class="block">Returns an ARRAY type.
<p>For example, given <code>INTEGER</code>, returns
<code>INTEGER ARRAY</code>.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="INTEGER_QUOTIENT_NULLABLE">INTEGER_QUOTIENT_NULLABLE</a></h3>
<div class="memberSignature"><span class="modifiers">public static final</span>&nbsp;<span class="returnType"><a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></span>&nbsp;<span class="memberName">INTEGER_QUOTIENT_NULLABLE</span></div>
<div class="block">Type-inference strategy whereby the result type of a call is
<a href="#ARG0_INTERVAL_NULLABLE"><code>ARG0_INTERVAL_NULLABLE</code></a> and <a href="#LEAST_RESTRICTIVE"><code>LEAST_RESTRICTIVE</code></a>. These rules
are used for integer division.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="DECIMAL_SCALE0">DECIMAL_SCALE0</a></h3>
<div class="memberSignature"><span class="modifiers">public static final</span>&nbsp;<span class="returnType"><a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></span>&nbsp;<span class="memberName">DECIMAL_SCALE0</span></div>
<div class="block">Type-inference strategy for a call where the first argument is a decimal.
The result type of a call is a decimal with a scale of 0, and the same
precision and nullability as the first argument.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="ARG0_OR_EXACT_NO_SCALE">ARG0_OR_EXACT_NO_SCALE</a></h3>
<div class="memberSignature"><span class="modifiers">public static final</span>&nbsp;<span class="returnType"><a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></span>&nbsp;<span class="memberName">ARG0_OR_EXACT_NO_SCALE</span></div>
<div class="block">Type-inference strategy whereby the result type of a call is
<a href="#DECIMAL_SCALE0"><code>DECIMAL_SCALE0</code></a> with a fallback to <a href="#ARG0"><code>ARG0</code></a> This rule
is used for floor, ceiling.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="DECIMAL_PRODUCT">DECIMAL_PRODUCT</a></h3>
<div class="memberSignature"><span class="modifiers">public static final</span>&nbsp;<span class="returnType"><a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></span>&nbsp;<span class="memberName">DECIMAL_PRODUCT</span></div>
<div class="block">Type-inference strategy whereby the result type of a call is the decimal
product of two exact numeric operands where at least one of the operands
is a decimal.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="DECIMAL_PRODUCT_NULLABLE">DECIMAL_PRODUCT_NULLABLE</a></h3>
<div class="memberSignature"><span class="modifiers">public static final</span>&nbsp;<span class="returnType"><a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></span>&nbsp;<span class="memberName">DECIMAL_PRODUCT_NULLABLE</span></div>
<div class="block">Same as <a href="#DECIMAL_PRODUCT"><code>DECIMAL_PRODUCT</code></a> but returns with nullability if any of
the operands is nullable by using
<a href="SqlTypeTransforms.html#TO_NULLABLE"><code>SqlTypeTransforms.TO_NULLABLE</code></a>.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="PRODUCT_NULLABLE">PRODUCT_NULLABLE</a></h3>
<div class="memberSignature"><span class="modifiers">public static final</span>&nbsp;<span class="returnType"><a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></span>&nbsp;<span class="memberName">PRODUCT_NULLABLE</span></div>
<div class="block">Type-inference strategy whereby the result type of a call is
<a href="#DECIMAL_PRODUCT_NULLABLE"><code>DECIMAL_PRODUCT_NULLABLE</code></a> with a fallback to
<a href="#ARG0_INTERVAL_NULLABLE"><code>ARG0_INTERVAL_NULLABLE</code></a>
and <a href="#LEAST_RESTRICTIVE"><code>LEAST_RESTRICTIVE</code></a>.
These rules are used for multiplication.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="DECIMAL_QUOTIENT">DECIMAL_QUOTIENT</a></h3>
<div class="memberSignature"><span class="modifiers">public static final</span>&nbsp;<span class="returnType"><a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></span>&nbsp;<span class="memberName">DECIMAL_QUOTIENT</span></div>
<div class="block">Type-inference strategy whereby the result type of a call is the decimal
quotient of two exact numeric operands where at least one of the operands
is a decimal.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="DECIMAL_QUOTIENT_NULLABLE">DECIMAL_QUOTIENT_NULLABLE</a></h3>
<div class="memberSignature"><span class="modifiers">public static final</span>&nbsp;<span class="returnType"><a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></span>&nbsp;<span class="memberName">DECIMAL_QUOTIENT_NULLABLE</span></div>
<div class="block">Same as <a href="#DECIMAL_QUOTIENT"><code>DECIMAL_QUOTIENT</code></a> but returns with nullability if any of
the operands is nullable by using
<a href="SqlTypeTransforms.html#TO_NULLABLE"><code>SqlTypeTransforms.TO_NULLABLE</code></a>.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="QUOTIENT_NULLABLE">QUOTIENT_NULLABLE</a></h3>
<div class="memberSignature"><span class="modifiers">public static final</span>&nbsp;<span class="returnType"><a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></span>&nbsp;<span class="memberName">QUOTIENT_NULLABLE</span></div>
<div class="block">Type-inference strategy whereby the result type of a call is
<a href="#DECIMAL_QUOTIENT_NULLABLE"><code>DECIMAL_QUOTIENT_NULLABLE</code></a> with a fallback to
<a href="#ARG0_INTERVAL_NULLABLE"><code>ARG0_INTERVAL_NULLABLE</code></a> and <a href="#LEAST_RESTRICTIVE"><code>LEAST_RESTRICTIVE</code></a>. These rules
are used for division.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="DECIMAL_SUM">DECIMAL_SUM</a></h3>
<div class="memberSignature"><span class="modifiers">public static final</span>&nbsp;<span class="returnType"><a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></span>&nbsp;<span class="memberName">DECIMAL_SUM</span></div>
<div class="block">Type-inference strategy whereby the result type of a call is the decimal
sum of two exact numeric operands where at least one of the operands is a
decimal.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="DECIMAL_SUM_NULLABLE">DECIMAL_SUM_NULLABLE</a></h3>
<div class="memberSignature"><span class="modifiers">public static final</span>&nbsp;<span class="returnType"><a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></span>&nbsp;<span class="memberName">DECIMAL_SUM_NULLABLE</span></div>
<div class="block">Same as <a href="#DECIMAL_SUM"><code>DECIMAL_SUM</code></a> but returns with nullability if any
of the operands is nullable by using
<a href="SqlTypeTransforms.html#TO_NULLABLE"><code>SqlTypeTransforms.TO_NULLABLE</code></a>.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="NULLABLE_SUM">NULLABLE_SUM</a></h3>
<div class="memberSignature"><span class="modifiers">public static final</span>&nbsp;<span class="returnType"><a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></span>&nbsp;<span class="memberName">NULLABLE_SUM</span></div>
<div class="block">Type-inference strategy whereby the result type of a call is
<a href="#DECIMAL_SUM_NULLABLE"><code>DECIMAL_SUM_NULLABLE</code></a> with a fallback to <a href="#LEAST_RESTRICTIVE"><code>LEAST_RESTRICTIVE</code></a>
These rules are used for addition and subtraction.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="DECIMAL_MOD">DECIMAL_MOD</a></h3>
<div class="memberSignature"><span class="modifiers">public static final</span>&nbsp;<span class="returnType"><a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></span>&nbsp;<span class="memberName">DECIMAL_MOD</span></div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="DECIMAL_MOD_NULLABLE">DECIMAL_MOD_NULLABLE</a></h3>
<div class="memberSignature"><span class="modifiers">public static final</span>&nbsp;<span class="returnType"><a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></span>&nbsp;<span class="memberName">DECIMAL_MOD_NULLABLE</span></div>
<div class="block">Type-inference strategy whereby the result type of a call is the decimal
modulus of two exact numeric operands where at least one of the operands is a
decimal.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="NULLABLE_MOD">NULLABLE_MOD</a></h3>
<div class="memberSignature"><span class="modifiers">public static final</span>&nbsp;<span class="returnType"><a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></span>&nbsp;<span class="memberName">NULLABLE_MOD</span></div>
<div class="block">Type-inference strategy whereby the result type of a call is
<a href="#DECIMAL_MOD_NULLABLE"><code>DECIMAL_MOD_NULLABLE</code></a> with a fallback to <a href="#ARG1_NULLABLE"><code>ARG1_NULLABLE</code></a>
These rules are used for modulus.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="DYADIC_STRING_SUM_PRECISION">DYADIC_STRING_SUM_PRECISION</a></h3>
<div class="memberSignature"><span class="modifiers">public static final</span>&nbsp;<span class="returnType"><a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></span>&nbsp;<span class="memberName">DYADIC_STRING_SUM_PRECISION</span></div>
<div class="block">Type-inference strategy for concatenating two string arguments. The result
type of a call is:
<ul>
<li>the same type as the input types but with the combined length of the
two first types</li>
<li>if types are of char type the type with the highest coercibility will
be used</li>
<li>result is varying if either input is; otherwise fixed
</ul>
<p>Pre-requisites:
<ul>
<li>input types must be of the same string type
<li>types must be comparable without casting
</ul></div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="MULTIVALENT_STRING_SUM_PRECISION">MULTIVALENT_STRING_SUM_PRECISION</a></h3>
<div class="memberSignature"><span class="modifiers">public static final</span>&nbsp;<span class="returnType"><a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></span>&nbsp;<span class="memberName">MULTIVALENT_STRING_SUM_PRECISION</span></div>
<div class="block">Type-inference strategy for String concatenation.
Result is varying if either input is; otherwise fixed.
For example,
<p>concat(cast('a' as varchar(2)), cast('b' as varchar(3)),cast('c' as varchar(2)))
returns varchar(7).</p>
<p>concat(cast('a' as varchar), cast('b' as varchar(2), cast('c' as varchar(2))))
returns varchar.</p>
<p>concat(cast('a' as varchar(65535)), cast('b' as varchar(2)), cast('c' as varchar(2)))
returns varchar.</p></div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="MULTIVALENT_STRING_SUM_PRECISION_NULLABLE">MULTIVALENT_STRING_SUM_PRECISION_NULLABLE</a></h3>
<div class="memberSignature"><span class="modifiers">public static final</span>&nbsp;<span class="returnType"><a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></span>&nbsp;<span class="memberName">MULTIVALENT_STRING_SUM_PRECISION_NULLABLE</span></div>
<div class="block">Same as <a href="#MULTIVALENT_STRING_SUM_PRECISION"><code>MULTIVALENT_STRING_SUM_PRECISION</code></a> and using
<a href="SqlTypeTransforms.html#TO_NULLABLE"><code>SqlTypeTransforms.TO_NULLABLE</code></a>.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="DYADIC_STRING_SUM_PRECISION_NULLABLE_VARYING">DYADIC_STRING_SUM_PRECISION_NULLABLE_VARYING</a></h3>
<div class="memberSignature"><span class="modifiers">public static final</span>&nbsp;<span class="returnType"><a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></span>&nbsp;<span class="memberName">DYADIC_STRING_SUM_PRECISION_NULLABLE_VARYING</span></div>
<div class="block">Same as <a href="#DYADIC_STRING_SUM_PRECISION"><code>DYADIC_STRING_SUM_PRECISION</code></a> and using
<a href="SqlTypeTransforms.html#TO_NULLABLE"><code>SqlTypeTransforms.TO_NULLABLE</code></a>,
<a href="SqlTypeTransforms.html#TO_VARYING"><code>SqlTypeTransforms.TO_VARYING</code></a>.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="DYADIC_STRING_SUM_PRECISION_NULLABLE">DYADIC_STRING_SUM_PRECISION_NULLABLE</a></h3>
<div class="memberSignature"><span class="modifiers">public static final</span>&nbsp;<span class="returnType"><a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></span>&nbsp;<span class="memberName">DYADIC_STRING_SUM_PRECISION_NULLABLE</span></div>
<div class="block">Same as <a href="#DYADIC_STRING_SUM_PRECISION"><code>DYADIC_STRING_SUM_PRECISION</code></a> and using
<a href="SqlTypeTransforms.html#TO_NULLABLE"><code>SqlTypeTransforms.TO_NULLABLE</code></a>.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="SCOPE">SCOPE</a></h3>
<div class="memberSignature"><span class="modifiers">public static final</span>&nbsp;<span class="returnType"><a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></span>&nbsp;<span class="memberName">SCOPE</span></div>
<div class="block">Type-inference strategy where the expression is assumed to be registered
as a <a href="../validate/SqlValidatorNamespace.html" title="interface in org.apache.calcite.sql.validate"><code>SqlValidatorNamespace</code></a>, and
therefore the result type of the call is the type of that namespace.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="MULTISET_PROJECT0">MULTISET_PROJECT0</a></h3>
<div class="memberSignature"><span class="modifiers">public static final</span>&nbsp;<span class="returnType"><a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></span>&nbsp;<span class="memberName">MULTISET_PROJECT0</span></div>
<div class="block">Returns a multiset of column #0 of a multiset. For example, given
<code>RECORD(x INTEGER, y DATE) MULTISET</code>, returns <code>INTEGER
MULTISET</code>.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="MULTISET_RECORD">MULTISET_RECORD</a></h3>
<div class="memberSignature"><span class="modifiers">public static final</span>&nbsp;<span class="returnType"><a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></span>&nbsp;<span class="memberName">MULTISET_RECORD</span></div>
<div class="block">Returns a multiset of the first column of a multiset. For example, given
<code>INTEGER MULTISET</code>, returns <code>RECORD(x INTEGER)
MULTISET</code>.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="RECORD_TO_SCALAR">RECORD_TO_SCALAR</a></h3>
<div class="memberSignature"><span class="modifiers">public static final</span>&nbsp;<span class="returnType"><a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></span>&nbsp;<span class="memberName">RECORD_TO_SCALAR</span></div>
<div class="block">Returns the field type of a structured type which has only one field. For
example, given <code>RECORD(x INTEGER)</code> returns <code>INTEGER</code>.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="AGG_SUM">AGG_SUM</a></h3>
<div class="memberSignature"><span class="modifiers">public static final</span>&nbsp;<span class="returnType"><a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></span>&nbsp;<span class="memberName">AGG_SUM</span></div>
<div class="block">Type-inference strategy for SUM aggregate function inferred from the
operand type, and nullable if the call occurs within a "GROUP BY ()"
query. E.g. in "select sum(x) as s from empty", s may be null. Also,
with the default implementation of RelDataTypeSystem, s has the same
type name as x.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="AGG_SUM_EMPTY_IS_ZERO">AGG_SUM_EMPTY_IS_ZERO</a></h3>
<div class="memberSignature"><span class="modifiers">public static final</span>&nbsp;<span class="returnType"><a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></span>&nbsp;<span class="memberName">AGG_SUM_EMPTY_IS_ZERO</span></div>
<div class="block">Type-inference strategy for $SUM0 aggregate function inferred from the
operand type. By default the inferred type is identical to the operand
type. E.g. in "select $sum0(x) as s from empty", s has the same type as
x.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="FRACTIONAL_RANK">FRACTIONAL_RANK</a></h3>
<div class="memberSignature"><span class="modifiers">public static final</span>&nbsp;<span class="returnType"><a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></span>&nbsp;<span class="memberName">FRACTIONAL_RANK</span></div>
<div class="block">Type-inference strategy for the <code>CUME_DIST</code> and <code>PERCENT_RANK</code>
aggregate functions.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="RANK">RANK</a></h3>
<div class="memberSignature"><span class="modifiers">public static final</span>&nbsp;<span class="returnType"><a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></span>&nbsp;<span class="memberName">RANK</span></div>
<div class="block">Type-inference strategy for the <code>NTILE</code>, <code>RANK</code>,
<code>DENSE_RANK</code>, and <code>ROW_NUMBER</code> aggregate functions.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="AVG_AGG_FUNCTION">AVG_AGG_FUNCTION</a></h3>
<div class="memberSignature"><span class="modifiers">public static final</span>&nbsp;<span class="returnType"><a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></span>&nbsp;<span class="memberName">AVG_AGG_FUNCTION</span></div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="COVAR_REGR_FUNCTION">COVAR_REGR_FUNCTION</a></h3>
<div class="memberSignature"><span class="modifiers">public static final</span>&nbsp;<span class="returnType"><a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></span>&nbsp;<span class="memberName">COVAR_REGR_FUNCTION</span></div>
</section>
</li>
</ul>
</section>
</li>
<!-- ============ METHOD DETAIL ========== -->
<li class="blockList">
<section class="methodDetails"><a id="method.detail">
<!-- -->
</a>
<h2>Method Details</h2>
<ul class="blockList">
<li class="blockList">
<section class="detail">
<h3><a id="chain(org.apache.calcite.sql.type.SqlReturnTypeInference...)">chain</a></h3>
<div class="memberSignature"><span class="modifiers">public static</span>&nbsp;<span class="returnType"><a href="SqlReturnTypeInferenceChain.html" title="class in org.apache.calcite.sql.type">SqlReturnTypeInferenceChain</a></span>&nbsp;<span class="memberName">chain</span>&#8203;(<span class="arguments"><a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a>...&nbsp;rules)</span></div>
<div class="block">Creates a return-type inference that applies a rule then a sequence of
rules, returning the first non-null result.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="SqlReturnTypeInference.html#orElse(org.apache.calcite.sql.type.SqlReturnTypeInference)"><code>SqlReturnTypeInference.orElse(SqlReturnTypeInference)</code></a></dd>
</dl>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="cascade(org.apache.calcite.sql.type.SqlReturnTypeInference,org.apache.calcite.sql.type.SqlTypeTransform...)">cascade</a></h3>
<div class="memberSignature"><span class="modifiers">public static</span>&nbsp;<span class="returnType"><a href="SqlTypeTransformCascade.html" title="class in org.apache.calcite.sql.type">SqlTypeTransformCascade</a></span>&nbsp;<span class="memberName">cascade</span>&#8203;(<span class="arguments"><a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a>&nbsp;rule,
<a href="SqlTypeTransform.html" title="interface in org.apache.calcite.sql.type">SqlTypeTransform</a>...&nbsp;transforms)</span></div>
<div class="block">Creates a return-type inference that applies a rule then a sequence of
transforms.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="SqlReturnTypeInference.html#andThen(org.apache.calcite.sql.type.SqlTypeTransform)"><code>SqlReturnTypeInference.andThen(SqlTypeTransform)</code></a></dd>
</dl>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="explicit(org.apache.calcite.rel.type.RelProtoDataType)">explicit</a></h3>
<div class="memberSignature"><span class="modifiers">public static</span>&nbsp;<span class="returnType"><a href="ExplicitReturnTypeInference.html" title="class in org.apache.calcite.sql.type">ExplicitReturnTypeInference</a></span>&nbsp;<span class="memberName">explicit</span>&#8203;(<span class="arguments"><a href="../../rel/type/RelProtoDataType.html" title="interface in org.apache.calcite.rel.type">RelProtoDataType</a>&nbsp;protoType)</span></div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="explicit(org.apache.calcite.rel.type.RelDataType)">explicit</a></h3>
<div class="memberSignature"><span class="modifiers">public static</span>&nbsp;<span class="returnType"><a href="ExplicitReturnTypeInference.html" title="class in org.apache.calcite.sql.type">ExplicitReturnTypeInference</a></span>&nbsp;<span class="memberName">explicit</span>&#8203;(<span class="arguments"><a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;type)</span></div>
<div class="block">Creates an inference rule which returns a copy of a given data type.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="explicit(org.apache.calcite.sql.type.SqlTypeName)">explicit</a></h3>
<div class="memberSignature"><span class="modifiers">public static</span>&nbsp;<span class="returnType"><a href="ExplicitReturnTypeInference.html" title="class in org.apache.calcite.sql.type">ExplicitReturnTypeInference</a></span>&nbsp;<span class="memberName">explicit</span>&#8203;(<span class="arguments"><a href="SqlTypeName.html" title="enum in org.apache.calcite.sql.type">SqlTypeName</a>&nbsp;typeName)</span></div>
<div class="block">Creates an inference rule which returns a type with no precision or scale,
such as <code>DATE</code>.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="explicit(org.apache.calcite.sql.type.SqlTypeName,int)">explicit</a></h3>
<div class="memberSignature"><span class="modifiers">public static</span>&nbsp;<span class="returnType"><a href="ExplicitReturnTypeInference.html" title="class in org.apache.calcite.sql.type">ExplicitReturnTypeInference</a></span>&nbsp;<span class="memberName">explicit</span>&#8203;(<span class="arguments"><a href="SqlTypeName.html" title="enum in org.apache.calcite.sql.type">SqlTypeName</a>&nbsp;typeName,
int&nbsp;precision)</span></div>
<div class="block">Creates an inference rule which returns a type with precision but no scale,
such as <code>VARCHAR(100)</code>.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="andThen(java.util.function.UnaryOperator,org.apache.calcite.sql.type.SqlReturnTypeInference)">andThen</a></h3>
<div class="memberSignature"><span class="modifiers">public static</span>&nbsp;<span class="returnType"><a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></span>&nbsp;<span class="memberName">andThen</span>&#8203;(<span class="arguments"><a href="https://docs.oracle.com/javase/9/docs/api/java/util/function/UnaryOperator.html?is-external=true" title="class or interface in java.util.function" class="externalLink">UnaryOperator</a>&lt;<a href="../SqlOperatorBinding.html" title="class in org.apache.calcite.sql">SqlOperatorBinding</a>&gt;&nbsp;bindingTransform,
<a href="SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a>&nbsp;typeInference)</span></div>
<div class="block">Returns a return-type inference that first transforms a binding and
then applies an inference.
<p><a href="#stripOrderBy(org.apache.calcite.sql.SqlOperatorBinding)"><code>stripOrderBy(org.apache.calcite.sql.SqlOperatorBinding)</code></a> is an example of <code>bindingTransform</code>.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="stripOrderBy(org.apache.calcite.sql.SqlOperatorBinding)">stripOrderBy</a></h3>
<div class="memberSignature"><span class="modifiers">public static</span>&nbsp;<span class="returnType"><a href="../SqlOperatorBinding.html" title="class in org.apache.calcite.sql">SqlOperatorBinding</a></span>&nbsp;<span class="memberName">stripOrderBy</span>&#8203;(<span class="arguments"><a href="../SqlOperatorBinding.html" title="class in org.apache.calcite.sql">SqlOperatorBinding</a>&nbsp;operatorBinding)</span></div>
<div class="block">Converts a binding of <code>FOO(x, y ORDER BY z)</code>
or <code>FOO(x, y ORDER BY z SEPARATOR s)</code>
to a binding of <code>FOO(x, y)</code>.
Used for <code>STRING_AGG</code> and <code>GROUP_CONCAT</code>.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="stripOrderBy(org.apache.calcite.sql.SqlCall)">stripOrderBy</a></h3>
<div class="memberSignature"><span class="modifiers">public static</span>&nbsp;<span class="returnType"><a href="../SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a></span>&nbsp;<span class="memberName">stripOrderBy</span>&#8203;(<span class="arguments"><a href="../SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a>&nbsp;call)</span></div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="stripSeparator(org.apache.calcite.sql.SqlCall)">stripSeparator</a></h3>
<div class="memberSignature"><span class="modifiers">public static</span>&nbsp;<span class="returnType"><a href="../SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a></span>&nbsp;<span class="memberName">stripSeparator</span>&#8203;(<span class="arguments"><a href="../SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a>&nbsp;call)</span></div>
</section>
</li>
</ul>
</section>
</li>
</ul>
</section>
</div>
<!-- ========= END OF CLASS DATA ========= -->
</main>
<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="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 class="aboutLanguage"><b>Apache Calcite</b></div>
</div>
<div class="subNav">
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&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="subNavList">
<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>
<a id="skip.navbar.bottom">
<!-- -->
</a>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</nav>
<p class="legalCopy"><small>Copyright &copy; 2012-2021 Apache Software Foundation. All Rights Reserved.</small></p>
</footer>
</div>
</div>
</body>
</html>