blob: a1e1dbee9fb206cf5d9ae8c7c43dd25f30a3a981 [file] [log] [blame]
<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc -->
<title>SqlCastFunction (Apache Calcite API)</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../jquery/jquery-ui.css" title="Style">
<script type="text/javascript" src="../../../../../script.js"></script>
<script type="text/javascript" src="../../../../../jquery/jszip/dist/jszip.min.js"></script>
<script type="text/javascript" src="../../../../../jquery/jszip-utils/dist/jszip-utils.min.js"></script>
<!--[if IE]>
<script type="text/javascript" src="../../../../../jquery/jszip-utils/dist/jszip-utils-ie.min.js"></script>
<![endif]-->
<script type="text/javascript" src="../../../../../jquery/jquery-3.3.1.js"></script>
<script type="text/javascript" src="../../../../../jquery/jquery-migrate-3.0.1.js"></script>
<script type="text/javascript" src="../../../../../jquery/jquery-ui.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="SqlCastFunction (Apache Calcite API)";
}
}
catch(err) {
}
//-->
var data = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
var pathtoroot = "../../../../../";
var useModuleDirectories = true;
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<nav role="navigation">
<div class="fixedNav">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a id="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/SqlCastFunction.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<ul class="navListSearch">
<li><label for="search">SEARCH:</label>
<input type="text" id="search" value="search" disabled="disabled">
<input type="reset" id="reset" value="reset" disabled="disabled">
</li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a id="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
</div>
<div class="navPadding">&nbsp;</div>
<script type="text/javascript"><!--
$('.navPadding').css('padding-top', $('.fixedNav').css("height"));
//-->
</script>
</nav>
</header>
<!-- ======== START OF CLASS DATA ======== -->
<main role="main">
<div class="header">
<div class="subTitle"><span class="packageLabelInType">Package</span>&nbsp;<a href="package-summary.html">org.apache.calcite.sql.fun</a></div>
<h2 title="Class SqlCastFunction" class="title">Class SqlCastFunction</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li>java.lang.Object</li>
<li>
<ul class="inheritance">
<li><a href="../SqlOperator.html" title="class in org.apache.calcite.sql">org.apache.calcite.sql.SqlOperator</a></li>
<li>
<ul class="inheritance">
<li><a href="../SqlFunction.html" title="class in org.apache.calcite.sql">org.apache.calcite.sql.SqlFunction</a></li>
<li>
<ul class="inheritance">
<li>org.apache.calcite.sql.fun.SqlCastFunction</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<hr>
<pre>public class <span class="typeNameLabel">SqlCastFunction</span>
extends <a href="../SqlFunction.html" title="class in org.apache.calcite.sql">SqlFunction</a></pre>
<div class="block">SqlCastFunction. Note that the std functions are really singleton objects,
because they always get fetched via the StdOperatorTable. So you can't store
any local info in the class and hence the return type data is maintained in
operand[1] through the validation phase.
<p>Can be used for both <a href="../SqlCall.html" title="class in org.apache.calcite.sql"><code>SqlCall</code></a> and
<a href="../../rex/RexCall.html" title="class in org.apache.calcite.rex"><code>RexCall</code></a>.
Note that the <code>SqlCall</code> has two operands (expression and type),
while the <code>RexCall</code> has one operand (expression) and the type is
obtained from <a href="../../rex/RexNode.html#getType()"><code>RexNode.getType()</code></a>.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="SqlCastOperator.html" title="class in org.apache.calcite.sql.fun"><code>SqlCastOperator</code></a></dd>
</dl>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- =========== FIELD SUMMARY =========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="field.summary">
<!-- -->
</a>
<h3>Field Summary</h3>
<table class="memberSummary">
<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Field</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>private com.google.common.collect.SetMultimap&lt;<a href="../type/SqlTypeFamily.html" title="enum in org.apache.calcite.sql.type">SqlTypeFamily</a>,&#8203;<a href="../type/SqlTypeFamily.html" title="enum in org.apache.calcite.sql.type">SqlTypeFamily</a>&gt;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#nonMonotonicCasts">nonMonotonicCasts</a></span></code></th>
<td class="colLast">
<div class="block">Map of all casts that do not preserve monotonicity.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a id="fields.inherited.from.class.org.apache.calcite.sql.SqlOperator">
<!-- -->
</a>
<h3>Fields inherited from class&nbsp;org.apache.calcite.sql.<a href="../SqlOperator.html" title="class in org.apache.calcite.sql">SqlOperator</a></h3>
<code><a href="../SqlOperator.html#kind">kind</a>, <a href="../SqlOperator.html#MDX_PRECEDENCE">MDX_PRECEDENCE</a>, <a href="../SqlOperator.html#NL">NL</a></code></li>
</ul>
</li>
</ul>
</section>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="constructor.summary">
<!-- -->
</a>
<h3>Constructor Summary</h3>
<table class="memberSummary">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Constructor</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr class="altColor">
<th class="colConstructorName" scope="row"><code><span class="memberNameLink"><a href="#%3Cinit%3E()">SqlCastFunction</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
</table>
</li>
</ul>
</section>
<!-- ========== METHOD SUMMARY =========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Method</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#checkOperandTypes(org.apache.calcite.sql.SqlCallBinding,boolean)">checkOperandTypes</a></span>&#8203;(<a href="../SqlCallBinding.html" title="class in org.apache.calcite.sql">SqlCallBinding</a>&nbsp;callBinding,
boolean&nbsp;throwOnFailure)</code></th>
<td class="colLast">
<div class="block">Makes sure that the number and types of arguments are allowable.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code><a href="../validate/SqlMonotonicity.html" title="enum in org.apache.calcite.sql.validate">SqlMonotonicity</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getMonotonicity(org.apache.calcite.sql.SqlOperatorBinding)">getMonotonicity</a></span>&#8203;(<a href="../SqlOperatorBinding.html" title="class in org.apache.calcite.sql">SqlOperatorBinding</a>&nbsp;call)</code></th>
<td class="colLast">
<div class="block">Returns whether a call to this operator is monotonic.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code><a href="../SqlOperandCountRange.html" title="interface in org.apache.calcite.sql">SqlOperandCountRange</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getOperandCountRange()">getOperandCountRange</a></span>()</code></th>
<td class="colLast">
<div class="block">Returns a constraint on the number of operands expected by this operator.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>java.lang.String</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getSignatureTemplate(int)">getSignatureTemplate</a></span>&#8203;(int&nbsp;operandsCount)</code></th>
<td class="colLast">
<div class="block">Returns a template describing how the operator signature is to be built.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code><a href="../SqlSyntax.html" title="enum in org.apache.calcite.sql">SqlSyntax</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getSyntax()">getSyntax</a></span>()</code></th>
<td class="colLast">
<div class="block">Returns the syntactic type of this operator, never null.</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code><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="#inferReturnType(org.apache.calcite.sql.SqlOperatorBinding)">inferReturnType</a></span>&#8203;(<a href="../SqlOperatorBinding.html" title="class in org.apache.calcite.sql">SqlOperatorBinding</a>&nbsp;opBinding)</code></th>
<td class="colLast">
<div class="block">Infers the return type of an invocation of this operator; only called
after the number and types of operands have already been validated.</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#unparse(org.apache.calcite.sql.SqlWriter,org.apache.calcite.sql.SqlCall,int,int)">unparse</a></span>&#8203;(<a href="../SqlWriter.html" title="interface in org.apache.calcite.sql">SqlWriter</a>&nbsp;writer,
<a href="../SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a>&nbsp;call,
int&nbsp;leftPrec,
int&nbsp;rightPrec)</code></th>
<td class="colLast">
<div class="block">Writes a SQL representation of a call to this operator to a writer,
including parentheses if the operators on either side are of greater
precedence.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.org.apache.calcite.sql.SqlFunction">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;org.apache.calcite.sql.<a href="../SqlFunction.html" title="class in org.apache.calcite.sql">SqlFunction</a></h3>
<code><a href="../SqlFunction.html#deriveType(org.apache.calcite.sql.validate.SqlValidator,org.apache.calcite.sql.validate.SqlValidatorScope,org.apache.calcite.sql.SqlCall)">deriveType</a>, <a href="../SqlFunction.html#getFunctionType()">getFunctionType</a>, <a href="../SqlFunction.html#getNameAsId()">getNameAsId</a>, <a href="../SqlFunction.html#getParamNames()">getParamNames</a>, <a href="../SqlFunction.html#getParamTypes()">getParamTypes</a>, <a href="../SqlFunction.html#getSqlIdentifier()">getSqlIdentifier</a>, <a href="../SqlFunction.html#isQuantifierAllowed()">isQuantifierAllowed</a>, <a href="../SqlFunction.html#validateCall(org.apache.calcite.sql.SqlCall,org.apache.calcite.sql.validate.SqlValidator,org.apache.calcite.sql.validate.SqlValidatorScope,org.apache.calcite.sql.validate.SqlValidatorScope)">validateCall</a>, <a href="../SqlFunction.html#validateQuantifier(org.apache.calcite.sql.validate.SqlValidator,org.apache.calcite.sql.SqlCall)">validateQuantifier</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.org.apache.calcite.sql.SqlOperator">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;org.apache.calcite.sql.<a href="../SqlOperator.html" title="class in org.apache.calcite.sql">SqlOperator</a></h3>
<code><a href="../SqlOperator.html#acceptCall(org.apache.calcite.sql.util.SqlVisitor,org.apache.calcite.sql.SqlCall)">acceptCall</a>, <a href="../SqlOperator.html#acceptCall(org.apache.calcite.sql.util.SqlVisitor,org.apache.calcite.sql.SqlCall,boolean,org.apache.calcite.sql.util.SqlBasicVisitor.ArgHandler)">acceptCall</a>, <a href="../SqlOperator.html#adjustType(org.apache.calcite.sql.validate.SqlValidator,org.apache.calcite.sql.SqlCall,org.apache.calcite.rel.type.RelDataType)">adjustType</a>, <a href="../SqlOperator.html#allowsFraming()">allowsFraming</a>, <a href="../SqlOperator.html#argumentMustBeScalar(int)">argumentMustBeScalar</a>, <a href="../SqlOperator.html#checkOperandCount(org.apache.calcite.sql.validate.SqlValidator,org.apache.calcite.sql.type.SqlOperandTypeChecker,org.apache.calcite.sql.SqlCall)">checkOperandCount</a>, <a href="../SqlOperator.html#constructArgNameList(org.apache.calcite.sql.SqlCall)">constructArgNameList</a>, <a href="../SqlOperator.html#constructArgTypeList(org.apache.calcite.sql.validate.SqlValidator,org.apache.calcite.sql.validate.SqlValidatorScope,org.apache.calcite.sql.SqlCall,java.util.List,boolean)">constructArgTypeList</a>, <a href="../SqlOperator.html#constructOperandList(org.apache.calcite.sql.validate.SqlValidator,org.apache.calcite.sql.SqlCall,java.util.List)">constructOperandList</a>, <a href="../SqlOperator.html#createCall(org.apache.calcite.sql.parser.SqlParserPos,java.util.List)">createCall</a>, <a href="../SqlOperator.html#createCall(org.apache.calcite.sql.parser.SqlParserPos,org.apache.calcite.sql.SqlNode...)">createCall</a>, <a href="../SqlOperator.html#createCall(org.apache.calcite.sql.SqlLiteral,org.apache.calcite.sql.parser.SqlParserPos,org.apache.calcite.sql.SqlNode...)">createCall</a>, <a href="../SqlOperator.html#createCall(org.apache.calcite.sql.SqlNodeList)">createCall</a>, <a href="../SqlOperator.html#equals(java.lang.Object)">equals</a>, <a href="../SqlOperator.html#getAllowedSignatures()">getAllowedSignatures</a>, <a href="../SqlOperator.html#getAllowedSignatures(java.lang.String)">getAllowedSignatures</a>, <a href="../SqlOperator.html#getKind()">getKind</a>, <a href="../SqlOperator.html#getLeftPrec()">getLeftPrec</a>, <a href="../SqlOperator.html#getMonotonicity(org.apache.calcite.sql.SqlCall,org.apache.calcite.sql.validate.SqlValidatorScope)">getMonotonicity</a>, <a href="../SqlOperator.html#getName()">getName</a>, <a href="../SqlOperator.html#getOperandTypeChecker()">getOperandTypeChecker</a>, <a href="../SqlOperator.html#getOperandTypeInference()">getOperandTypeInference</a>, <a href="../SqlOperator.html#getReturnTypeInference()">getReturnTypeInference</a>, <a href="../SqlOperator.html#getRightPrec()">getRightPrec</a>, <a href="../SqlOperator.html#hashCode()">hashCode</a>, <a href="../SqlOperator.html#inferReturnType(org.apache.calcite.rel.type.RelDataTypeFactory,java.util.List)">inferReturnType</a>, <a href="../SqlOperator.html#isAggregator()">isAggregator</a>, <a href="../SqlOperator.html#isDeterministic()">isDeterministic</a>, <a href="../SqlOperator.html#isDynamicFunction()">isDynamicFunction</a>, <a href="../SqlOperator.html#isGroup()">isGroup</a>, <a href="../SqlOperator.html#isGroupAuxiliary()">isGroupAuxiliary</a>, <a href="../SqlOperator.html#isName(java.lang.String,boolean)">isName</a>, <a href="../SqlOperator.html#leftPrec(int,boolean)">leftPrec</a>, <a href="../SqlOperator.html#preValidateCall(org.apache.calcite.sql.validate.SqlValidator,org.apache.calcite.sql.validate.SqlValidatorScope,org.apache.calcite.sql.SqlCall)">preValidateCall</a>, <a href="../SqlOperator.html#requiresDecimalExpansion()">requiresDecimalExpansion</a>, <a href="../SqlOperator.html#requiresOrder()">requiresOrder</a>, <a href="../SqlOperator.html#requiresOver()">requiresOver</a>, <a href="../SqlOperator.html#rewriteCall(org.apache.calcite.sql.validate.SqlValidator,org.apache.calcite.sql.SqlCall)">rewriteCall</a>, <a href="../SqlOperator.html#rightPrec(int,boolean)">rightPrec</a>, <a href="../SqlOperator.html#toString()">toString</a>, <a href="../SqlOperator.html#unparseListClause(org.apache.calcite.sql.SqlWriter,org.apache.calcite.sql.SqlNode)">unparseListClause</a>, <a href="../SqlOperator.html#unparseListClause(org.apache.calcite.sql.SqlWriter,org.apache.calcite.sql.SqlNode,org.apache.calcite.sql.SqlKind)">unparseListClause</a>, <a href="../SqlOperator.html#validateOperands(org.apache.calcite.sql.validate.SqlValidator,org.apache.calcite.sql.validate.SqlValidatorScope,org.apache.calcite.sql.SqlCall)">validateOperands</a>, <a href="../SqlOperator.html#validRexOperands(int,org.apache.calcite.util.Litmus)">validRexOperands</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.java.lang.Object">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.Object</h3>
<code>clone, finalize, getClass, notify, notifyAll, wait, wait, wait</code></li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ FIELD DETAIL =========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="field.detail">
<!-- -->
</a>
<h3>Field Detail</h3>
<a id="nonMonotonicCasts">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>nonMonotonicCasts</h4>
<pre>private final&nbsp;com.google.common.collect.SetMultimap&lt;<a href="../type/SqlTypeFamily.html" title="enum in org.apache.calcite.sql.type">SqlTypeFamily</a>,&#8203;<a href="../type/SqlTypeFamily.html" title="enum in org.apache.calcite.sql.type">SqlTypeFamily</a>&gt; nonMonotonicCasts</pre>
<div class="block">Map of all casts that do not preserve monotonicity.</div>
</li>
</ul>
</li>
</ul>
</section>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="constructor.detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a id="&lt;init&gt;()">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>SqlCastFunction</h4>
<pre>public&nbsp;SqlCastFunction()</pre>
</li>
</ul>
</li>
</ul>
</section>
<!-- ============ METHOD DETAIL ========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a id="inferReturnType(org.apache.calcite.sql.SqlOperatorBinding)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>inferReturnType</h4>
<pre class="methodSignature">public&nbsp;<a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;inferReturnType&#8203;(<a href="../SqlOperatorBinding.html" title="class in org.apache.calcite.sql">SqlOperatorBinding</a>&nbsp;opBinding)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../SqlOperator.html#inferReturnType(org.apache.calcite.sql.SqlOperatorBinding)">SqlOperator</a></code></span></div>
<div class="block">Infers the return type of an invocation of this operator; only called
after the number and types of operands have already been validated.
Subclasses must either override this method or supply an instance of
<a href="../type/SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type"><code>SqlReturnTypeInference</code></a> to the constructor.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../SqlOperator.html#inferReturnType(org.apache.calcite.sql.SqlOperatorBinding)">inferReturnType</a></code>&nbsp;in class&nbsp;<code><a href="../SqlOperator.html" title="class in org.apache.calcite.sql">SqlOperator</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>opBinding</code> - description of invocation (not necessarily a
<a href="../SqlCall.html" title="class in org.apache.calcite.sql"><code>SqlCall</code></a>)</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>inferred return type</dd>
</dl>
</li>
</ul>
<a id="getSignatureTemplate(int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getSignatureTemplate</h4>
<pre class="methodSignature">public&nbsp;java.lang.String&nbsp;getSignatureTemplate&#8203;(int&nbsp;operandsCount)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../SqlOperator.html#getSignatureTemplate(int)">SqlOperator</a></code></span></div>
<div class="block">Returns a template describing how the operator signature is to be built.
E.g for the binary + operator the template looks like "{1} {0} {2}" {0}
is the operator, subsequent numbers are operands.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../SqlOperator.html#getSignatureTemplate(int)">getSignatureTemplate</a></code>&nbsp;in class&nbsp;<code><a href="../SqlOperator.html" title="class in org.apache.calcite.sql">SqlOperator</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>operandsCount</code> - is used with functions that can take a variable
number of operands</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>signature template, or null to indicate that a default template
will suffice</dd>
</dl>
</li>
</ul>
<a id="getOperandCountRange()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getOperandCountRange</h4>
<pre class="methodSignature">public&nbsp;<a href="../SqlOperandCountRange.html" title="interface in org.apache.calcite.sql">SqlOperandCountRange</a>&nbsp;getOperandCountRange()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../SqlOperator.html#getOperandCountRange()">SqlOperator</a></code></span></div>
<div class="block">Returns a constraint on the number of operands expected by this operator.
Subclasses may override this method; when they don't, the range is
derived from the <a href="../type/SqlOperandTypeChecker.html" title="interface in org.apache.calcite.sql.type"><code>SqlOperandTypeChecker</code></a> associated with this
operator.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../SqlOperator.html#getOperandCountRange()">getOperandCountRange</a></code>&nbsp;in class&nbsp;<code><a href="../SqlOperator.html" title="class in org.apache.calcite.sql">SqlOperator</a></code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>acceptable range</dd>
</dl>
</li>
</ul>
<a id="checkOperandTypes(org.apache.calcite.sql.SqlCallBinding,boolean)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>checkOperandTypes</h4>
<pre class="methodSignature">public&nbsp;boolean&nbsp;checkOperandTypes&#8203;(<a href="../SqlCallBinding.html" title="class in org.apache.calcite.sql">SqlCallBinding</a>&nbsp;callBinding,
boolean&nbsp;throwOnFailure)</pre>
<div class="block">Makes sure that the number and types of arguments are allowable.
Operators (such as "ROW" and "AS") which do not check their arguments can
override this method.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../SqlOperator.html#checkOperandTypes(org.apache.calcite.sql.SqlCallBinding,boolean)">checkOperandTypes</a></code>&nbsp;in class&nbsp;<code><a href="../SqlOperator.html" title="class in org.apache.calcite.sql">SqlOperator</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>callBinding</code> - description of call</dd>
<dd><code>throwOnFailure</code> - whether to throw an exception if check fails
(otherwise returns false in that case)</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>whether check succeeded</dd>
</dl>
</li>
</ul>
<a id="getSyntax()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getSyntax</h4>
<pre class="methodSignature">public&nbsp;<a href="../SqlSyntax.html" title="enum in org.apache.calcite.sql">SqlSyntax</a>&nbsp;getSyntax()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../SqlOperator.html#getSyntax()">SqlOperator</a></code></span></div>
<div class="block">Returns the syntactic type of this operator, never null.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../SqlFunction.html#getSyntax()">getSyntax</a></code>&nbsp;in class&nbsp;<code><a href="../SqlFunction.html" title="class in org.apache.calcite.sql">SqlFunction</a></code></dd>
</dl>
</li>
</ul>
<a id="unparse(org.apache.calcite.sql.SqlWriter,org.apache.calcite.sql.SqlCall,int,int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>unparse</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;unparse&#8203;(<a href="../SqlWriter.html" title="interface in org.apache.calcite.sql">SqlWriter</a>&nbsp;writer,
<a href="../SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a>&nbsp;call,
int&nbsp;leftPrec,
int&nbsp;rightPrec)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../SqlOperator.html#unparse(org.apache.calcite.sql.SqlWriter,org.apache.calcite.sql.SqlCall,int,int)">SqlOperator</a></code></span></div>
<div class="block">Writes a SQL representation of a call to this operator to a writer,
including parentheses if the operators on either side are of greater
precedence.
<p>The default implementation of this method delegates to
<a href="../SqlSyntax.html#unparse(org.apache.calcite.sql.SqlWriter,org.apache.calcite.sql.SqlOperator,org.apache.calcite.sql.SqlCall,int,int)"><code>SqlSyntax.unparse(org.apache.calcite.sql.SqlWriter, org.apache.calcite.sql.SqlOperator, org.apache.calcite.sql.SqlCall, int, int)</code></a>.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../SqlFunction.html#unparse(org.apache.calcite.sql.SqlWriter,org.apache.calcite.sql.SqlCall,int,int)">unparse</a></code>&nbsp;in class&nbsp;<code><a href="../SqlFunction.html" title="class in org.apache.calcite.sql">SqlFunction</a></code></dd>
</dl>
</li>
</ul>
<a id="getMonotonicity(org.apache.calcite.sql.SqlOperatorBinding)">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>getMonotonicity</h4>
<pre class="methodSignature">public&nbsp;<a href="../validate/SqlMonotonicity.html" title="enum in org.apache.calcite.sql.validate">SqlMonotonicity</a>&nbsp;getMonotonicity&#8203;(<a href="../SqlOperatorBinding.html" title="class in org.apache.calcite.sql">SqlOperatorBinding</a>&nbsp;call)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../SqlOperator.html#getMonotonicity(org.apache.calcite.sql.SqlOperatorBinding)">SqlOperator</a></code></span></div>
<div class="block">Returns whether a call to this operator is monotonic.
<p>Default implementation returns <a href="../validate/SqlMonotonicity.html#NOT_MONOTONIC"><code>SqlMonotonicity.NOT_MONOTONIC</code></a>.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../SqlOperator.html#getMonotonicity(org.apache.calcite.sql.SqlOperatorBinding)">getMonotonicity</a></code>&nbsp;in class&nbsp;<code><a href="../SqlOperator.html" title="class in org.apache.calcite.sql">SqlOperator</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>call</code> - Call to this operator with particular arguments and information
about the monotonicity of the arguments</dd>
</dl>
</li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
</div>
</main>
<!-- ========= END OF CLASS DATA ========= -->
<footer role="contentinfo">
<nav role="navigation">
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a id="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/SqlCastFunction.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a id="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</nav>
<p class="legalCopy"><small>Copyright &#169; 2012&#x2013;2019 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
</footer>
</body>
</html>