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

jhyde pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/calcite.git

commit 27592e55764a0c3ef394a3c6a7ac45e28ca69604
Author: Julian Hyde <[email protected]>
AuthorDate: Wed Oct 19 14:19:04 2022 -0700

    [CALCITE-5338] In Avatica's DateTimeUtils, replace floorDiv and floorMod 
with equivalents in java.lang.Math
---
 .../org/apache/calcite/runtime/SqlFunctions.java    | 21 +++++++++------------
 .../java/org/apache/calcite/util/BuiltInMethod.java |  4 ++--
 .../java/org/apache/calcite/util/TimeString.java    |  4 +++-
 .../apache/calcite/util/TimeWithTimeZoneString.java |  4 +++-
 .../org/apache/calcite/util/TimestampString.java    |  4 +++-
 .../calcite/util/TimestampWithTimeZoneString.java   |  4 +++-
 6 files changed, 23 insertions(+), 18 deletions(-)

diff --git a/core/src/main/java/org/apache/calcite/runtime/SqlFunctions.java 
b/core/src/main/java/org/apache/calcite/runtime/SqlFunctions.java
index 61914293ef..01fc85d963 100644
--- a/core/src/main/java/org/apache/calcite/runtime/SqlFunctions.java
+++ b/core/src/main/java/org/apache/calcite/runtime/SqlFunctions.java
@@ -81,6 +81,8 @@ import java.util.regex.Pattern;
 import static org.apache.calcite.linq4j.Nullness.castNonNull;
 import static org.apache.calcite.util.Static.RESOURCE;
 
+import static java.lang.Math.floorDiv;
+import static java.lang.Math.floorMod;
 import static java.nio.charset.StandardCharsets.UTF_8;
 import static java.util.Objects.requireNonNull;
 
