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 <didip@apple.com>
This commit is contained in:
Didip Kerabat 2022-07-05 11:05:37 -07:00 committed by GitHub
parent 2b330186e2
commit 06251c5d2a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 95 additions and 2 deletions

View File

@ -33,6 +33,7 @@ public class Granularities
public static final Granularity THIRTY_MINUTE = GranularityType.THIRTY_MINUTE.getDefaultGranularity(); public static final Granularity THIRTY_MINUTE = GranularityType.THIRTY_MINUTE.getDefaultGranularity();
public static final Granularity HOUR = GranularityType.HOUR.getDefaultGranularity(); public static final Granularity HOUR = GranularityType.HOUR.getDefaultGranularity();
public static final Granularity SIX_HOUR = GranularityType.SIX_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 DAY = GranularityType.DAY.getDefaultGranularity();
public static final Granularity WEEK = GranularityType.WEEK.getDefaultGranularity(); public static final Granularity WEEK = GranularityType.WEEK.getDefaultGranularity();
public static final Granularity MONTH = GranularityType.MONTH.getDefaultGranularity(); public static final Granularity MONTH = GranularityType.MONTH.getDefaultGranularity();

View File

@ -57,6 +57,7 @@ public enum GranularityType
"PT1H" "PT1H"
), ),
SIX_HOUR(HOUR, "PT6H"), SIX_HOUR(HOUR, "PT6H"),
EIGHT_HOUR(HOUR, "PT8H"),
DAY( DAY(
"'dt'=yyyy-MM-dd", "'dt'=yyyy-MM-dd",
"'y'=yyyy/'m'=MM/'d'=dd", "'y'=yyyy/'m'=MM/'d'=dd",
@ -214,7 +215,9 @@ public enum GranularityType
case 3: case 3:
return GranularityType.DAY; return GranularityType.DAY;
case 4: case 4:
if (vals[index] == 6) { if (vals[index] == 8) {
return GranularityType.EIGHT_HOUR;
} else if (vals[index] == 6) {
return GranularityType.SIX_HOUR; return GranularityType.SIX_HOUR;
} else if (vals[index] == 1) { } else if (vals[index] == 1) {
return GranularityType.HOUR; return GranularityType.HOUR;

View File

@ -46,6 +46,7 @@ public class GranularityTest
final Granularity MINUTE = Granularities.MINUTE; final Granularity MINUTE = Granularities.MINUTE;
final Granularity HOUR = Granularities.HOUR; final Granularity HOUR = Granularities.HOUR;
final Granularity SIX_HOUR = Granularities.SIX_HOUR; final Granularity SIX_HOUR = Granularities.SIX_HOUR;
final Granularity EIGHT_HOUR = Granularities.EIGHT_HOUR;
final Granularity FIFTEEN_MINUTE = Granularities.FIFTEEN_MINUTE; final Granularity FIFTEEN_MINUTE = Granularities.FIFTEEN_MINUTE;
final Granularity DAY = Granularities.DAY; final Granularity DAY = Granularities.DAY;
final Granularity WEEK = Granularities.WEEK; final Granularity WEEK = Granularities.WEEK;
@ -399,6 +400,90 @@ public class GranularityTest
checkToDate(SIX_HOUR, Granularity.Formatter.DEFAULT, hourChecks); 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 @Test
public void testDayToDate() public void testDayToDate()
{ {
@ -886,6 +971,7 @@ public class GranularityTest
Assert.assertEquals( Assert.assertEquals(
ImmutableList.of( ImmutableList.of(
Granularities.DAY, Granularities.DAY,
Granularities.EIGHT_HOUR,
Granularities.SIX_HOUR, Granularities.SIX_HOUR,
Granularities.HOUR, Granularities.HOUR,
Granularities.THIRTY_MINUTE, Granularities.THIRTY_MINUTE,
@ -927,6 +1013,7 @@ public class GranularityTest
Granularities.MONTH, Granularities.MONTH,
Granularities.WEEK, Granularities.WEEK,
Granularities.DAY, Granularities.DAY,
Granularities.EIGHT_HOUR,
Granularities.SIX_HOUR, Granularities.SIX_HOUR,
Granularities.HOUR, Granularities.HOUR,
Granularities.THIRTY_MINUTE, Granularities.THIRTY_MINUTE,

View File

@ -1632,6 +1632,7 @@ public class CompactionTaskTest
Granularities.SECOND, Granularities.SECOND,
Granularities.MINUTE, Granularities.MINUTE,
Granularities.SIX_HOUR, Granularities.SIX_HOUR,
Granularities.EIGHT_HOUR,
Granularities.DAY, Granularities.DAY,
null, null,
Granularities.ALL, Granularities.ALL,
@ -1648,6 +1649,7 @@ public class CompactionTaskTest
Granularities.SECOND, Granularities.SECOND,
Granularities.MINUTE, Granularities.MINUTE,
Granularities.SIX_HOUR, Granularities.SIX_HOUR,
Granularities.EIGHT_HOUR,
Granularities.NONE, Granularities.NONE,
Granularities.DAY, Granularities.DAY,
Granularities.NONE, Granularities.NONE,

View File

@ -750,7 +750,7 @@ public class CalciteInsertDmlTest extends CalciteIngestionDmlTest
ThrowableMessageMatcher.hasMessage(CoreMatchers.containsString( ThrowableMessageMatcher.hasMessage(CoreMatchers.containsString(
"The granularity specified in PARTITIONED BY is not supported. " "The granularity specified in PARTITIONED BY is not supported. "
+ "Please use an equivalent of these granularities: second, minute, five_minute, ten_minute, " + "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(); .verify();