public interface SqlConformance
For most purposes, one of the built-in compatibility modes in enum
SqlConformanceEnum will suffice.
If you wish to implement this interface to build your own conformance,
we strongly recommend that you extend SqlAbstractConformance,
or use a SqlDelegatingConformance,
so that you won't be broken by future changes.
| Modifier and Type | Field and Description |
|---|---|
static SqlConformanceEnum |
DEFAULT
Deprecated.
|
static SqlConformanceEnum |
ORACLE_10
Deprecated.
|
static SqlConformanceEnum |
PRAGMATIC_2003
Deprecated.
|
static SqlConformanceEnum |
PRAGMATIC_99
Deprecated.
|
static SqlConformanceEnum |
STRICT_2003
Deprecated.
|
static SqlConformanceEnum |
STRICT_92
Deprecated.
|
static SqlConformanceEnum |
STRICT_99
Deprecated.
|
| Modifier and Type | Method and Description |
|---|---|
boolean |
allowExtend()
Whether to allow mixing table columns with extended columns in
INSERT (or UPSERT). |
boolean |
allowGeometry()
Whether to allow geo-spatial extensions, including the GEOMETRY type.
|
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 |
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 |
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 |
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'. |
@Deprecated static final SqlConformanceEnum DEFAULT
SqlConformanceEnum.DEFAULT.@Deprecated static final SqlConformanceEnum STRICT_92
SqlConformanceEnum.STRICT_92.@Deprecated static final SqlConformanceEnum STRICT_99
SqlConformanceEnum.STRICT_99.@Deprecated static final SqlConformanceEnum PRAGMATIC_99
SqlConformanceEnum.PRAGMATIC_99.@Deprecated static final SqlConformanceEnum ORACLE_10
SqlConformanceEnum.ORACLE_10.@Deprecated static final SqlConformanceEnum STRICT_2003
SqlConformanceEnum.STRICT_2003.@Deprecated static final SqlConformanceEnum PRAGMATIC_2003
SqlConformanceEnum.PRAGMATIC_2003.boolean isGroupByAlias()
SELECT clause to be used as
column names in the GROUP BY clause.
Among the built-in conformance levels, true in
SqlConformanceEnum.LENIENT,
SqlConformanceEnum.MYSQL_5;
false otherwise.
boolean isGroupByOrdinal()
GROUP BY 2 is interpreted to mean 'group by the 2nd column
in the select list'.
Among the built-in conformance levels, true in
SqlConformanceEnum.LENIENT,
SqlConformanceEnum.MYSQL_5;
false otherwise.
boolean isHavingAlias()
SELECT clause to be used as
column names in the HAVING clause.
Among the built-in conformance levels, true in
SqlConformanceEnum.LENIENT,
SqlConformanceEnum.MYSQL_5;
false otherwise.
boolean isSortByOrdinal()
ORDER BY 2' is interpreted to mean 'sort by the 2nd
column in the select list'.
Among the built-in conformance levels, true in
SqlConformanceEnum.DEFAULT,
SqlConformanceEnum.LENIENT,
SqlConformanceEnum.MYSQL_5,
SqlConformanceEnum.ORACLE_10,
SqlConformanceEnum.ORACLE_12,
SqlConformanceEnum.STRICT_92,
SqlConformanceEnum.PRAGMATIC_99,
SqlConformanceEnum.PRAGMATIC_2003;
SqlConformanceEnum.SQL_SERVER_2008;
false otherwise.
boolean isSortByAlias()
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.
Among the built-in conformance levels, true in
SqlConformanceEnum.DEFAULT,
SqlConformanceEnum.LENIENT,
SqlConformanceEnum.MYSQL_5,
SqlConformanceEnum.ORACLE_10,
SqlConformanceEnum.ORACLE_12,
SqlConformanceEnum.STRICT_92;
SqlConformanceEnum.SQL_SERVER_2008;
false otherwise.
boolean isSortByAliasObscures()
Among the built-in conformance levels, true in
SqlConformanceEnum.STRICT_92;
false otherwise.
boolean isFromRequired()
FROM clause is required in a SELECT statement.
Among the built-in conformance levels, true in
SqlConformanceEnum.ORACLE_10,
SqlConformanceEnum.ORACLE_12,
SqlConformanceEnum.STRICT_92,
SqlConformanceEnum.STRICT_99,
SqlConformanceEnum.STRICT_2003;
false otherwise.
boolean isBangEqualAllowed()
Among the built-in conformance levels, true in
SqlConformanceEnum.LENIENT,
SqlConformanceEnum.MYSQL_5,
SqlConformanceEnum.ORACLE_10;
SqlConformanceEnum.ORACLE_12;
false otherwise.
boolean isPercentRemainderAllowed()
mod function.
Among the built-in conformance levels, true in
SqlConformanceEnum.LENIENT,
SqlConformanceEnum.MYSQL_5;
false otherwise.
boolean isMinusAllowed()
MINUS is allowed as an alternative to EXCEPT in
the parser.
Among the built-in conformance levels, true in
SqlConformanceEnum.LENIENT,
SqlConformanceEnum.ORACLE_10;
SqlConformanceEnum.ORACLE_12;
false otherwise.
Note: MySQL does not support MINUS or EXCEPT (as of
version 5.5).
boolean isApplyAllowed()
CROSS 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
SqlConformanceEnum.LENIENT,
SqlConformanceEnum.SQL_SERVER_2008;
SqlConformanceEnum.ORACLE_12;
false otherwise.
boolean isInsertSubsetColumnsAllowed()
INSERT (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
SqlConformanceEnum.LENIENT,
SqlConformanceEnum.PRAGMATIC_99,
SqlConformanceEnum.PRAGMATIC_2003;
false otherwise.
boolean allowNiladicParentheses()
For 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
SqlConformanceEnum.LENIENT,
SqlConformanceEnum.MYSQL_5;
false otherwise.
boolean allowExtend()
INSERT (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
SqlConformanceEnum.LENIENT;
false otherwise.
boolean isLimitStartCountAllowed()
LIMIT 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
SqlConformanceEnum.LENIENT,
SqlConformanceEnum.MYSQL_5;
false otherwise.
boolean allowGeometry()
Among the built-in conformance levels, true in
SqlConformanceEnum.LENIENT,
SqlConformanceEnum.MYSQL_5,
SqlConformanceEnum.SQL_SERVER_2008;
false otherwise.
Copyright © 2012–2018 The Apache Software Foundation. All rights reserved.