BiteTheDDDDt commented on a change in pull request #8299:
URL: https://github.com/apache/incubator-doris/pull/8299#discussion_r817612721
##########
File path: be/src/exprs/aggregate_functions.cpp
##########
@@ -2265,6 +2265,206 @@ void
AggregateFunctions::offset_fn_update(FunctionContext* ctx, const T& src, co
*dst = src;
}
+struct WindowFunnelState {
+ std::vector<std::pair<DateTimeValue, int>> events;
+ int max_event_level;
+ bool sorted;
+ int64_t window;
+
+ WindowFunnelState() {
+ sorted = true;
+ max_event_level = 0;
+ window = 0;
+ }
+
+ void add(DateTimeValue& timestamp, int event_idx, int event_num, int64_t
win) {
+ window = win;
+ max_event_level = event_num;
+ if (sorted && events.size() > 0) {
+ if (events.back().first == timestamp) {
+ sorted = events.back().second <= event_idx;
+ } else {
+ sorted = events.back().first < timestamp;
+ }
+ }
+ events.emplace_back(timestamp, event_idx);
+ }
+
+ void sort() {
+ if (sorted) {
+ return;
+ }
+ std::stable_sort(events.begin(), events.end());
Review comment:
why use `stable_sort` here?
--
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]