Fix const aggregate expr with rollup wrong result

This commit is contained in:
hezuojiao
2023-01-11 10:38:09 +00:00
committed by ob-robot
parent d59c83f18a
commit 1131932cd3
3 changed files with 19 additions and 3 deletions

View File

@ -655,6 +655,10 @@ public:
{
io_event_observer_ = observer;
}
inline void set_op_eval_infos(ObIArray<ObEvalInfo *> *eval_infos)
{
op_eval_infos_ = eval_infos;
}
inline ObIArray<ObAggrInfo> &get_aggr_infos() { return aggr_infos_; }
int single_row_agg(GroupRow &group_row, ObEvalCtx &eval_ctx);
int single_row_agg_batch(GroupRow **group_rows, ObEvalCtx &eval_ctx, const int64_t batch_size, const ObBitVector *skip);
@ -840,6 +844,15 @@ private:
GroupConcatExtraResult *&extra,
ObDatum &concat_result);
OB_INLINE void clear_op_evaluated_flag()
{
if (OB_NOT_NULL(op_eval_infos_)) {
for (int i = 0; i < op_eval_infos_->count(); i++) {
op_eval_infos_->at(i)->clear_evaluated_flag();
}
}
}
// HyperLogLogCount-related functions
int llc_init(AggrCell &aggr_cell);
int llc_init_empty(ObExpr &expr, ObEvalCtx &eval_ctx);
@ -920,6 +933,7 @@ private:
ObIOEventObserver *io_event_observer_;
RemovalInfo removal_info_;
bool support_fast_single_row_agg_;
ObIArray<ObEvalInfo *> *op_eval_infos_;
};
struct ObAggregateCalcFunc