blob: 9718ef45ff2acb9ee43bbb585e5b58bc537c150e [file] [log] [blame]
<!DOCTYPE HTML>
<html lang="en">
<head>
<!-- Generated by javadoc (17) -->
<title>SqlValidator (Apache Calcite API)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="description" content="declaration: package: org.apache.calcite.sql.validate, interface: SqlValidator">
<meta name="generator" content="javadoc/ClassWriterImpl">
<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
<script type="text/javascript" src="../../../../../script.js"></script>
<script type="text/javascript" src="../../../../../script-dir/jquery-3.5.1.min.js"></script>
<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
</head>
<body class="class-declaration-page">
<script type="text/javascript">var evenRowColor = "even-row-color";
var oddRowColor = "odd-row-color";
var tableTab = "table-tab";
var activeTableTab = "active-table-tab";
var pathtoroot = "../../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<div class="flex-box">
<header role="banner" class="flex-header">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top">
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<div class="about-language"><b>Apache Calcite</b></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="nav-bar-cell1-rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../help-doc.html#class">Help</a></li>
</ul>
</div>
<div class="sub-nav">
<div>
<ul class="sub-nav-list">
<li>Summary:&nbsp;</li>
<li><a href="#nested-class-summary">Nested</a>&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method-summary">Method</a></li>
</ul>
<ul class="sub-nav-list">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method-detail">Method</a></li>
</ul>
</div>
<div class="nav-list-search"><label for="search-input">SEARCH:</label>
<input type="text" id="search-input" value="search" disabled="disabled">
<input type="reset" id="reset-button" value="reset" disabled="disabled">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">org.apache.calcite.sql.validate</a></div>
<h1 title="Interface SqlValidator" class="title">Interface SqlValidator</h1>
</div>
<section class="class-description" id="class-description">
<dl class="notes">
<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 class="notes">
<dt>All Known Implementing Classes:</dt>
<dd><code><a href="../../jdbc/ContextSqlValidator.html" title="class in org.apache.calcite.jdbc">ContextSqlValidator</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>
<div class="type-signature"><span class="annotations">@Enclosing
</span><span class="modifiers">public interface </span><span class="element-name type-name-label">SqlValidator</span></div>
<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.SqlValidator.Config)"><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.SqlValidator.Config)</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>
</section>
<section class="summary">
<ul class="summary-list">
<!-- ======== NESTED CLASS SUMMARY ======== -->
<li>
<section class="nested-class-summary" id="nested-class-summary">
<h2>Nested Class Summary</h2>
<div class="caption"><span>Nested Classes</span></div>
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Interface</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color"><code>static interface&nbsp;</code></div>
<div class="col-second even-row-color"><code><a href="SqlValidator.Config.html" class="type-name-link" title="interface in org.apache.calcite.sql.validate">SqlValidator.Config</a></code></div>
<div class="col-last even-row-color">
<div class="block">Interface to define the configuration for a SqlValidator.</div>
</div>
</div>
</section>
</li>
<!-- ========== METHOD SUMMARY =========== -->
<li>
<section class="method-summary" id="method-summary">
<h2>Method Summary</h2>
<div id="method-summary-table">
<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab3" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab3', 3)" class="table-tab">Abstract Methods</button><button id="method-summary-table-tab5" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab5', 3)" class="table-tab">Default Methods</button><button id="method-summary-table-tab6" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab6', 3)" class="table-tab">Deprecated Methods</button></div>
<div id="method-summary-table.tabpanel" role="tabpanel">
<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Method</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="SqlValidator.Config.html" title="interface in org.apache.calcite.sql.validate">SqlValidator.Config</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#config()" class="member-name-link">config</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Returns the config of the validator.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#declareCursor(org.apache.calcite.sql.SqlSelect,org.apache.calcite.sql.validate.SqlValidatorScope)" class="member-name-link">declareCursor</a><wbr>(<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></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Declares a SELECT expression as a cursor.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>@Nullable <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#deriveAlias(org.apache.calcite.sql.SqlNode,int)" class="member-name-link">deriveAlias</a><wbr>(<a href="../SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;node,
int&nbsp;ordinal)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Derives an alias for an expression.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><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)" class="member-name-link">deriveConstructorType</a><wbr>(<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,
@Nullable <a href="../SqlFunction.html" title="class in org.apache.calcite.sql">SqlFunction</a>&nbsp;resolvedConstructor,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&gt;&nbsp;argTypes)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Derives the type of a constructor.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#deriveType(org.apache.calcite.sql.validate.SqlValidatorScope,org.apache.calcite.sql.SqlNode)" class="member-name-link">deriveType</a><wbr>(<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></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Derives the type of a node in a given scope.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="../SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#expand(org.apache.calcite.sql.SqlNode,org.apache.calcite.sql.validate.SqlValidatorScope)" class="member-name-link">expand</a><wbr>(<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></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Expands an expression.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="../SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#expandOrderExpr(org.apache.calcite.sql.SqlSelect,org.apache.calcite.sql.SqlNode)" class="member-name-link">expandOrderExpr</a><wbr>(<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></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<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>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="../SqlNodeList.html" title="class in org.apache.calcite.sql">SqlNodeList</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#expandStar(org.apache.calcite.sql.SqlNodeList,org.apache.calcite.sql.SqlSelect,boolean)" class="member-name-link">expandStar</a><wbr>(<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></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Returns a list of expressions, with every occurrence of "&#42;" or
"TABLE.&#42;" expanded.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="SqlValidatorCatalogReader.html" title="interface in org.apache.calcite.sql.validate">SqlValidatorCatalogReader</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#getCatalogReader()" class="member-name-link">getCatalogReader</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Returns the catalog reader used by this validator.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;@Nullable <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;&gt;</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#getFieldOrigins(org.apache.calcite.sql.SqlNode)" class="member-name-link">getFieldOrigins</a><wbr>(<a href="../SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;sqlQuery)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<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>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>@Nullable <a href="SqlValidatorScope.html" title="interface in org.apache.calcite.sql.validate">SqlValidatorScope</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#getFromScope(org.apache.calcite.sql.SqlSelect)" class="member-name-link">getFromScope</a><wbr>(<a href="../SqlSelect.html" title="class in org.apache.calcite.sql">SqlSelect</a>&nbsp;select)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Returns a scope containing the objects visible from the FROM clause of a
query.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="SqlValidatorScope.html" title="interface in org.apache.calcite.sql.validate">SqlValidatorScope</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#getGroupScope(org.apache.calcite.sql.SqlSelect)" class="member-name-link">getGroupScope</a><wbr>(<a href="../SqlSelect.html" title="class in org.apache.calcite.sql">SqlSelect</a>&nbsp;select)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Returns a scope containing the objects visible from the GROUP BY clause
of a query.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="SqlValidatorScope.html" title="interface in org.apache.calcite.sql.validate">SqlValidatorScope</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#getHavingScope(org.apache.calcite.sql.SqlSelect)" class="member-name-link">getHavingScope</a><wbr>(<a href="../SqlSelect.html" title="class in org.apache.calcite.sql">SqlSelect</a>&nbsp;select)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Returns a scope containing the objects visible from the HAVING clause of
a query.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>@Nullable <a href="SqlValidatorScope.html" title="interface in org.apache.calcite.sql.validate">SqlValidatorScope</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#getJoinScope(org.apache.calcite.sql.SqlNode)" class="member-name-link">getJoinScope</a><wbr>(<a href="../SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;node)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Returns a scope containing the objects visible from the ON and USING
sections of a JOIN clause.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="SqlValidatorScope.html" title="interface in org.apache.calcite.sql.validate">SqlValidatorScope</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#getMatchRecognizeScope(org.apache.calcite.sql.SqlMatchRecognize)" class="member-name-link">getMatchRecognizeScope</a><wbr>(<a href="../SqlMatchRecognize.html" title="class in org.apache.calcite.sql">SqlMatchRecognize</a>&nbsp;node)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Returns a scope match recognize clause.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>@Nullable <a href="SqlValidatorNamespace.html" title="interface in org.apache.calcite.sql.validate">SqlValidatorNamespace</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#getNamespace(org.apache.calcite.sql.SqlNode)" class="member-name-link">getNamespace</a><wbr>(<a href="../SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;node)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Finds the namespace corresponding to a given node.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="../SqlOperatorTable.html" title="interface in org.apache.calcite.sql">SqlOperatorTable</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#getOperatorTable()" class="member-name-link">getOperatorTable</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Returns the operator table used by this validator.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="SqlValidatorScope.html" title="interface in org.apache.calcite.sql.validate">SqlValidatorScope</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#getOrderScope(org.apache.calcite.sql.SqlSelect)" class="member-name-link">getOrderScope</a><wbr>(<a href="../SqlSelect.html" title="class in org.apache.calcite.sql">SqlSelect</a>&nbsp;select)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Returns the scope that expressions in the SELECT and HAVING clause of
this query should use.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="SqlValidatorScope.html" title="interface in org.apache.calcite.sql.validate">SqlValidatorScope</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#getOverScope(org.apache.calcite.sql.SqlNode)" class="member-name-link">getOverScope</a><wbr>(<a href="../SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;node)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Returns the scope of an OVER or VALUES node.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#getParameterRowType(org.apache.calcite.sql.SqlNode)" class="member-name-link">getParameterRowType</a><wbr>(<a href="../SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;sqlQuery)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Returns a record type that contains the name and type of each parameter.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>@Nullable <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#getParentCursor(java.lang.String)" class="member-name-link">getParentCursor</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;columnListParamName)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Retrieves the name of the parent cursor referenced by a column list
parameter.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>@Nullable <a href="SelectScope.html" title="class in org.apache.calcite.sql.validate">SelectScope</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#getRawSelectScope(org.apache.calcite.sql.SqlSelect)" class="member-name-link">getRawSelectScope</a><wbr>(<a href="../SqlSelect.html" title="class in org.apache.calcite.sql">SqlSelect</a>&nbsp;select)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Returns the scope for resolving the SELECT, GROUP BY and HAVING clauses.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="SqlValidatorScope.html" title="interface in org.apache.calcite.sql.validate">SqlValidatorScope</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#getSelectScope(org.apache.calcite.sql.SqlSelect)" class="member-name-link">getSelectScope</a><wbr>(<a href="../SqlSelect.html" title="class in org.apache.calcite.sql">SqlSelect</a>&nbsp;select)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Returns the appropriate scope for validating a particular clause of a
SELECT statement.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="../../rel/type/TimeFrameSet.html" title="class in org.apache.calcite.rel.type">TimeFrameSet</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#getTimeFrameSet()" class="member-name-link">getTimeFrameSet</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Returns the set of allowed time frames.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="implicit/TypeCoercion.html" title="interface in org.apache.calcite.sql.validate.implicit">TypeCoercion</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#getTypeCoercion()" class="member-name-link">getTypeCoercion</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Get the type coercion instance.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="../../rel/type/RelDataTypeFactory.html" title="interface in org.apache.calcite.rel.type">RelDataTypeFactory</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#getTypeFactory()" class="member-name-link">getTypeFactory</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Returns the type factory used by this validator.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#getUnknownType()" class="member-name-link">getUnknownType</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Returns an object representing the "unknown" type.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#getValidatedNodeType(org.apache.calcite.sql.SqlNode)" class="member-name-link">getValidatedNodeType</a><wbr>(<a href="../SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;node)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Returns the type assigned to a node by validation.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>@Nullable <a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#getValidatedNodeTypeIfKnown(org.apache.calcite.sql.SqlNode)" class="member-name-link">getValidatedNodeTypeIfKnown</a><wbr>(<a href="../SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;node)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Returns the type assigned to a node by validation, or null if unknown.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>@Nullable <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&gt;</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#getValidatedOperandTypes(org.apache.calcite.sql.SqlCall)" class="member-name-link">getValidatedOperandTypes</a><wbr>(<a href="../SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a>&nbsp;call)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Returns the types of a call's operands.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="SqlValidatorScope.html" title="interface in org.apache.calcite.sql.validate">SqlValidatorScope</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#getWhereScope(org.apache.calcite.sql.SqlSelect)" class="member-name-link">getWhereScope</a><wbr>(<a href="../SqlSelect.html" title="class in org.apache.calcite.sql">SqlSelect</a>&nbsp;select)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Returns the scope that expressions in the WHERE and GROUP BY clause of
this query should use.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>@Nullable <a href="SqlValidatorScope.html" title="interface in org.apache.calcite.sql.validate">SqlValidatorScope</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#getWithScope(org.apache.calcite.sql.SqlNode)" class="member-name-link">getWithScope</a><wbr>(<a href="../SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;withItem)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">&nbsp;</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="../../runtime/CalciteException.html" title="class in org.apache.calcite.runtime">CalciteException</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#handleUnresolvedFunction(org.apache.calcite.sql.SqlCall,org.apache.calcite.sql.SqlOperator,java.util.List,java.util.List)" class="member-name-link">handleUnresolvedFunction</a><wbr>(<a href="../SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a>&nbsp;call,
<a href="../SqlOperator.html" title="class in org.apache.calcite.sql">SqlOperator</a>&nbsp;unresolvedFunction,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&gt;&nbsp;argTypes,
@Nullable <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;&nbsp;argNames)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Handles a call to a function which cannot be resolved.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3 method-summary-table-tab6"><code>boolean</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3 method-summary-table-tab6"><code><a href="#isAggregate(org.apache.calcite.sql.SqlNode)" class="member-name-link">isAggregate</a><wbr>(<a href="../SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;selectNode)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3 method-summary-table-tab6">
<div class="block"><span class="deprecated-label">Deprecated.</span></div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>boolean</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#isAggregate(org.apache.calcite.sql.SqlSelect)" class="member-name-link">isAggregate</a><wbr>(<a href="../SqlSelect.html" title="class in org.apache.calcite.sql">SqlSelect</a>&nbsp;select)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Returns whether a SELECT statement is an aggregation.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>boolean</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#isSystemField(org.apache.calcite.rel.type.RelDataTypeField)" class="member-name-link">isSystemField</a><wbr>(<a href="../../rel/type/RelDataTypeField.html" title="interface in org.apache.calcite.rel.type">RelDataTypeField</a>&nbsp;field)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Returns whether a field is a system field.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>@Nullable <a href="../SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#makeNullaryCall(org.apache.calcite.sql.SqlIdentifier)" class="member-name-link">makeNullaryCall</a><wbr>(<a href="../SqlIdentifier.html" title="class in org.apache.calcite.sql">SqlIdentifier</a>&nbsp;id)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<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>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="../../runtime/CalciteContextException.html" title="class in org.apache.calcite.runtime">CalciteContextException</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#newValidationError(org.apache.calcite.sql.SqlNode,org.apache.calcite.runtime.Resources.ExInst)" class="member-name-link">newValidationError</a><wbr>(<a href="../SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;node,
org.apache.calcite.runtime.Resources.ExInst&lt;<a href="SqlValidatorException.html" title="class in org.apache.calcite.sql.validate">SqlValidatorException</a>&gt;&nbsp;e)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Adds "line x, column y" context to a validator exception.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#popFunctionCall()" class="member-name-link">popFunctionCall</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Removes the topmost entry from the function call stack.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#pushFunctionCall()" class="member-name-link">pushFunctionCall</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Pushes a new instance of a function call on to a function call stack.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#removeValidatedNodeType(org.apache.calcite.sql.SqlNode)" class="member-name-link">removeValidatedNodeType</a><wbr>(<a href="../SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;node)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Removes a node from the set of validated nodes.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="../SqlLiteral.html" title="class in org.apache.calcite.sql">SqlLiteral</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#resolveLiteral(org.apache.calcite.sql.SqlLiteral)" class="member-name-link">resolveLiteral</a><wbr>(<a href="../SqlLiteral.html" title="class in org.apache.calcite.sql">SqlLiteral</a>&nbsp;literal)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Resolves a literal.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="../SqlWindow.html" title="class in org.apache.calcite.sql">SqlWindow</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#resolveWindow(org.apache.calcite.sql.SqlNode,org.apache.calcite.sql.validate.SqlValidatorScope)" class="member-name-link">resolveWindow</a><wbr>(<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)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Converts a window specification or window name into a fully-resolved
window specification.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5 method-summary-table-tab6"><code>default <a href="../SqlWindow.html" title="class in org.apache.calcite.sql">SqlWindow</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5 method-summary-table-tab6"><code><a href="#resolveWindow(org.apache.calcite.sql.SqlNode,org.apache.calcite.sql.validate.SqlValidatorScope,boolean)" class="member-name-link">resolveWindow</a><wbr>(<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></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5 method-summary-table-tab6">
<div class="block"><span class="deprecated-label">Deprecated.</span>
<div class="deprecation-comment">Use <a href="#resolveWindow(org.apache.calcite.sql.SqlNode,org.apache.calcite.sql.validate.SqlValidatorScope)"><code>resolveWindow(SqlNode, SqlValidatorScope)</code></a>, which
does not have the deprecated <code>populateBounds</code> parameter.</div>
</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#setValidatedNodeType(org.apache.calcite.sql.SqlNode,org.apache.calcite.rel.type.RelDataType)" class="member-name-link">setValidatedNodeType</a><wbr>(<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></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<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>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="SqlValidator.html" title="interface in org.apache.calcite.sql.validate">SqlValidator</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#transform(java.util.function.UnaryOperator)" class="member-name-link">transform</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/UnaryOperator.html" title="class or interface in java.util.function" class="external-link">UnaryOperator</a>&lt;<a href="SqlValidator.Config.html" title="interface in org.apache.calcite.sql.validate">SqlValidator.Config</a>&gt;&nbsp;transform)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Returns this SqlValidator, with the same state, applying
a transform to the config.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="../SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#validate(org.apache.calcite.sql.SqlNode)" class="member-name-link">validate</a><wbr>(<a href="../SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;topNode)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Validates an expression tree.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#validateAggregateParams(org.apache.calcite.sql.SqlCall,org.apache.calcite.sql.SqlNode,org.apache.calcite.sql.SqlNodeList,org.apache.calcite.sql.SqlNodeList,org.apache.calcite.sql.validate.SqlValidatorScope)" class="member-name-link">validateAggregateParams</a><wbr>(<a href="../SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a>&nbsp;aggCall,
@Nullable <a href="../SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;filter,
@Nullable <a href="../SqlNodeList.html" title="class in org.apache.calcite.sql">SqlNodeList</a>&nbsp;distinctList,
@Nullable <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></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Validates parameters for aggregate function.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#validateCall(org.apache.calcite.sql.SqlCall,org.apache.calcite.sql.validate.SqlValidatorScope)" class="member-name-link">validateCall</a><wbr>(<a href="../SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a>&nbsp;call,
<a href="SqlValidatorScope.html" title="interface in org.apache.calcite.sql.validate">SqlValidatorScope</a>&nbsp;scope)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Validates a call to an operator.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#validateColumnListParams(org.apache.calcite.sql.SqlFunction,java.util.List,java.util.List)" class="member-name-link">validateColumnListParams</a><wbr>(<a href="../SqlFunction.html" title="class in org.apache.calcite.sql">SqlFunction</a>&nbsp;function,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&gt;&nbsp;argTypes,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="../SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&gt;&nbsp;operands)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Validates a COLUMN_LIST parameter.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#validateDataType(org.apache.calcite.sql.SqlDataTypeSpec)" class="member-name-link">validateDataType</a><wbr>(<a href="../SqlDataTypeSpec.html" title="class in org.apache.calcite.sql">SqlDataTypeSpec</a>&nbsp;dataType)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Validates a data type expression.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#validateDelete(org.apache.calcite.sql.SqlDelete)" class="member-name-link">validateDelete</a><wbr>(<a href="../SqlDelete.html" title="class in org.apache.calcite.sql">SqlDelete</a>&nbsp;delete)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Validates a DELETE statement.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#validateDynamicParam(org.apache.calcite.sql.SqlDynamicParam)" class="member-name-link">validateDynamicParam</a><wbr>(<a href="../SqlDynamicParam.html" title="class in org.apache.calcite.sql">SqlDynamicParam</a>&nbsp;dynamicParam)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Validates a dynamic parameter.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#validateIdentifier(org.apache.calcite.sql.SqlIdentifier,org.apache.calcite.sql.validate.SqlValidatorScope)" class="member-name-link">validateIdentifier</a><wbr>(<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></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Resolves an identifier to a fully-qualified name.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#validateInsert(org.apache.calcite.sql.SqlInsert)" class="member-name-link">validateInsert</a><wbr>(<a href="../SqlInsert.html" title="class in org.apache.calcite.sql">SqlInsert</a>&nbsp;insert)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Validates an INSERT statement.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#validateIntervalQualifier(org.apache.calcite.sql.SqlIntervalQualifier)" class="member-name-link">validateIntervalQualifier</a><wbr>(<a href="../SqlIntervalQualifier.html" title="class in org.apache.calcite.sql">SqlIntervalQualifier</a>&nbsp;qualifier)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Validates a <a href="../SqlIntervalQualifier.html" title="class in org.apache.calcite.sql"><code>SqlIntervalQualifier</code></a>.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#validateLiteral(org.apache.calcite.sql.SqlLiteral)" class="member-name-link">validateLiteral</a><wbr>(<a href="../SqlLiteral.html" title="class in org.apache.calcite.sql">SqlLiteral</a>&nbsp;literal)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Validates a literal.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#validateMatchRecognize(org.apache.calcite.sql.SqlCall)" class="member-name-link">validateMatchRecognize</a><wbr>(<a href="../SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a>&nbsp;pattern)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Validates a MATCH_RECOGNIZE clause.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#validateMerge(org.apache.calcite.sql.SqlMerge)" class="member-name-link">validateMerge</a><wbr>(<a href="../SqlMerge.html" title="class in org.apache.calcite.sql">SqlMerge</a>&nbsp;merge)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Validates a MERGE statement.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>boolean</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#validateModality(org.apache.calcite.sql.SqlSelect,org.apache.calcite.sql.validate.SqlModality,boolean)" class="member-name-link">validateModality</a><wbr>(<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></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Validates that a query is capable of producing a return of given modality
(relational or streaming).</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="../SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#validateParameterizedExpression(org.apache.calcite.sql.SqlNode,java.util.Map)" class="member-name-link">validateParameterizedExpression</a><wbr>(<a href="../SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;topNode,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&gt;&nbsp;nameToTypeMap)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Validates an expression tree.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#validateQuery(org.apache.calcite.sql.SqlNode,org.apache.calcite.sql.validate.SqlValidatorScope,org.apache.calcite.rel.type.RelDataType)" class="member-name-link">validateQuery</a><wbr>(<a href="../SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;node,
@Nullable <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></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Checks that a query is valid.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#validateSequenceValue(org.apache.calcite.sql.validate.SqlValidatorScope,org.apache.calcite.sql.SqlIdentifier)" class="member-name-link">validateSequenceValue</a><wbr>(<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></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">&nbsp;</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="../../rel/type/TimeFrame.html" title="interface in org.apache.calcite.rel.type">TimeFrame</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#validateTimeFrame(org.apache.calcite.sql.SqlIntervalQualifier)" class="member-name-link">validateTimeFrame</a><wbr>(<a href="../SqlIntervalQualifier.html" title="class in org.apache.calcite.sql">SqlIntervalQualifier</a>&nbsp;intervalQualifier)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Validates a time frame.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#validateUpdate(org.apache.calcite.sql.SqlUpdate)" class="member-name-link">validateUpdate</a><wbr>(<a href="../SqlUpdate.html" title="class in org.apache.calcite.sql">SqlUpdate</a>&nbsp;update)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Validates an UPDATE statement.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#validateWindow(org.apache.calcite.sql.SqlNode,org.apache.calcite.sql.validate.SqlValidatorScope,org.apache.calcite.sql.SqlCall)" class="member-name-link">validateWindow</a><wbr>(<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,
@Nullable <a href="../SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a>&nbsp;call)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Validates the right-hand side of an OVER expression.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#validateWith(org.apache.calcite.sql.SqlWith,org.apache.calcite.sql.validate.SqlValidatorScope)" class="member-name-link">validateWith</a><wbr>(<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></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">&nbsp;</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#validateWithItem(org.apache.calcite.sql.SqlWithItem)" class="member-name-link">validateWithItem</a><wbr>(<a href="../SqlWithItem.html" title="class in org.apache.calcite.sql">SqlWithItem</a>&nbsp;withItem)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">&nbsp;</div>
</div>
</div>
</div>
</section>
</li>
</ul>
</section>
<section class="details">
<ul class="details-list">
<!-- ============ METHOD DETAIL ========== -->
<li>
<section class="method-details" id="method-detail">
<h2>Method Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="getCatalogReader()">
<h3>getCatalogReader</h3>
<div class="member-signature"><span class="annotations">@Pure
</span><span class="return-type"><a href="SqlValidatorCatalogReader.html" title="interface in org.apache.calcite.sql.validate">SqlValidatorCatalogReader</a></span>&nbsp;<span class="element-name">getCatalogReader</span>()</div>
<div class="block">Returns the catalog reader used by this validator.</div>
<dl class="notes">
<dt>Returns:</dt>
<dd>catalog reader</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="getOperatorTable()">
<h3>getOperatorTable</h3>
<div class="member-signature"><span class="annotations">@Pure
</span><span class="return-type"><a href="../SqlOperatorTable.html" title="interface in org.apache.calcite.sql">SqlOperatorTable</a></span>&nbsp;<span class="element-name">getOperatorTable</span>()</div>
<div class="block">Returns the operator table used by this validator.</div>
<dl class="notes">
<dt>Returns:</dt>
<dd>operator table</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="validate(org.apache.calcite.sql.SqlNode)">
<h3>validate</h3>
<div class="member-signature"><span class="return-type"><a href="../SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a></span>&nbsp;<span class="element-name">validate</span><wbr><span class="parameters">(<a href="../SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;topNode)</span></div>
<div class="block">Validates an expression tree. You can call this method multiple times,
but not reentrantly.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>topNode</code> - top of expression tree to be validated</dd>
<dt>Returns:</dt>
<dd>validated tree (possibly rewritten)</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="validateParameterizedExpression(org.apache.calcite.sql.SqlNode,java.util.Map)">
<h3>validateParameterizedExpression</h3>
<div class="member-signature"><span class="return-type"><a href="../SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a></span>&nbsp;<span class="element-name">validateParameterizedExpression</span><wbr><span class="parameters">(<a href="../SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;topNode,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&gt;&nbsp;nameToTypeMap)</span></div>
<div class="block">Validates an expression tree. You can call this method multiple times,
but not reentrantly.</div>
<dl class="notes">
<dt>Parameters:</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>Returns:</dt>
<dd>validated tree (possibly rewritten)</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="validateQuery(org.apache.calcite.sql.SqlNode,org.apache.calcite.sql.validate.SqlValidatorScope,org.apache.calcite.rel.type.RelDataType)">
<h3>validateQuery</h3>
<div class="member-signature"><span class="return-type">void</span>&nbsp;<span class="element-name">validateQuery</span><wbr><span class="parameters">(<a href="../SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;node,
@Nullable <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)</span></div>
<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 class="notes">
<dt>Parameters:</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>Throws:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/RuntimeException.html" title="class or interface in java.lang" class="external-link">RuntimeException</a></code> - if the query is not valid</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="getValidatedNodeType(org.apache.calcite.sql.SqlNode)">
<h3>getValidatedNodeType</h3>
<div class="member-signature"><span class="return-type"><a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></span>&nbsp;<span class="element-name">getValidatedNodeType</span><wbr><span class="parameters">(<a href="../SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;node)</span></div>
<div class="block">Returns the type assigned to a node by validation.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>node</code> - the node of interest</dd>
<dt>Returns:</dt>
<dd>validated type, never null</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="getValidatedNodeTypeIfKnown(org.apache.calcite.sql.SqlNode)">
<h3>getValidatedNodeTypeIfKnown</h3>
<div class="member-signature"><span class="return-type">@Nullable <a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></span>&nbsp;<span class="element-name">getValidatedNodeTypeIfKnown</span><wbr><span class="parameters">(<a href="../SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;node)</span></div>
<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 class="notes">
<dt>Parameters:</dt>
<dd><code>node</code> - the node of interest</dd>
<dt>Returns:</dt>
<dd>validated type, or null if unknown or not applicable</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="getValidatedOperandTypes(org.apache.calcite.sql.SqlCall)">
<h3>getValidatedOperandTypes</h3>
<div class="member-signature"><span class="return-type">@Nullable <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&gt;</span>&nbsp;<span class="element-name">getValidatedOperandTypes</span><wbr><span class="parameters">(<a href="../SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a>&nbsp;call)</span></div>
<div class="block">Returns the types of a call's operands.
<p>Returns null if the call has not been validated, or if the operands'
types do not differ from their types as expressions.
<p>This method is most useful when some of the operands are of type ANY,
or if they need to be coerced to be consistent with other operands, or
with the needs of the function.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>call</code> - Call</dd>
<dt>Returns:</dt>
<dd>List of operands' types, or null if not known or 'obvious'</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="validateIdentifier(org.apache.calcite.sql.SqlIdentifier,org.apache.calcite.sql.validate.SqlValidatorScope)">
<h3>validateIdentifier</h3>
<div class="member-signature"><span class="return-type">void</span>&nbsp;<span class="element-name">validateIdentifier</span><wbr><span class="parameters">(<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)</span></div>
<div class="block">Resolves an identifier to a fully-qualified name.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>id</code> - Identifier</dd>
<dd><code>scope</code> - Naming scope</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="validateLiteral(org.apache.calcite.sql.SqlLiteral)">
<h3>validateLiteral</h3>
<div class="member-signature"><span class="return-type">void</span>&nbsp;<span class="element-name">validateLiteral</span><wbr><span class="parameters">(<a href="../SqlLiteral.html" title="class in org.apache.calcite.sql">SqlLiteral</a>&nbsp;literal)</span></div>
<div class="block">Validates a literal.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>literal</code> - Literal</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="validateIntervalQualifier(org.apache.calcite.sql.SqlIntervalQualifier)">
<h3>validateIntervalQualifier</h3>
<div class="member-signature"><span class="return-type">void</span>&nbsp;<span class="element-name">validateIntervalQualifier</span><wbr><span class="parameters">(<a href="../SqlIntervalQualifier.html" title="class in org.apache.calcite.sql">SqlIntervalQualifier</a>&nbsp;qualifier)</span></div>
<div class="block">Validates a <a href="../SqlIntervalQualifier.html" title="class in org.apache.calcite.sql"><code>SqlIntervalQualifier</code></a>.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>qualifier</code> - Interval qualifier</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="validateInsert(org.apache.calcite.sql.SqlInsert)">
<h3>validateInsert</h3>
<div class="member-signature"><span class="return-type">void</span>&nbsp;<span class="element-name">validateInsert</span><wbr><span class="parameters">(<a href="../SqlInsert.html" title="class in org.apache.calcite.sql">SqlInsert</a>&nbsp;insert)</span></div>
<div class="block">Validates an INSERT statement.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>insert</code> - INSERT statement</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="validateUpdate(org.apache.calcite.sql.SqlUpdate)">
<h3>validateUpdate</h3>
<div class="member-signature"><span class="return-type">void</span>&nbsp;<span class="element-name">validateUpdate</span><wbr><span class="parameters">(<a href="../SqlUpdate.html" title="class in org.apache.calcite.sql">SqlUpdate</a>&nbsp;update)</span></div>
<div class="block">Validates an UPDATE statement.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>update</code> - UPDATE statement</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="validateDelete(org.apache.calcite.sql.SqlDelete)">
<h3>validateDelete</h3>
<div class="member-signature"><span class="return-type">void</span>&nbsp;<span class="element-name">validateDelete</span><wbr><span class="parameters">(<a href="../SqlDelete.html" title="class in org.apache.calcite.sql">SqlDelete</a>&nbsp;delete)</span></div>
<div class="block">Validates a DELETE statement.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>delete</code> - DELETE statement</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="validateMerge(org.apache.calcite.sql.SqlMerge)">
<h3>validateMerge</h3>
<div class="member-signature"><span class="return-type">void</span>&nbsp;<span class="element-name">validateMerge</span><wbr><span class="parameters">(<a href="../SqlMerge.html" title="class in org.apache.calcite.sql">SqlMerge</a>&nbsp;merge)</span></div>
<div class="block">Validates a MERGE statement.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>merge</code> - MERGE statement</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="validateDataType(org.apache.calcite.sql.SqlDataTypeSpec)">
<h3>validateDataType</h3>
<div class="member-signature"><span class="return-type">void</span>&nbsp;<span class="element-name">validateDataType</span><wbr><span class="parameters">(<a href="../SqlDataTypeSpec.html" title="class in org.apache.calcite.sql">SqlDataTypeSpec</a>&nbsp;dataType)</span></div>
<div class="block">Validates a data type expression.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>dataType</code> - Data type</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="validateDynamicParam(org.apache.calcite.sql.SqlDynamicParam)">
<h3>validateDynamicParam</h3>
<div class="member-signature"><span class="return-type">void</span>&nbsp;<span class="element-name">validateDynamicParam</span><wbr><span class="parameters">(<a href="../SqlDynamicParam.html" title="class in org.apache.calcite.sql">SqlDynamicParam</a>&nbsp;dynamicParam)</span></div>
<div class="block">Validates a dynamic parameter.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>dynamicParam</code> - Dynamic parameter</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="validateWindow(org.apache.calcite.sql.SqlNode,org.apache.calcite.sql.validate.SqlValidatorScope,org.apache.calcite.sql.SqlCall)">
<h3>validateWindow</h3>
<div class="member-signature"><span class="return-type">void</span>&nbsp;<span class="element-name">validateWindow</span><wbr><span class="parameters">(<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,
@Nullable <a href="../SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a>&nbsp;call)</span></div>
<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 class="notes">
<dt>Parameters:</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>
</section>
</li>
<li>
<section class="detail" id="validateMatchRecognize(org.apache.calcite.sql.SqlCall)">
<h3>validateMatchRecognize</h3>
<div class="member-signature"><span class="return-type">void</span>&nbsp;<span class="element-name">validateMatchRecognize</span><wbr><span class="parameters">(<a href="../SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a>&nbsp;pattern)</span></div>
<div class="block">Validates a MATCH_RECOGNIZE clause.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>pattern</code> - MATCH_RECOGNIZE clause</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="validateCall(org.apache.calcite.sql.SqlCall,org.apache.calcite.sql.validate.SqlValidatorScope)">
<h3>validateCall</h3>
<div class="member-signature"><span class="return-type">void</span>&nbsp;<span class="element-name">validateCall</span><wbr><span class="parameters">(<a href="../SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a>&nbsp;call,
<a href="SqlValidatorScope.html" title="interface in org.apache.calcite.sql.validate">SqlValidatorScope</a>&nbsp;scope)</span></div>
<div class="block">Validates a call to an operator.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>call</code> - Operator call</dd>
<dd><code>scope</code> - Naming scope</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="validateAggregateParams(org.apache.calcite.sql.SqlCall,org.apache.calcite.sql.SqlNode,org.apache.calcite.sql.SqlNodeList,org.apache.calcite.sql.SqlNodeList,org.apache.calcite.sql.validate.SqlValidatorScope)">
<h3>validateAggregateParams</h3>
<div class="member-signature"><span class="return-type">void</span>&nbsp;<span class="element-name">validateAggregateParams</span><wbr><span class="parameters">(<a href="../SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a>&nbsp;aggCall,
@Nullable <a href="../SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;filter,
@Nullable <a href="../SqlNodeList.html" title="class in org.apache.calcite.sql">SqlNodeList</a>&nbsp;distinctList,
@Nullable <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)</span></div>
<div class="block">Validates parameters for aggregate function.</div>
<dl class="notes">
<dt>Parameters:</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>distinctList</code> - Distinct specification (<code>WITHIN DISTINCT</code>
clause), or null</dd>
<dd><code>orderList</code> - Ordering specification (<code>WITHIN GROUP</code> clause),
or null</dd>
<dd><code>scope</code> - Syntactic scope</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="validateColumnListParams(org.apache.calcite.sql.SqlFunction,java.util.List,java.util.List)">
<h3>validateColumnListParams</h3>
<div class="member-signature"><span class="return-type">void</span>&nbsp;<span class="element-name">validateColumnListParams</span><wbr><span class="parameters">(<a href="../SqlFunction.html" title="class in org.apache.calcite.sql">SqlFunction</a>&nbsp;function,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&gt;&nbsp;argTypes,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="../SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&gt;&nbsp;operands)</span></div>
<div class="block">Validates a COLUMN_LIST parameter.</div>
<dl class="notes">
<dt>Parameters:</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>
</section>
</li>
<li>
<section class="detail" id="makeNullaryCall(org.apache.calcite.sql.SqlIdentifier)">
<h3>makeNullaryCall</h3>
<div class="member-signature"><span class="return-type">@Nullable <a href="../SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a></span>&nbsp;<span class="element-name">makeNullaryCall</span><wbr><span class="parameters">(<a href="../SqlIdentifier.html" title="class in org.apache.calcite.sql">SqlIdentifier</a>&nbsp;id)</span></div>
<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>
</section>
</li>
<li>
<section class="detail" id="deriveType(org.apache.calcite.sql.validate.SqlValidatorScope,org.apache.calcite.sql.SqlNode)">
<h3>deriveType</h3>
<div class="member-signature"><span class="return-type"><a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></span>&nbsp;<span class="element-name">deriveType</span><wbr><span class="parameters">(<a href="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)</span></div>
<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 class="notes">
<dt>Parameters:</dt>
<dd><code>scope</code> - Syntactic scope</dd>
<dd><code>operand</code> - Parse tree node</dd>
<dt>Returns:</dt>
<dd>Type of the SqlNode. Should never return <code>NULL</code></dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="newValidationError(org.apache.calcite.sql.SqlNode,org.apache.calcite.runtime.Resources.ExInst)">
<h3>newValidationError</h3>
<div class="member-signature"><span class="return-type"><a href="../../runtime/CalciteContextException.html" title="class in org.apache.calcite.runtime">CalciteContextException</a></span>&nbsp;<span class="element-name">newValidationError</span><wbr><span class="parameters">(<a href="../SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;node,
org.apache.calcite.runtime.Resources.ExInst&lt;<a href="SqlValidatorException.html" title="class in org.apache.calcite.sql.validate">SqlValidatorException</a>&gt;&nbsp;e)</span></div>
<div class="block">Adds "line x, column y" context to a validator exception.
<p>Note that the input exception is checked (it derives from
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link"><code>Exception</code></a>) and the output exception is unchecked (it derives from
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/RuntimeException.html" title="class or interface in java.lang" class="external-link"><code>RuntimeException</code></a>). This is intentional -- it should remind code
authors to provide context for their validation errors.</p></div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>node</code> - The place where the exception occurred, not null</dd>
<dd><code>e</code> - The validation error</dd>
<dt>Returns:</dt>
<dd>Exception containing positional information, never null</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="isAggregate(org.apache.calcite.sql.SqlSelect)">
<h3>isAggregate</h3>
<div class="member-signature"><span class="return-type">boolean</span>&nbsp;<span class="element-name">isAggregate</span><wbr><span class="parameters">(<a href="../SqlSelect.html" title="class in org.apache.calcite.sql">SqlSelect</a>&nbsp;select)</span></div>
<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 class="notes">
<dt>Parameters:</dt>
<dd><code>select</code> - SELECT statement</dd>
<dt>Returns:</dt>
<dd>whether SELECT statement is an aggregation</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="isAggregate(org.apache.calcite.sql.SqlNode)">
<h3>isAggregate</h3>
<div class="member-signature"><span class="annotations"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Deprecated.html" title="class or interface in java.lang" class="external-link">@Deprecated</a>
</span><span class="return-type">boolean</span>&nbsp;<span class="element-name">isAggregate</span><wbr><span class="parameters">(<a href="../SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;selectNode)</span></div>
<div class="deprecation-block"><span class="deprecated-label">Deprecated.</span></div>
<div class="block">Returns whether a select list expression is an aggregate function.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>selectNode</code> - Expression in SELECT clause</dd>
<dt>Returns:</dt>
<dd>whether expression is an aggregate function</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="resolveWindow(org.apache.calcite.sql.SqlNode,org.apache.calcite.sql.validate.SqlValidatorScope)">
<h3>resolveWindow</h3>
<div class="member-signature"><span class="return-type"><a href="../SqlWindow.html" title="class in org.apache.calcite.sql">SqlWindow</a></span>&nbsp;<span class="element-name">resolveWindow</span><wbr><span class="parameters">(<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)</span></div>
<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 class="notes">
<dt>Parameters:</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>
<dt>Returns:</dt>
<dd>A window</dd>
<dt>Throws:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/RuntimeException.html" title="class or interface in java.lang" class="external-link">RuntimeException</a></code> - Validation exception if window does not exist</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="resolveWindow(org.apache.calcite.sql.SqlNode,org.apache.calcite.sql.validate.SqlValidatorScope,boolean)">
<h3>resolveWindow</h3>
<div class="member-signature"><span class="annotations"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Deprecated.html" title="class or interface in java.lang" class="external-link">@Deprecated</a>
</span><span class="modifiers">default</span>&nbsp;<span class="return-type"><a href="../SqlWindow.html" title="class in org.apache.calcite.sql">SqlWindow</a></span>&nbsp;<span class="element-name">resolveWindow</span><wbr><span class="parameters">(<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)</span></div>
<div class="deprecation-block"><span class="deprecated-label">Deprecated.</span>
<div class="deprecation-comment">Use <a href="#resolveWindow(org.apache.calcite.sql.SqlNode,org.apache.calcite.sql.validate.SqlValidatorScope)"><code>resolveWindow(SqlNode, SqlValidatorScope)</code></a>, which
does not have the deprecated <code>populateBounds</code> parameter.</div>
</div>
<div class="block">Converts a window specification or window name into a fully-resolved
window specification.</div>
<dl class="notes">
<dt>Parameters:</dt>
<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>
</dl>
</section>
</li>
<li>
<section class="detail" id="getNamespace(org.apache.calcite.sql.SqlNode)">
<h3>getNamespace</h3>
<div class="member-signature"><span class="return-type">@Nullable <a href="SqlValidatorNamespace.html" title="interface in org.apache.calcite.sql.validate">SqlValidatorNamespace</a></span>&nbsp;<span class="element-name">getNamespace</span><wbr><span class="parameters">(<a href="../SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;node)</span></div>
<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 class="notes">
<dt>Parameters:</dt>
<dd><code>node</code> - Parse tree node</dd>
<dt>Returns:</dt>
<dd>namespace of node</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="deriveAlias(org.apache.calcite.sql.SqlNode,int)">
<h3>deriveAlias</h3>
<div class="member-signature"><span class="return-type">@Nullable <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">deriveAlias</span><wbr><span class="parameters">(<a href="../SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;node,
int&nbsp;ordinal)</span></div>
<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 class="notes">
<dt>Parameters:</dt>
<dd><code>node</code> - Expression</dd>
<dd><code>ordinal</code> - Ordinal of expression</dd>
<dt>Returns:</dt>
<dd>derived alias, or null if no alias can be derived and ordinal is
less than zero</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="expandStar(org.apache.calcite.sql.SqlNodeList,org.apache.calcite.sql.SqlSelect,boolean)">
<h3>expandStar</h3>
<div class="member-signature"><span class="return-type"><a href="../SqlNodeList.html" title="class in org.apache.calcite.sql">SqlNodeList</a></span>&nbsp;<span class="element-name">expandStar</span><wbr><span class="parameters">(<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)</span></div>
<div class="block">Returns a list of expressions, with every occurrence of "&#42;" or
"TABLE.&#42;" expanded.</div>
<dl class="notes">
<dt>Parameters:</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>Returns:</dt>
<dd>expanded select clause</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="getWhereScope(org.apache.calcite.sql.SqlSelect)">
<h3>getWhereScope</h3>
<div class="member-signature"><span class="return-type"><a href="SqlValidatorScope.html" title="interface in org.apache.calcite.sql.validate">SqlValidatorScope</a></span>&nbsp;<span class="element-name">getWhereScope</span><wbr><span class="parameters">(<a href="../SqlSelect.html" title="class in org.apache.calcite.sql">SqlSelect</a>&nbsp;select)</span></div>
<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 class="notes">
<dt>Parameters:</dt>
<dd><code>select</code> - Query</dd>
<dt>Returns:</dt>
<dd>naming scope of WHERE clause</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="getTypeFactory()">
<h3>getTypeFactory</h3>
<div class="member-signature"><span class="annotations">@Pure
</span><span class="return-type"><a href="../../rel/type/RelDataTypeFactory.html" title="interface in org.apache.calcite.rel.type">RelDataTypeFactory</a></span>&nbsp;<span class="element-name">getTypeFactory</span>()</div>
<div class="block">Returns the type factory used by this validator.</div>
<dl class="notes">
<dt>Returns:</dt>
<dd>type factory</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="setValidatedNodeType(org.apache.calcite.sql.SqlNode,org.apache.calcite.rel.type.RelDataType)">
<h3>setValidatedNodeType</h3>
<div class="member-signature"><span class="annotations">@API(status=INTERNAL,
since="1.24")
</span><span class="return-type">void</span>&nbsp;<span class="element-name">setValidatedNodeType</span><wbr><span class="parameters">(<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)</span></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.
<p>This method is only for internal use. The validator should drive the
type-derivation process, and store nodes' types when they have been derived.</div>
<dl class="notes">
<dt>Parameters:</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>
</section>
</li>
<li>
<section class="detail" id="removeValidatedNodeType(org.apache.calcite.sql.SqlNode)">
<h3>removeValidatedNodeType</h3>
<div class="member-signature"><span class="return-type">void</span>&nbsp;<span class="element-name">removeValidatedNodeType</span><wbr><span class="parameters">(<a href="../SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;node)</span></div>
<div class="block">Removes a node from the set of validated nodes.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>node</code> - node to be removed</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="getUnknownType()">
<h3>getUnknownType</h3>
<div class="member-signature"><span class="return-type"><a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></span>&nbsp;<span class="element-name">getUnknownType</span>()</div>
<div class="block">Returns an object representing the "unknown" type.</div>
<dl class="notes">
<dt>Returns:</dt>
<dd>unknown type</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="getSelectScope(org.apache.calcite.sql.SqlSelect)">
<h3>getSelectScope</h3>
<div class="member-signature"><span class="return-type"><a href="SqlValidatorScope.html" title="interface in org.apache.calcite.sql.validate">SqlValidatorScope</a></span>&nbsp;<span class="element-name">getSelectScope</span><wbr><span class="parameters">(<a href="../SqlSelect.html" title="class in org.apache.calcite.sql">SqlSelect</a>&nbsp;select)</span></div>
<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 class="notes">
<dt>Parameters:</dt>
<dd><code>select</code> - SELECT statement</dd>
<dt>Returns:</dt>
<dd>naming scope for SELECT statement</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="getRawSelectScope(org.apache.calcite.sql.SqlSelect)">
<h3>getRawSelectScope</h3>
<div class="member-signature"><span class="return-type">@Nullable <a href="SelectScope.html" title="class in org.apache.calcite.sql.validate">SelectScope</a></span>&nbsp;<span class="element-name">getRawSelectScope</span><wbr><span class="parameters">(<a href="../SqlSelect.html" title="class in org.apache.calcite.sql">SqlSelect</a>&nbsp;select)</span></div>
<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 class="notes">
<dt>Parameters:</dt>
<dd><code>select</code> - SELECT statement</dd>
<dt>Returns:</dt>
<dd>naming scope for SELECT statement, sans any aggregating scope</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="getFromScope(org.apache.calcite.sql.SqlSelect)">
<h3>getFromScope</h3>
<div class="member-signature"><span class="return-type">@Nullable <a href="SqlValidatorScope.html" title="interface in org.apache.calcite.sql.validate">SqlValidatorScope</a></span>&nbsp;<span class="element-name">getFromScope</span><wbr><span class="parameters">(<a href="../SqlSelect.html" title="class in org.apache.calcite.sql">SqlSelect</a>&nbsp;select)</span></div>
<div class="block">Returns a scope containing the objects visible from the FROM clause of a
query.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>select</code> - SELECT statement</dd>
<dt>Returns:</dt>
<dd>naming scope for FROM clause</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="getJoinScope(org.apache.calcite.sql.SqlNode)">
<h3>getJoinScope</h3>
<div class="member-signature"><span class="return-type">@Nullable <a href="SqlValidatorScope.html" title="interface in org.apache.calcite.sql.validate">SqlValidatorScope</a></span>&nbsp;<span class="element-name">getJoinScope</span><wbr><span class="parameters">(<a href="../SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;node)</span></div>
<div class="block">Returns a scope containing the objects visible from the ON and USING
sections of a JOIN clause.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>node</code> - The item in the FROM clause which contains the ON or USING
expression</dd>
<dt>Returns:</dt>
<dd>naming scope for JOIN clause</dd>
<dt>See Also:</dt>
<dd>
<ul class="see-list-long">
<li><a href="#getFromScope(org.apache.calcite.sql.SqlSelect)"><code>getFromScope(org.apache.calcite.sql.SqlSelect)</code></a></li>
</ul>
</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="getGroupScope(org.apache.calcite.sql.SqlSelect)">
<h3>getGroupScope</h3>
<div class="member-signature"><span class="return-type"><a href="SqlValidatorScope.html" title="interface in org.apache.calcite.sql.validate">SqlValidatorScope</a></span>&nbsp;<span class="element-name">getGroupScope</span><wbr><span class="parameters">(<a href="../SqlSelect.html" title="class in org.apache.calcite.sql">SqlSelect</a>&nbsp;select)</span></div>
<div class="block">Returns a scope containing the objects visible from the GROUP BY clause
of a query.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>select</code> - SELECT statement</dd>
<dt>Returns:</dt>
<dd>naming scope for GROUP BY clause</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="getHavingScope(org.apache.calcite.sql.SqlSelect)">
<h3>getHavingScope</h3>
<div class="member-signature"><span class="return-type"><a href="SqlValidatorScope.html" title="interface in org.apache.calcite.sql.validate">SqlValidatorScope</a></span>&nbsp;<span class="element-name">getHavingScope</span><wbr><span class="parameters">(<a href="../SqlSelect.html" title="class in org.apache.calcite.sql">SqlSelect</a>&nbsp;select)</span></div>
<div class="block">Returns a scope containing the objects visible from the HAVING clause of
a query.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>select</code> - SELECT statement</dd>
<dt>Returns:</dt>
<dd>naming scope for HAVING clause</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="getOrderScope(org.apache.calcite.sql.SqlSelect)">
<h3>getOrderScope</h3>
<div class="member-signature"><span class="return-type"><a href="SqlValidatorScope.html" title="interface in org.apache.calcite.sql.validate">SqlValidatorScope</a></span>&nbsp;<span class="element-name">getOrderScope</span><wbr><span class="parameters">(<a href="../SqlSelect.html" title="class in org.apache.calcite.sql">SqlSelect</a>&nbsp;select)</span></div>
<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 class="notes">
<dt>Parameters:</dt>
<dd><code>select</code> - SELECT statement</dd>
<dt>Returns:</dt>
<dd>naming scope for ORDER BY clause</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="getMatchRecognizeScope(org.apache.calcite.sql.SqlMatchRecognize)">
<h3>getMatchRecognizeScope</h3>
<div class="member-signature"><span class="return-type"><a href="SqlValidatorScope.html" title="interface in org.apache.calcite.sql.validate">SqlValidatorScope</a></span>&nbsp;<span class="element-name">getMatchRecognizeScope</span><wbr><span class="parameters">(<a href="../SqlMatchRecognize.html" title="class in org.apache.calcite.sql">SqlMatchRecognize</a>&nbsp;node)</span></div>
<div class="block">Returns a scope match recognize clause.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>node</code> - Match recognize</dd>
<dt>Returns:</dt>
<dd>naming scope for Match recognize clause</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="declareCursor(org.apache.calcite.sql.SqlSelect,org.apache.calcite.sql.validate.SqlValidatorScope)">
<h3>declareCursor</h3>
<div class="member-signature"><span class="return-type">void</span>&nbsp;<span class="element-name">declareCursor</span><wbr><span class="parameters">(<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)</span></div>
<div class="block">Declares a SELECT expression as a cursor.</div>
<dl class="notes">
<dt>Parameters:</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>
</section>
</li>
<li>
<section class="detail" id="pushFunctionCall()">
<h3>pushFunctionCall</h3>
<div class="member-signature"><span class="return-type">void</span>&nbsp;<span class="element-name">pushFunctionCall</span>()</div>
<div class="block">Pushes a new instance of a function call on to a function call stack.</div>
</section>
</li>
<li>
<section class="detail" id="popFunctionCall()">
<h3>popFunctionCall</h3>
<div class="member-signature"><span class="return-type">void</span>&nbsp;<span class="element-name">popFunctionCall</span>()</div>
<div class="block">Removes the topmost entry from the function call stack.</div>
</section>
</li>
<li>
<section class="detail" id="getParentCursor(java.lang.String)">
<h3>getParentCursor</h3>
<div class="member-signature"><span class="return-type">@Nullable <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">getParentCursor</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;columnListParamName)</span></div>
<div class="block">Retrieves the name of the parent cursor referenced by a column list
parameter.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>columnListParamName</code> - name of the column list parameter</dd>
<dt>Returns:</dt>
<dd>name of the parent cursor</dd>
</dl>
</section>
</li>
<li>
<section class="detail" 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)">
<h3>deriveConstructorType</h3>
<div class="member-signature"><span class="return-type"><a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></span>&nbsp;<span class="element-name">deriveConstructorType</span><wbr><span class="parameters">(<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,
@Nullable <a href="../SqlFunction.html" title="class in org.apache.calcite.sql">SqlFunction</a>&nbsp;resolvedConstructor,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&gt;&nbsp;argTypes)</span></div>
<div class="block">Derives the type of a constructor.</div>
<dl class="notes">
<dt>Parameters:</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>Returns:</dt>
<dd>Resolved type of constructor</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="handleUnresolvedFunction(org.apache.calcite.sql.SqlCall,org.apache.calcite.sql.SqlOperator,java.util.List,java.util.List)">
<h3>handleUnresolvedFunction</h3>
<div class="member-signature"><span class="return-type"><a href="../../runtime/CalciteException.html" title="class in org.apache.calcite.runtime">CalciteException</a></span>&nbsp;<span class="element-name">handleUnresolvedFunction</span><wbr><span class="parameters">(<a href="../SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a>&nbsp;call,
<a href="../SqlOperator.html" title="class in org.apache.calcite.sql">SqlOperator</a>&nbsp;unresolvedFunction,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&gt;&nbsp;argTypes,
@Nullable <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;&nbsp;argNames)</span></div>
<div class="block">Handles a call to a function which cannot be resolved. Returns an
appropriately descriptive error, which caller must throw.</div>
<dl class="notes">
<dt>Parameters:</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>
</section>
</li>
<li>
<section class="detail" id="expandOrderExpr(org.apache.calcite.sql.SqlSelect,org.apache.calcite.sql.SqlNode)">
<h3>expandOrderExpr</h3>
<div class="member-signature"><span class="return-type"><a href="../SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a></span>&nbsp;<span class="element-name">expandOrderExpr</span><wbr><span class="parameters">(<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)</span></div>
<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 class="notes">
<dt>Parameters:</dt>
<dd><code>select</code> - Select statement which contains ORDER BY</dd>
<dd><code>orderExpr</code> - Expression in the ORDER BY clause.</dd>
<dt>Returns:</dt>
<dd>Expression translated into SELECT clause semantics</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="expand(org.apache.calcite.sql.SqlNode,org.apache.calcite.sql.validate.SqlValidatorScope)">
<h3>expand</h3>
<div class="member-signature"><span class="return-type"><a href="../SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a></span>&nbsp;<span class="element-name">expand</span><wbr><span class="parameters">(<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)</span></div>
<div class="block">Expands an expression.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>expr</code> - Expression</dd>
<dd><code>scope</code> - Scope</dd>
<dt>Returns:</dt>
<dd>Expanded expression</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="resolveLiteral(org.apache.calcite.sql.SqlLiteral)">
<h3>resolveLiteral</h3>
<div class="member-signature"><span class="return-type"><a href="../SqlLiteral.html" title="class in org.apache.calcite.sql">SqlLiteral</a></span>&nbsp;<span class="element-name">resolveLiteral</span><wbr><span class="parameters">(<a href="../SqlLiteral.html" title="class in org.apache.calcite.sql">SqlLiteral</a>&nbsp;literal)</span></div>
<div class="block">Resolves a literal.
<p>Usually returns the literal unchanged, but if the literal is of type
<a href="../type/SqlTypeName.html#UNKNOWN"><code>SqlTypeName.UNKNOWN</code></a> looks up its type
and converts to the appropriate literal subclass.</div>
</section>
</li>
<li>
<section class="detail" id="isSystemField(org.apache.calcite.rel.type.RelDataTypeField)">
<h3>isSystemField</h3>
<div class="member-signature"><span class="return-type">boolean</span>&nbsp;<span class="element-name">isSystemField</span><wbr><span class="parameters">(<a href="../../rel/type/RelDataTypeField.html" title="interface in org.apache.calcite.rel.type">RelDataTypeField</a>&nbsp;field)</span></div>
<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 class="notes">
<dt>Parameters:</dt>
<dd><code>field</code> - Field</dd>
<dt>Returns:</dt>
<dd>whether field is a system field</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="getFieldOrigins(org.apache.calcite.sql.SqlNode)">
<h3>getFieldOrigins</h3>
<div class="member-signature"><span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;@Nullable <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;&gt;</span>&nbsp;<span class="element-name">getFieldOrigins</span><wbr><span class="parameters">(<a href="../SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;sqlQuery)</span></div>
<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 class="notes">
<dt>Parameters:</dt>
<dd><code>sqlQuery</code> - Query</dd>
<dt>Returns:</dt>
<dd>Description of how each field in the row type maps to a schema
object</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="getParameterRowType(org.apache.calcite.sql.SqlNode)">
<h3>getParameterRowType</h3>
<div class="member-signature"><span class="return-type"><a href="../../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a></span>&nbsp;<span class="element-name">getParameterRowType</span><wbr><span class="parameters">(<a href="../SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;sqlQuery)</span></div>
<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 class="notes">
<dt>Parameters:</dt>
<dd><code>sqlQuery</code> - Query</dd>
<dt>Returns:</dt>
<dd>Record type</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="getOverScope(org.apache.calcite.sql.SqlNode)">
<h3>getOverScope</h3>
<div class="member-signature"><span class="return-type"><a href="SqlValidatorScope.html" title="interface in org.apache.calcite.sql.validate">SqlValidatorScope</a></span>&nbsp;<span class="element-name">getOverScope</span><wbr><span class="parameters">(<a href="../SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;node)</span></div>
<div class="block">Returns the scope of an OVER or VALUES node.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>node</code> - Node</dd>
<dt>Returns:</dt>
<dd>Scope</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="validateModality(org.apache.calcite.sql.SqlSelect,org.apache.calcite.sql.validate.SqlModality,boolean)">
<h3>validateModality</h3>
<div class="member-signature"><span class="return-type">boolean</span>&nbsp;<span class="element-name">validateModality</span><wbr><span class="parameters">(<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)</span></div>
<div class="block">Validates that a query is capable of producing a return of given modality
(relational or streaming).</div>
<dl class="notes">
<dt>Parameters:</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>Returns:</dt>
<dd>whether query supports the given modality</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="validateWith(org.apache.calcite.sql.SqlWith,org.apache.calcite.sql.validate.SqlValidatorScope)">
<h3>validateWith</h3>
<div class="member-signature"><span class="return-type">void</span>&nbsp;<span class="element-name">validateWith</span><wbr><span class="parameters">(<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)</span></div>
</section>
</li>
<li>
<section class="detail" id="validateWithItem(org.apache.calcite.sql.SqlWithItem)">
<h3>validateWithItem</h3>
<div class="member-signature"><span class="return-type">void</span>&nbsp;<span class="element-name">validateWithItem</span><wbr><span class="parameters">(<a href="../SqlWithItem.html" title="class in org.apache.calcite.sql">SqlWithItem</a>&nbsp;withItem)</span></div>
</section>
</li>
<li>
<section class="detail" id="validateSequenceValue(org.apache.calcite.sql.validate.SqlValidatorScope,org.apache.calcite.sql.SqlIdentifier)">
<h3>validateSequenceValue</h3>
<div class="member-signature"><span class="return-type">void</span>&nbsp;<span class="element-name">validateSequenceValue</span><wbr><span class="parameters">(<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)</span></div>
</section>
</li>
<li>
<section class="detail" id="getWithScope(org.apache.calcite.sql.SqlNode)">
<h3>getWithScope</h3>
<div class="member-signature"><span class="return-type">@Nullable <a href="SqlValidatorScope.html" title="interface in org.apache.calcite.sql.validate">SqlValidatorScope</a></span>&nbsp;<span class="element-name">getWithScope</span><wbr><span class="parameters">(<a href="../SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;withItem)</span></div>
</section>
</li>
<li>
<section class="detail" id="getTypeCoercion()">
<h3>getTypeCoercion</h3>
<div class="member-signature"><span class="return-type"><a href="implicit/TypeCoercion.html" title="interface in org.apache.calcite.sql.validate.implicit">TypeCoercion</a></span>&nbsp;<span class="element-name">getTypeCoercion</span>()</div>
<div class="block">Get the type coercion instance.</div>
</section>
</li>
<li>
<section class="detail" id="config()">
<h3>config</h3>
<div class="member-signature"><span class="return-type"><a href="SqlValidator.Config.html" title="interface in org.apache.calcite.sql.validate">SqlValidator.Config</a></span>&nbsp;<span class="element-name">config</span>()</div>
<div class="block">Returns the config of the validator.</div>
</section>
</li>
<li>
<section class="detail" id="transform(java.util.function.UnaryOperator)">
<h3>transform</h3>
<div class="member-signature"><span class="annotations">@API(status=INTERNAL,
since="1.23")
</span><span class="return-type"><a href="SqlValidator.html" title="interface in org.apache.calcite.sql.validate">SqlValidator</a></span>&nbsp;<span class="element-name">transform</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/UnaryOperator.html" title="class or interface in java.util.function" class="external-link">UnaryOperator</a>&lt;<a href="SqlValidator.Config.html" title="interface in org.apache.calcite.sql.validate">SqlValidator.Config</a>&gt;&nbsp;transform)</span></div>
<div class="block">Returns this SqlValidator, with the same state, applying
a transform to the config.
<p>This is mainly used for tests, otherwise constructs a <a href="SqlValidator.Config.html" title="interface in org.apache.calcite.sql.validate"><code>SqlValidator.Config</code></a> directly
through the constructor.</div>
</section>
</li>
<li>
<section class="detail" id="getTimeFrameSet()">
<h3>getTimeFrameSet</h3>
<div class="member-signature"><span class="return-type"><a href="../../rel/type/TimeFrameSet.html" title="class in org.apache.calcite.rel.type">TimeFrameSet</a></span>&nbsp;<span class="element-name">getTimeFrameSet</span>()</div>
<div class="block">Returns the set of allowed time frames.</div>
</section>
</li>
<li>
<section class="detail" id="validateTimeFrame(org.apache.calcite.sql.SqlIntervalQualifier)">
<h3>validateTimeFrame</h3>
<div class="member-signature"><span class="return-type"><a href="../../rel/type/TimeFrame.html" title="interface in org.apache.calcite.rel.type">TimeFrame</a></span>&nbsp;<span class="element-name">validateTimeFrame</span><wbr><span class="parameters">(<a href="../SqlIntervalQualifier.html" title="class in org.apache.calcite.sql">SqlIntervalQualifier</a>&nbsp;intervalQualifier)</span></div>
<div class="block">Validates a time frame.
<p>A time frame is either a built-in time frame based on a time unit such
as <code>TimeUnitRange.HOUR</code>,
or is a custom time frame represented by a name in
<a href="../SqlIntervalQualifier.html#timeFrameName"><code>SqlIntervalQualifier.timeFrameName</code></a>. A custom time frame is
validated against <a href="#getTimeFrameSet()"><code>getTimeFrameSet()</code></a>.
<p>Returns a time frame, or throws.</div>
</section>
</li>
</ul>
</section>
</li>
</ul>
</section>
<!-- ========= END OF CLASS DATA ========= -->
</main>
<footer role="contentinfo">
<hr>
<p class="legal-copy"><small>Copyright &copy; 2012-2023 Apache Software Foundation. All Rights Reserved.</small></p>
</footer>
</div>
</div>
</body>
</html>