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 2015/03/10 22:11:01 UTC

tajo git commit: TAJO-1386: CURRENT_DATE generates parsing errors sometimes.

Repository: tajo
Updated Branches:
  refs/heads/master 13316bd26 -> 3b9a2e5f2


TAJO-1386: CURRENT_DATE generates parsing errors sometimes.

Closes #408

Signed-off-by: Hyunsik Choi <hy...@apache.org>


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

Branch: refs/heads/master
Commit: 3b9a2e5f287db3fcfdf6b0578c8184c47b8b3ebd
Parents: 13316bd
Author: navis.ryu <na...@apache.org>
Authored: Tue Mar 10 20:32:26 2015 +0900
Committer: Hyunsik Choi <hy...@apache.org>
Committed: Tue Mar 10 14:09:22 2015 -0700

----------------------------------------------------------------------
 CHANGES                                            |  3 +++
 .../org/apache/tajo/engine/parser/SQLParser.g4     |  1 +
 .../org/apache/tajo/engine/parser/SQLAnalyzer.java |  4 +++-
 .../apache/tajo/engine/parser/SQLSyntaxError.java  | 17 +++++++----------
 .../engine/function/TestDateTimeFunctions.java     |  5 +++++
 .../apache/tajo/plan/InvalidQueryException.java    |  4 ++--
 6 files changed, 21 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tajo/blob/3b9a2e5f/CHANGES
----------------------------------------------------------------------
diff --git a/CHANGES b/CHANGES
index 630417f..dc1a5f7 100644
--- a/CHANGES
+++ b/CHANGES
@@ -16,6 +16,9 @@ Release 0.11.0 - unreleased
 
   BUG FIXES
 
+    TAJO-1386: CURRENT_DATE generates parsing errors sometimes.
+    (Contributed by navis, Committed by hyunsik)
+
     TAJO-1387: Correct error message for EXISTS clause.
     (Contributed by Dongjoon Hyun, Committed by hyunsik)
 

http://git-wip-us.apache.org/repos/asf/tajo/blob/3b9a2e5f/tajo-core/src/main/antlr4/org/apache/tajo/engine/parser/SQLParser.g4
----------------------------------------------------------------------
diff --git a/tajo-core/src/main/antlr4/org/apache/tajo/engine/parser/SQLParser.g4 b/tajo-core/src/main/antlr4/org/apache/tajo/engine/parser/SQLParser.g4
index 420bf46..a05a060 100644
--- a/tajo-core/src/main/antlr4/org/apache/tajo/engine/parser/SQLParser.g4
+++ b/tajo-core/src/main/antlr4/org/apache/tajo/engine/parser/SQLParser.g4
@@ -770,6 +770,7 @@ sign
 
 numeric_value_function
   : extract_expression
+  | datetime_value_function
   ;
 
 extract_expression

http://git-wip-us.apache.org/repos/asf/tajo/blob/3b9a2e5f/tajo-core/src/main/java/org/apache/tajo/engine/parser/SQLAnalyzer.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/parser/SQLAnalyzer.java b/tajo-core/src/main/java/org/apache/tajo/engine/parser/SQLAnalyzer.java
index 5b4054f..869c0eb 100644
--- a/tajo-core/src/main/java/org/apache/tajo/engine/parser/SQLAnalyzer.java
+++ b/tajo-core/src/main/java/org/apache/tajo/engine/parser/SQLAnalyzer.java
@@ -1155,7 +1155,9 @@ public class SQLAnalyzer extends SQLParserBaseVisitor<Expr> {
     if (checkIfExist(ctx.extract_expression())) {
       return visitExtract_expression(ctx.extract_expression());
     }
-
+    if (checkIfExist(ctx.datetime_value_function())) {
+      return visitDatetime_value_function(ctx.datetime_value_function());
+    }
     return null;
   }
 

