blob: 96d37b5fb6a29e3b258ab58b3206ef4296e3d1bc [file] [log] [blame]
<!DOCTYPE HTML>
<html lang="en">
<head>
<!-- Generated by javadoc (17) -->
<title>SqlOperator (Apache Calcite API)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="description" content="declaration: package: org.apache.calcite.sql, class: SqlOperator">
<meta name="generator" content="javadoc/ClassWriterImpl">
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../script-dir/jquery-ui.min.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../jquery-ui.overrides.css" title="Style">
<script type="text/javascript" src="../../../../script.js"></script>
<script type="text/javascript" src="../../../../script-dir/jquery-3.5.1.min.js"></script>
<script type="text/javascript" src="../../../../script-dir/jquery-ui.min.js"></script>
</head>
<body class="class-declaration-page">
<script type="text/javascript">var evenRowColor = "even-row-color";
var oddRowColor = "odd-row-color";
var tableTab = "table-tab";
var activeTableTab = "active-table-tab";
var pathtoroot = "../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<div class="flex-box">
<header role="banner" class="flex-header">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top">
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<div class="about-language"><b>Apache Calcite</b></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="nav-bar-cell1-rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../index-all.html">Index</a></li>
<li><a href="../../../../help-doc.html#class">Help</a></li>
</ul>
</div>
<div class="sub-nav">
<div>
<ul class="sub-nav-list">
<li>Summary:&nbsp;</li>
<li>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="sub-nav-list">
<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>
<div class="nav-list-search"><label for="search-input">SEARCH:</label>
<input type="text" id="search-input" value="search" disabled="disabled">
<input type="reset" id="reset-button" value="reset" disabled="disabled">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">org.apache.calcite.sql</a></div>
<h1 title="Class SqlOperator" class="title">Class SqlOperator</h1>
</div>
<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
<div class="inheritance">org.apache.calcite.sql.SqlOperator</div>
</div>
<section class="class-description" id="class-description">
<dl class="notes">
<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="SqlDescriptorOperator.html" title="class in org.apache.calcite.sql">SqlDescriptorOperator</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></dd>
</dl>
<hr>
<div class="type-signature"><span class="modifiers">public abstract class </span><span class="element-name type-name-label">SqlOperator</span>
<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
<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>
</section>
<section class="summary">
<ul class="summary-list">
<!-- =========== FIELD SUMMARY =========== -->
<li>
<section class="field-summary" id="field-summary">
<h2>Field Summary</h2>
<div class="caption"><span>Fields</span></div>
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Field</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color"><code>final <a href="SqlKind.html" title="enum in org.apache.calcite.sql">SqlKind</a></code></div>
<div class="col-second even-row-color"><code><a href="#kind" class="member-name-link">kind</a></code></div>
<div class="col-last even-row-color">
<div class="block">See <a href="SqlKind.html" title="enum in org.apache.calcite.sql"><code>SqlKind</code></a>.</div>
</div>
<div class="col-first odd-row-color"><code>static final int</code></div>
<div class="col-second odd-row-color"><code><a href="#MDX_PRECEDENCE" class="member-name-link">MDX_PRECEDENCE</a></code></div>
<div class="col-last odd-row-color">
<div class="block">Maximum precedence.</div>
</div>
<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
<div class="col-second even-row-color"><code><a href="#NL" class="member-name-link">NL</a></code></div>
<div class="col-last even-row-color">&nbsp;</div>
</div>
</section>
</li>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<li>
<section class="constructor-summary" id="constructor-summary">
<h2>Constructor Summary</h2>
<div class="caption"><span>Constructors</span></div>
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier</div>
<div class="table-header col-second">Constructor</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color"><code>protected </code></div>
<div class="col-constructor-name even-row-color"><code><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)" class="member-name-link">SqlOperator</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
<a href="SqlKind.html" title="enum in org.apache.calcite.sql">SqlKind</a>&nbsp;kind,
int&nbsp;prec,
boolean&nbsp;leftAssoc,
@Nullable <a href="type/SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a>&nbsp;returnTypeInference,
@Nullable <a href="type/SqlOperandTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlOperandTypeInference</a>&nbsp;operandTypeInference,
@Nullable <a href="type/SqlOperandTypeChecker.html" title="interface in org.apache.calcite.sql.type">SqlOperandTypeChecker</a>&nbsp;operandTypeChecker)</code></div>
<div class="col-last even-row-color">
<div class="block">Creates an operator specifying left/right associativity.</div>
</div>
<div class="col-first odd-row-color"><code>protected </code></div>
<div class="col-constructor-name odd-row-color"><code><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)" class="member-name-link">SqlOperator</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
<a href="SqlKind.html" title="enum in org.apache.calcite.sql">SqlKind</a>&nbsp;kind,
int&nbsp;leftPrecedence,
int&nbsp;rightPrecedence,
@Nullable <a href="type/SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a>&nbsp;returnTypeInference,
@Nullable <a href="type/SqlOperandTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlOperandTypeInference</a>&nbsp;operandTypeInference,
@Nullable <a href="type/SqlOperandTypeChecker.html" title="interface in org.apache.calcite.sql.type">SqlOperandTypeChecker</a>&nbsp;operandTypeChecker)</code></div>
<div class="col-last odd-row-color">
<div class="block">Creates an operator.</div>
</div>
</div>
</section>
</li>
<!-- ========== METHOD SUMMARY =========== -->
<li>
<section class="method-summary" id="method-summary">
<h2>Method Summary</h2>
<div id="method-summary-table">
<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab1" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab1', 3)" class="table-tab">Static Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab3" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab3', 3)" class="table-tab">Abstract Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button><button id="method-summary-table-tab6" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab6', 3)" class="table-tab">Deprecated Methods</button></div>
<div id="method-summary-table.tabpanel" role="tabpanel">
<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Method</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>&lt;R&gt;&nbsp;@Nullable R</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#acceptCall(org.apache.calcite.sql.util.SqlVisitor,org.apache.calcite.sql.SqlCall)" class="member-name-link">acceptCall</a><wbr>(<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></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<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>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>&lt;R&gt;&nbsp;void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#acceptCall(org.apache.calcite.sql.util.SqlVisitor,org.apache.calcite.sql.SqlCall,boolean,org.apache.calcite.sql.util.SqlBasicVisitor.ArgHandler)" class="member-name-link">acceptCall</a><wbr>(<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></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<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>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected <a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#adjustType(org.apache.calcite.sql.validate.SqlValidator,org.apache.calcite.sql.SqlCall,org.apache.calcite.rel.type.RelDataType)" class="member-name-link">adjustType</a><wbr>(<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></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Validates and determines coercibility and resulting collation name of
binary operator if needed.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#allowsFraming()" class="member-name-link">allowsFraming</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Returns whether this is a window function that allows framing (i.e.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#argumentMustBeScalar(int)" class="member-name-link">argumentMustBeScalar</a><wbr>(int&nbsp;ordinal)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Returns whether the <code>ordinal</code>th argument to this operator must
be scalar (as opposed to a query).</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#checkOperandCount(org.apache.calcite.sql.validate.SqlValidator,org.apache.calcite.sql.type.SqlOperandTypeChecker,org.apache.calcite.sql.SqlCall)" class="member-name-link">checkOperandCount</a><wbr>(<a href="validate/SqlValidator.html" title="interface in org.apache.calcite.sql.validate">SqlValidator</a>&nbsp;validator,
@Nullable <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></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#checkOperandTypes(org.apache.calcite.sql.SqlCallBinding,boolean)" class="member-name-link">checkOperandTypes</a><wbr>(<a href="SqlCallBinding.html" title="class in org.apache.calcite.sql">SqlCallBinding</a>&nbsp;callBinding,
boolean&nbsp;throwOnFailure)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<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>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected @Nullable <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#constructArgNameList(org.apache.calcite.sql.SqlCall)" class="member-name-link">constructArgNameList</a><wbr>(<a href="SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a>&nbsp;call)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&gt;</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#constructArgTypeList(org.apache.calcite.sql.validate.SqlValidator,org.apache.calcite.sql.validate.SqlValidatorScope,org.apache.calcite.sql.SqlCall,java.util.List,boolean)" class="member-name-link">constructArgTypeList</a><wbr>(<a href="validate/SqlValidator.html" title="interface in org.apache.calcite.sql.validate">SqlValidator</a>&nbsp;validator,
<a href="validate/SqlValidatorScope.html" title="interface in org.apache.calcite.sql.validate">SqlValidatorScope</a>&nbsp;scope,
<a href="SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a>&nbsp;call,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&gt;&nbsp;args,
boolean&nbsp;convertRowArgToColumnList)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&gt;</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#constructOperandList(org.apache.calcite.sql.validate.SqlValidator,org.apache.calcite.sql.SqlCall,java.util.List)" class="member-name-link">constructOperandList</a><wbr>(<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,
@Nullable <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;&nbsp;argNames)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#createCall(org.apache.calcite.sql.SqlLiteral,org.apache.calcite.sql.parser.SqlParserPos,org.apache.calcite.sql.SqlNode...)" class="member-name-link">createCall</a><wbr>(@Nullable <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,
@Nullable <a href="SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>...&nbsp;operands)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Creates a call to this operator with an array of operands.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>final <a href="SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#createCall(org.apache.calcite.sql.SqlLiteral,org.apache.calcite.sql.parser.SqlParserPos,java.lang.Iterable)" class="member-name-link">createCall</a><wbr>(@Nullable <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="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Iterable.html" title="class or interface in java.lang" class="external-link">Iterable</a>&lt;? extends @Nullable <a href="SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&gt;&nbsp;operands)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Creates a call to this operator with a list of operands.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4 method-summary-table-tab6"><code>static <a href="SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4 method-summary-table-tab6"><code><a href="#createCall(org.apache.calcite.sql.SqlLiteral,org.apache.calcite.sql.parser.SqlParserPos,org.apache.calcite.sql.SqlNodeList)" class="member-name-link">createCall</a><wbr>(@Nullable <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="SqlNodeList.html" title="class in org.apache.calcite.sql">SqlNodeList</a>&nbsp;operands)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4 method-summary-table-tab6">
<div class="block"><span class="deprecated-label">Deprecated.</span></div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>final <a href="SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#createCall(org.apache.calcite.sql.parser.SqlParserPos,org.apache.calcite.sql.SqlNode...)" class="member-name-link">createCall</a><wbr>(<a href="parser/SqlParserPos.html" title="class in org.apache.calcite.sql.parser">SqlParserPos</a>&nbsp;pos,
@Nullable <a href="SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>...&nbsp;operands)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Creates a call to this operator with an array of operands.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>final <a href="SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#createCall(org.apache.calcite.sql.parser.SqlParserPos,java.util.List)" class="member-name-link">createCall</a><wbr>(<a href="parser/SqlParserPos.html" title="class in org.apache.calcite.sql.parser">SqlParserPos</a>&nbsp;pos,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;? extends @Nullable <a href="SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&gt;&nbsp;operandList)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Creates a call to this operator with a list of operands.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4 method-summary-table-tab6"><code><a href="SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4 method-summary-table-tab6"><code><a href="#createCall(org.apache.calcite.sql.parser.SqlParserPos,org.apache.calcite.sql.SqlNodeList)" class="member-name-link">createCall</a><wbr>(<a href="parser/SqlParserPos.html" title="class in org.apache.calcite.sql.parser">SqlParserPos</a>&nbsp;pos,
<a href="SqlNodeList.html" title="class in org.apache.calcite.sql">SqlNodeList</a>&nbsp;operands)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4 method-summary-table-tab6">
<div class="block"><span class="deprecated-label">Deprecated.</span></div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>final <a href="SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#createCall(org.apache.calcite.sql.SqlNodeList)" class="member-name-link">createCall</a><wbr>(<a href="SqlNodeList.html" title="class in org.apache.calcite.sql">SqlNodeList</a>&nbsp;nodeList)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Creates a call to this operator with a list of operands contained in a
<a href="SqlNodeList.html" title="class in org.apache.calcite.sql"><code>SqlNodeList</code></a>.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected <a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#deriveOperandType(org.apache.calcite.sql.validate.SqlValidator,org.apache.calcite.sql.validate.SqlValidatorScope,int,org.apache.calcite.sql.SqlNode)" class="member-name-link">deriveOperandType</a><wbr>(<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,
int&nbsp;i,
<a href="SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;operand)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#deriveType(org.apache.calcite.sql.validate.SqlValidator,org.apache.calcite.sql.validate.SqlValidatorScope,org.apache.calcite.sql.SqlCall)" class="member-name-link">deriveType</a><wbr>(<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></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Derives the type of a call to this operator.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#equals(java.lang.Object)" class="member-name-link">equals</a><wbr>(@Nullable <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;obj)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>final <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getAllowedSignatures()" class="member-name-link">getAllowedSignatures</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Returns a string describing the expected operand types of a call, e.g.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getAllowedSignatures(java.lang.String)" class="member-name-link">getAllowedSignatures</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;opNameToUse)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Returns a string describing the expected operand types of a call, e.g.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="SqlKind.html" title="enum in org.apache.calcite.sql">SqlKind</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getKind()" class="member-name-link">getKind</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>int</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getLeftPrec()" class="member-name-link">getLeftPrec</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4 method-summary-table-tab6"><code><a href="validate/SqlMonotonicity.html" title="enum in org.apache.calcite.sql.validate">SqlMonotonicity</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4 method-summary-table-tab6"><code><a href="#getMonotonicity(org.apache.calcite.sql.SqlCall,org.apache.calcite.sql.validate.SqlValidatorScope)" class="member-name-link">getMonotonicity</a><wbr>(<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></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4 method-summary-table-tab6">
<div class="block"><span class="deprecated-label">Deprecated.</span>
<div class="deprecation-comment">Use <a href="#getMonotonicity(org.apache.calcite.sql.SqlOperatorBinding)"><code>getMonotonicity(SqlOperatorBinding)</code></a></div>
</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="validate/SqlMonotonicity.html" title="enum in org.apache.calcite.sql.validate">SqlMonotonicity</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getMonotonicity(org.apache.calcite.sql.SqlOperatorBinding)" class="member-name-link">getMonotonicity</a><wbr>(<a href="SqlOperatorBinding.html" title="class in org.apache.calcite.sql">SqlOperatorBinding</a>&nbsp;call)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Returns whether a call to this operator is monotonic.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getName()" class="member-name-link">getName</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="SqlIdentifier.html" title="class in org.apache.calcite.sql">SqlIdentifier</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getNameAsId()" class="member-name-link">getNameAsId</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Returns the fully-qualified name of this operator.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="SqlOperandCountRange.html" title="interface in org.apache.calcite.sql">SqlOperandCountRange</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getOperandCountRange()" class="member-name-link">getOperandCountRange</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Returns a constraint on the number of operands expected by this operator.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>@Nullable <a href="type/SqlOperandTypeChecker.html" title="interface in org.apache.calcite.sql.type">SqlOperandTypeChecker</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getOperandTypeChecker()" class="member-name-link">getOperandTypeChecker</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>@Nullable <a href="type/SqlOperandTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlOperandTypeInference</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getOperandTypeInference()" class="member-name-link">getOperandTypeInference</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>@Nullable <a href="type/SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getReturnTypeInference()" class="member-name-link">getReturnTypeInference</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Returns the return type inference strategy for this operator, or null if
return type inference is implemented by a subclass override.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>int</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getRightPrec()" class="member-name-link">getRightPrec</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>@Nullable <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getSignatureTemplate(int)" class="member-name-link">getSignatureTemplate</a><wbr>(int&nbsp;operandsCount)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Returns a template describing how the operator signature is to be built.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>@Nullable <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Supplier.html" title="class or interface in java.util.function" class="external-link">Supplier</a>&lt;<a href="../plan/Strong.Policy.html" title="enum in org.apache.calcite.plan">Strong.Policy</a>&gt;</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getStrongPolicyInference()" class="member-name-link">getStrongPolicyInference</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Returns the <a href="../plan/Strong.Policy.html" title="enum in org.apache.calcite.plan"><code>Strong.Policy</code></a> 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="SqlKind.html" title="enum in org.apache.calcite.sql"><code>SqlKind</code></a>.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>abstract <a href="SqlSyntax.html" title="enum in org.apache.calcite.sql">SqlSyntax</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#getSyntax()" class="member-name-link">getSyntax</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Returns the syntactic type of this operator, never null.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>int</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#hashCode()" class="member-name-link">hashCode</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>final <a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#inferReturnType(org.apache.calcite.rel.type.RelDataTypeFactory,java.util.List)" class="member-name-link">inferReturnType</a><wbr>(<a href="../rel/type/RelDataTypeFactory.html" title="interface in org.apache.calcite.rel.type">RelDataTypeFactory</a>&nbsp;typeFactory,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&gt;&nbsp;operandTypes)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Infers the type of a call to this operator with a given set of operand
types.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#inferReturnType(org.apache.calcite.sql.SqlOperatorBinding)" class="member-name-link">inferReturnType</a><wbr>(<a href="SqlOperatorBinding.html" title="class in org.apache.calcite.sql">SqlOperatorBinding</a>&nbsp;opBinding)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<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>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#isAggregator()" class="member-name-link">isAggregator</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Returns whether this operator is an aggregate function.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#isDeterministic()" class="member-name-link">isDeterministic</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<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>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#isDynamicFunction()" class="member-name-link">isDynamicFunction</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Returns whether it is unsafe to cache query plans referencing this
operator; false is assumed by default.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#isGroup()" class="member-name-link">isGroup</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Returns whether this is a group function.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#isGroupAuxiliary()" class="member-name-link">isGroupAuxiliary</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Returns whether this is an group auxiliary function.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#isName(java.lang.String,boolean)" class="member-name-link">isName</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;testName,
boolean&nbsp;caseSensitive)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#isSymmetrical()" class="member-name-link">isSymmetrical</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Returns whether a call to this operator is not sensitive to the operands input order.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>protected static int</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#leftPrec(int,boolean)" class="member-name-link">leftPrec</a><wbr>(int&nbsp;prec,
boolean&nbsp;leftAssoc)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">&nbsp;</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>@Nullable <a href="SqlOperator.html" title="class in org.apache.calcite.sql">SqlOperator</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#not()" class="member-name-link">not</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Returns the operator that is the logical inverse of this operator.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#preValidateCall(org.apache.calcite.sql.validate.SqlValidator,org.apache.calcite.sql.validate.SqlValidatorScope,org.apache.calcite.sql.SqlCall)" class="member-name-link">preValidateCall</a><wbr>(<a href="validate/SqlValidator.html" title="interface in org.apache.calcite.sql.validate">SqlValidator</a>&nbsp;validator,
@Nullable <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></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Receives notification that validation of a call to this operator is
beginning.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#requiresDecimalExpansion()" class="member-name-link">requiresDecimalExpansion</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Method to check if call requires expansion when it has decimal operands.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#requiresOrder()" class="member-name-link">requiresOrder</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Returns whether this is a window function that requires ordering.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#requiresOver()" class="member-name-link">requiresOver</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Returns whether this is a window function that requires an OVER clause.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>@Nullable <a href="SqlOperator.html" title="class in org.apache.calcite.sql">SqlOperator</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#reverse()" class="member-name-link">reverse</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Returns the operator that has the same effect as this operator
if its arguments are reversed.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#rewriteCall(org.apache.calcite.sql.validate.SqlValidator,org.apache.calcite.sql.SqlCall)" class="member-name-link">rewriteCall</a><wbr>(<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></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Rewrites a call to this operator.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>protected static int</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#rightPrec(int,boolean)" class="member-name-link">rightPrec</a><wbr>(int&nbsp;prec,
boolean&nbsp;leftAssoc)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">&nbsp;</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#toString()" class="member-name-link">toString</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#unparse(org.apache.calcite.sql.SqlWriter,org.apache.calcite.sql.SqlCall,int,int)" class="member-name-link">unparse</a><wbr>(<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></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<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>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4 method-summary-table-tab6"><code>protected void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4 method-summary-table-tab6"><code><a href="#unparseListClause(org.apache.calcite.sql.SqlWriter,org.apache.calcite.sql.SqlNode)" class="member-name-link">unparseListClause</a><wbr>(<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></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4 method-summary-table-tab6">
<div class="block"><span class="deprecated-label">Deprecated.</span></div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4 method-summary-table-tab6"><code>protected void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4 method-summary-table-tab6"><code><a href="#unparseListClause(org.apache.calcite.sql.SqlWriter,org.apache.calcite.sql.SqlNode,org.apache.calcite.sql.SqlKind)" class="member-name-link">unparseListClause</a><wbr>(<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,
@Nullable <a href="SqlKind.html" title="enum in org.apache.calcite.sql">SqlKind</a>&nbsp;sepKind)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4 method-summary-table-tab6">
<div class="block"><span class="deprecated-label">Deprecated.</span></div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><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)" class="member-name-link">validateCall</a><wbr>(<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></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Validates a call to this operator.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>final <a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#validateOperands(org.apache.calcite.sql.validate.SqlValidator,org.apache.calcite.sql.validate.SqlValidatorScope,org.apache.calcite.sql.SqlCall)" class="member-name-link">validateOperands</a><wbr>(<a href="validate/SqlValidator.html" title="interface in org.apache.calcite.sql.validate">SqlValidator</a>&nbsp;validator,
@Nullable <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></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Validates the operands of a call, inferring the return type in the
process.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#validRexOperands(int,org.apache.calcite.util.Litmus)" class="member-name-link">validRexOperands</a><wbr>(int&nbsp;count,
<a href="../util/Litmus.html" title="interface in org.apache.calcite.util">Litmus</a>&nbsp;litmus)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Returns whether the given operands are valid.</div>
</div>
</div>
</div>
</div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
</section>
</li>
</ul>
</section>
<section class="details">
<ul class="details-list">
<!-- ============ FIELD DETAIL =========== -->
<li>
<section class="field-details" id="field-detail">
<h2>Field Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="NL">
<h3>NL</h3>
<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">NL</span></div>
</section>
</li>
<li>
<section class="detail" id="MDX_PRECEDENCE">
<h3>MDX_PRECEDENCE</h3>
<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">MDX_PRECEDENCE</span></div>
<div class="block">Maximum precedence.</div>
<dl class="notes">
<dt>See Also:</dt>
<dd>
<ul class="see-list">
<li><a href="../../../../constant-values.html#org.apache.calcite.sql.SqlOperator.MDX_PRECEDENCE">Constant Field Values</a></li>
</ul>
</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="kind">
<h3>kind</h3>
<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<span class="return-type"><a href="SqlKind.html" title="enum in org.apache.calcite.sql">SqlKind</a></span>&nbsp;<span class="element-name">kind</span></div>
<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>
</section>
</li>
</ul>
</section>
</li>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<li>
<section class="constructor-details" id="constructor-detail">
<h2>Constructor Details</h2>
<ul class="member-list">
<li>
<section class="detail" 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)">
<h3>SqlOperator</h3>
<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="element-name">SqlOperator</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
<a href="SqlKind.html" title="enum in org.apache.calcite.sql">SqlKind</a>&nbsp;kind,
int&nbsp;leftPrecedence,
int&nbsp;rightPrecedence,
@Nullable <a href="type/SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a>&nbsp;returnTypeInference,
@Nullable <a href="type/SqlOperandTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlOperandTypeInference</a>&nbsp;operandTypeInference,
@Nullable <a href="type/SqlOperandTypeChecker.html" title="interface in org.apache.calcite.sql.type">SqlOperandTypeChecker</a>&nbsp;operandTypeChecker)</span></div>
<div class="block">Creates an operator.</div>
</section>
</li>
<li>
<section class="detail" 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)">
<h3>SqlOperator</h3>
<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="element-name">SqlOperator</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name,
<a href="SqlKind.html" title="enum in org.apache.calcite.sql">SqlKind</a>&nbsp;kind,
int&nbsp;prec,
boolean&nbsp;leftAssoc,
@Nullable <a href="type/SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a>&nbsp;returnTypeInference,
@Nullable <a href="type/SqlOperandTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlOperandTypeInference</a>&nbsp;operandTypeInference,
@Nullable <a href="type/SqlOperandTypeChecker.html" title="interface in org.apache.calcite.sql.type">SqlOperandTypeChecker</a>&nbsp;operandTypeChecker)</span></div>
<div class="block">Creates an operator specifying left/right associativity.</div>
</section>
</li>
</ul>
</section>
</li>
<!-- ============ METHOD DETAIL ========== -->
<li>
<section class="method-details" id="method-detail">
<h2>Method Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="leftPrec(int,boolean)">
<h3>leftPrec</h3>
<div class="member-signature"><span class="modifiers">protected static</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">leftPrec</span><wbr><span class="parameters">(int&nbsp;prec,
boolean&nbsp;leftAssoc)</span></div>
</section>
</li>
<li>
<section class="detail" id="rightPrec(int,boolean)">
<h3>rightPrec</h3>
<div class="member-signature"><span class="modifiers">protected static</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">rightPrec</span><wbr><span class="parameters">(int&nbsp;prec,
boolean&nbsp;leftAssoc)</span></div>
</section>
</li>
<li>
<section class="detail" id="getOperandTypeChecker()">
<h3>getOperandTypeChecker</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">@Nullable <a href="type/SqlOperandTypeChecker.html" title="interface in org.apache.calcite.sql.type">SqlOperandTypeChecker</a></span>&nbsp;<span class="element-name">getOperandTypeChecker</span>()</div>
</section>
</li>
<li>
<section class="detail" id="getOperandCountRange()">
<h3>getOperandCountRange</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="SqlOperandCountRange.html" title="interface in org.apache.calcite.sql">SqlOperandCountRange</a></span>&nbsp;<span class="element-name">getOperandCountRange</span>()</div>
<div class="block">Returns a constraint on the number of operands expected by this operator.
Subclasses may override this method; when they don't, the range is
derived from the <a href="type/SqlOperandTypeChecker.html" title="interface in org.apache.calcite.sql.type"><code>SqlOperandTypeChecker</code></a> associated with this
operator.</div>
<dl class="notes">
<dt>Returns:</dt>
<dd>acceptable range</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="getName()">
<h3>getName</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">getName</span>()</div>
</section>
</li>
<li>
<section class="detail" id="getNameAsId()">
<h3>getNameAsId</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="SqlIdentifier.html" title="class in org.apache.calcite.sql">SqlIdentifier</a></span>&nbsp;<span class="element-name">getNameAsId</span>()</div>
<div class="block">Returns the fully-qualified name of this operator.</div>
</section>
</li>
<li>
<section class="detail" id="getKind()">
<h3>getKind</h3>
<div class="member-signature"><span class="annotations">@Pure
</span><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="SqlKind.html" title="enum in org.apache.calcite.sql">SqlKind</a></span>&nbsp;<span class="element-name">getKind</span>()</div>
</section>
</li>
<li>
<section class="detail" id="toString()">
<h3>toString</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">toString</span>()</div>
<dl class="notes">
<dt>Overrides:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></code></dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="getLeftPrec()">
<h3>getLeftPrec</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">getLeftPrec</span>()</div>
</section>
</li>
<li>
<section class="detail" id="getRightPrec()">
<h3>getRightPrec</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">getRightPrec</span>()</div>
</section>
</li>
<li>
<section class="detail" id="getSyntax()">
<h3>getSyntax</h3>
<div class="member-signature"><span class="modifiers">public abstract</span>&nbsp;<span class="return-type"><a href="SqlSyntax.html" title="enum in org.apache.calcite.sql">SqlSyntax</a></span>&nbsp;<span class="element-name">getSyntax</span>()</div>
<div class="block">Returns the syntactic type of this operator, never null.</div>
</section>
</li>
<li>
<section class="detail" id="createCall(org.apache.calcite.sql.SqlLiteral,org.apache.calcite.sql.parser.SqlParserPos,java.lang.Iterable)">
<h3>createCall</h3>
<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<span class="return-type"><a href="SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a></span>&nbsp;<span class="element-name">createCall</span><wbr><span class="parameters">(@Nullable <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="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Iterable.html" title="class or interface in java.lang" class="external-link">Iterable</a>&lt;? extends @Nullable <a href="SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&gt;&nbsp;operands)</span></div>
<div class="block">Creates a call to this operator 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>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>functionQualifier</code> - Function qualifier (e.g. "DISTINCT"), or null</dd>
<dd><code>pos</code> - Parser position of the identifier of the call</dd>
<dd><code>operands</code> - List of operands</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="createCall(org.apache.calcite.sql.SqlLiteral,org.apache.calcite.sql.parser.SqlParserPos,org.apache.calcite.sql.SqlNode...)">
<h3>createCall</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a></span>&nbsp;<span class="element-name">createCall</span><wbr><span class="parameters">(@Nullable <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,
@Nullable <a href="SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>...&nbsp;operands)</span></div>
<div class="block">Creates a call to this operator 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 class="notes">
<dt>Parameters:</dt>
<dd><code>functionQualifier</code> - Function qualifier (e.g. "DISTINCT"), or null</dd>
<dd><code>pos</code> - Parser position of the identifier of the call</dd>
<dd><code>operands</code> - Array of operands</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="createCall(org.apache.calcite.sql.SqlLiteral,org.apache.calcite.sql.parser.SqlParserPos,org.apache.calcite.sql.SqlNodeList)">
<h3>createCall</h3>
<div class="member-signature"><span class="annotations"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Deprecated.html" title="class or interface in java.lang" class="external-link">@Deprecated</a>
</span><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a></span>&nbsp;<span class="element-name">createCall</span><wbr><span class="parameters">(@Nullable <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="SqlNodeList.html" title="class in org.apache.calcite.sql">SqlNodeList</a>&nbsp;operands)</span></div>
<div class="deprecation-block"><span class="deprecated-label">Deprecated.</span></div>
<div class="block">Not supported. Choose between
<a href="#createCall(org.apache.calcite.sql.SqlLiteral,org.apache.calcite.sql.parser.SqlParserPos,org.apache.calcite.sql.SqlNode...)"><code>createCall(SqlLiteral, SqlParserPos, SqlNode...)</code></a> and
<a href="#createCall(org.apache.calcite.sql.parser.SqlParserPos,java.util.List)"><code>createCall(SqlParserPos, List)</code></a>. The ambiguity arises because
<a href="SqlNodeList.html" title="class in org.apache.calcite.sql"><code>SqlNodeList</code></a> extends <a href="SqlNode.html" title="class in org.apache.calcite.sql"><code>SqlNode</code></a>
and also implements <code>List&lt;SqlNode&gt;</code>.</div>
</section>
</li>
<li>
<section class="detail" id="createCall(org.apache.calcite.sql.parser.SqlParserPos,org.apache.calcite.sql.SqlNode...)">
<h3>createCall</h3>
<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<span class="return-type"><a href="SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a></span>&nbsp;<span class="element-name">createCall</span><wbr><span class="parameters">(<a href="parser/SqlParserPos.html" title="class in org.apache.calcite.sql.parser">SqlParserPos</a>&nbsp;pos,
@Nullable <a href="SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>...&nbsp;operands)</span></div>
<div class="block">Creates a call to this operator 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 class="notes">
<dt>Parameters:</dt>
<dd><code>pos</code> - Parser position</dd>
<dd><code>operands</code> - List of arguments</dd>
<dt>Returns:</dt>
<dd>call to this operator</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="createCall(org.apache.calcite.sql.SqlNodeList)">
<h3>createCall</h3>
<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<span class="return-type"><a href="SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a></span>&nbsp;<span class="element-name">createCall</span><wbr><span class="parameters">(<a href="SqlNodeList.html" title="class in org.apache.calcite.sql">SqlNodeList</a>&nbsp;nodeList)</span></div>
<div class="block">Creates a call to this operator 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 is inferred from the SqlNodeList.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>nodeList</code> - List of arguments</dd>
<dt>Returns:</dt>
<dd>call to this operator</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="createCall(org.apache.calcite.sql.parser.SqlParserPos,java.util.List)">
<h3>createCall</h3>
<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<span class="return-type"><a href="SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a></span>&nbsp;<span class="element-name">createCall</span><wbr><span class="parameters">(<a href="parser/SqlParserPos.html" title="class in org.apache.calcite.sql.parser">SqlParserPos</a>&nbsp;pos,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;? extends @Nullable <a href="SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&gt;&nbsp;operandList)</span></div>
<div class="block">Creates a call to this operator 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>
</section>
</li>
<li>
<section class="detail" id="createCall(org.apache.calcite.sql.parser.SqlParserPos,org.apache.calcite.sql.SqlNodeList)">
<h3>createCall</h3>
<div class="member-signature"><span class="annotations"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Deprecated.html" title="class or interface in java.lang" class="external-link">@Deprecated</a>
</span><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a></span>&nbsp;<span class="element-name">createCall</span><wbr><span class="parameters">(<a href="parser/SqlParserPos.html" title="class in org.apache.calcite.sql.parser">SqlParserPos</a>&nbsp;pos,
<a href="SqlNodeList.html" title="class in org.apache.calcite.sql">SqlNodeList</a>&nbsp;operands)</span></div>
<div class="deprecation-block"><span class="deprecated-label">Deprecated.</span></div>
<div class="block">Not supported. Choose between
<a href="#createCall(org.apache.calcite.sql.parser.SqlParserPos,org.apache.calcite.sql.SqlNode...)"><code>createCall(SqlParserPos, SqlNode...)</code></a> and
<a href="#createCall(org.apache.calcite.sql.parser.SqlParserPos,java.util.List)"><code>createCall(SqlParserPos, List)</code></a>. The ambiguity arises because
<a href="SqlNodeList.html" title="class in org.apache.calcite.sql"><code>SqlNodeList</code></a> extends <a href="SqlNode.html" title="class in org.apache.calcite.sql"><code>SqlNode</code></a>
and also implements <code>List&lt;SqlNode&gt;</code>.</div>
</section>
</li>
<li>
<section class="detail" id="rewriteCall(org.apache.calcite.sql.validate.SqlValidator,org.apache.calcite.sql.SqlCall)">
<h3>rewriteCall</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a></span>&nbsp;<span class="element-name">rewriteCall</span><wbr><span class="parameters">(<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)</span></div>
<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 class="notes">
<dt>Parameters:</dt>
<dd><code>validator</code> - Validator</dd>
<dd><code>call</code> - Call to be rewritten</dd>
<dt>Returns:</dt>
<dd>rewritten call</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="unparse(org.apache.calcite.sql.SqlWriter,org.apache.calcite.sql.SqlCall,int,int)">
<h3>unparse</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">unparse</span><wbr><span class="parameters">(<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)</span></div>
<div class="block">Writes a SQL representation of a call to this operator to a writer,
including parentheses if the operators on either side are of greater
precedence.
<p>The default implementation of this method delegates to
<a href="SqlSyntax.html#unparse(org.apache.calcite.sql.SqlWriter,org.apache.calcite.sql.SqlOperator,org.apache.calcite.sql.SqlCall,int,int)"><code>SqlSyntax.unparse(org.apache.calcite.sql.SqlWriter, org.apache.calcite.sql.SqlOperator, org.apache.calcite.sql.SqlCall, int, int)</code></a>.</div>
</section>
</li>
<li>
<section class="detail" id="unparseListClause(org.apache.calcite.sql.SqlWriter,org.apache.calcite.sql.SqlNode)">
<h3>unparseListClause</h3>
<div class="member-signature"><span class="annotations"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Deprecated.html" title="class or interface in java.lang" class="external-link">@Deprecated</a>
</span><span class="modifiers">protected</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">unparseListClause</span><wbr><span class="parameters">(<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)</span></div>
<div class="deprecation-block"><span class="deprecated-label">Deprecated.</span></div>
</section>
</li>
<li>
<section class="detail" id="unparseListClause(org.apache.calcite.sql.SqlWriter,org.apache.calcite.sql.SqlNode,org.apache.calcite.sql.SqlKind)">
<h3>unparseListClause</h3>
<div class="member-signature"><span class="annotations"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Deprecated.html" title="class or interface in java.lang" class="external-link">@Deprecated</a>
</span><span class="modifiers">protected</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">unparseListClause</span><wbr><span class="parameters">(<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,
@Nullable <a href="SqlKind.html" title="enum in org.apache.calcite.sql">SqlKind</a>&nbsp;sepKind)</span></div>
<div class="deprecation-block"><span class="deprecated-label">Deprecated.</span></div>
</section>
</li>
<li>
<section class="detail" id="equals(java.lang.Object)">
<h3>equals</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">equals</span><wbr><span class="parameters">(@Nullable <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;obj)</span></div>
<dl class="notes">
<dt>Overrides:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></code></dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="isName(java.lang.String,boolean)">
<h3>isName</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">isName</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;testName,
boolean&nbsp;caseSensitive)</span></div>
</section>
</li>
<li>
<section class="detail" id="hashCode()">
<h3>hashCode</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">hashCode</span>()</div>
<dl class="notes">
<dt>Overrides:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></code></dd>
</dl>
</section>
</li>
<li>
<section class="detail" 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)">
<h3>validateCall</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">validateCall</span><wbr><span class="parameters">(<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)</span></div>
<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 class="notes">
<dt>Parameters:</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>See Also:</dt>
<dd>
<ul class="see-list-long">
<li><a href="SqlNode.html#validateExpr(org.apache.calcite.sql.validate.SqlValidator,org.apache.calcite.sql.validate.SqlValidatorScope)"><code>SqlNode.validateExpr(SqlValidator, SqlValidatorScope)</code></a></li>
<li><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></li>
</ul>
</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="validateOperands(org.apache.calcite.sql.validate.SqlValidator,org.apache.calcite.sql.validate.SqlValidatorScope,org.apache.calcite.sql.SqlCall)">
<h3>validateOperands</h3>
<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<span class="return-type"><a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></span>&nbsp;<span class="element-name">validateOperands</span><wbr><span class="parameters">(<a href="validate/SqlValidator.html" title="interface in org.apache.calcite.sql.validate">SqlValidator</a>&nbsp;validator,
@Nullable <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)</span></div>
<div class="block">Validates the operands of a call, inferring the return type in the
process.</div>
<dl class="notes">
<dt>Parameters:</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>Returns:</dt>
<dd>inferred type</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="preValidateCall(org.apache.calcite.sql.validate.SqlValidator,org.apache.calcite.sql.validate.SqlValidatorScope,org.apache.calcite.sql.SqlCall)">
<h3>preValidateCall</h3>
<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">preValidateCall</span><wbr><span class="parameters">(<a href="validate/SqlValidator.html" title="interface in org.apache.calcite.sql.validate">SqlValidator</a>&nbsp;validator,
@Nullable <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)</span></div>
<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 class="notes">
<dt>Parameters:</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>
</section>
</li>
<li>
<section class="detail" id="inferReturnType(org.apache.calcite.sql.SqlOperatorBinding)">
<h3>inferReturnType</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></span>&nbsp;<span class="element-name">inferReturnType</span><wbr><span class="parameters">(<a href="SqlOperatorBinding.html" title="class in org.apache.calcite.sql">SqlOperatorBinding</a>&nbsp;opBinding)</span></div>
<div class="block">Infers the return type of an invocation of this operator; only called
after the number and types of operands have already been validated.
Subclasses must either override this method or supply an instance of
<a href="type/SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type"><code>SqlReturnTypeInference</code></a> to the constructor.</div>
<dl class="notes">
<dt>Parameters:</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>Returns:</dt>
<dd>inferred return type</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="deriveType(org.apache.calcite.sql.validate.SqlValidator,org.apache.calcite.sql.validate.SqlValidatorScope,org.apache.calcite.sql.SqlCall)">
<h3>deriveType</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></span>&nbsp;<span class="element-name">deriveType</span><wbr><span class="parameters">(<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)</span></div>
<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 class="notes">
<dt>Parameters:</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>Returns:</dt>
<dd>Type of call</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="constructArgNameList(org.apache.calcite.sql.SqlCall)">
<h3>constructArgNameList</h3>
<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type">@Nullable <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</span>&nbsp;<span class="element-name">constructArgNameList</span><wbr><span class="parameters">(<a href="SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a>&nbsp;call)</span></div>
</section>
</li>
<li>
<section class="detail" id="constructOperandList(org.apache.calcite.sql.validate.SqlValidator,org.apache.calcite.sql.SqlCall,java.util.List)">
<h3>constructOperandList</h3>
<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&gt;</span>&nbsp;<span class="element-name">constructOperandList</span><wbr><span class="parameters">(<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,
@Nullable <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;&nbsp;argNames)</span></div>
</section>
</li>
<li>
<section class="detail" id="constructArgTypeList(org.apache.calcite.sql.validate.SqlValidator,org.apache.calcite.sql.validate.SqlValidatorScope,org.apache.calcite.sql.SqlCall,java.util.List,boolean)">
<h3>constructArgTypeList</h3>
<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&gt;</span>&nbsp;<span class="element-name">constructArgTypeList</span><wbr><span class="parameters">(<a href="validate/SqlValidator.html" title="interface in org.apache.calcite.sql.validate">SqlValidator</a>&nbsp;validator,
<a href="validate/SqlValidatorScope.html" title="interface in org.apache.calcite.sql.validate">SqlValidatorScope</a>&nbsp;scope,
<a href="SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a>&nbsp;call,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&gt;&nbsp;args,
boolean&nbsp;convertRowArgToColumnList)</span></div>
</section>
</li>
<li>
<section class="detail" id="deriveOperandType(org.apache.calcite.sql.validate.SqlValidator,org.apache.calcite.sql.validate.SqlValidatorScope,int,org.apache.calcite.sql.SqlNode)">
<h3>deriveOperandType</h3>
<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type"><a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></span>&nbsp;<span class="element-name">deriveOperandType</span><wbr><span class="parameters">(<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,
int&nbsp;i,
<a href="SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;operand)</span></div>
</section>
</li>
<li>
<section class="detail" id="adjustType(org.apache.calcite.sql.validate.SqlValidator,org.apache.calcite.sql.SqlCall,org.apache.calcite.rel.type.RelDataType)">
<h3>adjustType</h3>
<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type"><a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></span>&nbsp;<span class="element-name">adjustType</span><wbr><span class="parameters">(<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)</span></div>
<div class="block">Validates and determines coercibility and resulting collation name of
binary operator if needed.</div>
</section>
</li>
<li>
<section class="detail" id="inferReturnType(org.apache.calcite.rel.type.RelDataTypeFactory,java.util.List)">
<h3>inferReturnType</h3>
<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<span class="return-type"><a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></span>&nbsp;<span class="element-name">inferReturnType</span><wbr><span class="parameters">(<a href="../rel/type/RelDataTypeFactory.html" title="interface in org.apache.calcite.rel.type">RelDataTypeFactory</a>&nbsp;typeFactory,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&gt;&nbsp;operandTypes)</span></div>
<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>
</section>
</li>
<li>
<section class="detail" id="checkOperandTypes(org.apache.calcite.sql.SqlCallBinding,boolean)">
<h3>checkOperandTypes</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">checkOperandTypes</span><wbr><span class="parameters">(<a href="SqlCallBinding.html" title="class in org.apache.calcite.sql">SqlCallBinding</a>&nbsp;callBinding,
boolean&nbsp;throwOnFailure)</span></div>
<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 class="notes">
<dt>Parameters:</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>Returns:</dt>
<dd>whether check succeeded</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="checkOperandCount(org.apache.calcite.sql.validate.SqlValidator,org.apache.calcite.sql.type.SqlOperandTypeChecker,org.apache.calcite.sql.SqlCall)">
<h3>checkOperandCount</h3>
<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">checkOperandCount</span><wbr><span class="parameters">(<a href="validate/SqlValidator.html" title="interface in org.apache.calcite.sql.validate">SqlValidator</a>&nbsp;validator,
@Nullable <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)</span></div>
</section>
</li>
<li>
<section class="detail" id="validRexOperands(int,org.apache.calcite.util.Litmus)">
<h3>validRexOperands</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">validRexOperands</span><wbr><span class="parameters">(int&nbsp;count,
<a href="../util/Litmus.html" title="interface in org.apache.calcite.util">Litmus</a>&nbsp;litmus)</span></div>
<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>
</section>
</li>
<li>
<section class="detail" id="getSignatureTemplate(int)">
<h3>getSignatureTemplate</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">@Nullable <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">getSignatureTemplate</span><wbr><span class="parameters">(int&nbsp;operandsCount)</span></div>
<div class="block">Returns a template describing how the operator signature is to be built.
E.g for the binary + operator the template looks like "{1} {0} {2}" {0}
is the operator, subsequent numbers are operands.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>operandsCount</code> - is used with functions that can take a variable
number of operands</dd>
<dt>Returns:</dt>
<dd>signature template, or null to indicate that a default template
will suffice</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="getAllowedSignatures()">
<h3>getAllowedSignatures</h3>
<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">getAllowedSignatures</span>()</div>
<div class="block">Returns a string describing the expected operand types of a call, e.g.
"SUBSTR(VARCHAR, INTEGER, INTEGER)".</div>
</section>
</li>
<li>
<section class="detail" id="getAllowedSignatures(java.lang.String)">
<h3>getAllowedSignatures</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">getAllowedSignatures</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;opNameToUse)</span></div>
<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>
</section>
</li>
<li>
<section class="detail" id="getOperandTypeInference()">
<h3>getOperandTypeInference</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">@Nullable <a href="type/SqlOperandTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlOperandTypeInference</a></span>&nbsp;<span class="element-name">getOperandTypeInference</span>()</div>
</section>
</li>
<li>
<section class="detail" id="isAggregator()">
<h3>isAggregator</h3>
<div class="member-signature"><span class="annotations">@Pure
</span><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">isAggregator</span>()</div>
<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 class="notes">
<dt>Returns:</dt>
<dd>whether this operator is an analytic function (aggregate function
or window function)</dd>
<dt>See Also:</dt>
<dd>
<ul class="see-list">
<li><a href="#requiresOrder()"><code>requiresOrder()</code></a></li>
</ul>
</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="requiresOver()">
<h3>requiresOver</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">requiresOver</span>()</div>
<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 class="notes">
<dt>See Also:</dt>
<dd>
<ul class="see-list">
<li><a href="#allowsFraming()"><code>allowsFraming()</code></a></li>
<li><a href="#requiresOrder()"><code>requiresOrder()</code></a></li>
</ul>
</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="requiresOrder()">
<h3>requiresOrder</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">requiresOrder</span>()</div>
<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 class="notes">
<dt>See Also:</dt>
<dd>
<ul class="see-list">
<li><a href="#isAggregator()"><code>isAggregator()</code></a></li>
</ul>
</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="allowsFraming()">
<h3>allowsFraming</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">allowsFraming</span>()</div>
<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>
</section>
</li>
<li>
<section class="detail" id="isGroup()">
<h3>isGroup</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">isGroup</span>()</div>
<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>
</section>
</li>
<li>
<section class="detail" id="isGroupAuxiliary()">
<h3>isGroupAuxiliary</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">isGroupAuxiliary</span>()</div>
<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 class="notes">
<dt>See Also:</dt>
<dd>
<ul class="see-list">
<li><a href="#isGroup()"><code>isGroup()</code></a></li>
</ul>
</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="acceptCall(org.apache.calcite.sql.util.SqlVisitor,org.apache.calcite.sql.SqlCall)">
<h3>acceptCall</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="type-parameters">&lt;R&gt;</span>&nbsp;<span class="return-type">@Nullable R</span>&nbsp;<span class="element-name">acceptCall</span><wbr><span class="parameters">(<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)</span></div>
<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 class="notes">
<dt>Parameters:</dt>
<dd><code>visitor</code> - Visitor</dd>
<dd><code>call</code> - Call to visit</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="acceptCall(org.apache.calcite.sql.util.SqlVisitor,org.apache.calcite.sql.SqlCall,boolean,org.apache.calcite.sql.util.SqlBasicVisitor.ArgHandler)">
<h3>acceptCall</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="type-parameters">&lt;R&gt;</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">acceptCall</span><wbr><span class="parameters">(<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)</span></div>
<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 class="notes">
<dt>Parameters:</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>
</section>
</li>
<li>
<section class="detail" id="getReturnTypeInference()">
<h3>getReturnTypeInference</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">@Nullable <a href="type/SqlReturnTypeInference.html" title="interface in org.apache.calcite.sql.type">SqlReturnTypeInference</a></span>&nbsp;<span class="element-name">getReturnTypeInference</span>()</div>
<div class="block">Returns the return type inference strategy for this operator, or null if
return type inference is implemented by a subclass override.</div>
</section>
</li>
<li>
<section class="detail" id="not()">
<h3>not</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">@Nullable <a href="SqlOperator.html" title="class in org.apache.calcite.sql">SqlOperator</a></span>&nbsp;<span class="element-name">not</span>()</div>
<div class="block">Returns the operator that is the logical inverse of this operator.
<p>For example, <code>SqlStdOperatorTable.LIKE.not()</code> returns
<code>SqlStdOperatorTable.NOT_LIKE</code>, and vice versa.
<p>By default, returns <code>null</code>, which means there is no inverse
operator.</div>
<dl class="notes">
<dt>See Also:</dt>
<dd>
<ul class="see-list">
<li><a href="#reverse()"><code>reverse()</code></a></li>
</ul>
</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="reverse()">
<h3>reverse</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">@Nullable <a href="SqlOperator.html" title="class in org.apache.calcite.sql">SqlOperator</a></span>&nbsp;<span class="element-name">reverse</span>()</div>
<div class="block">Returns the operator that has the same effect as this operator
if its arguments are reversed.
<p>For example, <code>SqlStdOperatorTable.GREATER_THAN.reverse()</code> returns
<code>SqlStdOperatorTable.LESS_THAN</code>, and vice versa,
because <code>a &gt; b</code> is equivalent to <code>b &lt; a</code>.
<p><code>SqlStdOperatorTable.EQUALS.reverse()</code> returns itself.
<p>By default, returns <code>null</code>, which means there is no inverse
operator.</div>
<dl class="notes">
<dt>See Also:</dt>
<dd>
<ul class="see-list">
<li><a href="#not()"><code>not()</code></a></li>
<li><a href="SqlKind.html#reverse()"><code>SqlKind.reverse()</code></a></li>
</ul>
</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="getStrongPolicyInference()">
<h3>getStrongPolicyInference</h3>
<div class="member-signature"><span class="annotations">@Pure
</span><span class="modifiers">public</span>&nbsp;<span class="return-type">@Nullable <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Supplier.html" title="class or interface in java.util.function" class="external-link">Supplier</a>&lt;<a href="../plan/Strong.Policy.html" title="enum in org.apache.calcite.plan">Strong.Policy</a>&gt;</span>&nbsp;<span class="element-name">getStrongPolicyInference</span>()</div>
<div class="block">Returns the <a href="../plan/Strong.Policy.html" title="enum in org.apache.calcite.plan"><code>Strong.Policy</code></a> 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="SqlKind.html" title="enum in org.apache.calcite.sql"><code>SqlKind</code></a>.</div>
<dl class="notes">
<dt>See Also:</dt>
<dd>
<ul class="see-list">
<li><a href="../plan/Strong.html" title="class in org.apache.calcite.plan"><code>Strong</code></a></li>
</ul>
</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="getMonotonicity(org.apache.calcite.sql.SqlCall,org.apache.calcite.sql.validate.SqlValidatorScope)">
<h3>getMonotonicity</h3>
<div class="member-signature"><span class="annotations"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Deprecated.html" title="class or interface in java.lang" class="external-link">@Deprecated</a>
</span><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="validate/SqlMonotonicity.html" title="enum in org.apache.calcite.sql.validate">SqlMonotonicity</a></span>&nbsp;<span class="element-name">getMonotonicity</span><wbr><span class="parameters">(<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)</span></div>
<div class="deprecation-block"><span class="deprecated-label">Deprecated.</span>
<div class="deprecation-comment">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 class="notes">
<dt>Parameters:</dt>
<dd><code>call</code> - Call to this operator</dd>
<dd><code>scope</code> - Scope in which the call occurs</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="getMonotonicity(org.apache.calcite.sql.SqlOperatorBinding)">
<h3>getMonotonicity</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="validate/SqlMonotonicity.html" title="enum in org.apache.calcite.sql.validate">SqlMonotonicity</a></span>&nbsp;<span class="element-name">getMonotonicity</span><wbr><span class="parameters">(<a href="SqlOperatorBinding.html" title="class in org.apache.calcite.sql">SqlOperatorBinding</a>&nbsp;call)</span></div>
<div class="block">Returns whether a call to this operator is monotonic.
<p>Default implementation returns <a href="validate/SqlMonotonicity.html#NOT_MONOTONIC"><code>SqlMonotonicity.NOT_MONOTONIC</code></a>.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>call</code> - Call to this operator with particular arguments and information
about the monotonicity of the arguments</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="isDeterministic()">
<h3>isDeterministic</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">isDeterministic</span>()</div>
<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>
</section>
</li>
<li>
<section class="detail" id="isSymmetrical()">
<h3>isSymmetrical</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">isSymmetrical</span>()</div>
<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="SqlKind.html#SYMMETRICAL"><code>SqlKind.SYMMETRICAL</code></a>.</div>
</section>
</li>
<li>
<section class="detail" id="isDynamicFunction()">
<h3>isDynamicFunction</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">isDynamicFunction</span>()</div>
<div class="block">Returns whether it is unsafe to cache query plans referencing this
operator; false is assumed by default.</div>
</section>
</li>
<li>
<section class="detail" id="requiresDecimalExpansion()">
<h3>requiresDecimalExpansion</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">requiresDecimalExpansion</span>()</div>
<div class="block">Method to check if call requires expansion when it has decimal operands.
The default implementation is to return true.</div>
</section>
</li>
<li>
<section class="detail" id="argumentMustBeScalar(int)">
<h3>argumentMustBeScalar</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">argumentMustBeScalar</span><wbr><span class="parameters">(int&nbsp;ordinal)</span></div>
<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>
</section>
</li>
</ul>
</section>
</li>
</ul>
</section>
<!-- ========= END OF CLASS DATA ========= -->
</main>
<footer role="contentinfo">
<hr>
<p class="legal-copy"><small>Copyright &copy; 2012-2023 Apache Software Foundation. All Rights Reserved.</small></p>
</footer>
</div>
</div>
</body>
</html>