egalpin commented on code in PR #10234:
URL: https://github.com/apache/pinot/pull/10234#discussion_r1106523990
##########
pinot-spi/src/main/java/org/apache/pinot/spi/config/table/UpsertConfig.java:
##########
@@ -51,8 +53,8 @@ public enum Strategy {
@JsonPropertyDescription("default upsert strategy for partial mode")
private Strategy _defaultPartialUpsertStrategy;
- @JsonPropertyDescription("Column for upsert comparison, default to time
column")
- private String _comparisonColumn;
+ @JsonPropertyDescription("Columns for upsert comparison, default to time
column")
+ private List<String> _comparisonColumns;
Review Comment:
As a result of having a setter for both a String or list of String (below
code snippet), Jackson databind will use the correct setter. In this case, a
singular `comparisonColumn` will be coerced to a list, so all existing configs
will continue to work as they did before without the need for any users to
alter their configs. I have a test for that using
[pinot-common/src/test/resources/testConfigs/multipleIndexPartialUpsertConfig.json](https://github.com/apache/pinot/pull/10234/files#diff-d7f3fdcb8570dfc02a7430ebf0ac83051edd37a1bc5c80a2e728fec0122b3206)
```java
public void setComparisonColumn(List<String> comparisonColumns) {
_comparisonColumns = comparisonColumns;
}
public void setComparisonColumn(String comparisonColumn) {
_comparisonColumns = Collections.singletonList(comparisonColumn);
}
```
I think there might be another question around whether or not we want to
do that coercion from String to SingletonList. If we don't coerce, I feel
there will be a lot of conditional logic throughout the codebase. If we do
coerce, there will be some overhead for cases with only one comparisonColumn.
There shouldn't really be any performance impact since list of size 1 will
have O(1) complexity, but there would be memory overhead in the use of
ComparisonColumns class. One thing that's nice about coercing to always have a
list of columns is that it would mean anyone could add a new comparisonColumn
at any time without the need for a server restart
--
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]