You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@calcite.apache.org by jh...@apache.org on 2022/10/20 19:12:22 UTC

[calcite] branch main updated (a17519319c -> 21110741ff)

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

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


    from a17519319c Updated javadoc instructions to regenerate RelOptRulesTest.xml replacing Maven path with Gradle path
     new 27592e5576 [CALCITE-5338] In Avatica's DateTimeUtils, replace floorDiv and floorMod with equivalents in java.lang.Math
     new 21110741ff [CALCITE-5339] Use Method#getParameterCount rather than Method#getParameterTypes to get length

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../rel/metadata/janino/CacheGeneratorUtil.java     |  2 +-
 .../org/apache/calcite/runtime/SqlFunctions.java    | 21 +++++++++------------
 .../calcite/schema/impl/ReflectiveFunctionBase.java |  4 ++--
 .../apache/calcite/sql/pretty/SqlPrettyWriter.java  |  6 +++---
 .../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 +++-
 .../java/org/apache/calcite/test/SqlTestGen.java    |  2 +-
 .../java/org/apache/calcite/test/CalciteAssert.java |  2 +-
 11 files changed, 31 insertions(+), 26 deletions(-)


[calcite] 02/02: [CALCITE-5339] Use Method#getParameterCount rather than Method#getParameterTypes to get length

Posted by jh...@apache.org.
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 21110741ff104cb019b0f9de034845bf47ca8717
Author: Sergey Nuyanzin <sn...@gmail.com>
AuthorDate: Thu Oct 20 01:18:34 2022 +0200

    [CALCITE-5339] Use Method#getParameterCount rather than Method#getParameterTypes to get length
    
    The issue with Method#getParameters is that each time it
    creates a new array by calling clone. It does not make sense
    for the cases when only knowledge about number of parameters
    is required.
    
    Close apache/calcite#2943
---
 .../org/apache/calcite/rel/metadata/janino/CacheGeneratorUtil.java  | 2 +-
 .../java/org/apache/calcite/schema/impl/ReflectiveFunctionBase.java | 4 ++--
 .../main/java/org/apache/calcite/sql/pretty/SqlPrettyWriter.java    | 6 +++---
 core/src/test/java/org/apache/calcite/test/SqlTestGen.java          | 2 +-
 testkit/src/main/java/org/apache/calcite/test/CalciteAssert.java    | 2 +-
 5 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/core/src/main/java/org/apache/calcite/rel/metadata/janino/CacheGeneratorUtil.java b/core/src/main/java/org/apache/calcite/rel/metadata/janino/CacheGeneratorUtil.java
