blob: 1a27a6f5f7686f4a6627f35e7152d6ab8b7bea2f [file] [log] [blame]
<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc -->
<title>SqlTypeUtil (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: SqlTypeUtil">
<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,"i10":9,"i11":9,"i12":9,"i13":9,"i14":9,"i15":9,"i16":9,"i17":9,"i18":9,"i19":9,"i20":9,"i21":9,"i22":9,"i23":9,"i24":9,"i25":9,"i26":9,"i27":9,"i28":9,"i29":9,"i30":9,"i31":9,"i32":41,"i33":41,"i34":9,"i35":41,"i36":9,"i37":9,"i38":9,"i39":9,"i40":9,"i41":9,"i42":9,"i43":9,"i44":9,"i45":9,"i46":9,"i47":9,"i48":9,"i49":9,"i50":9,"i51":9,"i52":9,"i53":9,"i54":9,"i55":9,"i56":9,"i57":9,"i58":9,"i59":9,"i60":9,"i61":9,"i62":9,"i63":41,"i64":9,"i65":9,"i66":9,"i67":9,"i68":9,"i69":9,"i70":9,"i71":9,"i72":9,"i73":9,"i74":9,"i75":9,"i76":9,"i77":9,"i78":9,"i79":9,"i80":9,"i81":9,"i82":9,"i83":9,"i84":9};
var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],8:["t4","Concrete Methods"],32:["t6","Deprecated 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>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&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 SqlTypeUtil" class="title">Class SqlTypeUtil</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.SqlTypeUtil</div>
</div>
<section class="description">
<hr>
<pre>public abstract class <span class="typeNameLabel">SqlTypeUtil</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">Contains utility methods used during SQL validation or type derivation.</div>
</section>
<section class="summary">
<ul class="blockList">
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<li class="blockList">
<section class="constructorSummary"><a id="constructor.summary">
<!-- -->
</a>
<h2>Constructor Summary</h2>
<div class="memberSummary">
<table>
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<thead>
<tr>
<th class="colFirst" scope="col">Constructor</th>
<th class="colLast" scope="col">Description</th>
</tr>
</thead>
<tbody>
<tr class="altColor">
<th class="colConstructorName" scope="row"><code><span class="memberNameLink"><a href="#%3Cinit%3E()">SqlTypeUtil</a></span>()</code></th>
<td class="colLast">&nbsp;</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><button role="tab" aria-selected="false" aria-controls="memberSummary_tabpanel" tabindex="-1" onkeydown="switchTab(event)" id="t6" class="tableTab" onclick="show(32);">Deprecated 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="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#addCharsetAndCollation(org.apache.calcite.rel.type.RelDataType,org.apache.calcite.rel.type.RelDataTypeFactory)">addCharsetAndCollation</a></span>&#8203;(<a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;type,
<a href="../../rel/type/RelDataTypeFactory.html" title="interface in org.apache.calcite.rel.type">RelDataTypeFactory</a>&nbsp;typeFactory)</code></th>
<td class="colLast">
<div class="block">Adds collation and charset to a character type, returns other types
unchanged.</div>
</td>
</tr>
<tr class="rowColor" id="i1">
<td class="colFirst"><code>static boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#allNullable(java.util.List)">allNullable</a></span>&#8203;(<a href="https://docs.oracle.com/javase/9/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util" class="externalLink">List</a>&lt;<a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&gt;&nbsp;types)</code></th>
<td class="colLast">
<div class="block">Returns whether all of array of types are nullable.</div>
</td>
</tr>
<tr class="altColor" id="i2">
<td class="colFirst"><code>static boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#areCharacterSetsMismatched(org.apache.calcite.rel.type.RelDataType,org.apache.calcite.rel.type.RelDataType)">areCharacterSetsMismatched</a></span>&#8203;(<a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;t1,
<a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;t2)</code></th>
<td class="colLast">
<div class="block">Determines whether two types both have different character sets.</div>
</td>
</tr>
<tr class="rowColor" id="i3">
<td class="colFirst"><code>static boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#areSameFamily(java.lang.Iterable)">areSameFamily</a></span>&#8203;(<a href="https://docs.oracle.com/javase/9/docs/api/java/lang/Iterable.html?is-external=true" title="class or interface in java.lang" class="externalLink">Iterable</a>&lt;<a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&gt;&nbsp;types)</code></th>
<td class="colLast">
<div class="block">Returns whether all types in a collection have the same family, as
determined by <code>isSameFamily(RelDataType, RelDataType)</code>.</div>
</td>
</tr>
<tr class="altColor" id="i4">
<td class="colFirst"><code>static boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#canAssignFrom(org.apache.calcite.rel.type.RelDataType,org.apache.calcite.rel.type.RelDataType)">canAssignFrom</a></span>&#8203;(<a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;toType,
<a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;fromType)</code></th>
<td class="colLast">
<div class="block">Tests whether a value can be assigned to a site.</div>
</td>
</tr>
<tr class="rowColor" id="i5">
<td class="colFirst"><code>static boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#canCastFrom(org.apache.calcite.rel.type.RelDataType,org.apache.calcite.rel.type.RelDataType,boolean)">canCastFrom</a></span>&#8203;(<a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;toType,
<a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;fromType,
boolean&nbsp;coerce)</code></th>
<td class="colLast">
<div class="block">Compares two types and returns true if fromType can be cast to toType.</div>
</td>
</tr>
<tr class="altColor" id="i6">
<td class="colFirst"><code>static int</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#comparePrecision(int,int)">comparePrecision</a></span>&#8203;(int&nbsp;p0,
int&nbsp;p1)</code></th>
<td class="colLast">
<div class="block">Returns whether a precision is greater or equal than another,
treating <a href="../../rel/type/RelDataType.html#PRECISION_NOT_SPECIFIED"><code>RelDataType.PRECISION_NOT_SPECIFIED</code></a> as infinity.</div>
</td>
</tr>
<tr class="rowColor" id="i7">
<td class="colFirst"><code>static boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#containsNullable(java.util.List)">containsNullable</a></span>&#8203;(<a href="https://docs.oracle.com/javase/9/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util" class="externalLink">List</a>&lt;<a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&gt;&nbsp;types)</code></th>
<td class="colLast">
<div class="block">Returns whether one or more of an array of types is nullable.</div>
</td>
</tr>
<tr class="altColor" id="i8">
<td class="colFirst"><code>static boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#containsNullable(org.apache.calcite.rel.type.RelDataType)">containsNullable</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">Determines whether a type or any of its fields (if a structured type) are
nullable.</div>
</td>
</tr>
<tr class="rowColor" id="i9">
<td class="colFirst"><code>static <a href="../SqlDataTypeSpec.html" title="class in org.apache.calcite.sql">SqlDataTypeSpec</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#convertTypeToSpec(org.apache.calcite.rel.type.RelDataType)">convertTypeToSpec</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">Converts an instance of RelDataType to an instance of SqlDataTypeSpec.</div>
</td>
</tr>
<tr class="altColor" id="i10">
<td class="colFirst"><code>static <a href="../SqlDataTypeSpec.html" title="class in org.apache.calcite.sql">SqlDataTypeSpec</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#convertTypeToSpec(org.apache.calcite.rel.type.RelDataType,java.lang.String,int)">convertTypeToSpec</a></span>&#8203;(<a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;type,
<a href="https://docs.oracle.com/javase/9/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink">String</a>&nbsp;charSetName,
int&nbsp;maxPrecision)</code></th>
<td class="colLast">
<div class="block">Converts an instance of RelDataType to an instance of SqlDataTypeSpec.</div>
</td>
</tr>
<tr class="rowColor" id="i11">
<td class="colFirst"><code>static <a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#createArrayType(org.apache.calcite.rel.type.RelDataTypeFactory,org.apache.calcite.rel.type.RelDataType,boolean)">createArrayType</a></span>&#8203;(<a href="../../rel/type/RelDataTypeFactory.html" title="interface in org.apache.calcite.rel.type">RelDataTypeFactory</a>&nbsp;typeFactory,
<a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;type,
boolean&nbsp;nullable)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="altColor" id="i12">
<td class="colFirst"><code>static <a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#createEmptyStructType(org.apache.calcite.rel.type.RelDataTypeFactory)">createEmptyStructType</a></span>&#8203;(<a href="../../rel/type/RelDataTypeFactory.html" title="interface in org.apache.calcite.rel.type">RelDataTypeFactory</a>&nbsp;typeFactory)</code></th>
<td class="colLast">
<div class="block">Records a struct type with no fields.</div>
</td>
</tr>
<tr class="rowColor" id="i13">
<td class="colFirst"><code>static <a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#createMapType(org.apache.calcite.rel.type.RelDataTypeFactory,org.apache.calcite.rel.type.RelDataType,org.apache.calcite.rel.type.RelDataType,boolean)">createMapType</a></span>&#8203;(<a href="../../rel/type/RelDataTypeFactory.html" title="interface in org.apache.calcite.rel.type">RelDataTypeFactory</a>&nbsp;typeFactory,
<a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;keyType,
<a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;valueType,
boolean&nbsp;nullable)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="altColor" id="i14">
<td class="colFirst"><code>static <a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#createMultisetType(org.apache.calcite.rel.type.RelDataTypeFactory,org.apache.calcite.rel.type.RelDataType,boolean)">createMultisetType</a></span>&#8203;(<a href="../../rel/type/RelDataTypeFactory.html" title="interface in org.apache.calcite.rel.type">RelDataTypeFactory</a>&nbsp;typeFactory,
<a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;type,
boolean&nbsp;nullable)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="rowColor" id="i15">
<td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/9/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util" class="externalLink">List</a>&lt;<a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&gt;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#deriveAndCollectTypes(org.apache.calcite.sql.validate.SqlValidator,org.apache.calcite.sql.validate.SqlValidatorScope,java.util.List)">deriveAndCollectTypes</a></span>&#8203;(<a href="../validate/SqlValidator.html" title="interface in org.apache.calcite.sql.validate">SqlValidator</a>&nbsp;validator,
<a href="../validate/SqlValidatorScope.html" title="interface in org.apache.calcite.sql.validate">SqlValidatorScope</a>&nbsp;scope,
<a href="https://docs.oracle.com/javase/9/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util" class="externalLink">List</a>&lt;? extends <a href="../SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&gt;&nbsp;operands)</code></th>
<td class="colLast">
<div class="block">Iterates over all operands, derives their types, and collects them into
a list.</div>
</td>
</tr>
<tr class="altColor" id="i16">
<td class="colFirst"><code>static <a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#deriveType(org.apache.calcite.sql.SqlCallBinding)">deriveType</a></span>&#8203;(<a href="../SqlCallBinding.html" title="class in org.apache.calcite.sql">SqlCallBinding</a>&nbsp;binding)</code></th>
<td class="colLast">
<div class="block">Derives type of the call via its binding.</div>
</td>
</tr>
<tr class="rowColor" id="i17">
<td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/9/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util" class="externalLink">List</a>&lt;<a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&gt;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#deriveType(org.apache.calcite.sql.SqlCallBinding,java.util.List)">deriveType</a></span>&#8203;(<a href="../SqlCallBinding.html" title="class in org.apache.calcite.sql">SqlCallBinding</a>&nbsp;binding,
<a href="https://docs.oracle.com/javase/9/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util" class="externalLink">List</a>&lt;? extends <a href="../SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&gt;&nbsp;nodes)</code></th>
<td class="colLast">
<div class="block">Derives types for the list of nodes.</div>
</td>
</tr>
<tr class="altColor" id="i18">
<td class="colFirst"><code>static <a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#deriveType(org.apache.calcite.sql.SqlCallBinding,org.apache.calcite.sql.SqlNode)">deriveType</a></span>&#8203;(<a href="../SqlCallBinding.html" title="class in org.apache.calcite.sql">SqlCallBinding</a>&nbsp;binding,
<a href="../SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;node)</code></th>
<td class="colLast">
<div class="block">Derives type of the given call under given binding.</div>
</td>
</tr>
<tr class="rowColor" id="i19">
<td class="colFirst"><code>static boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#equalAsCollectionSansNullability(org.apache.calcite.rel.type.RelDataTypeFactory,org.apache.calcite.rel.type.RelDataType,org.apache.calcite.rel.type.RelDataType)">equalAsCollectionSansNullability</a></span>&#8203;(<a href="../../rel/type/RelDataTypeFactory.html" title="interface in org.apache.calcite.rel.type">RelDataTypeFactory</a>&nbsp;factory,
<a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;type1,
<a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;type2)</code></th>
<td class="colLast">
<div class="block">Returns whether two collection types are equal, ignoring nullability.</div>
</td>
</tr>
<tr class="altColor" id="i20">
<td class="colFirst"><code>static boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#equalAsMapSansNullability(org.apache.calcite.rel.type.RelDataTypeFactory,org.apache.calcite.rel.type.RelDataType,org.apache.calcite.rel.type.RelDataType)">equalAsMapSansNullability</a></span>&#8203;(<a href="../../rel/type/RelDataTypeFactory.html" title="interface in org.apache.calcite.rel.type">RelDataTypeFactory</a>&nbsp;factory,
<a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;type1,
<a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;type2)</code></th>
<td class="colLast">
<div class="block">Returns whether two map types are equal, ignoring nullability.</div>
</td>
</tr>
<tr class="rowColor" id="i21">
<td class="colFirst"><code>static boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#equalAsStructSansNullability(org.apache.calcite.rel.type.RelDataTypeFactory,org.apache.calcite.rel.type.RelDataType,org.apache.calcite.rel.type.RelDataType,org.apache.calcite.sql.validate.SqlNameMatcher)">equalAsStructSansNullability</a></span>&#8203;(<a href="../../rel/type/RelDataTypeFactory.html" title="interface in org.apache.calcite.rel.type">RelDataTypeFactory</a>&nbsp;factory,
<a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;type1,
<a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;type2,
<a href="../validate/SqlNameMatcher.html" title="interface in org.apache.calcite.sql.validate">SqlNameMatcher</a>&nbsp;nameMatcher)</code></th>
<td class="colLast">
<div class="block">Returns whether two struct types are equal, ignoring nullability.</div>
</td>
</tr>
<tr class="altColor" id="i22">
<td class="colFirst"><code>static boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#equalSansNullability(org.apache.calcite.rel.type.RelDataTypeFactory,org.apache.calcite.rel.type.RelDataType,org.apache.calcite.rel.type.RelDataType)">equalSansNullability</a></span>&#8203;(<a href="../../rel/type/RelDataTypeFactory.html" title="interface in org.apache.calcite.rel.type">RelDataTypeFactory</a>&nbsp;factory,
<a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;type1,
<a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;type2)</code></th>
<td class="colLast">
<div class="block">Returns whether two types are equal, ignoring nullability.</div>
</td>
</tr>
<tr class="rowColor" id="i23">
<td class="colFirst"><code>static boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#equalSansNullability(org.apache.calcite.rel.type.RelDataType,org.apache.calcite.rel.type.RelDataType)">equalSansNullability</a></span>&#8203;(<a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;type1,
<a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;type2)</code></th>
<td class="colLast">
<div class="block">This is a poorman's
<a href="#equalSansNullability(org.apache.calcite.rel.type.RelDataTypeFactory,org.apache.calcite.rel.type.RelDataType,org.apache.calcite.rel.type.RelDataType)"><code>equalSansNullability(RelDataTypeFactory, RelDataType, RelDataType)</code></a>.</div>
</td>
</tr>
<tr class="altColor" id="i24">
<td class="colFirst"><code>static <a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#extractLastNFields(org.apache.calcite.rel.type.RelDataTypeFactory,org.apache.calcite.rel.type.RelDataType,int)">extractLastNFields</a></span>&#8203;(<a href="../../rel/type/RelDataTypeFactory.html" title="interface in org.apache.calcite.rel.type">RelDataTypeFactory</a>&nbsp;typeFactory,
<a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;type,
int&nbsp;numToKeep)</code></th>
<td class="colLast">
<div class="block">Keeps only the last N fields and returns the new struct type.</div>
</td>
</tr>
<tr class="rowColor" id="i25">
<td class="colFirst"><code>protected static <a href="../../rel/type/RelDataTypeFamily.html" title="interface in org.apache.calcite.rel.type">RelDataTypeFamily</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#family(org.apache.calcite.rel.type.RelDataType)">family</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">&nbsp;</td>
</tr>
<tr class="altColor" id="i26">
<td class="colFirst"><code>static int</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#findField(org.apache.calcite.rel.type.RelDataType,java.lang.String)">findField</a></span>&#8203;(<a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;type,
<a href="https://docs.oracle.com/javase/9/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink">String</a>&nbsp;fieldName)</code></th>
<td class="colLast">
<div class="block">Returns the ordinal of a given field in a record type, or -1 if the field
is not found.</div>
</td>
</tr>
<tr class="rowColor" id="i27">
<td class="colFirst"><code>static <a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#flattenRecordType(org.apache.calcite.rel.type.RelDataTypeFactory,org.apache.calcite.rel.type.RelDataType,int%5B%5D)">flattenRecordType</a></span>&#8203;(<a href="../../rel/type/RelDataTypeFactory.html" title="interface in org.apache.calcite.rel.type">RelDataTypeFactory</a>&nbsp;typeFactory,
<a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;recordType,
int[]&nbsp;flatteningMap)</code></th>
<td class="colLast">
<div class="block">Flattens a record type by recursively expanding any fields which are
themselves record types.</div>
</td>
</tr>
<tr class="altColor" id="i28">
<td class="colFirst"><code>static int</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getMaxByteSize(org.apache.calcite.rel.type.RelDataType)">getMaxByteSize</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">Computes the maximum number of bytes required to represent a value of a
type having user-defined precision.</div>
</td>
</tr>
<tr class="rowColor" id="i29">
<td class="colFirst"><code>static <a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getMaxPrecisionScaleDecimal(org.apache.calcite.rel.type.RelDataTypeFactory)">getMaxPrecisionScaleDecimal</a></span>&#8203;(<a href="../../rel/type/RelDataTypeFactory.html" title="interface in org.apache.calcite.rel.type">RelDataTypeFactory</a>&nbsp;factory)</code></th>
<td class="colLast">
<div class="block">Returns a DECIMAL type with the maximum precision/scale for the current
type system.</div>
</td>
</tr>
<tr class="altColor" id="i30">
<td class="colFirst"><code>static long</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getMaxValue(org.apache.calcite.rel.type.RelDataType)">getMaxValue</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">Returns the maximum unscaled value of a numeric type.</div>
</td>
</tr>
<tr class="rowColor" id="i31">
<td class="colFirst"><code>static long</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getMinValue(org.apache.calcite.rel.type.RelDataType)">getMinValue</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">Returns the minimum unscaled value of a numeric type.</div>
</td>
</tr>
<tr class="altColor" id="i32">
<td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/9/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink">String</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getNumericJavaClassName(org.apache.calcite.rel.type.RelDataType)">getNumericJavaClassName</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"><span class="deprecatedLabel">Deprecated.</span></div>
</td>
</tr>
<tr class="rowColor" id="i33">
<td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/9/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink">String</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getPrimitiveWrapperJavaClassName(org.apache.calcite.rel.type.RelDataType)">getPrimitiveWrapperJavaClassName</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"><span class="deprecatedLabel">Deprecated.</span></div>
</td>
</tr>
<tr class="altColor" id="i34">
<td class="colFirst"><code>static boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#hasCharacter(org.apache.calcite.rel.type.RelDataType)">hasCharacter</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">Returns whether a type is a CHARACTER or contains a CHARACTER type.</div>
</td>
</tr>
<tr class="rowColor" id="i35">
<td class="colFirst"><code>static boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#hasCharactor(org.apache.calcite.rel.type.RelDataType)">hasCharactor</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"><span class="deprecatedLabel">Deprecated.</span>
<div class="deprecationComment">Use <a href="#hasCharacter(org.apache.calcite.rel.type.RelDataType)"><code>hasCharacter(RelDataType)</code></a></div>
</div>
</td>
</tr>
<tr class="altColor" id="i36">
<td class="colFirst"><code>static boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#hasScale(org.apache.calcite.rel.type.RelDataType)">hasScale</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">Returns whether a type's scale is set.</div>
</td>
</tr>
<tr class="rowColor" id="i37">
<td class="colFirst"><code>static boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#inBooleanFamily(org.apache.calcite.rel.type.RelDataType)">inBooleanFamily</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">Returns whether a type is in SqlTypeFamily.Boolean.</div>
</td>
</tr>
<tr class="altColor" id="i38">
<td class="colFirst"><code>static boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#inCharFamily(org.apache.calcite.rel.type.RelDataType)">inCharFamily</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">Returns whether a type is in SqlTypeFamily.Character.</div>
</td>
</tr>
<tr class="rowColor" id="i39">
<td class="colFirst"><code>static boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#inCharFamily(org.apache.calcite.sql.type.SqlTypeName)">inCharFamily</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">Returns whether a type name is in SqlTypeFamily.Character.</div>
</td>
</tr>
<tr class="altColor" id="i40">
<td class="colFirst"><code>static boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#inCharOrBinaryFamilies(org.apache.calcite.rel.type.RelDataType)">inCharOrBinaryFamilies</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">Returns whether a type family is either character or binary.</div>
</td>
</tr>
<tr class="rowColor" id="i41">
<td class="colFirst"><code>static boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#inSameFamily(org.apache.calcite.rel.type.RelDataType,org.apache.calcite.rel.type.RelDataType)">inSameFamily</a></span>&#8203;(<a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;t1,
<a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;t2)</code></th>
<td class="colLast">
<div class="block">Returns whether two types are in same type family.</div>
</td>
</tr>
<tr class="altColor" id="i42">
<td class="colFirst"><code>static boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#inSameFamilyOrNull(org.apache.calcite.rel.type.RelDataType,org.apache.calcite.rel.type.RelDataType)">inSameFamilyOrNull</a></span>&#8203;(<a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;t1,
<a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;t2)</code></th>
<td class="colLast">
<div class="block">Returns whether two types are in same type family, or one or the other is
of type <a href="SqlTypeName.html#NULL"><code>SqlTypeName.NULL</code></a>.</div>
</td>
</tr>
<tr class="rowColor" id="i43">
<td class="colFirst"><code>static boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isApproximateNumeric(org.apache.calcite.rel.type.RelDataType)">isApproximateNumeric</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">Returns whether a type is numeric with approximate precision.</div>
</td>
</tr>
<tr class="altColor" id="i44">
<td class="colFirst"><code>static boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isArray(org.apache.calcite.rel.type.RelDataType)">isArray</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">Returns whether a type is ARRAY.</div>
</td>
</tr>
<tr class="rowColor" id="i45">
<td class="colFirst"><code>static boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isAtomic(org.apache.calcite.rel.type.RelDataType)">isAtomic</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">Returns whether a type is atomic (datetime, numeric, string or
BOOLEAN).</div>
</td>
</tr>
<tr class="altColor" id="i46">
<td class="colFirst"><code>static boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isBigint(org.apache.calcite.rel.type.RelDataType)">isBigint</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">Returns whether a type is BIGINT.</div>
</td>
</tr>
<tr class="rowColor" id="i47">
<td class="colFirst"><code>static boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isBinary(org.apache.calcite.rel.type.RelDataType)">isBinary</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">Returns whether a type is BINARY.</div>
</td>
</tr>
<tr class="altColor" id="i48">
<td class="colFirst"><code>static boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isBoolean(org.apache.calcite.rel.type.RelDataType)">isBoolean</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">Returns whether a type is BOOLEAN.</div>
</td>
</tr>
<tr class="rowColor" id="i49">
<td class="colFirst"><code>static boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isBoundedVariableWidth(org.apache.calcite.rel.type.RelDataType)">isBoundedVariableWidth</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">Returns whether a type is variable width with bounded precision.</div>
</td>
</tr>
<tr class="altColor" id="i50">
<td class="colFirst"><code>static boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isCharacter(org.apache.calcite.rel.type.RelDataType)">isCharacter</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">Returns whether a type is CHARACTER.</div>
</td>
</tr>
<tr class="rowColor" id="i51">
<td class="colFirst"><code>static boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isCharTypeComparable(java.util.List)">isCharTypeComparable</a></span>&#8203;(<a href="https://docs.oracle.com/javase/9/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util" class="externalLink">List</a>&lt;<a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&gt;&nbsp;argTypes)</code></th>
<td class="colLast">
<div class="block">Checks whether two types or more are char comparable.</div>
</td>
</tr>
<tr class="altColor" id="i52">
<td class="colFirst"><code>static boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isCharTypeComparable(org.apache.calcite.sql.SqlCallBinding,java.util.List,boolean)">isCharTypeComparable</a></span>&#8203;(<a href="../SqlCallBinding.html" title="class in org.apache.calcite.sql">SqlCallBinding</a>&nbsp;binding,
<a href="https://docs.oracle.com/javase/9/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util" class="externalLink">List</a>&lt;<a href="../SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&gt;&nbsp;operands,
boolean&nbsp;throwOnFailure)</code></th>
<td class="colLast">
<div class="block">Returns whether the operands to a call are char type-comparable.</div>
</td>
</tr>
<tr class="rowColor" id="i53">
<td class="colFirst"><code>static boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isCollection(org.apache.calcite.rel.type.RelDataType)">isCollection</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">Returns whether a type is ARRAY or MULTISET.</div>
</td>
</tr>
<tr class="altColor" id="i54">
<td class="colFirst"><code>static boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isComparable(org.apache.calcite.rel.type.RelDataType,org.apache.calcite.rel.type.RelDataType)">isComparable</a></span>&#8203;(<a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;type1,
<a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;type2)</code></th>
<td class="colLast">
<div class="block">Returns whether two types are comparable.</div>
</td>
</tr>
<tr class="rowColor" id="i55">
<td class="colFirst"><code>static boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isDate(org.apache.calcite.rel.type.RelDataType)">isDate</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">Returns whether a type is DATE.</div>
</td>
</tr>
<tr class="altColor" id="i56">
<td class="colFirst"><code>static boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isDatetime(org.apache.calcite.rel.type.RelDataType)">isDatetime</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">Returns whether a type is DATE, TIME, or TIMESTAMP.</div>
</td>
</tr>
<tr class="rowColor" id="i57">
<td class="colFirst"><code>static boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isDecimal(org.apache.calcite.rel.type.RelDataType)">isDecimal</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">Returns whether a type is DECIMAL.</div>
</td>
</tr>
<tr class="altColor" id="i58">
<td class="colFirst"><code>static boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isDouble(org.apache.calcite.rel.type.RelDataType)">isDouble</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">Returns whether a type is DOUBLE.</div>
</td>
</tr>
<tr class="rowColor" id="i59">
<td class="colFirst"><code>static boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isExactNumeric(org.apache.calcite.rel.type.RelDataType)">isExactNumeric</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">Returns whether a type is numeric with exact precision.</div>
</td>
</tr>
<tr class="altColor" id="i60">
<td class="colFirst"><code>static boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isFlat(org.apache.calcite.rel.type.RelDataType)">isFlat</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">Returns whether a type is flat.</div>
</td>
</tr>
<tr class="rowColor" id="i61">
<td class="colFirst"><code>static boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isInterval(org.apache.calcite.rel.type.RelDataType)">isInterval</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">Returns whether a type is some kind of INTERVAL.</div>
</td>
</tr>
<tr class="altColor" id="i62">
<td class="colFirst"><code>static boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isIntType(org.apache.calcite.rel.type.RelDataType)">isIntType</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">Returns whether a type is one of the integer types.</div>
</td>
</tr>
<tr class="rowColor" id="i63">
<td class="colFirst"><code>static boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isJavaPrimitive(org.apache.calcite.rel.type.RelDataType)">isJavaPrimitive</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"><span class="deprecatedLabel">Deprecated.</span></div>
</td>
</tr>
<tr class="altColor" id="i64">
<td class="colFirst"><code>static boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isLob(org.apache.calcite.rel.type.RelDataType)">isLob</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">Returns whether a type is a LOB of some kind.</div>
</td>
</tr>
<tr class="rowColor" id="i65">
<td class="colFirst"><code>static boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isMap(org.apache.calcite.rel.type.RelDataType)">isMap</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">Returns whether a type is MAP.</div>
</td>
</tr>
<tr class="altColor" id="i66">
<td class="colFirst"><code>static boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isMultiset(org.apache.calcite.rel.type.RelDataType)">isMultiset</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">Returns whether a type is MULTISET.</div>
</td>
</tr>
<tr class="rowColor" id="i67">
<td class="colFirst"><code>static boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isNull(org.apache.calcite.rel.type.RelDataType)">isNull</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">Returns whether a type is the NULL type.</div>
</td>
</tr>
<tr class="altColor" id="i68">
<td class="colFirst"><code>static boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isNumeric(org.apache.calcite.rel.type.RelDataType)">isNumeric</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">Returns whether a type is numeric.</div>
</td>
</tr>
<tr class="rowColor" id="i69">
<td class="colFirst"><code>static boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isOfSameTypeName(java.util.Collection,org.apache.calcite.rel.type.RelDataType)">isOfSameTypeName</a></span>&#8203;(<a href="https://docs.oracle.com/javase/9/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util" class="externalLink">Collection</a>&lt;<a href="SqlTypeName.html" title="enum in org.apache.calcite.sql.type">SqlTypeName</a>&gt;&nbsp;typeNames,
<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">Returns true if any element in <code>typeNames</code> matches
type.getSqlTypeName().</div>
</td>
</tr>
<tr class="altColor" id="i70">
<td class="colFirst"><code>static boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isOfSameTypeName(org.apache.calcite.sql.type.SqlTypeName,org.apache.calcite.rel.type.RelDataType)">isOfSameTypeName</a></span>&#8203;(<a href="SqlTypeName.html" title="enum in org.apache.calcite.sql.type">SqlTypeName</a>&nbsp;typeName,
<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">Returns typeName.equals(type.getSqlTypeName()).</div>
</td>
</tr>
<tr class="rowColor" id="i71">
<td class="colFirst"><code>static boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isRow(org.apache.calcite.rel.type.RelDataType)">isRow</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">Returns whether a type is ROW.</div>
</td>
</tr>
<tr class="altColor" id="i72">
<td class="colFirst"><code>static boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isString(org.apache.calcite.rel.type.RelDataType)">isString</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">Returns whether a type is STRING.</div>
</td>
</tr>
<tr class="rowColor" id="i73">
<td class="colFirst"><code>static boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isTimestamp(org.apache.calcite.rel.type.RelDataType)">isTimestamp</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">Returns whether a type is TIMESTAMP.</div>
</td>
</tr>
<tr class="altColor" id="i74">
<td class="colFirst"><code>static boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isUnicode(org.apache.calcite.rel.type.RelDataType)">isUnicode</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">Checks whether a type represents Unicode character data.</div>
</td>
</tr>
<tr class="rowColor" id="i75">
<td class="colFirst"><code>static boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isValidDecimalValue(java.math.BigDecimal,org.apache.calcite.rel.type.RelDataType)">isValidDecimalValue</a></span>&#8203;(<a href="https://docs.oracle.com/javase/9/docs/api/java/math/BigDecimal.html?is-external=true" title="class or interface in java.math" class="externalLink">BigDecimal</a>&nbsp;value,
<a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;toType)</code></th>
<td class="colLast">
<div class="block">Returns whether the decimal value is valid for the type.</div>
</td>
</tr>
<tr class="altColor" id="i76">
<td class="colFirst"><code>static <a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#leastRestrictiveForComparison(org.apache.calcite.rel.type.RelDataTypeFactory,org.apache.calcite.rel.type.RelDataType,org.apache.calcite.rel.type.RelDataType)">leastRestrictiveForComparison</a></span>&#8203;(<a href="../../rel/type/RelDataTypeFactory.html" title="interface in org.apache.calcite.rel.type">RelDataTypeFactory</a>&nbsp;typeFactory,
<a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;type1,
<a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;type2)</code></th>
<td class="colLast">
<div class="block">Returns the least restrictive type T, such that a value of type T can be
compared with values of type <code>type0</code> and <code>type1</code> using
<code>=</code>.</div>
</td>
</tr>
<tr class="rowColor" id="i77">
<td class="colFirst"><code>static <a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#makeNullableIfOperandsAre(org.apache.calcite.rel.type.RelDataTypeFactory,java.util.List,org.apache.calcite.rel.type.RelDataType)">makeNullableIfOperandsAre</a></span>&#8203;(<a href="../../rel/type/RelDataTypeFactory.html" title="interface in org.apache.calcite.rel.type">RelDataTypeFactory</a>&nbsp;typeFactory,
<a href="https://docs.oracle.com/javase/9/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util" class="externalLink">List</a>&lt;<a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&gt;&nbsp;argTypes,
<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">Recreates a given RelDataType with nullability iff any of the param
argTypes are nullable.</div>
</td>
</tr>
<tr class="altColor" id="i78">
<td class="colFirst"><code>static <a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#makeNullableIfOperandsAre(org.apache.calcite.sql.validate.SqlValidator,org.apache.calcite.sql.validate.SqlValidatorScope,org.apache.calcite.sql.SqlCall,org.apache.calcite.rel.type.RelDataType)">makeNullableIfOperandsAre</a></span>&#8203;(<a href="../validate/SqlValidator.html" title="interface in org.apache.calcite.sql.validate">SqlValidator</a>&nbsp;validator,
<a href="../validate/SqlValidatorScope.html" title="interface in org.apache.calcite.sql.validate">SqlValidatorScope</a>&nbsp;scope,
<a href="../SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a>&nbsp;call,
<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">Recreates a given RelDataType with nullability iff any of the operands
of a call are nullable.</div>
</td>
</tr>
<tr class="rowColor" id="i79">
<td class="colFirst"><code>static int</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#maxPrecision(int,int)">maxPrecision</a></span>&#8203;(int&nbsp;p0,
int&nbsp;p1)</code></th>
<td class="colLast">
<div class="block">Returns the larger of two precisions, treating
<a href="../../rel/type/RelDataType.html#PRECISION_NOT_SPECIFIED"><code>RelDataType.PRECISION_NOT_SPECIFIED</code></a> as infinity.</div>
</td>
</tr>
<tr class="altColor" id="i80">
<td class="colFirst"><code>static long</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#maxValue(org.apache.calcite.rel.type.RelDataType)">maxValue</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">Returns the maximum value of an integral type, as a long value.</div>
</td>
</tr>
<tr class="rowColor" id="i81">
<td class="colFirst"><code>static boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#needsNullIndicator(org.apache.calcite.rel.type.RelDataType)">needsNullIndicator</a></span>&#8203;(<a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;recordType)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="altColor" id="i82">
<td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/9/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util" class="externalLink">List</a>&lt;<a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&gt;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#projectTypes(org.apache.calcite.rel.type.RelDataType,java.util.List)">projectTypes</a></span>&#8203;(<a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;rowType,
<a href="https://docs.oracle.com/javase/9/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util" class="externalLink">List</a>&lt;? extends <a href="https://docs.oracle.com/javase/9/docs/api/java/lang/Number.html?is-external=true" title="class or interface in java.lang" class="externalLink">Number</a>&gt;&nbsp;requiredFields)</code></th>
<td class="colLast">
<div class="block">Selects data types of the specified fields from an input row type.</div>
</td>
</tr>
<tr class="rowColor" id="i83">
<td class="colFirst"><code>static <a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#promoteToRowType(org.apache.calcite.rel.type.RelDataTypeFactory,org.apache.calcite.rel.type.RelDataType,java.lang.String)">promoteToRowType</a></span>&#8203;(<a href="../../rel/type/RelDataTypeFactory.html" title="interface in org.apache.calcite.rel.type">RelDataTypeFactory</a>&nbsp;typeFactory,
<a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;type,
<a href="https://docs.oracle.com/javase/9/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink">String</a>&nbsp;fieldName)</code></th>
<td class="colLast">
<div class="block">Promotes a type to a row type (does nothing if it already is one).</div>
</td>
</tr>
<tr class="altColor" id="i84">
<td class="colFirst"><code>static boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#sameNamedType(org.apache.calcite.rel.type.RelDataType,org.apache.calcite.rel.type.RelDataType)">sameNamedType</a></span>&#8203;(<a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;t1,
<a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;t2)</code></th>
<td class="colLast">
<div class="block">Tests whether two types have the same name and structure, possibly with
differing modifiers.</div>
</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">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<li class="blockList">
<section class="constructorDetails"><a id="constructor.detail">
<!-- -->
</a>
<h2>Constructor Details</h2>
<ul class="blockList">
<li class="blockList">
<section class="detail">
<h3><a id="&lt;init&gt;()">SqlTypeUtil</a></h3>
<div class="memberSignature"><span class="modifiers">public</span>&nbsp;<span class="memberName">SqlTypeUtil</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="isCharTypeComparable(java.util.List)">isCharTypeComparable</a></h3>
<div class="memberSignature"><span class="modifiers">public static</span>&nbsp;<span class="returnType">boolean</span>&nbsp;<span class="memberName">isCharTypeComparable</span>&#8203;(<span class="arguments"><a href="https://docs.oracle.com/javase/9/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util" class="externalLink">List</a>&lt;<a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&gt;&nbsp;argTypes)</span></div>
<div class="block">Checks whether two types or more are char comparable.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Returns true if all operands are of char type and if they are
comparable, i.e. of the same charset and collation of same charset</dd>
</dl>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="isCharTypeComparable(org.apache.calcite.sql.SqlCallBinding,java.util.List,boolean)">isCharTypeComparable</a></h3>
<div class="memberSignature"><span class="modifiers">public static</span>&nbsp;<span class="returnType">boolean</span>&nbsp;<span class="memberName">isCharTypeComparable</span>&#8203;(<span class="arguments"><a href="../SqlCallBinding.html" title="class in org.apache.calcite.sql">SqlCallBinding</a>&nbsp;binding,
<a href="https://docs.oracle.com/javase/9/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util" class="externalLink">List</a>&lt;<a href="../SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&gt;&nbsp;operands,
boolean&nbsp;throwOnFailure)</span></div>
<div class="block">Returns whether the operands to a call are char type-comparable.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>binding</code> - Binding of call to operands</dd>
<dd><code>operands</code> - Operands to check for compatibility; usually the
operands of the bound call, but not always</dd>
<dd><code>throwOnFailure</code> - Whether to throw an exception on failure</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>whether operands are valid</dd>
</dl>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="deriveAndCollectTypes(org.apache.calcite.sql.validate.SqlValidator,org.apache.calcite.sql.validate.SqlValidatorScope,java.util.List)">deriveAndCollectTypes</a></h3>
<div class="memberSignature"><span class="modifiers">public static</span>&nbsp;<span class="returnType"><a href="https://docs.oracle.com/javase/9/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util" class="externalLink">List</a>&lt;<a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&gt;</span>&nbsp;<span class="memberName">deriveAndCollectTypes</span>&#8203;(<span class="arguments"><a href="../validate/SqlValidator.html" title="interface in org.apache.calcite.sql.validate">SqlValidator</a>&nbsp;validator,
<a href="../validate/SqlValidatorScope.html" title="interface in org.apache.calcite.sql.validate">SqlValidatorScope</a>&nbsp;scope,
<a href="https://docs.oracle.com/javase/9/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util" class="externalLink">List</a>&lt;? extends <a href="../SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&gt;&nbsp;operands)</span></div>
<div class="block">Iterates over all operands, derives their types, and collects them into
a list.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="deriveType(org.apache.calcite.sql.SqlCallBinding)">deriveType</a></h3>
<div class="memberSignature"><span class="annotations">@API(since="1.26",
status=EXPERIMENTAL)
</span><span class="modifiers">public static</span>&nbsp;<span class="returnType"><a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></span>&nbsp;<span class="memberName">deriveType</span>&#8203;(<span class="arguments"><a href="../SqlCallBinding.html" title="class in org.apache.calcite.sql">SqlCallBinding</a>&nbsp;binding)</span></div>
<div class="block">Derives type of the call via its binding.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>binding</code> - binding to derive the type from</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>datatype of the call</dd>
</dl>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="deriveType(org.apache.calcite.sql.SqlCallBinding,org.apache.calcite.sql.SqlNode)">deriveType</a></h3>
<div class="memberSignature"><span class="annotations">@API(since="1.26",
status=EXPERIMENTAL)
</span><span class="modifiers">public static</span>&nbsp;<span class="returnType"><a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></span>&nbsp;<span class="memberName">deriveType</span>&#8203;(<span class="arguments"><a href="../SqlCallBinding.html" title="class in org.apache.calcite.sql">SqlCallBinding</a>&nbsp;binding,
<a href="../SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;node)</span></div>
<div class="block">Derives type of the given call under given binding.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>binding</code> - binding to derive the type from</dd>
<dd><code>node</code> - node type to derive</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>datatype of the given node</dd>
</dl>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="deriveType(org.apache.calcite.sql.SqlCallBinding,java.util.List)">deriveType</a></h3>
<div class="memberSignature"><span class="annotations">@API(since="1.26",
status=EXPERIMENTAL)
</span><span class="modifiers">public static</span>&nbsp;<span class="returnType"><a href="https://docs.oracle.com/javase/9/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util" class="externalLink">List</a>&lt;<a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&gt;</span>&nbsp;<span class="memberName">deriveType</span>&#8203;(<span class="arguments"><a href="../SqlCallBinding.html" title="class in org.apache.calcite.sql">SqlCallBinding</a>&nbsp;binding,
<a href="https://docs.oracle.com/javase/9/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util" class="externalLink">List</a>&lt;? extends <a href="../SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&gt;&nbsp;nodes)</span></div>
<div class="block">Derives types for the list of nodes.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>binding</code> - binding to derive the type from</dd>
<dd><code>nodes</code> - the list of nodes to derive types from</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the list of types of the given nodes</dd>
</dl>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="promoteToRowType(org.apache.calcite.rel.type.RelDataTypeFactory,org.apache.calcite.rel.type.RelDataType,java.lang.String)">promoteToRowType</a></h3>
<div class="memberSignature"><span class="modifiers">public static</span>&nbsp;<span class="returnType"><a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></span>&nbsp;<span class="memberName">promoteToRowType</span>&#8203;(<span class="arguments"><a href="../../rel/type/RelDataTypeFactory.html" title="interface in org.apache.calcite.rel.type">RelDataTypeFactory</a>&nbsp;typeFactory,
<a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;type,
<a href="https://docs.oracle.com/javase/9/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink">String</a>&nbsp;fieldName)</span></div>
<div class="block">Promotes a type to a row type (does nothing if it already is one).</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>type</code> - type to be promoted</dd>
<dd><code>fieldName</code> - name to give field in row type; null for default of
"ROW_VALUE"</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>row type</dd>
</dl>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="makeNullableIfOperandsAre(org.apache.calcite.sql.validate.SqlValidator,org.apache.calcite.sql.validate.SqlValidatorScope,org.apache.calcite.sql.SqlCall,org.apache.calcite.rel.type.RelDataType)">makeNullableIfOperandsAre</a></h3>
<div class="memberSignature"><span class="modifiers">public static</span>&nbsp;<span class="returnType"><a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></span>&nbsp;<span class="memberName">makeNullableIfOperandsAre</span>&#8203;(<span class="arguments"><a href="../validate/SqlValidator.html" title="interface in org.apache.calcite.sql.validate">SqlValidator</a>&nbsp;validator,
<a href="../validate/SqlValidatorScope.html" title="interface in org.apache.calcite.sql.validate">SqlValidatorScope</a>&nbsp;scope,
<a href="../SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a>&nbsp;call,
<a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;type)</span></div>
<div class="block">Recreates a given RelDataType with nullability iff any of the operands
of a call are nullable.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="makeNullableIfOperandsAre(org.apache.calcite.rel.type.RelDataTypeFactory,java.util.List,org.apache.calcite.rel.type.RelDataType)">makeNullableIfOperandsAre</a></h3>
<div class="memberSignature"><span class="modifiers">public static</span>&nbsp;<span class="returnType"><a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></span>&nbsp;<span class="memberName">makeNullableIfOperandsAre</span>&#8203;(<span class="arguments"><a href="../../rel/type/RelDataTypeFactory.html" title="interface in org.apache.calcite.rel.type">RelDataTypeFactory</a>&nbsp;typeFactory,
<a href="https://docs.oracle.com/javase/9/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util" class="externalLink">List</a>&lt;<a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&gt;&nbsp;argTypes,
<a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;type)</span></div>
<div class="block">Recreates a given RelDataType with nullability iff any of the param
argTypes are nullable.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="allNullable(java.util.List)">allNullable</a></h3>
<div class="memberSignature"><span class="modifiers">public static</span>&nbsp;<span class="returnType">boolean</span>&nbsp;<span class="memberName">allNullable</span>&#8203;(<span class="arguments"><a href="https://docs.oracle.com/javase/9/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util" class="externalLink">List</a>&lt;<a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&gt;&nbsp;types)</span></div>
<div class="block">Returns whether all of array of types are nullable.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="containsNullable(java.util.List)">containsNullable</a></h3>
<div class="memberSignature"><span class="modifiers">public static</span>&nbsp;<span class="returnType">boolean</span>&nbsp;<span class="memberName">containsNullable</span>&#8203;(<span class="arguments"><a href="https://docs.oracle.com/javase/9/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util" class="externalLink">List</a>&lt;<a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&gt;&nbsp;types)</span></div>
<div class="block">Returns whether one or more of an array of types is nullable.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="containsNullable(org.apache.calcite.rel.type.RelDataType)">containsNullable</a></h3>
<div class="memberSignature"><span class="modifiers">public static</span>&nbsp;<span class="returnType">boolean</span>&nbsp;<span class="memberName">containsNullable</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">Determines whether a type or any of its fields (if a structured type) are
nullable.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="isOfSameTypeName(org.apache.calcite.sql.type.SqlTypeName,org.apache.calcite.rel.type.RelDataType)">isOfSameTypeName</a></h3>
<div class="memberSignature"><span class="modifiers">public static</span>&nbsp;<span class="returnType">boolean</span>&nbsp;<span class="memberName">isOfSameTypeName</span>&#8203;(<span class="arguments"><a href="SqlTypeName.html" title="enum in org.apache.calcite.sql.type">SqlTypeName</a>&nbsp;typeName,
<a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;type)</span></div>
<div class="block">Returns typeName.equals(type.getSqlTypeName()). If
typeName.equals(SqlTypeName.Any) true is always returned.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="isOfSameTypeName(java.util.Collection,org.apache.calcite.rel.type.RelDataType)">isOfSameTypeName</a></h3>
<div class="memberSignature"><span class="modifiers">public static</span>&nbsp;<span class="returnType">boolean</span>&nbsp;<span class="memberName">isOfSameTypeName</span>&#8203;(<span class="arguments"><a href="https://docs.oracle.com/javase/9/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util" class="externalLink">Collection</a>&lt;<a href="SqlTypeName.html" title="enum in org.apache.calcite.sql.type">SqlTypeName</a>&gt;&nbsp;typeNames,
<a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;type)</span></div>
<div class="block">Returns true if any element in <code>typeNames</code> matches
type.getSqlTypeName().</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="#isOfSameTypeName(org.apache.calcite.sql.type.SqlTypeName,org.apache.calcite.rel.type.RelDataType)"><code>isOfSameTypeName(SqlTypeName, RelDataType)</code></a></dd>
</dl>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="isDatetime(org.apache.calcite.rel.type.RelDataType)">isDatetime</a></h3>
<div class="memberSignature"><span class="modifiers">public static</span>&nbsp;<span class="returnType">boolean</span>&nbsp;<span class="memberName">isDatetime</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">Returns whether a type is DATE, TIME, or TIMESTAMP.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="isDate(org.apache.calcite.rel.type.RelDataType)">isDate</a></h3>
<div class="memberSignature"><span class="modifiers">public static</span>&nbsp;<span class="returnType">boolean</span>&nbsp;<span class="memberName">isDate</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">Returns whether a type is DATE.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="isTimestamp(org.apache.calcite.rel.type.RelDataType)">isTimestamp</a></h3>
<div class="memberSignature"><span class="modifiers">public static</span>&nbsp;<span class="returnType">boolean</span>&nbsp;<span class="memberName">isTimestamp</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">Returns whether a type is TIMESTAMP.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="isInterval(org.apache.calcite.rel.type.RelDataType)">isInterval</a></h3>
<div class="memberSignature"><span class="modifiers">public static</span>&nbsp;<span class="returnType">boolean</span>&nbsp;<span class="memberName">isInterval</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">Returns whether a type is some kind of INTERVAL.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="inCharFamily(org.apache.calcite.rel.type.RelDataType)">inCharFamily</a></h3>
<div class="memberSignature"><span class="modifiers">public static</span>&nbsp;<span class="returnType">boolean</span>&nbsp;<span class="memberName">inCharFamily</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">Returns whether a type is in SqlTypeFamily.Character.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="inCharFamily(org.apache.calcite.sql.type.SqlTypeName)">inCharFamily</a></h3>
<div class="memberSignature"><span class="modifiers">public static</span>&nbsp;<span class="returnType">boolean</span>&nbsp;<span class="memberName">inCharFamily</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">Returns whether a type name is in SqlTypeFamily.Character.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="inBooleanFamily(org.apache.calcite.rel.type.RelDataType)">inBooleanFamily</a></h3>
<div class="memberSignature"><span class="modifiers">public static</span>&nbsp;<span class="returnType">boolean</span>&nbsp;<span class="memberName">inBooleanFamily</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">Returns whether a type is in SqlTypeFamily.Boolean.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="inSameFamily(org.apache.calcite.rel.type.RelDataType,org.apache.calcite.rel.type.RelDataType)">inSameFamily</a></h3>
<div class="memberSignature"><span class="modifiers">public static</span>&nbsp;<span class="returnType">boolean</span>&nbsp;<span class="memberName">inSameFamily</span>&#8203;(<span class="arguments"><a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;t1,
<a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;t2)</span></div>
<div class="block">Returns whether two types are in same type family.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="inSameFamilyOrNull(org.apache.calcite.rel.type.RelDataType,org.apache.calcite.rel.type.RelDataType)">inSameFamilyOrNull</a></h3>
<div class="memberSignature"><span class="modifiers">public static</span>&nbsp;<span class="returnType">boolean</span>&nbsp;<span class="memberName">inSameFamilyOrNull</span>&#8203;(<span class="arguments"><a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;t1,
<a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;t2)</span></div>
<div class="block">Returns whether two types are in same type family, or one or the other is
of type <a href="SqlTypeName.html#NULL"><code>SqlTypeName.NULL</code></a>.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="inCharOrBinaryFamilies(org.apache.calcite.rel.type.RelDataType)">inCharOrBinaryFamilies</a></h3>
<div class="memberSignature"><span class="modifiers">public static</span>&nbsp;<span class="returnType">boolean</span>&nbsp;<span class="memberName">inCharOrBinaryFamilies</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">Returns whether a type family is either character or binary.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="isLob(org.apache.calcite.rel.type.RelDataType)">isLob</a></h3>
<div class="memberSignature"><span class="modifiers">public static</span>&nbsp;<span class="returnType">boolean</span>&nbsp;<span class="memberName">isLob</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">Returns whether a type is a LOB of some kind.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="isBoundedVariableWidth(org.apache.calcite.rel.type.RelDataType)">isBoundedVariableWidth</a></h3>
<div class="memberSignature"><span class="modifiers">public static</span>&nbsp;<span class="returnType">boolean</span>&nbsp;<span class="memberName">isBoundedVariableWidth</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">Returns whether a type is variable width with bounded precision.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="isIntType(org.apache.calcite.rel.type.RelDataType)">isIntType</a></h3>
<div class="memberSignature"><span class="modifiers">public static</span>&nbsp;<span class="returnType">boolean</span>&nbsp;<span class="memberName">isIntType</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">Returns whether a type is one of the integer types.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="isDecimal(org.apache.calcite.rel.type.RelDataType)">isDecimal</a></h3>
<div class="memberSignature"><span class="modifiers">public static</span>&nbsp;<span class="returnType">boolean</span>&nbsp;<span class="memberName">isDecimal</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">Returns whether a type is DECIMAL.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="isDouble(org.apache.calcite.rel.type.RelDataType)">isDouble</a></h3>
<div class="memberSignature"><span class="modifiers">public static</span>&nbsp;<span class="returnType">boolean</span>&nbsp;<span class="memberName">isDouble</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">Returns whether a type is DOUBLE.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="isBigint(org.apache.calcite.rel.type.RelDataType)">isBigint</a></h3>
<div class="memberSignature"><span class="modifiers">public static</span>&nbsp;<span class="returnType">boolean</span>&nbsp;<span class="memberName">isBigint</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">Returns whether a type is BIGINT.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="isExactNumeric(org.apache.calcite.rel.type.RelDataType)">isExactNumeric</a></h3>
<div class="memberSignature"><span class="modifiers">public static</span>&nbsp;<span class="returnType">boolean</span>&nbsp;<span class="memberName">isExactNumeric</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">Returns whether a type is numeric with exact precision.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="hasScale(org.apache.calcite.rel.type.RelDataType)">hasScale</a></h3>
<div class="memberSignature"><span class="modifiers">public static</span>&nbsp;<span class="returnType">boolean</span>&nbsp;<span class="memberName">hasScale</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">Returns whether a type's scale is set.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="maxValue(org.apache.calcite.rel.type.RelDataType)">maxValue</a></h3>
<div class="memberSignature"><span class="modifiers">public static</span>&nbsp;<span class="returnType">long</span>&nbsp;<span class="memberName">maxValue</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">Returns the maximum value of an integral type, as a long value.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="isApproximateNumeric(org.apache.calcite.rel.type.RelDataType)">isApproximateNumeric</a></h3>
<div class="memberSignature"><span class="modifiers">public static</span>&nbsp;<span class="returnType">boolean</span>&nbsp;<span class="memberName">isApproximateNumeric</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">Returns whether a type is numeric with approximate precision.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="isNumeric(org.apache.calcite.rel.type.RelDataType)">isNumeric</a></h3>
<div class="memberSignature"><span class="modifiers">public static</span>&nbsp;<span class="returnType">boolean</span>&nbsp;<span class="memberName">isNumeric</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">Returns whether a type is numeric.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="isNull(org.apache.calcite.rel.type.RelDataType)">isNull</a></h3>
<div class="memberSignature"><span class="modifiers">public static</span>&nbsp;<span class="returnType">boolean</span>&nbsp;<span class="memberName">isNull</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">Returns whether a type is the NULL type.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="sameNamedType(org.apache.calcite.rel.type.RelDataType,org.apache.calcite.rel.type.RelDataType)">sameNamedType</a></h3>
<div class="memberSignature"><span class="modifiers">public static</span>&nbsp;<span class="returnType">boolean</span>&nbsp;<span class="memberName">sameNamedType</span>&#8203;(<span class="arguments"><a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;t1,
<a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;t2)</span></div>
<div class="block">Tests whether two types have the same name and structure, possibly with
differing modifiers. For example, VARCHAR(1) and VARCHAR(10) are
considered the same, while VARCHAR(1) and CHAR(1) are considered
different. Likewise, VARCHAR(1) MULTISET and VARCHAR(10) MULTISET are
considered the same.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>true if types have same name and structure</dd>
</dl>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="getMaxByteSize(org.apache.calcite.rel.type.RelDataType)">getMaxByteSize</a></h3>
<div class="memberSignature"><span class="modifiers">public static</span>&nbsp;<span class="returnType">int</span>&nbsp;<span class="memberName">getMaxByteSize</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">Computes the maximum number of bytes required to represent a value of a
type having user-defined precision. This computation assumes no overhead
such as length indicators and NUL-terminators. Complex types for which
multiple representations are possible (e.g. DECIMAL or TIMESTAMP) return
0.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>type</code> - type for which to compute storage</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>maximum bytes, or 0 for a fixed-width type or type with unknown
maximum</dd>
</dl>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="getMinValue(org.apache.calcite.rel.type.RelDataType)">getMinValue</a></h3>
<div class="memberSignature"><span class="modifiers">public static</span>&nbsp;<span class="returnType">long</span>&nbsp;<span class="memberName">getMinValue</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">Returns the minimum unscaled value of a numeric type.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>type</code> - a numeric type</dd>
</dl>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="getMaxValue(org.apache.calcite.rel.type.RelDataType)">getMaxValue</a></h3>
<div class="memberSignature"><span class="modifiers">public static</span>&nbsp;<span class="returnType">long</span>&nbsp;<span class="memberName">getMaxValue</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">Returns the maximum unscaled value of a numeric type.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>type</code> - a numeric type</dd>
</dl>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="isJavaPrimitive(org.apache.calcite.rel.type.RelDataType)">isJavaPrimitive</a></h3>
<div class="memberSignature"><span class="annotations"><a href="https://docs.oracle.com/javase/9/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang" class="externalLink">@Deprecated</a>
</span><span class="modifiers">public static</span>&nbsp;<span class="returnType">boolean</span>&nbsp;<span class="memberName">isJavaPrimitive</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="deprecationBlock"><span class="deprecatedLabel">Deprecated.</span></div>
<div class="block">Returns whether a type has a representation as a Java primitive (ignoring
nullability).</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="getPrimitiveWrapperJavaClassName(org.apache.calcite.rel.type.RelDataType)">getPrimitiveWrapperJavaClassName</a></h3>
<div class="memberSignature"><span class="annotations"><a href="https://docs.oracle.com/javase/9/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang" class="externalLink">@Deprecated</a>
</span><span class="modifiers">public static</span>&nbsp;<span class="returnType"><a href="https://docs.oracle.com/javase/9/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink">String</a></span>&nbsp;<span class="memberName">getPrimitiveWrapperJavaClassName</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="deprecationBlock"><span class="deprecatedLabel">Deprecated.</span></div>
<div class="block">Returns the class name of the wrapper for the primitive data type.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="getNumericJavaClassName(org.apache.calcite.rel.type.RelDataType)">getNumericJavaClassName</a></h3>
<div class="memberSignature"><span class="annotations"><a href="https://docs.oracle.com/javase/9/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang" class="externalLink">@Deprecated</a>
</span><span class="modifiers">public static</span>&nbsp;<span class="returnType"><a href="https://docs.oracle.com/javase/9/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink">String</a></span>&nbsp;<span class="memberName">getNumericJavaClassName</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="deprecationBlock"><span class="deprecatedLabel">Deprecated.</span></div>
<div class="block">Returns the class name of a numeric data type.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="canAssignFrom(org.apache.calcite.rel.type.RelDataType,org.apache.calcite.rel.type.RelDataType)">canAssignFrom</a></h3>
<div class="memberSignature"><span class="modifiers">public static</span>&nbsp;<span class="returnType">boolean</span>&nbsp;<span class="memberName">canAssignFrom</span>&#8203;(<span class="arguments"><a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;toType,
<a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;fromType)</span></div>
<div class="block">Tests whether a value can be assigned to a site.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>toType</code> - type of the target site</dd>
<dd><code>fromType</code> - type of the source value</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>true iff assignable</dd>
</dl>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="areCharacterSetsMismatched(org.apache.calcite.rel.type.RelDataType,org.apache.calcite.rel.type.RelDataType)">areCharacterSetsMismatched</a></h3>
<div class="memberSignature"><span class="modifiers">public static</span>&nbsp;<span class="returnType">boolean</span>&nbsp;<span class="memberName">areCharacterSetsMismatched</span>&#8203;(<span class="arguments"><a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;t1,
<a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;t2)</span></div>
<div class="block">Determines whether two types both have different character sets. If one
or the other type has no character set (e.g. in cast from INT to
VARCHAR), that is not a mismatch.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>t1</code> - first type</dd>
<dd><code>t2</code> - second type</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>true iff mismatched</dd>
</dl>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="canCastFrom(org.apache.calcite.rel.type.RelDataType,org.apache.calcite.rel.type.RelDataType,boolean)">canCastFrom</a></h3>
<div class="memberSignature"><span class="modifiers">public static</span>&nbsp;<span class="returnType">boolean</span>&nbsp;<span class="memberName">canCastFrom</span>&#8203;(<span class="arguments"><a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;toType,
<a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;fromType,
boolean&nbsp;coerce)</span></div>
<div class="block">Compares two types and returns true if fromType can be cast to toType.
<p>REVIEW jvs 17-Dec-2004: the coerce param below shouldn't really be
necessary. We're using it as a hack because
<a href="SqlTypeFactoryImpl.html#leastRestrictive(java.util.List)"><code>SqlTypeFactoryImpl.leastRestrictive(java.util.List&lt;org.apache.calcite.rel.type.RelDataType&gt;)</code></a> isn't complete enough
yet. Once it is, this param (and the non-coerce rules of
<a href="SqlTypeAssignmentRule.html" title="class in org.apache.calcite.sql.type"><code>SqlTypeAssignmentRule</code></a>) should go away.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>toType</code> - target of assignment</dd>
<dd><code>fromType</code> - source of assignment</dd>
<dd><code>coerce</code> - if true, the SQL rules for CAST are used; if false, the
rules are similar to Java; e.g. you can't assign short x =
(int) y, and you can't assign int x = (String) z.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>true iff cast is legal</dd>
</dl>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="flattenRecordType(org.apache.calcite.rel.type.RelDataTypeFactory,org.apache.calcite.rel.type.RelDataType,int[])">flattenRecordType</a></h3>
<div class="memberSignature"><span class="modifiers">public static</span>&nbsp;<span class="returnType"><a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></span>&nbsp;<span class="memberName">flattenRecordType</span>&#8203;(<span class="arguments"><a href="../../rel/type/RelDataTypeFactory.html" title="interface in org.apache.calcite.rel.type">RelDataTypeFactory</a>&nbsp;typeFactory,
<a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;recordType,
int[]&nbsp;flatteningMap)</span></div>
<div class="block">Flattens a record type by recursively expanding any fields which are
themselves record types. For each record type, a representative null
value field is also prepended (with state NULL for a null value and FALSE
for non-null), and all component types are asserted to be nullable, since
SQL doesn't allow NOT NULL to be specified on attributes.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>typeFactory</code> - factory which should produced flattened type</dd>
<dd><code>recordType</code> - type with possible nesting</dd>
<dd><code>flatteningMap</code> - if non-null, receives map from unflattened ordinal
to flattened ordinal (must have length at least
recordType.getFieldList().size())</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>flattened equivalent</dd>
</dl>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="needsNullIndicator(org.apache.calcite.rel.type.RelDataType)">needsNullIndicator</a></h3>
<div class="memberSignature"><span class="modifiers">public static</span>&nbsp;<span class="returnType">boolean</span>&nbsp;<span class="memberName">needsNullIndicator</span>&#8203;(<span class="arguments"><a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;recordType)</span></div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="convertTypeToSpec(org.apache.calcite.rel.type.RelDataType,java.lang.String,int)">convertTypeToSpec</a></h3>
<div class="memberSignature"><span class="modifiers">public static</span>&nbsp;<span class="returnType"><a href="../SqlDataTypeSpec.html" title="class in org.apache.calcite.sql">SqlDataTypeSpec</a></span>&nbsp;<span class="memberName">convertTypeToSpec</span>&#8203;(<span class="arguments"><a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;type,
<a href="https://docs.oracle.com/javase/9/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink">String</a>&nbsp;charSetName,
int&nbsp;maxPrecision)</span></div>
<div class="block">Converts an instance of RelDataType to an instance of SqlDataTypeSpec.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>type</code> - type descriptor</dd>
<dd><code>charSetName</code> - charSet name</dd>
<dd><code>maxPrecision</code> - The max allowed precision.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>corresponding parse representation</dd>
</dl>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="convertTypeToSpec(org.apache.calcite.rel.type.RelDataType)">convertTypeToSpec</a></h3>
<div class="memberSignature"><span class="modifiers">public static</span>&nbsp;<span class="returnType"><a href="../SqlDataTypeSpec.html" title="class in org.apache.calcite.sql">SqlDataTypeSpec</a></span>&nbsp;<span class="memberName">convertTypeToSpec</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">Converts an instance of RelDataType to an instance of SqlDataTypeSpec.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>type</code> - type descriptor</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>corresponding parse representation</dd>
</dl>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="createMultisetType(org.apache.calcite.rel.type.RelDataTypeFactory,org.apache.calcite.rel.type.RelDataType,boolean)">createMultisetType</a></h3>
<div class="memberSignature"><span class="modifiers">public static</span>&nbsp;<span class="returnType"><a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></span>&nbsp;<span class="memberName">createMultisetType</span>&#8203;(<span class="arguments"><a href="../../rel/type/RelDataTypeFactory.html" title="interface in org.apache.calcite.rel.type">RelDataTypeFactory</a>&nbsp;typeFactory,
<a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;type,
boolean&nbsp;nullable)</span></div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="createArrayType(org.apache.calcite.rel.type.RelDataTypeFactory,org.apache.calcite.rel.type.RelDataType,boolean)">createArrayType</a></h3>
<div class="memberSignature"><span class="modifiers">public static</span>&nbsp;<span class="returnType"><a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></span>&nbsp;<span class="memberName">createArrayType</span>&#8203;(<span class="arguments"><a href="../../rel/type/RelDataTypeFactory.html" title="interface in org.apache.calcite.rel.type">RelDataTypeFactory</a>&nbsp;typeFactory,
<a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;type,
boolean&nbsp;nullable)</span></div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="createMapType(org.apache.calcite.rel.type.RelDataTypeFactory,org.apache.calcite.rel.type.RelDataType,org.apache.calcite.rel.type.RelDataType,boolean)">createMapType</a></h3>
<div class="memberSignature"><span class="modifiers">public static</span>&nbsp;<span class="returnType"><a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></span>&nbsp;<span class="memberName">createMapType</span>&#8203;(<span class="arguments"><a href="../../rel/type/RelDataTypeFactory.html" title="interface in org.apache.calcite.rel.type">RelDataTypeFactory</a>&nbsp;typeFactory,
<a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;keyType,
<a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;valueType,
boolean&nbsp;nullable)</span></div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="addCharsetAndCollation(org.apache.calcite.rel.type.RelDataType,org.apache.calcite.rel.type.RelDataTypeFactory)">addCharsetAndCollation</a></h3>
<div class="memberSignature"><span class="modifiers">public static</span>&nbsp;<span class="returnType"><a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></span>&nbsp;<span class="memberName">addCharsetAndCollation</span>&#8203;(<span class="arguments"><a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;type,
<a href="../../rel/type/RelDataTypeFactory.html" title="interface in org.apache.calcite.rel.type">RelDataTypeFactory</a>&nbsp;typeFactory)</span></div>
<div class="block">Adds collation and charset to a character type, returns other types
unchanged.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>type</code> - Type</dd>
<dd><code>typeFactory</code> - Type factory</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Type with added charset and collation, or unchanged type if it is
not a char type.</dd>
</dl>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="equalSansNullability(org.apache.calcite.rel.type.RelDataTypeFactory,org.apache.calcite.rel.type.RelDataType,org.apache.calcite.rel.type.RelDataType)">equalSansNullability</a></h3>
<div class="memberSignature"><span class="modifiers">public static</span>&nbsp;<span class="returnType">boolean</span>&nbsp;<span class="memberName">equalSansNullability</span>&#8203;(<span class="arguments"><a href="../../rel/type/RelDataTypeFactory.html" title="interface in org.apache.calcite.rel.type">RelDataTypeFactory</a>&nbsp;factory,
<a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;type1,
<a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;type2)</span></div>
<div class="block">Returns whether two types are equal, ignoring nullability.
<p>They need not come from the same factory.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>factory</code> - Type factory</dd>
<dd><code>type1</code> - First type</dd>
<dd><code>type2</code> - Second type</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>whether types are equal, ignoring nullability</dd>
</dl>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="equalSansNullability(org.apache.calcite.rel.type.RelDataType,org.apache.calcite.rel.type.RelDataType)">equalSansNullability</a></h3>
<div class="memberSignature"><span class="modifiers">public static</span>&nbsp;<span class="returnType">boolean</span>&nbsp;<span class="memberName">equalSansNullability</span>&#8203;(<span class="arguments"><a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;type1,
<a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;type2)</span></div>
<div class="block">This is a poorman's
<a href="#equalSansNullability(org.apache.calcite.rel.type.RelDataTypeFactory,org.apache.calcite.rel.type.RelDataType,org.apache.calcite.rel.type.RelDataType)"><code>equalSansNullability(RelDataTypeFactory, RelDataType, RelDataType)</code></a>.
<p>We assume that "not null" is represented in the type's digest
as a trailing "NOT NULL" (case sensitive).
<p>If you got a type factory, <a href="#equalSansNullability(org.apache.calcite.rel.type.RelDataTypeFactory,org.apache.calcite.rel.type.RelDataType,org.apache.calcite.rel.type.RelDataType)"><code>equalSansNullability(RelDataTypeFactory, RelDataType, RelDataType)</code></a>
is preferred.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>type1</code> - First type</dd>
<dd><code>type2</code> - Second type</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>true if the types are equal or the only difference is nullability</dd>
</dl>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="equalAsCollectionSansNullability(org.apache.calcite.rel.type.RelDataTypeFactory,org.apache.calcite.rel.type.RelDataType,org.apache.calcite.rel.type.RelDataType)">equalAsCollectionSansNullability</a></h3>
<div class="memberSignature"><span class="modifiers">public static</span>&nbsp;<span class="returnType">boolean</span>&nbsp;<span class="memberName">equalAsCollectionSansNullability</span>&#8203;(<span class="arguments"><a href="../../rel/type/RelDataTypeFactory.html" title="interface in org.apache.calcite.rel.type">RelDataTypeFactory</a>&nbsp;factory,
<a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;type1,
<a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;type2)</span></div>
<div class="block">Returns whether two collection types are equal, ignoring nullability.
<p>They need not come from the same factory.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>factory</code> - Type factory</dd>
<dd><code>type1</code> - First type</dd>
<dd><code>type2</code> - Second type</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Whether types are equal, ignoring nullability</dd>
</dl>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="equalAsMapSansNullability(org.apache.calcite.rel.type.RelDataTypeFactory,org.apache.calcite.rel.type.RelDataType,org.apache.calcite.rel.type.RelDataType)">equalAsMapSansNullability</a></h3>
<div class="memberSignature"><span class="modifiers">public static</span>&nbsp;<span class="returnType">boolean</span>&nbsp;<span class="memberName">equalAsMapSansNullability</span>&#8203;(<span class="arguments"><a href="../../rel/type/RelDataTypeFactory.html" title="interface in org.apache.calcite.rel.type">RelDataTypeFactory</a>&nbsp;factory,
<a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;type1,
<a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;type2)</span></div>
<div class="block">Returns whether two map types are equal, ignoring nullability.
<p>They need not come from the same factory.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>factory</code> - Type factory</dd>
<dd><code>type1</code> - First type</dd>
<dd><code>type2</code> - Second type</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Whether types are equal, ignoring nullability</dd>
</dl>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="equalAsStructSansNullability(org.apache.calcite.rel.type.RelDataTypeFactory,org.apache.calcite.rel.type.RelDataType,org.apache.calcite.rel.type.RelDataType,org.apache.calcite.sql.validate.SqlNameMatcher)">equalAsStructSansNullability</a></h3>
<div class="memberSignature"><span class="modifiers">public static</span>&nbsp;<span class="returnType">boolean</span>&nbsp;<span class="memberName">equalAsStructSansNullability</span>&#8203;(<span class="arguments"><a href="../../rel/type/RelDataTypeFactory.html" title="interface in org.apache.calcite.rel.type">RelDataTypeFactory</a>&nbsp;factory,
<a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;type1,
<a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;type2,
<a href="../validate/SqlNameMatcher.html" title="interface in org.apache.calcite.sql.validate">SqlNameMatcher</a>&nbsp;nameMatcher)</span></div>
<div class="block">Returns whether two struct types are equal, ignoring nullability.
<p>They do not need to come from the same factory.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>factory</code> - Type factory</dd>
<dd><code>type1</code> - First type</dd>
<dd><code>type2</code> - Second type</dd>
<dd><code>nameMatcher</code> - Name matcher used to compare the field names, if null,
the field names are also ignored</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Whether types are equal, ignoring nullability</dd>
</dl>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="findField(org.apache.calcite.rel.type.RelDataType,java.lang.String)">findField</a></h3>
<div class="memberSignature"><span class="modifiers">public static</span>&nbsp;<span class="returnType">int</span>&nbsp;<span class="memberName">findField</span>&#8203;(<span class="arguments"><a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;type,
<a href="https://docs.oracle.com/javase/9/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink">String</a>&nbsp;fieldName)</span></div>
<div class="block">Returns the ordinal of a given field in a record type, or -1 if the field
is not found.
<p>The <code>fieldName</code> is always simple, if the field is nested within a record field,
returns index of the outer field instead. i.g. for row type
(a int, b (b1 bigint, b2 varchar(20) not null)), returns 1 for both simple name "b1" and "b2".</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>type</code> - Record type</dd>
<dd><code>fieldName</code> - Name of field</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Ordinal of field</dd>
</dl>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="projectTypes(org.apache.calcite.rel.type.RelDataType,java.util.List)">projectTypes</a></h3>
<div class="memberSignature"><span class="modifiers">public static</span>&nbsp;<span class="returnType"><a href="https://docs.oracle.com/javase/9/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util" class="externalLink">List</a>&lt;<a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&gt;</span>&nbsp;<span class="memberName">projectTypes</span>&#8203;(<span class="arguments"><a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;rowType,
<a href="https://docs.oracle.com/javase/9/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util" class="externalLink">List</a>&lt;? extends <a href="https://docs.oracle.com/javase/9/docs/api/java/lang/Number.html?is-external=true" title="class or interface in java.lang" class="externalLink">Number</a>&gt;&nbsp;requiredFields)</span></div>
<div class="block">Selects data types of the specified fields from an input row type.
This is useful when identifying data types of a function that is going
to operate on inputs that are specified as field ordinals (e.g.
aggregate calls).</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>rowType</code> - input row type</dd>
<dd><code>requiredFields</code> - ordinals of the projected fields</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>list of data types that are requested by requiredFields</dd>
</dl>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="createEmptyStructType(org.apache.calcite.rel.type.RelDataTypeFactory)">createEmptyStructType</a></h3>
<div class="memberSignature"><span class="modifiers">public static</span>&nbsp;<span class="returnType"><a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></span>&nbsp;<span class="memberName">createEmptyStructType</span>&#8203;(<span class="arguments"><a href="../../rel/type/RelDataTypeFactory.html" title="interface in org.apache.calcite.rel.type">RelDataTypeFactory</a>&nbsp;typeFactory)</span></div>
<div class="block">Records a struct type with no fields.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>typeFactory</code> - Type factory</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Struct type with no fields</dd>
</dl>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="isFlat(org.apache.calcite.rel.type.RelDataType)">isFlat</a></h3>
<div class="memberSignature"><span class="modifiers">public static</span>&nbsp;<span class="returnType">boolean</span>&nbsp;<span class="memberName">isFlat</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">Returns whether a type is flat. It is not flat if it is a record type that
has one or more fields that are themselves record types.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="isComparable(org.apache.calcite.rel.type.RelDataType,org.apache.calcite.rel.type.RelDataType)">isComparable</a></h3>
<div class="memberSignature"><span class="modifiers">public static</span>&nbsp;<span class="returnType">boolean</span>&nbsp;<span class="memberName">isComparable</span>&#8203;(<span class="arguments"><a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;type1,
<a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;type2)</span></div>
<div class="block">Returns whether two types are comparable. They need to be scalar types of
the same family, or struct types whose fields are pairwise comparable.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>type1</code> - First type</dd>
<dd><code>type2</code> - Second type</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Whether types are comparable</dd>
</dl>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="leastRestrictiveForComparison(org.apache.calcite.rel.type.RelDataTypeFactory,org.apache.calcite.rel.type.RelDataType,org.apache.calcite.rel.type.RelDataType)">leastRestrictiveForComparison</a></h3>
<div class="memberSignature"><span class="modifiers">public static</span>&nbsp;<span class="returnType"><a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></span>&nbsp;<span class="memberName">leastRestrictiveForComparison</span>&#8203;(<span class="arguments"><a href="../../rel/type/RelDataTypeFactory.html" title="interface in org.apache.calcite.rel.type">RelDataTypeFactory</a>&nbsp;typeFactory,
<a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;type1,
<a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;type2)</span></div>
<div class="block">Returns the least restrictive type T, such that a value of type T can be
compared with values of type <code>type0</code> and <code>type1</code> using
<code>=</code>.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="family(org.apache.calcite.rel.type.RelDataType)">family</a></h3>
<div class="memberSignature"><span class="modifiers">protected static</span>&nbsp;<span class="returnType"><a href="../../rel/type/RelDataTypeFamily.html" title="interface in org.apache.calcite.rel.type">RelDataTypeFamily</a></span>&nbsp;<span class="memberName">family</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>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="areSameFamily(java.lang.Iterable)">areSameFamily</a></h3>
<div class="memberSignature"><span class="modifiers">public static</span>&nbsp;<span class="returnType">boolean</span>&nbsp;<span class="memberName">areSameFamily</span>&#8203;(<span class="arguments"><a href="https://docs.oracle.com/javase/9/docs/api/java/lang/Iterable.html?is-external=true" title="class or interface in java.lang" class="externalLink">Iterable</a>&lt;<a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&gt;&nbsp;types)</span></div>
<div class="block">Returns whether all types in a collection have the same family, as
determined by <code>isSameFamily(RelDataType, RelDataType)</code>.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>types</code> - Types to check</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>true if all types are of the same family</dd>
</dl>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="isUnicode(org.apache.calcite.rel.type.RelDataType)">isUnicode</a></h3>
<div class="memberSignature"><span class="modifiers">public static</span>&nbsp;<span class="returnType">boolean</span>&nbsp;<span class="memberName">isUnicode</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">Checks whether a type represents Unicode character data.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>type</code> - type to test</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>whether type represents Unicode character data</dd>
</dl>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="maxPrecision(int,int)">maxPrecision</a></h3>
<div class="memberSignature"><span class="modifiers">public static</span>&nbsp;<span class="returnType">int</span>&nbsp;<span class="memberName">maxPrecision</span>&#8203;(<span class="arguments">int&nbsp;p0,
int&nbsp;p1)</span></div>
<div class="block">Returns the larger of two precisions, treating
<a href="../../rel/type/RelDataType.html#PRECISION_NOT_SPECIFIED"><code>RelDataType.PRECISION_NOT_SPECIFIED</code></a> as infinity.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="comparePrecision(int,int)">comparePrecision</a></h3>
<div class="memberSignature"><span class="modifiers">public static</span>&nbsp;<span class="returnType">int</span>&nbsp;<span class="memberName">comparePrecision</span>&#8203;(<span class="arguments">int&nbsp;p0,
int&nbsp;p1)</span></div>
<div class="block">Returns whether a precision is greater or equal than another,
treating <a href="../../rel/type/RelDataType.html#PRECISION_NOT_SPECIFIED"><code>RelDataType.PRECISION_NOT_SPECIFIED</code></a> as infinity.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="isArray(org.apache.calcite.rel.type.RelDataType)">isArray</a></h3>
<div class="memberSignature"><span class="modifiers">public static</span>&nbsp;<span class="returnType">boolean</span>&nbsp;<span class="memberName">isArray</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">Returns whether a type is ARRAY.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="isRow(org.apache.calcite.rel.type.RelDataType)">isRow</a></h3>
<div class="memberSignature"><span class="modifiers">public static</span>&nbsp;<span class="returnType">boolean</span>&nbsp;<span class="memberName">isRow</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">Returns whether a type is ROW.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="isMap(org.apache.calcite.rel.type.RelDataType)">isMap</a></h3>
<div class="memberSignature"><span class="modifiers">public static</span>&nbsp;<span class="returnType">boolean</span>&nbsp;<span class="memberName">isMap</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">Returns whether a type is MAP.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="isMultiset(org.apache.calcite.rel.type.RelDataType)">isMultiset</a></h3>
<div class="memberSignature"><span class="modifiers">public static</span>&nbsp;<span class="returnType">boolean</span>&nbsp;<span class="memberName">isMultiset</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">Returns whether a type is MULTISET.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="isCollection(org.apache.calcite.rel.type.RelDataType)">isCollection</a></h3>
<div class="memberSignature"><span class="modifiers">public static</span>&nbsp;<span class="returnType">boolean</span>&nbsp;<span class="memberName">isCollection</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">Returns whether a type is ARRAY or MULTISET.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="isCharacter(org.apache.calcite.rel.type.RelDataType)">isCharacter</a></h3>
<div class="memberSignature"><span class="modifiers">public static</span>&nbsp;<span class="returnType">boolean</span>&nbsp;<span class="memberName">isCharacter</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">Returns whether a type is CHARACTER.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="hasCharactor(org.apache.calcite.rel.type.RelDataType)">hasCharactor</a></h3>
<div class="memberSignature"><span class="annotations"><a href="https://docs.oracle.com/javase/9/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang" class="externalLink">@Deprecated</a>
</span><span class="modifiers">public static</span>&nbsp;<span class="returnType">boolean</span>&nbsp;<span class="memberName">hasCharactor</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="deprecationBlock"><span class="deprecatedLabel">Deprecated.</span>
<div class="deprecationComment">Use <a href="#hasCharacter(org.apache.calcite.rel.type.RelDataType)"><code>hasCharacter(RelDataType)</code></a></div>
</div>
<div class="block">Returns whether a type is a CHARACTER or contains a CHARACTER type.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="hasCharacter(org.apache.calcite.rel.type.RelDataType)">hasCharacter</a></h3>
<div class="memberSignature"><span class="modifiers">public static</span>&nbsp;<span class="returnType">boolean</span>&nbsp;<span class="memberName">hasCharacter</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">Returns whether a type is a CHARACTER or contains a CHARACTER type.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="isString(org.apache.calcite.rel.type.RelDataType)">isString</a></h3>
<div class="memberSignature"><span class="modifiers">public static</span>&nbsp;<span class="returnType">boolean</span>&nbsp;<span class="memberName">isString</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">Returns whether a type is STRING.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="isBoolean(org.apache.calcite.rel.type.RelDataType)">isBoolean</a></h3>
<div class="memberSignature"><span class="modifiers">public static</span>&nbsp;<span class="returnType">boolean</span>&nbsp;<span class="memberName">isBoolean</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">Returns whether a type is BOOLEAN.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="isBinary(org.apache.calcite.rel.type.RelDataType)">isBinary</a></h3>
<div class="memberSignature"><span class="modifiers">public static</span>&nbsp;<span class="returnType">boolean</span>&nbsp;<span class="memberName">isBinary</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">Returns whether a type is BINARY.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="isAtomic(org.apache.calcite.rel.type.RelDataType)">isAtomic</a></h3>
<div class="memberSignature"><span class="modifiers">public static</span>&nbsp;<span class="returnType">boolean</span>&nbsp;<span class="memberName">isAtomic</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">Returns whether a type is atomic (datetime, numeric, string or
BOOLEAN).</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="getMaxPrecisionScaleDecimal(org.apache.calcite.rel.type.RelDataTypeFactory)">getMaxPrecisionScaleDecimal</a></h3>
<div class="memberSignature"><span class="modifiers">public static</span>&nbsp;<span class="returnType"><a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></span>&nbsp;<span class="memberName">getMaxPrecisionScaleDecimal</span>&#8203;(<span class="arguments"><a href="../../rel/type/RelDataTypeFactory.html" title="interface in org.apache.calcite.rel.type">RelDataTypeFactory</a>&nbsp;factory)</span></div>
<div class="block">Returns a DECIMAL type with the maximum precision/scale for the current
type system.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="extractLastNFields(org.apache.calcite.rel.type.RelDataTypeFactory,org.apache.calcite.rel.type.RelDataType,int)">extractLastNFields</a></h3>
<div class="memberSignature"><span class="modifiers">public static</span>&nbsp;<span class="returnType"><a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></span>&nbsp;<span class="memberName">extractLastNFields</span>&#8203;(<span class="arguments"><a href="../../rel/type/RelDataTypeFactory.html" title="interface in org.apache.calcite.rel.type">RelDataTypeFactory</a>&nbsp;typeFactory,
<a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;type,
int&nbsp;numToKeep)</span></div>
<div class="block">Keeps only the last N fields and returns the new struct type.</div>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="isValidDecimalValue(java.math.BigDecimal,org.apache.calcite.rel.type.RelDataType)">isValidDecimalValue</a></h3>
<div class="memberSignature"><span class="modifiers">public static</span>&nbsp;<span class="returnType">boolean</span>&nbsp;<span class="memberName">isValidDecimalValue</span>&#8203;(<span class="arguments"><a href="https://docs.oracle.com/javase/9/docs/api/java/math/BigDecimal.html?is-external=true" title="class or interface in java.math" class="externalLink">BigDecimal</a>&nbsp;value,
<a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;toType)</span></div>
<div class="block">Returns whether the decimal value is valid for the type. For example, 1111.11 is not
valid for DECIMAL(3, 1) since it overflows.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>value</code> - Value of literal</dd>
<dd><code>toType</code> - Type of the literal</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>whether the value is valid for the type</dd>
</dl>
</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>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&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-2020 Apache Software Foundation. All Rights Reserved.</small></p>
</footer>
</div>
</div>
</body>
</html>