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

siddteotia 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 2afd273c84 BloomFilterRule should only recommend for supported column 
type (#9364)
2afd273c84 is described below

commit 2afd273c84673fc321eb7f1b2dcb5c13d991b358
Author: Benson Yuan <[email protected]>
AuthorDate: Fri Sep 9 14:21:14 2022 -0700

    BloomFilterRule should only recommend for supported column type (#9364)
---
 .../controller/recommender/rules/impl/BloomFilterRule.java    | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git 
a/pinot-controller/src/main/java/org/apache/pinot/controller/recommender/rules/impl/BloomFilterRule.java
 
b/pinot-controller/src/main/java/org/apache/pinot/controller/recommender/rules/impl/BloomFilterRule.java
index a2e9f2d93e..5a9de70e5d 100644
--- 
a/pinot-controller/src/main/java/org/apache/pinot/controller/recommender/rules/impl/BloomFilterRule.java
+++ 
b/pinot-controller/src/main/java/org/apache/pinot/controller/recommender/rules/impl/BloomFilterRule.java
@@ -19,7 +19,10 @@
 package org.apache.pinot.controller.recommender.rules.impl;
 
 import com.google.common.util.concurrent.AtomicDouble;
+import java.util.Arrays;
+import java.util.HashSet;
 import java.util.List;
+import java.util.Set;
 import org.apache.pinot.common.request.context.ExpressionContext;
 import org.apache.pinot.common.request.context.FilterContext;
 import org.apache.pinot.common.request.context.predicate.Predicate;
@@ -29,6 +32,7 @@ import 
org.apache.pinot.controller.recommender.rules.AbstractRule;
 import 
org.apache.pinot.controller.recommender.rules.io.params.BloomFilterRuleParams;
 import org.apache.pinot.controller.recommender.rules.utils.FixedLenBitset;
 import org.apache.pinot.core.query.request.context.QueryContext;
+import org.apache.pinot.spi.data.FieldSpec.DataType;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -41,6 +45,9 @@ import org.slf4j.LoggerFactory;
 public class BloomFilterRule extends AbstractRule {
   private static final Logger LOGGER = 
LoggerFactory.getLogger(BloomFilterRule.class);
   private final BloomFilterRuleParams _params;
+  // Derived from BloomFilterHandler
+  private static final Set<DataType> COMPATIBLE_DATA_TYPES = new HashSet<>(
+      Arrays.asList(DataType.INT, DataType.LONG, DataType.FLOAT, 
DataType.DOUBLE, DataType.STRING, DataType.BYTES));
 
   public BloomFilterRule(InputManager input, ConfigManager output) {
     super(input, output);
@@ -68,7 +75,9 @@ public class BloomFilterRule extends AbstractRule {
 
     for (int i = 0; i < numCols; i++) {
       String dimName = _input.intToColName(i);
-      if (((weights[i] / totalWeight.get()) > 
_params._thresholdMinPercentEqBloomfilter)
+      DataType columnType = _input.getFieldType(dimName);
+      if (COMPATIBLE_DATA_TYPES.contains(columnType)
+          && ((weights[i] / totalWeight.get()) > 
_params._thresholdMinPercentEqBloomfilter)
           //The partitioned dimension should be frequently > P used
           && (_input.getCardinality(dimName)
           < _params._thresholdMaxCardinalityBloomfilter)) { //The Cardinality 
< C (1 million for 1MB size)


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

Reply via email to