You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tajo.apache.org by hy...@apache.org on 2013/10/21 19:01:20 UTC

[2/2] git commit: TAJO-272: boolean test does not work correctly. (hyunsik)

TAJO-272: boolean test does not work correctly. (hyunsik)


Project: http://git-wip-us.apache.org/repos/asf/incubator-tajo/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tajo/commit/77eff67b
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tajo/tree/77eff67b
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tajo/diff/77eff67b

Branch: refs/heads/master
Commit: 77eff67b043d30813314b13b255b647cec6f529a
Parents: 3f267a2
Author: Hyunsik Choi <hy...@apache.org>
Authored: Tue Oct 22 01:48:25 2013 +0900
Committer: Hyunsik Choi <hy...@apache.org>
Committed: Tue Oct 22 01:54:46 2013 +0900

----------------------------------------------------------------------
 CHANGES.txt                                     |  2 ++
 .../apache/tajo/engine/parser/SQLAnalyzer.java  | 19 +++++++++++++++-
 .../apache/tajo/engine/eval/TestPredicates.java | 24 ++++++++++++++++++++
 3 files changed, 44 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/77eff67b/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 49fa297..5f9a930 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -215,6 +215,8 @@ Release 0.2.0 - unreleased
 
   BUG FIXES
 
+    TAJO-272: boolean test does not work correctly. (hyunsik)
+
     TAJO-264: Remove hard-coded 'standby' mode. (jinho)
 
     TAJO-262: Integration test hang on jenkins. (jinho)

http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/77eff67b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/parser/SQLAnalyzer.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/parser/SQLAnalyzer.java b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/parser/SQLAnalyzer.java
index 79e2978..3fa303a 100644
--- a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/parser/SQLAnalyzer.java
+++ b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/parser/SQLAnalyzer.java
@@ -514,7 +514,24 @@ public class SQLAnalyzer extends SQLParserBaseVisitor<Expr> {
 
   @Override
   public Expr visitBoolean_test(SQLParser.Boolean_testContext ctx) {
-    return visitBoolean_primary(ctx.boolean_primary());
+    if (checkIfExist(ctx.is_clause())) {
+      Is_clauseContext isClauseContext = ctx.is_clause();
+      if (checkIfExist(isClauseContext.NOT())) {
+        if (checkIfExist(ctx.is_clause().truth_value().TRUE())) {
+          return new NotExpr(visitBoolean_primary(ctx.boolean_primary()));
+        } else {
+          return visitBoolean_primary(ctx.boolean_primary());
+        }
+      } else {
+        if (checkIfExist(ctx.is_clause().truth_value().TRUE())) {
+          return visitBoolean_primary(ctx.boolean_primary());
+        } else {
+          return new NotExpr(visitBoolean_primary(ctx.boolean_primary()));
+        }
+      }
+    } else {
+      return visitBoolean_primary(ctx.boolean_primary());
+    }
   }
 
   @Override

http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/77eff67b/tajo-core/tajo-core-backend/src/test/java/org/apache/tajo/engine/eval/TestPredicates.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/test/java/org/apache/tajo/engine/eval/TestPredicates.java b/tajo-core/tajo-core-backend/src/test/java/org/apache/tajo/engine/eval/TestPredicates.java
index 30bf56f..afab261 100644
--- a/tajo-core/tajo-core-backend/src/test/java/org/apache/tajo/engine/eval/TestPredicates.java
+++ b/tajo-core/tajo-core-backend/src/test/java/org/apache/tajo/engine/eval/TestPredicates.java
@@ -108,4 +108,28 @@ public class TestPredicates extends ExprTestBase {
     testEval(schema3, "table1", "20130715,20100102,20120525,20130716", query, new String [] {"1"});
     testEval(schema3, "table1", "20130715,20100102,20120525,20130705", query, new String [] {"0"});
   }
+
+  @Test
+  public void testBooleanTest() throws IOException {
+    testSimpleEval("select 1 < 3 is true", new String [] {"t"});
+    testSimpleEval("select 1 < 3 is not true", new String [] {"f"});
+    testSimpleEval("select 1 < 3 is false", new String [] {"f"});
+    testSimpleEval("select 1 < 3 is not false", new String [] {"t"});
+
+    testSimpleEval("select not (1 < 3 is true)", new String [] {"f"});
+    testSimpleEval("select not (1 < 3 is not true)", new String [] {"t"});
+    testSimpleEval("select not (1 < 3 is false)", new String [] {"t"});
+    testSimpleEval("select not (1 < 3 is not false)", new String [] {"f"});
+
+    testSimpleEval("select 1 > 3 is true", new String [] {"f"});
+    testSimpleEval("select 1 > 3 is not true", new String [] {"t"});
+    testSimpleEval("select 1 > 3 is false", new String [] {"t"});
+    testSimpleEval("select 1 > 3 is not false", new String [] {"f"});
+
+    testSimpleEval("select not (1 > 3 is true)", new String [] {"t"});
+    testSimpleEval("select not (1 > 3 is not true)", new String [] {"f"});
+    testSimpleEval("select not (1 > 3 is false)", new String [] {"f"});
+    testSimpleEval("select not (1 > 3 is not false)", new String [] {"t"});
+
+  }
 }