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 17ebddb25a [flink] Avoid executing empty BTree index build (#7978)
17ebddb25a is described below

commit 17ebddb25a2034310b39615aa69df27f91f3c953
Author: YeJunHao <[email protected]>
AuthorDate: Tue May 26 18:13:43 2026 +0800

    [flink] Avoid executing empty BTree index build (#7978)
---
 .../paimon/flink/btree/BTreeIndexTopoBuilder.java  |  3 ++-
 .../flink/btree/BTreeIndexTopoBuilderTest.java     | 28 ++++++++++++++++++++++
 2 files changed, 30 insertions(+), 1 deletion(-)

diff --git 
a/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/flink/btree/BTreeIndexTopoBuilder.java
 
b/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/flink/btree/BTreeIndexTopoBuilder.java
index a0db5faa1a..9542eea4a4 100644
--- 
a/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/flink/btree/BTreeIndexTopoBuilder.java
+++ 
b/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/flink/btree/BTreeIndexTopoBuilder.java
@@ -195,9 +195,10 @@ public class BTreeIndexTopoBuilder {
             DataStream<Committable>[] rest =
                     allStreams.subList(1, allStreams.size()).toArray(new 
DataStream[0]);
             commit(table, allStreams.get(0).union(rest));
+            return true;
         }
 
-        return true;
+        return false;
     }
 
     public static void buildIndexAndExecute(
diff --git 
a/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/flink/btree/BTreeIndexTopoBuilderTest.java
 
b/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/flink/btree/BTreeIndexTopoBuilderTest.java
index 107e0ac048..25260ee5c4 100644
--- 
a/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/flink/btree/BTreeIndexTopoBuilderTest.java
+++ 
b/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/flink/btree/BTreeIndexTopoBuilderTest.java
@@ -19,18 +19,46 @@
 package org.apache.paimon.flink.btree;
 
 import org.apache.paimon.flink.btree.BTreeIndexTopoBuilder.BTreeBuildTask;
+import org.apache.paimon.globalindex.btree.BTreeGlobalIndexBuilder;
+import org.apache.paimon.options.Options;
+import org.apache.paimon.table.FileStoreTable;
 import org.apache.paimon.utils.Range;
 
+import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
 import org.junit.jupiter.api.Test;
 
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
+import java.util.Optional;
 
 import static org.assertj.core.api.Assertions.assertThat;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verifyNoInteractions;
+import static org.mockito.Mockito.when;
 
 /** Tests for {@link BTreeIndexTopoBuilder}. */
 public class BTreeIndexTopoBuilderTest {
 
+    @Test
+    public void testBuildIndexReturnsFalseWhenNoBuildTask() throws Exception {
+        BTreeGlobalIndexBuilder indexBuilder = 
mock(BTreeGlobalIndexBuilder.class);
+        when(indexBuilder.withIndexField("id")).thenReturn(indexBuilder);
+        when(indexBuilder.scan()).thenReturn(Optional.empty());
+        StreamExecutionEnvironment env = 
mock(StreamExecutionEnvironment.class);
+
+        assertThat(
+                        BTreeIndexTopoBuilder.buildIndex(
+                                env,
+                                () -> indexBuilder,
+                                mock(FileStoreTable.class),
+                                Collections.singletonList("id"),
+                                null,
+                                new Options()))
+                .isFalse();
+        verifyNoInteractions(env);
+    }
+
     @Test
     public void testCalculateParallelismByTotalRowsInsteadOfRangeCount() {
         List<BTreeBuildTask> tasks = new ArrayList<>();

Reply via email to