Repository: tajo Updated Branches: refs/heads/master 13316bd26 -> 3b9a2e5f2
TAJO-1386: CURRENT_DATE generates parsing errors sometimes. Closes #408 Signed-off-by: Hyunsik Choi <[email protected]> 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 <[email protected]> Authored: Tue Mar 10 20:32:26 2015 +0900 Committer: Hyunsik Choi <[email protected]> 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); } }
