Class SqlDialect
- Direct Known Subclasses:
AccessSqlDialect
,AnsiSqlDialect
,BigQuerySqlDialect
,CalciteSqlDialect
,ClickHouseSqlDialect
,Db2SqlDialect
,DerbySqlDialect
,ExasolSqlDialect
,FirebirdSqlDialect
,FireboltSqlDialect
,H2SqlDialect
,HiveSqlDialect
,HsqldbSqlDialect
,InfobrightSqlDialect
,InformixSqlDialect
,IngresSqlDialect
,InterbaseSqlDialect
,JethroDataSqlDialect
,LucidDbSqlDialect
,MssqlSqlDialect
,MysqlSqlDialect
,NeoviewSqlDialect
,NetezzaSqlDialect
,OracleSqlDialect
,ParaccelSqlDialect
,PhoenixSqlDialect
,PostgresqlSqlDialect
,PrestoSqlDialect
,RedshiftSqlDialect
,SnowflakeSqlDialect
,SparkSqlDialect
,SybaseSqlDialect
,TeradataSqlDialect
,VerticaSqlDialect
SqlDialect
encapsulates the differences between dialects of SQL.
It is used by classes such as SqlWriter
and
SqlBuilder
.
To add a new SqlDialect
sub-class, extends this class to hold 2 public final
static member:
- DEFAULT_CONTEXT: a default
SqlDialect.Context
instance, which can be used to customize or extending the dialect if the DEFAULT instance does not meet the requests - DEFAULT: the default
SqlDialect
instance with context properties defined withDEFAULT_CONTEXT
-
Nested Class Summary
Modifier and TypeClassDescriptionstatic enum
Whether this JDBC driver needs you to pass a Calendar object to methods such asResultSet.getTimestamp(int, java.util.Calendar)
.static interface
Information for creating a dialect.static enum
Rough list of flavors of database.static class
Deprecated. -
Field Summary
Modifier and TypeFieldDescriptionprotected static final Set<SqlOperator>
Built-in scalar functions and operators common for every dialect.static final SqlDialect.Context
Empty context.protected final @Nullable String
protected final @Nullable String
protected final @Nullable String
protected final String
protected final String
protected final String
protected static final org.slf4j.Logger
protected final NullCollation
-
Constructor Summary
ConstructorDescriptionSqlDialect
(SqlDialect.Context context) Creates a SqlDialect.SqlDialect
(SqlDialect.DatabaseProduct databaseProduct, String databaseProductName, String identifierQuoteString) Deprecated.SqlDialect
(SqlDialect.DatabaseProduct databaseProduct, String databaseProductName, String identifierQuoteString, NullCollation nullCollation) Deprecated. -
Method Summary
Modifier and TypeMethodDescriptionprotected boolean
allowsAs()
configureParser
(SqlParser.Config config) Copies settings from this dialect into a parser configuration.configureParser
(SqlParser.ConfigBuilder configBuilder) Deprecated.protected static boolean
Returns whether the string contains any characters outside the comfortable 7-bit ASCII range (32 through 127, plus linefeed (10) and carriage return (13)).static SqlDialect
create
(DatabaseMetaData databaseMetaData) Deprecated.Replaced bySqlDialectFactory
defaultNullDirection
(RelFieldCollation.Direction direction) Returns whether NULL values are sorted first or last, in this dialect, in an ORDER BY item of a given direction.@Nullable SqlNode
emulateNullDirection
(SqlNode node, boolean nullsFirst, boolean desc) Returns the SqlNode for emulating the null direction for the given field ornull
if no emulation needs to be done.protected @Nullable SqlNode
emulateNullDirectionWithIsNull
(SqlNode node, boolean nullsFirst, boolean desc) @Nullable SqlNode
getCastSpec
(RelDataType type) Returns SqlNode for type in "cast(column as type)", which might be different between databases by type name, precision etc.Returns theSqlConformance
that matches this dialect.Deprecated.To be removed without replacementReturns a description of the format string used by functions in this dialect.Returns how NULL values are sorted if an ORDER BY item does not contain NULLS ASCENDING or NULLS DESCENDING.static SqlDialect.DatabaseProduct
getProduct
(String productName, String productVersion) Deprecated.org.apache.calcite.avatica.util.Casing
Returns how quoted identifiers are stored.protected @Nullable org.apache.calcite.avatica.util.Quoting
Returns the quoting scheme, or null if the combination ofidentifierQuoteString
andidentifierEndQuoteString
does not correspond to any known quoting scheme.Returns the name of the system table that has precisely one row.Returns the type system implementation for this dialect.org.apache.calcite.avatica.util.Casing
Returns how unquoted identifiers are stored.boolean
Returns whether a qualified table in the FROM clause has an implicit alias which consists of just the table name.protected boolean
Returns whether to quote an identifier.boolean
Returns whether matching of identifiers is case-sensitive.quoteIdentifier
(String val) Encloses an identifier in quotation marks appropriate for the current SQL dialect.quoteIdentifier
(StringBuilder buf, String val) Encloses an identifier in quotation marks appropriate for the current SQL dialect, writing the result to aStringBuilder
.quoteIdentifier
(StringBuilder buf, List<String> identifiers) Quotes a multi-part identifier.final String
quoteStringLiteral
(String val) Converts a string into a string literal.void
quoteStringLiteral
(StringBuilder buf, @Nullable String charsetName, String val) Appends a string literal to a buffer.void
quoteStringLiteralUnicode
(StringBuilder buf, String val) Converts a string into a unicode string literal.quoteTimestampLiteral
(Timestamp timestamp) Converts a timestamp to a SQL timestamp literal, e.g.boolean
Whether a sub-query in the FROM clause must have an alias.protected static SqlNode
rewriteMaxMin
(SqlNode aggCall, RelDataType relDataType) Helper for rewrites of MAX/MIN.rewriteMaxMinExpr
(SqlNode aggCall, RelDataType relDataType) Rewrites MAX(x)/MIN(x) as BOOL_OR(x)/BOOL_AND(x) for certain database variants (Postgres and Redshift, currently).rewriteSingleValueExpr
(SqlNode aggCall, RelDataType relDataType) Rewrites SINGLE_VALUE into expression based on database variants E.g.boolean
Returns whether this dialect supports case when return boolean type.boolean
boolean
Returns whether this dialect supports the use of FILTER clauses for aggregate functions.boolean
Returns whether the dialect supports VALUES in a sub-query with and an "AS t(column, ...)" values to define column names.boolean
Returns whether this dialect supports APPROX_COUNT_DISTINCT functions.boolean
Returns whether the dialect supports character set names as part of a data type, for instanceVARCHAR(30) CHARACTER SET `ISO-8859-1`
.boolean
supportsDataType
(RelDataType type) Returns whether this dialect supports a given type.boolean
supportsFunction
(SqlOperator operator, RelDataType type, List<RelDataType> paramTypes) Returns whether this dialect supports a given function or operator.boolean
Returns whether the dialect supports GROUP BY literals.boolean
Returns whether this dialect supports "WITH CUBE" in "GROUP BY" clause.boolean
Returns whether this dialect supports "WITH ROLLUP" in the "GROUP BY" clause.boolean
Returns whether the dialect supports implicit type coercion.boolean
supportsJoinType
(JoinRelType joinType) Returns whether this dialect support the specified type of join.boolean
Returns whether the dialect supports nested aggregations, for instanceSELECT SUM(SUM(1))
.boolean
Deprecated.This method is no longer used.boolean
Returns whether this dialect supports TIMESTAMP with precision.boolean
Returns whether this dialect supports window functions (OVER clause).void
unparseBoolLiteral
(SqlWriter writer, SqlLiteral literal, int leftPrec, int rightPrec) void
unparseCall
(SqlWriter writer, SqlCall call, int leftPrec, int rightPrec) void
unparseDateTimeLiteral
(SqlWriter writer, SqlAbstractDateTimeLiteral literal, int leftPrec, int rightPrec) protected static void
unparseFetchUsingAnsi
(SqlWriter writer, @Nullable SqlNode offset, @Nullable SqlNode fetch) Unparses offset/fetch using ANSI standard "OFFSET offset ROWS FETCH NEXT fetch ROWS ONLY" syntax.protected static void
unparseFetchUsingLimit
(SqlWriter writer, @Nullable SqlNode offset, @Nullable SqlNode fetch) Unparses offset/fetch using "LIMIT fetch OFFSET offset" syntax.protected static void
unparseLimit
(SqlWriter writer, @Nullable SqlNode fetch) protected static void
unparseOffset
(SqlWriter writer, @Nullable SqlNode offset) void
unparseOffsetFetch
(SqlWriter writer, @Nullable SqlNode offset, @Nullable SqlNode fetch) Converts an offset and fetch into SQL.void
unparseSqlDatetimeArithmetic
(SqlWriter writer, SqlCall call, SqlKind sqlKind, int leftPrec, int rightPrec) void
unparseSqlIntervalLiteral
(SqlWriter writer, SqlIntervalLiteral literal, int leftPrec, int rightPrec) Converts an interval literal to a SQL string.void
unparseSqlIntervalQualifier
(SqlWriter writer, SqlIntervalQualifier qualifier, RelDataTypeSystem typeSystem) Converts an interval qualifier to a SQL string.void
unparseTableScanHints
(SqlWriter writer, SqlNodeList hints, int leftPrec, int rightPrec) Converts table scan hints.void
unparseTopN
(SqlWriter writer, @Nullable SqlNode offset, @Nullable SqlNode fetch) Converts a fetch into a "SELECT TOP(fetch)".@Nullable String
unquoteStringLiteral
(@Nullable String val) Converts a string literal back into a string.
-
Field Details
-
LOGGER
protected static final org.slf4j.Logger LOGGER -
EMPTY_CONTEXT
Empty context. -
BUILT_IN_OPERATORS_LIST
Built-in scalar functions and operators common for every dialect. -
identifierQuoteString
-
identifierEndQuoteString
-
identifierEscapedQuote
-
literalQuoteString
-
literalEndQuoteString
-
literalEscapedQuote
-
nullCollation
-
-
Constructor Details
-
SqlDialect
@Deprecated public SqlDialect(SqlDialect.DatabaseProduct databaseProduct, String databaseProductName, String identifierQuoteString) Deprecated. -
SqlDialect
@Deprecated public SqlDialect(SqlDialect.DatabaseProduct databaseProduct, String databaseProductName, String identifierQuoteString, NullCollation nullCollation) Deprecated.Creates a SqlDialect.- Parameters:
databaseProduct
- Database product; may be UNKNOWN, never nulldatabaseProductName
- Database product name from JDBC driveridentifierQuoteString
- String to quote identifiers. Null if quoting is not supported. If "[", close quote is deemed to be "]".nullCollation
- Whether NULL values appear first or last
-
SqlDialect
Creates a SqlDialect.- Parameters:
context
- All the information necessary to create a dialect
-
-
Method Details
-
create
Deprecated.Replaced bySqlDialectFactory
Creates aSqlDialect
from a DatabaseMetaData.Does not maintain a reference to the DatabaseMetaData -- or, more importantly, to its
Connection
-- after this call has returned.- Parameters:
databaseMetaData
- used to determine which dialect of SQL to generate
-
getProduct
@Deprecated public static SqlDialect.DatabaseProduct getProduct(String productName, String productVersion) Deprecated.Converts a product name and version (per the JDBC driver) into a product enumeration.- Parameters:
productName
- Product nameproductVersion
- Product version- Returns:
- database product
-
getTypeSystem
Returns the type system implementation for this dialect. -
quoteIdentifier
Encloses an identifier in quotation marks appropriate for the current SQL dialect.For example,
quoteIdentifier("emp")
yields a string containing"emp"
in Oracle, and a string containing[emp]
in Access.- Parameters:
val
- Identifier to quote- Returns:
- Quoted identifier
-
quoteIdentifier
Encloses an identifier in quotation marks appropriate for the current SQL dialect, writing the result to aStringBuilder
.For example,
quoteIdentifier("emp")
yields a string containing"emp"
in Oracle, and a string containing[emp]
in Access.- Parameters:
buf
- Bufferval
- Identifier to quote- Returns:
- The buffer
-
quoteIdentifier
Quotes a multi-part identifier.- Parameters:
buf
- Bufferidentifiers
- List of parts of the identifier to quote- Returns:
- The buffer
-
identifierNeedsQuote
Returns whether to quote an identifier. By default, all identifiers are quoted. -
quoteStringLiteral
Converts a string into a string literal.For example,
"can't run"
becomes"'can''t run'"
. -
quoteStringLiteral
Appends a string literal to a buffer.- Parameters:
buf
- BuffercharsetName
- Character set name, e.g. "utf16", or nullval
- String value
-
unparseCall
-
unparseBoolLiteral
-
unparseDateTimeLiteral
public void unparseDateTimeLiteral(SqlWriter writer, SqlAbstractDateTimeLiteral literal, int leftPrec, int rightPrec) -
unparseSqlDatetimeArithmetic
-
unparseSqlIntervalQualifier
public void unparseSqlIntervalQualifier(SqlWriter writer, SqlIntervalQualifier qualifier, RelDataTypeSystem typeSystem) Converts an interval qualifier to a SQL string. The default implementation returns strings such asINTERVAL '1 2:3:4' DAY(4) TO SECOND(4)
. -
unparseSqlIntervalLiteral
public void unparseSqlIntervalLiteral(SqlWriter writer, SqlIntervalLiteral literal, int leftPrec, int rightPrec) Converts an interval literal to a SQL string. The default implementation returns strings such asINTERVAL '1 2:3:4' DAY(4) TO SECOND(4)
. -
unparseTableScanHints
Converts table scan hints. The default implementation suppresses all hints. -
containsNonAscii
Returns whether the string contains any characters outside the comfortable 7-bit ASCII range (32 through 127, plus linefeed (10) and carriage return (13)).Such characters can be used unquoted in SQL character literals.
- Parameters:
s
- String- Returns:
- Whether string contains any non-7-bit-ASCII characters
-
quoteStringLiteralUnicode
Converts a string into a unicode string literal. For example,can't{tab}run\
becomesu'can''t\0009run\\'
. -
unquoteStringLiteral
Converts a string literal back into a string. For example,'can''t run'
becomescan't run
. -
allowsAs
protected boolean allowsAs() -
requiresAliasForFromItems
public boolean requiresAliasForFromItems()Whether a sub-query in the FROM clause must have an alias.For example, in PostgreSQL, this query is legal:
SELECT * FROM (SELECT * FROM Emp) As e
but remove the alias
e
and it is not:SELECT * FROM (SELECT * FROM Emp)
In Oracle, both queries are legal.
-
hasImplicitTableAlias
public boolean hasImplicitTableAlias()Returns whether a qualified table in the FROM clause has an implicit alias which consists of just the table name.For example, in
SqlDialect.DatabaseProduct.ORACLE
SELECT * FROM sales.emp
is equivalent to
SELECT * FROM sales.emp AS emp
and therefore
SELECT emp.empno FROM sales.emp
is valid. But
SqlDialect.DatabaseProduct.DB2
does not have an implicit alias, so the previous query it not valid; you need to writeSELECT sales.emp.empno FROM sales.emp
Returns true for all databases except DB2.
-
quoteTimestampLiteral
Converts a timestamp to a SQL timestamp literal, e.g.TIMESTAMP '2009-12-17 12:34:56'
.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.
In particular,
quoteTimestampLiteral(new Timestamp(0));
returns
TIMESTAMP '1970-01-01 00:00:00'
, regardless of the JVM's time zone.- Parameters:
timestamp
- Timestamp- Returns:
- SQL timestamp literal
-
getDatabaseProduct
Deprecated.To be removed without replacementReturns the database this dialect belongs to,SqlDialect.DatabaseProduct.UNKNOWN
if not known, never null.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.
- Returns:
- Database product
-
supportsCharSet
@Pure public boolean supportsCharSet()Returns whether the dialect supports character set names as part of a data type, for instanceVARCHAR(30) CHARACTER SET `ISO-8859-1`
. -
supportsGroupByLiteral
public boolean supportsGroupByLiteral()Returns whether the dialect supports GROUP BY literals.For instance, in
SqlDialect.DatabaseProduct.REDSHIFT
, the following queries are illegal:select avg(salary) from emp group by true select avg(salary) from emp group by 'a', DATE '2022-01-01'
-
supportsAggregateFunction
-
supportsApproxCountDistinct
public boolean supportsApproxCountDistinct()Returns whether this dialect supports APPROX_COUNT_DISTINCT functions. -
supportsTimestampPrecision
public boolean supportsTimestampPrecision()Returns whether this dialect supports TIMESTAMP with precision. -
supportsAggregateFunctionFilter
public boolean supportsAggregateFunctionFilter()Returns whether this dialect supports the use of FILTER clauses for aggregate functions. e.g.COUNT(*) FILTER (WHERE a = 2)
. -
supportsWindowFunctions
public boolean supportsWindowFunctions()Returns whether this dialect supports window functions (OVER clause). -
supportBooleanCaseWhen
public boolean supportBooleanCaseWhen()Returns whether this dialect supports case when return boolean type. -
supportsFunction
public boolean supportsFunction(SqlOperator operator, RelDataType type, List<RelDataType> paramTypes) 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. -
getCalendarPolicy
-
supportsDataType
Returns whether this dialect supports a given type. -
getCastSpec
Returns SqlNode for type in "cast(column as type)", which might be different between databases by type name, precision etc.If this method returns null, the cast will be omitted. In the default implementation, this is the case for the NULL type, and therefore
CAST(NULL AS <nulltype>)
is rendered asNULL
. -
rewriteSingleValueExpr
Rewrites SINGLE_VALUE into expression based on database variants E.g. HSQLDB, MYSQL, ORACLE, etc. -
rewriteMaxMinExpr
Rewrites MAX(x)/MIN(x) as BOOL_OR(x)/BOOL_AND(x) for certain database variants (Postgres and Redshift, currently).- See Also:
-
rewriteMaxMin
Helper for rewrites of MAX/MIN. Some dialects (e.g. Postgres and Redshift), rewrite as BOOL_OR/BOOL_AND if the return type is BOOLEAN. -
emulateNullDirection
Returns the SqlNode for emulating the null direction for the given field ornull
if no emulation needs to be done.- Parameters:
node
- The SqlNode representing the expressionnullsFirst
- Whether nulls should come firstdesc
- Whether the sort direction isRelFieldCollation.Direction.DESCENDING
orRelFieldCollation.Direction.STRICTLY_DESCENDING
- Returns:
- A SqlNode for null direction emulation or
null
if not required
-
emulateJoinTypeForCrossJoin
-
emulateNullDirectionWithIsNull
-
supportsOffsetFetch
Deprecated.This method is no longer used. To change how the dialect unparses offset/fetch, override theunparseOffsetFetch(org.apache.calcite.sql.SqlWriter, org.apache.calcite.sql.SqlNode, org.apache.calcite.sql.SqlNode)
method.Returns whether the dialect supports OFFSET/FETCH clauses introduced by SQL:2008, for instanceOFFSET 10 ROWS FETCH NEXT 20 ROWS ONLY
. If false, we assume that the dialect supports the alternative syntaxLIMIT 20 OFFSET 10
. -
unparseOffsetFetch
Converts an offset and fetch into SQL.At least one of
offset
andfetch
must be provided.Common options:
OFFSET offset ROWS FETCH NEXT fetch ROWS ONLY
(ANSI standard SQL, Oracle, PostgreSQL, and the default)LIMIT fetch OFFSET offset
(Apache Hive, MySQL, Redshift)
- Parameters:
writer
- Writeroffset
- Number of rows to skip before emitting, or nullfetch
- Number of rows to fetch, or null- See Also:
-
unparseTopN
Converts a fetch into a "SELECT TOP(fetch)".A dialect that uses "TOP" syntax should override this method to print "TOP(fetch)", and override
unparseOffsetFetch(org.apache.calcite.sql.SqlWriter, org.apache.calcite.sql.SqlNode, org.apache.calcite.sql.SqlNode)
to no-op.The default implementation of this method is no-op.
- Parameters:
writer
- Writeroffset
- Number of rows to skip before emitting, or nullfetch
- Number of rows to fetch, or null
-
unparseFetchUsingAnsi
protected static void unparseFetchUsingAnsi(SqlWriter writer, @Nullable SqlNode offset, @Nullable SqlNode fetch) Unparses offset/fetch using ANSI standard "OFFSET offset ROWS FETCH NEXT fetch ROWS ONLY" syntax. -
unparseFetchUsingLimit
protected static void unparseFetchUsingLimit(SqlWriter writer, @Nullable SqlNode offset, @Nullable SqlNode fetch) Unparses offset/fetch using "LIMIT fetch OFFSET offset" syntax. -
unparseLimit
-
unparseOffset
-
getFormatModel
Returns a description of the format string used by functions in this dialect.Dialects may need to override this element mapping if they differ from Oracle's format elements. By default, this returns
FormatModels.DEFAULT
. -
supportsNestedAggregations
public boolean supportsNestedAggregations()Returns whether the dialect supports nested aggregations, for instanceSELECT SUM(SUM(1))
. -
supportsGroupByWithRollup
public boolean supportsGroupByWithRollup()Returns whether this dialect supports "WITH ROLLUP" in the "GROUP BY" clause.For instance, in MySQL version 5,
SELECT deptno, job, COUNT(*) AS c FROM emp GROUP BY deptno, job WITH ROLLUP
is equivalent to standard SQL
SELECT deptno, job, COUNT(*) AS c FROM emp GROUP BY ROLLUP(deptno, job) ORDER BY deptno, job
The "WITH ROLLUP" clause was introduced in MySQL and is not standard SQL.
See also
supportsAggregateFunction(SqlKind)
applied toSqlKind.ROLLUP
, which returns true in MySQL 8 and higher. -
supportsGroupByWithCube
public boolean supportsGroupByWithCube()Returns whether this dialect supports "WITH CUBE" in "GROUP BY" clause. -
supportsJoinType
Returns whether this dialect support the specified type of join. -
getNullCollation
Returns how NULL values are sorted if an ORDER BY item does not contain NULLS ASCENDING or NULLS DESCENDING. -
defaultNullDirection
Returns whether NULL values are sorted first or last, in this dialect, in an ORDER BY item of a given direction. -
supportsAliasedValues
public boolean supportsAliasedValues()Returns whether the dialect supports VALUES in a sub-query with and an "AS t(column, ...)" values to define column names.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.
-
supportsImplicitTypeCoercion
Returns whether the dialect supports implicit type coercion.Most of the sql dialects support implicit type coercion, so we make this method default return true. For instance, "cast('10' as integer) > 5" can be simplified to "'10' > 5" if the dialect supports implicit type coercion for VARCHAR and INTEGER comparison.
For sql dialect that does not support implicit type coercion, such as the BigQuery, we can not convert '10' into INT64 implicitly.
Now this method is used for some auxiliary decision when translating some
RexCall
s, see SqlImplementor#stripCastFromString for details.- Parameters:
call
- the call to make decision
-
getSingleRowTableName
Returns the name of the system table that has precisely one row. If there is no such table, returns null, and we will generate SELECT with no FROM clause.For
VALUES 1
, Oracle returns ["DUAL"] and we generate "SELECT 1 FROM DUAL"; MySQL returns null and we generate "SELECT 1". -
configureParser
Copies settings from this dialect into a parser configuration.SqlDialect
,SqlParser.Config
andSqlConformance
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.)The settings copied may differ among dialects, and may change over time, but currently include the following:
- Parameters:
config
- Parser configuration builder- Returns:
- The configuration builder
-
configureParser
Deprecated. -
getConformance
Returns theSqlConformance
that matches this dialect.The base implementation returns its best guess, based upon
databaseProduct
; sub-classes may override. -
getQuoting
protected @Nullable org.apache.calcite.avatica.util.Quoting getQuoting()Returns the quoting scheme, or null if the combination ofidentifierQuoteString
andidentifierEndQuoteString
does not correspond to any known quoting scheme. -
getUnquotedCasing
public org.apache.calcite.avatica.util.Casing getUnquotedCasing()Returns how unquoted identifiers are stored. -
getQuotedCasing
public org.apache.calcite.avatica.util.Casing getQuotedCasing()Returns how quoted identifiers are stored. -
isCaseSensitive
public boolean isCaseSensitive()Returns whether matching of identifiers is case-sensitive.
-
SqlDialect(Context)