calcite
calcite copied to clipboard
[CALCITE-4191] Improve the logic of creating aggregate calls
According to the current code base, the only way to create AggregateCall objects is by calling one of the two AggregateCall#create methods (other create methods are deprecated).
The two create methods have 9 and 11 parameters, respectively, 3 of which are booleans and 2 are ints. We find this makes the code less readable and error-prone, as some bugs are caused by specifying the wrong parameters.
In this issue, we improve the related logic by the builder pattern, which results in the following benefits:
- By creating the objects by the builder pattern, there is no need to maintain multiple overrides of the create methods.
- There is no need to maintain multiple overrides of the copy methods, either.
- The code becomes more readable and less error-prone, as it is less like to specify the wrong parameter.
- Creating AggregateCall objects becomes easier, as the user does not have specify the default parameters repeatedly.
Options