[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;

Reply via email to