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
