blob: 2a3029e0fdcc29d4346843b13bb2fc25f2c3ab1c [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>SqlOperator (Apache Calcite calcite API)</title>
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
<script type="text/javascript" src="../../../../script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="SqlOperator (Apache Calcite calcite API)";
}
}
catch(err) {
}
//-->
var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10,"i20":42,"i21":10,"i22":10,"i23":10,"i24":10,"i25":10,"i26":10,"i27":10,"i28":10,"i29":10,"i30":10,"i31":6,"i32":10,"i33":10,"i34":10,"i35":10,"i36":10,"i37":10,"i38":10,"i39":10,"i40":10,"i41":10,"i42":9,"i43":10,"i44":10,"i45":10,"i46":10,"i47":10,"i48":9,"i49":10,"i50":10,"i51":42,"i52":42,"i53":10,"i54":10,"i55":10};
var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],2:["t2","Instance Methods"],4:["t3","Abstract Methods"],8:["t4","Concrete Methods"],32:["t6","Deprecated Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../index-all.html">Index</a></li>
<li><a href="../../../../help-doc.html">Help</a></li>
</ul>
<div class="aboutLanguage"><b>Apache Calcite</b></div>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../org/apache/calcite/sql/SqlOperandCountRange.html" title="interface in org.apache.calcite.sql"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../org/apache/calcite/sql/SqlOperatorBinding.html" title="class in org.apache.calcite.sql"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../index.html?org/apache/calcite/sql/SqlOperator.html" target="_top">Frames</a></li>
<li><a href="SqlOperator.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../allclasses-noframe.html">All&nbsp;Classes</a></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>
</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 name="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">org.apache.calcite.sql</div>
<h2 title="Class SqlOperator" class="title">Class SqlOperator</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
<li>
<ul class="inheritance">
<li>org.apache.calcite.sql.SqlOperator</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>Direct Known Subclasses:</dt>
<dd><a href="../../../../org/apache/calcite/sql/SqlBinaryOperator.html" title="class in org.apache.calcite.sql">SqlBinaryOperator</a>, <a href="../../../../org/apache/calcite/sql/fun/SqlCaseOperator.html" title="class in org.apache.calcite.sql.fun">SqlCaseOperator</a>, <a href="../../../../org/apache/calcite/sql/SqlDescriptorOperator.html" title="class in org.apache.calcite.sql">SqlDescriptorOperator</a>, <a href="../../../../org/apache/calcite/sql/SqlFunction.html" title="class in org.apache.calcite.sql">SqlFunction</a>, <a href="../../../../org/apache/calcite/sql/SqlJoin.SqlJoinOperator.html" title="class in org.apache.calcite.sql">SqlJoin.SqlJoinOperator</a>, <a href="../../../../org/apache/calcite/sql/SqlMatchRecognize.SqlMatchRecognizeOperator.html" title="class in org.apache.calcite.sql">SqlMatchRecognize.SqlMatchRecognizeOperator</a>, <a href="../../../../org/apache/calcite/sql/SqlPostfixOperator.html" title="class in org.apache.calcite.sql">SqlPostfixOperator</a>, <a href="../../../../org/apache/calcite/sql/SqlPrefixOperator.html" title="class in org.apache.calcite.sql">SqlPrefixOperator</a>, <a href="../../../../org/apache/calcite/sql/SqlSelectOperator.html" title="class in org.apache.calcite.sql">SqlSelectOperator</a>, <a href="../../../../org/apache/calcite/sql/SqlSnapshot.SqlSnapshotOperator.html" title="class in org.apache.calcite.sql">SqlSnapshot.SqlSnapshotOperator</a>, <a href="../../../../org/apache/calcite/sql/SqlSpecialOperator.html" title="class in org.apache.calcite.sql">SqlSpecialOperator</a></dd>
</dl>
<hr>
<br>
<pre>public abstract class <span class="typeNameLabel">SqlOperator</span>
extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
<div class="block">A <code>SqlOperator</code> is a type of node in a SQL parse tree (it is NOT a
node in a SQL parse tree). It includes functions, operators such as '=', and
syntactic constructs such as 'case' statements. Operators may represent
query-level expressions (e.g. <a href="../../../../org/apache/calcite/sql/SqlSelectOperator.html" title="class in org.apache.calcite.sql"><code>SqlSelectOperator</code></a> or row-level
expressions (e.g. <a href="../../../../org/apache/calcite/sql/fun/SqlBetweenOperator.html" title="class in org.apache.calcite.sql.fun"><code>SqlBetweenOperator</code></a>.
<p>Operators have <em>formal operands</em>, meaning ordered (and optionally
named) placeholders for the values they operate on. For example, the division
operator takes two operands; the first is the numerator and the second is the
denominator. In the context of subclass <a href="../../../../org/apache/calcite/sql/SqlFunction.html" title="class in org.apache.calcite.sql"><code>SqlFunction</code></a>, formal operands
are referred to as <em>parameters</em>.
<p>When an operator is instantiated via a <a href="../../../../org/apache/calcite/sql/SqlCall.html" title="class in org.apache.calcite.sql"><code>SqlCall</code></a>, it is supplied
with <em>actual operands</em>. For example, in the expression <code>3 /
5</code>, the literal expression <code>3</code> is the actual operand
corresponding to the numerator, and <code>5</code> is the actual operand
corresponding to the denominator. In the context of SqlFunction, actual
operands are referred to as <em>arguments</em>
<p>In many cases, the formal/actual distinction is clear from context, in
which case we drop these qualifiers.</div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- =========== FIELD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="field.summary">
<!-- -->
</a>
<h3>Field Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation">
<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Field and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/calcite/sql/SqlKind.html" title="enum in org.apache.calcite.sql">SqlKind</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/calcite/sql/SqlOperator.html#kind">kind</a></span></code>
<div class="block">See <a href="../../../../org/apache/calcite/sql/SqlKind.html" title="enum in org.apache.calcite.sql"><code>SqlKind</code></a>.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/calcite/sql/SqlOperator.html#MDX_PRECEDENCE">MDX_PRECEDENCE</a></span></code>
<div class="block">Maximum precedence.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/calcite/sql/SqlOperator.html#NL">NL</a></span></code>&nbsp;</td>
</tr>
</table>
</li>
</ul>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.summary">
<!-- -->
</a>
<h3>Constructor Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier</th>
<th class="colLast" scope="col">Constructor and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected </code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/calcite/sql/SqlOperator.html#SqlOperator-java.lang.String-org.apache.calcite.sql.SqlKind-int-boolean-org.apache.calcite.sql.type.SqlReturnTypeInference-org.apache.calcite.sql.type.SqlOperandTypeInference-org.apache.calcite.sql.type.SqlOperandTypeChecker-">SqlOperator</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
<a href="../../../../org/apache/calcite/sql/SqlKind.html" title="enum in org.apache.calcite.sql">SqlKind</a>&nbsp;kind,
int&nbsp;prec,
boolean&nbsp;leftAssoc,
<a href="../../../../org/apache/calcite/sql/type/SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a>&nbsp;returnTypeInference,
<a href="../../../../org/apache/calcite/sql/type/SqlOperandTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlOperandTypeInference</a>&nbsp;operandTypeInference,
<a href="../../../../org/apache/calcite/sql/type/SqlOperandTypeChecker.html" title="interface in org.apache.calcite.sql.type">SqlOperandTypeChecker</a>&nbsp;operandTypeChecker)</code>
<div class="block">Creates an operator specifying left/right associativity.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>protected </code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/calcite/sql/SqlOperator.html#SqlOperator-java.lang.String-org.apache.calcite.sql.SqlKind-int-int-org.apache.calcite.sql.type.SqlReturnTypeInference-org.apache.calcite.sql.type.SqlOperandTypeInference-org.apache.calcite.sql.type.SqlOperandTypeChecker-">SqlOperator</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
<a href="../../../../org/apache/calcite/sql/SqlKind.html" title="enum in org.apache.calcite.sql">SqlKind</a>&nbsp;kind,
int&nbsp;leftPrecedence,
int&nbsp;rightPrecedence,
<a href="../../../../org/apache/calcite/sql/type/SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a>&nbsp;returnTypeInference,
<a href="../../../../org/apache/calcite/sql/type/SqlOperandTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlOperandTypeInference</a>&nbsp;operandTypeInference,
<a href="../../../../org/apache/calcite/sql/type/SqlOperandTypeChecker.html" title="interface in org.apache.calcite.sql.type">SqlOperandTypeChecker</a>&nbsp;operandTypeChecker)</code>
<div class="block">Creates an operator.</div>
</td>
</tr>
</table>
</li>
</ul>
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method.summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t1" class="tableTab"><span><a href="javascript:show(1);">Static Methods</a></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="t3" class="tableTab"><span><a href="javascript:show(4);">Abstract 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><span id="t6" class="tableTab"><span><a href="javascript:show(32);">Deprecated Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>&lt;R&gt;&nbsp;R</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/calcite/sql/SqlOperator.html#acceptCall-org.apache.calcite.sql.util.SqlVisitor-org.apache.calcite.sql.SqlCall-">acceptCall</a></span>(<a href="../../../../org/apache/calcite/sql/util/SqlVisitor.html" title="interface in org.apache.calcite.sql.util">SqlVisitor</a>&lt;R&gt;&nbsp;visitor,
<a href="../../../../org/apache/calcite/sql/SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a>&nbsp;call)</code>
<div class="block">Accepts a <a href="../../../../org/apache/calcite/sql/util/SqlVisitor.html" title="interface in org.apache.calcite.sql.util"><code>SqlVisitor</code></a>, visiting each operand of a call.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>&lt;R&gt;&nbsp;void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/calcite/sql/SqlOperator.html#acceptCall-org.apache.calcite.sql.util.SqlVisitor-org.apache.calcite.sql.SqlCall-boolean-org.apache.calcite.sql.util.SqlBasicVisitor.ArgHandler-">acceptCall</a></span>(<a href="../../../../org/apache/calcite/sql/util/SqlVisitor.html" title="interface in org.apache.calcite.sql.util">SqlVisitor</a>&lt;R&gt;&nbsp;visitor,
<a href="../../../../org/apache/calcite/sql/SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a>&nbsp;call,
boolean&nbsp;onlyExpressions,
<a href="../../../../org/apache/calcite/sql/util/SqlBasicVisitor.ArgHandler.html" title="interface in org.apache.calcite.sql.util">SqlBasicVisitor.ArgHandler</a>&lt;R&gt;&nbsp;argHandler)</code>
<div class="block">Accepts a <a href="../../../../org/apache/calcite/sql/util/SqlVisitor.html" title="interface in org.apache.calcite.sql.util"><code>SqlVisitor</code></a>, directing an
<a href="../../../../org/apache/calcite/sql/util/SqlBasicVisitor.ArgHandler.html" title="interface in org.apache.calcite.sql.util"><code>SqlBasicVisitor.ArgHandler</code></a>
to visit an operand of a call.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>protected <a href="../../../../org/apache/calcite/rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/calcite/sql/SqlOperator.html#adjustType-org.apache.calcite.sql.validate.SqlValidator-org.apache.calcite.sql.SqlCall-org.apache.calcite.rel.type.RelDataType-">adjustType</a></span>(<a href="../../../../org/apache/calcite/sql/validate/SqlValidator.html" title="interface in org.apache.calcite.sql.validate">SqlValidator</a>&nbsp;validator,
<a href="../../../../org/apache/calcite/sql/SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a>&nbsp;call,
<a href="../../../../org/apache/calcite/rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;type)</code>
<div class="block">Validates and determines coercibility and resulting collation name of
binary operator if needed.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/calcite/sql/SqlOperator.html#allowsFraming--">allowsFraming</a></span>()</code>
<div class="block">Returns whether this is a window function that allows framing (i.e.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/calcite/sql/SqlOperator.html#argumentMustBeScalar-int-">argumentMustBeScalar</a></span>(int&nbsp;ordinal)</code>
<div class="block">Returns whether the <code>ordinal</code>th argument to this operator must
be scalar (as opposed to a query).</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code>protected void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/calcite/sql/SqlOperator.html#checkOperandCount-org.apache.calcite.sql.validate.SqlValidator-org.apache.calcite.sql.type.SqlOperandTypeChecker-org.apache.calcite.sql.SqlCall-">checkOperandCount</a></span>(<a href="../../../../org/apache/calcite/sql/validate/SqlValidator.html" title="interface in org.apache.calcite.sql.validate">SqlValidator</a>&nbsp;validator,
<a href="../../../../org/apache/calcite/sql/type/SqlOperandTypeChecker.html" title="interface in org.apache.calcite.sql.type">SqlOperandTypeChecker</a>&nbsp;argType,
<a href="../../../../org/apache/calcite/sql/SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a>&nbsp;call)</code>&nbsp;</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/calcite/sql/SqlOperator.html#checkOperandTypes-org.apache.calcite.sql.SqlCallBinding-boolean-">checkOperandTypes</a></span>(<a href="../../../../org/apache/calcite/sql/SqlCallBinding.html" title="class in org.apache.calcite.sql">SqlCallBinding</a>&nbsp;callBinding,
boolean&nbsp;throwOnFailure)</code>
<div class="block">Checks that the operand values in a <a href="../../../../org/apache/calcite/sql/SqlCall.html" title="class in org.apache.calcite.sql"><code>SqlCall</code></a> to this operator are
valid.</div>
</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code>protected <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/calcite/sql/SqlOperator.html#constructArgNameList-org.apache.calcite.sql.SqlCall-">constructArgNameList</a></span>(<a href="../../../../org/apache/calcite/sql/SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a>&nbsp;call)</code>&nbsp;</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code>protected <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../org/apache/calcite/rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/calcite/sql/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></span>(<a href="../../../../org/apache/calcite/sql/validate/SqlValidator.html" title="interface in org.apache.calcite.sql.validate">SqlValidator</a>&nbsp;validator,
<a href="../../../../org/apache/calcite/sql/validate/SqlValidatorScope.html" title="interface in org.apache.calcite.sql.validate">SqlValidatorScope</a>&nbsp;scope,
<a href="../../../../org/apache/calcite/sql/SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a>&nbsp;call,
<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../org/apache/calcite/sql/SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&gt;&nbsp;args,
boolean&nbsp;convertRowArgToColumnList)</code>&nbsp;</td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code>protected <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../org/apache/calcite/sql/SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/calcite/sql/SqlOperator.html#constructOperandList-org.apache.calcite.sql.validate.SqlValidator-org.apache.calcite.sql.SqlCall-java.util.List-">constructOperandList</a></span>(<a href="../../../../org/apache/calcite/sql/validate/SqlValidator.html" title="interface in org.apache.calcite.sql.validate">SqlValidator</a>&nbsp;validator,
<a href="../../../../org/apache/calcite/sql/SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a>&nbsp;call,
<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;argNames)</code>&nbsp;</td>
</tr>
<tr id="i10" class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/calcite/sql/SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/calcite/sql/SqlOperator.html#createCall-org.apache.calcite.sql.SqlLiteral-org.apache.calcite.sql.parser.SqlParserPos-org.apache.calcite.sql.SqlNode...-">createCall</a></span>(<a href="../../../../org/apache/calcite/sql/SqlLiteral.html" title="class in org.apache.calcite.sql">SqlLiteral</a>&nbsp;functionQualifier,
<a href="../../../../org/apache/calcite/sql/parser/SqlParserPos.html" title="class in org.apache.calcite.sql.parser">SqlParserPos</a>&nbsp;pos,
<a href="../../../../org/apache/calcite/sql/SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>...&nbsp;operands)</code>
<div class="block">Creates a call to this operand with an array of operands.</div>
</td>
</tr>
<tr id="i11" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/calcite/sql/SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/calcite/sql/SqlOperator.html#createCall-org.apache.calcite.sql.SqlNodeList-">createCall</a></span>(<a href="../../../../org/apache/calcite/sql/SqlNodeList.html" title="class in org.apache.calcite.sql">SqlNodeList</a>&nbsp;nodeList)</code>
<div class="block">Creates a call to this operand with a list of operands contained in a
<a href="../../../../org/apache/calcite/sql/SqlNodeList.html" title="class in org.apache.calcite.sql"><code>SqlNodeList</code></a>.</div>
</td>
</tr>
<tr id="i12" class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/calcite/sql/SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/calcite/sql/SqlOperator.html#createCall-org.apache.calcite.sql.parser.SqlParserPos-java.util.List-">createCall</a></span>(<a href="../../../../org/apache/calcite/sql/parser/SqlParserPos.html" title="class in org.apache.calcite.sql.parser">SqlParserPos</a>&nbsp;pos,
<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;? extends <a href="../../../../org/apache/calcite/sql/SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&gt;&nbsp;operandList)</code>
<div class="block">Creates a call to this operand with a list of operands.</div>
</td>
</tr>
<tr id="i13" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/calcite/sql/SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/calcite/sql/SqlOperator.html#createCall-org.apache.calcite.sql.parser.SqlParserPos-org.apache.calcite.sql.SqlNode...-">createCall</a></span>(<a href="../../../../org/apache/calcite/sql/parser/SqlParserPos.html" title="class in org.apache.calcite.sql.parser">SqlParserPos</a>&nbsp;pos,
<a href="../../../../org/apache/calcite/sql/SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>...&nbsp;operands)</code>
<div class="block">Creates a call to this operand with an array of operands.</div>
</td>
</tr>
<tr id="i14" class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/calcite/rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/calcite/sql/SqlOperator.html#deriveType-org.apache.calcite.sql.validate.SqlValidator-org.apache.calcite.sql.validate.SqlValidatorScope-org.apache.calcite.sql.SqlCall-">deriveType</a></span>(<a href="../../../../org/apache/calcite/sql/validate/SqlValidator.html" title="interface in org.apache.calcite.sql.validate">SqlValidator</a>&nbsp;validator,
<a href="../../../../org/apache/calcite/sql/validate/SqlValidatorScope.html" title="interface in org.apache.calcite.sql.validate">SqlValidatorScope</a>&nbsp;scope,
<a href="../../../../org/apache/calcite/sql/SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a>&nbsp;call)</code>
<div class="block">Derives the type of a call to this operator.</div>
</td>
</tr>
<tr id="i15" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/calcite/sql/SqlOperator.html#equals-java.lang.Object-">equals</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;obj)</code>&nbsp;</td>
</tr>
<tr id="i16" class="altColor">
<td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/calcite/sql/SqlOperator.html#getAllowedSignatures--">getAllowedSignatures</a></span>()</code>
<div class="block">Returns a string describing the expected operand types of a call, e.g.</div>
</td>
</tr>
<tr id="i17" class="rowColor">
<td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/calcite/sql/SqlOperator.html#getAllowedSignatures-java.lang.String-">getAllowedSignatures</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;opNameToUse)</code>
<div class="block">Returns a string describing the expected operand types of a call, e.g.</div>
</td>
</tr>
<tr id="i18" class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/calcite/sql/SqlKind.html" title="enum in org.apache.calcite.sql">SqlKind</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/calcite/sql/SqlOperator.html#getKind--">getKind</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i19" class="rowColor">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/calcite/sql/SqlOperator.html#getLeftPrec--">getLeftPrec</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i20" class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/calcite/sql/validate/SqlMonotonicity.html" title="enum in org.apache.calcite.sql.validate">SqlMonotonicity</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/calcite/sql/SqlOperator.html#getMonotonicity-org.apache.calcite.sql.SqlCall-org.apache.calcite.sql.validate.SqlValidatorScope-">getMonotonicity</a></span>(<a href="../../../../org/apache/calcite/sql/SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a>&nbsp;call,
<a href="../../../../org/apache/calcite/sql/validate/SqlValidatorScope.html" title="interface in org.apache.calcite.sql.validate">SqlValidatorScope</a>&nbsp;scope)</code>
<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;
<div class="block"><span class="deprecationComment">Use <a href="../../../../org/apache/calcite/sql/SqlOperator.html#getMonotonicity-org.apache.calcite.sql.SqlOperatorBinding-"><code>getMonotonicity(SqlOperatorBinding)</code></a></span></div>
</div>
</td>
</tr>
<tr id="i21" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/calcite/sql/validate/SqlMonotonicity.html" title="enum in org.apache.calcite.sql.validate">SqlMonotonicity</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/calcite/sql/SqlOperator.html#getMonotonicity-org.apache.calcite.sql.SqlOperatorBinding-">getMonotonicity</a></span>(<a href="../../../../org/apache/calcite/sql/SqlOperatorBinding.html" title="class in org.apache.calcite.sql">SqlOperatorBinding</a>&nbsp;call)</code>
<div class="block">Returns whether a call to this operator is monotonic.</div>
</td>
</tr>
<tr id="i22" class="altColor">
<td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/calcite/sql/SqlOperator.html#getName--">getName</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i23" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/calcite/sql/SqlIdentifier.html" title="class in org.apache.calcite.sql">SqlIdentifier</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/calcite/sql/SqlOperator.html#getNameAsId--">getNameAsId</a></span>()</code>
<div class="block">Returns the fully-qualified name of this operator.</div>
</td>
</tr>
<tr id="i24" class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/calcite/sql/SqlOperandCountRange.html" title="interface in org.apache.calcite.sql">SqlOperandCountRange</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/calcite/sql/SqlOperator.html#getOperandCountRange--">getOperandCountRange</a></span>()</code>
<div class="block">Returns a constraint on the number of operands expected by this operator.</div>
</td>
</tr>
<tr id="i25" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/calcite/sql/type/SqlOperandTypeChecker.html" title="interface in org.apache.calcite.sql.type">SqlOperandTypeChecker</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/calcite/sql/SqlOperator.html#getOperandTypeChecker--">getOperandTypeChecker</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i26" class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/calcite/sql/type/SqlOperandTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlOperandTypeInference</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/calcite/sql/SqlOperator.html#getOperandTypeInference--">getOperandTypeInference</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i27" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/calcite/sql/type/SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/calcite/sql/SqlOperator.html#getReturnTypeInference--">getReturnTypeInference</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i28" class="altColor">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/calcite/sql/SqlOperator.html#getRightPrec--">getRightPrec</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i29" class="rowColor">
<td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/calcite/sql/SqlOperator.html#getSignatureTemplate-int-">getSignatureTemplate</a></span>(int&nbsp;operandsCount)</code>
<div class="block">Returns a template describing how the operator signature is to be built.</div>
</td>
</tr>
<tr id="i30" class="altColor">
<td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/function/Supplier.html?is-external=true" title="class or interface in java.util.function">Supplier</a>&lt;<a href="../../../../org/apache/calcite/plan/Strong.Policy.html" title="enum in org.apache.calcite.plan">Strong.Policy</a>&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/calcite/sql/SqlOperator.html#getStrongPolicyInference--">getStrongPolicyInference</a></span>()</code>
<div class="block">Returns the <code>Strong.Policy</code> strategy for this operator, or null if there is no particular
strategy, in which case this policy will be deducted from the operator's <a href="../../../../org/apache/calcite/sql/SqlKind.html" title="enum in org.apache.calcite.sql"><code>SqlKind</code></a>.</div>
</td>
</tr>
<tr id="i31" class="rowColor">
<td class="colFirst"><code>abstract <a href="../../../../org/apache/calcite/sql/SqlSyntax.html" title="enum in org.apache.calcite.sql">SqlSyntax</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/calcite/sql/SqlOperator.html#getSyntax--">getSyntax</a></span>()</code>
<div class="block">Returns the syntactic type of this operator, never null.</div>
</td>
</tr>
<tr id="i32" class="altColor">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/calcite/sql/SqlOperator.html#hashCode--">hashCode</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i33" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/calcite/rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/calcite/sql/SqlOperator.html#inferReturnType-org.apache.calcite.rel.type.RelDataTypeFactory-java.util.List-">inferReturnType</a></span>(<a href="../../../../org/apache/calcite/rel/type/RelDataTypeFactory.html" title="interface in org.apache.calcite.rel.type">RelDataTypeFactory</a>&nbsp;typeFactory,
<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../org/apache/calcite/rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&gt;&nbsp;operandTypes)</code>
<div class="block">Infers the type of a call to this operator with a given set of operand
types.</div>
</td>
</tr>
<tr id="i34" class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/calcite/rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/calcite/sql/SqlOperator.html#inferReturnType-org.apache.calcite.sql.SqlOperatorBinding-">inferReturnType</a></span>(<a href="../../../../org/apache/calcite/sql/SqlOperatorBinding.html" title="class in org.apache.calcite.sql">SqlOperatorBinding</a>&nbsp;opBinding)</code>
<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="i35" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/calcite/sql/SqlOperator.html#isAggregator--">isAggregator</a></span>()</code>
<div class="block">Returns whether this operator is an aggregate function.</div>
</td>
</tr>
<tr id="i36" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/calcite/sql/SqlOperator.html#isDeterministic--">isDeterministic</a></span>()</code>
<div class="block">Returns whether a call to this operator is guaranteed to always return
the same result given the same operands; true is assumed by default</div>
</td>
</tr>
<tr id="i37" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/calcite/sql/SqlOperator.html#isDynamicFunction--">isDynamicFunction</a></span>()</code>
<div class="block">Returns whether it is unsafe to cache query plans referencing this
operator; false is assumed by default</div>
</td>
</tr>
<tr id="i38" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/calcite/sql/SqlOperator.html#isGroup--">isGroup</a></span>()</code>
<div class="block">Returns whether this is a group function.</div>
</td>
</tr>
<tr id="i39" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/calcite/sql/SqlOperator.html#isGroupAuxiliary--">isGroupAuxiliary</a></span>()</code>
<div class="block">Returns whether this is an group auxiliary function.</div>
</td>
</tr>
<tr id="i40" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/calcite/sql/SqlOperator.html#isName-java.lang.String-boolean-">isName</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;testName,
boolean&nbsp;caseSensitive)</code>&nbsp;</td>
</tr>
<tr id="i41" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/calcite/sql/SqlOperator.html#isSymmetrical--">isSymmetrical</a></span>()</code>
<div class="block">Returns whether a call to this operator is not sensitive to the operands input order.</div>
</td>
</tr>
<tr id="i42" class="altColor">
<td class="colFirst"><code>protected static int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/calcite/sql/SqlOperator.html#leftPrec-int-boolean-">leftPrec</a></span>(int&nbsp;prec,
boolean&nbsp;leftAssoc)</code>&nbsp;</td>
</tr>
<tr id="i43" class="rowColor">
<td class="colFirst"><code>protected void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/calcite/sql/SqlOperator.html#preValidateCall-org.apache.calcite.sql.validate.SqlValidator-org.apache.calcite.sql.validate.SqlValidatorScope-org.apache.calcite.sql.SqlCall-">preValidateCall</a></span>(<a href="../../../../org/apache/calcite/sql/validate/SqlValidator.html" title="interface in org.apache.calcite.sql.validate">SqlValidator</a>&nbsp;validator,
<a href="../../../../org/apache/calcite/sql/validate/SqlValidatorScope.html" title="interface in org.apache.calcite.sql.validate">SqlValidatorScope</a>&nbsp;scope,
<a href="../../../../org/apache/calcite/sql/SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a>&nbsp;call)</code>
<div class="block">Receives notification that validation of a call to this operator is
beginning.</div>
</td>
</tr>
<tr id="i44" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/calcite/sql/SqlOperator.html#requiresDecimalExpansion--">requiresDecimalExpansion</a></span>()</code>
<div class="block">Method to check if call requires expansion when it has decimal operands.</div>
</td>
</tr>
<tr id="i45" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/calcite/sql/SqlOperator.html#requiresOrder--">requiresOrder</a></span>()</code>
<div class="block">Returns whether this is a window function that requires ordering.</div>
</td>
</tr>
<tr id="i46" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/calcite/sql/SqlOperator.html#requiresOver--">requiresOver</a></span>()</code>
<div class="block">Returns whether this is a window function that requires an OVER clause.</div>
</td>
</tr>
<tr id="i47" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/calcite/sql/SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/calcite/sql/SqlOperator.html#rewriteCall-org.apache.calcite.sql.validate.SqlValidator-org.apache.calcite.sql.SqlCall-">rewriteCall</a></span>(<a href="../../../../org/apache/calcite/sql/validate/SqlValidator.html" title="interface in org.apache.calcite.sql.validate">SqlValidator</a>&nbsp;validator,
<a href="../../../../org/apache/calcite/sql/SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a>&nbsp;call)</code>
<div class="block">Rewrites a call to this operator.</div>
</td>
</tr>
<tr id="i48" class="altColor">
<td class="colFirst"><code>protected static int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/calcite/sql/SqlOperator.html#rightPrec-int-boolean-">rightPrec</a></span>(int&nbsp;prec,
boolean&nbsp;leftAssoc)</code>&nbsp;</td>
</tr>
<tr id="i49" class="rowColor">
<td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/calcite/sql/SqlOperator.html#toString--">toString</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i50" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/calcite/sql/SqlOperator.html#unparse-org.apache.calcite.sql.SqlWriter-org.apache.calcite.sql.SqlCall-int-int-">unparse</a></span>(<a href="../../../../org/apache/calcite/sql/SqlWriter.html" title="interface in org.apache.calcite.sql">SqlWriter</a>&nbsp;writer,
<a href="../../../../org/apache/calcite/sql/SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a>&nbsp;call,
int&nbsp;leftPrec,
int&nbsp;rightPrec)</code>
<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>
<tr id="i51" class="rowColor">
<td class="colFirst"><code>protected void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/calcite/sql/SqlOperator.html#unparseListClause-org.apache.calcite.sql.SqlWriter-org.apache.calcite.sql.SqlNode-">unparseListClause</a></span>(<a href="../../../../org/apache/calcite/sql/SqlWriter.html" title="interface in org.apache.calcite.sql">SqlWriter</a>&nbsp;writer,
<a href="../../../../org/apache/calcite/sql/SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;clause)</code>
<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;</div>
</td>
</tr>
<tr id="i52" class="altColor">
<td class="colFirst"><code>protected void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/calcite/sql/SqlOperator.html#unparseListClause-org.apache.calcite.sql.SqlWriter-org.apache.calcite.sql.SqlNode-org.apache.calcite.sql.SqlKind-">unparseListClause</a></span>(<a href="../../../../org/apache/calcite/sql/SqlWriter.html" title="interface in org.apache.calcite.sql">SqlWriter</a>&nbsp;writer,
<a href="../../../../org/apache/calcite/sql/SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;clause,
<a href="../../../../org/apache/calcite/sql/SqlKind.html" title="enum in org.apache.calcite.sql">SqlKind</a>&nbsp;sepKind)</code>
<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;</div>
</td>
</tr>
<tr id="i53" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/calcite/sql/SqlOperator.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></span>(<a href="../../../../org/apache/calcite/sql/SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a>&nbsp;call,
<a href="../../../../org/apache/calcite/sql/validate/SqlValidator.html" title="interface in org.apache.calcite.sql.validate">SqlValidator</a>&nbsp;validator,
<a href="../../../../org/apache/calcite/sql/validate/SqlValidatorScope.html" title="interface in org.apache.calcite.sql.validate">SqlValidatorScope</a>&nbsp;scope,
<a href="../../../../org/apache/calcite/sql/validate/SqlValidatorScope.html" title="interface in org.apache.calcite.sql.validate">SqlValidatorScope</a>&nbsp;operandScope)</code>
<div class="block">Validates a call to this operator.</div>
</td>
</tr>
<tr id="i54" class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/calcite/rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/calcite/sql/SqlOperator.html#validateOperands-org.apache.calcite.sql.validate.SqlValidator-org.apache.calcite.sql.validate.SqlValidatorScope-org.apache.calcite.sql.SqlCall-">validateOperands</a></span>(<a href="../../../../org/apache/calcite/sql/validate/SqlValidator.html" title="interface in org.apache.calcite.sql.validate">SqlValidator</a>&nbsp;validator,
<a href="../../../../org/apache/calcite/sql/validate/SqlValidatorScope.html" title="interface in org.apache.calcite.sql.validate">SqlValidatorScope</a>&nbsp;scope,
<a href="../../../../org/apache/calcite/sql/SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a>&nbsp;call)</code>
<div class="block">Validates the operands of a call, inferring the return type in the
process.</div>
</td>
</tr>
<tr id="i55" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/calcite/sql/SqlOperator.html#validRexOperands-int-org.apache.calcite.util.Litmus-">validRexOperands</a></span>(int&nbsp;count,
<a href="../../../../org/apache/calcite/util/Litmus.html" title="interface in org.apache.calcite.util">Litmus</a>&nbsp;litmus)</code>
<div class="block">Returns whether the given operands are valid.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ FIELD DETAIL =========== -->
<ul class="blockList">
<li class="blockList"><a name="field.detail">
<!-- -->
</a>
<h3>Field Detail</h3>
<a name="NL">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>NL</h4>
<pre>public static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> NL</pre>
</li>
</ul>
<a name="MDX_PRECEDENCE">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>MDX_PRECEDENCE</h4>
<pre>public static final&nbsp;int MDX_PRECEDENCE</pre>
<div class="block">Maximum precedence.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../constant-values.html#org.apache.calcite.sql.SqlOperator.MDX_PRECEDENCE">Constant Field Values</a></dd>
</dl>
</li>
</ul>
<a name="kind">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>kind</h4>
<pre>public final&nbsp;<a href="../../../../org/apache/calcite/sql/SqlKind.html" title="enum in org.apache.calcite.sql">SqlKind</a> kind</pre>
<div class="block">See <a href="../../../../org/apache/calcite/sql/SqlKind.html" title="enum in org.apache.calcite.sql"><code>SqlKind</code></a>. It's possible to have a name that doesn't match the
kind</div>
</li>
</ul>
</li>
</ul>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a name="SqlOperator-java.lang.String-org.apache.calcite.sql.SqlKind-int-int-org.apache.calcite.sql.type.SqlReturnTypeInference-org.apache.calcite.sql.type.SqlOperandTypeInference-org.apache.calcite.sql.type.SqlOperandTypeChecker-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>SqlOperator</h4>
<pre>protected&nbsp;SqlOperator(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
<a href="../../../../org/apache/calcite/sql/SqlKind.html" title="enum in org.apache.calcite.sql">SqlKind</a>&nbsp;kind,
int&nbsp;leftPrecedence,
int&nbsp;rightPrecedence,
<a href="../../../../org/apache/calcite/sql/type/SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a>&nbsp;returnTypeInference,
<a href="../../../../org/apache/calcite/sql/type/SqlOperandTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlOperandTypeInference</a>&nbsp;operandTypeInference,
<a href="../../../../org/apache/calcite/sql/type/SqlOperandTypeChecker.html" title="interface in org.apache.calcite.sql.type">SqlOperandTypeChecker</a>&nbsp;operandTypeChecker)</pre>
<div class="block">Creates an operator.</div>
</li>
</ul>
<a name="SqlOperator-java.lang.String-org.apache.calcite.sql.SqlKind-int-boolean-org.apache.calcite.sql.type.SqlReturnTypeInference-org.apache.calcite.sql.type.SqlOperandTypeInference-org.apache.calcite.sql.type.SqlOperandTypeChecker-">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>SqlOperator</h4>
<pre>protected&nbsp;SqlOperator(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
<a href="../../../../org/apache/calcite/sql/SqlKind.html" title="enum in org.apache.calcite.sql">SqlKind</a>&nbsp;kind,
int&nbsp;prec,
boolean&nbsp;leftAssoc,
<a href="../../../../org/apache/calcite/sql/type/SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a>&nbsp;returnTypeInference,
<a href="../../../../org/apache/calcite/sql/type/SqlOperandTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlOperandTypeInference</a>&nbsp;operandTypeInference,
<a href="../../../../org/apache/calcite/sql/type/SqlOperandTypeChecker.html" title="interface in org.apache.calcite.sql.type">SqlOperandTypeChecker</a>&nbsp;operandTypeChecker)</pre>
<div class="block">Creates an operator specifying left/right associativity.</div>
</li>
</ul>
</li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a name="leftPrec-int-boolean-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>leftPrec</h4>
<pre>protected static&nbsp;int&nbsp;leftPrec(int&nbsp;prec,
boolean&nbsp;leftAssoc)</pre>
</li>
</ul>
<a name="rightPrec-int-boolean-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>rightPrec</h4>
<pre>protected static&nbsp;int&nbsp;rightPrec(int&nbsp;prec,
boolean&nbsp;leftAssoc)</pre>
</li>
</ul>
<a name="getOperandTypeChecker--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getOperandTypeChecker</h4>
<pre>public&nbsp;<a href="../../../../org/apache/calcite/sql/type/SqlOperandTypeChecker.html" title="interface in org.apache.calcite.sql.type">SqlOperandTypeChecker</a>&nbsp;getOperandTypeChecker()</pre>
</li>
</ul>
<a name="getOperandCountRange--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getOperandCountRange</h4>
<pre>public&nbsp;<a href="../../../../org/apache/calcite/sql/SqlOperandCountRange.html" title="interface in org.apache.calcite.sql">SqlOperandCountRange</a>&nbsp;getOperandCountRange()</pre>
<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="../../../../org/apache/calcite/sql/type/SqlOperandTypeChecker.html" title="interface in org.apache.calcite.sql.type"><code>SqlOperandTypeChecker</code></a> associated with this
operator.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>acceptable range</dd>
</dl>
</li>
</ul>
<a name="getName--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getName</h4>
<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;getName()</pre>
</li>
</ul>
<a name="getNameAsId--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getNameAsId</h4>
<pre>public&nbsp;<a href="../../../../org/apache/calcite/sql/SqlIdentifier.html" title="class in org.apache.calcite.sql">SqlIdentifier</a>&nbsp;getNameAsId()</pre>
<div class="block">Returns the fully-qualified name of this operator.</div>
</li>
</ul>
<a name="getKind--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getKind</h4>
<pre>public&nbsp;<a href="../../../../org/apache/calcite/sql/SqlKind.html" title="enum in org.apache.calcite.sql">SqlKind</a>&nbsp;getKind()</pre>
</li>
</ul>
<a name="toString--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>toString</h4>
<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;toString()</pre>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></code></dd>
</dl>
</li>
</ul>
<a name="getLeftPrec--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getLeftPrec</h4>
<pre>public&nbsp;int&nbsp;getLeftPrec()</pre>
</li>
</ul>
<a name="getRightPrec--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getRightPrec</h4>
<pre>public&nbsp;int&nbsp;getRightPrec()</pre>
</li>
</ul>
<a name="getSyntax--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getSyntax</h4>
<pre>public abstract&nbsp;<a href="../../../../org/apache/calcite/sql/SqlSyntax.html" title="enum in org.apache.calcite.sql">SqlSyntax</a>&nbsp;getSyntax()</pre>
<div class="block">Returns the syntactic type of this operator, never null.</div>
</li>
</ul>
<a name="createCall-org.apache.calcite.sql.SqlLiteral-org.apache.calcite.sql.parser.SqlParserPos-org.apache.calcite.sql.SqlNode...-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>createCall</h4>
<pre>public&nbsp;<a href="../../../../org/apache/calcite/sql/SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a>&nbsp;createCall(<a href="../../../../org/apache/calcite/sql/SqlLiteral.html" title="class in org.apache.calcite.sql">SqlLiteral</a>&nbsp;functionQualifier,
<a href="../../../../org/apache/calcite/sql/parser/SqlParserPos.html" title="class in org.apache.calcite.sql.parser">SqlParserPos</a>&nbsp;pos,
<a href="../../../../org/apache/calcite/sql/SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>...&nbsp;operands)</pre>
<div class="block">Creates a call to this operand with an array of operands.
<p>The position of the resulting call is the union of the <code>
pos</code> and the positions of all of the operands.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>functionQualifier</code> - function qualifier (e.g. "DISTINCT"), may be</dd>
<dd><code>pos</code> - parser position of the identifier of the call</dd>
<dd><code>operands</code> - array of operands</dd>
</dl>
</li>
</ul>
<a name="createCall-org.apache.calcite.sql.parser.SqlParserPos-org.apache.calcite.sql.SqlNode...-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>createCall</h4>
<pre>public final&nbsp;<a href="../../../../org/apache/calcite/sql/SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a>&nbsp;createCall(<a href="../../../../org/apache/calcite/sql/parser/SqlParserPos.html" title="class in org.apache.calcite.sql.parser">SqlParserPos</a>&nbsp;pos,
<a href="../../../../org/apache/calcite/sql/SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>...&nbsp;operands)</pre>
<div class="block">Creates a call to this operand with an array of operands.
<p>The position of the resulting call is the union of the <code>
pos</code> and the positions of all of the operands.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>pos</code> - Parser position</dd>
<dd><code>operands</code> - List of arguments</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>call to this operator</dd>
</dl>
</li>
</ul>
<a name="createCall-org.apache.calcite.sql.SqlNodeList-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>createCall</h4>
<pre>public final&nbsp;<a href="../../../../org/apache/calcite/sql/SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a>&nbsp;createCall(<a href="../../../../org/apache/calcite/sql/SqlNodeList.html" title="class in org.apache.calcite.sql">SqlNodeList</a>&nbsp;nodeList)</pre>
<div class="block">Creates a call to this operand with a list of operands contained in a
<a href="../../../../org/apache/calcite/sql/SqlNodeList.html" title="class in org.apache.calcite.sql"><code>SqlNodeList</code></a>.
<p>The position of the resulting call inferred from the SqlNodeList.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>nodeList</code> - List of arguments</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>call to this operator</dd>
</dl>
</li>
</ul>
<a name="createCall-org.apache.calcite.sql.parser.SqlParserPos-java.util.List-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>createCall</h4>
<pre>public final&nbsp;<a href="../../../../org/apache/calcite/sql/SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a>&nbsp;createCall(<a href="../../../../org/apache/calcite/sql/parser/SqlParserPos.html" title="class in org.apache.calcite.sql.parser">SqlParserPos</a>&nbsp;pos,
<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;? extends <a href="../../../../org/apache/calcite/sql/SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&gt;&nbsp;operandList)</pre>
<div class="block">Creates a call to this operand with a list of operands.
<p>The position of the resulting call is the union of the <code>
pos</code> and the positions of all of the operands.</div>
</li>
</ul>
<a name="rewriteCall-org.apache.calcite.sql.validate.SqlValidator-org.apache.calcite.sql.SqlCall-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>rewriteCall</h4>
<pre>public&nbsp;<a href="../../../../org/apache/calcite/sql/SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;rewriteCall(<a href="../../../../org/apache/calcite/sql/validate/SqlValidator.html" title="interface in org.apache.calcite.sql.validate">SqlValidator</a>&nbsp;validator,
<a href="../../../../org/apache/calcite/sql/SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a>&nbsp;call)</pre>
<div class="block">Rewrites a call to this operator. Some operators are implemented as
trivial rewrites (e.g. NULLIF becomes CASE). However, we don't do this at
createCall time because we want to preserve the original SQL syntax as
much as possible; instead, we do this before the call is validated (so
the trivial operator doesn't need its own implementation of type
derivation methods). The default implementation is to just return the
original call without any rewrite.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>validator</code> - Validator</dd>
<dd><code>call</code> - Call to be rewritten</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>rewritten call</dd>
</dl>
</li>
</ul>
<a name="unparse-org.apache.calcite.sql.SqlWriter-org.apache.calcite.sql.SqlCall-int-int-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>unparse</h4>
<pre>public&nbsp;void&nbsp;unparse(<a href="../../../../org/apache/calcite/sql/SqlWriter.html" title="interface in org.apache.calcite.sql">SqlWriter</a>&nbsp;writer,
<a href="../../../../org/apache/calcite/sql/SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a>&nbsp;call,
int&nbsp;leftPrec,
int&nbsp;rightPrec)</pre>
<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="../../../../org/apache/calcite/sql/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>
</li>
</ul>
<a name="unparseListClause-org.apache.calcite.sql.SqlWriter-org.apache.calcite.sql.SqlNode-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>unparseListClause</h4>
<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
protected&nbsp;void&nbsp;unparseListClause(<a href="../../../../org/apache/calcite/sql/SqlWriter.html" title="interface in org.apache.calcite.sql">SqlWriter</a>&nbsp;writer,
<a href="../../../../org/apache/calcite/sql/SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;clause)</pre>
<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;</div>
</li>
</ul>
<a name="unparseListClause-org.apache.calcite.sql.SqlWriter-org.apache.calcite.sql.SqlNode-org.apache.calcite.sql.SqlKind-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>unparseListClause</h4>
<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
protected&nbsp;void&nbsp;unparseListClause(<a href="../../../../org/apache/calcite/sql/SqlWriter.html" title="interface in org.apache.calcite.sql">SqlWriter</a>&nbsp;writer,
<a href="../../../../org/apache/calcite/sql/SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;clause,
<a href="../../../../org/apache/calcite/sql/SqlKind.html" title="enum in org.apache.calcite.sql">SqlKind</a>&nbsp;sepKind)</pre>
<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;</div>
</li>
</ul>
<a name="equals-java.lang.Object-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>equals</h4>
<pre>public&nbsp;boolean&nbsp;equals(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;obj)</pre>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></code></dd>
</dl>
</li>
</ul>
<a name="isName-java.lang.String-boolean-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isName</h4>
<pre>public&nbsp;boolean&nbsp;isName(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;testName,
boolean&nbsp;caseSensitive)</pre>
</li>
</ul>
<a name="hashCode--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>hashCode</h4>
<pre>public&nbsp;int&nbsp;hashCode()</pre>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></code></dd>
</dl>
</li>
</ul>
<a name="validateCall-org.apache.calcite.sql.SqlCall-org.apache.calcite.sql.validate.SqlValidator-org.apache.calcite.sql.validate.SqlValidatorScope-org.apache.calcite.sql.validate.SqlValidatorScope-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>validateCall</h4>
<pre>public&nbsp;void&nbsp;validateCall(<a href="../../../../org/apache/calcite/sql/SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a>&nbsp;call,
<a href="../../../../org/apache/calcite/sql/validate/SqlValidator.html" title="interface in org.apache.calcite.sql.validate">SqlValidator</a>&nbsp;validator,
<a href="../../../../org/apache/calcite/sql/validate/SqlValidatorScope.html" title="interface in org.apache.calcite.sql.validate">SqlValidatorScope</a>&nbsp;scope,
<a href="../../../../org/apache/calcite/sql/validate/SqlValidatorScope.html" title="interface in org.apache.calcite.sql.validate">SqlValidatorScope</a>&nbsp;operandScope)</pre>
<div class="block">Validates a call to this operator.
<p>This method should not perform type-derivation or perform validation
related related to types. That is done later, by
<a href="../../../../org/apache/calcite/sql/SqlOperator.html#deriveType-org.apache.calcite.sql.validate.SqlValidator-org.apache.calcite.sql.validate.SqlValidatorScope-org.apache.calcite.sql.SqlCall-"><code>deriveType(SqlValidator, SqlValidatorScope, SqlCall)</code></a>. This method
should focus on structural validation.
<p>A typical implementation of this method first validates the operands,
then performs some operator-specific logic. The default implementation
just validates the operands.
<p>This method is the default implementation of <a href="../../../../org/apache/calcite/sql/SqlCall.html#validate-org.apache.calcite.sql.validate.SqlValidator-org.apache.calcite.sql.validate.SqlValidatorScope-"><code>SqlCall.validate(org.apache.calcite.sql.validate.SqlValidator, org.apache.calcite.sql.validate.SqlValidatorScope)</code></a>;
but note that some sub-classes of <a href="../../../../org/apache/calcite/sql/SqlCall.html" title="class in org.apache.calcite.sql"><code>SqlCall</code></a> never call this method.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>call</code> - the call to this operator</dd>
<dd><code>validator</code> - the active validator</dd>
<dd><code>scope</code> - validator scope</dd>
<dd><code>operandScope</code> - validator scope in which to validate operands to this
call; usually equal to scope, but not always because
some operators introduce new scopes</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/apache/calcite/sql/SqlNode.html#validateExpr-org.apache.calcite.sql.validate.SqlValidator-org.apache.calcite.sql.validate.SqlValidatorScope-"><code>SqlNode.validateExpr(SqlValidator, SqlValidatorScope)</code></a>,
<a href="../../../../org/apache/calcite/sql/SqlOperator.html#deriveType-org.apache.calcite.sql.validate.SqlValidator-org.apache.calcite.sql.validate.SqlValidatorScope-org.apache.calcite.sql.SqlCall-"><code>deriveType(SqlValidator, SqlValidatorScope, SqlCall)</code></a></dd>
</dl>
</li>
</ul>
<a name="validateOperands-org.apache.calcite.sql.validate.SqlValidator-org.apache.calcite.sql.validate.SqlValidatorScope-org.apache.calcite.sql.SqlCall-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>validateOperands</h4>
<pre>public final&nbsp;<a href="../../../../org/apache/calcite/rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;validateOperands(<a href="../../../../org/apache/calcite/sql/validate/SqlValidator.html" title="interface in org.apache.calcite.sql.validate">SqlValidator</a>&nbsp;validator,
<a href="../../../../org/apache/calcite/sql/validate/SqlValidatorScope.html" title="interface in org.apache.calcite.sql.validate">SqlValidatorScope</a>&nbsp;scope,
<a href="../../../../org/apache/calcite/sql/SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a>&nbsp;call)</pre>
<div class="block">Validates the operands of a call, inferring the return type in the
process.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>validator</code> - active validator</dd>
<dd><code>scope</code> - validation scope</dd>
<dd><code>call</code> - call to be validated</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>inferred type</dd>
</dl>
</li>
</ul>
<a name="preValidateCall-org.apache.calcite.sql.validate.SqlValidator-org.apache.calcite.sql.validate.SqlValidatorScope-org.apache.calcite.sql.SqlCall-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>preValidateCall</h4>
<pre>protected&nbsp;void&nbsp;preValidateCall(<a href="../../../../org/apache/calcite/sql/validate/SqlValidator.html" title="interface in org.apache.calcite.sql.validate">SqlValidator</a>&nbsp;validator,
<a href="../../../../org/apache/calcite/sql/validate/SqlValidatorScope.html" title="interface in org.apache.calcite.sql.validate">SqlValidatorScope</a>&nbsp;scope,
<a href="../../../../org/apache/calcite/sql/SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a>&nbsp;call)</pre>
<div class="block">Receives notification that validation of a call to this operator is
beginning. Subclasses can supply custom behavior; default implementation
does nothing.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>validator</code> - invoking validator</dd>
<dd><code>scope</code> - validation scope</dd>
<dd><code>call</code> - the call being validated</dd>
</dl>
</li>
</ul>
<a name="inferReturnType-org.apache.calcite.sql.SqlOperatorBinding-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>inferReturnType</h4>
<pre>public&nbsp;<a href="../../../../org/apache/calcite/rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;inferReturnType(<a href="../../../../org/apache/calcite/sql/SqlOperatorBinding.html" title="class in org.apache.calcite.sql">SqlOperatorBinding</a>&nbsp;opBinding)</pre>
<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="../../../../org/apache/calcite/sql/type/SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type"><code>SqlReturnTypeInference</code></a> to the constructor.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>opBinding</code> - description of invocation (not necessarily a
<a href="../../../../org/apache/calcite/sql/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 name="deriveType-org.apache.calcite.sql.validate.SqlValidator-org.apache.calcite.sql.validate.SqlValidatorScope-org.apache.calcite.sql.SqlCall-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>deriveType</h4>
<pre>public&nbsp;<a href="../../../../org/apache/calcite/rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;deriveType(<a href="../../../../org/apache/calcite/sql/validate/SqlValidator.html" title="interface in org.apache.calcite.sql.validate">SqlValidator</a>&nbsp;validator,
<a href="../../../../org/apache/calcite/sql/validate/SqlValidatorScope.html" title="interface in org.apache.calcite.sql.validate">SqlValidatorScope</a>&nbsp;scope,
<a href="../../../../org/apache/calcite/sql/SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a>&nbsp;call)</pre>
<div class="block">Derives the type of a call to this operator.
<p>This method is an intrinsic part of the validation process so, unlike
<a href="../../../../org/apache/calcite/sql/SqlOperator.html#inferReturnType-org.apache.calcite.sql.SqlOperatorBinding-"><code>inferReturnType(org.apache.calcite.sql.SqlOperatorBinding)</code></a>, specific operators would not typically override
this method.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>validator</code> - Validator</dd>
<dd><code>scope</code> - Scope of validation</dd>
<dd><code>call</code> - Call to this operator</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Type of call</dd>
</dl>
</li>
</ul>
<a name="constructArgNameList-org.apache.calcite.sql.SqlCall-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>constructArgNameList</h4>
<pre>protected&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;constructArgNameList(<a href="../../../../org/apache/calcite/sql/SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a>&nbsp;call)</pre>
</li>
</ul>
<a name="constructOperandList-org.apache.calcite.sql.validate.SqlValidator-org.apache.calcite.sql.SqlCall-java.util.List-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>constructOperandList</h4>
<pre>protected&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../org/apache/calcite/sql/SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&gt;&nbsp;constructOperandList(<a href="../../../../org/apache/calcite/sql/validate/SqlValidator.html" title="interface in org.apache.calcite.sql.validate">SqlValidator</a>&nbsp;validator,
<a href="../../../../org/apache/calcite/sql/SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a>&nbsp;call,
<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;argNames)</pre>
</li>
</ul>
<a name="constructArgTypeList-org.apache.calcite.sql.validate.SqlValidator-org.apache.calcite.sql.validate.SqlValidatorScope-org.apache.calcite.sql.SqlCall-java.util.List-boolean-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>constructArgTypeList</h4>
<pre>protected&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../org/apache/calcite/rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&gt;&nbsp;constructArgTypeList(<a href="../../../../org/apache/calcite/sql/validate/SqlValidator.html" title="interface in org.apache.calcite.sql.validate">SqlValidator</a>&nbsp;validator,
<a href="../../../../org/apache/calcite/sql/validate/SqlValidatorScope.html" title="interface in org.apache.calcite.sql.validate">SqlValidatorScope</a>&nbsp;scope,
<a href="../../../../org/apache/calcite/sql/SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a>&nbsp;call,
<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../org/apache/calcite/sql/SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&gt;&nbsp;args,
boolean&nbsp;convertRowArgToColumnList)</pre>
</li>
</ul>
<a name="adjustType-org.apache.calcite.sql.validate.SqlValidator-org.apache.calcite.sql.SqlCall-org.apache.calcite.rel.type.RelDataType-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>adjustType</h4>
<pre>protected&nbsp;<a href="../../../../org/apache/calcite/rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;adjustType(<a href="../../../../org/apache/calcite/sql/validate/SqlValidator.html" title="interface in org.apache.calcite.sql.validate">SqlValidator</a>&nbsp;validator,
<a href="../../../../org/apache/calcite/sql/SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a>&nbsp;call,
<a href="../../../../org/apache/calcite/rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;type)</pre>
<div class="block">Validates and determines coercibility and resulting collation name of
binary operator if needed.</div>
</li>
</ul>
<a name="inferReturnType-org.apache.calcite.rel.type.RelDataTypeFactory-java.util.List-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>inferReturnType</h4>
<pre>public final&nbsp;<a href="../../../../org/apache/calcite/rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;inferReturnType(<a href="../../../../org/apache/calcite/rel/type/RelDataTypeFactory.html" title="interface in org.apache.calcite.rel.type">RelDataTypeFactory</a>&nbsp;typeFactory,
<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../org/apache/calcite/rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&gt;&nbsp;operandTypes)</pre>
<div class="block">Infers the type of a call to this operator with a given set of operand
types. Shorthand for <a href="../../../../org/apache/calcite/sql/SqlOperator.html#inferReturnType-org.apache.calcite.sql.SqlOperatorBinding-"><code>inferReturnType(SqlOperatorBinding)</code></a>.</div>
</li>
</ul>
<a name="checkOperandTypes-org.apache.calcite.sql.SqlCallBinding-boolean-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>checkOperandTypes</h4>
<pre>public&nbsp;boolean&nbsp;checkOperandTypes(<a href="../../../../org/apache/calcite/sql/SqlCallBinding.html" title="class in org.apache.calcite.sql">SqlCallBinding</a>&nbsp;callBinding,
boolean&nbsp;throwOnFailure)</pre>
<div class="block">Checks that the operand values in a <a href="../../../../org/apache/calcite/sql/SqlCall.html" title="class in org.apache.calcite.sql"><code>SqlCall</code></a> to this operator are
valid. Subclasses must either override this method or supply an instance
of <a href="../../../../org/apache/calcite/sql/type/SqlOperandTypeChecker.html" title="interface in org.apache.calcite.sql.type"><code>SqlOperandTypeChecker</code></a> to the constructor.</div>
<dl>
<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 name="checkOperandCount-org.apache.calcite.sql.validate.SqlValidator-org.apache.calcite.sql.type.SqlOperandTypeChecker-org.apache.calcite.sql.SqlCall-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>checkOperandCount</h4>
<pre>protected&nbsp;void&nbsp;checkOperandCount(<a href="../../../../org/apache/calcite/sql/validate/SqlValidator.html" title="interface in org.apache.calcite.sql.validate">SqlValidator</a>&nbsp;validator,
<a href="../../../../org/apache/calcite/sql/type/SqlOperandTypeChecker.html" title="interface in org.apache.calcite.sql.type">SqlOperandTypeChecker</a>&nbsp;argType,
<a href="../../../../org/apache/calcite/sql/SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a>&nbsp;call)</pre>
</li>
</ul>
<a name="validRexOperands-int-org.apache.calcite.util.Litmus-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>validRexOperands</h4>
<pre>public&nbsp;boolean&nbsp;validRexOperands(int&nbsp;count,
<a href="../../../../org/apache/calcite/util/Litmus.html" title="interface in org.apache.calcite.util">Litmus</a>&nbsp;litmus)</pre>
<div class="block">Returns whether the given operands are valid. If not valid and
<code>fail</code>, throws an assertion error.
<p>Similar to <a href="../../../../org/apache/calcite/sql/SqlOperator.html#checkOperandCount-org.apache.calcite.sql.validate.SqlValidator-org.apache.calcite.sql.type.SqlOperandTypeChecker-org.apache.calcite.sql.SqlCall-"><code>checkOperandCount(org.apache.calcite.sql.validate.SqlValidator, org.apache.calcite.sql.type.SqlOperandTypeChecker, org.apache.calcite.sql.SqlCall)</code></a>, but some operators may have
different valid operands in <a href="../../../../org/apache/calcite/sql/SqlNode.html" title="class in org.apache.calcite.sql"><code>SqlNode</code></a> and <code>RexNode</code> formats
(some examples are CAST and AND), and this method throws internal errors,
not user errors.</p></div>
</li>
</ul>
<a name="getSignatureTemplate-int-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getSignatureTemplate</h4>
<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;getSignatureTemplate(int&nbsp;operandsCount)</pre>
<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="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 name="getAllowedSignatures--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getAllowedSignatures</h4>
<pre>public final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;getAllowedSignatures()</pre>
<div class="block">Returns a string describing the expected operand types of a call, e.g.
"SUBSTR(VARCHAR, INTEGER, INTEGER)".</div>
</li>
</ul>
<a name="getAllowedSignatures-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getAllowedSignatures</h4>
<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;getAllowedSignatures(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;opNameToUse)</pre>
<div class="block">Returns a string describing the expected operand types of a call, e.g.
"SUBSTRING(VARCHAR, INTEGER, INTEGER)" where the name (SUBSTRING in this
example) can be replaced by a specified name.</div>
</li>
</ul>
<a name="getOperandTypeInference--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getOperandTypeInference</h4>
<pre>public&nbsp;<a href="../../../../org/apache/calcite/sql/type/SqlOperandTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlOperandTypeInference</a>&nbsp;getOperandTypeInference()</pre>
</li>
</ul>
<a name="isAggregator--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isAggregator</h4>
<pre>public&nbsp;boolean&nbsp;isAggregator()</pre>
<div class="block">Returns whether this operator is an aggregate function. By default,
subclass type is used (an instance of SqlAggFunction is assumed to be an
aggregator; anything else is not).
<p>Per SQL:2011, there are <dfn>aggregate functions</dfn> and
<dfn>window functions</dfn>.
Every aggregate function (e.g. SUM) is also a window function.
There are window functions that are not aggregate functions, e.g. RANK,
NTILE, LEAD, FIRST_VALUE.</p>
<p>Collectively, aggregate and window functions are called <dfn>analytic
functions</dfn>. Despite its name, this method returns true for every
analytic function.</p></div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>whether this operator is an analytic function (aggregate function
or window function)</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/apache/calcite/sql/SqlOperator.html#requiresOrder--"><code>requiresOrder()</code></a></dd>
</dl>
</li>
</ul>
<a name="requiresOver--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>requiresOver</h4>
<pre>public&nbsp;boolean&nbsp;requiresOver()</pre>
<div class="block">Returns whether this is a window function that requires an OVER clause.
<p>For example, returns true for <code>RANK</code>, <code>DENSE_RANK</code> and
other ranking functions; returns false for <code>SUM</code>, <code>COUNT</code>,
<code>MIN</code>, <code>MAX</code>, <code>AVG</code> (they can be used as non-window
aggregate functions).
<p>If <code>requiresOver</code> returns true, then <a href="../../../../org/apache/calcite/sql/SqlOperator.html#isAggregator--"><code>isAggregator()</code></a> must
also return true.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/apache/calcite/sql/SqlOperator.html#allowsFraming--"><code>allowsFraming()</code></a>,
<a href="../../../../org/apache/calcite/sql/SqlOperator.html#requiresOrder--"><code>requiresOrder()</code></a></dd>
</dl>
</li>
</ul>
<a name="requiresOrder--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>requiresOrder</h4>
<pre>public&nbsp;boolean&nbsp;requiresOrder()</pre>
<div class="block">Returns whether this is a window function that requires ordering.
<p>Per SQL:2011, 2, 6.10: "If &lt;ntile function&gt;, &lt;lead or lag
function&gt;, RANK or DENSE_RANK is specified, then the window ordering
clause shall be present."</p></div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/apache/calcite/sql/SqlOperator.html#isAggregator--"><code>isAggregator()</code></a></dd>
</dl>
</li>
</ul>
<a name="allowsFraming--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>allowsFraming</h4>
<pre>public&nbsp;boolean&nbsp;allowsFraming()</pre>
<div class="block">Returns whether this is a window function that allows framing (i.e. a
ROWS or RANGE clause in the window specification).</div>
</li>
</ul>
<a name="isGroup--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isGroup</h4>
<pre>public&nbsp;boolean&nbsp;isGroup()</pre>
<div class="block">Returns whether this is a group function.
<p>Group functions can only appear in the GROUP BY clause.
<p>Examples are <code>HOP</code>, <code>TUMBLE</code>, <code>SESSION</code>.
<p>Group functions have auxiliary functions, e.g. <code>HOP_START</code>, but
these are not group functions.</div>
</li>
</ul>
<a name="isGroupAuxiliary--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isGroupAuxiliary</h4>
<pre>public&nbsp;boolean&nbsp;isGroupAuxiliary()</pre>
<div class="block">Returns whether this is an group auxiliary function.
<p>Examples are <code>HOP_START</code> and <code>HOP_END</code> (both auxiliary to
<code>HOP</code>).</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/apache/calcite/sql/SqlOperator.html#isGroup--"><code>isGroup()</code></a></dd>
</dl>
</li>
</ul>
<a name="acceptCall-org.apache.calcite.sql.util.SqlVisitor-org.apache.calcite.sql.SqlCall-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>acceptCall</h4>
<pre>public&nbsp;&lt;R&gt;&nbsp;R&nbsp;acceptCall(<a href="../../../../org/apache/calcite/sql/util/SqlVisitor.html" title="interface in org.apache.calcite.sql.util">SqlVisitor</a>&lt;R&gt;&nbsp;visitor,
<a href="../../../../org/apache/calcite/sql/SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a>&nbsp;call)</pre>
<div class="block">Accepts a <a href="../../../../org/apache/calcite/sql/util/SqlVisitor.html" title="interface in org.apache.calcite.sql.util"><code>SqlVisitor</code></a>, visiting each operand of a call. Returns
null.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>visitor</code> - Visitor</dd>
<dd><code>call</code> - Call to visit</dd>
</dl>
</li>
</ul>
<a name="acceptCall-org.apache.calcite.sql.util.SqlVisitor-org.apache.calcite.sql.SqlCall-boolean-org.apache.calcite.sql.util.SqlBasicVisitor.ArgHandler-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>acceptCall</h4>
<pre>public&nbsp;&lt;R&gt;&nbsp;void&nbsp;acceptCall(<a href="../../../../org/apache/calcite/sql/util/SqlVisitor.html" title="interface in org.apache.calcite.sql.util">SqlVisitor</a>&lt;R&gt;&nbsp;visitor,
<a href="../../../../org/apache/calcite/sql/SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a>&nbsp;call,
boolean&nbsp;onlyExpressions,
<a href="../../../../org/apache/calcite/sql/util/SqlBasicVisitor.ArgHandler.html" title="interface in org.apache.calcite.sql.util">SqlBasicVisitor.ArgHandler</a>&lt;R&gt;&nbsp;argHandler)</pre>
<div class="block">Accepts a <a href="../../../../org/apache/calcite/sql/util/SqlVisitor.html" title="interface in org.apache.calcite.sql.util"><code>SqlVisitor</code></a>, directing an
<a href="../../../../org/apache/calcite/sql/util/SqlBasicVisitor.ArgHandler.html" title="interface in org.apache.calcite.sql.util"><code>SqlBasicVisitor.ArgHandler</code></a>
to visit an operand of a call.
<p>The argument handler allows fine control about how the operands are
visited, and how the results are combined.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>visitor</code> - Visitor</dd>
<dd><code>call</code> - Call to visit</dd>
<dd><code>onlyExpressions</code> - If true, ignores operands which are not
expressions. For example, in the call to the
<code>AS</code> operator</dd>
<dd><code>argHandler</code> - Called for each operand</dd>
</dl>
</li>
</ul>
<a name="getReturnTypeInference--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getReturnTypeInference</h4>
<pre>public&nbsp;<a href="../../../../org/apache/calcite/sql/type/SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a>&nbsp;getReturnTypeInference()</pre>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the return type inference strategy for this operator, or null if
return type inference is implemented by a subclass override</dd>
</dl>
</li>
</ul>
<a name="getStrongPolicyInference--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getStrongPolicyInference</h4>
<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/function/Supplier.html?is-external=true" title="class or interface in java.util.function">Supplier</a>&lt;<a href="../../../../org/apache/calcite/plan/Strong.Policy.html" title="enum in org.apache.calcite.plan">Strong.Policy</a>&gt;&nbsp;getStrongPolicyInference()</pre>
<div class="block">Returns the <code>Strong.Policy</code> strategy for this operator, or null if there is no particular
strategy, in which case this policy will be deducted from the operator's <a href="../../../../org/apache/calcite/sql/SqlKind.html" title="enum in org.apache.calcite.sql"><code>SqlKind</code></a>.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/apache/calcite/plan/Strong.html" title="class in org.apache.calcite.plan"><code>Strong</code></a></dd>
</dl>
</li>
</ul>
<a name="getMonotonicity-org.apache.calcite.sql.SqlCall-org.apache.calcite.sql.validate.SqlValidatorScope-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getMonotonicity</h4>
<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
public&nbsp;<a href="../../../../org/apache/calcite/sql/validate/SqlMonotonicity.html" title="enum in org.apache.calcite.sql.validate">SqlMonotonicity</a>&nbsp;getMonotonicity(<a href="../../../../org/apache/calcite/sql/SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a>&nbsp;call,
<a href="../../../../org/apache/calcite/sql/validate/SqlValidatorScope.html" title="interface in org.apache.calcite.sql.validate">SqlValidatorScope</a>&nbsp;scope)</pre>
<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span class="deprecationComment">Use <a href="../../../../org/apache/calcite/sql/SqlOperator.html#getMonotonicity-org.apache.calcite.sql.SqlOperatorBinding-"><code>getMonotonicity(SqlOperatorBinding)</code></a></span></div>
<div class="block">Returns whether this operator is monotonic.
<p>Default implementation returns <a href="../../../../org/apache/calcite/sql/validate/SqlMonotonicity.html#NOT_MONOTONIC"><code>SqlMonotonicity.NOT_MONOTONIC</code></a>.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>call</code> - Call to this operator</dd>
<dd><code>scope</code> - Scope in which the call occurs</dd>
</dl>
</li>
</ul>
<a name="getMonotonicity-org.apache.calcite.sql.SqlOperatorBinding-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getMonotonicity</h4>
<pre>public&nbsp;<a href="../../../../org/apache/calcite/sql/validate/SqlMonotonicity.html" title="enum in org.apache.calcite.sql.validate">SqlMonotonicity</a>&nbsp;getMonotonicity(<a href="../../../../org/apache/calcite/sql/SqlOperatorBinding.html" title="class in org.apache.calcite.sql">SqlOperatorBinding</a>&nbsp;call)</pre>
<div class="block">Returns whether a call to this operator is monotonic.
<p>Default implementation returns <a href="../../../../org/apache/calcite/sql/validate/SqlMonotonicity.html#NOT_MONOTONIC"><code>SqlMonotonicity.NOT_MONOTONIC</code></a>.</div>
<dl>
<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>
<a name="isDeterministic--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isDeterministic</h4>
<pre>public&nbsp;boolean&nbsp;isDeterministic()</pre>
<div class="block">Returns whether a call to this operator is guaranteed to always return
the same result given the same operands; true is assumed by default</div>
</li>
</ul>
<a name="isSymmetrical--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isSymmetrical</h4>
<pre>public&nbsp;boolean&nbsp;isSymmetrical()</pre>
<div class="block">Returns whether a call to this operator is not sensitive to the operands input order.
An operator is symmetrical if the call returns the same result when
the operands are shuffled.
<p>By default, returns true for <a href="../../../../org/apache/calcite/sql/SqlKind.html#SYMMETRICAL"><code>SqlKind.SYMMETRICAL</code></a>.</div>
</li>
</ul>
<a name="isDynamicFunction--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isDynamicFunction</h4>
<pre>public&nbsp;boolean&nbsp;isDynamicFunction()</pre>
<div class="block">Returns whether it is unsafe to cache query plans referencing this
operator; false is assumed by default</div>
</li>
</ul>
<a name="requiresDecimalExpansion--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>requiresDecimalExpansion</h4>
<pre>public&nbsp;boolean&nbsp;requiresDecimalExpansion()</pre>
<div class="block">Method to check if call requires expansion when it has decimal operands.
The default implementation is to return true.</div>
</li>
</ul>
<a name="argumentMustBeScalar-int-">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>argumentMustBeScalar</h4>
<pre>public&nbsp;boolean&nbsp;argumentMustBeScalar(int&nbsp;ordinal)</pre>
<div class="block">Returns whether the <code>ordinal</code>th argument to this operator must
be scalar (as opposed to a query).
<p>If true (the default), the validator will attempt to convert the
argument into a scalar sub-query, which must have one column and return at
most one row.
<p>Operators such as <code>SELECT</code> and <code>EXISTS</code> override
this method.</div>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../index-all.html">Index</a></li>
<li><a href="../../../../help-doc.html">Help</a></li>
</ul>
<div class="aboutLanguage"><b>Apache Calcite</b></div>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../org/apache/calcite/sql/SqlOperandCountRange.html" title="interface in org.apache.calcite.sql"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../org/apache/calcite/sql/SqlOperatorBinding.html" title="class in org.apache.calcite.sql"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../index.html?org/apache/calcite/sql/SqlOperator.html" target="_top">Frames</a></li>
<li><a href="SqlOperator.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../allclasses-noframe.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>
</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 name="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<p class="legalCopy"><small>Copyright &copy; 2012-2020 Apache Software Foundation. All Rights Reserved.</small></p>
</body>
</html>