Jackie-Jiang commented on code in PR #10352:
URL: https://github.com/apache/pinot/pull/10352#discussion_r1122197569


##########
pinot-segment-local/src/main/java/org/apache/pinot/segment/local/segment/index/loader/IndexLoadingConfig.java:
##########
@@ -386,11 +387,15 @@ public void setSortedColumn(String sortedColumn) {
   }
 
   public Set<String> getInvertedIndexColumns() {
-    return _invertedIndexColumns;
+    return unmodifiable(_invertedIndexColumns);
   }
 
   public Set<String> getRangeIndexColumns() {
-    return _rangeIndexColumns;
+    return unmodifiable(_rangeIndexColumns);
+  }
+
+  public void addRangeIndexColumn(String... columns) {
+    _rangeIndexColumns.addAll(Arrays.asList(columns));

Review Comment:
   Suggest making at always taking one column, and return a boolean (whether it 
is added)
   ```suggestion
     public boolean addRangeIndexColumn(String column) {
       _rangeIndexColumns.add(column);
   ```



##########
pinot-segment-spi/src/main/java/org/apache/pinot/segment/spi/creator/SegmentGeneratorConfig.java:
##########
@@ -249,7 +250,13 @@ public SegmentGeneratorConfig(TableConfig tableConfig, 
Schema schema) {
   }
 
   public Map<String, Map<String, String>> getColumnProperties() {
-    return _columnProperties;
+    HashMap<String, Map<String, String>> copy = new HashMap<>();

Review Comment:
   Making it immutable during read time can be quite expensive. We can make it 
immutable during construction time



##########
pinot-segment-local/src/main/java/org/apache/pinot/segment/local/segment/index/loader/IndexLoadingConfig.java:
##########
@@ -410,35 +415,55 @@ public FSTType getFSTIndexType() {
    * @return a set containing names of text index columns
    */
   public Set<String> getTextIndexColumns() {
-    return _textIndexColumns;
+    return unmodifiable(_textIndexColumns);
   }
 
   public Set<String> getFSTIndexColumns() {
-    return _fstIndexColumns;
+    return unmodifiable(_fstIndexColumns);
   }
 
   public Map<String, JsonIndexConfig> getJsonIndexConfigs() {
-    return _jsonIndexConfigs;
+    return unmodifiable(_jsonIndexConfigs);
   }
 
   public Map<String, H3IndexConfig> getH3IndexConfigs() {
-    return _h3IndexConfigs;
+    return unmodifiable(_h3IndexConfigs);
   }
 
   public Map<String, Map<String, String>> getColumnProperties() {
-    return _columnProperties;
+    return unmodifiable(_columnProperties);
   }
 
   public void setColumnProperties(Map<String, Map<String, String>> 
columnProperties) {
-    _columnProperties = columnProperties;
+    _columnProperties = new HashMap<>(columnProperties);
   }
 
   /**
    * For tests only.
    */
   @VisibleForTesting
   public void setInvertedIndexColumns(Set<String> invertedIndexColumns) {
-    _invertedIndexColumns = invertedIndexColumns;
+    _invertedIndexColumns = new HashSet<>(invertedIndexColumns);
+  }
+
+  @VisibleForTesting
+  public void addInvertedIndexColumns(String... invertedIndexColumns) {
+    _invertedIndexColumns.addAll(Arrays.asList(invertedIndexColumns));
+  }

Review Comment:
   Same for other places. If user needs batch add, they can use the next method
   ```suggestion
     public boolean addInvertedIndexColumn(String column) {
       return _invertedIndexColumns.add(column);
     }
   ```



##########
pinot-segment-local/src/main/java/org/apache/pinot/segment/local/segment/index/loader/IndexLoadingConfig.java:
##########
@@ -410,35 +415,55 @@ public FSTType getFSTIndexType() {
    * @return a set containing names of text index columns
    */
   public Set<String> getTextIndexColumns() {
-    return _textIndexColumns;
+    return unmodifiable(_textIndexColumns);
   }
 
   public Set<String> getFSTIndexColumns() {
-    return _fstIndexColumns;
+    return unmodifiable(_fstIndexColumns);
   }
 
   public Map<String, JsonIndexConfig> getJsonIndexConfigs() {
-    return _jsonIndexConfigs;
+    return unmodifiable(_jsonIndexConfigs);
   }
 
   public Map<String, H3IndexConfig> getH3IndexConfigs() {
-    return _h3IndexConfigs;
+    return unmodifiable(_h3IndexConfigs);
   }
 
   public Map<String, Map<String, String>> getColumnProperties() {
-    return _columnProperties;
+    return unmodifiable(_columnProperties);
   }
 
   public void setColumnProperties(Map<String, Map<String, String>> 
columnProperties) {
-    _columnProperties = columnProperties;
+    _columnProperties = new HashMap<>(columnProperties);
   }
 
   /**
    * For tests only.
    */
   @VisibleForTesting
   public void setInvertedIndexColumns(Set<String> invertedIndexColumns) {
-    _invertedIndexColumns = invertedIndexColumns;
+    _invertedIndexColumns = new HashSet<>(invertedIndexColumns);
+  }
+
+  @VisibleForTesting
+  public void addInvertedIndexColumns(String... invertedIndexColumns) {
+    _invertedIndexColumns.addAll(Arrays.asList(invertedIndexColumns));
+  }
+
+  @VisibleForTesting
+  public void addInvertedIndexColumns(Collection<String> invertedIndexColumns) 
{
+    _invertedIndexColumns.addAll(invertedIndexColumns);
+  }
+
+  @VisibleForTesting
+  public void removeInvertedIndexColumns(String... invertedIndexColumns) {
+    Arrays.asList(invertedIndexColumns).forEach(_invertedIndexColumns::remove);
+  }

Review Comment:
   Same for other places
   ```suggestion
     public boolean removeInvertedIndexColumn(String column) {
       return _invertedIndexColumns.remove(column);
     }
   ```



##########
pinot-segment-local/src/main/java/org/apache/pinot/segment/local/segment/index/loader/IndexLoadingConfig.java:
##########
@@ -386,11 +387,15 @@ public void setSortedColumn(String sortedColumn) {
   }
 
   public Set<String> getInvertedIndexColumns() {
-    return _invertedIndexColumns;
+    return unmodifiable(_invertedIndexColumns);
   }
 
   public Set<String> getRangeIndexColumns() {
-    return _rangeIndexColumns;
+    return unmodifiable(_rangeIndexColumns);
+  }
+
+  public void addRangeIndexColumn(String... columns) {
+    _rangeIndexColumns.addAll(Arrays.asList(columns));

Review Comment:
   Seems we have another `addRangeIndexColumns` below



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscr...@pinot.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


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

Reply via email to