blob: 11cb519f9e41a51c60eee5da18f7d363612d1d2a [file] [log] [blame]
<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc -->
<title>SqlOperator (Apache Calcite API)</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../jquery/jquery-ui.css" title="Style">
<script type="text/javascript" src="../../../../script.js"></script>
<script type="text/javascript" src="../../../../jquery/jszip/dist/jszip.min.js"></script>
<script type="text/javascript" src="../../../../jquery/jszip-utils/dist/jszip-utils.min.js"></script>
<!--[if IE]>
<script type="text/javascript" src="../../../../jquery/jszip-utils/dist/jszip-utils-ie.min.js"></script>
<![endif]-->
<script type="text/javascript" src="../../../../jquery/jquery-3.3.1.js"></script>
<script type="text/javascript" src="../../../../jquery/jquery-migrate-3.0.1.js"></script>
<script type="text/javascript" src="../../../../jquery/jquery-ui.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="SqlOperator (Apache Calcite API)";
}
}
catch(err) {
}
//-->
var data = {"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":6,"i31":10,"i32":10,"i33":10,"i34":10,"i35":10,"i36":10,"i37":10,"i38":10,"i39":10,"i40":9,"i41":10,"i42":10,"i43":10,"i44":10,"i45":10,"i46":10,"i47":9,"i48":10,"i49":10,"i50":10,"i51":10,"i52":10,"i53":10,"i54":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";
var pathtoroot = "../../../../";
var useModuleDirectories = true;
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<nav role="navigation">
<div class="fixedNav">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a id="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/SqlOperator.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../index-all.html">Index</a></li>
<li><a href="../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<ul class="navListSearch">
<li><label for="search">SEARCH:</label>
<input type="text" id="search" value="search" disabled="disabled">
<input type="reset" id="reset" value="reset" disabled="disabled">
</li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a id="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
</div>
<div class="navPadding">&nbsp;</div>
<script type="text/javascript"><!--
$('.navPadding').css('padding-top', $('.fixedNav').css("height"));
//-->
</script>
</nav>
</header>
<!-- ======== START OF CLASS DATA ======== -->
<main role="main">
<div class="header">
<div class="subTitle"><span class="packageLabelInType">Package</span>&nbsp;<a href="package-summary.html">org.apache.calcite.sql</a></div>
<h2 title="Class SqlOperator" class="title">Class SqlOperator</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li>java.lang.Object</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><code><a href="SqlBinaryOperator.html" title="class in org.apache.calcite.sql">SqlBinaryOperator</a></code>, <code><a href="fun/SqlCaseOperator.html" title="class in org.apache.calcite.sql.fun">SqlCaseOperator</a></code>, <code><a href="SqlFunction.html" title="class in org.apache.calcite.sql">SqlFunction</a></code>, <code><a href="SqlJoin.SqlJoinOperator.html" title="class in org.apache.calcite.sql">SqlJoin.SqlJoinOperator</a></code>, <code><a href="SqlMatchRecognize.SqlMatchRecognizeOperator.html" title="class in org.apache.calcite.sql">SqlMatchRecognize.SqlMatchRecognizeOperator</a></code>, <code><a href="SqlPostfixOperator.html" title="class in org.apache.calcite.sql">SqlPostfixOperator</a></code>, <code><a href="SqlPrefixOperator.html" title="class in org.apache.calcite.sql">SqlPrefixOperator</a></code>, <code><a href="SqlSelectOperator.html" title="class in org.apache.calcite.sql">SqlSelectOperator</a></code>, <code><a href="SqlSnapshot.SqlSnapshotOperator.html" title="class in org.apache.calcite.sql">SqlSnapshot.SqlSnapshotOperator</a></code>, <code><a href="SqlSpecialOperator.html" title="class in org.apache.calcite.sql">SqlSpecialOperator</a></code>, <code><a href="SqlWindow.SqlWindowOperator.html" title="class in org.apache.calcite.sql">SqlWindow.SqlWindowOperator</a></code></dd>
</dl>
<hr>
<pre>public abstract class <span class="typeNameLabel">SqlOperator</span>
extends java.lang.Object</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="SqlSelectOperator.html" title="class in org.apache.calcite.sql"><code>SqlSelectOperator</code></a> or row-level
expressions (e.g. <a href="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="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="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 =========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="field.summary">
<!-- -->
</a>
<h3>Field Summary</h3>
<table class="memberSummary">
<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Field</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code><a href="SqlKind.html" title="enum in org.apache.calcite.sql">SqlKind</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#kind">kind</a></span></code></th>
<td class="colLast">
<div class="block">See <a href="SqlKind.html" title="enum in org.apache.calcite.sql"><code>SqlKind</code></a>.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>private int</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#leftPrec">leftPrec</a></span></code></th>
<td class="colLast">
<div class="block">The precedence with which this operator binds to the expression to the
left.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static int</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#MDX_PRECEDENCE">MDX_PRECEDENCE</a></span></code></th>
<td class="colLast">
<div class="block">Maximum precedence.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>private java.lang.String</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#name">name</a></span></code></th>
<td class="colLast">
<div class="block">The name of the operator/function.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#NL">NL</a></span></code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>private <a href="type/SqlOperandTypeChecker.html" title="interface in org.apache.calcite.sql.type">SqlOperandTypeChecker</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#operandTypeChecker">operandTypeChecker</a></span></code></th>
<td class="colLast">
<div class="block">used to validate operand types</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>private <a href="type/SqlOperandTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlOperandTypeInference</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#operandTypeInference">operandTypeInference</a></span></code></th>
<td class="colLast">
<div class="block">used to infer types of unknown operands</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>private <a href="type/SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#returnTypeInference">returnTypeInference</a></span></code></th>
<td class="colLast">
<div class="block">used to infer the return type of a call to this operator</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>private int</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#rightPrec">rightPrec</a></span></code></th>
<td class="colLast">
<div class="block">The precedence with which this operator binds to the expression to the
right.</div>
</td>
</tr>
</table>
</li>
</ul>
</section>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="constructor.summary">
<!-- -->
</a>
<h3>Constructor Summary</h3>
<table class="memberSummary">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier</th>
<th class="colSecond" scope="col">Constructor</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected </code></td>
<th class="colConstructorName" scope="row"><code><span class="memberNameLink"><a href="#%3Cinit%3E(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>&#8203;(java.lang.String&nbsp;name,
<a href="SqlKind.html" title="enum in org.apache.calcite.sql">SqlKind</a>&nbsp;kind,
int&nbsp;prec,
boolean&nbsp;leftAssoc,
<a href="type/SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a>&nbsp;returnTypeInference,
<a href="type/SqlOperandTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlOperandTypeInference</a>&nbsp;operandTypeInference,
<a href="type/SqlOperandTypeChecker.html" title="interface in org.apache.calcite.sql.type">SqlOperandTypeChecker</a>&nbsp;operandTypeChecker)</code></th>
<td class="colLast">
<div class="block">Creates an operator specifying left/right associativity.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>protected </code></td>
<th class="colConstructorName" scope="row"><code><span class="memberNameLink"><a href="#%3Cinit%3E(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>&#8203;(java.lang.String&nbsp;name,
<a href="SqlKind.html" title="enum in org.apache.calcite.sql">SqlKind</a>&nbsp;kind,
int&nbsp;leftPrecedence,
int&nbsp;rightPrecedence,
<a href="type/SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a>&nbsp;returnTypeInference,
<a href="type/SqlOperandTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlOperandTypeInference</a>&nbsp;operandTypeInference,
<a href="type/SqlOperandTypeChecker.html" title="interface in org.apache.calcite.sql.type">SqlOperandTypeChecker</a>&nbsp;operandTypeChecker)</code></th>
<td class="colLast">
<div class="block">Creates an operator.</div>
</td>
</tr>
</table>
</li>
</ul>
</section>
<!-- ========== METHOD SUMMARY =========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="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="colSecond" scope="col">Method</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>&lt;R&gt;&nbsp;R</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#acceptCall(org.apache.calcite.sql.util.SqlVisitor,org.apache.calcite.sql.SqlCall)">acceptCall</a></span>&#8203;(<a href="util/SqlVisitor.html" title="interface in org.apache.calcite.sql.util">SqlVisitor</a>&lt;R&gt;&nbsp;visitor,
<a href="SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a>&nbsp;call)</code></th>
<td class="colLast">
<div class="block">Accepts a <a href="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>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#acceptCall(org.apache.calcite.sql.util.SqlVisitor,org.apache.calcite.sql.SqlCall,boolean,org.apache.calcite.sql.util.SqlBasicVisitor.ArgHandler)">acceptCall</a></span>&#8203;(<a href="util/SqlVisitor.html" title="interface in org.apache.calcite.sql.util">SqlVisitor</a>&lt;R&gt;&nbsp;visitor,
<a href="SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a>&nbsp;call,
boolean&nbsp;onlyExpressions,
<a href="util/SqlBasicVisitor.ArgHandler.html" title="interface in org.apache.calcite.sql.util">SqlBasicVisitor.ArgHandler</a>&lt;R&gt;&nbsp;argHandler)</code></th>
<td class="colLast">
<div class="block">Accepts a <a href="util/SqlVisitor.html" title="interface in org.apache.calcite.sql.util"><code>SqlVisitor</code></a>, directing an
<a href="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="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#adjustType(org.apache.calcite.sql.validate.SqlValidator,org.apache.calcite.sql.SqlCall,org.apache.calcite.rel.type.RelDataType)">adjustType</a></span>&#8203;(<a href="validate/SqlValidator.html" title="interface in org.apache.calcite.sql.validate">SqlValidator</a>&nbsp;validator,
<a href="SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a>&nbsp;call,
<a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;type)</code></th>
<td class="colLast">
<div class="block">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>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#allowsFraming()">allowsFraming</a></span>()</code></th>
<td class="colLast">
<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>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#argumentMustBeScalar(int)">argumentMustBeScalar</a></span>&#8203;(int&nbsp;ordinal)</code></th>
<td class="colLast">
<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>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#checkOperandCount(org.apache.calcite.sql.validate.SqlValidator,org.apache.calcite.sql.type.SqlOperandTypeChecker,org.apache.calcite.sql.SqlCall)">checkOperandCount</a></span>&#8203;(<a href="validate/SqlValidator.html" title="interface in org.apache.calcite.sql.validate">SqlValidator</a>&nbsp;validator,
<a href="type/SqlOperandTypeChecker.html" title="interface in org.apache.calcite.sql.type">SqlOperandTypeChecker</a>&nbsp;argType,
<a href="SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a>&nbsp;call)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#checkOperandTypes(org.apache.calcite.sql.SqlCallBinding,boolean)">checkOperandTypes</a></span>&#8203;(<a href="SqlCallBinding.html" title="class in org.apache.calcite.sql">SqlCallBinding</a>&nbsp;callBinding,
boolean&nbsp;throwOnFailure)</code></th>
<td class="colLast">
<div class="block">Checks that the operand values in a <a href="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 java.util.List&lt;java.lang.String&gt;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#constructArgNameList(org.apache.calcite.sql.SqlCall)">constructArgNameList</a></span>&#8203;(<a href="SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a>&nbsp;call)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code>protected java.util.List&lt;<a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&gt;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#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>&#8203;(<a href="validate/SqlValidator.html" title="interface in org.apache.calcite.sql.validate">SqlValidator</a>&nbsp;validator,
<a href="validate/SqlValidatorScope.html" title="interface in org.apache.calcite.sql.validate">SqlValidatorScope</a>&nbsp;scope,
<a href="SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a>&nbsp;call,
java.util.List&lt;<a href="SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&gt;&nbsp;args,
boolean&nbsp;convertRowArgToColumnList)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code>protected java.util.List&lt;<a href="SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&gt;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#constructOperandList(org.apache.calcite.sql.validate.SqlValidator,org.apache.calcite.sql.SqlCall,java.util.List)">constructOperandList</a></span>&#8203;(<a href="validate/SqlValidator.html" title="interface in org.apache.calcite.sql.validate">SqlValidator</a>&nbsp;validator,
<a href="SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a>&nbsp;call,
java.util.List&lt;java.lang.String&gt;&nbsp;argNames)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i10" class="altColor">
<td class="colFirst"><code><a href="SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#createCall(org.apache.calcite.sql.parser.SqlParserPos,java.util.List)">createCall</a></span>&#8203;(<a href="parser/SqlParserPos.html" title="class in org.apache.calcite.sql.parser">SqlParserPos</a>&nbsp;pos,
java.util.List&lt;? extends <a href="SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&gt;&nbsp;operandList)</code></th>
<td class="colLast">
<div class="block">Creates a call to this operand with a list of operands.</div>
</td>
</tr>
<tr id="i11" class="rowColor">
<td class="colFirst"><code><a href="SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#createCall(org.apache.calcite.sql.parser.SqlParserPos,org.apache.calcite.sql.SqlNode...)">createCall</a></span>&#8203;(<a href="parser/SqlParserPos.html" title="class in org.apache.calcite.sql.parser">SqlParserPos</a>&nbsp;pos,
<a href="SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>...&nbsp;operands)</code></th>
<td class="colLast">
<div class="block">Creates a call to this operand with an array of operands.</div>
</td>
</tr>
<tr id="i12" class="altColor">
<td class="colFirst"><code><a href="SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#createCall(org.apache.calcite.sql.SqlLiteral,org.apache.calcite.sql.parser.SqlParserPos,org.apache.calcite.sql.SqlNode...)">createCall</a></span>&#8203;(<a href="SqlLiteral.html" title="class in org.apache.calcite.sql">SqlLiteral</a>&nbsp;functionQualifier,
<a href="parser/SqlParserPos.html" title="class in org.apache.calcite.sql.parser">SqlParserPos</a>&nbsp;pos,
<a href="SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>...&nbsp;operands)</code></th>
<td class="colLast">
<div class="block">Creates a call to this operand with an array of operands.</div>
</td>
</tr>
<tr id="i13" class="rowColor">
<td class="colFirst"><code><a href="SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#createCall(org.apache.calcite.sql.SqlNodeList)">createCall</a></span>&#8203;(<a href="SqlNodeList.html" title="class in org.apache.calcite.sql">SqlNodeList</a>&nbsp;nodeList)</code></th>
<td class="colLast">
<div class="block">Creates a call to this operand with a list of operands contained in a
<a href="SqlNodeList.html" title="class in org.apache.calcite.sql"><code>SqlNodeList</code></a>.</div>
</td>
</tr>
<tr id="i14" class="altColor">
<td class="colFirst"><code><a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#deriveType(org.apache.calcite.sql.validate.SqlValidator,org.apache.calcite.sql.validate.SqlValidatorScope,org.apache.calcite.sql.SqlCall)">deriveType</a></span>&#8203;(<a href="validate/SqlValidator.html" title="interface in org.apache.calcite.sql.validate">SqlValidator</a>&nbsp;validator,
<a href="validate/SqlValidatorScope.html" title="interface in org.apache.calcite.sql.validate">SqlValidatorScope</a>&nbsp;scope,
<a href="SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a>&nbsp;call)</code></th>
<td class="colLast">
<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>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#equals(java.lang.Object)">equals</a></span>&#8203;(java.lang.Object&nbsp;obj)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i16" class="altColor">
<td class="colFirst"><code>java.lang.String</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getAllowedSignatures()">getAllowedSignatures</a></span>()</code></th>
<td class="colLast">
<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>java.lang.String</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getAllowedSignatures(java.lang.String)">getAllowedSignatures</a></span>&#8203;(java.lang.String&nbsp;opNameToUse)</code></th>
<td class="colLast">
<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="SqlKind.html" title="enum in org.apache.calcite.sql">SqlKind</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getKind()">getKind</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i19" class="rowColor">
<td class="colFirst"><code>int</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getLeftPrec()">getLeftPrec</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i20" class="altColor">
<td class="colFirst"><code><a href="validate/SqlMonotonicity.html" title="enum in org.apache.calcite.sql.validate">SqlMonotonicity</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getMonotonicity(org.apache.calcite.sql.SqlCall,org.apache.calcite.sql.validate.SqlValidatorScope)">getMonotonicity</a></span>&#8203;(<a href="SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a>&nbsp;call,
<a href="validate/SqlValidatorScope.html" title="interface in org.apache.calcite.sql.validate">SqlValidatorScope</a>&nbsp;scope)</code></th>
<td class="colLast">
<div class="block"><span class="deprecatedLabel">Deprecated.</span>
<div class="deprecationComment">Use <a href="#getMonotonicity(org.apache.calcite.sql.SqlOperatorBinding)"><code>getMonotonicity(SqlOperatorBinding)</code></a></div>
</div>
</td>
</tr>
<tr id="i21" class="rowColor">
<td class="colFirst"><code><a href="validate/SqlMonotonicity.html" title="enum in org.apache.calcite.sql.validate">SqlMonotonicity</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getMonotonicity(org.apache.calcite.sql.SqlOperatorBinding)">getMonotonicity</a></span>&#8203;(<a href="SqlOperatorBinding.html" title="class in org.apache.calcite.sql">SqlOperatorBinding</a>&nbsp;call)</code></th>
<td class="colLast">
<div class="block">Returns whether a call to this operator is monotonic.</div>
</td>
</tr>
<tr id="i22" class="altColor">
<td class="colFirst"><code>java.lang.String</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getName()">getName</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i23" class="rowColor">
<td class="colFirst"><code><a href="SqlIdentifier.html" title="class in org.apache.calcite.sql">SqlIdentifier</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getNameAsId()">getNameAsId</a></span>()</code></th>
<td class="colLast">
<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="SqlOperandCountRange.html" title="interface in org.apache.calcite.sql">SqlOperandCountRange</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getOperandCountRange()">getOperandCountRange</a></span>()</code></th>
<td class="colLast">
<div class="block">Returns a constraint on the number of operands expected by this operator.</div>
</td>
</tr>
<tr id="i25" class="rowColor">
<td class="colFirst"><code><a href="type/SqlOperandTypeChecker.html" title="interface in org.apache.calcite.sql.type">SqlOperandTypeChecker</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getOperandTypeChecker()">getOperandTypeChecker</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i26" class="altColor">
<td class="colFirst"><code><a href="type/SqlOperandTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlOperandTypeInference</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getOperandTypeInference()">getOperandTypeInference</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i27" class="rowColor">
<td class="colFirst"><code><a href="type/SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getReturnTypeInference()">getReturnTypeInference</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i28" class="altColor">
<td class="colFirst"><code>int</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getRightPrec()">getRightPrec</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i29" class="rowColor">
<td class="colFirst"><code>java.lang.String</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getSignatureTemplate(int)">getSignatureTemplate</a></span>&#8203;(int&nbsp;operandsCount)</code></th>
<td class="colLast">
<div class="block">Returns a template describing how the operator signature is to be built.</div>
</td>
</tr>
<tr id="i30" class="altColor">
<td class="colFirst"><code>abstract <a href="SqlSyntax.html" title="enum in org.apache.calcite.sql">SqlSyntax</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getSyntax()">getSyntax</a></span>()</code></th>
<td class="colLast">
<div class="block">Returns the syntactic type of this operator, never null.</div>
</td>
</tr>
<tr id="i31" class="rowColor">
<td class="colFirst"><code>int</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#hashCode()">hashCode</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i32" class="altColor">
<td class="colFirst"><code><a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#inferReturnType(org.apache.calcite.rel.type.RelDataTypeFactory,java.util.List)">inferReturnType</a></span>&#8203;(<a href="../rel/type/RelDataTypeFactory.html" title="interface in org.apache.calcite.rel.type">RelDataTypeFactory</a>&nbsp;typeFactory,
java.util.List&lt;<a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&gt;&nbsp;operandTypes)</code></th>
<td class="colLast">
<div class="block">Infers the type of a call to this operator with a given set of operand
types.</div>
</td>
</tr>
<tr id="i33" class="rowColor">
<td class="colFirst"><code><a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#inferReturnType(org.apache.calcite.sql.SqlOperatorBinding)">inferReturnType</a></span>&#8203;(<a href="SqlOperatorBinding.html" title="class in org.apache.calcite.sql">SqlOperatorBinding</a>&nbsp;opBinding)</code></th>
<td class="colLast">
<div class="block">Infers the return type of an invocation of this operator; only called
after the number and types of operands have already been validated.</div>
</td>
</tr>
<tr id="i34" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isAggregator()">isAggregator</a></span>()</code></th>
<td class="colLast">
<div class="block">Returns whether this operator is an aggregate function.</div>
</td>
</tr>
<tr id="i35" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isDeterministic()">isDeterministic</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i36" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isDynamicFunction()">isDynamicFunction</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i37" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isGroup()">isGroup</a></span>()</code></th>
<td class="colLast">
<div class="block">Returns whether this is a group function.</div>
</td>
</tr>
<tr id="i38" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isGroupAuxiliary()">isGroupAuxiliary</a></span>()</code></th>
<td class="colLast">
<div class="block">Returns whether this is an group auxiliary function.</div>
</td>
</tr>
<tr id="i39" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isName(java.lang.String,boolean)">isName</a></span>&#8203;(java.lang.String&nbsp;testName,
boolean&nbsp;caseSensitive)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i40" class="altColor">
<td class="colFirst"><code>protected static int</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#leftPrec(int,boolean)">leftPrec</a></span>&#8203;(int&nbsp;prec,
boolean&nbsp;leftAssoc)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i41" class="rowColor">
<td class="colFirst"><code>(package private) boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#needsSpace()">needsSpace</a></span>()</code></th>
<td class="colLast">
<div class="block">Returns whether this operator should be surrounded by space when
unparsed.</div>
</td>
</tr>
<tr id="i42" class="altColor">
<td class="colFirst"><code>protected void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#preValidateCall(org.apache.calcite.sql.validate.SqlValidator,org.apache.calcite.sql.validate.SqlValidatorScope,org.apache.calcite.sql.SqlCall)">preValidateCall</a></span>&#8203;(<a href="validate/SqlValidator.html" title="interface in org.apache.calcite.sql.validate">SqlValidator</a>&nbsp;validator,
<a href="validate/SqlValidatorScope.html" title="interface in org.apache.calcite.sql.validate">SqlValidatorScope</a>&nbsp;scope,
<a href="SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a>&nbsp;call)</code></th>
<td class="colLast">
<div class="block">Receives notification that validation of a call to this operator is
beginning.</div>
</td>
</tr>
<tr id="i43" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#requiresDecimalExpansion()">requiresDecimalExpansion</a></span>()</code></th>
<td class="colLast">
<div class="block">Method to check if call requires expansion when it has decimal operands.</div>
</td>
</tr>
<tr id="i44" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#requiresOrder()">requiresOrder</a></span>()</code></th>
<td class="colLast">
<div class="block">Returns whether this is a window function that requires ordering.</div>
</td>
</tr>
<tr id="i45" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#requiresOver()">requiresOver</a></span>()</code></th>
<td class="colLast">
<div class="block">Returns whether this is a window function that requires an OVER clause.</div>
</td>
</tr>
<tr id="i46" class="altColor">
<td class="colFirst"><code><a href="SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#rewriteCall(org.apache.calcite.sql.validate.SqlValidator,org.apache.calcite.sql.SqlCall)">rewriteCall</a></span>&#8203;(<a href="validate/SqlValidator.html" title="interface in org.apache.calcite.sql.validate">SqlValidator</a>&nbsp;validator,
<a href="SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a>&nbsp;call)</code></th>
<td class="colLast">
<div class="block">Rewrites a call to this operator.</div>
</td>
</tr>
<tr id="i47" class="rowColor">
<td class="colFirst"><code>protected static int</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#rightPrec(int,boolean)">rightPrec</a></span>&#8203;(int&nbsp;prec,
boolean&nbsp;leftAssoc)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i48" class="altColor">
<td class="colFirst"><code>java.lang.String</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#toString()">toString</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i49" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#unparse(org.apache.calcite.sql.SqlWriter,org.apache.calcite.sql.SqlCall,int,int)">unparse</a></span>&#8203;(<a href="SqlWriter.html" title="interface in org.apache.calcite.sql">SqlWriter</a>&nbsp;writer,
<a href="SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a>&nbsp;call,
int&nbsp;leftPrec,
int&nbsp;rightPrec)</code></th>
<td class="colLast">
<div class="block">Writes a SQL representation of a call to this operator to a writer,
including parentheses if the operators on either side are of greater
precedence.</div>
</td>
</tr>
<tr id="i50" class="altColor">
<td class="colFirst"><code>protected void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#unparseListClause(org.apache.calcite.sql.SqlWriter,org.apache.calcite.sql.SqlNode)">unparseListClause</a></span>&#8203;(<a href="SqlWriter.html" title="interface in org.apache.calcite.sql">SqlWriter</a>&nbsp;writer,
<a href="SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;clause)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i51" class="rowColor">
<td class="colFirst"><code>protected void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#unparseListClause(org.apache.calcite.sql.SqlWriter,org.apache.calcite.sql.SqlNode,org.apache.calcite.sql.SqlKind)">unparseListClause</a></span>&#8203;(<a href="SqlWriter.html" title="interface in org.apache.calcite.sql">SqlWriter</a>&nbsp;writer,
<a href="SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;clause,
<a href="SqlKind.html" title="enum in org.apache.calcite.sql">SqlKind</a>&nbsp;sepKind)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i52" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#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>&#8203;(<a href="SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a>&nbsp;call,
<a href="validate/SqlValidator.html" title="interface in org.apache.calcite.sql.validate">SqlValidator</a>&nbsp;validator,
<a href="validate/SqlValidatorScope.html" title="interface in org.apache.calcite.sql.validate">SqlValidatorScope</a>&nbsp;scope,
<a href="validate/SqlValidatorScope.html" title="interface in org.apache.calcite.sql.validate">SqlValidatorScope</a>&nbsp;operandScope)</code></th>
<td class="colLast">
<div class="block">Validates a call to this operator.</div>
</td>
</tr>
<tr id="i53" class="rowColor">
<td class="colFirst"><code><a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#validateOperands(org.apache.calcite.sql.validate.SqlValidator,org.apache.calcite.sql.validate.SqlValidatorScope,org.apache.calcite.sql.SqlCall)">validateOperands</a></span>&#8203;(<a href="validate/SqlValidator.html" title="interface in org.apache.calcite.sql.validate">SqlValidator</a>&nbsp;validator,
<a href="validate/SqlValidatorScope.html" title="interface in org.apache.calcite.sql.validate">SqlValidatorScope</a>&nbsp;scope,
<a href="SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a>&nbsp;call)</code></th>
<td class="colLast">
<div class="block">Validates the operands of a call, inferring the return type in the
process.</div>
</td>
</tr>
<tr id="i54" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#validRexOperands(int,org.apache.calcite.util.Litmus)">validRexOperands</a></span>&#8203;(int&nbsp;count,
<a href="../util/Litmus.html" title="interface in org.apache.calcite.util">Litmus</a>&nbsp;litmus)</code></th>
<td class="colLast">
<div class="block">Returns whether the given operands are valid.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.java.lang.Object">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.Object</h3>
<code>clone, finalize, getClass, notify, notifyAll, wait, wait, wait</code></li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ FIELD DETAIL =========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="field.detail">
<!-- -->
</a>
<h3>Field Detail</h3>
<a id="NL">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>NL</h4>
<pre>public static final&nbsp;java.lang.String NL</pre>
</li>
</ul>
<a id="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 id="name">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>name</h4>
<pre>private final&nbsp;java.lang.String name</pre>
<div class="block">The name of the operator/function. Ex. "OVERLAY" or "TRIM"</div>
</li>
</ul>
<a id="kind">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>kind</h4>
<pre>public final&nbsp;<a href="SqlKind.html" title="enum in org.apache.calcite.sql">SqlKind</a> kind</pre>
<div class="block">See <a href="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>
<a id="leftPrec">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>leftPrec</h4>
<pre>private final&nbsp;int leftPrec</pre>
<div class="block">The precedence with which this operator binds to the expression to the
left. This is less than the right precedence if the operator is
left-associative.</div>
</li>
</ul>
<a id="rightPrec">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>rightPrec</h4>
<pre>private final&nbsp;int rightPrec</pre>
<div class="block">The precedence with which this operator binds to the expression to the
right. This is more than the left precedence if the operator is
left-associative.</div>
</li>
</ul>
<a id="returnTypeInference">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>returnTypeInference</h4>
<pre>private final&nbsp;<a href="type/SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a> returnTypeInference</pre>
<div class="block">used to infer the return type of a call to this operator</div>
</li>
</ul>
<a id="operandTypeInference">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>operandTypeInference</h4>
<pre>private final&nbsp;<a href="type/SqlOperandTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlOperandTypeInference</a> operandTypeInference</pre>
<div class="block">used to infer types of unknown operands</div>
</li>
</ul>
<a id="operandTypeChecker">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>operandTypeChecker</h4>
<pre>private final&nbsp;<a href="type/SqlOperandTypeChecker.html" title="interface in org.apache.calcite.sql.type">SqlOperandTypeChecker</a> operandTypeChecker</pre>
<div class="block">used to validate operand types</div>
</li>
</ul>
</li>
</ul>
</section>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="constructor.detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a id="&lt;init&gt;(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&#8203;(java.lang.String&nbsp;name,
<a href="SqlKind.html" title="enum in org.apache.calcite.sql">SqlKind</a>&nbsp;kind,
int&nbsp;leftPrecedence,
int&nbsp;rightPrecedence,
<a href="type/SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a>&nbsp;returnTypeInference,
<a href="type/SqlOperandTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlOperandTypeInference</a>&nbsp;operandTypeInference,
<a href="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 id="&lt;init&gt;(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&#8203;(java.lang.String&nbsp;name,
<a href="SqlKind.html" title="enum in org.apache.calcite.sql">SqlKind</a>&nbsp;kind,
int&nbsp;prec,
boolean&nbsp;leftAssoc,
<a href="type/SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a>&nbsp;returnTypeInference,
<a href="type/SqlOperandTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlOperandTypeInference</a>&nbsp;operandTypeInference,
<a href="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>
</section>
<!-- ============ METHOD DETAIL ========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a id="leftPrec(int,boolean)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>leftPrec</h4>
<pre class="methodSignature">protected static&nbsp;int&nbsp;leftPrec&#8203;(int&nbsp;prec,
boolean&nbsp;leftAssoc)</pre>
</li>
</ul>
<a id="rightPrec(int,boolean)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>rightPrec</h4>
<pre class="methodSignature">protected static&nbsp;int&nbsp;rightPrec&#8203;(int&nbsp;prec,
boolean&nbsp;leftAssoc)</pre>
</li>
</ul>
<a id="getOperandTypeChecker()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getOperandTypeChecker</h4>
<pre class="methodSignature">public&nbsp;<a href="type/SqlOperandTypeChecker.html" title="interface in org.apache.calcite.sql.type">SqlOperandTypeChecker</a>&nbsp;getOperandTypeChecker()</pre>
</li>
</ul>
<a id="getOperandCountRange()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getOperandCountRange</h4>
<pre class="methodSignature">public&nbsp;<a href="SqlOperandCountRange.html" title="interface in org.apache.calcite.sql">SqlOperandCountRange</a>&nbsp;getOperandCountRange()</pre>
<div class="block">Returns a constraint on the number of operands expected by this operator.
Subclasses may override this method; when they don't, the range is
derived from the <a href="type/SqlOperandTypeChecker.html" title="interface in org.apache.calcite.sql.type"><code>SqlOperandTypeChecker</code></a> associated with this
operator.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>acceptable range</dd>
</dl>
</li>
</ul>
<a id="getName()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getName</h4>
<pre class="methodSignature">public&nbsp;java.lang.String&nbsp;getName()</pre>
</li>
</ul>
<a id="getNameAsId()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getNameAsId</h4>
<pre class="methodSignature">public&nbsp;<a href="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 id="getKind()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getKind</h4>
<pre class="methodSignature">public&nbsp;<a href="SqlKind.html" title="enum in org.apache.calcite.sql">SqlKind</a>&nbsp;getKind()</pre>
</li>
</ul>
<a id="toString()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>toString</h4>
<pre class="methodSignature">public&nbsp;java.lang.String&nbsp;toString()</pre>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code>toString</code>&nbsp;in class&nbsp;<code>java.lang.Object</code></dd>
</dl>
</li>
</ul>
<a id="getLeftPrec()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getLeftPrec</h4>
<pre class="methodSignature">public&nbsp;int&nbsp;getLeftPrec()</pre>
</li>
</ul>
<a id="getRightPrec()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getRightPrec</h4>
<pre class="methodSignature">public&nbsp;int&nbsp;getRightPrec()</pre>
</li>
</ul>
<a id="getSyntax()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getSyntax</h4>
<pre class="methodSignature">public abstract&nbsp;<a href="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 id="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 class="methodSignature">public&nbsp;<a href="SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a>&nbsp;createCall&#8203;(<a href="SqlLiteral.html" title="class in org.apache.calcite.sql">SqlLiteral</a>&nbsp;functionQualifier,
<a href="parser/SqlParserPos.html" title="class in org.apache.calcite.sql.parser">SqlParserPos</a>&nbsp;pos,
<a href="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 id="createCall(org.apache.calcite.sql.parser.SqlParserPos,org.apache.calcite.sql.SqlNode...)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>createCall</h4>
<pre class="methodSignature">public final&nbsp;<a href="SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a>&nbsp;createCall&#8203;(<a href="parser/SqlParserPos.html" title="class in org.apache.calcite.sql.parser">SqlParserPos</a>&nbsp;pos,
<a href="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 id="createCall(org.apache.calcite.sql.SqlNodeList)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>createCall</h4>
<pre class="methodSignature">public final&nbsp;<a href="SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a>&nbsp;createCall&#8203;(<a href="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="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 id="createCall(org.apache.calcite.sql.parser.SqlParserPos,java.util.List)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>createCall</h4>
<pre class="methodSignature">public final&nbsp;<a href="SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a>&nbsp;createCall&#8203;(<a href="parser/SqlParserPos.html" title="class in org.apache.calcite.sql.parser">SqlParserPos</a>&nbsp;pos,
java.util.List&lt;? extends <a href="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 id="rewriteCall(org.apache.calcite.sql.validate.SqlValidator,org.apache.calcite.sql.SqlCall)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>rewriteCall</h4>
<pre class="methodSignature">public&nbsp;<a href="SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;rewriteCall&#8203;(<a href="validate/SqlValidator.html" title="interface in org.apache.calcite.sql.validate">SqlValidator</a>&nbsp;validator,
<a href="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 id="unparse(org.apache.calcite.sql.SqlWriter,org.apache.calcite.sql.SqlCall,int,int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>unparse</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;unparse&#8203;(<a href="SqlWriter.html" title="interface in org.apache.calcite.sql">SqlWriter</a>&nbsp;writer,
<a href="SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a>&nbsp;call,
int&nbsp;leftPrec,
int&nbsp;rightPrec)</pre>
<div class="block">Writes a SQL representation of a call to this operator to a writer,
including parentheses if the operators on either side are of greater
precedence.
<p>The default implementation of this method delegates to
<a href="SqlSyntax.html#unparse(org.apache.calcite.sql.SqlWriter,org.apache.calcite.sql.SqlOperator,org.apache.calcite.sql.SqlCall,int,int)"><code>SqlSyntax.unparse(org.apache.calcite.sql.SqlWriter, org.apache.calcite.sql.SqlOperator, org.apache.calcite.sql.SqlCall, int, int)</code></a>.</div>
</li>
</ul>
<a id="unparseListClause(org.apache.calcite.sql.SqlWriter,org.apache.calcite.sql.SqlNode)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>unparseListClause</h4>
<pre class="methodSignature">protected&nbsp;void&nbsp;unparseListClause&#8203;(<a href="SqlWriter.html" title="interface in org.apache.calcite.sql">SqlWriter</a>&nbsp;writer,
<a href="SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;clause)</pre>
</li>
</ul>
<a id="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 class="methodSignature">protected&nbsp;void&nbsp;unparseListClause&#8203;(<a href="SqlWriter.html" title="interface in org.apache.calcite.sql">SqlWriter</a>&nbsp;writer,
<a href="SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;clause,
<a href="SqlKind.html" title="enum in org.apache.calcite.sql">SqlKind</a>&nbsp;sepKind)</pre>
</li>
</ul>
<a id="equals(java.lang.Object)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>equals</h4>
<pre class="methodSignature">public&nbsp;boolean&nbsp;equals&#8203;(java.lang.Object&nbsp;obj)</pre>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code>equals</code>&nbsp;in class&nbsp;<code>java.lang.Object</code></dd>
</dl>
</li>
</ul>
<a id="isName(java.lang.String,boolean)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isName</h4>
<pre class="methodSignature">public&nbsp;boolean&nbsp;isName&#8203;(java.lang.String&nbsp;testName,
boolean&nbsp;caseSensitive)</pre>
</li>
</ul>
<a id="hashCode()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>hashCode</h4>
<pre class="methodSignature">public&nbsp;int&nbsp;hashCode()</pre>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code>hashCode</code>&nbsp;in class&nbsp;<code>java.lang.Object</code></dd>
</dl>
</li>
</ul>
<a id="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 class="methodSignature">public&nbsp;void&nbsp;validateCall&#8203;(<a href="SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a>&nbsp;call,
<a href="validate/SqlValidator.html" title="interface in org.apache.calcite.sql.validate">SqlValidator</a>&nbsp;validator,
<a href="validate/SqlValidatorScope.html" title="interface in org.apache.calcite.sql.validate">SqlValidatorScope</a>&nbsp;scope,
<a href="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="#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="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="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="SqlNode.html#validateExpr(org.apache.calcite.sql.validate.SqlValidator,org.apache.calcite.sql.validate.SqlValidatorScope)"><code>SqlNode.validateExpr(SqlValidator, SqlValidatorScope)</code></a>,
<a href="#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 id="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 class="methodSignature">public final&nbsp;<a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;validateOperands&#8203;(<a href="validate/SqlValidator.html" title="interface in org.apache.calcite.sql.validate">SqlValidator</a>&nbsp;validator,
<a href="validate/SqlValidatorScope.html" title="interface in org.apache.calcite.sql.validate">SqlValidatorScope</a>&nbsp;scope,
<a href="SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a>&nbsp;call)</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 id="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 class="methodSignature">protected&nbsp;void&nbsp;preValidateCall&#8203;(<a href="validate/SqlValidator.html" title="interface in org.apache.calcite.sql.validate">SqlValidator</a>&nbsp;validator,
<a href="validate/SqlValidatorScope.html" title="interface in org.apache.calcite.sql.validate">SqlValidatorScope</a>&nbsp;scope,
<a href="SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a>&nbsp;call)</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 id="inferReturnType(org.apache.calcite.sql.SqlOperatorBinding)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>inferReturnType</h4>
<pre class="methodSignature">public&nbsp;<a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;inferReturnType&#8203;(<a href="SqlOperatorBinding.html" title="class in org.apache.calcite.sql">SqlOperatorBinding</a>&nbsp;opBinding)</pre>
<div class="block">Infers the return type of an invocation of this operator; only called
after the number and types of operands have already been validated.
Subclasses must either override this method or supply an instance of
<a href="type/SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type"><code>SqlReturnTypeInference</code></a> to the constructor.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>opBinding</code> - description of invocation (not necessarily a
<a href="SqlCall.html" title="class in org.apache.calcite.sql"><code>SqlCall</code></a>)</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>inferred return type</dd>
</dl>
</li>
</ul>
<a id="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 class="methodSignature">public&nbsp;<a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;deriveType&#8203;(<a href="validate/SqlValidator.html" title="interface in org.apache.calcite.sql.validate">SqlValidator</a>&nbsp;validator,
<a href="validate/SqlValidatorScope.html" title="interface in org.apache.calcite.sql.validate">SqlValidatorScope</a>&nbsp;scope,
<a href="SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a>&nbsp;call)</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="#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 id="constructArgNameList(org.apache.calcite.sql.SqlCall)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>constructArgNameList</h4>
<pre class="methodSignature">protected&nbsp;java.util.List&lt;java.lang.String&gt;&nbsp;constructArgNameList&#8203;(<a href="SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a>&nbsp;call)</pre>
</li>
</ul>
<a id="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 class="methodSignature">protected&nbsp;java.util.List&lt;<a href="SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&gt;&nbsp;constructOperandList&#8203;(<a href="validate/SqlValidator.html" title="interface in org.apache.calcite.sql.validate">SqlValidator</a>&nbsp;validator,
<a href="SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a>&nbsp;call,
java.util.List&lt;java.lang.String&gt;&nbsp;argNames)</pre>
</li>
</ul>
<a id="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 class="methodSignature">protected&nbsp;java.util.List&lt;<a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&gt;&nbsp;constructArgTypeList&#8203;(<a href="validate/SqlValidator.html" title="interface in org.apache.calcite.sql.validate">SqlValidator</a>&nbsp;validator,
<a href="validate/SqlValidatorScope.html" title="interface in org.apache.calcite.sql.validate">SqlValidatorScope</a>&nbsp;scope,
<a href="SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a>&nbsp;call,
java.util.List&lt;<a href="SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&gt;&nbsp;args,
boolean&nbsp;convertRowArgToColumnList)</pre>
</li>
</ul>
<a id="needsSpace()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>needsSpace</h4>
<pre class="methodSignature">boolean&nbsp;needsSpace()</pre>
<div class="block">Returns whether this operator should be surrounded by space when
unparsed.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>whether this operator should be surrounded by space</dd>
</dl>
</li>
</ul>
<a id="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 class="methodSignature">protected&nbsp;<a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;adjustType&#8203;(<a href="validate/SqlValidator.html" title="interface in org.apache.calcite.sql.validate">SqlValidator</a>&nbsp;validator,
<a href="SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a>&nbsp;call,
<a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;type)</pre>
<div class="block">Validates and determines coercibility and resulting collation name of
binary operator if needed.</div>
</li>
</ul>
<a id="inferReturnType(org.apache.calcite.rel.type.RelDataTypeFactory,java.util.List)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>inferReturnType</h4>
<pre class="methodSignature">public final&nbsp;<a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;inferReturnType&#8203;(<a href="../rel/type/RelDataTypeFactory.html" title="interface in org.apache.calcite.rel.type">RelDataTypeFactory</a>&nbsp;typeFactory,
java.util.List&lt;<a href="../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="#inferReturnType(org.apache.calcite.sql.SqlOperatorBinding)"><code>inferReturnType(SqlOperatorBinding)</code></a>.</div>
</li>
</ul>
<a id="checkOperandTypes(org.apache.calcite.sql.SqlCallBinding,boolean)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>checkOperandTypes</h4>
<pre class="methodSignature">public&nbsp;boolean&nbsp;checkOperandTypes&#8203;(<a href="SqlCallBinding.html" title="class in org.apache.calcite.sql">SqlCallBinding</a>&nbsp;callBinding,
boolean&nbsp;throwOnFailure)</pre>
<div class="block">Checks that the operand values in a <a href="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="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 id="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 class="methodSignature">protected&nbsp;void&nbsp;checkOperandCount&#8203;(<a href="validate/SqlValidator.html" title="interface in org.apache.calcite.sql.validate">SqlValidator</a>&nbsp;validator,
<a href="type/SqlOperandTypeChecker.html" title="interface in org.apache.calcite.sql.type">SqlOperandTypeChecker</a>&nbsp;argType,
<a href="SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a>&nbsp;call)</pre>
</li>
</ul>
<a id="validRexOperands(int,org.apache.calcite.util.Litmus)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>validRexOperands</h4>
<pre class="methodSignature">public&nbsp;boolean&nbsp;validRexOperands&#8203;(int&nbsp;count,
<a href="../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="#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="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 id="getSignatureTemplate(int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getSignatureTemplate</h4>
<pre class="methodSignature">public&nbsp;java.lang.String&nbsp;getSignatureTemplate&#8203;(int&nbsp;operandsCount)</pre>
<div class="block">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 id="getAllowedSignatures()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getAllowedSignatures</h4>
<pre class="methodSignature">public final&nbsp;java.lang.String&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 id="getAllowedSignatures(java.lang.String)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getAllowedSignatures</h4>
<pre class="methodSignature">public&nbsp;java.lang.String&nbsp;getAllowedSignatures&#8203;(java.lang.String&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 id="getOperandTypeInference()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getOperandTypeInference</h4>
<pre class="methodSignature">public&nbsp;<a href="type/SqlOperandTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlOperandTypeInference</a>&nbsp;getOperandTypeInference()</pre>
</li>
</ul>
<a id="isAggregator()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isAggregator</h4>
<pre class="methodSignature">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="#requiresOrder()"><code>requiresOrder()</code></a></dd>
</dl>
</li>
</ul>
<a id="requiresOver()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>requiresOver</h4>
<pre class="methodSignature">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="#isAggregator()"><code>isAggregator()</code></a> must
also return true.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="#allowsFraming()"><code>allowsFraming()</code></a>,
<a href="#requiresOrder()"><code>requiresOrder()</code></a></dd>
</dl>
</li>
</ul>
<a id="requiresOrder()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>requiresOrder</h4>
<pre class="methodSignature">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="#isAggregator()"><code>isAggregator()</code></a></dd>
</dl>
</li>
</ul>
<a id="allowsFraming()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>allowsFraming</h4>
<pre class="methodSignature">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 id="isGroup()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isGroup</h4>
<pre class="methodSignature">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 id="isGroupAuxiliary()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isGroupAuxiliary</h4>
<pre class="methodSignature">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="#isGroup()"><code>isGroup()</code></a></dd>
</dl>
</li>
</ul>
<a id="acceptCall(org.apache.calcite.sql.util.SqlVisitor,org.apache.calcite.sql.SqlCall)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>acceptCall</h4>
<pre class="methodSignature">public&nbsp;&lt;R&gt;&nbsp;R&nbsp;acceptCall&#8203;(<a href="util/SqlVisitor.html" title="interface in org.apache.calcite.sql.util">SqlVisitor</a>&lt;R&gt;&nbsp;visitor,
<a href="SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a>&nbsp;call)</pre>
<div class="block">Accepts a <a href="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 id="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 class="methodSignature">public&nbsp;&lt;R&gt;&nbsp;void&nbsp;acceptCall&#8203;(<a href="util/SqlVisitor.html" title="interface in org.apache.calcite.sql.util">SqlVisitor</a>&lt;R&gt;&nbsp;visitor,
<a href="SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a>&nbsp;call,
boolean&nbsp;onlyExpressions,
<a href="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="util/SqlVisitor.html" title="interface in org.apache.calcite.sql.util"><code>SqlVisitor</code></a>, directing an
<a href="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 id="getReturnTypeInference()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getReturnTypeInference</h4>
<pre class="methodSignature">public&nbsp;<a href="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 id="getMonotonicity(org.apache.calcite.sql.SqlCall,org.apache.calcite.sql.validate.SqlValidatorScope)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getMonotonicity</h4>
<pre class="methodSignature">@Deprecated
public&nbsp;<a href="validate/SqlMonotonicity.html" title="enum in org.apache.calcite.sql.validate">SqlMonotonicity</a>&nbsp;getMonotonicity&#8203;(<a href="SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a>&nbsp;call,
<a href="validate/SqlValidatorScope.html" title="interface in org.apache.calcite.sql.validate">SqlValidatorScope</a>&nbsp;scope)</pre>
<div class="deprecationBlock"><span class="deprecatedLabel">Deprecated.</span>
<div class="deprecationComment">Use <a href="#getMonotonicity(org.apache.calcite.sql.SqlOperatorBinding)"><code>getMonotonicity(SqlOperatorBinding)</code></a></div>
</div>
<div class="block">Returns whether this operator is monotonic.
<p>Default implementation returns <a href="validate/SqlMonotonicity.html#NOT_MONOTONIC"><code>SqlMonotonicity.NOT_MONOTONIC</code></a>.</div>
<dl>
<dt><span class="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 id="getMonotonicity(org.apache.calcite.sql.SqlOperatorBinding)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getMonotonicity</h4>
<pre class="methodSignature">public&nbsp;<a href="validate/SqlMonotonicity.html" title="enum in org.apache.calcite.sql.validate">SqlMonotonicity</a>&nbsp;getMonotonicity&#8203;(<a href="SqlOperatorBinding.html" title="class in org.apache.calcite.sql">SqlOperatorBinding</a>&nbsp;call)</pre>
<div class="block">Returns whether a call to this operator is monotonic.
<p>Default implementation returns <a href="validate/SqlMonotonicity.html#NOT_MONOTONIC"><code>SqlMonotonicity.NOT_MONOTONIC</code></a>.</div>
<dl>
<dt><span class="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 id="isDeterministic()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isDeterministic</h4>
<pre class="methodSignature">public&nbsp;boolean&nbsp;isDeterministic()</pre>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>true iff a call to this operator is guaranteed to always return
the same result given the same operands; true is assumed by default</dd>
</dl>
</li>
</ul>
<a id="isDynamicFunction()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isDynamicFunction</h4>
<pre class="methodSignature">public&nbsp;boolean&nbsp;isDynamicFunction()</pre>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>true iff it is unsafe to cache query plans referencing this
operator; false is assumed by default</dd>
</dl>
</li>
</ul>
<a id="requiresDecimalExpansion()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>requiresDecimalExpansion</h4>
<pre class="methodSignature">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 id="argumentMustBeScalar(int)">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>argumentMustBeScalar</h4>
<pre class="methodSignature">public&nbsp;boolean&nbsp;argumentMustBeScalar&#8203;(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>
</section>
</li>
</ul>
</div>
</div>
</main>
<!-- ========= END OF CLASS DATA ========= -->
<footer role="contentinfo">
<nav role="navigation">
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a id="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/SqlOperator.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../index-all.html">Index</a></li>
<li><a href="../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a id="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</nav>
<p class="legalCopy"><small>Copyright &#169; 2012&#x2013;2019 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
</footer>
</body>
</html>