blob: 6ea59d682fdeed9ae21b6b6e6ec57d5cb177400f [file] [log] [blame]
<!DOCTYPE HTML>
<html lang="en">
<head>
<!-- Generated by javadoc (17) -->
<title>RelDataTypeFactory (Apache Calcite API)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="description" content="declaration: package: org.apache.calcite.rel.type, interface: RelDataTypeFactory">
<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.min.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
<script type="text/javascript" src="../../../../../script.js"></script>
<script type="text/javascript" src="../../../../../script-dir/jquery-3.5.1.min.js"></script>
<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
</head>
<body class="class-declaration-page">
<script type="text/javascript">var evenRowColor = "even-row-color";
var oddRowColor = "odd-row-color";
var tableTab = "table-tab";
var activeTableTab = "active-table-tab";
var pathtoroot = "../../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<div class="flex-box">
<header role="banner" class="flex-header">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top">
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<div class="about-language"><b>Apache Calcite</b></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="nav-bar-cell1-rev">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#class">Help</a></li>
</ul>
</div>
<div class="sub-nav">
<div>
<ul class="sub-nav-list">
<li>Summary:&nbsp;</li>
<li><a href="#nested-class-summary">Nested</a>&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method-summary">Method</a></li>
</ul>
<ul class="sub-nav-list">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method-detail">Method</a></li>
</ul>
</div>
<div class="nav-list-search"><label for="search-input">SEARCH:</label>
<input type="text" id="search-input" value="search" disabled="disabled">
<input type="reset" id="reset-button" value="reset" disabled="disabled">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">org.apache.calcite.rel.type</a></div>
<h1 title="Interface RelDataTypeFactory" class="title">Interface RelDataTypeFactory</h1>
</div>
<section class="class-description" id="class-description">
<dl class="notes">
<dt>All Known Subinterfaces:</dt>
<dd><code><a href="../../adapter/java/JavaTypeFactory.html" title="interface in org.apache.calcite.adapter.java">JavaTypeFactory</a></code></dd>
</dl>
<dl class="notes">
<dt>All Known Implementing Classes:</dt>
<dd><code><a href="../../adapter/geode/util/JavaTypeFactoryExtImpl.html" title="class in org.apache.calcite.adapter.geode.util">JavaTypeFactoryExtImpl</a></code>, <code><a href="../../jdbc/JavaTypeFactoryImpl.html" title="class in org.apache.calcite.jdbc">JavaTypeFactoryImpl</a></code>, <code><a href="RelDataTypeFactoryImpl.html" title="class in org.apache.calcite.rel.type">RelDataTypeFactoryImpl</a></code>, <code><a href="../../sql/type/SqlTypeFactoryImpl.html" title="class in org.apache.calcite.sql.type">SqlTypeFactoryImpl</a></code></dd>
</dl>
<hr>
<div class="type-signature"><span class="modifiers">public interface </span><span class="element-name type-name-label">RelDataTypeFactory</span></div>
<div class="block">RelDataTypeFactory is a factory for datatype descriptors. It defines methods
for instantiating and combining SQL, Java, and collection types. The factory
also provides methods for return type inference for arithmetic in cases where
SQL 2003 is implementation defined or impractical.
<p>This interface is an example of the
<a href="../../util/Glossary.html#ABSTRACT_FACTORY_PATTERN"><code>abstract factory pattern</code></a>.
Any implementation of <code>RelDataTypeFactory</code> must ensure that type
objects are canonical: two types are equal if and only if they are
represented by the same Java object. This reduces memory consumption and
comparison cost.</div>
</section>
<section class="summary">
<ul class="summary-list">
<!-- ======== NESTED CLASS SUMMARY ======== -->
<li>
<section class="nested-class-summary" id="nested-class-summary">
<h2>Nested Class Summary</h2>
<div class="caption"><span>Nested Classes</span></div>
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Interface</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color"><code>static class&nbsp;</code></div>
<div class="col-second even-row-color"><code><a href="RelDataTypeFactory.Builder.html" class="type-name-link" title="class in org.apache.calcite.rel.type">RelDataTypeFactory.Builder</a></code></div>
<div class="col-last even-row-color">
<div class="block">Fluid API to build a list of fields.</div>
</div>
<div class="col-first odd-row-color"><code>static interface&nbsp;</code></div>
<div class="col-second odd-row-color"><code><a href="RelDataTypeFactory.FieldInfo.html" class="type-name-link" title="interface in org.apache.calcite.rel.type">RelDataTypeFactory.FieldInfo</a></code></div>
<div class="col-last odd-row-color">
<div class="block"><span class="deprecated-label">Deprecated.</span></div>
</div>
<div class="col-first even-row-color"><code>static class&nbsp;</code></div>
<div class="col-second even-row-color"><code><a href="RelDataTypeFactory.FieldInfoBuilder.html" class="type-name-link" title="class in org.apache.calcite.rel.type">RelDataTypeFactory.FieldInfoBuilder</a></code></div>
<div class="col-last even-row-color">
<div class="block"><span class="deprecated-label">Deprecated.</span></div>
</div>
</div>
</section>
</li>
<!-- ========== METHOD SUMMARY =========== -->
<li>
<section class="method-summary" id="method-summary">
<h2>Method Summary</h2>
<div id="method-summary-table">
<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab3" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab3', 3)" class="table-tab">Abstract Methods</button><button id="method-summary-table-tab6" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab6', 3)" class="table-tab">Deprecated Methods</button></div>
<div id="method-summary-table.tabpanel" role="tabpanel">
<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Method</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="RelDataTypeFactory.FieldInfoBuilder.html" title="class in org.apache.calcite.rel.type">RelDataTypeFactory.FieldInfoBuilder</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#builder()" class="member-name-link">builder</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Creates a
<a href="RelDataTypeFactory.FieldInfoBuilder.html" title="class in org.apache.calcite.rel.type"><code>RelDataTypeFactory.FieldInfoBuilder</code></a>.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#copyType(org.apache.calcite.rel.type.RelDataType)" class="member-name-link">copyType</a><wbr>(<a href="RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;type)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Duplicates a type, making a deep copy.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#createArrayType(org.apache.calcite.rel.type.RelDataType,long)" class="member-name-link">createArrayType</a><wbr>(<a href="RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;elementType,
long&nbsp;maxCardinality)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Creates an array type.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3 method-summary-table-tab6"><code>@Nullable <a href="RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3 method-summary-table-tab6"><code><a href="#createDecimalProduct(org.apache.calcite.rel.type.RelDataType,org.apache.calcite.rel.type.RelDataType)" class="member-name-link">createDecimalProduct</a><wbr>(<a href="RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;type1,
<a href="RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;type2)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3 method-summary-table-tab6">
<div class="block"><span class="deprecated-label">Deprecated.</span>
<div class="deprecation-comment">Use
<a href="RelDataTypeSystem.html#deriveDecimalMultiplyType(org.apache.calcite.rel.type.RelDataTypeFactory,org.apache.calcite.rel.type.RelDataType,org.apache.calcite.rel.type.RelDataType)"><code>RelDataTypeSystem.deriveDecimalMultiplyType(RelDataTypeFactory, RelDataType, RelDataType)</code></a></div>
</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3 method-summary-table-tab6"><code>@Nullable <a href="RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3 method-summary-table-tab6"><code><a href="#createDecimalQuotient(org.apache.calcite.rel.type.RelDataType,org.apache.calcite.rel.type.RelDataType)" class="member-name-link">createDecimalQuotient</a><wbr>(<a href="RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;type1,
<a href="RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;type2)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3 method-summary-table-tab6">
<div class="block"><span class="deprecated-label">Deprecated.</span>
<div class="deprecation-comment">Use
<a href="RelDataTypeSystem.html#deriveDecimalDivideType(org.apache.calcite.rel.type.RelDataTypeFactory,org.apache.calcite.rel.type.RelDataType,org.apache.calcite.rel.type.RelDataType)"><code>RelDataTypeSystem.deriveDecimalDivideType(RelDataTypeFactory, RelDataType, RelDataType)</code></a></div>
</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#createJavaType(java.lang.Class)" class="member-name-link">createJavaType</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&nbsp;clazz)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Creates a type that corresponds to a Java class.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#createJoinType(org.apache.calcite.rel.type.RelDataType...)" class="member-name-link">createJoinType</a><wbr>(<a href="RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>...&nbsp;types)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Creates a cartesian product type.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#createMapType(org.apache.calcite.rel.type.RelDataType,org.apache.calcite.rel.type.RelDataType)" class="member-name-link">createMapType</a><wbr>(<a href="RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;keyType,
<a href="RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;valueType)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Creates a map type.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#createMeasureType(org.apache.calcite.rel.type.RelDataType)" class="member-name-link">createMeasureType</a><wbr>(<a href="RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;valueType)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Creates a measure type.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#createMultisetType(org.apache.calcite.rel.type.RelDataType,long)" class="member-name-link">createMultisetType</a><wbr>(<a href="RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;elementType,
long&nbsp;maxCardinality)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Creates a multiset type.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#createSqlIntervalType(org.apache.calcite.sql.SqlIntervalQualifier)" class="member-name-link">createSqlIntervalType</a><wbr>(<a href="../../sql/SqlIntervalQualifier.html" title="class in org.apache.calcite.sql">SqlIntervalQualifier</a>&nbsp;intervalQualifier)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Creates a SQL interval type.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#createSqlType(org.apache.calcite.sql.type.SqlTypeName)" class="member-name-link">createSqlType</a><wbr>(<a href="../../sql/type/SqlTypeName.html" title="enum in org.apache.calcite.sql.type">SqlTypeName</a>&nbsp;typeName)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Creates a SQL type with no precision or scale.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#createSqlType(org.apache.calcite.sql.type.SqlTypeName,int)" class="member-name-link">createSqlType</a><wbr>(<a href="../../sql/type/SqlTypeName.html" title="enum in org.apache.calcite.sql.type">SqlTypeName</a>&nbsp;typeName,
int&nbsp;precision)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Creates a SQL type with length (precision) but no scale.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#createSqlType(org.apache.calcite.sql.type.SqlTypeName,int,int)" class="member-name-link">createSqlType</a><wbr>(<a href="../../sql/type/SqlTypeName.html" title="enum in org.apache.calcite.sql.type">SqlTypeName</a>&nbsp;typeName,
int&nbsp;precision,
int&nbsp;scale)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Creates a SQL type with precision and scale.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#createStructType(java.util.List)" class="member-name-link">createStructType</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;? extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Map.Entry.html" title="class or interface in java.util" class="external-link">Map.Entry</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&gt;&gt;&nbsp;fieldList)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Creates a type that represents a structured collection of fieldList,
obtaining the field information from a list of (name, type) pairs.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#createStructType(java.util.List,java.util.List)" class="member-name-link">createStructType</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&gt;&nbsp;typeList,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;&nbsp;fieldNameList)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Creates a type that represents a structured collection of fields.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3 method-summary-table-tab6"><code><a href="RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3 method-summary-table-tab6"><code><a href="#createStructType(org.apache.calcite.rel.type.RelDataTypeFactory.FieldInfo)" class="member-name-link">createStructType</a><wbr>(<a href="RelDataTypeFactory.FieldInfo.html" title="interface in org.apache.calcite.rel.type">RelDataTypeFactory.FieldInfo</a>&nbsp;fieldInfo)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3 method-summary-table-tab6">
<div class="block"><span class="deprecated-label">Deprecated.</span></div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#createStructType(org.apache.calcite.rel.type.StructKind,java.util.List,java.util.List)" class="member-name-link">createStructType</a><wbr>(<a href="StructKind.html" title="enum in org.apache.calcite.rel.type">StructKind</a>&nbsp;kind,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&gt;&nbsp;typeList,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;&nbsp;fieldNameList)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Creates a type that represents a structured collection of fields, given
lists of the names and types of the fields.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#createTypeWithCharsetAndCollation(org.apache.calcite.rel.type.RelDataType,java.nio.charset.Charset,org.apache.calcite.sql.SqlCollation)" class="member-name-link">createTypeWithCharsetAndCollation</a><wbr>(<a href="RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;type,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/nio/charset/Charset.html" title="class or interface in java.nio.charset" class="external-link">Charset</a>&nbsp;charset,
<a href="../../sql/SqlCollation.html" title="class in org.apache.calcite.sql">SqlCollation</a>&nbsp;collation)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Creates a type that is the same as another type but with possibly
different charset or collation.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#createTypeWithNullability(org.apache.calcite.rel.type.RelDataType,boolean)" class="member-name-link">createTypeWithNullability</a><wbr>(<a href="RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;type,
boolean&nbsp;nullable)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Creates a type that is the same as another type but with possibly
different nullability.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#createUnknownType()" class="member-name-link">createUnknownType</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Creates a SQL type that represents the "unknown" type.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#decimalOf(org.apache.calcite.rel.type.RelDataType)" class="member-name-link">decimalOf</a><wbr>(<a href="RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;type)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Create a decimal type equivalent to the numeric <code>type</code>,
this is related to specific system implementation,
you can override this logic if it is required.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/nio/charset/Charset.html" title="class or interface in java.nio.charset" class="external-link">Charset</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#getDefaultCharset()" class="member-name-link">getDefaultCharset</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Returns the default <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/nio/charset/Charset.html" title="class or interface in java.nio.charset" class="external-link"><code>Charset</code></a> (valid if this is a string type).</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="RelDataTypeSystem.html" title="interface in org.apache.calcite.rel.type">RelDataTypeSystem</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#getTypeSystem()" class="member-name-link">getTypeSystem</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Returns the type system.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>@Nullable <a href="RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#leastRestrictive(java.util.List)" class="member-name-link">leastRestrictive</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&gt;&nbsp;types)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Returns the most general of a set of types (that is, one type to which
they can all be cast), or null if conversion is not possible.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3 method-summary-table-tab6"><code>boolean</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3 method-summary-table-tab6"><code><a href="#useDoubleMultiplication(org.apache.calcite.rel.type.RelDataType,org.apache.calcite.rel.type.RelDataType)" class="member-name-link">useDoubleMultiplication</a><wbr>(<a href="RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;type1,
<a href="RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;type2)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3 method-summary-table-tab6">
<div class="block"><span class="deprecated-label">Deprecated.</span>
<div class="deprecation-comment">Use
<a href="RelDataTypeSystem.html#shouldUseDoubleMultiplication(org.apache.calcite.rel.type.RelDataTypeFactory,org.apache.calcite.rel.type.RelDataType,org.apache.calcite.rel.type.RelDataType)"><code>RelDataTypeSystem.shouldUseDoubleMultiplication(RelDataTypeFactory, RelDataType, RelDataType)</code></a></div>
</div>
</div>
</div>
</div>
</div>
</section>
</li>
</ul>
</section>
<section class="details">
<ul class="details-list">
<!-- ============ METHOD DETAIL ========== -->
<li>
<section class="method-details" id="method-detail">
<h2>Method Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="getTypeSystem()">
<h3>getTypeSystem</h3>
<div class="member-signature"><span class="return-type"><a href="RelDataTypeSystem.html" title="interface in org.apache.calcite.rel.type">RelDataTypeSystem</a></span>&nbsp;<span class="element-name">getTypeSystem</span>()</div>
<div class="block">Returns the type system.</div>
<dl class="notes">
<dt>Returns:</dt>
<dd>Type system</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="createJavaType(java.lang.Class)">
<h3>createJavaType</h3>
<div class="member-signature"><span class="return-type"><a href="RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></span>&nbsp;<span class="element-name">createJavaType</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&nbsp;clazz)</span></div>
<div class="block">Creates a type that corresponds to a Java class.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>clazz</code> - the Java class used to define the type</dd>
<dt>Returns:</dt>
<dd>canonical Java type descriptor</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="createJoinType(org.apache.calcite.rel.type.RelDataType...)">
<h3>createJoinType</h3>
<div class="member-signature"><span class="return-type"><a href="RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></span>&nbsp;<span class="element-name">createJoinType</span><wbr><span class="parameters">(<a href="RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>...&nbsp;types)</span></div>
<div class="block">Creates a cartesian product type.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>types</code> - array of types to be joined</dd>
<dt>Returns:</dt>
<dd>canonical join type descriptor</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="createStructType(org.apache.calcite.rel.type.StructKind,java.util.List,java.util.List)">
<h3>createStructType</h3>
<div class="member-signature"><span class="return-type"><a href="RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></span>&nbsp;<span class="element-name">createStructType</span><wbr><span class="parameters">(<a href="StructKind.html" title="enum in org.apache.calcite.rel.type">StructKind</a>&nbsp;kind,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&gt;&nbsp;typeList,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;&nbsp;fieldNameList)</span></div>
<div class="block">Creates a type that represents a structured collection of fields, given
lists of the names and types of the fields.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>kind</code> - Name resolution policy</dd>
<dd><code>typeList</code> - types of the fields</dd>
<dd><code>fieldNameList</code> - names of the fields</dd>
<dt>Returns:</dt>
<dd>canonical struct type descriptor</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="createStructType(java.util.List,java.util.List)">
<h3>createStructType</h3>
<div class="member-signature"><span class="return-type"><a href="RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></span>&nbsp;<span class="element-name">createStructType</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&gt;&nbsp;typeList,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;&nbsp;fieldNameList)</span></div>
<div class="block">Creates a type that represents a structured collection of fields.
Shorthand for <code>createStructType(StructKind.FULLY_QUALIFIED, typeList,
fieldNameList)</code>.</div>
</section>
</li>
<li>
<section class="detail" id="createStructType(org.apache.calcite.rel.type.RelDataTypeFactory.FieldInfo)">
<h3>createStructType</h3>
<div class="member-signature"><span class="annotations"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Deprecated.html" title="class or interface in java.lang" class="external-link">@Deprecated</a>
</span><span class="return-type"><a href="RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></span>&nbsp;<span class="element-name">createStructType</span><wbr><span class="parameters">(<a href="RelDataTypeFactory.FieldInfo.html" title="interface in org.apache.calcite.rel.type">RelDataTypeFactory.FieldInfo</a>&nbsp;fieldInfo)</span></div>
<div class="deprecation-block"><span class="deprecated-label">Deprecated.</span></div>
<div class="block">Creates a type that represents a structured collection of fields,
obtaining the field information via a callback.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>fieldInfo</code> - callback for field information</dd>
<dt>Returns:</dt>
<dd>canonical struct type descriptor</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="createStructType(java.util.List)">
<h3>createStructType</h3>
<div class="member-signature"><span class="return-type"><a href="RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></span>&nbsp;<span class="element-name">createStructType</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;? extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Map.Entry.html" title="class or interface in java.util" class="external-link">Map.Entry</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&gt;&gt;&nbsp;fieldList)</span></div>
<div class="block">Creates a type that represents a structured collection of fieldList,
obtaining the field information from a list of (name, type) pairs.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>fieldList</code> - List of (name, type) pairs</dd>
<dt>Returns:</dt>
<dd>canonical struct type descriptor</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="createArrayType(org.apache.calcite.rel.type.RelDataType,long)">
<h3>createArrayType</h3>
<div class="member-signature"><span class="return-type"><a href="RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></span>&nbsp;<span class="element-name">createArrayType</span><wbr><span class="parameters">(<a href="RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;elementType,
long&nbsp;maxCardinality)</span></div>
<div class="block">Creates an array type. Arrays are ordered collections of elements.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>elementType</code> - type of the elements of the array</dd>
<dd><code>maxCardinality</code> - maximum array size, or -1 for unlimited</dd>
<dt>Returns:</dt>
<dd>canonical array type descriptor</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="createMapType(org.apache.calcite.rel.type.RelDataType,org.apache.calcite.rel.type.RelDataType)">
<h3>createMapType</h3>
<div class="member-signature"><span class="return-type"><a href="RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></span>&nbsp;<span class="element-name">createMapType</span><wbr><span class="parameters">(<a href="RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;keyType,
<a href="RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;valueType)</span></div>
<div class="block">Creates a map type. Maps are unordered collections of key/value pairs.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>keyType</code> - type of the keys of the map</dd>
<dd><code>valueType</code> - type of the values of the map</dd>
<dt>Returns:</dt>
<dd>canonical map type descriptor</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="createMeasureType(org.apache.calcite.rel.type.RelDataType)">
<h3>createMeasureType</h3>
<div class="member-signature"><span class="return-type"><a href="RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></span>&nbsp;<span class="element-name">createMeasureType</span><wbr><span class="parameters">(<a href="RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;valueType)</span></div>
<div class="block">Creates a measure type.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>valueType</code> - type of the values of the measure</dd>
<dt>Returns:</dt>
<dd>canonical measure type descriptor</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="createMultisetType(org.apache.calcite.rel.type.RelDataType,long)">
<h3>createMultisetType</h3>
<div class="member-signature"><span class="return-type"><a href="RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></span>&nbsp;<span class="element-name">createMultisetType</span><wbr><span class="parameters">(<a href="RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;elementType,
long&nbsp;maxCardinality)</span></div>
<div class="block">Creates a multiset type. Multisets are unordered collections of elements.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>elementType</code> - type of the elements of the multiset</dd>
<dd><code>maxCardinality</code> - maximum collection size, or -1 for unlimited</dd>
<dt>Returns:</dt>
<dd>canonical multiset type descriptor</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="copyType(org.apache.calcite.rel.type.RelDataType)">
<h3>copyType</h3>
<div class="member-signature"><span class="return-type"><a href="RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></span>&nbsp;<span class="element-name">copyType</span><wbr><span class="parameters">(<a href="RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;type)</span></div>
<div class="block">Duplicates a type, making a deep copy. Normally, this is a no-op, since
canonical type objects are returned. However, it is useful when copying a
type from one factory to another.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>type</code> - input type</dd>
<dt>Returns:</dt>
<dd>output type, a new object equivalent to input type</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="createTypeWithNullability(org.apache.calcite.rel.type.RelDataType,boolean)">
<h3>createTypeWithNullability</h3>
<div class="member-signature"><span class="return-type"><a href="RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></span>&nbsp;<span class="element-name">createTypeWithNullability</span><wbr><span class="parameters">(<a href="RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;type,
boolean&nbsp;nullable)</span></div>
<div class="block">Creates a type that is the same as another type but with possibly
different nullability. The output type may be identical to the input
type. For type systems without a concept of nullability, the return value
is always the same as the input.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>type</code> - input type</dd>
<dd><code>nullable</code> - true to request a nullable type; false to request a NOT
NULL type</dd>
<dt>Returns:</dt>
<dd>output type, same as input type except with specified nullability</dd>
<dt>Throws:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/NullPointerException.html" title="class or interface in java.lang" class="external-link">NullPointerException</a></code> - if type is null</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="createTypeWithCharsetAndCollation(org.apache.calcite.rel.type.RelDataType,java.nio.charset.Charset,org.apache.calcite.sql.SqlCollation)">
<h3>createTypeWithCharsetAndCollation</h3>
<div class="member-signature"><span class="return-type"><a href="RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></span>&nbsp;<span class="element-name">createTypeWithCharsetAndCollation</span><wbr><span class="parameters">(<a href="RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;type,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/nio/charset/Charset.html" title="class or interface in java.nio.charset" class="external-link">Charset</a>&nbsp;charset,
<a href="../../sql/SqlCollation.html" title="class in org.apache.calcite.sql">SqlCollation</a>&nbsp;collation)</span></div>
<div class="block">Creates a type that is the same as another type but with possibly
different charset or collation. For types without a concept of charset or
collation this function must throw an error.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>type</code> - input type</dd>
<dd><code>charset</code> - charset to assign</dd>
<dd><code>collation</code> - collation to assign</dd>
<dt>Returns:</dt>
<dd>output type, same as input type except with specified charset and
collation</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="getDefaultCharset()">
<h3>getDefaultCharset</h3>
<div class="member-signature"><span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/nio/charset/Charset.html" title="class or interface in java.nio.charset" class="external-link">Charset</a></span>&nbsp;<span class="element-name">getDefaultCharset</span>()</div>
<div class="block">Returns the default <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/nio/charset/Charset.html" title="class or interface in java.nio.charset" class="external-link"><code>Charset</code></a> (valid if this is a string type).</div>
</section>
</li>
<li>
<section class="detail" id="leastRestrictive(java.util.List)">
<h3>leastRestrictive</h3>
<div class="member-signature"><span class="return-type">@Nullable <a href="RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></span>&nbsp;<span class="element-name">leastRestrictive</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&gt;&nbsp;types)</span></div>
<div class="block">Returns the most general of a set of types (that is, one type to which
they can all be cast), or null if conversion is not possible. The result
may be a new type that is less restrictive than any of the input types,
e.g. <code>leastRestrictive(INT, NUMERIC(3, 2))</code> could be
<code>NUMERIC(12, 2)</code>.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>types</code> - input types to be combined using union (not null, not empty)</dd>
<dt>Returns:</dt>
<dd>canonical union type descriptor</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="createSqlType(org.apache.calcite.sql.type.SqlTypeName)">
<h3>createSqlType</h3>
<div class="member-signature"><span class="return-type"><a href="RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></span>&nbsp;<span class="element-name">createSqlType</span><wbr><span class="parameters">(<a href="../../sql/type/SqlTypeName.html" title="enum in org.apache.calcite.sql.type">SqlTypeName</a>&nbsp;typeName)</span></div>
<div class="block">Creates a SQL type with no precision or scale.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>typeName</code> - Name of the type, for example <a href="../../sql/type/SqlTypeName.html#BOOLEAN"><code>SqlTypeName.BOOLEAN</code></a>,
never null</dd>
<dt>Returns:</dt>
<dd>canonical type descriptor</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="createUnknownType()">
<h3>createUnknownType</h3>
<div class="member-signature"><span class="return-type"><a href="RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></span>&nbsp;<span class="element-name">createUnknownType</span>()</div>
<div class="block">Creates a SQL type that represents the "unknown" type.
It is only equal to itself, and is distinct from the NULL type.</div>
<dl class="notes">
<dt>Returns:</dt>
<dd>unknown type</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="createSqlType(org.apache.calcite.sql.type.SqlTypeName,int)">
<h3>createSqlType</h3>
<div class="member-signature"><span class="return-type"><a href="RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></span>&nbsp;<span class="element-name">createSqlType</span><wbr><span class="parameters">(<a href="../../sql/type/SqlTypeName.html" title="enum in org.apache.calcite.sql.type">SqlTypeName</a>&nbsp;typeName,
int&nbsp;precision)</span></div>
<div class="block">Creates a SQL type with length (precision) but no scale.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>typeName</code> - Name of the type, for example <a href="../../sql/type/SqlTypeName.html#VARCHAR"><code>SqlTypeName.VARCHAR</code></a>.
Never null.</dd>
<dd><code>precision</code> - Maximum length of the value (non-numeric types) or the
precision of the value (numeric/datetime types).
Must be non-negative or
<a href="RelDataType.html#PRECISION_NOT_SPECIFIED"><code>RelDataType.PRECISION_NOT_SPECIFIED</code></a>.</dd>
<dt>Returns:</dt>
<dd>canonical type descriptor</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="createSqlType(org.apache.calcite.sql.type.SqlTypeName,int,int)">
<h3>createSqlType</h3>
<div class="member-signature"><span class="return-type"><a href="RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></span>&nbsp;<span class="element-name">createSqlType</span><wbr><span class="parameters">(<a href="../../sql/type/SqlTypeName.html" title="enum in org.apache.calcite.sql.type">SqlTypeName</a>&nbsp;typeName,
int&nbsp;precision,
int&nbsp;scale)</span></div>
<div class="block">Creates a SQL type with precision and scale.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>typeName</code> - Name of the type, for example <a href="../../sql/type/SqlTypeName.html#DECIMAL"><code>SqlTypeName.DECIMAL</code></a>.
Never null.</dd>
<dd><code>precision</code> - Precision of the value.
Must be non-negative or
<a href="RelDataType.html#PRECISION_NOT_SPECIFIED"><code>RelDataType.PRECISION_NOT_SPECIFIED</code></a>.</dd>
<dd><code>scale</code> - scale of the values, i.e. the number of decimal places to
shift the value. For example, a NUMBER(10,3) value of
"123.45" is represented "123450" (that is, multiplied by
10^3). A negative scale <em>is</em> valid.</dd>
<dt>Returns:</dt>
<dd>canonical type descriptor</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="createSqlIntervalType(org.apache.calcite.sql.SqlIntervalQualifier)">
<h3>createSqlIntervalType</h3>
<div class="member-signature"><span class="return-type"><a href="RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></span>&nbsp;<span class="element-name">createSqlIntervalType</span><wbr><span class="parameters">(<a href="../../sql/SqlIntervalQualifier.html" title="class in org.apache.calcite.sql">SqlIntervalQualifier</a>&nbsp;intervalQualifier)</span></div>
<div class="block">Creates a SQL interval type.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>intervalQualifier</code> - contains information if it is a year-month or a
day-time interval along with precision information</dd>
<dt>Returns:</dt>
<dd>canonical type descriptor</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="createDecimalProduct(org.apache.calcite.rel.type.RelDataType,org.apache.calcite.rel.type.RelDataType)">
<h3>createDecimalProduct</h3>
<div class="member-signature"><span class="annotations"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Deprecated.html" title="class or interface in java.lang" class="external-link">@Deprecated</a>
</span><span class="return-type">@Nullable <a href="RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></span>&nbsp;<span class="element-name">createDecimalProduct</span><wbr><span class="parameters">(<a href="RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;type1,
<a href="RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;type2)</span></div>
<div class="deprecation-block"><span class="deprecated-label">Deprecated.</span>
<div class="deprecation-comment">Use
<a href="RelDataTypeSystem.html#deriveDecimalMultiplyType(org.apache.calcite.rel.type.RelDataTypeFactory,org.apache.calcite.rel.type.RelDataType,org.apache.calcite.rel.type.RelDataType)"><code>RelDataTypeSystem.deriveDecimalMultiplyType(RelDataTypeFactory, RelDataType, RelDataType)</code></a></div>
</div>
<div class="block">Infers the return type of a decimal multiplication. Decimal
multiplication involves at least one decimal operand and requires both
operands to have exact numeric types.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>type1</code> - type of the first operand</dd>
<dd><code>type2</code> - type of the second operand</dd>
<dt>Returns:</dt>
<dd>the result type for a decimal multiplication, or null if decimal
multiplication should not be applied to the operands.</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="useDoubleMultiplication(org.apache.calcite.rel.type.RelDataType,org.apache.calcite.rel.type.RelDataType)">
<h3>useDoubleMultiplication</h3>
<div class="member-signature"><span class="annotations"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Deprecated.html" title="class or interface in java.lang" class="external-link">@Deprecated</a>
</span><span class="return-type">boolean</span>&nbsp;<span class="element-name">useDoubleMultiplication</span><wbr><span class="parameters">(<a href="RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;type1,
<a href="RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;type2)</span></div>
<div class="deprecation-block"><span class="deprecated-label">Deprecated.</span>
<div class="deprecation-comment">Use
<a href="RelDataTypeSystem.html#shouldUseDoubleMultiplication(org.apache.calcite.rel.type.RelDataTypeFactory,org.apache.calcite.rel.type.RelDataType,org.apache.calcite.rel.type.RelDataType)"><code>RelDataTypeSystem.shouldUseDoubleMultiplication(RelDataTypeFactory, RelDataType, RelDataType)</code></a></div>
</div>
<div class="block">Returns whether a decimal multiplication should be implemented by casting
arguments to double values.
<p>Pre-condition: <code>createDecimalProduct(type1, type2) != null</code></div>
</section>
</li>
<li>
<section class="detail" id="createDecimalQuotient(org.apache.calcite.rel.type.RelDataType,org.apache.calcite.rel.type.RelDataType)">
<h3>createDecimalQuotient</h3>
<div class="member-signature"><span class="annotations"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Deprecated.html" title="class or interface in java.lang" class="external-link">@Deprecated</a>
</span><span class="return-type">@Nullable <a href="RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></span>&nbsp;<span class="element-name">createDecimalQuotient</span><wbr><span class="parameters">(<a href="RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;type1,
<a href="RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;type2)</span></div>
<div class="deprecation-block"><span class="deprecated-label">Deprecated.</span>
<div class="deprecation-comment">Use
<a href="RelDataTypeSystem.html#deriveDecimalDivideType(org.apache.calcite.rel.type.RelDataTypeFactory,org.apache.calcite.rel.type.RelDataType,org.apache.calcite.rel.type.RelDataType)"><code>RelDataTypeSystem.deriveDecimalDivideType(RelDataTypeFactory, RelDataType, RelDataType)</code></a></div>
</div>
<div class="block">Infers the return type of a decimal division. Decimal division involves
at least one decimal operand and requires both operands to have exact
numeric types.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>type1</code> - type of the first operand</dd>
<dd><code>type2</code> - type of the second operand</dd>
<dt>Returns:</dt>
<dd>the result type for a decimal division, or null if decimal
division should not be applied to the operands.</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="decimalOf(org.apache.calcite.rel.type.RelDataType)">
<h3>decimalOf</h3>
<div class="member-signature"><span class="return-type"><a href="RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></span>&nbsp;<span class="element-name">decimalOf</span><wbr><span class="parameters">(<a href="RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;type)</span></div>
<div class="block">Create a decimal type equivalent to the numeric <code>type</code>,
this is related to specific system implementation,
you can override this logic if it is required.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>type</code> - the numeric type to create decimal type with</dd>
<dt>Returns:</dt>
<dd>decimal equivalence of the numeric type.</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="builder()">
<h3>builder</h3>
<div class="member-signature"><span class="return-type"><a href="RelDataTypeFactory.FieldInfoBuilder.html" title="class in org.apache.calcite.rel.type">RelDataTypeFactory.FieldInfoBuilder</a></span>&nbsp;<span class="element-name">builder</span>()</div>
<div class="block">Creates a
<a href="RelDataTypeFactory.FieldInfoBuilder.html" title="class in org.apache.calcite.rel.type"><code>RelDataTypeFactory.FieldInfoBuilder</code></a>.
But since <code>FieldInfoBuilder</code> is deprecated, we recommend that you use
its base class <a href="RelDataTypeFactory.Builder.html" title="class in org.apache.calcite.rel.type"><code>RelDataTypeFactory.Builder</code></a>, which is not deprecated.</div>
</section>
</li>
</ul>
</section>
</li>
</ul>
</section>
<!-- ========= END OF CLASS DATA ========= -->
</main>
<footer role="contentinfo">
<hr>
<p class="legal-copy"><small>Copyright &copy; 2012-2023 Apache Software Foundation. All Rights Reserved.</small></p>
</footer>
</div>
</div>
</body>
</html>