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

Reply via email to