[ 
https://issues.apache.org/jira/browse/BEAM-6006?focusedWorklogId=163537&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-163537
 ]

ASF GitHub Bot logged work on BEAM-6006:
----------------------------------------

                Author: ASF GitHub Bot
            Created on: 07/Nov/18 17:53
            Start Date: 07/Nov/18 17:53
    Worklog Time Spent: 10m 
      Work Description: akedin closed pull request #6972: [BEAM-6006] Test TIME 
+/- INTERVAL
URL: https://github.com/apache/beam/pull/6972
 
 
   

This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:

As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):

diff --git 
a/sdks/java/extensions/sql/src/main/java/org/apache/beam/sdk/extensions/sql/impl/interpreter/operator/date/BeamSqlDatetimeMinusIntervalExpression.java
 
b/sdks/java/extensions/sql/src/main/java/org/apache/beam/sdk/extensions/sql/impl/interpreter/operator/date/BeamSqlDatetimeMinusIntervalExpression.java
index cc3c75a15e0..025265d43d8 100644
--- 
a/sdks/java/extensions/sql/src/main/java/org/apache/beam/sdk/extensions/sql/impl/interpreter/operator/date/BeamSqlDatetimeMinusIntervalExpression.java
+++ 
b/sdks/java/extensions/sql/src/main/java/org/apache/beam/sdk/extensions/sql/impl/interpreter/operator/date/BeamSqlDatetimeMinusIntervalExpression.java
@@ -43,7 +43,9 @@ public boolean accept() {
 
   static boolean accept(List<BeamSqlExpression> operands, SqlTypeName 
outputType) {
     return operands.size() == 2
-        && (SqlTypeName.TIMESTAMP.equals(outputType) || 
SqlTypeName.DATE.equals(outputType))
+        && (SqlTypeName.TIMESTAMP.equals(outputType)
+            || SqlTypeName.DATE.equals(outputType)
+            || SqlTypeName.TIME.equals(outputType))
         && SqlTypeName.DATETIME_TYPES.contains(operands.get(0).getOutputType())
         && 
TimeUnitUtils.INTERVALS_DURATIONS_TYPES.containsKey(operands.get(1).getOutputType());
   }
diff --git 
a/sdks/java/extensions/sql/src/test/java/org/apache/beam/sdk/extensions/sql/BeamSqlDslSqlStdOperatorsTest.java
 
b/sdks/java/extensions/sql/src/test/java/org/apache/beam/sdk/extensions/sql/BeamSqlDslSqlStdOperatorsTest.java
index 35f265ab535..192f86da727 100644
--- 
a/sdks/java/extensions/sql/src/test/java/org/apache/beam/sdk/extensions/sql/BeamSqlDslSqlStdOperatorsTest.java
+++ 
b/sdks/java/extensions/sql/src/test/java/org/apache/beam/sdk/extensions/sql/BeamSqlDslSqlStdOperatorsTest.java
@@ -1197,7 +1197,10 @@ public void testDatetimeInfixPlus() {
                 parseTimestamp("1986-01-19 01:02:03"))
             .addExpr("DATE '1984-04-19' + INTERVAL '2' DAY", 
parseDate("1984-04-21"))
             .addExpr("DATE '1984-04-19' + INTERVAL '1' MONTH", 
parseDate("1984-05-19"))
-            .addExpr("DATE '1984-04-19' + INTERVAL '3' YEAR", 
parseDate("1987-04-19"));
+            .addExpr("DATE '1984-04-19' + INTERVAL '3' YEAR", 
parseDate("1987-04-19"))
+            .addExpr("TIME '14:28:30' + INTERVAL '15' SECOND", 
parseTime("14:28:45"))
+            .addExpr("TIME '14:28:30.239' + INTERVAL '4' MINUTE", 
parseTime("14:32:30.239"))
+            .addExpr("TIME '14:28:30.2' + INTERVAL '4' HOUR", 
parseTime("18:28:30.2"));
 
     checker.buildRunAndCheck();
   }
