This is an automated email from the ASF dual-hosted git repository.

gian pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/druid.git


The following commit(s) were added to refs/heads/master by this push:
     new 06251c5d2a Add EIGHT_HOUR into possible list of Granularities. (#12717)
06251c5d2a is described below

commit 06251c5d2afff5534d136fe7ce1bababaa1fe8c5
Author: Didip Kerabat <[email protected]>
AuthorDate: Tue Jul 5 11:05:37 2022 -0700

    Add EIGHT_HOUR into possible list of Granularities. (#12717)
    
    * Add EIGHT_HOUR into possible list of Granularities.
    
    * Add the missing definition.
    
    * fix test.
    
    * Fix another test.
    
    * Stylecheck finally passed.
    
    Co-authored-by: Didip Kerabat <[email protected]>
---
 .../util/common/granularity/Granularities.java     |  1 +
 .../util/common/granularity/GranularityType.java   |  5 +-
 .../druid/java/util/common/GranularityTest.java    | 87 ++++++++++++++++++++++
 .../indexing/common/task/CompactionTaskTest.java   |  2 +
 .../druid/sql/calcite/CalciteInsertDmlTest.java    |  2 +-
 5 files changed, 95 insertions(+), 2 deletions(-)

diff --git 
a/core/src/main/java/org/apache/druid/java/util/common/granularity/Granularities.java
 
b/core/src/main/java/org/apache/druid/java/util/common/granularity/Granularities.java
index 91492aef71..303f835d88 100644
--- 
a/core/src/main/java/org/apache/druid/java/util/common/granularity/Granularities.java
+++ 
b/core/src/main/java/org/apache/druid/java/util/common/granularity/Granularities.java
@@ -33,6 +33,7 @@ public class Granularities
   public static final Granularity THIRTY_MINUTE = 
GranularityType.THIRTY_MINUTE.getDefaultGranularity();
   public static final Granularity HOUR = 
GranularityType.HOUR.getDefaultGranularity();
   public static final Granularity SIX_HOUR = 
GranularityType.SIX_HOUR.getDefaultGranularity();
+  public static final Granularity EIGHT_HOUR = 
GranularityType.EIGHT_HOUR.getDefaultGranularity();
   public static final Granularity DAY = 
GranularityType.DAY.getDefaultGranularity();
   public static final Granularity WEEK = 
GranularityType.WEEK.getDefaultGranularity();
   public static final Granularity MONTH = 
GranularityType.MONTH.getDefaultGranularity();
diff --git 
a/core/src/main/java/org/apache/druid/java/util/common/granularity/GranularityType.java
 
b/core/src/main/java/org/apache/druid/java/util/common/granularity/GranularityType.java
index ae3a277fa0..e296747657 100644
--- 
a/core/src/main/java/org/apache/druid/java/util/common/granularity/GranularityType.java
+++ 
b/core/src/main/java/org/apache/druid/java/util/common/granularity/GranularityType.java
@@ -57,6 +57,7 @@ public enum GranularityType
       "PT1H"
   ),
   SIX_HOUR(HOUR, "PT6H"),
+  EIGHT_HOUR(HOUR, "PT8H"),
   DAY(
       "'dt'=yyyy-MM-dd",
       "'y'=yyyy/'m'=MM/'d'=dd",
@@ -214,7 +215,9 @@ public enum GranularityType
       case 3:
         return GranularityType.DAY;
       case 4:
-        if (vals[index] == 6) {
+        if (vals[index] == 8) {
+          return GranularityType.EIGHT_HOUR;
+        } else if (vals[index] == 6) {
           return GranularityType.SIX_HOUR;
         } else if (vals[index] == 1) {
           return GranularityType.HOUR;
diff --git 
a/core/src/test/java/org/apache/druid/java/util/common/GranularityTest.java 
b/core/src/test/java/org/apache/druid/java/util/common/GranularityTest.java
index bc8ac3396a..392a43149f 100644
--- a/core/src/test/java/org/apache/druid/java/util/common/GranularityTest.java
+++ b/core/src/test/java/org/apache/druid/java/util/common/GranularityTest.java
@@ -46,6 +46,7 @@ public class GranularityTest
   final Granularity MINUTE = Granularities.MINUTE;
   final Granularity HOUR = Granularities.HOUR;
   final Granularity SIX_HOUR = Granularities.SIX_HOUR;
+  final Granularity EIGHT_HOUR = Granularities.EIGHT_HOUR;
   final Granularity FIFTEEN_MINUTE = Granularities.FIFTEEN_MINUTE;
   final Granularity DAY = Granularities.DAY;
   final Granularity WEEK = Granularities.WEEK;
@@ -399,6 +400,90 @@ public class GranularityTest
     checkToDate(SIX_HOUR, Granularity.Formatter.DEFAULT, hourChecks);
   }
 
+  @Test
+  public void testEightHourToDate()
+  {
+    PathDate[] hourChecks = {
+        new PathDate(
+            new DateTime(2011, 3, 15, 16, 0, 0, 0, 
ISOChronology.getInstanceUTC()),
+            null,
+            "y=2011/m=03/d=15/H=20/M=50/S=43/Test0"
+        ),
+        new PathDate(
+            new DateTime(2011, 3, 15, 16, 0, 0, 0, 
ISOChronology.getInstanceUTC()),
+            null,
+            "/y=2011/m=03/d=15/H=20/M=50/S=43/Test0"
+        ),
+        new PathDate(
+            new DateTime(2011, 3, 15, 16, 0, 0, 0, 
ISOChronology.getInstanceUTC()),
+            null,
+            "valid/y=2011/m=03/d=15/H=20/M=50/S=43/Test1"
+        ),
+        new PathDate(
+            new DateTime(2011, 3, 15, 16, 0, 0, 0, 
ISOChronology.getInstanceUTC()),
+            null,
+            "valid/y=2011/m=03/d=15/H=20/M=50/Test2"
+        ),
+        new PathDate(
+            new DateTime(2011, 3, 15, 16, 0, 0, 0, 
ISOChronology.getInstanceUTC()),
+            null,
+            "valid/y=2011/m=03/d=15/H=20/Test3"
+        ),
+        new PathDate(null, null, "valid/y=2011/m=03/d=15/Test4"),
+        new PathDate(null, null, "valid/y=2011/m=03/Test5"),
+        new PathDate(null, null, "valid/y=2011/Test6"),
+        new PathDate(null, null, "null/y=/m=/d=/Test7"),
+        new PathDate(null, null, "null/m=10/y=2011/d=23/Test8"),
+        new PathDate(null, null, "null/Test9"),
+        new PathDate(null, null, ""), //Test10 Intentionally empty.
+        new PathDate(
+            new DateTime(2011, 10, 20, 16, 0, 0, 0, 
ISOChronology.getInstanceUTC()),
+            null,
+            "error/y=2011/m=10/d=20/H=20/M=42/S=72/Test11"
+        ),
+        new PathDate(
+            new DateTime(2011, 10, 20, 16, 0, 0, 0, 
ISOChronology.getInstanceUTC()),
+            null,
+            "error/y=2011/m=10/d=20/H=20/M=90/S=24/Test12"
+        ),
+        new PathDate(
+            new DateTime(2011, 10, 20, 0, 0, 0, 0, 
ISOChronology.getInstanceUTC()),
+            null,
+            "error/y=2011/m=10/d=20/H=00/M=90/S=24/Test12"
+        ),
+        new PathDate(
+            new DateTime(2011, 10, 20, 0, 0, 0, 0, 
ISOChronology.getInstanceUTC()),
+            null,
+            "error/y=2011/m=10/d=20/H=02/M=90/S=24/Test12"
+        ),
+        new PathDate(
+            new DateTime(2011, 10, 20, 0, 0, 0, 0, 
ISOChronology.getInstanceUTC()),
+            null,
+            "error/y=2011/m=10/d=20/H=06/M=90/S=24/Test12"
+        ),
+        new PathDate(
+            new DateTime(2011, 10, 20, 8, 0, 0, 0, 
ISOChronology.getInstanceUTC()),
+            null,
+            "error/y=2011/m=10/d=20/H=11/M=90/S=24/Test12"
+        ),
+        new PathDate(
+            new DateTime(2011, 10, 20, 8, 0, 0, 0, 
ISOChronology.getInstanceUTC()),
+            null,
+            "error/y=2011/m=10/d=20/H=12/M=90/S=24/Test12"
+        ),
+        new PathDate(
+            new DateTime(2011, 10, 20, 8, 0, 0, 0, 
ISOChronology.getInstanceUTC()),
+            null,
+            "error/y=2011/m=10/d=20/H=13/M=90/S=24/Test12"
+        ),
+        new PathDate(null, IllegalFieldValueException.class, 
"error/y=2011/m=10/d=20/H=42/M=42/S=24/Test13"),
+        new PathDate(null, IllegalFieldValueException.class, 
"error/y=2011/m=10/d=33/H=20/M=42/S=24/Test14"),
+        new PathDate(null, IllegalFieldValueException.class, 
"error/y=2011/m=13/d=20/H=20/M=42/S=24/Test15")
+    };
+
+    checkToDate(EIGHT_HOUR, Granularity.Formatter.DEFAULT, hourChecks);
+  }
+
   @Test
   public void testDayToDate()
   {
@@ -886,6 +971,7 @@ public class GranularityTest
     Assert.assertEquals(
         ImmutableList.of(
             Granularities.DAY,
+            Granularities.EIGHT_HOUR,
             Granularities.SIX_HOUR,
             Granularities.HOUR,
             Granularities.THIRTY_MINUTE,
@@ -927,6 +1013,7 @@ public class GranularityTest
             Granularities.MONTH,
             Granularities.WEEK,
             Granularities.DAY,
+            Granularities.EIGHT_HOUR,
             Granularities.SIX_HOUR,
             Granularities.HOUR,
             Granularities.THIRTY_MINUTE,
diff --git 
a/indexing-service/src/test/java/org/apache/druid/indexing/common/task/CompactionTaskTest.java
 
b/indexing-service/src/test/java/org/apache/druid/indexing/common/task/CompactionTaskTest.java
index e1e8a80f7e..69a17e6128 100644
--- 
a/indexing-service/src/test/java/org/apache/druid/indexing/common/task/CompactionTaskTest.java
+++ 
b/indexing-service/src/test/java/org/apache/druid/indexing/common/task/CompactionTaskTest.java
@@ -1632,6 +1632,7 @@ public class CompactionTaskTest
         Granularities.SECOND,
         Granularities.MINUTE,
         Granularities.SIX_HOUR,
+        Granularities.EIGHT_HOUR,
         Granularities.DAY,
         null,
         Granularities.ALL,
@@ -1648,6 +1649,7 @@ public class CompactionTaskTest
         Granularities.SECOND,
         Granularities.MINUTE,
         Granularities.SIX_HOUR,
+        Granularities.EIGHT_HOUR,
         Granularities.NONE,
         Granularities.DAY,
         Granularities.NONE,
diff --git 
a/sql/src/test/java/org/apache/druid/sql/calcite/CalciteInsertDmlTest.java 
b/sql/src/test/java/org/apache/druid/sql/calcite/CalciteInsertDmlTest.java
index aa7a8eb885..9c0c6545de 100644
--- a/sql/src/test/java/org/apache/druid/sql/calcite/CalciteInsertDmlTest.java
+++ b/sql/src/test/java/org/apache/druid/sql/calcite/CalciteInsertDmlTest.java
@@ -750,7 +750,7 @@ public class CalciteInsertDmlTest extends 
CalciteIngestionDmlTest
                 ThrowableMessageMatcher.hasMessage(CoreMatchers.containsString(
                     "The granularity specified in PARTITIONED BY is not 
supported. "
                     + "Please use an equivalent of these granularities: 
second, minute, five_minute, ten_minute, "
-                    + "fifteen_minute, thirty_minute, hour, six_hour, day, 
week, month, quarter, year, all."))
+                    + "fifteen_minute, thirty_minute, hour, six_hour, 
eight_hour, day, week, month, quarter, year, all."))
             )
         )
         .verify();


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to