jerryshao commented on code in PR #7610:
URL: https://github.com/apache/gravitino/pull/7610#discussion_r2242094064


##########
api/src/main/java/org/apache/gravitino/stats/SupportsPartitionStatistics.java:
##########
@@ -0,0 +1,60 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.gravitino.stats;
+
+import java.util.List;
+import java.util.Map;
+import org.apache.gravitino.annotation.Unstable;
+import org.apache.gravitino.exceptions.UnmodifiableStatisticException;
+
+/** SupportsPartitionStatistics provides methods to list and update statistics 
for partitions. */
+@Unstable
+interface SupportsPartitionStatistics {
+
+  /**
+   * Lists statistics for partitions from one partition name to another 
partition name.
+   *
+   * @param range the range of partitions to list statistics for, which can be 
defined by.
+   * @return a map where the key is the partition name and the value is a list 
of statistics
+   */
+  Map<String, List<Statistic>> listStatistics(PartitionRange range);
+
+  /**
+   * Updates statistics with the provided values. If the statistic exists, it 
will be updated with
+   * the new value. If the statistic does not exist, it will be created. If 
the statistic is
+   * unmodifiable, it will throw an UnmodifiableStatisticException.
+   *
+   * @param statistics a map where the key is the partition name and the value 
is a map of statistic
+   *     names to their values
+   * @throws UnmodifiableStatisticException if any of the statistics to be 
updated are unmodifiable
+   */
+  void updateStatistics(Map<String, Map<String, StatisticValue<?>>> statistics)
+      throws UnmodifiableStatisticException;
+
+  /**
+   * Drops statistics for the specified partitions. If the statistic is 
unmodifiable, it will throw
+   * an UnmodifiableStatisticException.
+   *
+   * @param droppedStatistics a map where the key is the partition name and 
the value is a list of
+   *     statistic names to be dropped
+   * @throws UnmodifiableStatisticException if any of the statistics to be 
dropped are unmodifiable
+   */
+  void dropStatistics(Map<String, List<String>> droppedStatistics)
+      throws UnmodifiableStatisticException;
+}

Review Comment:
   I don't like the input arguments and the return values you defined here. You 
can always use Map and List to represent any structure, but it is not clear to 
the users.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to