public enum SqlConformanceEnum extends Enum<SqlConformanceEnum> implements SqlConformance
| Enum Constant and Description |
|---|
BABEL
Conformance value that allows anything supported by any dialect.
|
BIG_QUERY
Conformance value that instructs Calcite to use SQL semantics
consistent with BigQuery.
|
DEFAULT
Calcite's default SQL behavior.
|
LENIENT
Conformance value that allows just about everything supported by
Calcite.
|
MYSQL_5
Conformance value that instructs Calcite to use SQL semantics
consistent with MySQL version 5.x.
|
ORACLE_10
Conformance value that instructs Calcite to use SQL semantics
consistent with Oracle version 10.
|
ORACLE_12
Conformance value that instructs Calcite to use SQL semantics
consistent with Oracle version 12.
|
PRAGMATIC_2003
Conformance value that instructs Calcite to use SQL semantics
consistent with the SQL:2003 standard, but ignoring its more
inconvenient or controversial dicta.
|
PRAGMATIC_99
Conformance value that instructs Calcite to use SQL semantics
consistent with the SQL:99 standard, but ignoring its more
inconvenient or controversial dicta.
|
PRESTO
Conformance value that instructs Calcite to use SQL semantics
consistent with Presto.
|
SQL_SERVER_2008
Conformance value that instructs Calcite to use SQL semantics
consistent with Microsoft SQL Server version 2008.
|
STRICT_2003
Conformance value that instructs Calcite to use SQL semantics strictly
consistent with the SQL:2003 standard.
|
STRICT_92
Conformance value that instructs Calcite to use SQL semantics strictly
consistent with the SQL:92 standard.
|
STRICT_99
Conformance value that instructs Calcite to use SQL semantics strictly
consistent with the SQL:99 standard.
|
DEFAULT, ORACLE_10, PRAGMATIC_2003, PRAGMATIC_99, STRICT_2003, STRICT_92, STRICT_99| Modifier and Type | Method and Description |
|---|---|
boolean |
allowAliasUnnestItems()
Whether directly alias array items in UNNEST.
|
boolean |
allowCharLiteralAlias()
Whether this dialect allows character literals as column aliases.
|
boolean |
allowExplicitRowValueConstructor()
Whether to allow SQL syntax "
ROW(expr1, expr2, expr3)". |
boolean |
allowExtend()
Whether to allow mixing table columns with extended columns in
INSERT (or UPSERT). |
boolean |
allowExtendedTrim()
Whether TRIM should support more than one trim character.
|
boolean |
allowGeometry()
Whether to allow geo-spatial extensions, including the GEOMETRY type.
|
boolean |
allowHyphenInUnquotedTableName()
Whether to allow hyphens in an unquoted table name.
|
boolean |
allowNiladicParentheses()
Whether to allow parentheses to be specified in calls to niladic functions
and procedures (that is, functions and procedures with no parameters).
|
boolean |
allowPluralTimeUnits()
Whether interval literals should allow plural time units
such as "YEARS" and "DAYS" in interval literals.
|
boolean |
allowQualifyingCommonColumn()
Whether to allow a qualified common column in a query that has a
NATURAL join or a join with a USING clause.
|
boolean |
isApplyAllowed()
Whether
CROSS APPLY and OUTER APPLY operators are allowed
in the parser. |
boolean |
isBangEqualAllowed()
Whether the bang-equal token != is allowed as an alternative to <> in
the parser.
|
boolean |
isFromRequired()
Whether
FROM clause is required in a SELECT statement. |
boolean |
isGroupByAlias()
Whether to allow aliases from the
SELECT clause to be used as
column names in the GROUP BY clause. |
boolean |
isGroupByOrdinal()
Whether
GROUP BY 2 is interpreted to mean 'group by the 2nd column
in the select list'. |
boolean |
isHavingAlias()
Whether to allow aliases from the
SELECT clause to be used as
column names in the HAVING clause. |
boolean |
isInsertSubsetColumnsAllowed()
Whether to allow
INSERT (or UPSERT) with no column list
but fewer values than the target table. |
boolean |
isLiberal()
Whether this dialect supports features from a wide variety of
dialects.
|
boolean |
isLimitStartCountAllowed()
Whether to allow the SQL syntax "
LIMIT start, count". |
boolean |
isMinusAllowed()
Whether
MINUS is allowed as an alternative to EXCEPT in
the parser. |
boolean |
isOffsetLimitAllowed()
Whether to allow the SQL syntax "
OFFSET start LIMIT count"
(that is, OFFSET before LIMIT,
in addition to LIMIT before OFFSET
and OFFSET before FETCH). |
boolean |
isPercentRemainderAllowed()
Whether the "%" operator is allowed by the parser as an alternative to the
mod function. |
boolean |
isSortByAlias()
Whether '
ORDER BY x' is interpreted to mean 'sort by the select
list item whose alias is x' even if there is a column called x. |
boolean |
isSortByAliasObscures()
Whether "empno" is invalid in "select empno as x from emp order by empno"
because the alias "x" obscures it.
|
boolean |
isSortByOrdinal()
Whether '
ORDER BY 2' is interpreted to mean 'sort by the 2nd
column in the select list'. |
SqlLibrary |
semantics()
Controls the behavior of operators that are part of Standard SQL but
nevertheless have different behavior in different databases.
|
boolean |
shouldConvertRaggedUnionTypesToVarying()
Whether the least restrictive type of a number of CHAR types of different
lengths should be a VARCHAR type.
|
boolean |
splitQuotedTableName()
Whether to split a quoted table name.
|
static SqlConformanceEnum |
valueOf(String name)
Returns the enum constant of this type with the specified name.
|
static SqlConformanceEnum[] |
values()
Returns an array containing the constants of this enum type, in
the order they are declared.
|
public static final SqlConformanceEnum DEFAULT
public static final SqlConformanceEnum LENIENT
public static final SqlConformanceEnum BABEL
LENIENT.public static final SqlConformanceEnum STRICT_92
public static final SqlConformanceEnum STRICT_99
public static final SqlConformanceEnum PRAGMATIC_99
public static final SqlConformanceEnum BIG_QUERY
public static final SqlConformanceEnum MYSQL_5
public static final SqlConformanceEnum ORACLE_10
public static final SqlConformanceEnum ORACLE_12
As ORACLE_10 except for isApplyAllowed().
public static final SqlConformanceEnum STRICT_2003
public static final SqlConformanceEnum PRAGMATIC_2003
public static final SqlConformanceEnum PRESTO
public static final SqlConformanceEnum SQL_SERVER_2008
public static SqlConformanceEnum[] values()
for (SqlConformanceEnum c : SqlConformanceEnum.values()) System.out.println(c);
public static SqlConformanceEnum valueOf(String name)
name - the name of the enum constant to be returned.IllegalArgumentException - if this enum type has no constant with the specified nameNullPointerException - if the argument is nullpublic boolean isLiberal()
SqlConformanceisLiberal in interface SqlConformancepublic boolean allowCharLiteralAlias()
SqlConformanceFor example,
SELECT empno, sal + comm AS 'remuneration' FROM Emp
Among the built-in conformance levels, true in
BABEL,
BIG_QUERY,
LENIENT,
MYSQL_5,
SQL_SERVER_2008;
false otherwise.
allowCharLiteralAlias in interface SqlConformancepublic boolean isGroupByAlias()
SqlConformanceSELECT clause to be used as
column names in the GROUP BY clause.
Among the built-in conformance levels, true in
BABEL,
BIG_QUERY,
LENIENT,
MYSQL_5;
false otherwise.
isGroupByAlias in interface SqlConformancepublic boolean isGroupByOrdinal()
SqlConformanceGROUP BY 2 is interpreted to mean 'group by the 2nd column
in the select list'.
Among the built-in conformance levels, true in
BABEL,
BIG_QUERY,
LENIENT,
MYSQL_5,
PRESTO;
false otherwise.
isGroupByOrdinal in interface SqlConformancepublic boolean isHavingAlias()
SqlConformanceSELECT clause to be used as
column names in the HAVING clause.
Among the built-in conformance levels, true in
BABEL,
BIG_QUERY,
LENIENT,
MYSQL_5;
false otherwise.
isHavingAlias in interface SqlConformancepublic boolean isSortByOrdinal()
SqlConformanceORDER BY 2' is interpreted to mean 'sort by the 2nd
column in the select list'.
Among the built-in conformance levels, true in
DEFAULT,
BABEL,
LENIENT,
MYSQL_5,
ORACLE_10,
ORACLE_12,
PRAGMATIC_99,
PRAGMATIC_2003,
PRESTO,
SQL_SERVER_2008,
STRICT_92;
false otherwise.
isSortByOrdinal in interface SqlConformancepublic boolean isSortByAlias()
SqlConformanceORDER BY x' is interpreted to mean 'sort by the select
list item whose alias is x' even if there is a column called x.
Among the built-in conformance levels, true in
DEFAULT,
BABEL,
BIG_QUERY,
LENIENT,
MYSQL_5,
ORACLE_10,
ORACLE_12,
SQL_SERVER_2008,
STRICT_92;
false otherwise.
isSortByAlias in interface SqlConformancepublic boolean isSortByAliasObscures()
SqlConformanceAmong the built-in conformance levels, true in
STRICT_92;
false otherwise.
isSortByAliasObscures in interface SqlConformancepublic boolean isFromRequired()
SqlConformanceFROM clause is required in a SELECT statement.
Among the built-in conformance levels, true in
ORACLE_10,
ORACLE_12,
STRICT_92,
STRICT_99,
STRICT_2003;
false otherwise.
isFromRequired in interface SqlConformancepublic boolean splitQuotedTableName()
SqlConformance`x.y.z` is parsed as
if the user had written `x`.`y`.`z`.
Among the built-in conformance levels, true in
BIG_QUERY;
false otherwise.
splitQuotedTableName in interface SqlConformancepublic boolean allowHyphenInUnquotedTableName()
SqlConformanceIf true, SELECT * FROM foo-bar.baz-buzz is valid, and is parsed
as if the user had written SELECT * FROM `foo-bar`.`baz-buzz`.
Among the built-in conformance levels, true in
BIG_QUERY;
false otherwise.
allowHyphenInUnquotedTableName in interface SqlConformancepublic boolean isBangEqualAllowed()
SqlConformanceAmong the built-in conformance levels, true in
BABEL,
LENIENT,
MYSQL_5,
ORACLE_10,
ORACLE_12,
PRESTO;
false otherwise.
isBangEqualAllowed in interface SqlConformancepublic boolean isMinusAllowed()
SqlConformanceMINUS is allowed as an alternative to EXCEPT in
the parser.
Among the built-in conformance levels, true in
BABEL,
LENIENT,
ORACLE_10,
ORACLE_12;
false otherwise.
Note: MySQL does not support MINUS or EXCEPT (as of
version 5.5).
isMinusAllowed in interface SqlConformancepublic boolean isPercentRemainderAllowed()
SqlConformancemod function.
Among the built-in conformance levels, true in
BABEL,
LENIENT,
MYSQL_5,
PRESTO;
false otherwise.
isPercentRemainderAllowed in interface SqlConformancepublic boolean isApplyAllowed()
SqlConformanceCROSS APPLY and OUTER APPLY operators are allowed
in the parser.
APPLY invokes a table-valued function for each row returned
by a table expression. It is syntactic sugar:
SELECT * FROM emp CROSS APPLY TABLE(promote(empno)SELECT * FROM emp CROSS JOIN LATERAL TABLE(promote(empno)
SELECT * FROM emp OUTER APPLY TABLE(promote(empno)SELECT * FROM emp LEFT JOIN LATERAL TABLE(promote(empno) ON true
Among the built-in conformance levels, true in
BABEL,
LENIENT,
ORACLE_12,
SQL_SERVER_2008;
false otherwise.
isApplyAllowed in interface SqlConformancepublic boolean isInsertSubsetColumnsAllowed()
SqlConformanceINSERT (or UPSERT) with no column list
but fewer values than the target table.
The N values provided are assumed to match the first N columns of the table, and for each of the remaining columns, the default value of the column is used. It is an error if any of these columns has no default value.
The default value of a column is specified by the DEFAULT
clause in the CREATE TABLE statement, or is NULL if the
column is not declared NOT NULL.
Among the built-in conformance levels, true in
BABEL,
LENIENT,
PRAGMATIC_99,
PRAGMATIC_2003;
false otherwise.
isInsertSubsetColumnsAllowed in interface SqlConformancepublic boolean allowNiladicParentheses()
SqlConformanceFor example, CURRENT_DATE is a niladic system function. In
standard SQL it must be invoked without parentheses:
VALUES CURRENT_DATE
If allowNiladicParentheses, the following syntax is also valid:
VALUES CURRENT_DATE()
Of the popular databases, MySQL, Apache Phoenix and VoltDB allow this behavior; Apache Hive, HSQLDB, IBM DB2, Microsoft SQL Server, Oracle, PostgreSQL do not.
Among the built-in conformance levels, true in
BABEL,
LENIENT,
MYSQL_5;
false otherwise.
allowNiladicParentheses in interface SqlConformancepublic boolean allowExplicitRowValueConstructor()
SqlConformanceROW(expr1, expr2, expr3)".
The equivalent syntax in standard SQL is
"(expr1, expr2, expr3)".
Standard SQL does not allow this because the type is not well-defined. However, PostgreSQL allows this behavior.
Standard SQL allows row expressions in other contexts, for instance
inside VALUES clause.
Among the built-in conformance levels, true in
DEFAULT,
LENIENT,
PRESTO;
false otherwise.
allowExplicitRowValueConstructor in interface SqlConformancepublic boolean allowExtend()
SqlConformanceINSERT (or UPSERT).
For example, suppose that the declaration of table T has columns
A and B, and you want to insert data of column
C INTEGER not present in the table declaration as an extended
column. You can specify the columns in an INSERT statement as
follows:
INSERT INTO T (A, B, C INTEGER) VALUES (1, 2, 3)
Among the built-in conformance levels, true in
BABEL,
LENIENT;
false otherwise.
allowExtend in interface SqlConformancepublic boolean isLimitStartCountAllowed()
SqlConformanceLIMIT start, count".
The equivalent syntax in standard SQL is
"OFFSET start ROW FETCH FIRST count ROWS ONLY",
and in PostgreSQL "LIMIT count OFFSET start".
MySQL and CUBRID allow this behavior.
Among the built-in conformance levels, true in
BABEL,
LENIENT,
MYSQL_5;
false otherwise.
isLimitStartCountAllowed in interface SqlConformancepublic boolean isOffsetLimitAllowed()
SqlConformanceOFFSET start LIMIT count"
(that is, OFFSET before LIMIT,
in addition to LIMIT before OFFSET
and OFFSET before FETCH).
The equivalent syntax in standard SQL is
"OFFSET start ROW FETCH FIRST count ROWS ONLY".
Trino allows this behavior.
Among the built-in conformance levels, true in
BABEL,
LENIENT;
false otherwise.
isOffsetLimitAllowed in interface SqlConformancepublic boolean allowGeometry()
SqlConformanceAmong the built-in conformance levels, true in
BABEL,
LENIENT,
MYSQL_5,
PRESTO,
SQL_SERVER_2008;
false otherwise.
allowGeometry in interface SqlConformancepublic boolean shouldConvertRaggedUnionTypesToVarying()
SqlConformanceFor example, consider the query
SELECT 'abcde' UNION SELECT 'xyz'
The input columns have types CHAR(5) and CHAR(3), and
we need a result type that is large enough for both:
CHAR(5),
and the value in the second row will have trailing spaces.
VARCHAR(5), and the
values have no trailing spaces.
Among the built-in conformance levels, true in
PRAGMATIC_99,
PRAGMATIC_2003,
MYSQL_5,
ORACLE_10,
ORACLE_12,
PRESTO,
SQL_SERVER_2008;
false otherwise.
shouldConvertRaggedUnionTypesToVarying in interface SqlConformancepublic boolean allowExtendedTrim()
SqlConformanceFor example, consider the query
SELECT TRIM('eh' FROM 'hehe__hehe')
Under strict behavior, if the length of trim character is not 1, TRIM throws an exception, and the query fails. However many implementations (in databases such as MySQL and SQL Server) trim all the characters, resulting in a return value of '__'.
Among the built-in conformance levels, true in
BABEL,
LENIENT,
MYSQL_5,
SQL_SERVER_2008;
false otherwise.
allowExtendedTrim in interface SqlConformancepublic boolean allowPluralTimeUnits()
SqlConformanceUnder strict behavior, INTERVAL '2' DAY is valid
and INTERVAL '2' DAYS is invalid;
PostgreSQL allows both; Oracle only allows singular time units.
Among the built-in conformance levels, true in
BABEL,
LENIENT;
false otherwise.
allowPluralTimeUnits in interface SqlConformancepublic boolean allowQualifyingCommonColumn()
SqlConformanceFor example, in the query
SELECT emp.deptno FROM emp JOIN dept USING (deptno)
deptno is the common column. A qualified common column
such as emp.deptno is not allowed in Oracle, but is allowed
in PostgreSQL.
Among the built-in conformance levels, false in
ORACLE_10,
ORACLE_12,
PRESTO,
STRICT_92,
STRICT_99,
STRICT_2003;
true otherwise.
allowQualifyingCommonColumn in interface SqlConformancepublic boolean allowAliasUnnestItems()
SqlConformanceE.g. in UNNEST(a_array, b_array) AS T(a, b), a and b will be aliases of elements in a_array and b_array respectively.
Without this flag set, T will be the alias of the element in a_array and a, b will be the top level fields of T if T is a STRUCT type.
Among the built-in conformance levels, true in
PRESTO;
false otherwise.
allowAliasUnnestItems in interface SqlConformancepublic SqlLibrary semantics()
SqlConformanceConsider the SUBSTRING operator. In ISO standard SQL, negative
start indexes are converted to 1; in Google BigQuery, negative start
indexes are treated as offsets from the end of the string. For example,
SUBSTRING('abcde' FROM -3 FOR 2) returns 'ab' in standard
SQL and 'cd' in BigQuery.
If you specify conformance=BIG_QUERY in your connection
parameters, SUBSTRING will give the BigQuery behavior. Similarly
MySQL and Oracle.
Among the built-in conformance levels:
BIG_QUERY returns
SqlLibrary.BIG_QUERY;
MYSQL_5 returns SqlLibrary.MYSQL;
ORACLE_10 and
ORACLE_12 return SqlLibrary.ORACLE;
SqlLibrary.STANDARD.
semantics in interface SqlConformanceCopyright © 2012-2022 Apache Software Foundation. All Rights Reserved.