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

xiangfu0 pushed a commit to branch xiangfu0/data-3221-11-metadata-only-pruning
in repository https://gitbox.apache.org/repos/asf/pinot.git

commit 371feae4fd0e654808058813ec70d1ff047bb2be
Author: Xiang Fu <[email protected]>
AuthorDate: Wed Sep 23 20:03:44 2026 -0700

    Read pruning bounds once per IN predicate
---
 .../pinot/core/query/pruner/ColumnValueSegmentPruner.java     | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

diff --git 
a/pinot-core/src/main/java/org/apache/pinot/core/query/pruner/ColumnValueSegmentPruner.java
 
b/pinot-core/src/main/java/org/apache/pinot/core/query/pruner/ColumnValueSegmentPruner.java
index 5c69d0eabcd..ca3c51419cc 100644
--- 
a/pinot-core/src/main/java/org/apache/pinot/core/query/pruner/ColumnValueSegmentPruner.java
+++ 
b/pinot-core/src/main/java/org/apache/pinot/core/query/pruner/ColumnValueSegmentPruner.java
@@ -91,7 +91,8 @@ public class ColumnValueSegmentPruner extends 
ValueBasedSegmentPruner {
     DataSourceMetadata dataSourceMetadata = getDataSourceMetadata(segment, 
column, dataSourceCache, query);
     ValueCache.CachedValue cachedValue = valueCache.get(eqPredicate, 
dataSourceMetadata.getDataType());
     // Check min/max value
-    if (!checkMinMaxRange(dataSourceMetadata, 
cachedValue.getComparableValue())) {
+    if (!checkMinMaxRange(dataSourceMetadata.getMinValue(), 
dataSourceMetadata.getMaxValue(),
+        cachedValue.getComparableValue())) {
       return true;
     }
     // Check column partition
@@ -120,8 +121,10 @@ public class ColumnValueSegmentPruner extends 
ValueBasedSegmentPruner {
     DataSourceMetadata dataSourceMetadata = getDataSourceMetadata(segment, 
column, dataSourceCache, query);
     List<ValueCache.CachedValue> cachedValues = valueCache.get(inPredicate, 
dataSourceMetadata.getDataType());
     // Check min/max value
+    Comparable minValue = dataSourceMetadata.getMinValue();
+    Comparable maxValue = dataSourceMetadata.getMaxValue();
     for (ValueCache.CachedValue value : cachedValues) {
-      if (checkMinMaxRange(dataSourceMetadata, value.getComparableValue())) {
+      if (checkMinMaxRange(minValue, maxValue, value.getComparableValue())) {
         return false;
       }
     }
@@ -198,14 +201,12 @@ public class ColumnValueSegmentPruner extends 
ValueBasedSegmentPruner {
   }
 
   /// Returns `true` if the value is within the column's min/max value range, 
`false` otherwise.
-  private boolean checkMinMaxRange(DataSourceMetadata dataSourceMetadata, 
Comparable value) {
-    Comparable minValue = dataSourceMetadata.getMinValue();
+  private static boolean checkMinMaxRange(Comparable minValue, Comparable 
maxValue, Comparable value) {
     if (minValue != null) {
       if (value.compareTo(minValue) < 0) {
         return false;
       }
     }
-    Comparable maxValue = dataSourceMetadata.getMaxValue();
     if (maxValue != null) {
       if (value.compareTo(maxValue) > 0) {
         return false;


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

Reply via email to