blob: b6d83f3dd78bbc76a176b9c2881b45a02d4ed8f9 [file] [log] [blame]
<!DOCTYPE HTML>
<html lang="en">
<head>
<!-- Generated by javadoc (17) -->
<title>SqlAdvisor (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.advise, class: SqlAdvisor">
<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><a href="#field-summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method-summary">Method</a></li>
</ul>
<ul class="sub-nav-list">
<li>Detail:&nbsp;</li>
<li><a href="#field-detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method-detail">Method</a></li>
</ul>
</div>
<div class="nav-list-search"><label for="search-input">SEARCH:</label>
<input type="text" id="search-input" value="search" disabled="disabled">
<input type="reset" id="reset-button" value="reset" disabled="disabled">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">org.apache.calcite.sql.advise</a></div>
<h1 title="Class SqlAdvisor" class="title">Class SqlAdvisor</h1>
</div>
<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
<div class="inheritance">org.apache.calcite.sql.advise.SqlAdvisor</div>
</div>
<section class="class-description" id="class-description">
<hr>
<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">SqlAdvisor</span>
<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
<div class="block">An assistant which offers hints and corrections to a partially-formed SQL
statement. It is used in the SQL editor user-interface.</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">Class</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color"><code>static class&nbsp;</code></div>
<div class="col-second even-row-color"><code><a href="SqlAdvisor.ValidateErrorInfo.html" class="type-name-link" title="class in org.apache.calcite.sql.advise">SqlAdvisor.ValidateErrorInfo</a></code></div>
<div class="col-last even-row-color">
<div class="block">Text and position info of a validator or parser exception.</div>
</div>
</div>
</section>
</li>
<!-- =========== FIELD SUMMARY =========== -->
<li>
<section class="field-summary" id="field-summary">
<h2>Field Summary</h2>
<div class="caption"><span>Fields</span></div>
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Field</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color"><code>static final org.slf4j.Logger</code></div>
<div class="col-second even-row-color"><code><a href="#LOGGER" class="member-name-link">LOGGER</a></code></div>
<div class="col-last even-row-color">&nbsp;</div>
</div>
</section>
</li>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<li>
<section class="constructor-summary" id="constructor-summary">
<h2>Constructor Summary</h2>
<div class="caption"><span>Constructors</span></div>
<div class="summary-table two-column-summary">
<div class="table-header col-first">Constructor</div>
<div class="table-header col-last">Description</div>
<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(org.apache.calcite.sql.validate.SqlValidatorWithHints)" class="member-name-link">SqlAdvisor</a><wbr>(<a href="../validate/SqlValidatorWithHints.html" title="interface in org.apache.calcite.sql.validate">SqlValidatorWithHints</a>&nbsp;validator)</code></div>
<div class="col-last even-row-color">
<div class="block"><span class="deprecated-label">Deprecated.</span>
<div class="deprecation-comment">use <a href="#%3Cinit%3E(org.apache.calcite.sql.validate.SqlValidatorWithHints,org.apache.calcite.sql.parser.SqlParser.Config)"><code>SqlAdvisor(SqlValidatorWithHints, SqlParser.Config)</code></a></div>
</div>
</div>
<div class="col-constructor-name odd-row-color"><code><a href="#%3Cinit%3E(org.apache.calcite.sql.validate.SqlValidatorWithHints,org.apache.calcite.sql.parser.SqlParser.Config)" class="member-name-link">SqlAdvisor</a><wbr>(<a href="../validate/SqlValidatorWithHints.html" title="interface in org.apache.calcite.sql.validate">SqlValidatorWithHints</a>&nbsp;validator,
<a href="../parser/SqlParser.Config.html" title="interface in org.apache.calcite.sql.parser">SqlParser.Config</a>&nbsp;parserConfig)</code></div>
<div class="col-last odd-row-color">
<div class="block">Creates a SqlAdvisor with a validator instance and given parser
configuration.</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-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
<div id="method-summary-table.tabpanel" role="tabpanel">
<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Method</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected @Nullable <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-tab4"><code><a href="#collectParserError(java.lang.String,java.util.List)" class="member-name-link">collectParserError</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;sql,
<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="SqlAdvisor.ValidateErrorInfo.html" title="class in org.apache.calcite.sql.advise">SqlAdvisor.ValidateErrorInfo</a>&gt;&nbsp;errorList)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Attempts to parse a SQL statement and adds to the errorList if any syntax
error is found.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="../validate/SqlMoniker.html" title="interface in org.apache.calcite.sql.validate">SqlMoniker</a>&gt;</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getCompletionHints(java.lang.String,int,java.lang.String%5B%5D)" class="member-name-link">getCompletionHints</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;sql,
int&nbsp;cursor,
<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;replaced)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Gets completion hints for a partially completed or syntactically incorrect
sql statement with cursor pointing to the position where completion hints
are requested.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="../validate/SqlMoniker.html" title="interface in org.apache.calcite.sql.validate">SqlMoniker</a>&gt;</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getCompletionHints(java.lang.String,org.apache.calcite.sql.parser.SqlParserPos)" class="member-name-link">getCompletionHints</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;sql,
<a href="../parser/SqlParserPos.html" title="class in org.apache.calcite.sql.parser">SqlParserPos</a>&nbsp;pos)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Gets completion hints for a syntactically correct SQL statement with dummy
<a href="../SqlIdentifier.html" title="class in org.apache.calcite.sql"><code>SqlIdentifier</code></a>.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="../validate/SqlMoniker.html" title="interface in org.apache.calcite.sql.validate">SqlMoniker</a>&gt;</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getCompletionHints0(java.lang.String,int)" class="member-name-link">getCompletionHints0</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;sql,
int&nbsp;cursor)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected org.apache.calcite.sql.parser.SqlAbstractParserImpl.Metadata</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getParserMetadata()" class="member-name-link">getParserMetadata</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Returns the underlying Parser metadata.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>@Nullable <a href="../validate/SqlMoniker.html" title="interface in org.apache.calcite.sql.validate">SqlMoniker</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getQualifiedName(java.lang.String,int)" class="member-name-link">getQualifiedName</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;sql,
int&nbsp;cursor)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Gets the fully qualified name for a <a href="../SqlIdentifier.html" title="class in org.apache.calcite.sql"><code>SqlIdentifier</code></a> at a given
position of a sql statement.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getReplacement(org.apache.calcite.sql.validate.SqlMoniker,boolean,org.apache.calcite.avatica.util.Casing)" class="member-name-link">getReplacement</a><wbr>(<a href="../validate/SqlMoniker.html" title="interface in org.apache.calcite.sql.validate">SqlMoniker</a>&nbsp;hint,
boolean&nbsp;quoted,
org.apache.calcite.avatica.util.Casing&nbsp;preferredCasing)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getReplacement(org.apache.calcite.sql.validate.SqlMoniker,java.lang.String)" class="member-name-link">getReplacement</a><wbr>(<a href="../validate/SqlMoniker.html" title="interface in org.apache.calcite.sql.validate">SqlMoniker</a>&nbsp;hint,
<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;word)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getReservedAndKeyWords()" class="member-name-link">getReservedAndKeyWords</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Returns an array of SQL reserved and keywords.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#isValid(java.lang.String)" class="member-name-link">isValid</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;sql)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Attempts to complete and validate a given partially completed sql
statement, and returns whether it is valid.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected <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-tab4"><code><a href="#parseQuery(java.lang.String)" class="member-name-link">parseQuery</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;sql)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Wrapper function to parse a SQL query (SELECT or VALUES, but not INSERT,
UPDATE, DELETE, CREATE, DROP etc.), throwing a <a href="../parser/SqlParseException.html" title="class in org.apache.calcite.sql.parser"><code>SqlParseException</code></a>
if the statement is not syntactically valid.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#simplifySql(java.lang.String,int)" class="member-name-link">simplifySql</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;sql,
int&nbsp;cursor)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Turns a partially completed or syntactically incorrect sql statement into
a simplified, valid one that can be passed into
<a href="#getCompletionHints(java.lang.String,org.apache.calcite.sql.parser.SqlParserPos)"><code>getCompletionHints(String, SqlParserPos)</code></a>.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>@Nullable <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="SqlAdvisor.ValidateErrorInfo.html" title="class in org.apache.calcite.sql.advise">SqlAdvisor.ValidateErrorInfo</a>&gt;</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#validate(java.lang.String)" class="member-name-link">validate</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;sql)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Attempts to parse and validate a SQL statement.</div>
</div>
</div>
</div>
</div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
</section>
</li>
</ul>
</section>
<section class="details">
<ul class="details-list">
<!-- ============ FIELD DETAIL =========== -->
<li>
<section class="field-details" id="field-detail">
<h2>Field Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="LOGGER">
<h3>LOGGER</h3>
<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type">org.slf4j.Logger</span>&nbsp;<span class="element-name">LOGGER</span></div>
</section>
</li>
</ul>
</section>
</li>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<li>
<section class="constructor-details" id="constructor-detail">
<h2>Constructor Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="&lt;init&gt;(org.apache.calcite.sql.validate.SqlValidatorWithHints)">
<h3>SqlAdvisor</h3>
<div class="member-signature"><span class="annotations"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Deprecated.html" title="class or interface in java.lang" class="external-link">@Deprecated</a>
</span><span class="modifiers">public</span>&nbsp;<span class="element-name">SqlAdvisor</span><wbr><span class="parameters">(<a href="../validate/SqlValidatorWithHints.html" title="interface in org.apache.calcite.sql.validate">SqlValidatorWithHints</a>&nbsp;validator)</span></div>
<div class="deprecation-block"><span class="deprecated-label">Deprecated.</span>
<div class="deprecation-comment">use <a href="#%3Cinit%3E(org.apache.calcite.sql.validate.SqlValidatorWithHints,org.apache.calcite.sql.parser.SqlParser.Config)"><code>SqlAdvisor(SqlValidatorWithHints, SqlParser.Config)</code></a></div>
</div>
<div class="block">Creates a SqlAdvisor with a validator instance.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>validator</code> - Validator</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="&lt;init&gt;(org.apache.calcite.sql.validate.SqlValidatorWithHints,org.apache.calcite.sql.parser.SqlParser.Config)">
<h3>SqlAdvisor</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">SqlAdvisor</span><wbr><span class="parameters">(<a href="../validate/SqlValidatorWithHints.html" title="interface in org.apache.calcite.sql.validate">SqlValidatorWithHints</a>&nbsp;validator,
<a href="../parser/SqlParser.Config.html" title="interface in org.apache.calcite.sql.parser">SqlParser.Config</a>&nbsp;parserConfig)</span></div>
<div class="block">Creates a SqlAdvisor with a validator instance and given parser
configuration.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>validator</code> - Validator</dd>
<dd><code>parserConfig</code> - parser config</dd>
</dl>
</section>
</li>
</ul>
</section>
</li>
<!-- ============ METHOD DETAIL ========== -->
<li>
<section class="method-details" id="method-detail">
<h2>Method Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="getCompletionHints(java.lang.String,int,java.lang.String[])">
<h3>getCompletionHints</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="../validate/SqlMoniker.html" title="interface in org.apache.calcite.sql.validate">SqlMoniker</a>&gt;</span>&nbsp;<span class="element-name">getCompletionHints</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;sql,
int&nbsp;cursor,
<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;replaced)</span></div>
<div class="block">Gets completion hints for a partially completed or syntactically incorrect
sql statement with cursor pointing to the position where completion hints
are requested.
<p>Writes into <code>replaced[0]</code> the string that is being
replaced. Includes the cursor and the preceding identifier. For example,
if <code>sql</code> is "select abc^de from t", sets <code>
replaced[0]</code> to "abc". If the cursor is in the middle of
whitespace, the replaced string is empty. The replaced string is never
null.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>sql</code> - A partial or syntactically incorrect sql statement for
which to retrieve completion hints</dd>
<dd><code>cursor</code> - to indicate the 0-based cursor position in the query at</dd>
<dd><code>replaced</code> - String which is being replaced (output)</dd>
<dt>Returns:</dt>
<dd>completion hints</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="getCompletionHints0(java.lang.String,int)">
<h3>getCompletionHints0</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="../validate/SqlMoniker.html" title="interface in org.apache.calcite.sql.validate">SqlMoniker</a>&gt;</span>&nbsp;<span class="element-name">getCompletionHints0</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;sql,
int&nbsp;cursor)</span></div>
</section>
</li>
<li>
<section class="detail" id="getReplacement(org.apache.calcite.sql.validate.SqlMoniker,java.lang.String)">
<h3>getReplacement</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">getReplacement</span><wbr><span class="parameters">(<a href="../validate/SqlMoniker.html" title="interface in org.apache.calcite.sql.validate">SqlMoniker</a>&nbsp;hint,
<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;word)</span></div>
</section>
</li>
<li>
<section class="detail" id="getReplacement(org.apache.calcite.sql.validate.SqlMoniker,boolean,org.apache.calcite.avatica.util.Casing)">
<h3>getReplacement</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">getReplacement</span><wbr><span class="parameters">(<a href="../validate/SqlMoniker.html" title="interface in org.apache.calcite.sql.validate">SqlMoniker</a>&nbsp;hint,
boolean&nbsp;quoted,
org.apache.calcite.avatica.util.Casing&nbsp;preferredCasing)</span></div>
</section>
</li>
<li>
<section class="detail" id="getCompletionHints(java.lang.String,org.apache.calcite.sql.parser.SqlParserPos)">
<h3>getCompletionHints</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="../validate/SqlMoniker.html" title="interface in org.apache.calcite.sql.validate">SqlMoniker</a>&gt;</span>&nbsp;<span class="element-name">getCompletionHints</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;sql,
<a href="../parser/SqlParserPos.html" title="class in org.apache.calcite.sql.parser">SqlParserPos</a>&nbsp;pos)</span></div>
<div class="block">Gets completion hints for a syntactically correct SQL statement with dummy
<a href="../SqlIdentifier.html" title="class in org.apache.calcite.sql"><code>SqlIdentifier</code></a>.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>sql</code> - A syntactically correct sql statement for which to retrieve
completion hints</dd>
<dd><code>pos</code> - to indicate the line and column position in the query at which
completion hints need to be retrieved. For example, "select
a.ename, b.deptno from sales.emp a join sales.dept b "on
a.deptno=b.deptno where empno=1"; setting pos to 'Line 1, Column
17' returns all the possible column names that can be selected
from sales.dept table setting pos to 'Line 1, Column 31' returns
all the possible table names in 'sales' schema</dd>
<dt>Returns:</dt>
<dd>an array of hints (<a href="../validate/SqlMoniker.html" title="interface in org.apache.calcite.sql.validate"><code>SqlMoniker</code></a>) that can fill in at the
indicated position</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="getQualifiedName(java.lang.String,int)">
<h3>getQualifiedName</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">@Nullable <a href="../validate/SqlMoniker.html" title="interface in org.apache.calcite.sql.validate">SqlMoniker</a></span>&nbsp;<span class="element-name">getQualifiedName</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;sql,
int&nbsp;cursor)</span></div>
<div class="block">Gets the fully qualified name for a <a href="../SqlIdentifier.html" title="class in org.apache.calcite.sql"><code>SqlIdentifier</code></a> at a given
position of a sql statement.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>sql</code> - A syntactically correct sql statement for which to retrieve a
fully qualified SQL identifier name</dd>
<dd><code>cursor</code> - to indicate the 0-based cursor position in the query that
represents a SQL identifier for which its fully qualified
name is to be returned.</dd>
<dt>Returns:</dt>
<dd>a <a href="../validate/SqlMoniker.html" title="interface in org.apache.calcite.sql.validate"><code>SqlMoniker</code></a> that contains the fully qualified name of
the specified SQL identifier, returns null if none is found or the SQL
statement is invalid.</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="isValid(java.lang.String)">
<h3>isValid</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">isValid</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;sql)</span></div>
<div class="block">Attempts to complete and validate a given partially completed sql
statement, and returns whether it is valid.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>sql</code> - A partial or syntactically incorrect sql statement to validate</dd>
<dt>Returns:</dt>
<dd>whether SQL statement is valid</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="validate(java.lang.String)">
<h3>validate</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">@Nullable <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="SqlAdvisor.ValidateErrorInfo.html" title="class in org.apache.calcite.sql.advise">SqlAdvisor.ValidateErrorInfo</a>&gt;</span>&nbsp;<span class="element-name">validate</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;sql)</span></div>
<div class="block">Attempts to parse and validate a SQL statement. Throws the first
exception encountered. The error message of this exception is to be
displayed on the UI</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>sql</code> - A user-input sql statement to be validated</dd>
<dt>Returns:</dt>
<dd>a List of ValidateErrorInfo (null if sql is valid)</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="simplifySql(java.lang.String,int)">
<h3>simplifySql</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">simplifySql</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;sql,
int&nbsp;cursor)</span></div>
<div class="block">Turns a partially completed or syntactically incorrect sql statement into
a simplified, valid one that can be passed into
<a href="#getCompletionHints(java.lang.String,org.apache.calcite.sql.parser.SqlParserPos)"><code>getCompletionHints(String, SqlParserPos)</code></a>.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>sql</code> - A partial or syntactically incorrect SQL statement</dd>
<dd><code>cursor</code> - Indicates the position in the query at which
completion hints need to be retrieved</dd>
<dt>Returns:</dt>
<dd>a completed, valid (and possibly simplified SQL statement</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="getReservedAndKeyWords()">
<h3>getReservedAndKeyWords</h3>
<div class="member-signature"><span class="annotations">@EnsuresNonNull({"reservedWordsSet","reservedWordsList"})
</span><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</span>&nbsp;<span class="element-name">getReservedAndKeyWords</span>()</div>
<div class="block">Returns an array of SQL reserved and keywords.</div>
<dl class="notes">
<dt>Returns:</dt>
<dd>an of SQL reserved and keywords</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="getParserMetadata()">
<h3>getParserMetadata</h3>
<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type">org.apache.calcite.sql.parser.SqlAbstractParserImpl.Metadata</span>&nbsp;<span class="element-name">getParserMetadata</span>()</div>
<div class="block">Returns the underlying Parser metadata.
<p>To use a different parser (recognizing a different dialect of SQL),
derived class should override.</div>
<dl class="notes">
<dt>Returns:</dt>
<dd>metadata</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="parseQuery(java.lang.String)">
<h3>parseQuery</h3>
<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type"><a href="../SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a></span>&nbsp;<span class="element-name">parseQuery</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;sql)</span>
throws <span class="exceptions"><a href="../parser/SqlParseException.html" title="class in org.apache.calcite.sql.parser">SqlParseException</a></span></div>
<div class="block">Wrapper function to parse a SQL query (SELECT or VALUES, but not INSERT,
UPDATE, DELETE, CREATE, DROP etc.), throwing a <a href="../parser/SqlParseException.html" title="class in org.apache.calcite.sql.parser"><code>SqlParseException</code></a>
if the statement is not syntactically valid.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>sql</code> - SQL statement</dd>
<dt>Returns:</dt>
<dd>parse tree</dd>
<dt>Throws:</dt>
<dd><code><a href="../parser/SqlParseException.html" title="class in org.apache.calcite.sql.parser">SqlParseException</a></code> - if not syntactically valid</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="collectParserError(java.lang.String,java.util.List)">
<h3>collectParserError</h3>
<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type">@Nullable <a href="../SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a></span>&nbsp;<span class="element-name">collectParserError</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;sql,
<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="SqlAdvisor.ValidateErrorInfo.html" title="class in org.apache.calcite.sql.advise">SqlAdvisor.ValidateErrorInfo</a>&gt;&nbsp;errorList)</span></div>
<div class="block">Attempts to parse a SQL statement and adds to the errorList if any syntax
error is found. This implementation uses <a href="../parser/SqlParser.html" title="class in org.apache.calcite.sql.parser"><code>SqlParser</code></a>. Subclass can
re-implement this with a different parser implementation</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>sql</code> - A user-input sql statement to be parsed</dd>
<dd><code>errorList</code> - A <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"><code>List</code></a> of error to be added to</dd>
<dt>Returns:</dt>
<dd><a href="../SqlNode.html" title="class in org.apache.calcite.sql"><code>SqlNode</code></a> that is root of the parse tree, null if the sql
is not valid</dd>
</dl>
</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>