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

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


The following commit(s) were added to refs/heads/master by this push:
     new 0376c8bb28 [flink][spark] Fix conflict error for no-op file index 
rewrites (#8596)
0376c8bb28 is described below

commit 0376c8bb28920958a878ae382789716e8b896f3e
Author: tsreaper <[email protected]>
AuthorDate: Tue Jul 14 07:56:12 2026 +0800

    [flink][spark] Fix conflict error for no-op file index rewrites (#8596)
---
 .../java/org/apache/paimon/flink/sink/RewriteFileIndexSink.java  | 3 +++
 .../paimon/flink/procedure/RewriteFileIndexProcedureITCase.java  | 9 +++++++++
 .../apache/paimon/spark/procedure/RewriteFileIndexProcedure.java | 3 +++
 .../paimon/spark/procedure/RewriteFileIndexProcedureTest.scala   | 7 +++++++
 4 files changed, 22 insertions(+)

diff --git 
a/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/flink/sink/RewriteFileIndexSink.java
 
b/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/flink/sink/RewriteFileIndexSink.java
index ad655698d1..5826b37fc2 100644
--- 
a/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/flink/sink/RewriteFileIndexSink.java
+++ 
b/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/flink/sink/RewriteFileIndexSink.java
@@ -101,6 +101,9 @@ public class RewriteFileIndexSink extends 
FlinkWriteSink<ManifestEntry> {
             BinaryRow partition = entry.partition();
             int bucket = entry.bucket();
             DataFileMeta indexedFile = fileIndexProcessor.process(partition, 
bucket, entry);
+            if (entry.file().equals(indexedFile)) {
+                return;
+            }
 
             CommitMessageImpl commitMessage =
                     new CommitMessageImpl(
diff --git 
a/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/flink/procedure/RewriteFileIndexProcedureITCase.java
 
b/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/flink/procedure/RewriteFileIndexProcedureITCase.java
index 60aa33977c..fe62eb3c61 100644
--- 
a/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/flink/procedure/RewriteFileIndexProcedureITCase.java
+++ 
b/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/flink/procedure/RewriteFileIndexProcedureITCase.java
@@ -227,5 +227,14 @@ public class RewriteFileIndexProcedureITCase extends 
CatalogITCaseBase {
 
             Assertions.assertThat(extraFiles.size()).isEqualTo(0);
         }
+
+        long latestSnapshotId = table.snapshotManager().latestSnapshotId();
+        if (isNamedArgument) {
+            sql("CALL sys.rewrite_file_index(`table` => 'default.T')");
+        } else {
+            sql("CALL sys.rewrite_file_index('default.T')");
+        }
+        Assertions.assertThat(table.snapshotManager().latestSnapshotId())
+                .isEqualTo(latestSnapshotId);
     }
 }
diff --git 
a/paimon-spark/paimon-spark-common/src/main/java/org/apache/paimon/spark/procedure/RewriteFileIndexProcedure.java
 
b/paimon-spark/paimon-spark-common/src/main/java/org/apache/paimon/spark/procedure/RewriteFileIndexProcedure.java
index ea48a449fc..6df4917a68 100644
--- 
a/paimon-spark/paimon-spark-common/src/main/java/org/apache/paimon/spark/procedure/RewriteFileIndexProcedure.java
+++ 
b/paimon-spark/paimon-spark-common/src/main/java/org/apache/paimon/spark/procedure/RewriteFileIndexProcedure.java
@@ -190,6 +190,9 @@ public class RewriteFileIndexProcedure extends 
BaseProcedure {
                 BinaryRow partition = entry.partition();
                 int bucket = entry.bucket();
                 DataFileMeta indexedFile = 
fileIndexProcessor.process(partition, bucket, entry);
+                if (entry.file().equals(indexedFile)) {
+                    continue;
+                }
 
                 CommitMessageImpl commitMessage =
                         new CommitMessageImpl(
diff --git 
a/paimon-spark/paimon-spark-ut/src/test/scala/org/apache/paimon/spark/procedure/RewriteFileIndexProcedureTest.scala
 
b/paimon-spark/paimon-spark-ut/src/test/scala/org/apache/paimon/spark/procedure/RewriteFileIndexProcedureTest.scala
index 2761b0ec20..5d3af0d367 100644
--- 
a/paimon-spark/paimon-spark-ut/src/test/scala/org/apache/paimon/spark/procedure/RewriteFileIndexProcedureTest.scala
+++ 
b/paimon-spark/paimon-spark-ut/src/test/scala/org/apache/paimon/spark/procedure/RewriteFileIndexProcedureTest.scala
@@ -32,6 +32,13 @@ class RewriteFileIndexProcedureTest extends 
PaimonSparkTestBase {
             |""".stripMargin)
 
       sql("INSERT INTO t VALUES (1, 'a', '2025-08-17', 5), (2, 'b', 
'2025-10-06', 0)")
+      val latestSnapshotId = 
loadTable("t").snapshotManager().latestSnapshotId()
+      checkAnswer(
+        sql("CALL sys.rewrite_file_index(table => 't')"),
+        Row(0, 0)
+      )
+      assert(loadTable("t").snapshotManager().latestSnapshotId() == 
latestSnapshotId)
+
       sql("ALTER TABLE t SET TBLPROPERTIES 
('file-index.bloom-filter.columns'='k,v')")
       checkAnswer(
         sql("CALL sys.rewrite_file_index(table => 't')"),

Reply via email to