blob: 4e8702b049f376a52216c8dba48e27d4c5bb480d [file] [log] [blame]
<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc -->
<title>SqlDialect (Apache Calcite API)</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../jquery/jquery-ui.css" title="Style">
<script type="text/javascript" src="../../../../script.js"></script>
<script type="text/javascript" src="../../../../jquery/jszip/dist/jszip.min.js"></script>
<script type="text/javascript" src="../../../../jquery/jszip-utils/dist/jszip-utils.min.js"></script>
<!--[if IE]>
<script type="text/javascript" src="../../../../jquery/jszip-utils/dist/jszip-utils-ie.min.js"></script>
<![endif]-->
<script type="text/javascript" src="../../../../jquery/jquery-3.3.1.js"></script>
<script type="text/javascript" src="../../../../jquery/jquery-migrate-3.0.1.js"></script>
<script type="text/javascript" src="../../../../jquery/jquery-ui.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="SqlDialect (Apache Calcite API)";
}
}
catch(err) {
}
//-->
var data = {"i0":10,"i1":10,"i2":9,"i3":41,"i4":10,"i5":9,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":42,"i13":10,"i14":41,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10,"i20":10,"i21":10,"i22":10,"i23":10,"i24":10,"i25":10,"i26":10,"i27":10,"i28":10,"i29":10,"i30":10,"i31":10,"i32":10,"i33":10,"i34":10,"i35":10,"i36":42,"i37":10,"i38":10,"i39":10,"i40":10,"i41":10,"i42":10,"i43":10,"i44":10,"i45":10,"i46":10};
var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"],32:["t6","Deprecated Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
var pathtoroot = "../../../../";
var useModuleDirectories = true;
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<nav role="navigation">
<div class="fixedNav">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a id="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/SqlDialect.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../index-all.html">Index</a></li>
<li><a href="../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<ul class="navListSearch">
<li><label for="search">SEARCH:</label>
<input type="text" id="search" value="search" disabled="disabled">
<input type="reset" id="reset" value="reset" disabled="disabled">
</li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li><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="subNavList">
<li>Detail:&nbsp;</li>
<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a id="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
</div>
<div class="navPadding">&nbsp;</div>
<script type="text/javascript"><!--
$('.navPadding').css('padding-top', $('.fixedNav').css("height"));
//-->
</script>
</nav>
</header>
<!-- ======== START OF CLASS DATA ======== -->
<main role="main">
<div class="header">
<div class="subTitle"><span class="packageLabelInType">Package</span>&nbsp;<a href="package-summary.html">org.apache.calcite.sql</a></div>
<h2 title="Class SqlDialect" class="title">Class SqlDialect</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li>java.lang.Object</li>
<li>
<ul class="inheritance">
<li>org.apache.calcite.sql.SqlDialect</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>Direct Known Subclasses:</dt>
<dd><code><a href="dialect/AccessSqlDialect.html" title="class in org.apache.calcite.sql.dialect">AccessSqlDialect</a></code>, <code><a href="dialect/AnsiSqlDialect.html" title="class in org.apache.calcite.sql.dialect">AnsiSqlDialect</a></code>, <code><a href="dialect/BigQuerySqlDialect.html" title="class in org.apache.calcite.sql.dialect">BigQuerySqlDialect</a></code>, <code><a href="dialect/CalciteSqlDialect.html" title="class in org.apache.calcite.sql.dialect">CalciteSqlDialect</a></code>, <code><a href="dialect/Db2SqlDialect.html" title="class in org.apache.calcite.sql.dialect">Db2SqlDialect</a></code>, <code><a href="dialect/DerbySqlDialect.html" title="class in org.apache.calcite.sql.dialect">DerbySqlDialect</a></code>, <code><a href="dialect/FirebirdSqlDialect.html" title="class in org.apache.calcite.sql.dialect">FirebirdSqlDialect</a></code>, <code><a href="dialect/H2SqlDialect.html" title="class in org.apache.calcite.sql.dialect">H2SqlDialect</a></code>, <code><a href="dialect/HiveSqlDialect.html" title="class in org.apache.calcite.sql.dialect">HiveSqlDialect</a></code>, <code><a href="dialect/HsqldbSqlDialect.html" title="class in org.apache.calcite.sql.dialect">HsqldbSqlDialect</a></code>, <code><a href="dialect/InfobrightSqlDialect.html" title="class in org.apache.calcite.sql.dialect">InfobrightSqlDialect</a></code>, <code><a href="dialect/InformixSqlDialect.html" title="class in org.apache.calcite.sql.dialect">InformixSqlDialect</a></code>, <code><a href="dialect/IngresSqlDialect.html" title="class in org.apache.calcite.sql.dialect">IngresSqlDialect</a></code>, <code><a href="dialect/InterbaseSqlDialect.html" title="class in org.apache.calcite.sql.dialect">InterbaseSqlDialect</a></code>, <code><a href="dialect/JethroDataSqlDialect.html" title="class in org.apache.calcite.sql.dialect">JethroDataSqlDialect</a></code>, <code><a href="dialect/LucidDbSqlDialect.html" title="class in org.apache.calcite.sql.dialect">LucidDbSqlDialect</a></code>, <code><a href="dialect/MssqlSqlDialect.html" title="class in org.apache.calcite.sql.dialect">MssqlSqlDialect</a></code>, <code><a href="dialect/MysqlSqlDialect.html" title="class in org.apache.calcite.sql.dialect">MysqlSqlDialect</a></code>, <code><a href="dialect/NeoviewSqlDialect.html" title="class in org.apache.calcite.sql.dialect">NeoviewSqlDialect</a></code>, <code><a href="dialect/NetezzaSqlDialect.html" title="class in org.apache.calcite.sql.dialect">NetezzaSqlDialect</a></code>, <code><a href="dialect/OracleSqlDialect.html" title="class in org.apache.calcite.sql.dialect">OracleSqlDialect</a></code>, <code><a href="dialect/ParaccelSqlDialect.html" title="class in org.apache.calcite.sql.dialect">ParaccelSqlDialect</a></code>, <code><a href="dialect/PhoenixSqlDialect.html" title="class in org.apache.calcite.sql.dialect">PhoenixSqlDialect</a></code>, <code><a href="dialect/PostgresqlSqlDialect.html" title="class in org.apache.calcite.sql.dialect">PostgresqlSqlDialect</a></code>, <code><a href="dialect/RedshiftSqlDialect.html" title="class in org.apache.calcite.sql.dialect">RedshiftSqlDialect</a></code>, <code><a href="dialect/SnowflakeSqlDialect.html" title="class in org.apache.calcite.sql.dialect">SnowflakeSqlDialect</a></code>, <code><a href="dialect/SparkSqlDialect.html" title="class in org.apache.calcite.sql.dialect">SparkSqlDialect</a></code>, <code><a href="dialect/SybaseSqlDialect.html" title="class in org.apache.calcite.sql.dialect">SybaseSqlDialect</a></code>, <code><a href="dialect/TeradataSqlDialect.html" title="class in org.apache.calcite.sql.dialect">TeradataSqlDialect</a></code>, <code><a href="dialect/VerticaSqlDialect.html" title="class in org.apache.calcite.sql.dialect">VerticaSqlDialect</a></code></dd>
</dl>
<hr>
<pre>public class <span class="typeNameLabel">SqlDialect</span>
extends java.lang.Object</pre>
<div class="block"><code>SqlDialect</code> encapsulates the differences between dialects of SQL.
<p>It is used by classes such as <a href="SqlWriter.html" title="interface in org.apache.calcite.sql"><code>SqlWriter</code></a> and
<a href="util/SqlBuilder.html" title="class in org.apache.calcite.sql.util"><code>SqlBuilder</code></a>.</div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ======== NESTED CLASS SUMMARY ======== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="nested.class.summary">
<!-- -->
</a>
<h3>Nested Class Summary</h3>
<table class="memberSummary">
<caption><span>Nested Classes</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Class</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static class&nbsp;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="SqlDialect.CalendarPolicy.html" title="enum in org.apache.calcite.sql">SqlDialect.CalendarPolicy</a></span></code></th>
<td class="colLast">
<div class="block">Whether this JDBC driver needs you to pass a Calendar object to methods
such as <code>ResultSet.getTimestamp(int, java.util.Calendar)</code>.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static interface&nbsp;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="SqlDialect.Context.html" title="interface in org.apache.calcite.sql">SqlDialect.Context</a></span></code></th>
<td class="colLast">
<div class="block">Information for creating a dialect.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>private static class&nbsp;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="SqlDialect.ContextImpl.html" title="class in org.apache.calcite.sql">SqlDialect.ContextImpl</a></span></code></th>
<td class="colLast">
<div class="block">Implementation of Context.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static class&nbsp;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="SqlDialect.DatabaseProduct.html" title="enum in org.apache.calcite.sql">SqlDialect.DatabaseProduct</a></span></code></th>
<td class="colLast">
<div class="block">Rough list of flavors of database.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static class&nbsp;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="SqlDialect.FakeUtil.html" title="class in org.apache.calcite.sql">SqlDialect.FakeUtil</a></span></code></th>
<td class="colLast">
<div class="block">A few utility functions copied from org.apache.calcite.util.Util.</div>
</td>
</tr>
</table>
</li>
</ul>
</section>
<!-- =========== FIELD SUMMARY =========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="field.summary">
<!-- -->
</a>
<h3>Field Summary</h3>
<table class="memberSummary">
<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Field</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected static java.util.Set&lt;<a href="SqlOperator.html" title="class in org.apache.calcite.sql">SqlOperator</a>&gt;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#BUILT_IN_OPERATORS_LIST">BUILT_IN_OPERATORS_LIST</a></span></code></th>
<td class="colLast">
<div class="block">Built-in scalar functions and operators common for every dialect.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static <a href="SqlDialect.html" title="class in org.apache.calcite.sql">SqlDialect</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#CALCITE">CALCITE</a></span></code></th>
<td class="colLast">
<div class="block"><span class="deprecatedLabel">Deprecated.</span>
<div class="deprecationComment">Use <a href="dialect/CalciteSqlDialect.html#DEFAULT"><code>CalciteSqlDialect.DEFAULT</code></a> instead.</div>
</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>private boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#caseSensitive">caseSensitive</a></span></code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>private <a href="SqlDialect.DatabaseProduct.html" title="enum in org.apache.calcite.sql">SqlDialect.DatabaseProduct</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#databaseProduct">databaseProduct</a></span></code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>private <a href="../rel/type/RelDataTypeSystem.html" title="interface in org.apache.calcite.rel.type">RelDataTypeSystem</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#dataTypeSystem">dataTypeSystem</a></span></code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static <a href="SqlDialect.html" title="class in org.apache.calcite.sql">SqlDialect</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#DUMMY">DUMMY</a></span></code></th>
<td class="colLast">
<div class="block"><span class="deprecatedLabel">Deprecated.</span>
<div class="deprecationComment">Use <a href="dialect/AnsiSqlDialect.html#DEFAULT"><code>AnsiSqlDialect.DEFAULT</code></a> instead.</div>
</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static <a href="SqlDialect.Context.html" title="interface in org.apache.calcite.sql">SqlDialect.Context</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#EMPTY_CONTEXT">EMPTY_CONTEXT</a></span></code></th>
<td class="colLast">
<div class="block">Empty context.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>private static char[]</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#HEXITS">HEXITS</a></span></code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>private java.lang.String</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#identifierEndQuoteString">identifierEndQuoteString</a></span></code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>private java.lang.String</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#identifierEscapedQuote">identifierEscapedQuote</a></span></code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>private java.lang.String</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#identifierQuoteString">identifierQuoteString</a></span></code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>protected static org.slf4j.Logger</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#LOGGER">LOGGER</a></span></code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected <a href="../config/NullCollation.html" title="enum in org.apache.calcite.config">NullCollation</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#nullCollation">nullCollation</a></span></code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>private org.apache.calcite.avatica.util.Casing</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#quotedCasing">quotedCasing</a></span></code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>private org.apache.calcite.avatica.util.Casing</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#unquotedCasing">unquotedCasing</a></span></code></th>
<td class="colLast">&nbsp;</td>
</tr>
</table>
</li>
</ul>
</section>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="constructor.summary">
<!-- -->
</a>
<h3>Constructor Summary</h3>
<table class="memberSummary">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Constructor</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr class="altColor">
<th class="colConstructorName" scope="row"><code><span class="memberNameLink"><a href="#%3Cinit%3E(org.apache.calcite.sql.SqlDialect.Context)">SqlDialect</a></span>&#8203;(<a href="SqlDialect.Context.html" title="interface in org.apache.calcite.sql">SqlDialect.Context</a>&nbsp;context)</code></th>
<td class="colLast">
<div class="block">Creates a SqlDialect.</div>
</td>
</tr>
<tr class="rowColor">
<th class="colConstructorName" scope="row"><code><span class="memberNameLink"><a href="#%3Cinit%3E(org.apache.calcite.sql.SqlDialect.DatabaseProduct,java.lang.String,java.lang.String)">SqlDialect</a></span>&#8203;(<a href="SqlDialect.DatabaseProduct.html" title="enum in org.apache.calcite.sql">SqlDialect.DatabaseProduct</a>&nbsp;databaseProduct,
java.lang.String&nbsp;databaseProductName,
java.lang.String&nbsp;identifierQuoteString)</code></th>
<td class="colLast">
<div class="block"><span class="deprecatedLabel">Deprecated.</span></div>
</td>
</tr>
<tr class="altColor">
<th class="colConstructorName" scope="row"><code><span class="memberNameLink"><a href="#%3Cinit%3E(org.apache.calcite.sql.SqlDialect.DatabaseProduct,java.lang.String,java.lang.String,org.apache.calcite.config.NullCollation)">SqlDialect</a></span>&#8203;(<a href="SqlDialect.DatabaseProduct.html" title="enum in org.apache.calcite.sql">SqlDialect.DatabaseProduct</a>&nbsp;databaseProduct,
java.lang.String&nbsp;databaseProductName,
java.lang.String&nbsp;identifierQuoteString,
<a href="../config/NullCollation.html" title="enum in org.apache.calcite.config">NullCollation</a>&nbsp;nullCollation)</code></th>
<td class="colLast">
<div class="block"><span class="deprecatedLabel">Deprecated.</span>
<div class="deprecationComment">Use <a href="#%3Cinit%3E(org.apache.calcite.sql.SqlDialect.Context)"><code>SqlDialect(Context)</code></a></div>
</div>
</td>
</tr>
</table>
</li>
</ul>
</section>
<!-- ========== METHOD SUMMARY =========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t1" class="tableTab"><span><a href="javascript:show(1);">Static Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t6" class="tableTab"><span><a href="javascript:show(32);">Deprecated Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Method</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>protected boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#allowsAs()">allowsAs</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code><a href="parser/SqlParser.ConfigBuilder.html" title="class in org.apache.calcite.sql.parser">SqlParser.ConfigBuilder</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#configureParser(org.apache.calcite.sql.parser.SqlParser.ConfigBuilder)">configureParser</a></span>&#8203;(<a href="parser/SqlParser.ConfigBuilder.html" title="class in org.apache.calcite.sql.parser">SqlParser.ConfigBuilder</a>&nbsp;configBuilder)</code></th>
<td class="colLast">
<div class="block">Copies settings from this dialect into a parser configuration.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>private static boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#containsNonAscii(java.lang.String)">containsNonAscii</a></span>&#8203;(java.lang.String&nbsp;s)</code></th>
<td class="colLast">
<div class="block">Returns whether the string contains any characters outside the
comfortable 7-bit ASCII range (32 through 127).</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>static <a href="SqlDialect.html" title="class in org.apache.calcite.sql">SqlDialect</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#create(java.sql.DatabaseMetaData)">create</a></span>&#8203;(java.sql.DatabaseMetaData&nbsp;databaseMetaData)</code></th>
<td class="colLast">
<div class="block"><span class="deprecatedLabel">Deprecated.</span>
<div class="deprecationComment">Replaced by <a href="SqlDialectFactory.html" title="interface in org.apache.calcite.sql"><code>SqlDialectFactory</code></a></div>
</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code><a href="../rel/RelFieldCollation.NullDirection.html" title="enum in org.apache.calcite.rel">RelFieldCollation.NullDirection</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#defaultNullDirection(org.apache.calcite.rel.RelFieldCollation.Direction)">defaultNullDirection</a></span>&#8203;(<a href="../rel/RelFieldCollation.Direction.html" title="enum in org.apache.calcite.rel">RelFieldCollation.Direction</a>&nbsp;direction)</code></th>
<td class="colLast">
<div class="block">Returns whether NULL values are sorted first or last, in this dialect,
in an ORDER BY item of a given direction.</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code>protected static <a href="SqlDialect.Context.html" title="interface in org.apache.calcite.sql">SqlDialect.Context</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#emptyContext()">emptyContext</a></span>()</code></th>
<td class="colLast">
<div class="block">Creates an empty context.</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code><a href="JoinType.html" title="enum in org.apache.calcite.sql">JoinType</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#emulateJoinTypeForCrossJoin()">emulateJoinTypeForCrossJoin</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code><a href="SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#emulateNullDirection(org.apache.calcite.sql.SqlNode,boolean,boolean)">emulateNullDirection</a></span>&#8203;(<a href="SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;node,
boolean&nbsp;nullsFirst,
boolean&nbsp;desc)</code></th>
<td class="colLast">
<div class="block">Returns the SqlNode for emulating the null direction for the given field
or <code>null</code> if no emulation needs to be done.</div>
</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code>protected <a href="SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#emulateNullDirectionWithIsNull(org.apache.calcite.sql.SqlNode,boolean,boolean)">emulateNullDirectionWithIsNull</a></span>&#8203;(<a href="SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;node,
boolean&nbsp;nullsFirst,
boolean&nbsp;desc)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code><a href="SqlDialect.CalendarPolicy.html" title="enum in org.apache.calcite.sql">SqlDialect.CalendarPolicy</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getCalendarPolicy()">getCalendarPolicy</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i10" class="altColor">
<td class="colFirst"><code><a href="SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getCastSpec(org.apache.calcite.rel.type.RelDataType)">getCastSpec</a></span>&#8203;(<a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;type)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i11" class="rowColor">
<td class="colFirst"><code><a href="validate/SqlConformance.html" title="interface in org.apache.calcite.sql.validate">SqlConformance</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getConformance()">getConformance</a></span>()</code></th>
<td class="colLast">
<div class="block">Returns the <a href="validate/SqlConformance.html" title="interface in org.apache.calcite.sql.validate"><code>SqlConformance</code></a> that matches this dialect.</div>
</td>
</tr>
<tr id="i12" class="altColor">
<td class="colFirst"><code><a href="SqlDialect.DatabaseProduct.html" title="enum in org.apache.calcite.sql">SqlDialect.DatabaseProduct</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getDatabaseProduct()">getDatabaseProduct</a></span>()</code></th>
<td class="colLast">
<div class="block"><span class="deprecatedLabel">Deprecated.</span>
<div class="deprecationComment">To be removed without replacement</div>
</div>
</td>
</tr>
<tr id="i13" class="rowColor">
<td class="colFirst"><code><a href="../config/NullCollation.html" title="enum in org.apache.calcite.config">NullCollation</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getNullCollation()">getNullCollation</a></span>()</code></th>
<td class="colLast">
<div class="block">Returns how NULL values are sorted if an ORDER BY item does not contain
NULLS ASCENDING or NULLS DESCENDING.</div>
</td>
</tr>
<tr id="i14" class="altColor">
<td class="colFirst"><code>static <a href="SqlDialect.DatabaseProduct.html" title="enum in org.apache.calcite.sql">SqlDialect.DatabaseProduct</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getProduct(java.lang.String,java.lang.String)">getProduct</a></span>&#8203;(java.lang.String&nbsp;productName,
java.lang.String&nbsp;productVersion)</code></th>
<td class="colLast">
<div class="block"><span class="deprecatedLabel">Deprecated.</span></div>
</td>
</tr>
<tr id="i15" class="rowColor">
<td class="colFirst"><code>org.apache.calcite.avatica.util.Casing</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getQuotedCasing()">getQuotedCasing</a></span>()</code></th>
<td class="colLast">
<div class="block">Returns how quoted identifiers are stored.</div>
</td>
</tr>
<tr id="i16" class="altColor">
<td class="colFirst"><code>protected org.apache.calcite.avatica.util.Quoting</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getQuoting()">getQuoting</a></span>()</code></th>
<td class="colLast">
<div class="block">Returns the quoting scheme, or null if the combination of
<a href="#identifierQuoteString"><code>identifierQuoteString</code></a> and <a href="#identifierEndQuoteString"><code>identifierEndQuoteString</code></a>
does not correspond to any known quoting scheme.</div>
</td>
</tr>
<tr id="i17" class="rowColor">
<td class="colFirst"><code><a href="../rel/type/RelDataTypeSystem.html" title="interface in org.apache.calcite.rel.type">RelDataTypeSystem</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getTypeSystem()">getTypeSystem</a></span>()</code></th>
<td class="colLast">
<div class="block">Returns the type system implementation for this dialect.</div>
</td>
</tr>
<tr id="i18" class="altColor">
<td class="colFirst"><code>org.apache.calcite.avatica.util.Casing</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getUnquotedCasing()">getUnquotedCasing</a></span>()</code></th>
<td class="colLast">
<div class="block">Returns how unquoted identifiers are stored.</div>
</td>
</tr>
<tr id="i19" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#hasImplicitTableAlias()">hasImplicitTableAlias</a></span>()</code></th>
<td class="colLast">
<div class="block">Returns whether a qualified table in the FROM clause has an implicit alias
which consists of just the table name.</div>
</td>
</tr>
<tr id="i20" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isCaseSensitive()">isCaseSensitive</a></span>()</code></th>
<td class="colLast">
<div class="block">Returns whether matching of identifiers is case-sensitive.</div>
</td>
</tr>
<tr id="i21" class="rowColor">
<td class="colFirst"><code>java.lang.String</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#quoteIdentifier(java.lang.String)">quoteIdentifier</a></span>&#8203;(java.lang.String&nbsp;val)</code></th>
<td class="colLast">
<div class="block">Encloses an identifier in quotation marks appropriate for the current SQL
dialect.</div>
</td>
</tr>
<tr id="i22" class="altColor">
<td class="colFirst"><code>java.lang.StringBuilder</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#quoteIdentifier(java.lang.StringBuilder,java.lang.String)">quoteIdentifier</a></span>&#8203;(java.lang.StringBuilder&nbsp;buf,
java.lang.String&nbsp;val)</code></th>
<td class="colLast">
<div class="block">Encloses an identifier in quotation marks appropriate for the current SQL
dialect, writing the result to a <code>StringBuilder</code>.</div>
</td>
</tr>
<tr id="i23" class="rowColor">
<td class="colFirst"><code>java.lang.StringBuilder</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#quoteIdentifier(java.lang.StringBuilder,java.util.List)">quoteIdentifier</a></span>&#8203;(java.lang.StringBuilder&nbsp;buf,
java.util.List&lt;java.lang.String&gt;&nbsp;identifiers)</code></th>
<td class="colLast">
<div class="block">Quotes a multi-part identifier.</div>
</td>
</tr>
<tr id="i24" class="altColor">
<td class="colFirst"><code>java.lang.String</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#quoteStringLiteral(java.lang.String)">quoteStringLiteral</a></span>&#8203;(java.lang.String&nbsp;val)</code></th>
<td class="colLast">
<div class="block">Converts a string into a string literal.</div>
</td>
</tr>
<tr id="i25" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#quoteStringLiteralUnicode(java.lang.StringBuilder,java.lang.String)">quoteStringLiteralUnicode</a></span>&#8203;(java.lang.StringBuilder&nbsp;buf,
java.lang.String&nbsp;val)</code></th>
<td class="colLast">
<div class="block">Converts a string into a unicode string literal.</div>
</td>
</tr>
<tr id="i26" class="altColor">
<td class="colFirst"><code>java.lang.String</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#quoteTimestampLiteral(java.sql.Timestamp)">quoteTimestampLiteral</a></span>&#8203;(java.sql.Timestamp&nbsp;timestamp)</code></th>
<td class="colLast">
<div class="block">Converts a timestamp to a SQL timestamp literal, e.g.</div>
</td>
</tr>
<tr id="i27" class="rowColor">
<td class="colFirst"><code>protected boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#requiresAliasForFromItems()">requiresAliasForFromItems</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i28" class="altColor">
<td class="colFirst"><code><a href="SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#rewriteSingleValueExpr(org.apache.calcite.sql.SqlNode)">rewriteSingleValueExpr</a></span>&#8203;(<a href="SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;aggCall)</code></th>
<td class="colLast">
<div class="block">Rewrite SINGLE_VALUE into expression based on database variants
E.g.</div>
</td>
</tr>
<tr id="i29" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#supportsAggregateFunction(org.apache.calcite.sql.SqlKind)">supportsAggregateFunction</a></span>&#8203;(<a href="SqlKind.html" title="enum in org.apache.calcite.sql">SqlKind</a>&nbsp;kind)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i30" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#supportsAliasedValues()">supportsAliasedValues</a></span>()</code></th>
<td class="colLast">
<div class="block">Returns whether the dialect supports VALUES in a sub-query with
and an "AS t(column, ...)" values to define column names.</div>
</td>
</tr>
<tr id="i31" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#supportsCharSet()">supportsCharSet</a></span>()</code></th>
<td class="colLast">
<div class="block">Returns whether the dialect supports character set names as part of a
data type, for instance <code>VARCHAR(30) CHARACTER SET `ISO-8859-1`</code>.</div>
</td>
</tr>
<tr id="i32" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#supportsFunction(org.apache.calcite.sql.SqlOperator,org.apache.calcite.rel.type.RelDataType,java.util.List)">supportsFunction</a></span>&#8203;(<a href="SqlOperator.html" title="class in org.apache.calcite.sql">SqlOperator</a>&nbsp;operator,
<a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;type,
java.util.List&lt;<a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&gt;&nbsp;paramTypes)</code></th>
<td class="colLast">
<div class="block">Returns whether this dialect supports a given function or operator.</div>
</td>
</tr>
<tr id="i33" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#supportsGroupByWithCube()">supportsGroupByWithCube</a></span>()</code></th>
<td class="colLast">
<div class="block">Returns whether this dialect supports "WITH CUBE" in "GROUP BY" clause.</div>
</td>
</tr>
<tr id="i34" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#supportsGroupByWithRollup()">supportsGroupByWithRollup</a></span>()</code></th>
<td class="colLast">
<div class="block">Returns whether this dialect supports "WITH ROLLUP" in the "GROUP BY"
clause.</div>
</td>
</tr>
<tr id="i35" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#supportsNestedAggregations()">supportsNestedAggregations</a></span>()</code></th>
<td class="colLast">
<div class="block">Returns whether the dialect supports nested aggregations, for instance
<code>SELECT SUM(SUM(1)) </code>.</div>
</td>
</tr>
<tr id="i36" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#supportsOffsetFetch()">supportsOffsetFetch</a></span>()</code></th>
<td class="colLast">
<div class="block"><span class="deprecatedLabel">Deprecated.</span>
<div class="deprecationComment">This method is no longer used.</div>
</div>
</td>
</tr>
<tr id="i37" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#supportsWindowFunctions()">supportsWindowFunctions</a></span>()</code></th>
<td class="colLast">
<div class="block">Returns whether this dialect supports window functions (OVER clause).</div>
</td>
</tr>
<tr id="i38" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#unparseCall(org.apache.calcite.sql.SqlWriter,org.apache.calcite.sql.SqlCall,int,int)">unparseCall</a></span>&#8203;(<a href="SqlWriter.html" title="interface in org.apache.calcite.sql">SqlWriter</a>&nbsp;writer,
<a href="SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a>&nbsp;call,
int&nbsp;leftPrec,
int&nbsp;rightPrec)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i39" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#unparseDateTimeLiteral(org.apache.calcite.sql.SqlWriter,org.apache.calcite.sql.SqlAbstractDateTimeLiteral,int,int)">unparseDateTimeLiteral</a></span>&#8203;(<a href="SqlWriter.html" title="interface in org.apache.calcite.sql">SqlWriter</a>&nbsp;writer,
<a href="SqlAbstractDateTimeLiteral.html" title="class in org.apache.calcite.sql">SqlAbstractDateTimeLiteral</a>&nbsp;literal,
int&nbsp;leftPrec,
int&nbsp;rightPrec)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i40" class="altColor">
<td class="colFirst"><code>protected void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#unparseFetchUsingAnsi(org.apache.calcite.sql.SqlWriter,org.apache.calcite.sql.SqlNode,org.apache.calcite.sql.SqlNode)">unparseFetchUsingAnsi</a></span>&#8203;(<a href="SqlWriter.html" title="interface in org.apache.calcite.sql">SqlWriter</a>&nbsp;writer,
<a href="SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;offset,
<a href="SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;fetch)</code></th>
<td class="colLast">
<div class="block">Unparses offset/fetch using ANSI standard "OFFSET offset ROWS FETCH NEXT
fetch ROWS ONLY" syntax.</div>
</td>
</tr>
<tr id="i41" class="rowColor">
<td class="colFirst"><code>protected void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#unparseFetchUsingLimit(org.apache.calcite.sql.SqlWriter,org.apache.calcite.sql.SqlNode,org.apache.calcite.sql.SqlNode)">unparseFetchUsingLimit</a></span>&#8203;(<a href="SqlWriter.html" title="interface in org.apache.calcite.sql">SqlWriter</a>&nbsp;writer,
<a href="SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;offset,
<a href="SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;fetch)</code></th>
<td class="colLast">
<div class="block">Unparses offset/fetch using "LIMIT fetch OFFSET offset" syntax.</div>
</td>
</tr>
<tr id="i42" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#unparseOffsetFetch(org.apache.calcite.sql.SqlWriter,org.apache.calcite.sql.SqlNode,org.apache.calcite.sql.SqlNode)">unparseOffsetFetch</a></span>&#8203;(<a href="SqlWriter.html" title="interface in org.apache.calcite.sql">SqlWriter</a>&nbsp;writer,
<a href="SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;offset,
<a href="SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;fetch)</code></th>
<td class="colLast">
<div class="block">Converts an offset and fetch into SQL.</div>
</td>
</tr>
<tr id="i43" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#unparseSqlDatetimeArithmetic(org.apache.calcite.sql.SqlWriter,org.apache.calcite.sql.SqlCall,org.apache.calcite.sql.SqlKind,int,int)">unparseSqlDatetimeArithmetic</a></span>&#8203;(<a href="SqlWriter.html" title="interface in org.apache.calcite.sql">SqlWriter</a>&nbsp;writer,
<a href="SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a>&nbsp;call,
<a href="SqlKind.html" title="enum in org.apache.calcite.sql">SqlKind</a>&nbsp;sqlKind,
int&nbsp;leftPrec,
int&nbsp;rightPrec)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i44" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#unparseSqlIntervalLiteral(org.apache.calcite.sql.SqlWriter,org.apache.calcite.sql.SqlIntervalLiteral,int,int)">unparseSqlIntervalLiteral</a></span>&#8203;(<a href="SqlWriter.html" title="interface in org.apache.calcite.sql">SqlWriter</a>&nbsp;writer,
<a href="SqlIntervalLiteral.html" title="class in org.apache.calcite.sql">SqlIntervalLiteral</a>&nbsp;literal,
int&nbsp;leftPrec,
int&nbsp;rightPrec)</code></th>
<td class="colLast">
<div class="block">Converts an interval literal to a SQL string.</div>
</td>
</tr>
<tr id="i45" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#unparseSqlIntervalQualifier(org.apache.calcite.sql.SqlWriter,org.apache.calcite.sql.SqlIntervalQualifier,org.apache.calcite.rel.type.RelDataTypeSystem)">unparseSqlIntervalQualifier</a></span>&#8203;(<a href="SqlWriter.html" title="interface in org.apache.calcite.sql">SqlWriter</a>&nbsp;writer,
<a href="SqlIntervalQualifier.html" title="class in org.apache.calcite.sql">SqlIntervalQualifier</a>&nbsp;qualifier,
<a href="../rel/type/RelDataTypeSystem.html" title="interface in org.apache.calcite.rel.type">RelDataTypeSystem</a>&nbsp;typeSystem)</code></th>
<td class="colLast">
<div class="block">Converts an interval qualifier to a SQL string.</div>
</td>
</tr>
<tr id="i46" class="altColor">
<td class="colFirst"><code>java.lang.String</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#unquoteStringLiteral(java.lang.String)">unquoteStringLiteral</a></span>&#8203;(java.lang.String&nbsp;val)</code></th>
<td class="colLast">
<div class="block">Converts a string literal back into a string.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.java.lang.Object">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.Object</h3>
<code>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</code></li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ FIELD DETAIL =========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="field.detail">
<!-- -->
</a>
<h3>Field Detail</h3>
<a id="LOGGER">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>LOGGER</h4>
<pre>protected static final&nbsp;org.slf4j.Logger LOGGER</pre>
</li>
</ul>
<a id="EMPTY_CONTEXT">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>EMPTY_CONTEXT</h4>
<pre>public static final&nbsp;<a href="SqlDialect.Context.html" title="interface in org.apache.calcite.sql">SqlDialect.Context</a> EMPTY_CONTEXT</pre>
<div class="block">Empty context.</div>
</li>
</ul>
<a id="DUMMY">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>DUMMY</h4>
<pre>@Deprecated
public static final&nbsp;<a href="SqlDialect.html" title="class in org.apache.calcite.sql">SqlDialect</a> DUMMY</pre>
<div class="deprecationBlock"><span class="deprecatedLabel">Deprecated.</span>
<div class="deprecationComment">Use <a href="dialect/AnsiSqlDialect.html#DEFAULT"><code>AnsiSqlDialect.DEFAULT</code></a> instead.</div>
</div>
</li>
</ul>
<a id="CALCITE">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>CALCITE</h4>
<pre>@Deprecated
public static final&nbsp;<a href="SqlDialect.html" title="class in org.apache.calcite.sql">SqlDialect</a> CALCITE</pre>
<div class="deprecationBlock"><span class="deprecatedLabel">Deprecated.</span>
<div class="deprecationComment">Use <a href="dialect/CalciteSqlDialect.html#DEFAULT"><code>CalciteSqlDialect.DEFAULT</code></a> instead.</div>
</div>
</li>
</ul>
<a id="BUILT_IN_OPERATORS_LIST">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>BUILT_IN_OPERATORS_LIST</h4>
<pre>protected static final&nbsp;java.util.Set&lt;<a href="SqlOperator.html" title="class in org.apache.calcite.sql">SqlOperator</a>&gt; BUILT_IN_OPERATORS_LIST</pre>
<div class="block">Built-in scalar functions and operators common for every dialect.</div>
</li>
</ul>
<a id="identifierQuoteString">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>identifierQuoteString</h4>
<pre>private final&nbsp;java.lang.String identifierQuoteString</pre>
</li>
</ul>
<a id="identifierEndQuoteString">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>identifierEndQuoteString</h4>
<pre>private final&nbsp;java.lang.String identifierEndQuoteString</pre>
</li>
</ul>
<a id="identifierEscapedQuote">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>identifierEscapedQuote</h4>
<pre>private final&nbsp;java.lang.String identifierEscapedQuote</pre>
</li>
</ul>
<a id="databaseProduct">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>databaseProduct</h4>
<pre>private final&nbsp;<a href="SqlDialect.DatabaseProduct.html" title="enum in org.apache.calcite.sql">SqlDialect.DatabaseProduct</a> databaseProduct</pre>
</li>
</ul>
<a id="nullCollation">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>nullCollation</h4>
<pre>protected final&nbsp;<a href="../config/NullCollation.html" title="enum in org.apache.calcite.config">NullCollation</a> nullCollation</pre>
</li>
</ul>
<a id="dataTypeSystem">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>dataTypeSystem</h4>
<pre>private final&nbsp;<a href="../rel/type/RelDataTypeSystem.html" title="interface in org.apache.calcite.rel.type">RelDataTypeSystem</a> dataTypeSystem</pre>
</li>
</ul>
<a id="unquotedCasing">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>unquotedCasing</h4>
<pre>private final&nbsp;org.apache.calcite.avatica.util.Casing unquotedCasing</pre>
</li>
</ul>
<a id="quotedCasing">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>quotedCasing</h4>
<pre>private final&nbsp;org.apache.calcite.avatica.util.Casing quotedCasing</pre>
</li>
</ul>
<a id="caseSensitive">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>caseSensitive</h4>
<pre>private final&nbsp;boolean caseSensitive</pre>
</li>
</ul>
<a id="HEXITS">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>HEXITS</h4>
<pre>private static final&nbsp;char[] HEXITS</pre>
</li>
</ul>
</li>
</ul>
</section>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="constructor.detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a id="&lt;init&gt;(org.apache.calcite.sql.SqlDialect.DatabaseProduct,java.lang.String,java.lang.String)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>SqlDialect</h4>
<pre>@Deprecated
public&nbsp;SqlDialect&#8203;(<a href="SqlDialect.DatabaseProduct.html" title="enum in org.apache.calcite.sql">SqlDialect.DatabaseProduct</a>&nbsp;databaseProduct,
java.lang.String&nbsp;databaseProductName,
java.lang.String&nbsp;identifierQuoteString)</pre>
<div class="deprecationBlock"><span class="deprecatedLabel">Deprecated.</span></div>
</li>
</ul>
<a id="&lt;init&gt;(org.apache.calcite.sql.SqlDialect.DatabaseProduct,java.lang.String,java.lang.String,org.apache.calcite.config.NullCollation)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>SqlDialect</h4>
<pre>@Deprecated
public&nbsp;SqlDialect&#8203;(<a href="SqlDialect.DatabaseProduct.html" title="enum in org.apache.calcite.sql">SqlDialect.DatabaseProduct</a>&nbsp;databaseProduct,
java.lang.String&nbsp;databaseProductName,
java.lang.String&nbsp;identifierQuoteString,
<a href="../config/NullCollation.html" title="enum in org.apache.calcite.config">NullCollation</a>&nbsp;nullCollation)</pre>
<div class="deprecationBlock"><span class="deprecatedLabel">Deprecated.</span>
<div class="deprecationComment">Use <a href="#%3Cinit%3E(org.apache.calcite.sql.SqlDialect.Context)"><code>SqlDialect(Context)</code></a></div>
</div>
<div class="block">Creates a SqlDialect.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>databaseProduct</code> - Database product; may be UNKNOWN, never null</dd>
<dd><code>databaseProductName</code> - Database product name from JDBC driver</dd>
<dd><code>identifierQuoteString</code> - String to quote identifiers. Null if quoting
is not supported. If "[", close quote is
deemed to be "]".</dd>
<dd><code>nullCollation</code> - Whether NULL values appear first or last</dd>
</dl>
</li>
</ul>
<a id="&lt;init&gt;(org.apache.calcite.sql.SqlDialect.Context)">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>SqlDialect</h4>
<pre>public&nbsp;SqlDialect&#8203;(<a href="SqlDialect.Context.html" title="interface in org.apache.calcite.sql">SqlDialect.Context</a>&nbsp;context)</pre>
<div class="block">Creates a SqlDialect.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>context</code> - All the information necessary to create a dialect</dd>
</dl>
</li>
</ul>
</li>
</ul>
</section>
<!-- ============ METHOD DETAIL ========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a id="create(java.sql.DatabaseMetaData)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>create</h4>
<pre class="methodSignature">@Deprecated
public static&nbsp;<a href="SqlDialect.html" title="class in org.apache.calcite.sql">SqlDialect</a>&nbsp;create&#8203;(java.sql.DatabaseMetaData&nbsp;databaseMetaData)</pre>
<div class="deprecationBlock"><span class="deprecatedLabel">Deprecated.</span>
<div class="deprecationComment">Replaced by <a href="SqlDialectFactory.html" title="interface in org.apache.calcite.sql"><code>SqlDialectFactory</code></a></div>
</div>
<div class="block">Creates a <code>SqlDialect</code> from a DatabaseMetaData.
<p>Does not maintain a reference to the DatabaseMetaData -- or, more
importantly, to its <code>Connection</code> -- after this call has
returned.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>databaseMetaData</code> - used to determine which dialect of SQL to generate</dd>
</dl>
</li>
</ul>
<a id="emptyContext()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>emptyContext</h4>
<pre class="methodSignature">protected static&nbsp;<a href="SqlDialect.Context.html" title="interface in org.apache.calcite.sql">SqlDialect.Context</a>&nbsp;emptyContext()</pre>
<div class="block">Creates an empty context. Use <a href="#EMPTY_CONTEXT"><code>EMPTY_CONTEXT</code></a> if possible.</div>
</li>
</ul>
<a id="getProduct(java.lang.String,java.lang.String)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getProduct</h4>
<pre class="methodSignature">@Deprecated
public static&nbsp;<a href="SqlDialect.DatabaseProduct.html" title="enum in org.apache.calcite.sql">SqlDialect.DatabaseProduct</a>&nbsp;getProduct&#8203;(java.lang.String&nbsp;productName,
java.lang.String&nbsp;productVersion)</pre>
<div class="deprecationBlock"><span class="deprecatedLabel">Deprecated.</span></div>
<div class="block">Converts a product name and version (per the JDBC driver) into a product
enumeration.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>productName</code> - Product name</dd>
<dd><code>productVersion</code> - Product version</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>database product</dd>
</dl>
</li>
</ul>
<a id="getTypeSystem()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getTypeSystem</h4>
<pre class="methodSignature">public&nbsp;<a href="../rel/type/RelDataTypeSystem.html" title="interface in org.apache.calcite.rel.type">RelDataTypeSystem</a>&nbsp;getTypeSystem()</pre>
<div class="block">Returns the type system implementation for this dialect.</div>
</li>
</ul>
<a id="quoteIdentifier(java.lang.String)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>quoteIdentifier</h4>
<pre class="methodSignature">public&nbsp;java.lang.String&nbsp;quoteIdentifier&#8203;(java.lang.String&nbsp;val)</pre>
<div class="block">Encloses an identifier in quotation marks appropriate for the current SQL
dialect.
<p>For example, <code>quoteIdentifier("emp")</code> yields a string
containing <code>"emp"</code> in Oracle, and a string containing <code>
[emp]</code> in Access.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>val</code> - Identifier to quote</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Quoted identifier</dd>
</dl>
</li>
</ul>
<a id="quoteIdentifier(java.lang.StringBuilder,java.lang.String)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>quoteIdentifier</h4>
<pre class="methodSignature">public&nbsp;java.lang.StringBuilder&nbsp;quoteIdentifier&#8203;(java.lang.StringBuilder&nbsp;buf,
java.lang.String&nbsp;val)</pre>
<div class="block">Encloses an identifier in quotation marks appropriate for the current SQL
dialect, writing the result to a <code>StringBuilder</code>.
<p>For example, <code>quoteIdentifier("emp")</code> yields a string
containing <code>"emp"</code> in Oracle, and a string containing <code>
[emp]</code> in Access.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>buf</code> - Buffer</dd>
<dd><code>val</code> - Identifier to quote</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>The buffer</dd>
</dl>
</li>
</ul>
<a id="quoteIdentifier(java.lang.StringBuilder,java.util.List)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>quoteIdentifier</h4>
<pre class="methodSignature">public&nbsp;java.lang.StringBuilder&nbsp;quoteIdentifier&#8203;(java.lang.StringBuilder&nbsp;buf,
java.util.List&lt;java.lang.String&gt;&nbsp;identifiers)</pre>
<div class="block">Quotes a multi-part identifier.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>buf</code> - Buffer</dd>
<dd><code>identifiers</code> - List of parts of the identifier to quote</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>The buffer</dd>
</dl>
</li>
</ul>
<a id="quoteStringLiteral(java.lang.String)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>quoteStringLiteral</h4>
<pre class="methodSignature">public&nbsp;java.lang.String&nbsp;quoteStringLiteral&#8203;(java.lang.String&nbsp;val)</pre>
<div class="block">Converts a string into a string literal. For example, <code>can't
run</code> becomes <code>'can''t run'</code>.</div>
</li>
</ul>
<a id="unparseCall(org.apache.calcite.sql.SqlWriter,org.apache.calcite.sql.SqlCall,int,int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>unparseCall</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;unparseCall&#8203;(<a href="SqlWriter.html" title="interface in org.apache.calcite.sql">SqlWriter</a>&nbsp;writer,
<a href="SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a>&nbsp;call,
int&nbsp;leftPrec,
int&nbsp;rightPrec)</pre>
</li>
</ul>
<a id="unparseDateTimeLiteral(org.apache.calcite.sql.SqlWriter,org.apache.calcite.sql.SqlAbstractDateTimeLiteral,int,int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>unparseDateTimeLiteral</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;unparseDateTimeLiteral&#8203;(<a href="SqlWriter.html" title="interface in org.apache.calcite.sql">SqlWriter</a>&nbsp;writer,
<a href="SqlAbstractDateTimeLiteral.html" title="class in org.apache.calcite.sql">SqlAbstractDateTimeLiteral</a>&nbsp;literal,
int&nbsp;leftPrec,
int&nbsp;rightPrec)</pre>
</li>
</ul>
<a id="unparseSqlDatetimeArithmetic(org.apache.calcite.sql.SqlWriter,org.apache.calcite.sql.SqlCall,org.apache.calcite.sql.SqlKind,int,int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>unparseSqlDatetimeArithmetic</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;unparseSqlDatetimeArithmetic&#8203;(<a href="SqlWriter.html" title="interface in org.apache.calcite.sql">SqlWriter</a>&nbsp;writer,
<a href="SqlCall.html" title="class in org.apache.calcite.sql">SqlCall</a>&nbsp;call,
<a href="SqlKind.html" title="enum in org.apache.calcite.sql">SqlKind</a>&nbsp;sqlKind,
int&nbsp;leftPrec,
int&nbsp;rightPrec)</pre>
</li>
</ul>
<a id="unparseSqlIntervalQualifier(org.apache.calcite.sql.SqlWriter,org.apache.calcite.sql.SqlIntervalQualifier,org.apache.calcite.rel.type.RelDataTypeSystem)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>unparseSqlIntervalQualifier</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;unparseSqlIntervalQualifier&#8203;(<a href="SqlWriter.html" title="interface in org.apache.calcite.sql">SqlWriter</a>&nbsp;writer,
<a href="SqlIntervalQualifier.html" title="class in org.apache.calcite.sql">SqlIntervalQualifier</a>&nbsp;qualifier,
<a href="../rel/type/RelDataTypeSystem.html" title="interface in org.apache.calcite.rel.type">RelDataTypeSystem</a>&nbsp;typeSystem)</pre>
<div class="block">Converts an interval qualifier to a SQL string. The default implementation
returns strings such as
<code>INTERVAL '1 2:3:4' DAY(4) TO SECOND(4)</code>.</div>
</li>
</ul>
<a id="unparseSqlIntervalLiteral(org.apache.calcite.sql.SqlWriter,org.apache.calcite.sql.SqlIntervalLiteral,int,int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>unparseSqlIntervalLiteral</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;unparseSqlIntervalLiteral&#8203;(<a href="SqlWriter.html" title="interface in org.apache.calcite.sql">SqlWriter</a>&nbsp;writer,
<a href="SqlIntervalLiteral.html" title="class in org.apache.calcite.sql">SqlIntervalLiteral</a>&nbsp;literal,
int&nbsp;leftPrec,
int&nbsp;rightPrec)</pre>
<div class="block">Converts an interval literal to a SQL string. The default implementation
returns strings such as
<code>INTERVAL '1 2:3:4' DAY(4) TO SECOND(4)</code>.</div>
</li>
</ul>
<a id="containsNonAscii(java.lang.String)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>containsNonAscii</h4>
<pre class="methodSignature">private static&nbsp;boolean&nbsp;containsNonAscii&#8203;(java.lang.String&nbsp;s)</pre>
<div class="block">Returns whether the string contains any characters outside the
comfortable 7-bit ASCII range (32 through 127).</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>s</code> - String</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Whether string contains any non-7-bit-ASCII characters</dd>
</dl>
</li>
</ul>
<a id="quoteStringLiteralUnicode(java.lang.StringBuilder,java.lang.String)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>quoteStringLiteralUnicode</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;quoteStringLiteralUnicode&#8203;(java.lang.StringBuilder&nbsp;buf,
java.lang.String&nbsp;val)</pre>
<div class="block">Converts a string into a unicode string literal. For example,
<code>can't{tab}run\</code> becomes <code>u'can''t\0009run\\'</code>.</div>
</li>
</ul>
<a id="unquoteStringLiteral(java.lang.String)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>unquoteStringLiteral</h4>
<pre class="methodSignature">public&nbsp;java.lang.String&nbsp;unquoteStringLiteral&#8203;(java.lang.String&nbsp;val)</pre>
<div class="block">Converts a string literal back into a string. For example, <code>'can''t
run'</code> becomes <code>can't run</code>.</div>
</li>
</ul>
<a id="allowsAs()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>allowsAs</h4>
<pre class="methodSignature">protected&nbsp;boolean&nbsp;allowsAs()</pre>
</li>
</ul>
<a id="requiresAliasForFromItems()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>requiresAliasForFromItems</h4>
<pre class="methodSignature">protected&nbsp;boolean&nbsp;requiresAliasForFromItems()</pre>
</li>
</ul>
<a id="hasImplicitTableAlias()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>hasImplicitTableAlias</h4>
<pre class="methodSignature">public&nbsp;boolean&nbsp;hasImplicitTableAlias()</pre>
<div class="block">Returns whether a qualified table in the FROM clause has an implicit alias
which consists of just the table name.
<p>For example, in <a href="SqlDialect.DatabaseProduct.html#ORACLE"><code>SqlDialect.DatabaseProduct.ORACLE</code></a>
<blockquote>SELECT * FROM sales.emp</blockquote>
<p>is equivalent to
<blockquote>SELECT * FROM sales.emp AS emp</blockquote>
<p>and therefore
<blockquote>SELECT emp.empno FROM sales.emp</blockquote>
<p>is valid. But <a href="SqlDialect.DatabaseProduct.html#DB2"><code>SqlDialect.DatabaseProduct.DB2</code></a> does not have an implicit
alias, so the previous query it not valid; you need to write
<blockquote>SELECT sales.emp.empno FROM sales.emp</blockquote>
<p>Returns true for all databases except DB2.</div>
</li>
</ul>
<a id="quoteTimestampLiteral(java.sql.Timestamp)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>quoteTimestampLiteral</h4>
<pre class="methodSignature">public&nbsp;java.lang.String&nbsp;quoteTimestampLiteral&#8203;(java.sql.Timestamp&nbsp;timestamp)</pre>
<div class="block">Converts a timestamp to a SQL timestamp literal, e.g.
<code>TIMESTAMP '2009-12-17 12:34:56'</code>.
<p>Timestamp values do not have a time zone. We therefore interpret them
as the number of milliseconds after the UTC epoch, and the formatted
value is that time in UTC.
<p>In particular,
<blockquote><code>quoteTimestampLiteral(new Timestamp(0));</code>
</blockquote>
<p>returns <code>TIMESTAMP '1970-01-01 00:00:00'</code>, regardless of the JVM's
time zone.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>timestamp</code> - Timestamp</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>SQL timestamp literal</dd>
</dl>
</li>
</ul>
<a id="getDatabaseProduct()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getDatabaseProduct</h4>
<pre class="methodSignature">@Deprecated
public&nbsp;<a href="SqlDialect.DatabaseProduct.html" title="enum in org.apache.calcite.sql">SqlDialect.DatabaseProduct</a>&nbsp;getDatabaseProduct()</pre>
<div class="deprecationBlock"><span class="deprecatedLabel">Deprecated.</span>
<div class="deprecationComment">To be removed without replacement</div>
</div>
<div class="block">Returns the database this dialect belongs to,
<a href="SqlDialect.DatabaseProduct.html#UNKNOWN"><code>SqlDialect.DatabaseProduct.UNKNOWN</code></a> if not known, never null.
<p>Please be judicious in how you use this method. If you wish to determine
whether a dialect has a particular capability or behavior, it is usually
better to add a method to SqlDialect and override that method in particular
sub-classes of SqlDialect.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Database product</dd>
</dl>
</li>
</ul>
<a id="supportsCharSet()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>supportsCharSet</h4>
<pre class="methodSignature">public&nbsp;boolean&nbsp;supportsCharSet()</pre>
<div class="block">Returns whether the dialect supports character set names as part of a
data type, for instance <code>VARCHAR(30) CHARACTER SET `ISO-8859-1`</code>.</div>
</li>
</ul>
<a id="supportsAggregateFunction(org.apache.calcite.sql.SqlKind)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>supportsAggregateFunction</h4>
<pre class="methodSignature">public&nbsp;boolean&nbsp;supportsAggregateFunction&#8203;(<a href="SqlKind.html" title="enum in org.apache.calcite.sql">SqlKind</a>&nbsp;kind)</pre>
</li>
</ul>
<a id="supportsWindowFunctions()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>supportsWindowFunctions</h4>
<pre class="methodSignature">public&nbsp;boolean&nbsp;supportsWindowFunctions()</pre>
<div class="block">Returns whether this dialect supports window functions (OVER clause).</div>
</li>
</ul>
<a id="supportsFunction(org.apache.calcite.sql.SqlOperator,org.apache.calcite.rel.type.RelDataType,java.util.List)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>supportsFunction</h4>
<pre class="methodSignature">public&nbsp;boolean&nbsp;supportsFunction&#8203;(<a href="SqlOperator.html" title="class in org.apache.calcite.sql">SqlOperator</a>&nbsp;operator,
<a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;type,
java.util.List&lt;<a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&gt;&nbsp;paramTypes)</pre>
<div class="block">Returns whether this dialect supports a given function or operator.
It only applies to built-in scalar functions and operators, since
user-defined functions and procedures should be read by JdbcSchema.</div>
</li>
</ul>
<a id="getCalendarPolicy()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getCalendarPolicy</h4>
<pre class="methodSignature">public&nbsp;<a href="SqlDialect.CalendarPolicy.html" title="enum in org.apache.calcite.sql">SqlDialect.CalendarPolicy</a>&nbsp;getCalendarPolicy()</pre>
</li>
</ul>
<a id="getCastSpec(org.apache.calcite.rel.type.RelDataType)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getCastSpec</h4>
<pre class="methodSignature">public&nbsp;<a href="SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;getCastSpec&#8203;(<a href="../rel/type/RelDataType.html" title="interface in org.apache.calcite.rel.type">RelDataType</a>&nbsp;type)</pre>
</li>
</ul>
<a id="rewriteSingleValueExpr(org.apache.calcite.sql.SqlNode)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>rewriteSingleValueExpr</h4>
<pre class="methodSignature">public&nbsp;<a href="SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;rewriteSingleValueExpr&#8203;(<a href="SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;aggCall)</pre>
<div class="block">Rewrite SINGLE_VALUE into expression based on database variants
E.g. HSQLDB, MYSQL, ORACLE, etc</div>
</li>
</ul>
<a id="emulateNullDirection(org.apache.calcite.sql.SqlNode,boolean,boolean)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>emulateNullDirection</h4>
<pre class="methodSignature">public&nbsp;<a href="SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;emulateNullDirection&#8203;(<a href="SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;node,
boolean&nbsp;nullsFirst,
boolean&nbsp;desc)</pre>
<div class="block">Returns the SqlNode for emulating the null direction for the given field
or <code>null</code> if no emulation needs to be done.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>node</code> - The SqlNode representing the expression</dd>
<dd><code>nullsFirst</code> - Whether nulls should come first</dd>
<dd><code>desc</code> - Whether the sort direction is
<a href="../rel/RelFieldCollation.Direction.html#DESCENDING"><code>RelFieldCollation.Direction.DESCENDING</code></a> or
<a href="../rel/RelFieldCollation.Direction.html#STRICTLY_DESCENDING"><code>RelFieldCollation.Direction.STRICTLY_DESCENDING</code></a></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>A SqlNode for null direction emulation or <code>null</code> if not required</dd>
</dl>
</li>
</ul>
<a id="emulateJoinTypeForCrossJoin()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>emulateJoinTypeForCrossJoin</h4>
<pre class="methodSignature">public&nbsp;<a href="JoinType.html" title="enum in org.apache.calcite.sql">JoinType</a>&nbsp;emulateJoinTypeForCrossJoin()</pre>
</li>
</ul>
<a id="emulateNullDirectionWithIsNull(org.apache.calcite.sql.SqlNode,boolean,boolean)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>emulateNullDirectionWithIsNull</h4>
<pre class="methodSignature">protected&nbsp;<a href="SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;emulateNullDirectionWithIsNull&#8203;(<a href="SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;node,
boolean&nbsp;nullsFirst,
boolean&nbsp;desc)</pre>
</li>
</ul>
<a id="supportsOffsetFetch()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>supportsOffsetFetch</h4>
<pre class="methodSignature">@Deprecated
public&nbsp;boolean&nbsp;supportsOffsetFetch()</pre>
<div class="deprecationBlock"><span class="deprecatedLabel">Deprecated.</span>
<div class="deprecationComment">This method is no longer used. To change how the dialect
unparses offset/fetch, override the <a href="#unparseOffsetFetch(org.apache.calcite.sql.SqlWriter,org.apache.calcite.sql.SqlNode,org.apache.calcite.sql.SqlNode)"><code>unparseOffsetFetch(org.apache.calcite.sql.SqlWriter, org.apache.calcite.sql.SqlNode, org.apache.calcite.sql.SqlNode)</code></a> method.</div>
</div>
<div class="block">Returns whether the dialect supports OFFSET/FETCH clauses
introduced by SQL:2008, for instance
<code>OFFSET 10 ROWS FETCH NEXT 20 ROWS ONLY</code>.
If false, we assume that the dialect supports the alternative syntax
<code>LIMIT 20 OFFSET 10</code>.</div>
</li>
</ul>
<a id="unparseOffsetFetch(org.apache.calcite.sql.SqlWriter,org.apache.calcite.sql.SqlNode,org.apache.calcite.sql.SqlNode)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>unparseOffsetFetch</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;unparseOffsetFetch&#8203;(<a href="SqlWriter.html" title="interface in org.apache.calcite.sql">SqlWriter</a>&nbsp;writer,
<a href="SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;offset,
<a href="SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;fetch)</pre>
<div class="block">Converts an offset and fetch into SQL.
<p>At least one of <code>offset</code> and <code>fetch</code> must be provided.
<p>Common options:
<ul>
<li><code>OFFSET offset ROWS FETCH NEXT fetch ROWS ONLY</code>
(ANSI standard SQL, Oracle, PostgreSQL, and the default)
<li><code>LIMIT fetch OFFSET offset</code> (Apache Hive, MySQL, Redshift)
</ul></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>writer</code> - Writer</dd>
<dd><code>offset</code> - Number of rows to skip before emitting, or null</dd>
<dd><code>fetch</code> - Number of rows to fetch, or null</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="#unparseFetchUsingAnsi(org.apache.calcite.sql.SqlWriter,org.apache.calcite.sql.SqlNode,org.apache.calcite.sql.SqlNode)"><code>unparseFetchUsingAnsi(SqlWriter, SqlNode, SqlNode)</code></a>,
<a href="#unparseFetchUsingLimit(org.apache.calcite.sql.SqlWriter,org.apache.calcite.sql.SqlNode,org.apache.calcite.sql.SqlNode)"><code>unparseFetchUsingLimit(SqlWriter, SqlNode, SqlNode)</code></a></dd>
</dl>
</li>
</ul>
<a id="unparseFetchUsingAnsi(org.apache.calcite.sql.SqlWriter,org.apache.calcite.sql.SqlNode,org.apache.calcite.sql.SqlNode)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>unparseFetchUsingAnsi</h4>
<pre class="methodSignature">protected final&nbsp;void&nbsp;unparseFetchUsingAnsi&#8203;(<a href="SqlWriter.html" title="interface in org.apache.calcite.sql">SqlWriter</a>&nbsp;writer,
<a href="SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;offset,
<a href="SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;fetch)</pre>
<div class="block">Unparses offset/fetch using ANSI standard "OFFSET offset ROWS FETCH NEXT
fetch ROWS ONLY" syntax.</div>
</li>
</ul>
<a id="unparseFetchUsingLimit(org.apache.calcite.sql.SqlWriter,org.apache.calcite.sql.SqlNode,org.apache.calcite.sql.SqlNode)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>unparseFetchUsingLimit</h4>
<pre class="methodSignature">protected final&nbsp;void&nbsp;unparseFetchUsingLimit&#8203;(<a href="SqlWriter.html" title="interface in org.apache.calcite.sql">SqlWriter</a>&nbsp;writer,
<a href="SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;offset,
<a href="SqlNode.html" title="class in org.apache.calcite.sql">SqlNode</a>&nbsp;fetch)</pre>
<div class="block">Unparses offset/fetch using "LIMIT fetch OFFSET offset" syntax.</div>
</li>
</ul>
<a id="supportsNestedAggregations()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>supportsNestedAggregations</h4>
<pre class="methodSignature">public&nbsp;boolean&nbsp;supportsNestedAggregations()</pre>
<div class="block">Returns whether the dialect supports nested aggregations, for instance
<code>SELECT SUM(SUM(1)) </code>.</div>
</li>
</ul>
<a id="supportsGroupByWithRollup()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>supportsGroupByWithRollup</h4>
<pre class="methodSignature">public&nbsp;boolean&nbsp;supportsGroupByWithRollup()</pre>
<div class="block">Returns whether this dialect supports "WITH ROLLUP" in the "GROUP BY"
clause.
<p>For instance, in MySQL version 5,
<blockquote>
<code>
SELECT deptno, job, COUNT(*) AS c
FROM emp
GROUP BY deptno, job WITH ROLLUP
</code>
</blockquote>
<p>is equivalent to standard SQL
<blockquote>
<code>
SELECT deptno, job, COUNT(*) AS c
FROM emp
GROUP BY ROLLUP(deptno, job)
ORDER BY deptno, job
</code>
</blockquote>
<p>The "WITH ROLLUP" clause was introduced in MySQL and is not standard
SQL.
<p>See also <a href="#supportsAggregateFunction(org.apache.calcite.sql.SqlKind)"><code>supportsAggregateFunction(SqlKind)</code></a> applied to
<a href="SqlKind.html#ROLLUP"><code>SqlKind.ROLLUP</code></a>, which returns true in MySQL 8 and higher.</div>
</li>
</ul>
<a id="supportsGroupByWithCube()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>supportsGroupByWithCube</h4>
<pre class="methodSignature">public&nbsp;boolean&nbsp;supportsGroupByWithCube()</pre>
<div class="block">Returns whether this dialect supports "WITH CUBE" in "GROUP BY" clause.</div>
</li>
</ul>
<a id="getNullCollation()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getNullCollation</h4>
<pre class="methodSignature">public&nbsp;<a href="../config/NullCollation.html" title="enum in org.apache.calcite.config">NullCollation</a>&nbsp;getNullCollation()</pre>
<div class="block">Returns how NULL values are sorted if an ORDER BY item does not contain
NULLS ASCENDING or NULLS DESCENDING.</div>
</li>
</ul>
<a id="defaultNullDirection(org.apache.calcite.rel.RelFieldCollation.Direction)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>defaultNullDirection</h4>
<pre class="methodSignature">@Nonnull
public&nbsp;<a href="../rel/RelFieldCollation.NullDirection.html" title="enum in org.apache.calcite.rel">RelFieldCollation.NullDirection</a>&nbsp;defaultNullDirection&#8203;(<a href="../rel/RelFieldCollation.Direction.html" title="enum in org.apache.calcite.rel">RelFieldCollation.Direction</a>&nbsp;direction)</pre>
<div class="block">Returns whether NULL values are sorted first or last, in this dialect,
in an ORDER BY item of a given direction.</div>
</li>
</ul>
<a id="supportsAliasedValues()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>supportsAliasedValues</h4>
<pre class="methodSignature">public&nbsp;boolean&nbsp;supportsAliasedValues()</pre>
<div class="block">Returns whether the dialect supports VALUES in a sub-query with
and an "AS t(column, ...)" values to define column names.
<p>Currently, only Oracle does not. For this, we generate "SELECT v0 AS c0,
v1 AS c1 ... UNION ALL ...". We may need to refactor this method when we
support VALUES for other dialects.</div>
</li>
</ul>
<a id="configureParser(org.apache.calcite.sql.parser.SqlParser.ConfigBuilder)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>configureParser</h4>
<pre class="methodSignature">@Nonnull
public&nbsp;<a href="parser/SqlParser.ConfigBuilder.html" title="class in org.apache.calcite.sql.parser">SqlParser.ConfigBuilder</a>&nbsp;configureParser&#8203;(<a href="parser/SqlParser.ConfigBuilder.html" title="class in org.apache.calcite.sql.parser">SqlParser.ConfigBuilder</a>&nbsp;configBuilder)</pre>
<div class="block">Copies settings from this dialect into a parser configuration.
<p><code>SqlDialect</code>, <a href="parser/SqlParser.Config.html" title="interface in org.apache.calcite.sql.parser"><code>SqlParser.Config</code></a> and <a href="validate/SqlConformance.html" title="interface in org.apache.calcite.sql.validate"><code>SqlConformance</code></a>
cover different aspects of the same thing - the dialect of SQL spoken by a
database - and this method helps to bridge between them. (The aspects are,
respectively, generating SQL to send to a source database, parsing SQL
sent to Calcite, and validating queries sent to Calcite. It makes sense to
keep them as separate interfaces because they are used by different
modules.)
<p>The settings copied may differ among dialects, and may change over time,
but currently include the following:
<ul>
<li><a href="#getQuoting()"><code>getQuoting()</code></a>
<li><a href="#getQuotedCasing()"><code>getQuotedCasing()</code></a>
<li><a href="#getUnquotedCasing()"><code>getUnquotedCasing()</code></a>
<li><a href="#isCaseSensitive()"><code>isCaseSensitive()</code></a>
<li><a href="#getConformance()"><code>getConformance()</code></a>
</ul></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>configBuilder</code> - Parser configuration builder</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>The configuration builder</dd>
</dl>
</li>
</ul>
<a id="getConformance()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getConformance</h4>
<pre class="methodSignature">@Nonnull
public&nbsp;<a href="validate/SqlConformance.html" title="interface in org.apache.calcite.sql.validate">SqlConformance</a>&nbsp;getConformance()</pre>
<div class="block">Returns the <a href="validate/SqlConformance.html" title="interface in org.apache.calcite.sql.validate"><code>SqlConformance</code></a> that matches this dialect.
<p>The base implementation returns its best guess, based upon
<a href="#databaseProduct"><code>databaseProduct</code></a>; sub-classes may override.</div>
</li>
</ul>
<a id="getQuoting()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getQuoting</h4>
<pre class="methodSignature">protected&nbsp;org.apache.calcite.avatica.util.Quoting&nbsp;getQuoting()</pre>
<div class="block">Returns the quoting scheme, or null if the combination of
<a href="#identifierQuoteString"><code>identifierQuoteString</code></a> and <a href="#identifierEndQuoteString"><code>identifierEndQuoteString</code></a>
does not correspond to any known quoting scheme.</div>
</li>
</ul>
<a id="getUnquotedCasing()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getUnquotedCasing</h4>
<pre class="methodSignature">public&nbsp;org.apache.calcite.avatica.util.Casing&nbsp;getUnquotedCasing()</pre>
<div class="block">Returns how unquoted identifiers are stored.</div>
</li>
</ul>
<a id="getQuotedCasing()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getQuotedCasing</h4>
<pre class="methodSignature">public&nbsp;org.apache.calcite.avatica.util.Casing&nbsp;getQuotedCasing()</pre>
<div class="block">Returns how quoted identifiers are stored.</div>
</li>
</ul>
<a id="isCaseSensitive()">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>isCaseSensitive</h4>
<pre class="methodSignature">public&nbsp;boolean&nbsp;isCaseSensitive()</pre>
<div class="block">Returns whether matching of identifiers is case-sensitive.</div>
</li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
</div>
</main>
<!-- ========= END OF CLASS DATA ========= -->
<footer role="contentinfo">
<nav role="navigation">
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a id="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/SqlDialect.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../index-all.html">Index</a></li>
<li><a href="../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li><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="subNavList">
<li>Detail:&nbsp;</li>
<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a id="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</nav>
<p class="legalCopy"><small>Copyright &#169; 2012&#x2013;2019 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
</footer>
</body>
</html>