http://git-wip-us.apache.org/repos/asf/tajo/blob/3b9a2e5f/tajo-core/src/main/java/org/apache/tajo/engine/parser/SQLSyntaxError.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/parser/SQLSyntaxError.java b/tajo-core/src/main/java/org/apache/tajo/engine/parser/SQLSyntaxError.java
index e4bfc7c..4c3b0fd 100644
--- a/tajo-core/src/main/java/org/apache/tajo/engine/parser/SQLSyntaxError.java
+++ b/tajo-core/src/main/java/org/apache/tajo/engine/parser/SQLSyntaxError.java
@@ -22,28 +22,25 @@ package org.apache.tajo.engine.parser;
 import org.apache.tajo.plan.InvalidQueryException;
 
 public class SQLSyntaxError extends InvalidQueryException {
-  private static final long serialVersionUID = 5388279335175632066L;
+  private static final long serialVersionUID = 5388279335175632067L;
 
-  private String errorMessage;
-  private String detailedMessage;
-  private SQLParseError parseError;
+  private transient String detailedMessage;
 
   public SQLSyntaxError(String errorMessage) {
-    this.errorMessage = errorMessage;
+    super(errorMessage);
   }
 
   public SQLSyntaxError(SQLParseError e) {
-    this.errorMessage = e.getMessageHeader();
-    this.parseError = e;
+    super(e.getMessageHeader(), e);
   }
 
   @Override
   public String getMessage() {
     if (detailedMessage == null) {
-      if (parseError != null) {
-        detailedMessage = parseError.getMessage();
+      if (getCause() != null) {
+        detailedMessage = getCause().getMessage();
       } else {
-        detailedMessage = String.format("ERROR: %s\n", errorMessage);
+        detailedMessage = String.format("ERROR: %s\n", super.getMessage());
       }
     }
     return detailedMessage;

http://git-wip-us.apache.org/repos/asf/tajo/blob/3b9a2e5f/tajo-core/src/test/java/org/apache/tajo/engine/function/TestDateTimeFunctions.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/test/java/org/apache/tajo/engine/function/TestDateTimeFunctions.java b/tajo-core/src/test/java/org/apache/tajo/engine/function/TestDateTimeFunctions.java
index 6c708fb..25a10fd 100644
--- a/tajo-core/src/test/java/org/apache/tajo/engine/function/TestDateTimeFunctions.java
+++ b/tajo-core/src/test/java/org/apache/tajo/engine/function/TestDateTimeFunctions.java
@@ -443,6 +443,11 @@ public class TestDateTimeFunctions extends ExprTestBase {
           new String[]{dateFormat(expectedDate, "yyyy-MM-dd")});
       testSimpleEval(context, "select cast(extract(hour from current_time()) as INT4);",
           new String[]{String.valueOf(Integer.parseInt(dateFormat(expectedDate, "HH")))});
+
+      expectedDate.setDate(expectedDate.getDate() + 1);
+
+      testSimpleEval(context, "select current_date() + 1;",
+          new String[]{dateFormat(expectedDate, "yyyy-MM-dd")});
     } finally {
       TimeZone.setDefault(originalTimezone);
     }

http://git-wip-us.apache.org/repos/asf/tajo/blob/3b9a2e5f/tajo-plan/src/main/java/org/apache/tajo/plan/InvalidQueryException.java
----------------------------------------------------------------------
diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/InvalidQueryException.java b/tajo-plan/src/main/java/org/apache/tajo/plan/InvalidQueryException.java
index db986e1..a6b677f 100644
--- a/tajo-plan/src/main/java/org/apache/tajo/plan/InvalidQueryException.java
+++ b/tajo-plan/src/main/java/org/apache/tajo/plan/InvalidQueryException.java
@@ -29,7 +29,7 @@ public class InvalidQueryException extends RuntimeException {
     super(message);
   }
 	
-	public InvalidQueryException(Throwable t) {
-		super(t);
+	public InvalidQueryException(String message, Throwable t) {
+		super(message, t);
 	}
 }