blob: ac54fd8fdc6c39eb471cee22afe187ae35d639ce [file] [log] [blame]
<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc -->
<title>SqlValidator (Apache Calcite API)</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../jquery/jquery-ui.css" title="Style">
<script type="text/javascript" src="../../../../../script.js"></script>
<script type="text/javascript" src="../../../../../jquery/jszip/dist/jszip.min.js"></script>
<script type="text/javascript" src="../../../../../jquery/jszip-utils/dist/jszip-utils.min.js"></script>
<!--[if IE]>
<script type="text/javascript" src="../../../../../jquery/jszip-utils/dist/jszip-utils-ie.min.js"></script>
<![endif]-->
<script type="text/javascript" src="../../../../../jquery/jquery-3.3.1.js"></script>
<script type="text/javascript" src="../../../../../jquery/jquery-migrate-3.0.1.js"></script>
<script type="text/javascript" src="../../../../../jquery/jquery-ui.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="SqlValidator (Apache Calcite API)";
}
}
catch(err) {
}
//-->
var data = {"i0":6,"i1":6,"i2":6,"i3":6,"i4":6,"i5":6,"i6":6,"i7":6,"i8":6,"i9":6,"i10":6,"i11":6,"i12":6,"i13":6,"i14":6,"i15":6,"i16":6,"i17":6,"i18":6,"i19":6,"i20":6,"i21":6,"i22":6,"i23":6,"i24":6,"i25":6,"i26":6,"i27":6,"i28":6,"i29":6,"i30":6,"i31":6,"i32":38,"i33":6,"i34":6,"i35":6,"i36":6,"i37":6,"i38":6,"i39":6,"i40":6,"i41":6,"i42":6,"i43":6,"i44":6,"i45":38,"i46":6,"i47":6,"i48":6,"i49":6,"i50":6,"i51":6,"i52":6,"i53":6,"i54":6,"i55":6,"i56":6,"i57":6,"i58":6,"i59":6,"i60":6,"i61":6,"i62":6,"i63":6,"i64":6,"i65":6,"i66":6,"i67":6};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],4:["t3","Abstract Methods"],32:["t6","Deprecated Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
var pathtoroot = "../../../../../";
var useModuleDirectories = true;
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<nav role="navigation">
<div class="fixedNav">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a id="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/SqlValidator.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<ul class="navListSearch">
<li><label for="search">SEARCH:</label>
<input type="text" id="search" value="search" disabled="disabled">
<input type="reset" id="reset" value="reset" disabled="disabled">
</li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a id="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
</div>
<div class="navPadding">&nbsp;</div>
<script type="text/javascript"><!--
$('.navPadding').css('padding-top', $('.fixedNav').css("height"));
//-->
</script>
</nav>
</header>
<!-- ======== START OF CLASS DATA ======== -->
<main role="main">
<div class="header">
<div class="subTitle"><span class="packageLabelInType">Package</span>&nbsp;<a href="package-summary.html">org.apache.calcite.sql.validate</a></div>
<h2 title="Interface SqlValidator" class="title">Interface SqlValidator</h2>
</div>
<div class="contentContainer">
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Known Subinterfaces:</dt>
<dd><code><a href="SqlValidatorWithHints.html" title="interface in org.apache.calcite.sql.validate">SqlValidatorWithHints</a></code></dd>
</dl>
<dl>
<dt>All Known Implementing Classes:</dt>
<dd><code><a href="../../prepare/CalciteSqlValidator.html" title="class in org.apache.calcite.prepare">CalciteSqlValidator</a></code>, <code><a href="../advise/SqlAdvisorValidator.html" title="class in org.apache.calcite.sql.advise">SqlAdvisorValidator</a></code>, <code><a href="SqlValidatorImpl.html" title="class in org.apache.calcite.sql.validate">SqlValidatorImpl</a></code></dd>
</dl>
<hr>
<pre>public interface <span class="typeNameLabel">SqlValidator</span></pre>
<div class="block">Validates the parse tree of a SQL statement, and provides semantic
information about the parse tree.
<p>To create an instance of the default validator implementation, call
<a href="SqlValidatorUtil.html#newValidator(org.apache.calcite.sql.SqlOperatorTable,org.apache.calcite.sql.validate.SqlValidatorCatalogReader,org.apache.calcite.rel.type.RelDataTypeFactory,org.apache.calcite.sql.validate.SqlConformance)"><code>SqlValidatorUtil.newValidator(org.apache.calcite.sql.SqlOperatorTable, org.apache.calcite.sql.validate.SqlValidatorCatalogReader, org.apache.calcite.rel.type.RelDataTypeFactory, org.apache.calcite.sql.validate.SqlConformance)</code></a>.
<h2>Visitor pattern</h2>
<p>The validator interface is an instance of the
<a href="../../util/Glossary.html#VISITOR_PATTERN"><code>visitor pattern</code></a>.
Implementations
of the <a href="../SqlNode.html#validate(org.apache.calcite.sql.validate.SqlValidator,org.apache.calcite.sql.validate.SqlValidatorScope)"><code>SqlNode.validate(org.apache.calcite.sql.validate.SqlValidator, org.apache.calcite.sql.validate.SqlValidatorScope)</code></a> method call the <code>validateXxx</code>
method appropriate to the kind of node:
<ul>
<li><a href="../SqlLiteral.html#validate(org.apache.calcite.sql.validate.SqlValidator,org.apache.calcite.sql.validate.SqlValidatorScope)"><code>SqlLiteral.validate(SqlValidator, SqlValidatorScope)</code></a>
calls
<a href="#validateLiteral(org.apache.calcite.sql.SqlLiteral)"><code>validateLiteral(org.apache.calcite.sql.SqlLiteral)</code></a>;
<li><a href="../SqlCall.html#validate(org.apache.calcite.sql.validate.SqlValidator,org.apache.calcite.sql.validate.SqlValidatorScope)"><code>SqlCall.validate(SqlValidator, SqlValidatorScope)</code></a>
calls
<a href="#validateCall(org.apache.calcite.sql.SqlCall,org.apache.calcite.sql.validate.SqlValidatorScope)"><code>validateCall(SqlCall, SqlValidatorScope)</code></a>;
<li>and so forth.</ul>
<p>The <a href="../SqlNode.html#validateExpr(org.apache.calcite.sql.validate.SqlValidator,org.apache.calcite.sql.validate.SqlValidatorScope)"><code>SqlNode.validateExpr(SqlValidator, SqlValidatorScope)</code></a> method
is as <a href="../SqlNode.html#validate(org.apache.calcite.sql.validate.SqlValidator,org.apache.calcite.sql.validate.SqlValidatorScope)"><code>SqlNode.validate(SqlValidator, SqlValidatorScope)</code></a> but is called
when the node is known to be a scalar expression.
<h2>Scopes and namespaces</h2>
<p>In order to resolve names to objects, the validator builds a map of the
structure of the query. This map consists of two types of objects. A
<a href="SqlValidatorScope.html" title="interface in org.apache.calcite.sql.validate"><code>SqlValidatorScope</code></a> describes the tables and columns accessible at a
particular point in the query; and a <a href="SqlValidatorNamespace.html" title="interface in org.apache.calcite.sql.validate"><code>SqlValidatorNamespace</code></a> is a
description of a data source used in a query.
<p>There are different kinds of namespace for different parts of the query.
for example <a href="IdentifierNamespace.html" title="class in org.apache.calcite.sql.validate"><code>IdentifierNamespace</code></a> for table names,
<a href="SelectNamespace.html" title="class in org.apache.calcite.sql.validate"><code>SelectNamespace</code></a> for SELECT queries,
<a href="SetopNamespace.html" title="class in org.apache.calcite.sql.validate"><code>SetopNamespace</code></a> for UNION, EXCEPT
and INTERSECT. A validator is allowed to wrap namespaces in other objects
which implement <a href="SqlValidatorNamespace.html" title="interface in org.apache.calcite.sql.validate"><code>SqlValidatorNamespace</code></a>, so don't try to cast your
namespace or use <code>instanceof</code>; use
<a href="SqlValidatorNamespace.html#unwrap(java.lang.Class)"><code>SqlValidatorNamespace.unwrap(Class)</code></a> and
<a href="SqlValidatorNamespace.html#isWrapperFor(java.lang.Class)"><code>SqlValidatorNamespace.isWrapperFor(Class)</code></a> instead.</p>
<p>The validator builds the map by making a quick scan over the query when
the root <a href="../SqlNode.html" title="class in org.apache.calcite.sql"><code>SqlNode</code></a> is first provided. Thereafter, it supplies the
correct scope or namespace object when it calls validation methods.</p>
<p>The methods <a href="#getSelectScope(org.apache.calcite.sql.SqlSelect)"><code>getSelectScope(org.apache.calcite.sql.SqlSelect)</code></a>, <a href="#getFromScope(org.apache.calcite.sql.SqlSelect)"><code>getFromScope(org.apache.calcite.sql.SqlSelect)</code></a>,
<a href="#getWhereScope(org.apache.calcite.sql.SqlSelect)"><code>getWhereScope(org.apache.calcite.sql.SqlSelect)</code></a>, <a href="#getGroupScope(org.apache.calcite.sql.SqlSelect)"><code>getGroupScope(org.apache.calcite.sql.SqlSelect)</code></a>, <a href="#getHavingScope(org.apache.calcite.sql.SqlSelect)"><code>getHavingScope(org.apache.calcite.sql.SqlSelect)</code></a>,
<a href="#getOrderScope(org.apache.calcite.sql.SqlSelect)"><code>getOrderScope(org.apache.calcite.sql.SqlSelect)</code></a> and <a href="#getJoinScope(org.apache.calcite.sql.SqlNode)"><code>getJoinScope(org.apache.calcite.sql.SqlNode)</code></a> get the correct scope
to resolve
names in a particular clause of a SQL statement.</p></div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ========== METHOD SUMMARY =========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t3" class="tableTab"><span><a href="javascript:show(4);">Abstract Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t6" class="tableTab"><span><a href="javascript:show(32);">Deprecated Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Method</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#declareCursor(org.apache.calcite.sql.SqlSelect,org.apache.calcite.sql.validate.SqlValidatorScope)">declareCursor</a></span>&#8203;(<a href="../SqlSelect.html" title="class in org.apache.calcite.sql">SqlSelect</a>&nbsp;select,
<a href="SqlValidatorScope.html" title="interface in org.apache.calcite.sql.validate">SqlValidatorScope</a>&nbsp;scope)</code></th>
<td class="colLast">
<div class="block">Declares a SELECT expression as a cursor.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>java.lang.String</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#deriveAlias(org.apache.calcite.sql.SqlNode,int)">deriveAlias</a></span>&#8203;(<a href="../SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;node,
int&nbsp;ordinal)</code></th>
<td class="colLast">
<div class="block">Derives an alias for an expression.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code><a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#deriveConstructorType(org.apache.calcite.sql.validate.SqlValidatorScope,org.apache.calcite.sql.SqlCall,org.apache.calcite.sql.SqlFunction,org.apache.calcite.sql.SqlFunction,java.util.List)">deriveConstructorType</a></span>&#8203;(<a href="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="../SqlFunction.html" title="class in org.apache.calcite.sql">SqlFunction</a>&nbsp;unresolvedConstructor,
<a href="../SqlFunction.html" title="class in org.apache.calcite.sql">SqlFunction</a>&nbsp;resolvedConstructor,
java.util.List&lt;<a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&gt;&nbsp;argTypes)</code></th>
<td class="colLast">
<div class="block">Derives the type of a constructor.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code><a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#deriveType(org.apache.calcite.sql.validate.SqlValidatorScope,org.apache.calcite.sql.SqlNode)">deriveType</a></span>&#8203;(<a href="SqlValidatorScope.html" title="interface in org.apache.calcite.sql.validate">SqlValidatorScope</a>&nbsp;scope,
<a href="../SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;operand)</code></th>
<td class="colLast">
<div class="block">Derives the type of a node in a given scope.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code><a href="../SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#expand(org.apache.calcite.sql.SqlNode,org.apache.calcite.sql.validate.SqlValidatorScope)">expand</a></span>&#8203;(<a href="../SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;expr,
<a href="SqlValidatorScope.html" title="interface in org.apache.calcite.sql.validate">SqlValidatorScope</a>&nbsp;scope)</code></th>
<td class="colLast">
<div class="block">Expands an expression.</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code><a href="../SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#expandOrderExpr(org.apache.calcite.sql.SqlSelect,org.apache.calcite.sql.SqlNode)">expandOrderExpr</a></span>&#8203;(<a href="../SqlSelect.html" title="class in org.apache.calcite.sql">SqlSelect</a>&nbsp;select,
<a href="../SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;orderExpr)</code></th>
<td class="colLast">
<div class="block">Expands an expression in the ORDER BY clause into an expression with the
same semantics as expressions in the SELECT clause.</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code><a href="../SqlNodeList.html" title="class in org.apache.calcite.sql">SqlNodeList</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#expandStar(org.apache.calcite.sql.SqlNodeList,org.apache.calcite.sql.SqlSelect,boolean)">expandStar</a></span>&#8203;(<a href="../SqlNodeList.html" title="class in org.apache.calcite.sql">SqlNodeList</a>&nbsp;selectList,
<a href="../SqlSelect.html" title="class in org.apache.calcite.sql">SqlSelect</a>&nbsp;query,
boolean&nbsp;includeSystemVars)</code></th>
<td class="colLast">
<div class="block">Returns a list of expressions, with every occurrence of "&#42;" or
"TABLE.&#42;" expanded.</div>
</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code><a href="SqlValidatorCatalogReader.html" title="interface in org.apache.calcite.sql.validate">SqlValidatorCatalogReader</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getCatalogReader()">getCatalogReader</a></span>()</code></th>
<td class="colLast">
<div class="block">Returns the catalog reader used by this validator.</div>
</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getColumnReferenceExpansion()">getColumnReferenceExpansion</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code><a href="SqlConformance.html" title="interface in org.apache.calcite.sql.validate">SqlConformance</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getConformance()">getConformance</a></span>()</code></th>
<td class="colLast">
<div class="block">Returns the dialect of SQL (SQL:2003, etc.) this validator recognizes.</div>
</td>
</tr>
<tr id="i10" class="altColor">
<td class="colFirst"><code><a href="../../config/NullCollation.html" title="enum in org.apache.calcite.config">NullCollation</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getDefaultNullCollation()">getDefaultNullCollation</a></span>()</code></th>
<td class="colLast">
<div class="block">Returns how NULL values should be collated if an ORDER BY item does not
contain NULLS FIRST or NULLS LAST.</div>
</td>
</tr>
<tr id="i11" class="rowColor">
<td class="colFirst"><code>java.util.List&lt;java.util.List&lt;java.lang.String&gt;&gt;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getFieldOrigins(org.apache.calcite.sql.SqlNode)">getFieldOrigins</a></span>&#8203;(<a href="../SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;sqlQuery)</code></th>
<td class="colLast">
<div class="block">Returns a description of how each field in the row type maps to a
catalog, schema, table and column in the schema.</div>
</td>
</tr>
<tr id="i12" class="altColor">
<td class="colFirst"><code><a href="SqlValidatorScope.html" title="interface in org.apache.calcite.sql.validate">SqlValidatorScope</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getFromScope(org.apache.calcite.sql.SqlSelect)">getFromScope</a></span>&#8203;(<a href="../SqlSelect.html" title="class in org.apache.calcite.sql">SqlSelect</a>&nbsp;select)</code></th>
<td class="colLast">
<div class="block">Returns a scope containing the objects visible from the FROM clause of a
query.</div>
</td>
</tr>
<tr id="i13" class="rowColor">
<td class="colFirst"><code><a href="SqlValidatorScope.html" title="interface in org.apache.calcite.sql.validate">SqlValidatorScope</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getGroupScope(org.apache.calcite.sql.SqlSelect)">getGroupScope</a></span>&#8203;(<a href="../SqlSelect.html" title="class in org.apache.calcite.sql">SqlSelect</a>&nbsp;select)</code></th>
<td class="colLast">
<div class="block">Returns a scope containing the objects visible from the GROUP BY clause
of a query.</div>
</td>
</tr>
<tr id="i14" class="altColor">
<td class="colFirst"><code><a href="SqlValidatorScope.html" title="interface in org.apache.calcite.sql.validate">SqlValidatorScope</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getHavingScope(org.apache.calcite.sql.SqlSelect)">getHavingScope</a></span>&#8203;(<a href="../SqlSelect.html" title="class in org.apache.calcite.sql">SqlSelect</a>&nbsp;select)</code></th>
<td class="colLast">
<div class="block">Returns a scope containing the objects visible from the HAVING clause of
a query.</div>
</td>
</tr>
<tr id="i15" class="rowColor">
<td class="colFirst"><code><a href="SqlValidatorScope.html" title="interface in org.apache.calcite.sql.validate">SqlValidatorScope</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getJoinScope(org.apache.calcite.sql.SqlNode)">getJoinScope</a></span>&#8203;(<a href="../SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;node)</code></th>
<td class="colLast">
<div class="block">Returns a scope containing the objects visible from the ON and USING
sections of a JOIN clause.</div>
</td>
</tr>
<tr id="i16" class="altColor">
<td class="colFirst"><code><a href="SqlValidatorScope.html" title="interface in org.apache.calcite.sql.validate">SqlValidatorScope</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getMatchRecognizeScope(org.apache.calcite.sql.SqlMatchRecognize)">getMatchRecognizeScope</a></span>&#8203;(<a href="../SqlMatchRecognize.html" title="class in org.apache.calcite.sql">SqlMatchRecognize</a>&nbsp;node)</code></th>
<td class="colLast">
<div class="block">Returns a scope match recognize clause.</div>
</td>
</tr>
<tr id="i17" class="rowColor">
<td class="colFirst"><code><a href="SqlValidatorNamespace.html" title="interface in org.apache.calcite.sql.validate">SqlValidatorNamespace</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getNamespace(org.apache.calcite.sql.SqlNode)">getNamespace</a></span>&#8203;(<a href="../SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;node)</code></th>
<td class="colLast">
<div class="block">Finds the namespace corresponding to a given node.</div>
</td>
</tr>
<tr id="i18" class="altColor">
<td class="colFirst"><code><a href="../SqlOperatorTable.html" title="interface in org.apache.calcite.sql">SqlOperatorTable</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getOperatorTable()">getOperatorTable</a></span>()</code></th>
<td class="colLast">
<div class="block">Returns the operator table used by this validator.</div>
</td>
</tr>
<tr id="i19" class="rowColor">
<td class="colFirst"><code><a href="SqlValidatorScope.html" title="interface in org.apache.calcite.sql.validate">SqlValidatorScope</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getOrderScope(org.apache.calcite.sql.SqlSelect)">getOrderScope</a></span>&#8203;(<a href="../SqlSelect.html" title="class in org.apache.calcite.sql">SqlSelect</a>&nbsp;select)</code></th>
<td class="colLast">
<div class="block">Returns the scope that expressions in the SELECT and HAVING clause of
this query should use.</div>
</td>
</tr>
<tr id="i20" class="altColor">
<td class="colFirst"><code><a href="SqlValidatorScope.html" title="interface in org.apache.calcite.sql.validate">SqlValidatorScope</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getOverScope(org.apache.calcite.sql.SqlNode)">getOverScope</a></span>&#8203;(<a href="../SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;node)</code></th>
<td class="colLast">
<div class="block">Returns the scope of an OVER or VALUES node.</div>
</td>
</tr>
<tr id="i21" class="rowColor">
<td class="colFirst"><code><a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getParameterRowType(org.apache.calcite.sql.SqlNode)">getParameterRowType</a></span>&#8203;(<a href="../SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;sqlQuery)</code></th>
<td class="colLast">
<div class="block">Returns a record type that contains the name and type of each parameter.</div>
</td>
</tr>
<tr id="i22" class="altColor">
<td class="colFirst"><code>java.lang.String</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getParentCursor(java.lang.String)">getParentCursor</a></span>&#8203;(java.lang.String&nbsp;columnListParamName)</code></th>
<td class="colLast">
<div class="block">Retrieves the name of the parent cursor referenced by a column list
parameter.</div>
</td>
</tr>
<tr id="i23" class="rowColor">
<td class="colFirst"><code><a href="SelectScope.html" title="class in org.apache.calcite.sql.validate">SelectScope</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getRawSelectScope(org.apache.calcite.sql.SqlSelect)">getRawSelectScope</a></span>&#8203;(<a href="../SqlSelect.html" title="class in org.apache.calcite.sql">SqlSelect</a>&nbsp;select)</code></th>
<td class="colLast">
<div class="block">Returns the scope for resolving the SELECT, GROUP BY and HAVING clauses.</div>
</td>
</tr>
<tr id="i24" class="altColor">
<td class="colFirst"><code><a href="SqlValidatorScope.html" title="interface in org.apache.calcite.sql.validate">SqlValidatorScope</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getSelectScope(org.apache.calcite.sql.SqlSelect)">getSelectScope</a></span>&#8203;(<a href="../SqlSelect.html" title="class in org.apache.calcite.sql">SqlSelect</a>&nbsp;select)</code></th>
<td class="colLast">
<div class="block">Returns the appropriate scope for validating a particular clause of a
SELECT statement.</div>
</td>
</tr>
<tr id="i25" class="rowColor">
<td class="colFirst"><code><a href="../../rel/type/RelDataTypeFactory.html" title="interface in org.apache.calcite.rel.type">RelDataTypeFactory</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getTypeFactory()">getTypeFactory</a></span>()</code></th>
<td class="colLast">
<div class="block">Returns the type factory used by this validator.</div>
</td>
</tr>
<tr id="i26" class="altColor">
<td class="colFirst"><code><a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getUnknownType()">getUnknownType</a></span>()</code></th>
<td class="colLast">
<div class="block">Returns an object representing the "unknown" type.</div>
</td>
</tr>
<tr id="i27" class="rowColor">
<td class="colFirst"><code><a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getValidatedNodeType(org.apache.calcite.sql.SqlNode)">getValidatedNodeType</a></span>&#8203;(<a href="../SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;node)</code></th>
<td class="colLast">
<div class="block">Returns the type assigned to a node by validation.</div>
</td>
</tr>
<tr id="i28" class="altColor">
<td class="colFirst"><code><a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getValidatedNodeTypeIfKnown(org.apache.calcite.sql.SqlNode)">getValidatedNodeTypeIfKnown</a></span>&#8203;(<a href="../SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;node)</code></th>
<td class="colLast">
<div class="block">Returns the type assigned to a node by validation, or null if unknown.</div>
</td>
</tr>
<tr id="i29" class="rowColor">
<td class="colFirst"><code><a href="SqlValidatorScope.html" title="interface in org.apache.calcite.sql.validate">SqlValidatorScope</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getWhereScope(org.apache.calcite.sql.SqlSelect)">getWhereScope</a></span>&#8203;(<a href="../SqlSelect.html" title="class in org.apache.calcite.sql">SqlSelect</a>&nbsp;select)</code></th>
<td class="colLast">
<div class="block">Returns the scope that expressions in the WHERE and GROUP BY clause of
this query should use.</div>
</td>
</tr>
<tr id="i30" class="altColor">
<td class="colFirst"><code><a href="SqlValidatorScope.html" title="interface in org.apache.calcite.sql.validate">SqlValidatorScope</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getWithScope(org.apache.calcite.sql.SqlNode)">getWithScope</a></span>&#8203;(<a href="../SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;withItem)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i31" class="rowColor">
<td class="colFirst"><code><a href="../../runtime/CalciteException.html" title="class in org.apache.calcite.runtime">CalciteException</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#handleUnresolvedFunction(org.apache.calcite.sql.SqlCall,org.apache.calcite.sql.SqlFunction,java.util.List,java.util.List)">handleUnresolvedFunction</a></span>&#8203;(<a href="../SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a>&nbsp;call,
<a href="../SqlFunction.html" title="class in org.apache.calcite.sql">SqlFunction</a>&nbsp;unresolvedFunction,
java.util.List&lt;<a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&gt;&nbsp;argTypes,
java.util.List&lt;java.lang.String&gt;&nbsp;argNames)</code></th>
<td class="colLast">
<div class="block">Handles a call to a function which cannot be resolved.</div>
</td>
</tr>
<tr id="i32" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isAggregate(org.apache.calcite.sql.SqlNode)">isAggregate</a></span>&#8203;(<a href="../SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;selectNode)</code></th>
<td class="colLast">
<div class="block"><span class="deprecatedLabel">Deprecated.</span></div>
</td>
</tr>
<tr id="i33" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isAggregate(org.apache.calcite.sql.SqlSelect)">isAggregate</a></span>&#8203;(<a href="../SqlSelect.html" title="class in org.apache.calcite.sql">SqlSelect</a>&nbsp;select)</code></th>
<td class="colLast">
<div class="block">Returns whether a SELECT statement is an aggregation.</div>
</td>
</tr>
<tr id="i34" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isSystemField(org.apache.calcite.rel.type.RelDataTypeField)">isSystemField</a></span>&#8203;(<a href="../../rel/type/RelDataTypeField.html" title="interface in org.apache.calcite.rel.type">RelDataTypeField</a>&nbsp;field)</code></th>
<td class="colLast">
<div class="block">Returns whether a field is a system field.</div>
</td>
</tr>
<tr id="i35" class="rowColor">
<td class="colFirst"><code><a href="../SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#makeNullaryCall(org.apache.calcite.sql.SqlIdentifier)">makeNullaryCall</a></span>&#8203;(<a href="../SqlIdentifier.html" title="class in org.apache.calcite.sql">SqlIdentifier</a>&nbsp;id)</code></th>
<td class="colLast">
<div class="block">If an identifier is a legitimate call to a function that has no
arguments and requires no parentheses (for example "CURRENT_USER"),
returns a call to that function, otherwise returns null.</div>
</td>
</tr>
<tr id="i36" class="altColor">
<td class="colFirst"><code><a href="../../runtime/CalciteContextException.html" title="class in org.apache.calcite.runtime">CalciteContextException</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#newValidationError(org.apache.calcite.sql.SqlNode,org.apache.calcite.runtime.Resources.ExInst)">newValidationError</a></span>&#8203;(<a href="../SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;node,
<a href="../../runtime/Resources.ExInst.html" title="class in org.apache.calcite.runtime">Resources.ExInst</a>&lt;<a href="SqlValidatorException.html" title="class in org.apache.calcite.sql.validate">SqlValidatorException</a>&gt;&nbsp;e)</code></th>
<td class="colLast">
<div class="block">Adds "line x, column y" context to a validator exception.</div>
</td>
</tr>
<tr id="i37" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#popFunctionCall()">popFunctionCall</a></span>()</code></th>
<td class="colLast">
<div class="block">Removes the topmost entry from the function call stack.</div>
</td>
</tr>
<tr id="i38" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#pushFunctionCall()">pushFunctionCall</a></span>()</code></th>
<td class="colLast">
<div class="block">Pushes a new instance of a function call on to a function call stack.</div>
</td>
</tr>
<tr id="i39" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#removeValidatedNodeType(org.apache.calcite.sql.SqlNode)">removeValidatedNodeType</a></span>&#8203;(<a href="../SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;node)</code></th>
<td class="colLast">
<div class="block">Removes a node from the set of validated nodes</div>
</td>
</tr>
<tr id="i40" class="altColor">
<td class="colFirst"><code><a href="../SqlWindow.html" title="class in org.apache.calcite.sql">SqlWindow</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#resolveWindow(org.apache.calcite.sql.SqlNode,org.apache.calcite.sql.validate.SqlValidatorScope,boolean)">resolveWindow</a></span>&#8203;(<a href="../SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;windowOrRef,
<a href="SqlValidatorScope.html" title="interface in org.apache.calcite.sql.validate">SqlValidatorScope</a>&nbsp;scope,
boolean&nbsp;populateBounds)</code></th>
<td class="colLast">
<div class="block">Converts a window specification or window name into a fully-resolved
window specification.</div>
</td>
</tr>
<tr id="i41" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setCallRewrite(boolean)">setCallRewrite</a></span>&#8203;(boolean&nbsp;rewriteCalls)</code></th>
<td class="colLast">
<div class="block">Enables or disables rewrite of "macro-like" calls such as COALESCE.</div>
</td>
</tr>
<tr id="i42" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setColumnReferenceExpansion(boolean)">setColumnReferenceExpansion</a></span>&#8203;(boolean&nbsp;expandColumnReferences)</code></th>
<td class="colLast">
<div class="block">Enables or disables expansion of column references.</div>
</td>
</tr>
<tr id="i43" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setDefaultNullCollation(org.apache.calcite.config.NullCollation)">setDefaultNullCollation</a></span>&#8203;(<a href="../../config/NullCollation.html" title="enum in org.apache.calcite.config">NullCollation</a>&nbsp;nullCollation)</code></th>
<td class="colLast">
<div class="block">Sets how NULL values should be collated if an ORDER BY item does not
contain NULLS FIRST or NULLS LAST.</div>
</td>
</tr>
<tr id="i44" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setIdentifierExpansion(boolean)">setIdentifierExpansion</a></span>&#8203;(boolean&nbsp;expandIdentifiers)</code></th>
<td class="colLast">
<div class="block">Enables or disables expansion of identifiers other than column
references.</div>
</td>
</tr>
<tr id="i45" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setValidatedNodeType(org.apache.calcite.sql.SqlNode,org.apache.calcite.rel.type.RelDataType)">setValidatedNodeType</a></span>&#8203;(<a href="../SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;node,
<a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;type)</code></th>
<td class="colLast">
<div class="block"><span class="deprecatedLabel">Deprecated.</span>
<div class="deprecationComment">This method should not be in the <a href="SqlValidator.html" title="interface in org.apache.calcite.sql.validate"><code>SqlValidator</code></a>
interface.</div>
</div>
</td>
</tr>
<tr id="i46" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#shouldExpandIdentifiers()">shouldExpandIdentifiers</a></span>()</code></th>
<td class="colLast">
<div class="block">Returns expansion of identifiers.</div>
</td>
</tr>
<tr id="i47" class="rowColor">
<td class="colFirst"><code><a href="../SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#validate(org.apache.calcite.sql.SqlNode)">validate</a></span>&#8203;(<a href="../SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;topNode)</code></th>
<td class="colLast">
<div class="block">Validates an expression tree.</div>
</td>
</tr>
<tr id="i48" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#validateAggregateParams(org.apache.calcite.sql.SqlCall,org.apache.calcite.sql.SqlNode,org.apache.calcite.sql.SqlNodeList,org.apache.calcite.sql.validate.SqlValidatorScope)">validateAggregateParams</a></span>&#8203;(<a href="../SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a>&nbsp;aggCall,
<a href="../SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;filter,
<a href="../SqlNodeList.html" title="class in org.apache.calcite.sql">SqlNodeList</a>&nbsp;orderList,
<a href="SqlValidatorScope.html" title="interface in org.apache.calcite.sql.validate">SqlValidatorScope</a>&nbsp;scope)</code></th>
<td class="colLast">
<div class="block">Validates parameters for aggregate function.</div>
</td>
</tr>
<tr id="i49" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#validateCall(org.apache.calcite.sql.SqlCall,org.apache.calcite.sql.validate.SqlValidatorScope)">validateCall</a></span>&#8203;(<a href="../SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a>&nbsp;call,
<a href="SqlValidatorScope.html" title="interface in org.apache.calcite.sql.validate">SqlValidatorScope</a>&nbsp;scope)</code></th>
<td class="colLast">
<div class="block">Validates a call to an operator.</div>
</td>
</tr>
<tr id="i50" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#validateColumnListParams(org.apache.calcite.sql.SqlFunction,java.util.List,java.util.List)">validateColumnListParams</a></span>&#8203;(<a href="../SqlFunction.html" title="class in org.apache.calcite.sql">SqlFunction</a>&nbsp;function,
java.util.List&lt;<a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&gt;&nbsp;argTypes,
java.util.List&lt;<a href="../SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&gt;&nbsp;operands)</code></th>
<td class="colLast">
<div class="block">Validates a COLUMN_LIST parameter</div>
</td>
</tr>
<tr id="i51" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#validateDataType(org.apache.calcite.sql.SqlDataTypeSpec)">validateDataType</a></span>&#8203;(<a href="../SqlDataTypeSpec.html" title="class in org.apache.calcite.sql">SqlDataTypeSpec</a>&nbsp;dataType)</code></th>
<td class="colLast">
<div class="block">Validates a data type expression.</div>
</td>
</tr>
<tr id="i52" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#validateDelete(org.apache.calcite.sql.SqlDelete)">validateDelete</a></span>&#8203;(<a href="../SqlDelete.html" title="class in org.apache.calcite.sql">SqlDelete</a>&nbsp;delete)</code></th>
<td class="colLast">
<div class="block">Validates a DELETE statement.</div>
</td>
</tr>
<tr id="i53" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#validateDynamicParam(org.apache.calcite.sql.SqlDynamicParam)">validateDynamicParam</a></span>&#8203;(<a href="../SqlDynamicParam.html" title="class in org.apache.calcite.sql">SqlDynamicParam</a>&nbsp;dynamicParam)</code></th>
<td class="colLast">
<div class="block">Validates a dynamic parameter.</div>
</td>
</tr>
<tr id="i54" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#validateIdentifier(org.apache.calcite.sql.SqlIdentifier,org.apache.calcite.sql.validate.SqlValidatorScope)">validateIdentifier</a></span>&#8203;(<a href="../SqlIdentifier.html" title="class in org.apache.calcite.sql">SqlIdentifier</a>&nbsp;id,
<a href="SqlValidatorScope.html" title="interface in org.apache.calcite.sql.validate">SqlValidatorScope</a>&nbsp;scope)</code></th>
<td class="colLast">
<div class="block">Resolves an identifier to a fully-qualified name.</div>
</td>
</tr>
<tr id="i55" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#validateInsert(org.apache.calcite.sql.SqlInsert)">validateInsert</a></span>&#8203;(<a href="../SqlInsert.html" title="class in org.apache.calcite.sql">SqlInsert</a>&nbsp;insert)</code></th>
<td class="colLast">
<div class="block">Validates an INSERT statement.</div>
</td>
</tr>
<tr id="i56" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#validateIntervalQualifier(org.apache.calcite.sql.SqlIntervalQualifier)">validateIntervalQualifier</a></span>&#8203;(<a href="../SqlIntervalQualifier.html" title="class in org.apache.calcite.sql">SqlIntervalQualifier</a>&nbsp;qualifier)</code></th>
<td class="colLast">
<div class="block">Validates a <a href="../SqlIntervalQualifier.html" title="class in org.apache.calcite.sql"><code>SqlIntervalQualifier</code></a></div>
</td>
</tr>
<tr id="i57" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#validateLiteral(org.apache.calcite.sql.SqlLiteral)">validateLiteral</a></span>&#8203;(<a href="../SqlLiteral.html" title="class in org.apache.calcite.sql">SqlLiteral</a>&nbsp;literal)</code></th>
<td class="colLast">
<div class="block">Validates a literal.</div>
</td>
</tr>
<tr id="i58" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#validateMatchRecognize(org.apache.calcite.sql.SqlCall)">validateMatchRecognize</a></span>&#8203;(<a href="../SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a>&nbsp;pattern)</code></th>
<td class="colLast">
<div class="block">Validates a MATCH_RECOGNIZE clause.</div>
</td>
</tr>
<tr id="i59" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#validateMerge(org.apache.calcite.sql.SqlMerge)">validateMerge</a></span>&#8203;(<a href="../SqlMerge.html" title="class in org.apache.calcite.sql">SqlMerge</a>&nbsp;merge)</code></th>
<td class="colLast">
<div class="block">Validates a MERGE statement.</div>
</td>
</tr>
<tr id="i60" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#validateModality(org.apache.calcite.sql.SqlSelect,org.apache.calcite.sql.validate.SqlModality,boolean)">validateModality</a></span>&#8203;(<a href="../SqlSelect.html" title="class in org.apache.calcite.sql">SqlSelect</a>&nbsp;select,
<a href="SqlModality.html" title="enum in org.apache.calcite.sql.validate">SqlModality</a>&nbsp;modality,
boolean&nbsp;fail)</code></th>
<td class="colLast">
<div class="block">Validates that a query is capable of producing a return of given modality
(relational or streaming).</div>
</td>
</tr>
<tr id="i61" class="rowColor">
<td class="colFirst"><code><a href="../SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#validateParameterizedExpression(org.apache.calcite.sql.SqlNode,java.util.Map)">validateParameterizedExpression</a></span>&#8203;(<a href="../SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;topNode,
java.util.Map&lt;java.lang.String,&#8203;<a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&gt;&nbsp;nameToTypeMap)</code></th>
<td class="colLast">
<div class="block">Validates an expression tree.</div>
</td>
</tr>
<tr id="i62" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#validateQuery(org.apache.calcite.sql.SqlNode,org.apache.calcite.sql.validate.SqlValidatorScope,org.apache.calcite.rel.type.RelDataType)">validateQuery</a></span>&#8203;(<a href="../SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;node,
<a href="SqlValidatorScope.html" title="interface in org.apache.calcite.sql.validate">SqlValidatorScope</a>&nbsp;scope,
<a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;targetRowType)</code></th>
<td class="colLast">
<div class="block">Checks that a query is valid.</div>
</td>
</tr>
<tr id="i63" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#validateSequenceValue(org.apache.calcite.sql.validate.SqlValidatorScope,org.apache.calcite.sql.SqlIdentifier)">validateSequenceValue</a></span>&#8203;(<a href="SqlValidatorScope.html" title="interface in org.apache.calcite.sql.validate">SqlValidatorScope</a>&nbsp;scope,
<a href="../SqlIdentifier.html" title="class in org.apache.calcite.sql">SqlIdentifier</a>&nbsp;id)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i64" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#validateUpdate(org.apache.calcite.sql.SqlUpdate)">validateUpdate</a></span>&#8203;(<a href="../SqlUpdate.html" title="class in org.apache.calcite.sql">SqlUpdate</a>&nbsp;update)</code></th>
<td class="colLast">
<div class="block">Validates an UPDATE statement.</div>
</td>
</tr>
<tr id="i65" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#validateWindow(org.apache.calcite.sql.SqlNode,org.apache.calcite.sql.validate.SqlValidatorScope,org.apache.calcite.sql.SqlCall)">validateWindow</a></span>&#8203;(<a href="../SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;windowOrId,
<a href="SqlValidatorScope.html" title="interface in org.apache.calcite.sql.validate">SqlValidatorScope</a>&nbsp;scope,
<a href="../SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a>&nbsp;call)</code></th>
<td class="colLast">
<div class="block">Validates the right-hand side of an OVER expression.</div>
</td>
</tr>
<tr id="i66" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#validateWith(org.apache.calcite.sql.SqlWith,org.apache.calcite.sql.validate.SqlValidatorScope)">validateWith</a></span>&#8203;(<a href="../SqlWith.html" title="class in org.apache.calcite.sql">SqlWith</a>&nbsp;with,
<a href="SqlValidatorScope.html" title="interface in org.apache.calcite.sql.validate">SqlValidatorScope</a>&nbsp;scope)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i67" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#validateWithItem(org.apache.calcite.sql.SqlWithItem)">validateWithItem</a></span>&#8203;(<a href="../SqlWithItem.html" title="class in org.apache.calcite.sql">SqlWithItem</a>&nbsp;withItem)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
</table>
</li>
</ul>
</section>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ METHOD DETAIL ========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a id="getConformance()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getConformance</h4>
<pre class="methodSignature"><a href="SqlConformance.html" title="interface in org.apache.calcite.sql.validate">SqlConformance</a>&nbsp;getConformance()</pre>
<div class="block">Returns the dialect of SQL (SQL:2003, etc.) this validator recognizes.
Default is <a href="SqlConformanceEnum.html#DEFAULT"><code>SqlConformanceEnum.DEFAULT</code></a>.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>dialect of SQL this validator recognizes</dd>
</dl>
</li>
</ul>
<a id="getCatalogReader()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getCatalogReader</h4>
<pre class="methodSignature"><a href="SqlValidatorCatalogReader.html" title="interface in org.apache.calcite.sql.validate">SqlValidatorCatalogReader</a>&nbsp;getCatalogReader()</pre>
<div class="block">Returns the catalog reader used by this validator.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>catalog reader</dd>
</dl>
</li>
</ul>
<a id="getOperatorTable()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getOperatorTable</h4>
<pre class="methodSignature"><a href="../SqlOperatorTable.html" title="interface in org.apache.calcite.sql">SqlOperatorTable</a>&nbsp;getOperatorTable()</pre>
<div class="block">Returns the operator table used by this validator.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>operator table</dd>
</dl>
</li>
</ul>
<a id="validate(org.apache.calcite.sql.SqlNode)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>validate</h4>
<pre class="methodSignature"><a href="../SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;validate&#8203;(<a href="../SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;topNode)</pre>
<div class="block">Validates an expression tree. You can call this method multiple times,
but not reentrantly.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>topNode</code> - top of expression tree to be validated</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>validated tree (possibly rewritten)</dd>
</dl>
</li>
</ul>
<a id="validateParameterizedExpression(org.apache.calcite.sql.SqlNode,java.util.Map)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>validateParameterizedExpression</h4>
<pre class="methodSignature"><a href="../SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;validateParameterizedExpression&#8203;(<a href="../SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;topNode,
java.util.Map&lt;java.lang.String,&#8203;<a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&gt;&nbsp;nameToTypeMap)</pre>
<div class="block">Validates an expression tree. You can call this method multiple times,
but not reentrantly.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>topNode</code> - top of expression tree to be validated</dd>
<dd><code>nameToTypeMap</code> - map of simple name to <a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type"><code>RelDataType</code></a>; used to
resolve <a href="../SqlIdentifier.html" title="class in org.apache.calcite.sql"><code>SqlIdentifier</code></a> references</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>validated tree (possibly rewritten)</dd>
</dl>
</li>
</ul>
<a id="validateQuery(org.apache.calcite.sql.SqlNode,org.apache.calcite.sql.validate.SqlValidatorScope,org.apache.calcite.rel.type.RelDataType)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>validateQuery</h4>
<pre class="methodSignature">void&nbsp;validateQuery&#8203;(<a href="../SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;node,
<a href="SqlValidatorScope.html" title="interface in org.apache.calcite.sql.validate">SqlValidatorScope</a>&nbsp;scope,
<a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;targetRowType)</pre>
<div class="block">Checks that a query is valid.
<p>Valid queries include:
<ul>
<li><code>SELECT</code> statement,
<li>set operation (<code>UNION</code>, <code>INTERSECT</code>, <code>
EXCEPT</code>)
<li>identifier (e.g. representing use of a table in a FROM clause)
<li>query aliased with the <code>AS</code> operator
</ul></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>node</code> - Query node</dd>
<dd><code>scope</code> - Scope in which the query occurs</dd>
<dd><code>targetRowType</code> - Desired row type, must not be null, may be the data
type 'unknown'.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.RuntimeException</code> - if the query is not valid</dd>
</dl>
</li>
</ul>
<a id="getValidatedNodeType(org.apache.calcite.sql.SqlNode)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getValidatedNodeType</h4>
<pre class="methodSignature"><a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;getValidatedNodeType&#8203;(<a href="../SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;node)</pre>
<div class="block">Returns the type assigned to a node by validation.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>node</code> - the node of interest</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>validated type, never null</dd>
</dl>
</li>
</ul>
<a id="getValidatedNodeTypeIfKnown(org.apache.calcite.sql.SqlNode)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getValidatedNodeTypeIfKnown</h4>
<pre class="methodSignature"><a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;getValidatedNodeTypeIfKnown&#8203;(<a href="../SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;node)</pre>
<div class="block">Returns the type assigned to a node by validation, or null if unknown.
This allows for queries against nodes such as aliases, which have no type
of their own. If you want to assert that the node of interest must have a
type, use <a href="#getValidatedNodeType(org.apache.calcite.sql.SqlNode)"><code>getValidatedNodeType(org.apache.calcite.sql.SqlNode)</code></a> instead.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>node</code> - the node of interest</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>validated type, or null if unknown or not applicable</dd>
</dl>
</li>
</ul>
<a id="validateIdentifier(org.apache.calcite.sql.SqlIdentifier,org.apache.calcite.sql.validate.SqlValidatorScope)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>validateIdentifier</h4>
<pre class="methodSignature">void&nbsp;validateIdentifier&#8203;(<a href="../SqlIdentifier.html" title="class in org.apache.calcite.sql">SqlIdentifier</a>&nbsp;id,
<a href="SqlValidatorScope.html" title="interface in org.apache.calcite.sql.validate">SqlValidatorScope</a>&nbsp;scope)</pre>
<div class="block">Resolves an identifier to a fully-qualified name.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>id</code> - Identifier</dd>
<dd><code>scope</code> - Naming scope</dd>
</dl>
</li>
</ul>
<a id="validateLiteral(org.apache.calcite.sql.SqlLiteral)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>validateLiteral</h4>
<pre class="methodSignature">void&nbsp;validateLiteral&#8203;(<a href="../SqlLiteral.html" title="class in org.apache.calcite.sql">SqlLiteral</a>&nbsp;literal)</pre>
<div class="block">Validates a literal.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>literal</code> - Literal</dd>
</dl>
</li>
</ul>
<a id="validateIntervalQualifier(org.apache.calcite.sql.SqlIntervalQualifier)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>validateIntervalQualifier</h4>
<pre class="methodSignature">void&nbsp;validateIntervalQualifier&#8203;(<a href="../SqlIntervalQualifier.html" title="class in org.apache.calcite.sql">SqlIntervalQualifier</a>&nbsp;qualifier)</pre>
<div class="block">Validates a <a href="../SqlIntervalQualifier.html" title="class in org.apache.calcite.sql"><code>SqlIntervalQualifier</code></a></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>qualifier</code> - Interval qualifier</dd>
</dl>
</li>
</ul>
<a id="validateInsert(org.apache.calcite.sql.SqlInsert)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>validateInsert</h4>
<pre class="methodSignature">void&nbsp;validateInsert&#8203;(<a href="../SqlInsert.html" title="class in org.apache.calcite.sql">SqlInsert</a>&nbsp;insert)</pre>
<div class="block">Validates an INSERT statement.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>insert</code> - INSERT statement</dd>
</dl>
</li>
</ul>
<a id="validateUpdate(org.apache.calcite.sql.SqlUpdate)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>validateUpdate</h4>
<pre class="methodSignature">void&nbsp;validateUpdate&#8203;(<a href="../SqlUpdate.html" title="class in org.apache.calcite.sql">SqlUpdate</a>&nbsp;update)</pre>
<div class="block">Validates an UPDATE statement.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>update</code> - UPDATE statement</dd>
</dl>
</li>
</ul>
<a id="validateDelete(org.apache.calcite.sql.SqlDelete)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>validateDelete</h4>
<pre class="methodSignature">void&nbsp;validateDelete&#8203;(<a href="../SqlDelete.html" title="class in org.apache.calcite.sql">SqlDelete</a>&nbsp;delete)</pre>
<div class="block">Validates a DELETE statement.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>delete</code> - DELETE statement</dd>
</dl>
</li>
</ul>
<a id="validateMerge(org.apache.calcite.sql.SqlMerge)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>validateMerge</h4>
<pre class="methodSignature">void&nbsp;validateMerge&#8203;(<a href="../SqlMerge.html" title="class in org.apache.calcite.sql">SqlMerge</a>&nbsp;merge)</pre>
<div class="block">Validates a MERGE statement.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>merge</code> - MERGE statement</dd>
</dl>
</li>
</ul>
<a id="validateDataType(org.apache.calcite.sql.SqlDataTypeSpec)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>validateDataType</h4>
<pre class="methodSignature">void&nbsp;validateDataType&#8203;(<a href="../SqlDataTypeSpec.html" title="class in org.apache.calcite.sql">SqlDataTypeSpec</a>&nbsp;dataType)</pre>
<div class="block">Validates a data type expression.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>dataType</code> - Data type</dd>
</dl>
</li>
</ul>
<a id="validateDynamicParam(org.apache.calcite.sql.SqlDynamicParam)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>validateDynamicParam</h4>
<pre class="methodSignature">void&nbsp;validateDynamicParam&#8203;(<a href="../SqlDynamicParam.html" title="class in org.apache.calcite.sql">SqlDynamicParam</a>&nbsp;dynamicParam)</pre>
<div class="block">Validates a dynamic parameter.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>dynamicParam</code> - Dynamic parameter</dd>
</dl>
</li>
</ul>
<a id="validateWindow(org.apache.calcite.sql.SqlNode,org.apache.calcite.sql.validate.SqlValidatorScope,org.apache.calcite.sql.SqlCall)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>validateWindow</h4>
<pre class="methodSignature">void&nbsp;validateWindow&#8203;(<a href="../SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;windowOrId,
<a href="SqlValidatorScope.html" title="interface in org.apache.calcite.sql.validate">SqlValidatorScope</a>&nbsp;scope,
<a href="../SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a>&nbsp;call)</pre>
<div class="block">Validates the right-hand side of an OVER expression. It might be either
an <a href="../SqlIdentifier.html" title="class in org.apache.calcite.sql"><code>identifier</code></a> referencing a window, or an
<a href="../SqlWindow.html" title="class in org.apache.calcite.sql"><code>inline window specification</code></a>.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>windowOrId</code> - SqlNode that can be either SqlWindow with all the
components of a window spec or a SqlIdentifier with the
name of a window spec.</dd>
<dd><code>scope</code> - Naming scope</dd>
<dd><code>call</code> - the SqlNode if a function call if the window is attached
to one.</dd>
</dl>
</li>
</ul>
<a id="validateMatchRecognize(org.apache.calcite.sql.SqlCall)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>validateMatchRecognize</h4>
<pre class="methodSignature">void&nbsp;validateMatchRecognize&#8203;(<a href="../SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a>&nbsp;pattern)</pre>
<div class="block">Validates a MATCH_RECOGNIZE clause.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>pattern</code> - MATCH_RECOGNIZE clause</dd>
</dl>
</li>
</ul>
<a id="validateCall(org.apache.calcite.sql.SqlCall,org.apache.calcite.sql.validate.SqlValidatorScope)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>validateCall</h4>
<pre class="methodSignature">void&nbsp;validateCall&#8203;(<a href="../SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a>&nbsp;call,
<a href="SqlValidatorScope.html" title="interface in org.apache.calcite.sql.validate">SqlValidatorScope</a>&nbsp;scope)</pre>
<div class="block">Validates a call to an operator.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>call</code> - Operator call</dd>
<dd><code>scope</code> - Naming scope</dd>
</dl>
</li>
</ul>
<a id="validateAggregateParams(org.apache.calcite.sql.SqlCall,org.apache.calcite.sql.SqlNode,org.apache.calcite.sql.SqlNodeList,org.apache.calcite.sql.validate.SqlValidatorScope)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>validateAggregateParams</h4>
<pre class="methodSignature">void&nbsp;validateAggregateParams&#8203;(<a href="../SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a>&nbsp;aggCall,
<a href="../SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;filter,
<a href="../SqlNodeList.html" title="class in org.apache.calcite.sql">SqlNodeList</a>&nbsp;orderList,
<a href="SqlValidatorScope.html" title="interface in org.apache.calcite.sql.validate">SqlValidatorScope</a>&nbsp;scope)</pre>
<div class="block">Validates parameters for aggregate function.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>aggCall</code> - Call to aggregate function</dd>
<dd><code>filter</code> - Filter (<code>FILTER (WHERE)</code> clause), or null</dd>
<dd><code>orderList</code> - Ordering specification (<code>WITHING GROUP</code> clause),
or null</dd>
<dd><code>scope</code> - Syntactic scope</dd>
</dl>
</li>
</ul>
<a id="validateColumnListParams(org.apache.calcite.sql.SqlFunction,java.util.List,java.util.List)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>validateColumnListParams</h4>
<pre class="methodSignature">void&nbsp;validateColumnListParams&#8203;(<a href="../SqlFunction.html" title="class in org.apache.calcite.sql">SqlFunction</a>&nbsp;function,
java.util.List&lt;<a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&gt;&nbsp;argTypes,
java.util.List&lt;<a href="../SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&gt;&nbsp;operands)</pre>
<div class="block">Validates a COLUMN_LIST parameter</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>function</code> - function containing COLUMN_LIST parameter</dd>
<dd><code>argTypes</code> - function arguments</dd>
<dd><code>operands</code> - operands passed into the function call</dd>
</dl>
</li>
</ul>
<a id="makeNullaryCall(org.apache.calcite.sql.SqlIdentifier)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>makeNullaryCall</h4>
<pre class="methodSignature">@Nullable
<a href="../SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a>&nbsp;makeNullaryCall&#8203;(<a href="../SqlIdentifier.html" title="class in org.apache.calcite.sql">SqlIdentifier</a>&nbsp;id)</pre>
<div class="block">If an identifier is a legitimate call to a function that has no
arguments and requires no parentheses (for example "CURRENT_USER"),
returns a call to that function, otherwise returns null.</div>
</li>
</ul>
<a id="deriveType(org.apache.calcite.sql.validate.SqlValidatorScope,org.apache.calcite.sql.SqlNode)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>deriveType</h4>
<pre class="methodSignature"><a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;deriveType&#8203;(<a href="SqlValidatorScope.html" title="interface in org.apache.calcite.sql.validate">SqlValidatorScope</a>&nbsp;scope,
<a href="../SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;operand)</pre>
<div class="block">Derives the type of a node in a given scope. If the type has already been
inferred, returns the previous type.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>scope</code> - Syntactic scope</dd>
<dd><code>operand</code> - Parse tree node</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Type of the SqlNode. Should never return <code>NULL</code></dd>
</dl>
</li>
</ul>
<a id="newValidationError(org.apache.calcite.sql.SqlNode,org.apache.calcite.runtime.Resources.ExInst)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>newValidationError</h4>
<pre class="methodSignature"><a href="../../runtime/CalciteContextException.html" title="class in org.apache.calcite.runtime">CalciteContextException</a>&nbsp;newValidationError&#8203;(<a href="../SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;node,
<a href="../../runtime/Resources.ExInst.html" title="class in org.apache.calcite.runtime">Resources.ExInst</a>&lt;<a href="SqlValidatorException.html" title="class in org.apache.calcite.sql.validate">SqlValidatorException</a>&gt;&nbsp;e)</pre>
<div class="block">Adds "line x, column y" context to a validator exception.
<p>Note that the input exception is checked (it derives from
<code>Exception</code>) and the output exception is unchecked (it derives from
<code>RuntimeException</code>). This is intentional -- it should remind code
authors to provide context for their validation errors.</p></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>node</code> - The place where the exception occurred, not null</dd>
<dd><code>e</code> - The validation error</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Exception containing positional information, never null</dd>
</dl>
</li>
</ul>
<a id="isAggregate(org.apache.calcite.sql.SqlSelect)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isAggregate</h4>
<pre class="methodSignature">boolean&nbsp;isAggregate&#8203;(<a href="../SqlSelect.html" title="class in org.apache.calcite.sql">SqlSelect</a>&nbsp;select)</pre>
<div class="block">Returns whether a SELECT statement is an aggregation. Criteria are: (1)
contains GROUP BY, or (2) contains HAVING, or (3) SELECT or ORDER BY
clause contains aggregate functions. (Windowed aggregate functions, such
as <code>SUM(x) OVER w</code>, don't count.)</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>select</code> - SELECT statement</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>whether SELECT statement is an aggregation</dd>
</dl>
</li>
</ul>
<a id="isAggregate(org.apache.calcite.sql.SqlNode)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isAggregate</h4>
<pre class="methodSignature">@Deprecated
boolean&nbsp;isAggregate&#8203;(<a href="../SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;selectNode)</pre>
<div class="deprecationBlock"><span class="deprecatedLabel">Deprecated.</span></div>
<div class="block">Returns whether a select list expression is an aggregate function.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>selectNode</code> - Expression in SELECT clause</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>whether expression is an aggregate function</dd>
</dl>
</li>
</ul>
<a id="resolveWindow(org.apache.calcite.sql.SqlNode,org.apache.calcite.sql.validate.SqlValidatorScope,boolean)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>resolveWindow</h4>
<pre class="methodSignature"><a href="../SqlWindow.html" title="class in org.apache.calcite.sql">SqlWindow</a>&nbsp;resolveWindow&#8203;(<a href="../SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;windowOrRef,
<a href="SqlValidatorScope.html" title="interface in org.apache.calcite.sql.validate">SqlValidatorScope</a>&nbsp;scope,
boolean&nbsp;populateBounds)</pre>
<div class="block">Converts a window specification or window name into a fully-resolved
window specification. For example, in <code>SELECT sum(x) OVER (PARTITION
BY x ORDER BY y), sum(y) OVER w1, sum(z) OVER (w ORDER BY y) FROM t
WINDOW w AS (PARTITION BY x)</code> all aggregations have the same
resolved window specification <code>(PARTITION BY x ORDER BY y)</code>.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>windowOrRef</code> - Either the name of a window (a <a href="../SqlIdentifier.html" title="class in org.apache.calcite.sql"><code>SqlIdentifier</code></a>)
or a window specification (a <a href="../SqlWindow.html" title="class in org.apache.calcite.sql"><code>SqlWindow</code></a>).</dd>
<dd><code>scope</code> - Scope in which to resolve window names</dd>
<dd><code>populateBounds</code> - Whether to populate bounds. Doing so may alter the
definition of the window. It is recommended that
populate bounds when translating to physical algebra,
but not when validating.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>A window</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.RuntimeException</code> - Validation exception if window does not exist</dd>
</dl>
</li>
</ul>
<a id="getNamespace(org.apache.calcite.sql.SqlNode)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getNamespace</h4>
<pre class="methodSignature"><a href="SqlValidatorNamespace.html" title="interface in org.apache.calcite.sql.validate">SqlValidatorNamespace</a>&nbsp;getNamespace&#8203;(<a href="../SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;node)</pre>
<div class="block">Finds the namespace corresponding to a given node.
<p>For example, in the query <code>SELECT * FROM (SELECT * FROM t), t1 AS
alias</code>, the both items in the FROM clause have a corresponding
namespace.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>node</code> - Parse tree node</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>namespace of node</dd>
</dl>
</li>
</ul>
<a id="deriveAlias(org.apache.calcite.sql.SqlNode,int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>deriveAlias</h4>
<pre class="methodSignature">java.lang.String&nbsp;deriveAlias&#8203;(<a href="../SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;node,
int&nbsp;ordinal)</pre>
<div class="block">Derives an alias for an expression. If no alias can be derived, returns
null if <code>ordinal</code> is less than zero, otherwise generates an
alias <code>EXPR$<i>ordinal</i></code>.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>node</code> - Expression</dd>
<dd><code>ordinal</code> - Ordinal of expression</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>derived alias, or null if no alias can be derived and ordinal is
less than zero</dd>
</dl>
</li>
</ul>
<a id="expandStar(org.apache.calcite.sql.SqlNodeList,org.apache.calcite.sql.SqlSelect,boolean)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>expandStar</h4>
<pre class="methodSignature"><a href="../SqlNodeList.html" title="class in org.apache.calcite.sql">SqlNodeList</a>&nbsp;expandStar&#8203;(<a href="../SqlNodeList.html" title="class in org.apache.calcite.sql">SqlNodeList</a>&nbsp;selectList,
<a href="../SqlSelect.html" title="class in org.apache.calcite.sql">SqlSelect</a>&nbsp;query,
boolean&nbsp;includeSystemVars)</pre>
<div class="block">Returns a list of expressions, with every occurrence of "&#42;" or
"TABLE.&#42;" expanded.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>selectList</code> - Select clause to be expanded</dd>
<dd><code>query</code> - Query</dd>
<dd><code>includeSystemVars</code> - Whether to include system variables</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>expanded select clause</dd>
</dl>
</li>
</ul>
<a id="getWhereScope(org.apache.calcite.sql.SqlSelect)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getWhereScope</h4>
<pre class="methodSignature"><a href="SqlValidatorScope.html" title="interface in org.apache.calcite.sql.validate">SqlValidatorScope</a>&nbsp;getWhereScope&#8203;(<a href="../SqlSelect.html" title="class in org.apache.calcite.sql">SqlSelect</a>&nbsp;select)</pre>
<div class="block">Returns the scope that expressions in the WHERE and GROUP BY clause of
this query should use. This scope consists of the tables in the FROM
clause, and the enclosing scope.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>select</code> - Query</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>naming scope of WHERE clause</dd>
</dl>
</li>
</ul>
<a id="getTypeFactory()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getTypeFactory</h4>
<pre class="methodSignature"><a href="../../rel/type/RelDataTypeFactory.html" title="interface in org.apache.calcite.rel.type">RelDataTypeFactory</a>&nbsp;getTypeFactory()</pre>
<div class="block">Returns the type factory used by this validator.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>type factory</dd>
</dl>
</li>
</ul>
<a id="setValidatedNodeType(org.apache.calcite.sql.SqlNode,org.apache.calcite.rel.type.RelDataType)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setValidatedNodeType</h4>
<pre class="methodSignature">void&nbsp;setValidatedNodeType&#8203;(<a href="../SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;node,
<a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;type)</pre>
<div class="deprecationBlock"><span class="deprecatedLabel">Deprecated.</span>
<div class="deprecationComment">This method should not be in the <a href="SqlValidator.html" title="interface in org.apache.calcite.sql.validate"><code>SqlValidator</code></a>
interface. The validator should drive the type-derivation process, and
store nodes' types when they have been derived.</div>
</div>
<div class="block">Saves the type of a <a href="../SqlNode.html" title="class in org.apache.calcite.sql"><code>SqlNode</code></a>, now that it has been validated.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>node</code> - A SQL parse tree node, never null</dd>
<dd><code>type</code> - Its type; must not be null</dd>
</dl>
</li>
</ul>
<a id="removeValidatedNodeType(org.apache.calcite.sql.SqlNode)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>removeValidatedNodeType</h4>
<pre class="methodSignature">void&nbsp;removeValidatedNodeType&#8203;(<a href="../SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;node)</pre>
<div class="block">Removes a node from the set of validated nodes</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>node</code> - node to be removed</dd>
</dl>
</li>
</ul>
<a id="getUnknownType()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getUnknownType</h4>
<pre class="methodSignature"><a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;getUnknownType()</pre>
<div class="block">Returns an object representing the "unknown" type.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>unknown type</dd>
</dl>
</li>
</ul>
<a id="getSelectScope(org.apache.calcite.sql.SqlSelect)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getSelectScope</h4>
<pre class="methodSignature"><a href="SqlValidatorScope.html" title="interface in org.apache.calcite.sql.validate">SqlValidatorScope</a>&nbsp;getSelectScope&#8203;(<a href="../SqlSelect.html" title="class in org.apache.calcite.sql">SqlSelect</a>&nbsp;select)</pre>
<div class="block">Returns the appropriate scope for validating a particular clause of a
SELECT statement.
<p>Consider</p>
<blockquote><pre><code>SELECT *
FROM foo
WHERE EXISTS (
SELECT deptno AS x
FROM emp
JOIN dept ON emp.deptno = dept.deptno
WHERE emp.deptno = 5
GROUP BY deptno
ORDER BY x)</code></pre></blockquote>
<p>What objects can be seen in each part of the sub-query?</p>
<ul>
<li>In FROM (<a href="#getFromScope(org.apache.calcite.sql.SqlSelect)"><code>getFromScope(org.apache.calcite.sql.SqlSelect)</code></a> , you can only see 'foo'.
<li>In WHERE (<a href="#getWhereScope(org.apache.calcite.sql.SqlSelect)"><code>getWhereScope(org.apache.calcite.sql.SqlSelect)</code></a>), GROUP BY (<a href="#getGroupScope(org.apache.calcite.sql.SqlSelect)"><code>getGroupScope(org.apache.calcite.sql.SqlSelect)</code></a>),
SELECT (<code>getSelectScope</code>), and the ON clause of the JOIN
(<a href="#getJoinScope(org.apache.calcite.sql.SqlNode)"><code>getJoinScope(org.apache.calcite.sql.SqlNode)</code></a>) you can see 'emp', 'dept', and 'foo'.
<li>In ORDER BY (<a href="#getOrderScope(org.apache.calcite.sql.SqlSelect)"><code>getOrderScope(org.apache.calcite.sql.SqlSelect)</code></a>), you can see the column alias 'x';
and tables 'emp', 'dept', and 'foo'.
</ul></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>select</code> - SELECT statement</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>naming scope for SELECT statement</dd>
</dl>
</li>
</ul>
<a id="getRawSelectScope(org.apache.calcite.sql.SqlSelect)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getRawSelectScope</h4>
<pre class="methodSignature"><a href="SelectScope.html" title="class in org.apache.calcite.sql.validate">SelectScope</a>&nbsp;getRawSelectScope&#8203;(<a href="../SqlSelect.html" title="class in org.apache.calcite.sql">SqlSelect</a>&nbsp;select)</pre>
<div class="block">Returns the scope for resolving the SELECT, GROUP BY and HAVING clauses.
Always a <a href="SelectScope.html" title="class in org.apache.calcite.sql.validate"><code>SelectScope</code></a>; if this is an aggregation query, the
<a href="AggregatingScope.html" title="interface in org.apache.calcite.sql.validate"><code>AggregatingScope</code></a> is stripped away.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>select</code> - SELECT statement</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>naming scope for SELECT statement, sans any aggregating scope</dd>
</dl>
</li>
</ul>
<a id="getFromScope(org.apache.calcite.sql.SqlSelect)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getFromScope</h4>
<pre class="methodSignature"><a href="SqlValidatorScope.html" title="interface in org.apache.calcite.sql.validate">SqlValidatorScope</a>&nbsp;getFromScope&#8203;(<a href="../SqlSelect.html" title="class in org.apache.calcite.sql">SqlSelect</a>&nbsp;select)</pre>
<div class="block">Returns a scope containing the objects visible from the FROM clause of a
query.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>select</code> - SELECT statement</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>naming scope for FROM clause</dd>
</dl>
</li>
</ul>
<a id="getJoinScope(org.apache.calcite.sql.SqlNode)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getJoinScope</h4>
<pre class="methodSignature"><a href="SqlValidatorScope.html" title="interface in org.apache.calcite.sql.validate">SqlValidatorScope</a>&nbsp;getJoinScope&#8203;(<a href="../SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;node)</pre>
<div class="block">Returns a scope containing the objects visible from the ON and USING
sections of a JOIN clause.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>node</code> - The item in the FROM clause which contains the ON or USING
expression</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>naming scope for JOIN clause</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="#getFromScope(org.apache.calcite.sql.SqlSelect)"><code>getFromScope(org.apache.calcite.sql.SqlSelect)</code></a></dd>
</dl>
</li>
</ul>
<a id="getGroupScope(org.apache.calcite.sql.SqlSelect)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getGroupScope</h4>
<pre class="methodSignature"><a href="SqlValidatorScope.html" title="interface in org.apache.calcite.sql.validate">SqlValidatorScope</a>&nbsp;getGroupScope&#8203;(<a href="../SqlSelect.html" title="class in org.apache.calcite.sql">SqlSelect</a>&nbsp;select)</pre>
<div class="block">Returns a scope containing the objects visible from the GROUP BY clause
of a query.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>select</code> - SELECT statement</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>naming scope for GROUP BY clause</dd>
</dl>
</li>
</ul>
<a id="getHavingScope(org.apache.calcite.sql.SqlSelect)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getHavingScope</h4>
<pre class="methodSignature"><a href="SqlValidatorScope.html" title="interface in org.apache.calcite.sql.validate">SqlValidatorScope</a>&nbsp;getHavingScope&#8203;(<a href="../SqlSelect.html" title="class in org.apache.calcite.sql">SqlSelect</a>&nbsp;select)</pre>
<div class="block">Returns a scope containing the objects visible from the HAVING clause of
a query.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>select</code> - SELECT statement</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>naming scope for HAVING clause</dd>
</dl>
</li>
</ul>
<a id="getOrderScope(org.apache.calcite.sql.SqlSelect)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getOrderScope</h4>
<pre class="methodSignature"><a href="SqlValidatorScope.html" title="interface in org.apache.calcite.sql.validate">SqlValidatorScope</a>&nbsp;getOrderScope&#8203;(<a href="../SqlSelect.html" title="class in org.apache.calcite.sql">SqlSelect</a>&nbsp;select)</pre>
<div class="block">Returns the scope that expressions in the SELECT and HAVING clause of
this query should use. This scope consists of the FROM clause and the
enclosing scope. If the query is aggregating, only columns in the GROUP
BY clause may be used.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>select</code> - SELECT statement</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>naming scope for ORDER BY clause</dd>
</dl>
</li>
</ul>
<a id="getMatchRecognizeScope(org.apache.calcite.sql.SqlMatchRecognize)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getMatchRecognizeScope</h4>
<pre class="methodSignature"><a href="SqlValidatorScope.html" title="interface in org.apache.calcite.sql.validate">SqlValidatorScope</a>&nbsp;getMatchRecognizeScope&#8203;(<a href="../SqlMatchRecognize.html" title="class in org.apache.calcite.sql">SqlMatchRecognize</a>&nbsp;node)</pre>
<div class="block">Returns a scope match recognize clause.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>node</code> - Match recognize</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>naming scope for Match recognize clause</dd>
</dl>
</li>
</ul>
<a id="declareCursor(org.apache.calcite.sql.SqlSelect,org.apache.calcite.sql.validate.SqlValidatorScope)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>declareCursor</h4>
<pre class="methodSignature">void&nbsp;declareCursor&#8203;(<a href="../SqlSelect.html" title="class in org.apache.calcite.sql">SqlSelect</a>&nbsp;select,
<a href="SqlValidatorScope.html" title="interface in org.apache.calcite.sql.validate">SqlValidatorScope</a>&nbsp;scope)</pre>
<div class="block">Declares a SELECT expression as a cursor.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>select</code> - select expression associated with the cursor</dd>
<dd><code>scope</code> - scope of the parent query associated with the cursor</dd>
</dl>
</li>
</ul>
<a id="pushFunctionCall()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>pushFunctionCall</h4>
<pre class="methodSignature">void&nbsp;pushFunctionCall()</pre>
<div class="block">Pushes a new instance of a function call on to a function call stack.</div>
</li>
</ul>
<a id="popFunctionCall()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>popFunctionCall</h4>
<pre class="methodSignature">void&nbsp;popFunctionCall()</pre>
<div class="block">Removes the topmost entry from the function call stack.</div>
</li>
</ul>
<a id="getParentCursor(java.lang.String)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getParentCursor</h4>
<pre class="methodSignature">java.lang.String&nbsp;getParentCursor&#8203;(java.lang.String&nbsp;columnListParamName)</pre>
<div class="block">Retrieves the name of the parent cursor referenced by a column list
parameter.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>columnListParamName</code> - name of the column list parameter</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>name of the parent cursor</dd>
</dl>
</li>
</ul>
<a id="setIdentifierExpansion(boolean)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setIdentifierExpansion</h4>
<pre class="methodSignature">void&nbsp;setIdentifierExpansion&#8203;(boolean&nbsp;expandIdentifiers)</pre>
<div class="block">Enables or disables expansion of identifiers other than column
references.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>expandIdentifiers</code> - new setting</dd>
</dl>
</li>
</ul>
<a id="setColumnReferenceExpansion(boolean)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setColumnReferenceExpansion</h4>
<pre class="methodSignature">void&nbsp;setColumnReferenceExpansion&#8203;(boolean&nbsp;expandColumnReferences)</pre>
<div class="block">Enables or disables expansion of column references. (Currently this does
not apply to the ORDER BY clause; may be fixed in the future.)</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>expandColumnReferences</code> - new setting</dd>
</dl>
</li>
</ul>
<a id="getColumnReferenceExpansion()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getColumnReferenceExpansion</h4>
<pre class="methodSignature">boolean&nbsp;getColumnReferenceExpansion()</pre>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>whether column reference expansion is enabled</dd>
</dl>
</li>
</ul>
<a id="setDefaultNullCollation(org.apache.calcite.config.NullCollation)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setDefaultNullCollation</h4>
<pre class="methodSignature">void&nbsp;setDefaultNullCollation&#8203;(<a href="../../config/NullCollation.html" title="enum in org.apache.calcite.config">NullCollation</a>&nbsp;nullCollation)</pre>
<div class="block">Sets how NULL values should be collated if an ORDER BY item does not
contain NULLS FIRST or NULLS LAST.</div>
</li>
</ul>
<a id="getDefaultNullCollation()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getDefaultNullCollation</h4>
<pre class="methodSignature"><a href="../../config/NullCollation.html" title="enum in org.apache.calcite.config">NullCollation</a>&nbsp;getDefaultNullCollation()</pre>
<div class="block">Returns how NULL values should be collated if an ORDER BY item does not
contain NULLS FIRST or NULLS LAST.</div>
</li>
</ul>
<a id="shouldExpandIdentifiers()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>shouldExpandIdentifiers</h4>
<pre class="methodSignature">boolean&nbsp;shouldExpandIdentifiers()</pre>
<div class="block">Returns expansion of identifiers.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>whether this validator should expand identifiers</dd>
</dl>
</li>
</ul>
<a id="setCallRewrite(boolean)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setCallRewrite</h4>
<pre class="methodSignature">void&nbsp;setCallRewrite&#8203;(boolean&nbsp;rewriteCalls)</pre>
<div class="block">Enables or disables rewrite of "macro-like" calls such as COALESCE.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>rewriteCalls</code> - new setting</dd>
</dl>
</li>
</ul>
<a id="deriveConstructorType(org.apache.calcite.sql.validate.SqlValidatorScope,org.apache.calcite.sql.SqlCall,org.apache.calcite.sql.SqlFunction,org.apache.calcite.sql.SqlFunction,java.util.List)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>deriveConstructorType</h4>
<pre class="methodSignature"><a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;deriveConstructorType&#8203;(<a href="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="../SqlFunction.html" title="class in org.apache.calcite.sql">SqlFunction</a>&nbsp;unresolvedConstructor,
<a href="../SqlFunction.html" title="class in org.apache.calcite.sql">SqlFunction</a>&nbsp;resolvedConstructor,
java.util.List&lt;<a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&gt;&nbsp;argTypes)</pre>
<div class="block">Derives the type of a constructor.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>scope</code> - Scope</dd>
<dd><code>call</code> - Call</dd>
<dd><code>unresolvedConstructor</code> - TODO</dd>
<dd><code>resolvedConstructor</code> - TODO</dd>
<dd><code>argTypes</code> - Types of arguments</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Resolved type of constructor</dd>
</dl>
</li>
</ul>
<a id="handleUnresolvedFunction(org.apache.calcite.sql.SqlCall,org.apache.calcite.sql.SqlFunction,java.util.List,java.util.List)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>handleUnresolvedFunction</h4>
<pre class="methodSignature"><a href="../../runtime/CalciteException.html" title="class in org.apache.calcite.runtime">CalciteException</a>&nbsp;handleUnresolvedFunction&#8203;(<a href="../SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a>&nbsp;call,
<a href="../SqlFunction.html" title="class in org.apache.calcite.sql">SqlFunction</a>&nbsp;unresolvedFunction,
java.util.List&lt;<a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&gt;&nbsp;argTypes,
java.util.List&lt;java.lang.String&gt;&nbsp;argNames)</pre>
<div class="block">Handles a call to a function which cannot be resolved. Returns a an
appropriately descriptive error, which caller must throw.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>call</code> - Call</dd>
<dd><code>unresolvedFunction</code> - Overloaded function which is the target of the
call</dd>
<dd><code>argTypes</code> - Types of arguments</dd>
<dd><code>argNames</code> - Names of arguments, or null if call by position</dd>
</dl>
</li>
</ul>
<a id="expandOrderExpr(org.apache.calcite.sql.SqlSelect,org.apache.calcite.sql.SqlNode)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>expandOrderExpr</h4>
<pre class="methodSignature"><a href="../SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;expandOrderExpr&#8203;(<a href="../SqlSelect.html" title="class in org.apache.calcite.sql">SqlSelect</a>&nbsp;select,
<a href="../SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;orderExpr)</pre>
<div class="block">Expands an expression in the ORDER BY clause into an expression with the
same semantics as expressions in the SELECT clause.
<p>This is made necessary by a couple of dialect 'features':
<ul>
<li><b>ordinal expressions</b>: In "SELECT x, y FROM t ORDER BY 2", the
expression "2" is shorthand for the 2nd item in the select clause, namely
"y".
<li><b>alias references</b>: In "SELECT x AS a, y FROM t ORDER BY a", the
expression "a" is shorthand for the item in the select clause whose alias
is "a"
</ul></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>select</code> - Select statement which contains ORDER BY</dd>
<dd><code>orderExpr</code> - Expression in the ORDER BY clause.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Expression translated into SELECT clause semantics</dd>
</dl>
</li>
</ul>
<a id="expand(org.apache.calcite.sql.SqlNode,org.apache.calcite.sql.validate.SqlValidatorScope)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>expand</h4>
<pre class="methodSignature"><a href="../SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;expand&#8203;(<a href="../SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;expr,
<a href="SqlValidatorScope.html" title="interface in org.apache.calcite.sql.validate">SqlValidatorScope</a>&nbsp;scope)</pre>
<div class="block">Expands an expression.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>expr</code> - Expression</dd>
<dd><code>scope</code> - Scope</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Expanded expression</dd>
</dl>
</li>
</ul>
<a id="isSystemField(org.apache.calcite.rel.type.RelDataTypeField)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isSystemField</h4>
<pre class="methodSignature">boolean&nbsp;isSystemField&#8203;(<a href="../../rel/type/RelDataTypeField.html" title="interface in org.apache.calcite.rel.type">RelDataTypeField</a>&nbsp;field)</pre>
<div class="block">Returns whether a field is a system field. Such fields may have
particular properties such as sortedness and nullability.
<p>In the default implementation, always returns <code>false</code>.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>field</code> - Field</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>whether field is a system field</dd>
</dl>
</li>
</ul>
<a id="getFieldOrigins(org.apache.calcite.sql.SqlNode)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getFieldOrigins</h4>
<pre class="methodSignature">java.util.List&lt;java.util.List&lt;java.lang.String&gt;&gt;&nbsp;getFieldOrigins&#8203;(<a href="../SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;sqlQuery)</pre>
<div class="block">Returns a description of how each field in the row type maps to a
catalog, schema, table and column in the schema.
<p>The returned list is never null, and has one element for each field
in the row type. Each element is a list of four elements (catalog,
schema, table, column), or may be null if the column is an expression.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>sqlQuery</code> - Query</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Description of how each field in the row type maps to a schema
object</dd>
</dl>
</li>
</ul>
<a id="getParameterRowType(org.apache.calcite.sql.SqlNode)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getParameterRowType</h4>
<pre class="methodSignature"><a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;getParameterRowType&#8203;(<a href="../SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;sqlQuery)</pre>
<div class="block">Returns a record type that contains the name and type of each parameter.
Returns a record type with no fields if there are no parameters.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>sqlQuery</code> - Query</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Record type</dd>
</dl>
</li>
</ul>
<a id="getOverScope(org.apache.calcite.sql.SqlNode)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getOverScope</h4>
<pre class="methodSignature"><a href="SqlValidatorScope.html" title="interface in org.apache.calcite.sql.validate">SqlValidatorScope</a>&nbsp;getOverScope&#8203;(<a href="../SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;node)</pre>
<div class="block">Returns the scope of an OVER or VALUES node.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>node</code> - Node</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Scope</dd>
</dl>
</li>
</ul>
<a id="validateModality(org.apache.calcite.sql.SqlSelect,org.apache.calcite.sql.validate.SqlModality,boolean)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>validateModality</h4>
<pre class="methodSignature">boolean&nbsp;validateModality&#8203;(<a href="../SqlSelect.html" title="class in org.apache.calcite.sql">SqlSelect</a>&nbsp;select,
<a href="SqlModality.html" title="enum in org.apache.calcite.sql.validate">SqlModality</a>&nbsp;modality,
boolean&nbsp;fail)</pre>
<div class="block">Validates that a query is capable of producing a return of given modality
(relational or streaming).</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>select</code> - Query</dd>
<dd><code>modality</code> - Modality (streaming or relational)</dd>
<dd><code>fail</code> - Whether to throw a user error if does not support required
modality</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>whether query supports the given modality</dd>
</dl>
</li>
</ul>
<a id="validateWith(org.apache.calcite.sql.SqlWith,org.apache.calcite.sql.validate.SqlValidatorScope)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>validateWith</h4>
<pre class="methodSignature">void&nbsp;validateWith&#8203;(<a href="../SqlWith.html" title="class in org.apache.calcite.sql">SqlWith</a>&nbsp;with,
<a href="SqlValidatorScope.html" title="interface in org.apache.calcite.sql.validate">SqlValidatorScope</a>&nbsp;scope)</pre>
</li>
</ul>
<a id="validateWithItem(org.apache.calcite.sql.SqlWithItem)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>validateWithItem</h4>
<pre class="methodSignature">void&nbsp;validateWithItem&#8203;(<a href="../SqlWithItem.html" title="class in org.apache.calcite.sql">SqlWithItem</a>&nbsp;withItem)</pre>
</li>
</ul>
<a id="validateSequenceValue(org.apache.calcite.sql.validate.SqlValidatorScope,org.apache.calcite.sql.SqlIdentifier)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>validateSequenceValue</h4>
<pre class="methodSignature">void&nbsp;validateSequenceValue&#8203;(<a href="SqlValidatorScope.html" title="interface in org.apache.calcite.sql.validate">SqlValidatorScope</a>&nbsp;scope,
<a href="../SqlIdentifier.html" title="class in org.apache.calcite.sql">SqlIdentifier</a>&nbsp;id)</pre>
</li>
</ul>
<a id="getWithScope(org.apache.calcite.sql.SqlNode)">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>getWithScope</h4>
<pre class="methodSignature"><a href="SqlValidatorScope.html" title="interface in org.apache.calcite.sql.validate">SqlValidatorScope</a>&nbsp;getWithScope&#8203;(<a href="../SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;withItem)</pre>
</li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
</div>
</main>
<!-- ========= END OF CLASS DATA ========= -->
<footer role="contentinfo">
<nav role="navigation">
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a id="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/SqlValidator.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a id="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</nav>
<p class="legalCopy"><small>Copyright &#169; 2012&#x2013;2019 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
</footer>
</body>
</html>