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

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


The following commit(s) were added to refs/heads/master by this push:
     new 3ca14f9b134 Add support for selecting all segments at once for moving 
to different tier  (#17812)
3ca14f9b134 is described below

commit 3ca14f9b13401071e4f469674e5ae429fab2909b
Author: RAGHVENDRA KUMAR YADAV <[email protected]>
AuthorDate: Wed Mar 4 13:19:11 2026 -0800

    Add support for selecting all segments at once for moving to different tier 
 (#17812)
---
 .../pinot/common/tier/FixedTierSegmentSelector.java      | 10 ++++++++--
 .../pinot/common/tier/TierSegmentSelectorTest.java       | 16 ++++++++++++++++
 2 files changed, 24 insertions(+), 2 deletions(-)

diff --git 
a/pinot-common/src/main/java/org/apache/pinot/common/tier/FixedTierSegmentSelector.java
 
b/pinot-common/src/main/java/org/apache/pinot/common/tier/FixedTierSegmentSelector.java
index 69c6c18f3d5..052b5009990 100644
--- 
a/pinot-common/src/main/java/org/apache/pinot/common/tier/FixedTierSegmentSelector.java
+++ 
b/pinot-common/src/main/java/org/apache/pinot/common/tier/FixedTierSegmentSelector.java
@@ -27,9 +27,12 @@ import 
org.apache.pinot.common.metadata.segment.SegmentZKMetadata;
  */
 public class FixedTierSegmentSelector implements TierSegmentSelector {
   private final Set<String> _segmentsToSelect;
+  // ["*"] means select all completed segments
+  private final boolean _selectAllSegments;
 
   public FixedTierSegmentSelector(Set<String> segmentsToSelect) {
     _segmentsToSelect = segmentsToSelect;
+    _selectAllSegments = segmentsToSelect.contains("*");
   }
 
   @Override
@@ -39,8 +42,11 @@ public class FixedTierSegmentSelector implements 
TierSegmentSelector {
 
   @Override
   public boolean selectSegment(String tableNameWithType, SegmentZKMetadata 
segmentZKMetadata) {
-    return _segmentsToSelect.contains(segmentZKMetadata.getSegmentName()) && 
segmentZKMetadata.getStatus()
-        .isCompleted();
+    if (_selectAllSegments) {
+      return segmentZKMetadata.getStatus().isCompleted();
+    }
+    return _segmentsToSelect.contains(segmentZKMetadata.getSegmentName())
+        && segmentZKMetadata.getStatus().isCompleted();
   }
 
   public Set<String> getSegmentsToSelect() {
diff --git 
a/pinot-common/src/test/java/org/apache/pinot/common/tier/TierSegmentSelectorTest.java
 
b/pinot-common/src/test/java/org/apache/pinot/common/tier/TierSegmentSelectorTest.java
index 71743669a70..6b3166c8e6f 100644
--- 
a/pinot-common/src/test/java/org/apache/pinot/common/tier/TierSegmentSelectorTest.java
+++ 
b/pinot-common/src/test/java/org/apache/pinot/common/tier/TierSegmentSelectorTest.java
@@ -138,4 +138,20 @@ public class TierSegmentSelectorTest {
     realtimeSegmentZKMetadata.setStatus(Status.IN_PROGRESS);
     Assert.assertFalse(segmentSelector.selectSegment(tableNameWithType, 
realtimeSegmentZKMetadata));
   }
+
+  @Test
+  public void testFixedSegmentSelectorWithWildcardSelectsAllCompleted() {
+    String segmentName = "segment_0";
+    String tableNameWithType = "myTable_OFFLINE";
+    SegmentZKMetadata segmentZKMetadata = new SegmentZKMetadata(segmentName);
+    segmentZKMetadata.setStatus(Status.DONE);
+
+    // ["*"] selects all completed segments (no time column required)
+    FixedTierSegmentSelector segmentSelector = new 
FixedTierSegmentSelector(Set.of("*"));
+    Assert.assertTrue(segmentSelector.selectSegment(tableNameWithType, 
segmentZKMetadata));
+
+    // Consuming segments are not selected
+    segmentZKMetadata.setStatus(Status.IN_PROGRESS);
+    Assert.assertFalse(segmentSelector.selectSegment(tableNameWithType, 
segmentZKMetadata));
+  }
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to