github-actions[bot] commented on code in PR #30997:
URL: https://github.com/apache/doris/pull/30997#discussion_r1482722549
##########
be/src/vec/aggregate_functions/aggregate_function_window.h:
##########
@@ -231,6 +231,61 @@
void deserialize(AggregateDataPtr place, BufferReadable& buf, Arena*)
const override {}
};
+struct CumeDistData {
+ float64_t numerator = 0;
+ float64_t denominator = 0;
+ int64_t peer_group_start = 0;
+};
+
+class WindowFunctionCumeDist final
+ : public IAggregateFunctionDataHelper<CumeDistData,
WindowFunctionCumeDist> {
+public:
+ WindowFunctionCumeDist(const DataTypes& argument_types_)
+ : IAggregateFunctionDataHelper(argument_types_) {}
+
+ String get_name() const override { return "cume_dist"; }
+
+ DataTypePtr get_return_type() const override { return
std::make_shared<DataTypeFloat64>(); }
+
+ void add(AggregateDataPtr place, const IColumn**, size_t, Arena*) const
override {}
+
+ void add_range_single_place(int64_t partition_start, int64_t
partition_end, int64_t frame_start,
+ int64_t frame_end, AggregateDataPtr place,
const IColumn** columns,
+ Arena* arena) const override {
+ check_default(place, partition_start, partition_end);
+ int64_t peer_group_count = frame_end - frame_start;
+ if (WindowFunctionCumeDist::data(place).peer_group_start !=
frame_start) {
+ WindowFunctionCumeDist::data(place).peer_group_start = frame_start;
+ WindowFunctionCumeDist::data(place).numerator += peer_group_count;
+ }
+ }
+
+ void reset(AggregateDataPtr place) const override {
+ WindowFunctionCumeDist::data(place).numerator = 0;
+ WindowFunctionCumeDist::data(place).denominator = 0;
+ WindowFunctionCumeDist::data(place).peer_group_start = -1;
+ }
+
+ void insert_result_into(ConstAggregateDataPtr place, IColumn& to) const
override {
Review Comment:
warning: method 'insert_result_into' can be made static
[readability-convert-member-functions-to-static]
```suggestion
static void insert_result_into(ConstAggregateDataPtr place, IColumn& to)
override {
```
##########
be/src/vec/aggregate_functions/aggregate_function_window.h:
##########
@@ -231,6 +231,61 @@ class WindowFunctionPercentRank final
void deserialize(AggregateDataPtr place, BufferReadable& buf, Arena*)
const override {}
};
+struct CumeDistData {
+ float64_t numerator = 0;
+ float64_t denominator = 0;
+ int64_t peer_group_start = 0;
+};
+
+class WindowFunctionCumeDist final
+ : public IAggregateFunctionDataHelper<CumeDistData,
WindowFunctionCumeDist> {
+public:
+ WindowFunctionCumeDist(const DataTypes& argument_types_)
+ : IAggregateFunctionDataHelper(argument_types_) {}
+
+ String get_name() const override { return "cume_dist"; }
+
+ DataTypePtr get_return_type() const override { return
std::make_shared<DataTypeFloat64>(); }
Review Comment:
warning: method 'get_return_type' can be made static
[readability-convert-member-functions-to-static]
```suggestion
static DataTypePtr get_return_type() override { return
std::make_shared<DataTypeFloat64>(); }
```
##########
be/src/vec/aggregate_functions/aggregate_function_window.h:
##########
@@ -231,6 +231,61 @@
void deserialize(AggregateDataPtr place, BufferReadable& buf, Arena*)
const override {}
};
+struct CumeDistData {
+ float64_t numerator = 0;
+ float64_t denominator = 0;
+ int64_t peer_group_start = 0;
+};
+
+class WindowFunctionCumeDist final
+ : public IAggregateFunctionDataHelper<CumeDistData,
WindowFunctionCumeDist> {
+public:
+ WindowFunctionCumeDist(const DataTypes& argument_types_)
+ : IAggregateFunctionDataHelper(argument_types_) {}
+
+ String get_name() const override { return "cume_dist"; }
+
+ DataTypePtr get_return_type() const override { return
std::make_shared<DataTypeFloat64>(); }
+
+ void add(AggregateDataPtr place, const IColumn**, size_t, Arena*) const
override {}
+
+ void add_range_single_place(int64_t partition_start, int64_t
partition_end, int64_t frame_start,
+ int64_t frame_end, AggregateDataPtr place,
const IColumn** columns,
+ Arena* arena) const override {
+ check_default(place, partition_start, partition_end);
+ int64_t peer_group_count = frame_end - frame_start;
+ if (WindowFunctionCumeDist::data(place).peer_group_start !=
frame_start) {
+ WindowFunctionCumeDist::data(place).peer_group_start = frame_start;
+ WindowFunctionCumeDist::data(place).numerator += peer_group_count;
+ }
+ }
+
+ void reset(AggregateDataPtr place) const override {
+ WindowFunctionCumeDist::data(place).numerator = 0;
+ WindowFunctionCumeDist::data(place).denominator = 0;
+ WindowFunctionCumeDist::data(place).peer_group_start = -1;
+ }
+
+ void insert_result_into(ConstAggregateDataPtr place, IColumn& to) const
override {
+ float64_t numerator = data(place).numerator;
+ float64_t denominator = data(place).denominator;
+ float64_t res = numerator / denominator;
+ assert_cast<ColumnFloat64&>(to).get_data().push_back(res);
+ }
+
+ void merge(AggregateDataPtr place, ConstAggregateDataPtr rhs, Arena*)
const override {}
+ void serialize(ConstAggregateDataPtr place, BufferWritable& buf) const
override {}
+ void deserialize(AggregateDataPtr place, BufferReadable& buf, Arena*)
const override {}
+
+private:
+ static void check_default(AggregateDataPtr place, int64_t partition_start,
Review Comment:
warning: pointer parameter 'place' can be pointer to const
[readability-non-const-parameter]
```suggestion
static void check_default(const AggregateDataPtr place, int64_t
partition_start,
```
##########
be/src/vec/aggregate_functions/aggregate_function_window.h:
##########
@@ -231,6 +231,61 @@
void deserialize(AggregateDataPtr place, BufferReadable& buf, Arena*)
const override {}
};
+struct CumeDistData {
+ float64_t numerator = 0;
+ float64_t denominator = 0;
+ int64_t peer_group_start = 0;
+};
+
+class WindowFunctionCumeDist final
+ : public IAggregateFunctionDataHelper<CumeDistData,
WindowFunctionCumeDist> {
+public:
+ WindowFunctionCumeDist(const DataTypes& argument_types_)
+ : IAggregateFunctionDataHelper(argument_types_) {}
+
+ String get_name() const override { return "cume_dist"; }
+
+ DataTypePtr get_return_type() const override { return
std::make_shared<DataTypeFloat64>(); }
+
+ void add(AggregateDataPtr place, const IColumn**, size_t, Arena*) const
override {}
+
+ void add_range_single_place(int64_t partition_start, int64_t
partition_end, int64_t frame_start,
Review Comment:
warning: method 'add_range_single_place' can be made static
[readability-convert-member-functions-to-static]
```suggestion
static void add_range_single_place(int64_t partition_start, int64_t
partition_end, int64_t frame_start,
```
be/src/vec/aggregate_functions/aggregate_function_window.h:253:
```diff
- Arena* arena) const override {
+ Arena* arena) override {
```
--
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]