[CALCITE-1893] Add MYSQL_5 conformance
Project: http://git-wip-us.apache.org/repos/asf/calcite/repo Commit: http://git-wip-us.apache.org/repos/asf/calcite/commit/7ef986e2 Tree: http://git-wip-us.apache.org/repos/asf/calcite/tree/7ef986e2 Diff: http://git-wip-us.apache.org/repos/asf/calcite/diff/7ef986e2 Branch: refs/heads/master Commit: 7ef986e28458637a7e5aa89cf4378c9e9cca04be Parents: eb911cb Author: Julian Hyde <[email protected]> Authored: Mon Jul 17 13:34:03 2017 -0700 Committer: Julian Hyde <[email protected]> Committed: Mon Jul 17 22:03:17 2017 -0700 ---------------------------------------------------------------------- .../calcite/sql/validate/SqlConformance.java | 18 ++++++++++++++---- .../calcite/sql/validate/SqlConformanceEnum.java | 11 +++++++++++ 2 files changed, 25 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/calcite/blob/7ef986e2/core/src/main/java/org/apache/calcite/sql/validate/SqlConformance.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/calcite/sql/validate/SqlConformance.java b/core/src/main/java/org/apache/calcite/sql/validate/SqlConformance.java index 835b763..91238d3 100644 --- a/core/src/main/java/org/apache/calcite/sql/validate/SqlConformance.java +++ b/core/src/main/java/org/apache/calcite/sql/validate/SqlConformance.java @@ -66,7 +66,8 @@ public interface SqlConformance { * column names in the {@code GROUP BY} clause. * * <p>Among the built-in conformance levels, true in - * {@link SqlConformanceEnum#LENIENT}; + * {@link SqlConformanceEnum#LENIENT}, + * {@link SqlConformanceEnum#MYSQL_5}; * false otherwise. */ boolean isGroupByAlias(); @@ -76,7 +77,8 @@ public interface SqlConformance { * in the select list'. * * <p>Among the built-in conformance levels, true in - * {@link SqlConformanceEnum#LENIENT}; + * {@link SqlConformanceEnum#LENIENT}, + * {@link SqlConformanceEnum#MYSQL_5}; * false otherwise. */ boolean isGroupByOrdinal(); @@ -86,7 +88,8 @@ public interface SqlConformance { * column names in the {@code HAVING} clause. * * <p>Among the built-in conformance levels, true in - * {@link SqlConformanceEnum#LENIENT}; + * {@link SqlConformanceEnum#LENIENT}, + * {@link SqlConformanceEnum#MYSQL_5}; * false otherwise. */ boolean isHavingAlias(); @@ -98,6 +101,7 @@ public interface SqlConformance { * <p>Among the built-in conformance levels, true in * {@link SqlConformanceEnum#DEFAULT}, * {@link SqlConformanceEnum#LENIENT}, + * {@link SqlConformanceEnum#MYSQL_5}, * {@link SqlConformanceEnum#ORACLE_10}, * {@link SqlConformanceEnum#ORACLE_12}, * {@link SqlConformanceEnum#STRICT_92}, @@ -115,6 +119,7 @@ public interface SqlConformance { * <p>Among the built-in conformance levels, true in * {@link SqlConformanceEnum#DEFAULT}, * {@link SqlConformanceEnum#LENIENT}, + * {@link SqlConformanceEnum#MYSQL_5}, * {@link SqlConformanceEnum#ORACLE_10}, * {@link SqlConformanceEnum#ORACLE_12}, * {@link SqlConformanceEnum#STRICT_92}; @@ -152,6 +157,7 @@ public interface SqlConformance { * * <p>Among the built-in conformance levels, true in * {@link SqlConformanceEnum#LENIENT}, + * {@link SqlConformanceEnum#MYSQL_5}, * {@link SqlConformanceEnum#ORACLE_10}; * {@link SqlConformanceEnum#ORACLE_12}; * false otherwise. @@ -167,6 +173,9 @@ public interface SqlConformance { * {@link SqlConformanceEnum#ORACLE_10}; * {@link SqlConformanceEnum#ORACLE_12}; * false otherwise. + * + * <p>Note: MySQL does not support {@code MINUS} or {@code EXCEPT} (as of + * version 5.5). */ boolean isMinusAllowed(); @@ -234,7 +243,8 @@ public interface SqlConformance { * not. * * <p>Among the built-in conformance levels, true in - * {@link SqlConformanceEnum#LENIENT}; + * {@link SqlConformanceEnum#LENIENT}, + * {@link SqlConformanceEnum#MYSQL_5}; * false otherwise. */ boolean allowNiladicParentheses(); http://git-wip-us.apache.org/repos/asf/calcite/blob/7ef986e2/core/src/main/java/org/apache/calcite/sql/validate/SqlConformanceEnum.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/calcite/sql/validate/SqlConformanceEnum.java b/core/src/main/java/org/apache/calcite/sql/validate/SqlConformanceEnum.java index b65042e..74d31f1 100644 --- a/core/src/main/java/org/apache/calcite/sql/validate/SqlConformanceEnum.java +++ b/core/src/main/java/org/apache/calcite/sql/validate/SqlConformanceEnum.java @@ -40,6 +40,10 @@ public enum SqlConformanceEnum implements SqlConformance { PRAGMATIC_99, /** Conformance value that instructs Calcite to use SQL semantics + * consistent with MySQL version 5.x. */ + MYSQL_5, + + /** Conformance value that instructs Calcite to use SQL semantics * consistent with Oracle version 10. */ ORACLE_10, @@ -65,6 +69,7 @@ public enum SqlConformanceEnum implements SqlConformance { public boolean isGroupByAlias() { switch (this) { case LENIENT: + case MYSQL_5: return true; default: return false; @@ -74,6 +79,7 @@ public enum SqlConformanceEnum implements SqlConformance { public boolean isGroupByOrdinal() { switch (this) { case LENIENT: + case MYSQL_5: return true; default: return false; @@ -83,6 +89,7 @@ public enum SqlConformanceEnum implements SqlConformance { public boolean isHavingAlias() { switch (this) { case LENIENT: + case MYSQL_5: return true; default: return false; @@ -93,6 +100,7 @@ public enum SqlConformanceEnum implements SqlConformance { switch (this) { case DEFAULT: case LENIENT: + case MYSQL_5: case ORACLE_10: case ORACLE_12: case STRICT_92: @@ -109,6 +117,7 @@ public enum SqlConformanceEnum implements SqlConformance { switch (this) { case DEFAULT: case LENIENT: + case MYSQL_5: case ORACLE_10: case ORACLE_12: case STRICT_92: @@ -139,6 +148,7 @@ public enum SqlConformanceEnum implements SqlConformance { public boolean isBangEqualAllowed() { switch (this) { case LENIENT: + case MYSQL_5: case ORACLE_10: case ORACLE_12: return true; @@ -183,6 +193,7 @@ public enum SqlConformanceEnum implements SqlConformance { public boolean allowNiladicParentheses() { switch (this) { case LENIENT: + case MYSQL_5: return true; default: return false;
