Jackie-Jiang commented on code in PR #14250:
URL: https://github.com/apache/pinot/pull/14250#discussion_r2294435142
##########
pinot-controller/src/main/java/org/apache/pinot/controller/util/ServerSegmentMetadataReader.java:
##########
@@ -434,14 +434,21 @@ private String
generateAggregateSegmentMetadataServerURL(String tableNameWithTyp
return String.format("%s/tables/%s/metadata?%s", endpoint,
tableNameWithType, paramsStr);
}
- private String generateSegmentMetadataServerURL(String tableNameWithType,
String segmentName, List<String> columns,
+ public String generateSegmentMetadataServerURL(String tableNameWithType,
String segmentName, List<String> columns,
Review Comment:
Annotate `columns` as `@Nullable`
##########
pinot-controller/src/main/java/org/apache/pinot/controller/util/ServerSegmentMetadataReader.java:
##########
@@ -506,6 +513,19 @@ private String generateStaleSegmentsServerURL(String
tableNameWithType, String e
return String.format("%s/tables/%s/segments/isStale", endpoint,
tableNameWithType);
}
+ private String generateSegmentsParam(Set<String> values) {
+ String paramsStr = "";
+ if (values == null || values.isEmpty()) {
Review Comment:
(minor)
```suggestion
if (CollectionUtils.isEmpty(values)) {
```
##########
pinot-controller/src/main/java/org/apache/pinot/controller/util/ServerSegmentMetadataReader.java:
##########
@@ -434,14 +434,21 @@ private String
generateAggregateSegmentMetadataServerURL(String tableNameWithTyp
return String.format("%s/tables/%s/metadata?%s", endpoint,
tableNameWithType, paramsStr);
}
- private String generateSegmentMetadataServerURL(String tableNameWithType,
String segmentName, List<String> columns,
+ public String generateSegmentMetadataServerURL(String tableNameWithType,
String segmentName, List<String> columns,
String endpoint) {
tableNameWithType = URLEncoder.encode(tableNameWithType,
StandardCharsets.UTF_8);
segmentName = URLEncoder.encode(segmentName, StandardCharsets.UTF_8);
String paramsStr = generateColumnsParam(columns);
return String.format("%s/tables/%s/segments/%s/metadata?%s", endpoint,
tableNameWithType, segmentName, paramsStr);
}
+ public String generateTableMetadataServerURL(String tableNameWithType,
List<String> columns,
Review Comment:
Annotate both `columns` and `segmentsToInclude` as `@Nullable`
##########
pinot-controller/src/main/java/org/apache/pinot/controller/util/ServerSegmentMetadataReader.java:
##########
@@ -434,14 +434,21 @@ private String
generateAggregateSegmentMetadataServerURL(String tableNameWithTyp
return String.format("%s/tables/%s/metadata?%s", endpoint,
tableNameWithType, paramsStr);
}
- private String generateSegmentMetadataServerURL(String tableNameWithType,
String segmentName, List<String> columns,
+ public String generateSegmentMetadataServerURL(String tableNameWithType,
String segmentName, List<String> columns,
String endpoint) {
tableNameWithType = URLEncoder.encode(tableNameWithType,
StandardCharsets.UTF_8);
segmentName = URLEncoder.encode(segmentName, StandardCharsets.UTF_8);
String paramsStr = generateColumnsParam(columns);
return String.format("%s/tables/%s/segments/%s/metadata?%s", endpoint,
tableNameWithType, segmentName, paramsStr);
}
+ public String generateTableMetadataServerURL(String tableNameWithType,
List<String> columns,
+ Set<String> segmentsToInclude, String endpoint) {
+ tableNameWithType = URLEncoder.encode(tableNameWithType,
StandardCharsets.UTF_8);
+ String paramsStr = generateColumnsParam(columns) +
generateSegmentsParam(segmentsToInclude);
Review Comment:
If there are both columns and segmentsToInclude, do we need to connect them
with `&`? We should add a test for it
##########
pinot-controller/src/main/java/org/apache/pinot/controller/util/ServerSegmentMetadataReader.java:
##########
@@ -506,6 +513,19 @@ private String generateStaleSegmentsServerURL(String
tableNameWithType, String e
return String.format("%s/tables/%s/segments/isStale", endpoint,
tableNameWithType);
}
+ private String generateSegmentsParam(Set<String> values) {
Review Comment:
We can consider passing `prefix` (`"columns="` or `"segments="`) so that the
same method can be reused by both columns and segments
##########
pinot-controller/src/main/java/org/apache/pinot/controller/util/ServerSegmentMetadataReader.java:
##########
@@ -506,6 +513,19 @@ private String generateStaleSegmentsServerURL(String
tableNameWithType, String e
return String.format("%s/tables/%s/segments/isStale", endpoint,
tableNameWithType);
}
+ private String generateSegmentsParam(Set<String> values) {
+ String paramsStr = "";
+ if (values == null || values.isEmpty()) {
+ return paramsStr;
+ }
+ List<String> params = new ArrayList<>(values.size());
+ for (String value : values) {
+ params.add(String.format("segments=%s", value));
Review Comment:
Avoid using `String.format()` and directly use `"segments=" + value`
--
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: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]