index 0ea152d323..9a0aa8ca8d 100644
--- a/core/src/main/java/org/apache/calcite/rel/metadata/janino/CacheGeneratorUtil.java
+++ b/core/src/main/java/org/apache/calcite/rel/metadata/janino/CacheGeneratorUtil.java
@@ -197,7 +197,7 @@ class CacheGeneratorUtil {
       @Override void cacheKeyBlock(StringBuilder buff, Method method, int methodIndex) {
         buff.append("    key = ")
             .append(
-                (method.getParameterTypes().length < 6
+                (method.getParameterCount() < 6
                     ? org.apache.calcite.runtime.FlatLists.class
                     : ImmutableList.class).getName())
             .append(".of(");
diff --git a/core/src/main/java/org/apache/calcite/schema/impl/ReflectiveFunctionBase.java b/core/src/main/java/org/apache/calcite/schema/impl/ReflectiveFunctionBase.java
index 71573e0cf5..c3a0211342 100644
--- a/core/src/main/java/org/apache/calcite/schema/impl/ReflectiveFunctionBase.java
+++ b/core/src/main/java/org/apache/calcite/schema/impl/ReflectiveFunctionBase.java
@@ -71,7 +71,7 @@ public abstract class ReflectiveFunctionBase implements Function {
    */
   static boolean classHasPublicZeroArgsConstructor(Class<?> clazz) {
     for (Constructor<?> constructor : clazz.getConstructors()) {
-      if (constructor.getParameterTypes().length == 0
+      if (constructor.getParameterCount() == 0
           && Modifier.isPublic(constructor.getModifiers())) {
         return true;
       }
@@ -89,7 +89,7 @@ public abstract class ReflectiveFunctionBase implements Function {
    */
   static boolean classHasPublicFunctionContextConstructor(Class<?> clazz) {
     for (Constructor<?> constructor : clazz.getConstructors()) {
-      if (constructor.getParameterTypes().length == 1
+      if (constructor.getParameterCount() == 1
           && constructor.getParameterTypes()[0] == FunctionContext.class
           && Modifier.isPublic(constructor.getModifiers())) {
         return true;
diff --git a/core/src/main/java/org/apache/calcite/sql/pretty/SqlPrettyWriter.java b/core/src/main/java/org/apache/calcite/sql/pretty/SqlPrettyWriter.java
index 57cbf5f750..13f43e8b50 100644
--- a/core/src/main/java/org/apache/calcite/sql/pretty/SqlPrettyWriter.java
+++ b/core/src/main/java/org/apache/calcite/sql/pretty/SqlPrettyWriter.java
@@ -1388,7 +1388,7 @@ public class SqlPrettyWriter implements SqlWriter {
       for (Method method : o.getClass().getMethods()) {
         if (method.getName().startsWith("set")
             && (method.getReturnType() == Void.class)
-            && (method.getParameterTypes().length == 1)) {
+            && (method.getParameterCount() == 1)) {
           String attributeName =
               stripPrefix(
                   method.getName(),
@@ -1397,7 +1397,7 @@ public class SqlPrettyWriter implements SqlWriter {
         }
         if (method.getName().startsWith("get")
             && (method.getReturnType() != Void.class)
-            && (method.getParameterTypes().length == 0)) {
+            && (method.getParameterCount() == 0)) {
           String attributeName =
               stripPrefix(
                   method.getName(),
@@ -1406,7 +1406,7 @@ public class SqlPrettyWriter implements SqlWriter {
         }
         if (method.getName().startsWith("is")
             && (method.getReturnType() == Boolean.class)
-            && (method.getParameterTypes().length == 0)) {
+            && (method.getParameterCount() == 0)) {
           String attributeName =
               stripPrefix(
                   method.getName(),
diff --git a/core/src/test/java/org/apache/calcite/test/SqlTestGen.java b/core/src/test/java/org/apache/calcite/test/SqlTestGen.java
index 791850fb6a..8e5c29b0df 100644
--- a/core/src/test/java/org/apache/calcite/test/SqlTestGen.java
+++ b/core/src/test/java/org/apache/calcite/test/SqlTestGen.java
@@ -77,7 +77,7 @@ class SqlTestGen {
       if (method.getName().startsWith("test")
           && Modifier.isPublic(method.getModifiers())
           && !Modifier.isStatic(method.getModifiers())
-          && (method.getParameterTypes().length == 0)
+          && (method.getParameterCount() == 0)
           && (method.getReturnType() == Void.TYPE)) {
         list.add(method);
       }
diff --git a/testkit/src/main/java/org/apache/calcite/test/CalciteAssert.java b/testkit/src/main/java/org/apache/calcite/test/CalciteAssert.java
index 2aa10f6b2e..82ac88b623 100644
--- a/testkit/src/main/java/org/apache/calcite/test/CalciteAssert.java
+++ b/testkit/src/main/java/org/apache/calcite/test/CalciteAssert.java
@@ -723,7 +723,7 @@ public class CalciteAssert {
     loop:
       for (Method method1 : aClass.getMethods()) {
         if (method1.getName().equals(methodName)
-            && method1.getParameterTypes().length == args.length
+            && method1.getParameterCount() == args.length
             && Modifier.isPublic(method1.getDeclaringClass().getModifiers())) {
           for (Pair<Object, Class> pair
               : Pair.zip(args, (Class[]) method1.getParameterTypes())) {


[calcite] 01/02: [CALCITE-5338] In Avatica's DateTimeUtils, replace floorDiv and floorMod with equivalents in java.lang.Math

Posted by jh...@apache.org.
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 <jh...@apache.org>
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