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]
