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

lzljs3620320 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-paimon.git


The following commit(s) were added to refs/heads/master by this push:
     new 2f7c11f5f [spark] Add hashcode for PaimonBatch (#2488)
2f7c11f5f is described below

commit 2f7c11f5f774723ee39af31d18f5341fdac90397
Author: Zouxxyy <[email protected]>
AuthorDate: Tue Dec 12 15:51:01 2023 +0800

    [spark] Add hashcode for PaimonBatch (#2488)
---
 .../main/java/org/apache/paimon/predicate/CompoundPredicate.java  | 5 +++++
 .../src/main/java/org/apache/paimon/table/source/RawFile.java     | 5 +++++
 .../main/java/org/apache/paimon/spark/SparkInputPartition.java    | 7 +++++++
 .../src/main/java/org/apache/paimon/spark/SparkReaderFactory.java | 6 ++++++
 .../src/main/scala/org/apache/paimon/spark/PaimonBatch.scala      | 8 +++++++-
 5 files changed, 30 insertions(+), 1 deletion(-)

diff --git 
a/paimon-common/src/main/java/org/apache/paimon/predicate/CompoundPredicate.java
 
b/paimon-common/src/main/java/org/apache/paimon/predicate/CompoundPredicate.java
index 9d9c2259e..1f13f24d2 100644
--- 
a/paimon-common/src/main/java/org/apache/paimon/predicate/CompoundPredicate.java
+++ 
b/paimon-common/src/main/java/org/apache/paimon/predicate/CompoundPredicate.java
@@ -82,6 +82,11 @@ public class CompoundPredicate implements Predicate {
         return Objects.equals(function, that.function) && 
Objects.equals(children, that.children);
     }
 
+    @Override
+    public int hashCode() {
+        return Objects.hash(function, children);
+    }
+
     /** Evaluate the predicate result based on multiple {@link Predicate}s. */
     public abstract static class Function implements Serializable {
 
diff --git 
a/paimon-core/src/main/java/org/apache/paimon/table/source/RawFile.java 
b/paimon-core/src/main/java/org/apache/paimon/table/source/RawFile.java
index 5f1a41ffa..9967586dc 100644
--- a/paimon-core/src/main/java/org/apache/paimon/table/source/RawFile.java
+++ b/paimon-core/src/main/java/org/apache/paimon/table/source/RawFile.java
@@ -119,6 +119,11 @@ public class RawFile {
                 && schemaId == other.schemaId;
     }
 
+    @Override
+    public int hashCode() {
+        return Objects.hash(path, offset, length, format, schemaId);
+    }
+
     @Override
     public String toString() {
         return String.format(
diff --git 
a/paimon-spark/paimon-spark-common/src/main/java/org/apache/paimon/spark/SparkInputPartition.java
 
b/paimon-spark/paimon-spark-common/src/main/java/org/apache/paimon/spark/SparkInputPartition.java
index 47f32ab42..3b02c61a6 100644
--- 
a/paimon-spark/paimon-spark-common/src/main/java/org/apache/paimon/spark/SparkInputPartition.java
+++ 
b/paimon-spark/paimon-spark-common/src/main/java/org/apache/paimon/spark/SparkInputPartition.java
@@ -22,6 +22,8 @@ import org.apache.paimon.table.source.Split;
 
 import org.apache.spark.sql.connector.read.InputPartition;
 
+import java.util.Objects;
+
 /** A Spark {@link InputPartition} for paimon. */
 public class SparkInputPartition implements InputPartition {
 
@@ -50,4 +52,9 @@ public class SparkInputPartition implements InputPartition {
         SparkInputPartition that = (SparkInputPartition) o;
         return this.split.equals(that.split);
     }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(split);
+    }
 }
diff --git 
a/paimon-spark/paimon-spark-common/src/main/java/org/apache/paimon/spark/SparkReaderFactory.java
 
b/paimon-spark/paimon-spark-common/src/main/java/org/apache/paimon/spark/SparkReaderFactory.java
index 986183832..69a029715 100644
--- 
a/paimon-spark/paimon-spark-common/src/main/java/org/apache/paimon/spark/SparkReaderFactory.java
+++ 
b/paimon-spark/paimon-spark-common/src/main/java/org/apache/paimon/spark/SparkReaderFactory.java
@@ -29,6 +29,7 @@ import 
org.apache.spark.sql.connector.read.PartitionReaderFactory;
 
 import java.io.IOException;
 import java.io.UncheckedIOException;
+import java.util.Objects;
 
 import static org.apache.paimon.spark.SparkUtils.createIOManager;
 
@@ -75,4 +76,9 @@ public class SparkReaderFactory implements 
PartitionReaderFactory {
         SparkReaderFactory that = (SparkReaderFactory) o;
         return this.readBuilder.equals(that.readBuilder);
     }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(readBuilder);
+    }
 }
diff --git 
a/paimon-spark/paimon-spark-common/src/main/scala/org/apache/paimon/spark/PaimonBatch.scala
 
b/paimon-spark/paimon-spark-common/src/main/scala/org/apache/paimon/spark/PaimonBatch.scala
index b356cf90e..f1aa4a353 100644
--- 
a/paimon-spark/paimon-spark-common/src/main/scala/org/apache/paimon/spark/PaimonBatch.scala
+++ 
b/paimon-spark/paimon-spark-common/src/main/scala/org/apache/paimon/spark/PaimonBatch.scala
@@ -21,7 +21,9 @@ import org.apache.paimon.table.source.{ReadBuilder, Split}
 
 import org.apache.spark.sql.connector.read.{Batch, InputPartition, 
PartitionReaderFactory}
 
-/** A Spark {@link Batch} for paimon. */
+import java.util.Objects
+
+/** A Spark [[Batch]] for paimon. */
 case class PaimonBatch(splits: Array[Split], readBuilder: ReadBuilder) extends 
Batch {
 
   override def planInputPartitions(): Array[InputPartition] =
@@ -38,4 +40,8 @@ case class PaimonBatch(splits: Array[Split], readBuilder: 
ReadBuilder) extends B
       case _ => false
     }
   }
+
+  override def hashCode(): Int = {
+    Objects.hashCode(splits.toSeq, readBuilder)
+  }
 }

Reply via email to