This is an automated email from the ASF dual-hosted git repository. jhyde pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/calcite-avatica.git
commit be246b9c5c3e2662be723147ae8aa3e3730a4d13 Author: Zhenghua Gao <[email protected]> AuthorDate: Tue Jul 16 17:58:10 2019 +0800 [CALCITE-3199] DateTimeUtils.unixDateCeil should not return the same value as unixDateFloor (Zhenghua Gao) Close apache/calcite-avatica#109 --- .../org/apache/calcite/avatica/util/DateTimeUtils.java | 2 +- .../apache/calcite/avatica/util/DateTimeUtilsTest.java | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/core/src/main/java/org/apache/calcite/avatica/util/DateTimeUtils.java b/core/src/main/java/org/apache/calcite/avatica/util/DateTimeUtils.java index e028a81..5efa210 100644 --- a/core/src/main/java/org/apache/calcite/avatica/util/DateTimeUtils.java +++ b/core/src/main/java/org/apache/calcite/avatica/util/DateTimeUtils.java @@ -893,7 +893,7 @@ public class DateTimeUtils { } public static long unixDateCeil(TimeUnitRange range, long date) { - return julianDateFloor(range, (int) date + EPOCH_JULIAN, true); + return julianDateFloor(range, (int) date + EPOCH_JULIAN, false); } private static int julianDateFloor(TimeUnitRange range, int julian, diff --git a/core/src/test/java/org/apache/calcite/avatica/util/DateTimeUtilsTest.java b/core/src/test/java/org/apache/calcite/avatica/util/DateTimeUtilsTest.java index 7dbfaba..271de2c 100644 --- a/core/src/test/java/org/apache/calcite/avatica/util/DateTimeUtilsTest.java +++ b/core/src/test/java/org/apache/calcite/avatica/util/DateTimeUtilsTest.java @@ -34,7 +34,9 @@ import static org.apache.calcite.avatica.util.DateTimeUtils.intervalYearMonthToS import static org.apache.calcite.avatica.util.DateTimeUtils.subtractMonths; import static org.apache.calcite.avatica.util.DateTimeUtils.timeStringToUnixDate; import static org.apache.calcite.avatica.util.DateTimeUtils.timestampStringToUnixDate; +import static org.apache.calcite.avatica.util.DateTimeUtils.unixDateCeil; import static org.apache.calcite.avatica.util.DateTimeUtils.unixDateExtract; +import static org.apache.calcite.avatica.util.DateTimeUtils.unixDateFloor; import static org.apache.calcite.avatica.util.DateTimeUtils.unixDateToString; import static org.apache.calcite.avatica.util.DateTimeUtils.unixTimeExtract; import static org.apache.calcite.avatica.util.DateTimeUtils.unixTimeToString; @@ -899,6 +901,19 @@ public class DateTimeUtilsTest { assertThat(pt2.getCalendar().get(Calendar.MILLISECOND), is(60)); assertThat(pt2.getFraction(), is("06")); } + + @Test public void testUnixDateFloorCeil() { + final long y1900 = -(70 * 365 + 70 / 4); + final long y1900_0102 = y1900 + 1; + final long y1899 = y1900 - 365; + final long y1901 = y1900 + 365; + checkDateString("1900-01-01", (int) y1900); + checkDateString("1900-01-02", (int) y1900_0102); + checkDateString("1899-01-01", (int) y1899); + checkDateString("1901-01-01", (int) y1901); + assertThat(unixDateFloor(TimeUnitRange.YEAR, y1900_0102), is(y1900)); + assertThat(unixDateCeil(TimeUnitRange.YEAR, y1900_0102), is(y1901)); + } } // End DateTimeUtilsTest.java
