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')"),