[CALCITE-2475] SqlAdvisor: support MINUS

Project: http://git-wip-us.apache.org/repos/asf/calcite/repo
Commit: http://git-wip-us.apache.org/repos/asf/calcite/commit/4afea52a
Tree: http://git-wip-us.apache.org/repos/asf/calcite/tree/4afea52a
Diff: http://git-wip-us.apache.org/repos/asf/calcite/diff/4afea52a

Branch: refs/heads/master
Commit: 4afea52a7d50a188cd7b740deea6545013796690
Parents: 14a98e9
Author: Vladimir Sitnikov <[email protected]>
Authored: Sun Aug 19 18:02:02 2018 +0300
Committer: Vladimir Sitnikov <[email protected]>
Committed: Wed Sep 5 15:24:24 2018 +0300

----------------------------------------------------------------------
 .../java/org/apache/calcite/sql/advise/SqlSimpleParser.java | 4 +++-
 .../java/org/apache/calcite/sql/test/SqlAdvisorTest.java    | 9 +++++++++
 2 files changed, 12 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/calcite/blob/4afea52a/core/src/main/java/org/apache/calcite/sql/advise/SqlSimpleParser.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/org/apache/calcite/sql/advise/SqlSimpleParser.java 
b/core/src/main/java/org/apache/calcite/sql/advise/SqlSimpleParser.java
index 28b66e3..7324a8f 100644
--- a/core/src/main/java/org/apache/calcite/sql/advise/SqlSimpleParser.java
+++ b/core/src/main/java/org/apache/calcite/sql/advise/SqlSimpleParser.java
@@ -38,7 +38,7 @@ public class SqlSimpleParser {
     // keywords
     SELECT, FROM, JOIN, ON, USING, WHERE, GROUP, HAVING, ORDER, BY,
 
-    UNION, INTERSECT, EXCEPT,
+    UNION, INTERSECT, EXCEPT, MINUS,
 
     /**
      * left parenthesis
@@ -191,6 +191,7 @@ public class SqlSimpleParser {
         case UNION:
         case INTERSECT:
         case EXCEPT:
+        case MINUS:
           outList.add(token);
           if (iter.hasNext()) {
             token = iter.next();
@@ -236,6 +237,7 @@ public class SqlSimpleParser {
       case UNION:
       case INTERSECT:
       case EXCEPT:
+      case MINUS:
         subQueryList.remove(subQueryList.size() - 1);
         iter.previous();
         break loop;

http://git-wip-us.apache.org/repos/asf/calcite/blob/4afea52a/core/src/test/java/org/apache/calcite/sql/test/SqlAdvisorTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/calcite/sql/test/SqlAdvisorTest.java 
b/core/src/test/java/org/apache/calcite/sql/test/SqlAdvisorTest.java
index 8734bcd..fa6edf6 100644
--- a/core/src/test/java/org/apache/calcite/sql/test/SqlAdvisorTest.java
+++ b/core/src/test/java/org/apache/calcite/sql/test/SqlAdvisorTest.java
@@ -661,6 +661,15 @@ public class SqlAdvisorTest extends SqlValidatorTestCase {
     assertComplete(sql, list);
   }
 
+  @Test public void testSimlifyMinus() {
+    String sql;
+    sql = "select ^ from dummy a minus select * from dummy b";
+    assertSimplify(sql, "SELECT _suggest_ FROM dummy a");
+
+    sql = "select * from dummy a minus select ^ from dummy b";
+    assertSimplify(sql, "SELECT _suggest_ FROM dummy b");
+  }
+
   @Test public void testOnCondition() throws Exception {
     String sql;
 

Reply via email to