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<>();