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