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 9d9f4fcf44 Enhance and clean up star-tree tests (#15587)
9d9f4fcf44 is described below

commit 9d9f4fcf4445014bfa27be4bc60e3746153412f6
Author: Xiaotian (Jackie) Jiang <17555551+jackie-ji...@users.noreply.github.com>
AuthorDate: Thu Apr 17 18:39:05 2025 -0600

    Enhance and clean up star-tree tests (#15587)
---
 .../BaseTableDataManagerNeedRefreshTest.java       |  97 +++++-----
 .../tests/OfflineClusterIntegrationTest.java       | 208 ++++++++++-----------
 .../v2/builder/StarTreeBuilderUtilsTest.java       | 139 +++++++-------
 .../v2/builder/StarTreeV2BuilderConfigTest.java    |  63 ++++---
 .../startree/AggregationFunctionColumnPair.java    |   1 +
 5 files changed, 266 insertions(+), 242 deletions(-)

diff --git 
a/pinot-core/src/test/java/org/apache/pinot/core/data/manager/BaseTableDataManagerNeedRefreshTest.java
 
b/pinot-core/src/test/java/org/apache/pinot/core/data/manager/BaseTableDataManagerNeedRefreshTest.java
index 451d5ed9cf..d802acf07a 100644
--- 
a/pinot-core/src/test/java/org/apache/pinot/core/data/manager/BaseTableDataManagerNeedRefreshTest.java
+++ 
b/pinot-core/src/test/java/org/apache/pinot/core/data/manager/BaseTableDataManagerNeedRefreshTest.java
@@ -22,7 +22,6 @@ import java.io.File;
 import java.io.IOException;
 import java.lang.reflect.Method;
 import java.util.Arrays;
-import java.util.Collections;
 import java.util.List;
 import java.util.Map;
 import org.apache.commons.io.FileUtils;
@@ -200,7 +199,7 @@ public class BaseTableDataManagerNeedRefreshTest {
       throws Exception {
     TableConfig tableConfig = new 
TableConfigBuilder(TableType.OFFLINE).setTableName(DEFAULT_TABLE_NAME)
         .setNullHandlingEnabled(true)
-        .setNoDictionaryColumns(Collections.singletonList(TEXT_INDEX_COLUMN))
+        .setNoDictionaryColumns(List.of(TEXT_INDEX_COLUMN))
         .build();
     Schema schema = new 
Schema.SchemaBuilder().addSingleValueDimension(TEXT_INDEX_COLUMN, 
FieldSpec.DataType.STRING)
         .addSingleValueDimension(JSON_INDEX_COLUMN, FieldSpec.DataType.JSON)
@@ -409,8 +408,9 @@ public class BaseTableDataManagerNeedRefreshTest {
   public void addStartreeIndex() {
     // Test 1 : Adding a StarTree index should trigger segment refresh.
 
-    StarTreeIndexConfig starTreeIndexConfig = new 
StarTreeIndexConfig(Collections.singletonList("Carrier"), null,
-        
Collections.singletonList(AggregationFunctionColumnPair.COUNT_STAR.toColumnName()),
 null, 100);
+    StarTreeIndexConfig starTreeIndexConfig =
+        new StarTreeIndexConfig(List.of("Carrier"), null, 
List.of(AggregationFunctionColumnPair.COUNT_STAR_NAME), null,
+            100);
     TableConfig tableConfig = 
getTableConfigBuilder().setStarTreeIndexConfigs(List.of(starTreeIndexConfig)).build();
     assertTrue(BASE_TABLE_DATA_MANAGER.isSegmentStale(new 
IndexLoadingConfig(tableConfig, SCHEMA),
         IMMUTABLE_SEGMENT_DATA_MANAGER).isStale());
@@ -423,15 +423,17 @@ public class BaseTableDataManagerNeedRefreshTest {
     // trigger segment refresh.
 
     // Create a segment with StarTree index on Carrier.
-    StarTreeIndexConfig starTreeIndexConfig = new 
StarTreeIndexConfig(Collections.singletonList("Carrier"), null,
-        
Collections.singletonList(AggregationFunctionColumnPair.COUNT_STAR.toColumnName()),
 null, 100);
+    StarTreeIndexConfig starTreeIndexConfig =
+        new StarTreeIndexConfig(List.of("Carrier"), null, 
List.of(AggregationFunctionColumnPair.COUNT_STAR_NAME), null,
+            100);
     TableConfig tableConfig = 
getTableConfigBuilder().setStarTreeIndexConfigs(List.of(starTreeIndexConfig)).build();
     ImmutableSegmentDataManager segmentDataManager =
         createImmutableSegmentDataManager(new IndexLoadingConfig(tableConfig, 
SCHEMA), _testName, generateRows());
 
     // Create a StarTree index on Distance.
-    StarTreeIndexConfig newStarTreeIndexConfig = new 
StarTreeIndexConfig(Collections.singletonList("Distance"), null,
-        
Collections.singletonList(AggregationFunctionColumnPair.COUNT_STAR.toColumnName()),
 null, 100);
+    StarTreeIndexConfig newStarTreeIndexConfig =
+        new StarTreeIndexConfig(List.of("Distance"), null, 
List.of(AggregationFunctionColumnPair.COUNT_STAR_NAME), null,
+            100);
     TableConfig newTableConfig =
         
getTableConfigBuilder().setStarTreeIndexConfigs(List.of(newStarTreeIndexConfig)).build();
     assertTrue(
@@ -446,14 +448,15 @@ public class BaseTableDataManagerNeedRefreshTest {
     // refresh.
 
     // Create a segment with StarTree index on Carrier.
-    StarTreeIndexConfig starTreeIndexConfig = new 
StarTreeIndexConfig(Collections.singletonList("Carrier"), null,
-        
Collections.singletonList(AggregationFunctionColumnPair.COUNT_STAR.toColumnName()),
 null, 100);
+    StarTreeIndexConfig starTreeIndexConfig =
+        new StarTreeIndexConfig(List.of("Carrier"), null, 
List.of(AggregationFunctionColumnPair.COUNT_STAR_NAME), null,
+            100);
     TableConfig tableConfig = 
getTableConfigBuilder().setStarTreeIndexConfigs(List.of(starTreeIndexConfig)).build();
     ImmutableSegmentDataManager segmentDataManager =
         createImmutableSegmentDataManager(new IndexLoadingConfig(tableConfig, 
SCHEMA), _testName, generateRows());
 
     StarTreeIndexConfig newStarTreeIndexConfig = new 
StarTreeIndexConfig(Arrays.asList("Carrier", "Distance"), null,
-        
Collections.singletonList(AggregationFunctionColumnPair.COUNT_STAR.toColumnName()),
 null, 100);
+        List.of(AggregationFunctionColumnPair.COUNT_STAR_NAME), null, 100);
     TableConfig newTableConfig =
         
getTableConfigBuilder().setStarTreeIndexConfigs(List.of(newStarTreeIndexConfig)).build();
     assertTrue(
@@ -469,14 +472,14 @@ public class BaseTableDataManagerNeedRefreshTest {
 
     // Create a segment with StarTree index on Carrier, Distance.
     StarTreeIndexConfig starTreeIndexConfig = new 
StarTreeIndexConfig(Arrays.asList("Carrier", "Distance"), null,
-        
Collections.singletonList(AggregationFunctionColumnPair.COUNT_STAR.toColumnName()),
 null, 100);
+        List.of(AggregationFunctionColumnPair.COUNT_STAR_NAME), null, 100);
     TableConfig tableConfig = 
getTableConfigBuilder().setStarTreeIndexConfigs(List.of(starTreeIndexConfig)).build();
     ImmutableSegmentDataManager segmentDataManager =
         createImmutableSegmentDataManager(new IndexLoadingConfig(tableConfig, 
SCHEMA), _testName, generateRows());
 
     // Create a StarTree index.
     StarTreeIndexConfig newStarTreeIndexConfig = new 
StarTreeIndexConfig(Arrays.asList("Distance", "Carrier"), null,
-        
Collections.singletonList(AggregationFunctionColumnPair.COUNT_STAR.toColumnName()),
 null, 100);
+        List.of(AggregationFunctionColumnPair.COUNT_STAR_NAME), null, 100);
     TableConfig newTableConfig =
         
getTableConfigBuilder().setStarTreeIndexConfigs(List.of(newStarTreeIndexConfig)).build();
     assertTrue(
@@ -491,7 +494,7 @@ public class BaseTableDataManagerNeedRefreshTest {
     // Create a segment with StarTree index on Carrier, Distance.
 
     StarTreeIndexConfig starTreeIndexConfig = new 
StarTreeIndexConfig(Arrays.asList("Carrier", "Distance"), null,
-        
Collections.singletonList(AggregationFunctionColumnPair.COUNT_STAR.toColumnName()),
 null, 100);
+        List.of(AggregationFunctionColumnPair.COUNT_STAR_NAME), null, 100);
     TableConfig tableConfig = 
getTableConfigBuilder().setStarTreeIndexConfigs(List.of(starTreeIndexConfig)).build();
     ImmutableSegmentDataManager segmentDataManager =
         createImmutableSegmentDataManager(new IndexLoadingConfig(tableConfig, 
SCHEMA), _testName, generateRows());
@@ -499,7 +502,7 @@ public class BaseTableDataManagerNeedRefreshTest {
     // Create a StarTree index.
     StarTreeIndexConfig newStarTreeIndexConfig =
         new StarTreeIndexConfig(Arrays.asList("Carrier", "Distance"), 
Arrays.asList("Carrier", "Distance"),
-            
Collections.singletonList(AggregationFunctionColumnPair.COUNT_STAR.toColumnName()),
 null, 100);
+            List.of(AggregationFunctionColumnPair.COUNT_STAR_NAME), null, 100);
     TableConfig newTableConfig =
         
getTableConfigBuilder().setStarTreeIndexConfigs(List.of(newStarTreeIndexConfig)).build();
     assertTrue(
@@ -515,14 +518,14 @@ public class BaseTableDataManagerNeedRefreshTest {
 
     StarTreeIndexConfig starTreeIndexConfig =
         new StarTreeIndexConfig(Arrays.asList("Carrier", "Distance"), 
Arrays.asList("Carrier", "Distance"),
-            
Collections.singletonList(AggregationFunctionColumnPair.COUNT_STAR.toColumnName()),
 null, 100);
+            List.of(AggregationFunctionColumnPair.COUNT_STAR_NAME), null, 100);
     TableConfig tableConfig = 
getTableConfigBuilder().setStarTreeIndexConfigs(List.of(starTreeIndexConfig)).build();
     ImmutableSegmentDataManager segmentDataManager =
         createImmutableSegmentDataManager(new IndexLoadingConfig(tableConfig, 
SCHEMA), _testName, generateRows());
 
     StarTreeIndexConfig newStarTreeIndexConfig =
         new StarTreeIndexConfig(Arrays.asList("Carrier", "Distance"), 
Arrays.asList("Distance", "Carrier"),
-            
Collections.singletonList(AggregationFunctionColumnPair.COUNT_STAR.toColumnName()),
 null, 100);
+            List.of(AggregationFunctionColumnPair.COUNT_STAR_NAME), null, 100);
     TableConfig newTableConfig =
         
getTableConfigBuilder().setStarTreeIndexConfigs(List.of(newStarTreeIndexConfig)).build();
     assertFalse(
@@ -537,13 +540,13 @@ public class BaseTableDataManagerNeedRefreshTest {
 
     StarTreeIndexConfig starTreeIndexConfig =
         new StarTreeIndexConfig(Arrays.asList("Carrier", "Distance"), 
Arrays.asList("Carrier", "Distance"),
-            
Collections.singletonList(AggregationFunctionColumnPair.COUNT_STAR.toColumnName()),
 null, 100);
+            List.of(AggregationFunctionColumnPair.COUNT_STAR_NAME), null, 100);
     TableConfig tableConfig = 
getTableConfigBuilder().setStarTreeIndexConfigs(List.of(starTreeIndexConfig)).build();
     ImmutableSegmentDataManager segmentDataManager =
         createImmutableSegmentDataManager(new IndexLoadingConfig(tableConfig, 
SCHEMA), _testName, generateRows());
 
     StarTreeIndexConfig newStarTreeIndexConfig = new 
StarTreeIndexConfig(Arrays.asList("Carrier", "Distance"), null,
-        
Collections.singletonList(AggregationFunctionColumnPair.COUNT_STAR.toColumnName()),
 null, 100);
+        List.of(AggregationFunctionColumnPair.COUNT_STAR_NAME), null, 100);
     TableConfig newTableConfig =
         
getTableConfigBuilder().setStarTreeIndexConfigs(List.of(newStarTreeIndexConfig)).build();
     assertTrue(
@@ -557,13 +560,13 @@ public class BaseTableDataManagerNeedRefreshTest {
     // Test 8: Adding a new StarTree index with an added metrics aggregation 
function should trigger segment refresh.
 
     StarTreeIndexConfig starTreeIndex = new 
StarTreeIndexConfig(Arrays.asList("Carrier", "Distance"), null,
-        
Collections.singletonList(AggregationFunctionColumnPair.COUNT_STAR.toColumnName()),
 null, 100);
+        List.of(AggregationFunctionColumnPair.COUNT_STAR_NAME), null, 100);
     TableConfig tableConfig = 
getTableConfigBuilder().setStarTreeIndexConfigs(List.of(starTreeIndex)).build();
     ImmutableSegmentDataManager segmentDataManager =
         createImmutableSegmentDataManager(new IndexLoadingConfig(tableConfig, 
SCHEMA), _testName, generateRows());
 
     StarTreeIndexConfig newStarTreeIndexConfig = new 
StarTreeIndexConfig(Arrays.asList("Carrier", "Distance"), null,
-        Arrays.asList(AggregationFunctionColumnPair.COUNT_STAR.toColumnName(), 
"MAX__Distance"), null, 100);
+        Arrays.asList(AggregationFunctionColumnPair.COUNT_STAR_NAME, 
"MAX__Distance"), null, 100);
     TableConfig newTableConfig =
         
getTableConfigBuilder().setStarTreeIndexConfigs(List.of(newStarTreeIndexConfig)).build();
     assertTrue(
@@ -578,13 +581,13 @@ public class BaseTableDataManagerNeedRefreshTest {
     // trigger segment refresh.
 
     StarTreeIndexConfig starTreeIndexConfig = new 
StarTreeIndexConfig(Arrays.asList("Carrier", "Distance"), null,
-        Arrays.asList(AggregationFunctionColumnPair.COUNT_STAR.toColumnName(), 
"MAX__Distance"), null, 100);
+        Arrays.asList(AggregationFunctionColumnPair.COUNT_STAR_NAME, 
"MAX__Distance"), null, 100);
     TableConfig tableConfig = 
getTableConfigBuilder().setStarTreeIndexConfigs(List.of(starTreeIndexConfig)).build();
     ImmutableSegmentDataManager segmentDataManager =
         createImmutableSegmentDataManager(new IndexLoadingConfig(tableConfig, 
SCHEMA), _testName, generateRows());
 
     StarTreeIndexConfig newStarTreeIndexConfig = new 
StarTreeIndexConfig(Arrays.asList("Carrier", "Distance"), null,
-        Arrays.asList("MAX__Distance", 
AggregationFunctionColumnPair.COUNT_STAR.toColumnName()), null, 100);
+        Arrays.asList("MAX__Distance", 
AggregationFunctionColumnPair.COUNT_STAR_NAME), null, 100);
     TableConfig newTableConfig =
         
getTableConfigBuilder().setStarTreeIndexConfigs(List.of(newStarTreeIndexConfig)).build();
     assertFalse(
@@ -598,7 +601,7 @@ public class BaseTableDataManagerNeedRefreshTest {
     // Test 10: removing an aggregation function through aggregation config 
should trigger segment refresh.
 
     StarTreeIndexConfig starTreeIndexConfig = new 
StarTreeIndexConfig(Arrays.asList("Carrier", "Distance"), null,
-        Arrays.asList("MAX__Distance", 
AggregationFunctionColumnPair.COUNT_STAR.toColumnName()), null, 100);
+        Arrays.asList("MAX__Distance", 
AggregationFunctionColumnPair.COUNT_STAR_NAME), null, 100);
 
     TableConfig tableConfig = 
getTableConfigBuilder().setStarTreeIndexConfigs(List.of(starTreeIndexConfig)).build();
     ImmutableSegmentDataManager segmentDataManager =
@@ -628,8 +631,7 @@ public class BaseTableDataManagerNeedRefreshTest {
 
     // Create a StarTree index.
     StarTreeIndexConfig newStarTreeIndexConfig = new 
StarTreeIndexConfig(Arrays.asList("Carrier", "Distance"), null,
-        
Collections.singletonList(AggregationFunctionColumnPair.COUNT_STAR.toColumnName()),
-        Collections.singletonList(aggregationConfig), 100);
+        List.of(AggregationFunctionColumnPair.COUNT_STAR_NAME), 
List.of(aggregationConfig), 100);
     TableConfig newTableConfig =
         
getTableConfigBuilder().setStarTreeIndexConfigs(List.of(newStarTreeIndexConfig)).build();
     assertTrue(
@@ -645,8 +647,7 @@ public class BaseTableDataManagerNeedRefreshTest {
 
     StarTreeAggregationConfig aggregationConfig = new 
StarTreeAggregationConfig("Distance", "MAX");
     StarTreeIndexConfig starTreeIndexConfig = new 
StarTreeIndexConfig(Arrays.asList("Carrier", "Distance"), null,
-        
Collections.singletonList(AggregationFunctionColumnPair.COUNT_STAR.toColumnName()),
-        Collections.singletonList(aggregationConfig), 100);
+        List.of(AggregationFunctionColumnPair.COUNT_STAR_NAME), 
List.of(aggregationConfig), 100);
     TableConfig tableConfig = 
getTableConfigBuilder().setStarTreeIndexConfigs(List.of(starTreeIndexConfig)).build();
     ImmutableSegmentDataManager segmentDataManager =
         createImmutableSegmentDataManager(new IndexLoadingConfig(tableConfig, 
SCHEMA), _testName, generateRows());
@@ -665,14 +666,16 @@ public class BaseTableDataManagerNeedRefreshTest {
   @Test
   void testStarTreeIndexMaxLeafNode()
       throws Exception {
-    StarTreeIndexConfig starTreeIndexConfig = new 
StarTreeIndexConfig(Collections.singletonList("Carrier"), null,
-        
Collections.singletonList(AggregationFunctionColumnPair.COUNT_STAR.toColumnName()),
 null, 100);
+    StarTreeIndexConfig starTreeIndexConfig =
+        new StarTreeIndexConfig(List.of("Carrier"), null, 
List.of(AggregationFunctionColumnPair.COUNT_STAR_NAME), null,
+            100);
     TableConfig tableConfig = 
getTableConfigBuilder().setStarTreeIndexConfigs(List.of(starTreeIndexConfig)).build();
     ImmutableSegmentDataManager segmentDataManager =
         createImmutableSegmentDataManager(new IndexLoadingConfig(tableConfig, 
SCHEMA), _testName, generateRows());
 
-    StarTreeIndexConfig newStarTreeIndexConfig = new 
StarTreeIndexConfig(Collections.singletonList("Carrier"), null,
-        
Collections.singletonList(AggregationFunctionColumnPair.COUNT_STAR.toColumnName()),
 null, 10);
+    StarTreeIndexConfig newStarTreeIndexConfig =
+        new StarTreeIndexConfig(List.of("Carrier"), null, 
List.of(AggregationFunctionColumnPair.COUNT_STAR_NAME), null,
+            10);
     TableConfig newTableConfig =
         
getTableConfigBuilder().setStarTreeIndexConfigs(List.of(newStarTreeIndexConfig)).build();
     assertTrue(
@@ -683,8 +686,9 @@ public class BaseTableDataManagerNeedRefreshTest {
   @Test
   void testStarTreeIndexRemove()
       throws Exception {
-    StarTreeIndexConfig starTreeIndexConfig = new 
StarTreeIndexConfig(Collections.singletonList("Carrier"), null,
-        
Collections.singletonList(AggregationFunctionColumnPair.COUNT_STAR.toColumnName()),
 null, 100);
+    StarTreeIndexConfig starTreeIndexConfig =
+        new StarTreeIndexConfig(List.of("Carrier"), null, 
List.of(AggregationFunctionColumnPair.COUNT_STAR_NAME), null,
+            100);
     TableConfig tableConfig = 
getTableConfigBuilder().setStarTreeIndexConfigs(List.of(starTreeIndexConfig)).build();
     ImmutableSegmentDataManager segmentDataManager =
         createImmutableSegmentDataManager(new IndexLoadingConfig(tableConfig, 
SCHEMA), _testName, generateRows());
@@ -696,14 +700,16 @@ public class BaseTableDataManagerNeedRefreshTest {
       throws Exception {
     // Test 15: Add multiple StarTree Indexes should trigger segment refresh.
 
-    StarTreeIndexConfig starTreeIndexConfig = new 
StarTreeIndexConfig(Collections.singletonList("Carrier"), null,
-        
Collections.singletonList(AggregationFunctionColumnPair.COUNT_STAR.toColumnName()),
 null, 100);
+    StarTreeIndexConfig starTreeIndexConfig =
+        new StarTreeIndexConfig(List.of("Carrier"), null, 
List.of(AggregationFunctionColumnPair.COUNT_STAR_NAME), null,
+            100);
     TableConfig tableConfig = 
getTableConfigBuilder().setStarTreeIndexConfigs(List.of(starTreeIndexConfig)).build();
     ImmutableSegmentDataManager segmentDataManager =
         createImmutableSegmentDataManager(new IndexLoadingConfig(tableConfig, 
SCHEMA), _testName, generateRows());
 
-    StarTreeIndexConfig newStarTreeIndexConfig = new 
StarTreeIndexConfig(Collections.singletonList("Distance"), null,
-        
Collections.singletonList(AggregationFunctionColumnPair.COUNT_STAR.toColumnName()),
 null, 100);
+    StarTreeIndexConfig newStarTreeIndexConfig =
+        new StarTreeIndexConfig(List.of("Distance"), null, 
List.of(AggregationFunctionColumnPair.COUNT_STAR_NAME), null,
+            100);
     TableConfig newTableConfig =
         
getTableConfigBuilder().setStarTreeIndexConfigs(List.of(starTreeIndexConfig, 
newStarTreeIndexConfig)).build();
     assertTrue(
@@ -716,8 +722,9 @@ public class BaseTableDataManagerNeedRefreshTest {
       throws Exception {
     // Test 16: Enabling default StarTree index should trigger a segment 
refresh.
 
-    StarTreeIndexConfig starTreeIndexConfig = new 
StarTreeIndexConfig(Collections.singletonList("Carrier"), null,
-        
Collections.singletonList(AggregationFunctionColumnPair.COUNT_STAR.toColumnName()),
 null, 100);
+    StarTreeIndexConfig starTreeIndexConfig =
+        new StarTreeIndexConfig(List.of("Carrier"), null, 
List.of(AggregationFunctionColumnPair.COUNT_STAR_NAME), null,
+            100);
     TableConfig tableConfig = 
getTableConfigBuilder().setStarTreeIndexConfigs(List.of(starTreeIndexConfig)).build();
     ImmutableSegmentDataManager segmentDataManager =
         createImmutableSegmentDataManager(new IndexLoadingConfig(tableConfig, 
SCHEMA), _testName, generateRows());
@@ -734,8 +741,9 @@ public class BaseTableDataManagerNeedRefreshTest {
       throws Exception {
     // Test 17: Attempting to trigger segment refresh again should not be 
successful.
 
-    StarTreeIndexConfig starTreeIndexConfig = new 
StarTreeIndexConfig(Collections.singletonList("Carrier"), null,
-        
Collections.singletonList(AggregationFunctionColumnPair.COUNT_STAR.toColumnName()),
 null, 100);
+    StarTreeIndexConfig starTreeIndexConfig =
+        new StarTreeIndexConfig(List.of("Carrier"), null, 
List.of(AggregationFunctionColumnPair.COUNT_STAR_NAME), null,
+            100);
     TableConfig tableConfig = 
getTableConfigBuilder().setStarTreeIndexConfigs(List.of(starTreeIndexConfig)).build();
     IndexLoadingConfig indexLoadingConfig = new 
IndexLoadingConfig(tableConfig, SCHEMA);
     ImmutableSegmentDataManager segmentDataManager =
@@ -748,8 +756,9 @@ public class BaseTableDataManagerNeedRefreshTest {
       throws Exception {
     // Test 18: Disabling default StarTree index should trigger a segment 
refresh.
 
-    StarTreeIndexConfig starTreeIndexConfig = new 
StarTreeIndexConfig(Collections.singletonList("Carrier"), null,
-        
Collections.singletonList(AggregationFunctionColumnPair.COUNT_STAR.toColumnName()),
 null, 100);
+    StarTreeIndexConfig starTreeIndexConfig =
+        new StarTreeIndexConfig(List.of("Carrier"), null, 
List.of(AggregationFunctionColumnPair.COUNT_STAR_NAME), null,
+            100);
     TableConfig tableConfig = 
getTableConfigBuilder().setStarTreeIndexConfigs(List.of(starTreeIndexConfig)).build();
     tableConfig.getIndexingConfig().setEnableDefaultStarTree(true);
     ImmutableSegmentDataManager segmentDataManager =
diff --git 
a/pinot-integration-tests/src/test/java/org/apache/pinot/integration/tests/OfflineClusterIntegrationTest.java
 
b/pinot-integration-tests/src/test/java/org/apache/pinot/integration/tests/OfflineClusterIntegrationTest.java
index f020fa0276..4dba0fb6e4 100644
--- 
a/pinot-integration-tests/src/test/java/org/apache/pinot/integration/tests/OfflineClusterIntegrationTest.java
+++ 
b/pinot-integration-tests/src/test/java/org/apache/pinot/integration/tests/OfflineClusterIntegrationTest.java
@@ -34,7 +34,6 @@ import java.time.Instant;
 import java.time.ZoneId;
 import java.time.format.DateTimeFormatter;
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
@@ -137,29 +136,29 @@ public class OfflineClusterIntegrationTest extends 
BaseClusterIntegrationTestSet
 
   // For inverted index triggering test
   private static final List<String> UPDATED_INVERTED_INDEX_COLUMNS =
-      Arrays.asList("FlightNum", "Origin", "Quarter", "DivActualElapsedTime");
+      List.of("FlightNum", "Origin", "Quarter", "DivActualElapsedTime");
   private static final String TEST_UPDATED_INVERTED_INDEX_QUERY =
       "SELECT COUNT(*) FROM mytable WHERE DivActualElapsedTime = 305";
 
   // For range index triggering test
-  private static final List<String> UPDATED_RANGE_INDEX_COLUMNS = 
Collections.singletonList("DivActualElapsedTime");
+  private static final List<String> UPDATED_RANGE_INDEX_COLUMNS = 
List.of("DivActualElapsedTime");
   private static final String TEST_UPDATED_RANGE_INDEX_QUERY =
       "SELECT COUNT(*) FROM mytable WHERE DivActualElapsedTime > 305";
 
   // For bloom filter triggering test
-  private static final List<String> UPDATED_BLOOM_FILTER_COLUMNS = 
Collections.singletonList("Carrier");
+  private static final List<String> UPDATED_BLOOM_FILTER_COLUMNS = 
List.of("Carrier");
   private static final String TEST_UPDATED_BLOOM_FILTER_QUERY = "SELECT 
COUNT(*) FROM mytable WHERE Carrier = 'CA'";
 
   // For star-tree triggering test
   private static final StarTreeIndexConfig STAR_TREE_INDEX_CONFIG_1 =
-      new StarTreeIndexConfig(Collections.singletonList("Carrier"), null,
-          
Collections.singletonList(AggregationFunctionColumnPair.COUNT_STAR.toColumnName()),
 null, 100);
+      new StarTreeIndexConfig(List.of("Carrier"), null, 
List.of(AggregationFunctionColumnPair.COUNT_STAR_NAME), null,
+          100);
   private static final String TEST_STAR_TREE_QUERY_1 = "SELECT COUNT(*) FROM 
mytable WHERE Carrier = 'UA'";
   private static final String TEST_STAR_TREE_QUERY_1_FILTER_INVERT =
       "SELECT COUNT(*) FILTER (WHERE Carrier = 'UA') FROM mytable";
   private static final StarTreeIndexConfig STAR_TREE_INDEX_CONFIG_2 =
-      new StarTreeIndexConfig(Collections.singletonList("DestState"), null,
-          
Collections.singletonList(AggregationFunctionColumnPair.COUNT_STAR.toColumnName()),
 null, 100);
+      new StarTreeIndexConfig(List.of("DestState"), null, 
List.of(AggregationFunctionColumnPair.COUNT_STAR_NAME), null,
+          100);
   private static final String TEST_STAR_TREE_QUERY_2 = "SELECT COUNT(*) FROM 
mytable WHERE DestState = 'CA'";
 
   // For default columns test
@@ -202,9 +201,9 @@ public class OfflineClusterIntegrationTest extends 
BaseClusterIntegrationTestSet
 
   @Override
   protected List<FieldConfig> getFieldConfigs() {
-    return Collections.singletonList(
-        new FieldConfig("DivAirports", FieldConfig.EncodingType.DICTIONARY, 
Collections.emptyList(),
-            CompressionCodec.MV_ENTRY_DICT, null));
+    return List.of(
+        new FieldConfig("DivAirports", FieldConfig.EncodingType.DICTIONARY, 
List.of(), CompressionCodec.MV_ENTRY_DICT,
+            null));
   }
 
   @Override
@@ -1819,121 +1818,112 @@ public class OfflineClusterIntegrationTest extends 
BaseClusterIntegrationTestSet
   @Test
   public void testStarTreeTriggering()
       throws Exception {
-    long numTotalDocs = getCountStarResult();
+    int numTotalDocs = (int) getCountStarResult();
     long tableSizeWithDefaultIndex = getTableSize(getTableName());
 
     // Test the first query
     JsonNode firstQueryResponse = postQuery(TEST_STAR_TREE_QUERY_1);
     int firstQueryResult = 
firstQueryResponse.get("resultTable").get("rows").get(0).get(0).asInt();
-    assertEquals(firstQueryResponse.get("totalDocs").asLong(), numTotalDocs);
     // Initially 'numDocsScanned' should be the same as 'COUNT(*)' result
-    assertEquals(firstQueryResponse.get("numDocsScanned").asInt(), 
firstQueryResult);
+    verifySingleValueResponse(firstQueryResponse, firstQueryResult, 
numTotalDocs, firstQueryResult);
     // Verify that inverting the filter to be a filtered agg shows the 
identical results
-    firstQueryResponse = postQuery(TEST_STAR_TREE_QUERY_1_FILTER_INVERT);
-    
assertEquals(firstQueryResponse.get("resultTable").get("rows").get(0).get(0).asInt(),
 firstQueryResult);
+    verifySingleValueResponse(postQuery(TEST_STAR_TREE_QUERY_1_FILTER_INVERT), 
firstQueryResult, numTotalDocs,
+        firstQueryResult);
 
-    // Update table config and trigger reload
+    // Update table config without enabling dynamic star-tree creation and 
trigger reload, should have no effect
     TableConfig tableConfig = getOfflineTableConfig();
     IndexingConfig indexingConfig = tableConfig.getIndexingConfig();
-    
indexingConfig.setStarTreeIndexConfigs(Collections.singletonList(STAR_TREE_INDEX_CONFIG_1));
+    indexingConfig.setStarTreeIndexConfigs(List.of(STAR_TREE_INDEX_CONFIG_1));
+    indexingConfig.setEnableDynamicStarTreeCreation(false);
+    updateTableConfig(tableConfig);
+    reloadAllSegments(TEST_STAR_TREE_QUERY_1, false, numTotalDocs);
+    verifySingleValueResponse(postQuery(TEST_STAR_TREE_QUERY_1), 
firstQueryResult, numTotalDocs, firstQueryResult);
+    verifySingleValueResponse(postQuery(TEST_STAR_TREE_QUERY_1_FILTER_INVERT), 
firstQueryResult, numTotalDocs,
+        firstQueryResult);
+
+    // Set enableDynamicStarTreeCreation to true and trigger reload
     indexingConfig.setEnableDynamicStarTreeCreation(true);
     updateTableConfig(tableConfig);
     reloadAllSegments(TEST_STAR_TREE_QUERY_1, false, numTotalDocs);
     // With star-tree, 'numDocsScanned' should be the same as number of 
segments (1 per segment)
-    
assertEquals(postQuery(TEST_STAR_TREE_QUERY_1).get("numDocsScanned").asLong(), 
NUM_SEGMENTS);
+    verifySingleValueResponse(postQuery(TEST_STAR_TREE_QUERY_1), 
firstQueryResult, numTotalDocs, NUM_SEGMENTS);
     // Verify that inverting the filter to be a filtered agg shows the 
identical results
-    firstQueryResponse = postQuery(TEST_STAR_TREE_QUERY_1_FILTER_INVERT);
-    
assertEquals(firstQueryResponse.get("resultTable").get("rows").get(0).get(0).asInt(),
 firstQueryResult);
-    assertEquals(firstQueryResponse.get("totalDocs").asLong(), numTotalDocs);
-    assertEquals(firstQueryResponse.get("numDocsScanned").asInt(), 
NUM_SEGMENTS);
+    verifySingleValueResponse(postQuery(TEST_STAR_TREE_QUERY_1_FILTER_INVERT), 
firstQueryResult, numTotalDocs,
+        NUM_SEGMENTS);
 
     // Reload again should have no effect
     reloadAllSegments(TEST_STAR_TREE_QUERY_1, false, numTotalDocs);
-    firstQueryResponse = postQuery(TEST_STAR_TREE_QUERY_1);
-    
assertEquals(firstQueryResponse.get("resultTable").get("rows").get(0).get(0).asInt(),
 firstQueryResult);
-    assertEquals(firstQueryResponse.get("totalDocs").asLong(), numTotalDocs);
-    assertEquals(firstQueryResponse.get("numDocsScanned").asInt(), 
NUM_SEGMENTS);
-    // Verify that inverting the filter to be a filtered agg shows the 
identical results
-    firstQueryResponse = postQuery(TEST_STAR_TREE_QUERY_1_FILTER_INVERT);
-    
assertEquals(firstQueryResponse.get("resultTable").get("rows").get(0).get(0).asInt(),
 firstQueryResult);
-    assertEquals(firstQueryResponse.get("totalDocs").asLong(), numTotalDocs);
-    assertEquals(firstQueryResponse.get("numDocsScanned").asInt(), 
NUM_SEGMENTS);
-
-    // Enforce a sleep here since segment reload is async and there is another 
back-to-back reload below.
-    // Otherwise, there is no way to tell whether the 1st reload on server 
side is finished,
-    // which may hit the race condition that the 1st reload finishes after the 
2nd reload is fully done.
-    // 10 seconds are still better than hitting race condition which will time 
out after 10 minutes.
-    Thread.sleep(10_000L);
+    verifySingleValueResponse(postQuery(TEST_STAR_TREE_QUERY_1), 
firstQueryResult, numTotalDocs, NUM_SEGMENTS);
+    verifySingleValueResponse(postQuery(TEST_STAR_TREE_QUERY_1_FILTER_INVERT), 
firstQueryResult, numTotalDocs,
+        NUM_SEGMENTS);
 
     // Should be able to use the star-tree with an additional match-all 
predicate on another dimension
-    firstQueryResponse = postQuery(TEST_STAR_TREE_QUERY_1 + " AND 
DaysSinceEpoch > 16070");
-    
assertEquals(firstQueryResponse.get("resultTable").get("rows").get(0).get(0).asInt(),
 firstQueryResult);
-    assertEquals(firstQueryResponse.get("totalDocs").asLong(), numTotalDocs);
-    assertEquals(firstQueryResponse.get("numDocsScanned").asInt(), 
NUM_SEGMENTS);
+    verifySingleValueResponse(postQuery(TEST_STAR_TREE_QUERY_1 + " AND 
DaysSinceEpoch > 16070"), firstQueryResult,
+        numTotalDocs, NUM_SEGMENTS);
 
     // Test the second query
     JsonNode secondQueryResponse = postQuery(TEST_STAR_TREE_QUERY_2);
     int secondQueryResult = 
secondQueryResponse.get("resultTable").get("rows").get(0).get(0).asInt();
-    assertEquals(secondQueryResponse.get("totalDocs").asLong(), numTotalDocs);
     // Initially 'numDocsScanned' should be the same as 'COUNT(*)' result
-    assertEquals(secondQueryResponse.get("numDocsScanned").asInt(), 
secondQueryResult);
+    verifySingleValueResponse(secondQueryResponse, secondQueryResult, 
numTotalDocs, secondQueryResult);
 
-    // Update table config with a different star-tree index config and trigger 
reload
-    
indexingConfig.setStarTreeIndexConfigs(Collections.singletonList(STAR_TREE_INDEX_CONFIG_2));
+    // Update table config without enabling dynamic star-tree creation and 
trigger reload, should have no effect
+    indexingConfig.setStarTreeIndexConfigs(List.of(STAR_TREE_INDEX_CONFIG_2));
+    indexingConfig.setEnableDynamicStarTreeCreation(false);
+    updateTableConfig(tableConfig);
+    reloadAllSegments(TEST_STAR_TREE_QUERY_2, false, numTotalDocs);
+    verifySingleValueResponse(postQuery(TEST_STAR_TREE_QUERY_2), 
secondQueryResult, numTotalDocs, secondQueryResult);
+
+    // Set enableDynamicStarTreeCreation to true and trigger reload
+    indexingConfig.setEnableDynamicStarTreeCreation(true);
     updateTableConfig(tableConfig);
     reloadAllSegments(TEST_STAR_TREE_QUERY_2, false, numTotalDocs);
     // With star-tree, 'numDocsScanned' should be the same as number of 
segments (1 per segment)
-    
assertEquals(postQuery(TEST_STAR_TREE_QUERY_2).get("numDocsScanned").asLong(), 
NUM_SEGMENTS);
+    verifySingleValueResponse(postQuery(TEST_STAR_TREE_QUERY_2), 
secondQueryResult, numTotalDocs, NUM_SEGMENTS);
 
     // First query should not be able to use the star-tree
-    firstQueryResponse = postQuery(TEST_STAR_TREE_QUERY_1);
-    assertEquals(firstQueryResponse.get("numDocsScanned").asInt(), 
firstQueryResult);
+    verifySingleValueResponse(postQuery(TEST_STAR_TREE_QUERY_1), 
firstQueryResult, numTotalDocs, firstQueryResult);
 
     // Reload again should have no effect
     reloadAllSegments(TEST_STAR_TREE_QUERY_2, false, numTotalDocs);
-    firstQueryResponse = postQuery(TEST_STAR_TREE_QUERY_1);
-    
assertEquals(firstQueryResponse.get("resultTable").get("rows").get(0).get(0).asInt(),
 firstQueryResult);
-    assertEquals(firstQueryResponse.get("totalDocs").asLong(), numTotalDocs);
-    assertEquals(firstQueryResponse.get("numDocsScanned").asInt(), 
firstQueryResult);
-    secondQueryResponse = postQuery(TEST_STAR_TREE_QUERY_2);
-    
assertEquals(secondQueryResponse.get("resultTable").get("rows").get(0).get(0).asInt(),
 secondQueryResult);
-    assertEquals(secondQueryResponse.get("totalDocs").asLong(), numTotalDocs);
-    assertEquals(secondQueryResponse.get("numDocsScanned").asInt(), 
NUM_SEGMENTS);
+    verifySingleValueResponse(postQuery(TEST_STAR_TREE_QUERY_1), 
firstQueryResult, numTotalDocs, firstQueryResult);
+    verifySingleValueResponse(postQuery(TEST_STAR_TREE_QUERY_2), 
secondQueryResult, numTotalDocs, NUM_SEGMENTS);
 
     // Should be able to use the star-tree with an additional match-all 
predicate on another dimension
-    secondQueryResponse = postQuery(TEST_STAR_TREE_QUERY_2 + " AND 
DaysSinceEpoch > 16070");
-    
assertEquals(secondQueryResponse.get("resultTable").get("rows").get(0).get(0).asInt(),
 secondQueryResult);
-    assertEquals(secondQueryResponse.get("totalDocs").asLong(), numTotalDocs);
-    assertEquals(secondQueryResponse.get("numDocsScanned").asInt(), 
NUM_SEGMENTS);
-
-    // Enforce a sleep here since segment reload is async and there is another 
back-to-back reload below.
-    // Otherwise, there is no way to tell whether the 1st reload on server 
side is finished,
-    // which may hit the race condition that the 1st reload finishes after the 
2nd reload is fully done.
-    // 10 seconds are still better than hitting race condition which will time 
out after 10 minutes.
-    Thread.sleep(10_000L);
-
-    // Remove the star-tree index config and trigger reload
+    verifySingleValueResponse(postQuery(TEST_STAR_TREE_QUERY_2 + " AND 
DaysSinceEpoch > 16070"), secondQueryResult,
+        numTotalDocs, NUM_SEGMENTS);
+
+    // Remove the star-tree index config without enabling dynamic star-tree 
creation and trigger reload, should have no
+    // effect
     indexingConfig.setStarTreeIndexConfigs(null);
+    indexingConfig.setEnableDynamicStarTreeCreation(false);
+    updateTableConfig(tableConfig);
+    reloadAllSegments(TEST_STAR_TREE_QUERY_2, false, numTotalDocs);
+    verifySingleValueResponse(postQuery(TEST_STAR_TREE_QUERY_1), 
firstQueryResult, numTotalDocs, firstQueryResult);
+    verifySingleValueResponse(postQuery(TEST_STAR_TREE_QUERY_2), 
secondQueryResult, numTotalDocs, NUM_SEGMENTS);
+
+    // Set enableDynamicStarTreeCreation to true and trigger reload
+    indexingConfig.setEnableDynamicStarTreeCreation(true);
     updateTableConfig(tableConfig);
     reloadAllSegments(TEST_STAR_TREE_QUERY_2, false, numTotalDocs);
     // Without star-tree, 'numDocsScanned' should be the same as the 
'COUNT(*)' result
-    
assertEquals(postQuery(TEST_STAR_TREE_QUERY_2).get("numDocsScanned").asLong(), 
secondQueryResult);
+    verifySingleValueResponse(postQuery(TEST_STAR_TREE_QUERY_2), 
secondQueryResult, numTotalDocs, secondQueryResult);
     assertEquals(getTableSize(getTableName()), tableSizeWithDefaultIndex);
 
     // First query should not be able to use the star-tree
-    firstQueryResponse = postQuery(TEST_STAR_TREE_QUERY_1);
-    assertEquals(firstQueryResponse.get("numDocsScanned").asInt(), 
firstQueryResult);
+    verifySingleValueResponse(postQuery(TEST_STAR_TREE_QUERY_1), 
firstQueryResult, numTotalDocs, firstQueryResult);
 
     // Reload again should have no effect
     reloadAllSegments(TEST_STAR_TREE_QUERY_2, false, numTotalDocs);
-    firstQueryResponse = postQuery(TEST_STAR_TREE_QUERY_1);
-    
assertEquals(firstQueryResponse.get("resultTable").get("rows").get(0).get(0).asInt(),
 firstQueryResult);
-    assertEquals(firstQueryResponse.get("totalDocs").asLong(), numTotalDocs);
-    assertEquals(firstQueryResponse.get("numDocsScanned").asInt(), 
firstQueryResult);
-    secondQueryResponse = postQuery(TEST_STAR_TREE_QUERY_2);
-    
assertEquals(secondQueryResponse.get("resultTable").get("rows").get(0).get(0).asInt(),
 secondQueryResult);
-    assertEquals(secondQueryResponse.get("totalDocs").asLong(), numTotalDocs);
-    assertEquals(secondQueryResponse.get("numDocsScanned").asInt(), 
secondQueryResult);
+    verifySingleValueResponse(postQuery(TEST_STAR_TREE_QUERY_1), 
firstQueryResult, numTotalDocs, firstQueryResult);
+    verifySingleValueResponse(postQuery(TEST_STAR_TREE_QUERY_2), 
secondQueryResult, numTotalDocs, secondQueryResult);
+  }
+
+  private void verifySingleValueResponse(JsonNode queryResponse, int 
expectedResult, int expectedTotalDocs,
+      int expectedDocsScanned) {
+    
assertEquals(queryResponse.get("resultTable").get("rows").get(0).get(0).asInt(),
 expectedResult);
+    assertEquals(queryResponse.get("totalDocs").asInt(), expectedTotalDocs);
+    assertEquals(queryResponse.get("numDocsScanned").asInt(), 
expectedDocsScanned);
   }
 
   /**
@@ -2067,17 +2057,18 @@ public class OfflineClusterIntegrationTest extends 
BaseClusterIntegrationTestSet
     addSchema(schema);
 
     TableConfig tableConfig = getOfflineTableConfig();
-    List<TransformConfig> transformConfigs =
-        Arrays.asList(new TransformConfig("NewAddedDerivedHoursSinceEpoch", 
"DaysSinceEpoch * 24"),
-            new TransformConfig("NewAddedDerivedTimestamp", "DaysSinceEpoch * 
24 * 3600 * 1000"),
-            new TransformConfig("NewAddedDerivedSVBooleanDimension", 
"ActualElapsedTime > 0"),
-            new TransformConfig("NewAddedDerivedMVStringDimension", 
"split(DestCityName, ', ')"),
-            new TransformConfig("NewAddedDerivedDivAirportSeqIDs", 
"DivAirportSeqIDs"),
-            new TransformConfig("NewAddedDerivedDivAirportSeqIDsString", 
"DivAirportSeqIDs"),
-            new TransformConfig("NewAddedRawDerivedStringDimension", 
"reverse(DestCityName)"),
-            new TransformConfig("NewAddedRawDerivedMVIntDimension", 
"array(ActualElapsedTime)"),
-            new TransformConfig("NewAddedDerivedMVDoubleDimension", 
"array(ArrDelayMinutes)"),
-            new TransformConfig("NewAddedDerivedNullString", "caseWhen(true, 
null, null)"));
+    List<TransformConfig> transformConfigs = List.of(
+        new TransformConfig("NewAddedDerivedHoursSinceEpoch", "DaysSinceEpoch 
* 24"),
+        new TransformConfig("NewAddedDerivedTimestamp", "DaysSinceEpoch * 24 * 
3600 * 1000"),
+        new TransformConfig("NewAddedDerivedSVBooleanDimension", 
"ActualElapsedTime > 0"),
+        new TransformConfig("NewAddedDerivedMVStringDimension", 
"split(DestCityName, ', ')"),
+        new TransformConfig("NewAddedDerivedDivAirportSeqIDs", 
"DivAirportSeqIDs"),
+        new TransformConfig("NewAddedDerivedDivAirportSeqIDsString", 
"DivAirportSeqIDs"),
+        new TransformConfig("NewAddedRawDerivedStringDimension", 
"reverse(DestCityName)"),
+        new TransformConfig("NewAddedRawDerivedMVIntDimension", 
"array(ActualElapsedTime)"),
+        new TransformConfig("NewAddedDerivedMVDoubleDimension", 
"array(ArrDelayMinutes)"),
+        new TransformConfig("NewAddedDerivedNullString", "caseWhen(true, null, 
null)")
+    );
     IngestionConfig ingestionConfig = new IngestionConfig();
     ingestionConfig.setTransformConfigs(transformConfigs);
     tableConfig.setIngestionConfig(ingestionConfig);
@@ -2087,10 +2078,11 @@ public class OfflineClusterIntegrationTest extends 
BaseClusterIntegrationTestSet
     List<FieldConfig> fieldConfigList = tableConfig.getFieldConfigList();
     assertNotNull(fieldConfigList);
     fieldConfigList.add(
-        new FieldConfig("NewAddedDerivedDivAirportSeqIDs", 
FieldConfig.EncodingType.DICTIONARY, Collections.emptyList(),
+        new FieldConfig("NewAddedDerivedDivAirportSeqIDs", 
FieldConfig.EncodingType.DICTIONARY, List.of(),
+            CompressionCodec.MV_ENTRY_DICT, null));
+    fieldConfigList.add(
+        new FieldConfig("NewAddedDerivedDivAirportSeqIDsString", 
FieldConfig.EncodingType.DICTIONARY, List.of(),
             CompressionCodec.MV_ENTRY_DICT, null));
-    fieldConfigList.add(new 
FieldConfig("NewAddedDerivedDivAirportSeqIDsString", 
FieldConfig.EncodingType.DICTIONARY,
-        Collections.emptyList(), CompressionCodec.MV_ENTRY_DICT, null));
     updateTableConfig(tableConfig);
 
     // Trigger reload
@@ -2421,8 +2413,8 @@ public class OfflineClusterIntegrationTest extends 
BaseClusterIntegrationTestSet
 
     // Add expression override
     TableConfig tableConfig = getOfflineTableConfig();
-    tableConfig.setQueryConfig(new QueryConfig(null, null, null,
-        Collections.singletonMap("DaysSinceEpoch * 24", 
"NewAddedDerivedHoursSinceEpoch"), null, null));
+    tableConfig.setQueryConfig(
+        new QueryConfig(null, null, null, Map.of("DaysSinceEpoch * 24", 
"NewAddedDerivedHoursSinceEpoch"), null, null));
     updateTableConfig(tableConfig);
 
     TestUtils.waitForCondition(aVoid -> {
@@ -2919,8 +2911,8 @@ public class OfflineClusterIntegrationTest extends 
BaseClusterIntegrationTestSet
       throws Exception {
     setUseMultiStageQueryEngine(useMultiStageQueryEngine);
     List<String> origins =
-        Arrays.asList("ATL", "ORD", "DFW", "DEN", "LAX", "IAH", "SFO", "PHX", 
"LAS", "EWR", "MCO", "BOS", "SLC", "SEA",
-            "MSP", "CLT", "LGA", "DTW", "JFK", "BWI");
+        List.of("ATL", "ORD", "DFW", "DEN", "LAX", "IAH", "SFO", "PHX", "LAS", 
"EWR", "MCO", "BOS", "SLC", "SEA", "MSP",
+            "CLT", "LGA", "DTW", "JFK", "BWI");
     StringBuilder caseStatementBuilder = new StringBuilder("CASE ");
     for (int i = 0; i < origins.size(); i++) {
       // WHEN Origin = 'ATL' THEN 1
@@ -3365,7 +3357,8 @@ public class OfflineClusterIntegrationTest extends 
BaseClusterIntegrationTestSet
     int daysSinceEpoch = 16138;
     int hoursSinceEpoch = 16138 * 24;
     int secondsSinceEpoch = 16138 * 24 * 60 * 60;
-    List<String> baseQueries = Arrays.asList("SELECT * FROM mytable limit 
10000",
+    List<String> baseQueries = List.of(
+        "SELECT * FROM mytable limit 10000",
         "SELECT DaysSinceEpoch, timeConvert(DaysSinceEpoch,'DAYS','SECONDS') 
FROM mytable limit 10000",
         "SELECT DaysSinceEpoch, timeConvert(DaysSinceEpoch,'DAYS','SECONDS') 
FROM mytable order by DaysSinceEpoch "
             + "limit 10000",
@@ -3378,7 +3371,8 @@ public class OfflineClusterIntegrationTest extends 
BaseClusterIntegrationTestSet
             + " limit 10000",
         "SELECT MAX(timeConvert(DaysSinceEpoch,'DAYS','SECONDS')) FROM mytable 
limit 10000",
         "SELECT COUNT(*) FROM mytable GROUP BY 
dateTimeConvert(DaysSinceEpoch,'1:DAYS:EPOCH','1:HOURS:EPOCH',"
-            + "'1:HOURS') limit 10000");
+            + "'1:HOURS') limit 10000"
+    );
     List<String> queries = new ArrayList<>();
     baseQueries.forEach(q -> queries.add(q.replace("mytable", 
"MYTABLE").replace("DaysSinceEpoch", "DAYSSinceEpOch")));
     baseQueries.forEach(
@@ -3396,7 +3390,8 @@ public class OfflineClusterIntegrationTest extends 
BaseClusterIntegrationTestSet
     int daysSinceEpoch = 16138;
     int hoursSinceEpoch = 16138 * 24;
     int secondsSinceEpoch = 16138 * 24 * 60 * 60;
-    List<String> baseQueries = Arrays.asList("SELECT * FROM mytable",
+    List<String> baseQueries = List.of(
+        "SELECT * FROM mytable",
         "SELECT DaysSinceEpoch, timeConvert(DaysSinceEpoch,'DAYS','SECONDS') 
FROM mytable",
         "SELECT DaysSinceEpoch, timeConvert(DaysSinceEpoch,'DAYS','SECONDS') 
FROM mytable order by DaysSinceEpoch "
             + "limit 10000",
@@ -3406,8 +3401,8 @@ public class OfflineClusterIntegrationTest extends 
BaseClusterIntegrationTestSet
         "SELECT count(*) FROM mytable WHERE 
timeConvert(DaysSinceEpoch,'DAYS','HOURS') = " + hoursSinceEpoch,
         "SELECT count(*) FROM mytable WHERE 
timeConvert(DaysSinceEpoch,'DAYS','SECONDS') = " + secondsSinceEpoch,
         "SELECT MAX(timeConvert(DaysSinceEpoch,'DAYS','SECONDS')) FROM 
mytable",
-        "SELECT COUNT(*) FROM mytable GROUP BY 
dateTimeConvert(DaysSinceEpoch,'1:DAYS:EPOCH','1:HOURS:EPOCH',"
-            + "'1:HOURS')");
+        "SELECT COUNT(*) FROM mytable GROUP BY 
dateTimeConvert(DaysSinceEpoch,'1:DAYS:EPOCH','1:HOURS:EPOCH','1:HOURS')"
+    );
     List<String> queries = new ArrayList<>();
     baseQueries.forEach(q -> queries.add(q.replace("DaysSinceEpoch", 
"mytable.DAYSSinceEpOch")));
     baseQueries.forEach(q -> queries.add(q.replace("DaysSinceEpoch", 
"mytable.DAYSSinceEpOch")));
@@ -3425,7 +3420,8 @@ public class OfflineClusterIntegrationTest extends 
BaseClusterIntegrationTestSet
     int daysSinceEpoch = 16138;
     int hoursSinceEpoch = 16138 * 24;
     int secondsSinceEpoch = 16138 * 24 * 60 * 60;
-    List<String> baseQueries = Arrays.asList("SELECT * FROM mytable",
+    List<String> baseQueries = List.of(
+        "SELECT * FROM mytable",
         "SELECT DaysSinceEpoch, timeConvert(DaysSinceEpoch,'DAYS','SECONDS') 
FROM mytable",
         "SELECT DaysSinceEpoch, timeConvert(DaysSinceEpoch,'DAYS','SECONDS') 
FROM mytable order by DaysSinceEpoch "
             + "limit 10000",
@@ -3435,8 +3431,8 @@ public class OfflineClusterIntegrationTest extends 
BaseClusterIntegrationTestSet
         "SELECT count(*) FROM mytable WHERE 
timeConvert(DaysSinceEpoch,'DAYS','HOURS') = " + hoursSinceEpoch,
         "SELECT count(*) FROM mytable WHERE 
timeConvert(DaysSinceEpoch,'DAYS','SECONDS') = " + secondsSinceEpoch,
         "SELECT MAX(timeConvert(DaysSinceEpoch,'DAYS','SECONDS')) FROM 
mytable",
-        "SELECT COUNT(*) FROM mytable GROUP BY 
dateTimeConvert(DaysSinceEpoch,'1:DAYS:EPOCH','1:HOURS:EPOCH',"
-            + "'1:HOURS')");
+        "SELECT COUNT(*) FROM mytable GROUP BY 
dateTimeConvert(DaysSinceEpoch,'1:DAYS:EPOCH','1:HOURS:EPOCH','1:HOURS')"
+    );
     List<String> queries = new ArrayList<>();
     baseQueries.forEach(
         q -> queries.add(q.replace("mytable", 
"MYTABLE").replace("DaysSinceEpoch", "MYTABLE.DAYSSinceEpOch")));
diff --git 
a/pinot-segment-local/src/test/java/org/apache/pinot/segment/local/startree/v2/builder/StarTreeBuilderUtilsTest.java
 
b/pinot-segment-local/src/test/java/org/apache/pinot/segment/local/startree/v2/builder/StarTreeBuilderUtilsTest.java
index ff83134dbd..9ed0194e20 100644
--- 
a/pinot-segment-local/src/test/java/org/apache/pinot/segment/local/startree/v2/builder/StarTreeBuilderUtilsTest.java
+++ 
b/pinot-segment-local/src/test/java/org/apache/pinot/segment/local/startree/v2/builder/StarTreeBuilderUtilsTest.java
@@ -23,8 +23,6 @@ import com.fasterxml.jackson.databind.node.ArrayNode;
 import com.fasterxml.jackson.databind.node.JsonNodeFactory;
 import com.fasterxml.jackson.databind.node.ObjectNode;
 import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -65,32 +63,32 @@ public class StarTreeBuilderUtilsTest {
   @Test
   public void testAreStarTreeBuilderConfigListsEqual() {
     // Create StartTreeIndexConfigs to test for unequal starTree configs.
-    StarTreeIndexConfig starTreeIndexConfig1 = new 
StarTreeIndexConfig(Arrays.asList("Carrier", "Distance"), null,
-        
Collections.singletonList(AggregationFunctionColumnPair.COUNT_STAR.toColumnName()),
 null, 100);
+    StarTreeIndexConfig starTreeIndexConfig1 = new 
StarTreeIndexConfig(List.of("Carrier", "Distance"), null,
+        List.of(AggregationFunctionColumnPair.COUNT_STAR_NAME), null, 100);
 
     // Different skip star node creation.
     StarTreeIndexConfig starTreeIndexConfig2 =
-        new StarTreeIndexConfig(Arrays.asList("Carrier", "Distance"), 
Collections.singletonList("Distance"),
-            
Collections.singletonList(AggregationFunctionColumnPair.COUNT_STAR.toColumnName()),
 null, 100);
+        new StarTreeIndexConfig(List.of("Carrier", "Distance"), 
List.of("Distance"),
+            List.of(AggregationFunctionColumnPair.COUNT_STAR_NAME), null, 100);
 
     // Different dimension split order.
-    StarTreeIndexConfig starTreeIndexConfig3 = new 
StarTreeIndexConfig(Arrays.asList("Distance", "Carrier"), null,
-        
Collections.singletonList(AggregationFunctionColumnPair.COUNT_STAR.toColumnName()),
 null, 100);
+    StarTreeIndexConfig starTreeIndexConfig3 = new 
StarTreeIndexConfig(List.of("Distance", "Carrier"), null,
+        List.of(AggregationFunctionColumnPair.COUNT_STAR_NAME), null, 100);
 
     // Different max leaf records.
-    StarTreeIndexConfig starTreeIndexConfig4 = new 
StarTreeIndexConfig(Arrays.asList("Carrier", "Distance"), null,
-        
Collections.singletonList(AggregationFunctionColumnPair.COUNT_STAR.toColumnName()),
 null, 200);
+    StarTreeIndexConfig starTreeIndexConfig4 = new 
StarTreeIndexConfig(List.of("Carrier", "Distance"), null,
+        List.of(AggregationFunctionColumnPair.COUNT_STAR_NAME), null, 200);
 
     // Create StartTreeAggregationConfigs with StarTreeAggregationConfig.
     StarTreeAggregationConfig starTreeAggregationConfig1 = new 
StarTreeAggregationConfig("Distance", "MAX");
 
     // Different AggregationConfig.
-    StarTreeIndexConfig starTreeIndexConfig5 = new 
StarTreeIndexConfig(Arrays.asList("Carrier", "Distance"), null, null,
-        Collections.singletonList(starTreeAggregationConfig1), 100);
+    StarTreeIndexConfig starTreeIndexConfig5 =
+        new StarTreeIndexConfig(List.of("Carrier", "Distance"), null, null, 
List.of(starTreeAggregationConfig1), 100);
 
     // Create StarTreeIndexConfig for equality check.
-    StarTreeIndexConfig starTreeIndexConfig6 = new 
StarTreeIndexConfig(Arrays.asList("Carrier", "Distance"), null,
-        
Collections.singletonList(AggregationFunctionColumnPair.COUNT_STAR.toColumnName()),
 null, 100);
+    StarTreeIndexConfig starTreeIndexConfig6 = new 
StarTreeIndexConfig(List.of("Carrier", "Distance"), null,
+        List.of(AggregationFunctionColumnPair.COUNT_STAR_NAME), null, 100);
 
     // test unequal builder config size.
     List<StarTreeV2BuilderConfig> config1 = new ArrayList<>();
@@ -139,11 +137,15 @@ public class StarTreeBuilderUtilsTest {
 
     // Create Schema and SegmentMetadata for testing.
     Schema schema = new Schema.SchemaBuilder().addSingleValueDimension("d1", 
FieldSpec.DataType.INT)
-        .addSingleValueDimension("d2", 
FieldSpec.DataType.LONG).addSingleValueDimension("d3", FieldSpec.DataType.FLOAT)
-        .addSingleValueDimension("d4", 
FieldSpec.DataType.DOUBLE).addMultiValueDimension("d5", FieldSpec.DataType.INT)
-        .addMetric("m1", FieldSpec.DataType.DOUBLE).addMetric("m2", 
FieldSpec.DataType.BYTES)
+        .addSingleValueDimension("d2", FieldSpec.DataType.LONG)
+        .addSingleValueDimension("d3", FieldSpec.DataType.FLOAT)
+        .addSingleValueDimension("d4", FieldSpec.DataType.DOUBLE)
+        .addMultiValueDimension("d5", FieldSpec.DataType.INT)
+        .addMetric("m1", FieldSpec.DataType.DOUBLE)
+        .addMetric("m2", FieldSpec.DataType.BYTES)
         .addTime(new TimeGranularitySpec(FieldSpec.DataType.LONG, 
TimeUnit.MILLISECONDS, "t"), null)
-        .addDateTime("dt", FieldSpec.DataType.LONG, "1:MILLISECONDS:EPOCH", 
"1:HOURS").build();
+        .addDateTime("dt", FieldSpec.DataType.LONG, "1:MILLISECONDS:EPOCH", 
"1:HOURS")
+        .build();
     SegmentMetadataImpl segmentMetadata = mock(SegmentMetadataImpl.class);
     when(segmentMetadata.getSchema()).thenReturn(schema);
     // Included
@@ -176,31 +178,30 @@ public class StarTreeBuilderUtilsTest {
 
     // // Create a list of string with column name, hasDictionary and 
cardinality.
     List<List<String>> columnList =
-        Arrays.asList(Arrays.asList("d1", "true", "200"), Arrays.asList("d2", 
"true", "400"),
-            Arrays.asList("d3", "true", "20000"), Arrays.asList("d4", "false", 
"100"),
-            Arrays.asList("d5", "true", "100"), Arrays.asList("m1", "false", 
"-1"), Arrays.asList("m2", "true", "100"),
-            Arrays.asList("t", "true", "20000"), Arrays.asList("dt", "true", 
"30000"));
+        List.of(List.of("d1", "true", "200"), List.of("d2", "true", "400"), 
List.of("d3", "true", "20000"),
+            List.of("d4", "false", "100"), List.of("d5", "true", "100"), 
List.of("m1", "false", "-1"),
+            List.of("m2", "true", "100"), List.of("t", "true", "20000"), 
List.of("dt", "true", "30000"));
 
     // Convert the list of string to JsonNode with appropriate key names and 
root node.
     JsonNode segmentMetadataAsJsonNode = 
convertStringListToJsonNode(columnList);
 
     // Create StartTreeIndexConfig for testing.
-    StarTreeIndexConfig starTreeIndexConfig1 = new 
StarTreeIndexConfig(Arrays.asList("Carrier", "Distance"), null,
-        
Collections.singletonList(AggregationFunctionColumnPair.COUNT_STAR.toColumnName()),
 null, 100);
+    StarTreeIndexConfig starTreeIndexConfig1 = new 
StarTreeIndexConfig(List.of("Carrier", "Distance"), null,
+        List.of(AggregationFunctionColumnPair.COUNT_STAR_NAME), null, 100);
 
     StarTreeIndexConfig starTreeIndexConfig2 =
-        new StarTreeIndexConfig(Arrays.asList("Carrier", "Distance"), 
Collections.singletonList("Distance"),
-            
Collections.singletonList(AggregationFunctionColumnPair.COUNT_STAR.toColumnName()),
 null, 100);
+        new StarTreeIndexConfig(List.of("Carrier", "Distance"), 
List.of("Distance"),
+            List.of(AggregationFunctionColumnPair.COUNT_STAR_NAME), null, 100);
 
     // Create StartTreeV2BuilderConfig from segmentMetadataImpl.
     List<StarTreeV2BuilderConfig> builderConfig1 =
-        
StarTreeBuilderUtils.generateBuilderConfigs(Arrays.asList(starTreeIndexConfig1, 
starTreeIndexConfig2), true,
+        
StarTreeBuilderUtils.generateBuilderConfigs(List.of(starTreeIndexConfig1, 
starTreeIndexConfig2), true,
             segmentMetadata);
 
     // Create StartTreeV2BuilderConfig from JsonNode.
     List<StarTreeV2BuilderConfig> builderConfig2 =
-        
StarTreeBuilderUtils.generateBuilderConfigs(Arrays.asList(starTreeIndexConfig1, 
starTreeIndexConfig2), true,
-            schema, segmentMetadataAsJsonNode);
+        
StarTreeBuilderUtils.generateBuilderConfigs(List.of(starTreeIndexConfig1, 
starTreeIndexConfig2), true, schema,
+            segmentMetadataAsJsonNode);
 
     // They should be equal.
     assertEquals(builderConfig1, builderConfig2);
@@ -215,16 +216,16 @@ public class StarTreeBuilderUtilsTest {
     StarTreeV2Metadata.writeMetadata(metadataProperties, 1, List.of("col1"), 
aggregationSpecs, 100, Set.of());
     StarTreeV2Metadata existingStarTreeMetadata = new 
StarTreeV2Metadata(metadataProperties);
 
-    StarTreeIndexConfig starTreeIndexConfig = new 
StarTreeIndexConfig(List.of("col1"), null, null,
-        List.of(new StarTreeAggregationConfig("col2", "DISTINCTCOUNTHLL", 
Map.of(Constants.HLL_LOG2M_KEY, 16),
-            null, null, null, null, null)), 100);
+    StarTreeIndexConfig starTreeIndexConfig = new 
StarTreeIndexConfig(List.of("col1"), null, null, List.of(
+        new StarTreeAggregationConfig("col2", "DISTINCTCOUNTHLL", 
Map.of(Constants.HLL_LOG2M_KEY, 16), null, null, null,
+            null, null)), 100);
     assertFalse(StarTreeBuilderUtils.shouldModifyExistingStarTrees(
         List.of(StarTreeV2BuilderConfig.fromIndexConfig(starTreeIndexConfig)), 
List.of(existingStarTreeMetadata)));
 
     // Change log2m value
-    starTreeIndexConfig = new StarTreeIndexConfig(List.of("col1"), null, null,
-        List.of(new StarTreeAggregationConfig("col2", "DISTINCTCOUNTHLL", 
Map.of(Constants.HLL_LOG2M_KEY, 8),
-            null, null, null, null, null)), 100);
+    starTreeIndexConfig = new StarTreeIndexConfig(List.of("col1"), null, null, 
List.of(
+        new StarTreeAggregationConfig("col2", "DISTINCTCOUNTHLL", 
Map.of(Constants.HLL_LOG2M_KEY, 8), null, null, null,
+            null, null)), 100);
     assertTrue(StarTreeBuilderUtils.shouldModifyExistingStarTrees(
         List.of(StarTreeV2BuilderConfig.fromIndexConfig(starTreeIndexConfig)), 
List.of(existingStarTreeMetadata)));
   }
@@ -232,72 +233,76 @@ public class StarTreeBuilderUtilsTest {
   @Test
   public void testExpressionContextFromFunctionParameters() {
     // DISTINCTCOUNTHLL
-    DistinctCountHLLValueAggregator hllValueAggregator = 
(DistinctCountHLLValueAggregator)
-        
ValueAggregatorFactory.getValueAggregator(AggregationFunctionType.DISTINCTCOUNTHLL,
-        
StarTreeBuilderUtils.expressionContextFromFunctionParameters(AggregationFunctionType.DISTINCTCOUNTHLL,
-            Map.of(Constants.HLL_LOG2M_KEY, "10")));
+    DistinctCountHLLValueAggregator hllValueAggregator =
+        (DistinctCountHLLValueAggregator) 
ValueAggregatorFactory.getValueAggregator(
+            AggregationFunctionType.DISTINCTCOUNTHLL,
+            
StarTreeBuilderUtils.expressionContextFromFunctionParameters(AggregationFunctionType.DISTINCTCOUNTHLL,
+                Map.of(Constants.HLL_LOG2M_KEY, "10")));
     assertEquals(10, hllValueAggregator.getLog2m());
 
-    hllValueAggregator = (DistinctCountHLLValueAggregator)
-        
ValueAggregatorFactory.getValueAggregator(AggregationFunctionType.DISTINCTCOUNTHLL,
-            
StarTreeBuilderUtils.expressionContextFromFunctionParameters(AggregationFunctionType.DISTINCTCOUNTHLL,
-                Map.of()));
+    hllValueAggregator = (DistinctCountHLLValueAggregator) 
ValueAggregatorFactory.getValueAggregator(
+        AggregationFunctionType.DISTINCTCOUNTHLL,
+        
StarTreeBuilderUtils.expressionContextFromFunctionParameters(AggregationFunctionType.DISTINCTCOUNTHLL,
+            Map.of()));
     // Verify default value used
     assertEquals(8, hllValueAggregator.getLog2m());
 
     // DISTINCTCOUNTHLLPLUS
-    DistinctCountHLLPlusValueAggregator hllPlusValueAggregator = 
(DistinctCountHLLPlusValueAggregator)
-        
ValueAggregatorFactory.getValueAggregator(AggregationFunctionType.DISTINCTCOUNTHLLPLUS,
-        
StarTreeBuilderUtils.expressionContextFromFunctionParameters(AggregationFunctionType.DISTINCTCOUNTHLLPLUS,
-            Map.of(Constants.HLLPLUS_ULL_P_KEY, "10", 
Constants.HLLPLUS_SP_KEY, 20)));
+    DistinctCountHLLPlusValueAggregator hllPlusValueAggregator =
+        (DistinctCountHLLPlusValueAggregator) 
ValueAggregatorFactory.getValueAggregator(
+            AggregationFunctionType.DISTINCTCOUNTHLLPLUS,
+            
StarTreeBuilderUtils.expressionContextFromFunctionParameters(AggregationFunctionType.DISTINCTCOUNTHLLPLUS,
+                Map.of(Constants.HLLPLUS_ULL_P_KEY, "10", 
Constants.HLLPLUS_SP_KEY, 20)));
     assertEquals(10, hllPlusValueAggregator.getP());
     assertEquals(20, hllPlusValueAggregator.getSp());
 
-    hllPlusValueAggregator = (DistinctCountHLLPlusValueAggregator)
-        
ValueAggregatorFactory.getValueAggregator(AggregationFunctionType.DISTINCTCOUNTHLLPLUS,
+    hllPlusValueAggregator = (DistinctCountHLLPlusValueAggregator) 
ValueAggregatorFactory.getValueAggregator(
+        AggregationFunctionType.DISTINCTCOUNTHLLPLUS,
         
StarTreeBuilderUtils.expressionContextFromFunctionParameters(AggregationFunctionType.DISTINCTCOUNTHLLPLUS,
             Map.of("garbage", "value")));
     // Verify default values used
     assertEquals(14, hllPlusValueAggregator.getP());
     assertEquals(0, hllPlusValueAggregator.getSp());
 
-    hllPlusValueAggregator = (DistinctCountHLLPlusValueAggregator)
-        
ValueAggregatorFactory.getValueAggregator(AggregationFunctionType.DISTINCTCOUNTHLLPLUS,
+    hllPlusValueAggregator = (DistinctCountHLLPlusValueAggregator) 
ValueAggregatorFactory.getValueAggregator(
+        AggregationFunctionType.DISTINCTCOUNTHLLPLUS,
         
StarTreeBuilderUtils.expressionContextFromFunctionParameters(AggregationFunctionType.DISTINCTCOUNTHLLPLUS,
             Map.of(Constants.HLLPLUS_ULL_P_KEY, "10")));
     assertEquals(10, hllPlusValueAggregator.getP());
     assertEquals(0, hllPlusValueAggregator.getSp());
 
-    hllPlusValueAggregator = (DistinctCountHLLPlusValueAggregator)
-        
ValueAggregatorFactory.getValueAggregator(AggregationFunctionType.DISTINCTCOUNTHLLPLUS,
-            
StarTreeBuilderUtils.expressionContextFromFunctionParameters(AggregationFunctionType.DISTINCTCOUNTHLLPLUS,
-                Map.of(Constants.HLLPLUS_SP_KEY, 20)));
+    hllPlusValueAggregator = (DistinctCountHLLPlusValueAggregator) 
ValueAggregatorFactory.getValueAggregator(
+        AggregationFunctionType.DISTINCTCOUNTHLLPLUS,
+        
StarTreeBuilderUtils.expressionContextFromFunctionParameters(AggregationFunctionType.DISTINCTCOUNTHLLPLUS,
+            Map.of(Constants.HLLPLUS_SP_KEY, 20)));
     assertEquals(14, hllPlusValueAggregator.getP());
     assertEquals(20, hllPlusValueAggregator.getSp());
 
     // DISTINCTCOUNTULL
-    DistinctCountULLValueAggregator ullValueAggregator = 
(DistinctCountULLValueAggregator)
-        
ValueAggregatorFactory.getValueAggregator(AggregationFunctionType.DISTINCTCOUNTULL,
-        
StarTreeBuilderUtils.expressionContextFromFunctionParameters(AggregationFunctionType.DISTINCTCOUNTULL,
-            Map.of(Constants.HLLPLUS_ULL_P_KEY, "10")));
+    DistinctCountULLValueAggregator ullValueAggregator =
+        (DistinctCountULLValueAggregator) 
ValueAggregatorFactory.getValueAggregator(
+            AggregationFunctionType.DISTINCTCOUNTULL,
+            
StarTreeBuilderUtils.expressionContextFromFunctionParameters(AggregationFunctionType.DISTINCTCOUNTULL,
+                Map.of(Constants.HLLPLUS_ULL_P_KEY, "10")));
     assertEquals(10, ullValueAggregator.getP());
 
-    ullValueAggregator = (DistinctCountULLValueAggregator)
-        
ValueAggregatorFactory.getValueAggregator(AggregationFunctionType.DISTINCTCOUNTULL,
+    ullValueAggregator = (DistinctCountULLValueAggregator) 
ValueAggregatorFactory.getValueAggregator(
+        AggregationFunctionType.DISTINCTCOUNTULL,
         
StarTreeBuilderUtils.expressionContextFromFunctionParameters(AggregationFunctionType.DISTINCTCOUNTULL,
             Map.of("garbage", "value")));
     // Verify default value used
     assertEquals(12, ullValueAggregator.getP());
 
     // DISTINCTCOUNTCPCSKETCH
-    DistinctCountCPCSketchValueAggregator cpcSketchValueAggregator = 
(DistinctCountCPCSketchValueAggregator)
-        
ValueAggregatorFactory.getValueAggregator(AggregationFunctionType.DISTINCTCOUNTCPCSKETCH,
-        
StarTreeBuilderUtils.expressionContextFromFunctionParameters(AggregationFunctionType.DISTINCTCOUNTCPCSKETCH,
-            Map.of(Constants.CPCSKETCH_LGK_KEY, 20)));
+    DistinctCountCPCSketchValueAggregator cpcSketchValueAggregator =
+        (DistinctCountCPCSketchValueAggregator) 
ValueAggregatorFactory.getValueAggregator(
+            AggregationFunctionType.DISTINCTCOUNTCPCSKETCH,
+            
StarTreeBuilderUtils.expressionContextFromFunctionParameters(AggregationFunctionType.DISTINCTCOUNTCPCSKETCH,
+                Map.of(Constants.CPCSKETCH_LGK_KEY, 20)));
     assertEquals(20, cpcSketchValueAggregator.getLgK());
 
-    cpcSketchValueAggregator = (DistinctCountCPCSketchValueAggregator)
-        
ValueAggregatorFactory.getValueAggregator(AggregationFunctionType.DISTINCTCOUNTCPCSKETCH,
+    cpcSketchValueAggregator = (DistinctCountCPCSketchValueAggregator) 
ValueAggregatorFactory.getValueAggregator(
+        AggregationFunctionType.DISTINCTCOUNTCPCSKETCH,
         
StarTreeBuilderUtils.expressionContextFromFunctionParameters(AggregationFunctionType.DISTINCTCOUNTCPCSKETCH,
             Map.of()));
     // Verify default value used
diff --git 
a/pinot-segment-local/src/test/java/org/apache/pinot/segment/local/startree/v2/builder/StarTreeV2BuilderConfigTest.java
 
b/pinot-segment-local/src/test/java/org/apache/pinot/segment/local/startree/v2/builder/StarTreeV2BuilderConfigTest.java
index cba984e5b1..b40cba7c06 100644
--- 
a/pinot-segment-local/src/test/java/org/apache/pinot/segment/local/startree/v2/builder/StarTreeV2BuilderConfigTest.java
+++ 
b/pinot-segment-local/src/test/java/org/apache/pinot/segment/local/startree/v2/builder/StarTreeV2BuilderConfigTest.java
@@ -22,10 +22,9 @@ import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.node.ArrayNode;
 import com.fasterxml.jackson.databind.node.JsonNodeFactory;
 import com.fasterxml.jackson.databind.node.ObjectNode;
-import java.util.Arrays;
-import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 import java.util.concurrent.TimeUnit;
 import org.apache.pinot.segment.spi.AggregationFunctionType;
 import org.apache.pinot.segment.spi.ColumnMetadata;
@@ -50,12 +49,17 @@ public class StarTreeV2BuilderConfigTest {
 
   @Test
   public void testDefaultConfig() {
-    Schema schema = new Schema.SchemaBuilder().addSingleValueDimension("d1", 
DataType.INT)
-        .addSingleValueDimension("d2", 
DataType.LONG).addSingleValueDimension("d3", DataType.FLOAT)
-        .addSingleValueDimension("d4", 
DataType.DOUBLE).addMultiValueDimension("d5", DataType.INT)
-        .addMetric("m1", DataType.DOUBLE).addMetric("m2", DataType.BYTES)
+    Schema schema = new Schema.SchemaBuilder().setSchemaName("testTable")
+        .addSingleValueDimension("d1", DataType.INT)
+        .addSingleValueDimension("d2", DataType.LONG)
+        .addSingleValueDimension("d3", DataType.FLOAT)
+        .addSingleValueDimension("d4", DataType.DOUBLE)
+        .addMultiValueDimension("d5", DataType.INT)
+        .addMetric("m1", DataType.DOUBLE)
+        .addMetric("m2", DataType.BYTES)
         .addTime(new TimeGranularitySpec(DataType.LONG, TimeUnit.MILLISECONDS, 
"t"), null)
-        .addDateTime("dt", DataType.LONG, "1:MILLISECONDS:EPOCH", 
"1:HOURS").build();
+        .addDateTime("dt", DataType.LONG, "1:MILLISECONDS:EPOCH", "1:HOURS")
+        .build();
     SegmentMetadataImpl segmentMetadata = mock(SegmentMetadataImpl.class);
     when(segmentMetadata.getSchema()).thenReturn(schema);
     // Included
@@ -88,31 +92,41 @@ public class StarTreeV2BuilderConfigTest {
 
     StarTreeV2BuilderConfig defaultConfig = 
StarTreeV2BuilderConfig.generateDefaultConfig(segmentMetadata);
     // Sorted by cardinality in descending order, followed by the time column
-    assertEquals(defaultConfig.getDimensionsSplitOrder(), Arrays.asList("d2", 
"d1", "dt", "t"));
+    assertEquals(defaultConfig.getDimensionsSplitOrder(), List.of("d2", "d1", 
"dt", "t"));
     // No column should be skipped for star-node creation
     assertTrue(defaultConfig.getSkipStarNodeCreationForDimensions().isEmpty());
     // Should have COUNT(*) and SUM(m1) as the function column pairs
-    assertEquals(defaultConfig.getFunctionColumnPairs(), new HashSet<>(
-        Arrays.asList(AggregationFunctionColumnPair.COUNT_STAR,
-            new AggregationFunctionColumnPair(AggregationFunctionType.SUM, 
"m1"))));
+    assertEquals(defaultConfig.getFunctionColumnPairs(), 
Set.of(AggregationFunctionColumnPair.COUNT_STAR,
+        new AggregationFunctionColumnPair(AggregationFunctionType.SUM, "m1")));
     assertEquals(defaultConfig.getMaxLeafRecords(), 
StarTreeV2BuilderConfig.DEFAULT_MAX_LEAF_RECORDS);
   }
 
   @Test
   public void testDefaultConfigFromJsonNodeSegmentMetadata() {
-    Schema schema = new Schema.SchemaBuilder().addSingleValueDimension("d1", 
DataType.INT)
-        .addSingleValueDimension("d2", 
DataType.LONG).addSingleValueDimension("d3", DataType.FLOAT)
-        .addSingleValueDimension("d4", 
DataType.DOUBLE).addMultiValueDimension("d5", DataType.INT)
-        .addMetric("m1", DataType.DOUBLE).addMetric("m2", DataType.BYTES)
+    Schema schema = new Schema.SchemaBuilder().setSchemaName("testTable")
+        .addSingleValueDimension("d1", DataType.INT)
+        .addSingleValueDimension("d2", DataType.LONG)
+        .addSingleValueDimension("d3", DataType.FLOAT)
+        .addSingleValueDimension("d4", DataType.DOUBLE)
+        .addMultiValueDimension("d5", DataType.INT)
+        .addMetric("m1", DataType.DOUBLE)
+        .addMetric("m2", DataType.BYTES)
         .addTime(new TimeGranularitySpec(DataType.LONG, TimeUnit.MILLISECONDS, 
"t"), null)
-        .addDateTime("dt", DataType.LONG, "1:MILLISECONDS:EPOCH", 
"1:HOURS").build();
+        .addDateTime("dt", DataType.LONG, "1:MILLISECONDS:EPOCH", "1:HOURS")
+        .build();
 
     // Create a list of string with column name, hasDictionary and cardinality.
-    List<List<String>> columnList =
-        Arrays.asList(Arrays.asList("d1", "true", "200"), Arrays.asList("d2", 
"true", "400"),
-            Arrays.asList("d3", "true", "20000"), Arrays.asList("d4", "false", 
"100"),
-            Arrays.asList("d5", "true", "100"), Arrays.asList("m1", "false", 
"-1"), Arrays.asList("m2", "true", "100"),
-            Arrays.asList("t", "true", "20000"), Arrays.asList("dt", "true", 
"30000"));
+    List<List<String>> columnList = List.of(
+        List.of("d1", "true", "200"),
+        List.of("d2", "true", "400"),
+        List.of("d3", "true", "20000"),
+        List.of("d4", "false", "100"),
+        List.of("d5", "true", "100"),
+        List.of("m1", "false", "-1"),
+        List.of("m2", "true", "100"),
+        List.of("t", "true", "20000"),
+        List.of("dt", "true", "30000")
+    );
 
     // Convert the list of string to JsonNode with appropriate key names.
     JsonNode segmentMetadataAsJsonNode = 
convertStringListToJsonNode(columnList);
@@ -121,13 +135,12 @@ public class StarTreeV2BuilderConfigTest {
     StarTreeV2BuilderConfig defaultConfig =
         StarTreeV2BuilderConfig.generateDefaultConfig(schema, 
segmentMetadataAsJsonNode);
     // Sorted by cardinality in descending order, followed by the time column
-    assertEquals(defaultConfig.getDimensionsSplitOrder(), Arrays.asList("d2", 
"d1", "dt", "t"));
+    assertEquals(defaultConfig.getDimensionsSplitOrder(), List.of("d2", "d1", 
"dt", "t"));
     // No column should be skipped for star-node creation
     assertTrue(defaultConfig.getSkipStarNodeCreationForDimensions().isEmpty());
     // Should have COUNT(*) and SUM(m1) as the function column pairs
-    assertEquals(defaultConfig.getFunctionColumnPairs(), new HashSet<>(
-        Arrays.asList(AggregationFunctionColumnPair.COUNT_STAR,
-            new AggregationFunctionColumnPair(AggregationFunctionType.SUM, 
"m1"))));
+    assertEquals(defaultConfig.getFunctionColumnPairs(), 
Set.of(AggregationFunctionColumnPair.COUNT_STAR,
+        new AggregationFunctionColumnPair(AggregationFunctionType.SUM, "m1")));
     assertEquals(defaultConfig.getMaxLeafRecords(), 
StarTreeV2BuilderConfig.DEFAULT_MAX_LEAF_RECORDS);
   }
 
diff --git 
a/pinot-segment-spi/src/main/java/org/apache/pinot/segment/spi/index/startree/AggregationFunctionColumnPair.java
 
b/pinot-segment-spi/src/main/java/org/apache/pinot/segment/spi/index/startree/AggregationFunctionColumnPair.java
index 31c9c744c5..3344d35259 100644
--- 
a/pinot-segment-spi/src/main/java/org/apache/pinot/segment/spi/index/startree/AggregationFunctionColumnPair.java
+++ 
b/pinot-segment-spi/src/main/java/org/apache/pinot/segment/spi/index/startree/AggregationFunctionColumnPair.java
@@ -28,6 +28,7 @@ public class AggregationFunctionColumnPair implements 
Comparable<AggregationFunc
   public static final String STAR = "*";
   public static final AggregationFunctionColumnPair COUNT_STAR =
       new AggregationFunctionColumnPair(AggregationFunctionType.COUNT, STAR);
+  public static final String COUNT_STAR_NAME = COUNT_STAR.toColumnName();
 
   private final AggregationFunctionType _functionType;
   private final String _column;


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@pinot.apache.org
For additional commands, e-mail: commits-h...@pinot.apache.org

Reply via email to