@@ -1292,7 +1295,7 @@ public void testTimestampDiff() {
 
   @Test
   // More needed @SqlOperatorTest(name = "-", kind = "MINUS")
-  public void testTimestampMinusInterval() throws Exception {
+  public void testTimestampMinusInterval() {
     ExpressionChecker checker =
         new ExpressionChecker()
             .addExpr(
@@ -1315,8 +1318,11 @@ public void testTimestampMinusInterval() throws 
Exception {
                 parseTimestamp("1983-01-19 01:01:58"))
             .addExpr("DATE '1984-04-19' - INTERVAL '2' DAY", 
parseDate("1984-04-17"))
             .addExpr("DATE '1984-04-19' - INTERVAL '1' MONTH", 
parseDate("1984-03-19"))
-            .addExpr("DATE '1984-04-19' - INTERVAL '3' YEAR", 
parseDate("1981-04-19"));
-    ;
+            .addExpr("DATE '1984-04-19' - INTERVAL '3' YEAR", 
parseDate("1981-04-19"))
+            .addExpr("TIME '14:28:30' - INTERVAL '15' SECOND", 
parseTime("14:28:15"))
+            .addExpr("TIME '14:28:30.239' - INTERVAL '4' MINUTE", 
parseTime("14:24:30.239"))
+            .addExpr("TIME '14:28:30.2' - INTERVAL '4' HOUR", 
parseTime("10:28:30.2"));
+
     checker.buildRunAndCheck();
   }
 
diff --git 
a/sdks/java/extensions/sql/src/test/java/org/apache/beam/sdk/extensions/sql/impl/interpreter/operator/date/BeamSqlDatetimeMinusIntervalExpressionTest.java
 
b/sdks/java/extensions/sql/src/test/java/org/apache/beam/sdk/extensions/sql/impl/interpreter/operator/date/BeamSqlDatetimeMinusIntervalExpressionTest.java
index 870057af148..939a1cb7627 100644
--- 
a/sdks/java/extensions/sql/src/test/java/org/apache/beam/sdk/extensions/sql/impl/interpreter/operator/date/BeamSqlDatetimeMinusIntervalExpressionTest.java
+++ 
b/sdks/java/extensions/sql/src/test/java/org/apache/beam/sdk/extensions/sql/impl/interpreter/operator/date/BeamSqlDatetimeMinusIntervalExpressionTest.java
@@ -68,6 +68,7 @@ public void testDoesNotAcceptWrongOutputType() {
     Set<SqlTypeName> unsupportedTypes = new HashSet<>(SqlTypeName.ALL_TYPES);
     unsupportedTypes.remove(SqlTypeName.TIMESTAMP);
     unsupportedTypes.remove(SqlTypeName.DATE);
+    unsupportedTypes.remove(SqlTypeName.TIME);
 
     for (SqlTypeName unsupportedType : unsupportedTypes) {
       BeamSqlDatetimeMinusIntervalExpression minusExpression =
diff --git 
a/sdks/java/extensions/sql/src/test/java/org/apache/beam/sdk/extensions/sql/integrationtest/BeamSqlBuiltinFunctionsIntegrationTestBase.java
 
b/sdks/java/extensions/sql/src/test/java/org/apache/beam/sdk/extensions/sql/integrationtest/BeamSqlBuiltinFunctionsIntegrationTestBase.java
index 0696012207f..24fd6a2f6bf 100644
--- 
a/sdks/java/extensions/sql/src/test/java/org/apache/beam/sdk/extensions/sql/integrationtest/BeamSqlBuiltinFunctionsIntegrationTestBase.java
+++ 
b/sdks/java/extensions/sql/src/test/java/org/apache/beam/sdk/extensions/sql/integrationtest/BeamSqlBuiltinFunctionsIntegrationTestBase.java
@@ -199,6 +199,15 @@ protected static DateTime parseDate(String str) {
     return 
DateTimeFormat.forPattern("yyyy-MM-dd").withZoneUTC().parseDateTime(str);
   }
 
+  protected static DateTime parseTime(String str) {
+    // DateTimeFormat does not parse "08:10:10" for pattern "HH:mm:ss.SSS". In 
this case, '.' must appear.
+    if (str.indexOf('.') == -1) {
+      return 
DateTimeFormat.forPattern("HH:mm:ss").withZoneUTC().parseDateTime(str);
+    } else {
+      return 
DateTimeFormat.forPattern("HH:mm:ss.SSS").withZoneUTC().parseDateTime(str);
+    }
+  }
+
   @AutoValue
   abstract static class ExpressionTestCase {
 


 

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
[email protected]


Issue Time Tracking
-------------------

    Worklog Id:     (was: 163537)
    Time Spent: 0.5h  (was: 20m)

> Test TIME +/- Interval
> ----------------------
>
>                 Key: BEAM-6006
>                 URL: https://issues.apache.org/jira/browse/BEAM-6006
>             Project: Beam
>          Issue Type: Sub-task
>          Components: dsl-sql
>            Reporter: Rui Wang
>            Assignee: Rui Wang
>            Priority: Major
>          Time Spent: 0.5h
>  Remaining Estimate: 0h
>




--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to