@@ -2899,8 +2901,7 @@ public class SqlFunctions {
   /** Adds a given number of months to a timestamp, represented as the number
    * of milliseconds since the epoch. */
   public static long addMonths(long timestamp, int m) {
-    final long millis =
-        DateTimeUtils.floorMod(timestamp, DateTimeUtils.MILLIS_PER_DAY);
+    final long millis = floorMod(timestamp, DateTimeUtils.MILLIS_PER_DAY);
     timestamp -= millis;
     final long x =
         addMonths((int) (timestamp / DateTimeUtils.MILLIS_PER_DAY), m);
@@ -2914,9 +2915,9 @@ public class SqlFunctions {
     int m0 = (int) DateTimeUtils.unixDateExtract(TimeUnitRange.MONTH, date);
     int d0 = (int) DateTimeUtils.unixDateExtract(TimeUnitRange.DAY, date);
     m0 += m;
-    int deltaYear = (int) DateTimeUtils.floorDiv(m0, 12);
+    int deltaYear = floorDiv(m0, 12);
     y0 += deltaYear;
-    m0 = (int) DateTimeUtils.floorMod(m0, 12);
+    m0 = floorMod(m0, 12);
     if (m0 == 0) {
       y0 -= 1;
       m0 += 12;
@@ -2969,14 +2970,10 @@ public class SqlFunctions {
   }
 
   public static int subtractMonths(long t0, long t1) {
-    final long millis0 =
-        DateTimeUtils.floorMod(t0, DateTimeUtils.MILLIS_PER_DAY);
-    final int d0 = (int) DateTimeUtils.floorDiv(t0 - millis0,
-        DateTimeUtils.MILLIS_PER_DAY);
-    final long millis1 =
-        DateTimeUtils.floorMod(t1, DateTimeUtils.MILLIS_PER_DAY);
-    final int d1 = (int) DateTimeUtils.floorDiv(t1 - millis1,
-        DateTimeUtils.MILLIS_PER_DAY);
+    final long millis0 = floorMod(t0, DateTimeUtils.MILLIS_PER_DAY);
+    final int d0 = (int) floorDiv(t0 - millis0, DateTimeUtils.MILLIS_PER_DAY);
+    final long millis1 = floorMod(t1, DateTimeUtils.MILLIS_PER_DAY);
+    final int d1 = (int) floorDiv(t1 - millis1, DateTimeUtils.MILLIS_PER_DAY);
     int x = subtractMonths(d0, d1);
     final long d2 = addMonths(d1, x);
     if (d2 == d0 && millis0 < millis1) {
diff --git a/core/src/main/java/org/apache/calcite/util/BuiltInMethod.java 
b/core/src/main/java/org/apache/calcite/util/BuiltInMethod.java
index 482e87c047..6c1b56d15d 100644
--- a/core/src/main/java/org/apache/calcite/util/BuiltInMethod.java
+++ b/core/src/main/java/org/apache/calcite/util/BuiltInMethod.java
@@ -401,8 +401,8 @@ public enum BuiltInMethod {
   CHAR_LENGTH(SqlFunctions.class, "charLength", String.class),
   STRING_CONCAT(SqlFunctions.class, "concat", String.class, String.class),
   MULTI_STRING_CONCAT(SqlFunctions.class, "concatMulti", String[].class),
-  FLOOR_DIV(DateTimeUtils.class, "floorDiv", long.class, long.class),
-  FLOOR_MOD(DateTimeUtils.class, "floorMod", long.class, long.class),
+  FLOOR_DIV(Math.class, "floorDiv", long.class, long.class),
+  FLOOR_MOD(Math.class, "floorMod", long.class, long.class),
   ADD_MONTHS(SqlFunctions.class, "addMonths", long.class, int.class),
   ADD_MONTHS_INT(SqlFunctions.class, "addMonths", int.class, int.class),
   SUBTRACT_MONTHS(SqlFunctions.class, "subtractMonths", long.class,
diff --git a/core/src/main/java/org/apache/calcite/util/TimeString.java 
b/core/src/main/java/org/apache/calcite/util/TimeString.java
index 1e8f8d56ff..e0d46b837a 100644
--- a/core/src/main/java/org/apache/calcite/util/TimeString.java
+++ b/core/src/main/java/org/apache/calcite/util/TimeString.java
@@ -26,6 +26,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
 import java.util.Calendar;
 import java.util.regex.Pattern;
 
+import static java.lang.Math.floorMod;
+
 /**
  * Time literal.
  *
@@ -146,7 +148,7 @@ public class TimeString implements Comparable<TimeString> {
 
   public static TimeString fromMillisOfDay(int i) {
     return new TimeString(DateTimeUtils.unixTimeToString(i))
-        .withMillis((int) DateTimeUtils.floorMod(i, 1000));
+        .withMillis((int) floorMod(i, 1000L));
   }
 
   public TimeString round(int precision) {
diff --git 
a/core/src/main/java/org/apache/calcite/util/TimeWithTimeZoneString.java 
b/core/src/main/java/org/apache/calcite/util/TimeWithTimeZoneString.java
index f651574e07..a533e2493d 100644
--- a/core/src/main/java/org/apache/calcite/util/TimeWithTimeZoneString.java
+++ b/core/src/main/java/org/apache/calcite/util/TimeWithTimeZoneString.java
@@ -27,6 +27,8 @@ import java.util.Calendar;
 import java.util.Locale;
 import java.util.TimeZone;
 
+import static java.lang.Math.floorMod;
+
 /**
  * Time with time-zone literal.
  *
@@ -171,7 +173,7 @@ public class TimeWithTimeZoneString implements 
Comparable<TimeWithTimeZoneString
   public static TimeWithTimeZoneString fromMillisOfDay(int i) {
     return new TimeWithTimeZoneString(
         DateTimeUtils.unixTimeToString(i) + " " + 
DateTimeUtils.UTC_ZONE.getID())
-            .withMillis((int) DateTimeUtils.floorMod(i, 1000));
+            .withMillis((int) floorMod(i, 1000L));
   }
 
   /** Converts this TimeWithTimeZoneString to a string, truncated or padded 
with
diff --git a/core/src/main/java/org/apache/calcite/util/TimestampString.java 
b/core/src/main/java/org/apache/calcite/util/TimestampString.java
index 44ad844c72..48c058d3ba 100644
--- a/core/src/main/java/org/apache/calcite/util/TimestampString.java
+++ b/core/src/main/java/org/apache/calcite/util/TimestampString.java
@@ -26,6 +26,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
 import java.util.Calendar;
 import java.util.regex.Pattern;
 
+import static java.lang.Math.floorMod;
+
 /**
  * Timestamp literal.
  *
@@ -175,7 +177,7 @@ public class TimestampString implements 
Comparable<TimestampString> {
    * the epoch. */
   public static TimestampString fromMillisSinceEpoch(long millis) {
     return new TimestampString(DateTimeUtils.unixTimestampToString(millis))
-        .withMillis((int) DateTimeUtils.floorMod(millis, 1000));
+        .withMillis((int) floorMod(millis, 1000L));
   }
 
   public Calendar toCalendar() {
diff --git 
a/core/src/main/java/org/apache/calcite/util/TimestampWithTimeZoneString.java 
b/core/src/main/java/org/apache/calcite/util/TimestampWithTimeZoneString.java
index eaabd0ae4a..7a0baeec0c 100644
--- 
a/core/src/main/java/org/apache/calcite/util/TimestampWithTimeZoneString.java
+++ 
b/core/src/main/java/org/apache/calcite/util/TimestampWithTimeZoneString.java
@@ -27,6 +27,8 @@ import java.util.Calendar;
 import java.util.Locale;
 import java.util.TimeZone;
 
+import static java.lang.Math.floorMod;
+
 /**
  * Timestamp with time-zone literal.
  *
@@ -169,7 +171,7 @@ public class TimestampWithTimeZoneString
   public static TimestampWithTimeZoneString fromMillisSinceEpoch(long millis) {
     return new TimestampWithTimeZoneString(
         DateTimeUtils.unixTimestampToString(millis) + " " + 
DateTimeUtils.UTC_ZONE.getID())
-            .withMillis((int) DateTimeUtils.floorMod(millis, 1000));
+            .withMillis((int) floorMod(millis, 1000L));
   }
 
   /** Converts this TimestampWithTimeZoneString to a string, truncated or 
padded with

Reply via email to