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

mayanks 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 fd08b906c0 Adding fields to enable/disable dictionary optimization. 
(#10484)
fd08b906c0 is described below

commit fd08b906c09ca89fb7d9c5c8ab5a5ceaf2d18fe4
Author: swaminathanmanish <[email protected]>
AuthorDate: Mon Mar 27 14:07:13 2023 -0700

    Adding fields to enable/disable dictionary optimization. (#10484)
---
 .../pinot/common/utils/config/TableConfigSerDeTest.java  |  7 +++++--
 .../pinot/spi/utils/builder/TableConfigBuilder.java      | 16 ++++++++++++++++
 2 files changed, 21 insertions(+), 2 deletions(-)

diff --git 
a/pinot-common/src/test/java/org/apache/pinot/common/utils/config/TableConfigSerDeTest.java
 
b/pinot-common/src/test/java/org/apache/pinot/common/utils/config/TableConfigSerDeTest.java
index 30dbfe80b4..6436058b59 100644
--- 
a/pinot-common/src/test/java/org/apache/pinot/common/utils/config/TableConfigSerDeTest.java
+++ 
b/pinot-common/src/test/java/org/apache/pinot/common/utils/config/TableConfigSerDeTest.java
@@ -64,11 +64,12 @@ import static org.testng.Assert.*;
 
 
 public class TableConfigSerDeTest {
-
+  private static final double NO_DICTIONARY_THRESHOLD_RATIO = 0.72;
   @Test
   public void testSerDe()
       throws IOException {
-    TableConfigBuilder tableConfigBuilder = new 
TableConfigBuilder(TableType.OFFLINE).setTableName("testTable");
+    TableConfigBuilder tableConfigBuilder = new 
TableConfigBuilder(TableType.OFFLINE).setTableName("testTable")
+        
.setNoDictionarySizeRatioThreshold(NO_DICTIONARY_THRESHOLD_RATIO).setOptimizeDictionaryForMetrics(true);
     {
       // Default table config
       TableConfig tableConfig = tableConfigBuilder.build();
@@ -367,6 +368,8 @@ public class TableConfigSerDeTest {
     assertNull(tableConfig.getInstanceAssignmentConfigMap());
     assertNull(tableConfig.getSegmentAssignmentConfigMap());
     assertNull(tableConfig.getFieldConfigList());
+    
assertEquals(tableConfig.getIndexingConfig().isOptimizeDictionaryForMetrics(), 
true);
+    
assertEquals(tableConfig.getIndexingConfig().getNoDictionarySizeRatioThreshold(),
 NO_DICTIONARY_THRESHOLD_RATIO);
 
     // Serialize
     ObjectNode tableConfigJson = (ObjectNode) tableConfig.toJsonNode();
diff --git 
a/pinot-spi/src/main/java/org/apache/pinot/spi/utils/builder/TableConfigBuilder.java
 
b/pinot-spi/src/main/java/org/apache/pinot/spi/utils/builder/TableConfigBuilder.java
index 4916668eed..ba87dee5c9 100644
--- 
a/pinot-spi/src/main/java/org/apache/pinot/spi/utils/builder/TableConfigBuilder.java
+++ 
b/pinot-spi/src/main/java/org/apache/pinot/spi/utils/builder/TableConfigBuilder.java
@@ -103,6 +103,10 @@ public class TableConfigBuilder {
   private List<StarTreeIndexConfig> _starTreeIndexConfigs;
   private List<String> _jsonIndexColumns;
   private boolean _aggregateMetrics;
+  private boolean _optimizeDictionaryForMetrics;
+  // This threshold determines if dictionary should be enabled or not for a 
metric column and is relevant
+  // only when _optimizeDictionaryForMetrics is set to true.
+  private double _noDictionarySizeRatioThreshold;
 
   private TableCustomConfig _customConfig;
   private QuotaConfig _quotaConfig;
@@ -256,6 +260,16 @@ public class TableConfigBuilder {
     return this;
   }
 
+  public TableConfigBuilder setOptimizeDictionaryForMetrics(boolean 
optimizeDictionaryForMetrics) {
+    _optimizeDictionaryForMetrics = optimizeDictionaryForMetrics;
+    return this;
+  }
+
+  public TableConfigBuilder setNoDictionarySizeRatioThreshold(double 
noDictionarySizeRatioThreshold) {
+    _noDictionarySizeRatioThreshold = noDictionarySizeRatioThreshold;
+    return this;
+  }
+
   public TableConfigBuilder setCreateInvertedIndexDuringSegmentGeneration(
       boolean createInvertedIndexDuringSegmentGeneration) {
     _createInvertedIndexDuringSegmentGeneration = 
createInvertedIndexDuringSegmentGeneration;
@@ -444,6 +458,8 @@ public class TableConfigBuilder {
     indexingConfig.setStarTreeIndexConfigs(_starTreeIndexConfigs);
     indexingConfig.setJsonIndexColumns(_jsonIndexColumns);
     indexingConfig.setAggregateMetrics(_aggregateMetrics);
+    
indexingConfig.setOptimizeDictionaryForMetrics(_optimizeDictionaryForMetrics);
+    
indexingConfig.setNoDictionarySizeRatioThreshold(_noDictionarySizeRatioThreshold);
 
     if (_customConfig == null) {
       _customConfig = new TableCustomConfig(null);


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

Reply via email to