fix use_sstr_aggr_ state maybe not correct bug
This commit is contained in:
@ -811,6 +811,10 @@ public:
|
||||
{
|
||||
return sizeof(GroupRowBucket);
|
||||
}
|
||||
inline bool is_sstr_aggr_valid() const
|
||||
{
|
||||
return sstr_aggr_.is_valid();
|
||||
}
|
||||
template <typename CB>
|
||||
int foreach_bucket_hash(CB &cb) const
|
||||
{
|
||||
|
@ -349,6 +349,15 @@ struct GetProbeCntVisitor : public boost::static_visitor<int64_t>
|
||||
}
|
||||
};
|
||||
|
||||
struct IsSstrAggrValidVisitor : public boost::static_visitor<bool>
|
||||
{
|
||||
template <typename T>
|
||||
bool operator() (T &t) const
|
||||
{
|
||||
return t->is_sstr_aggr_valid();
|
||||
}
|
||||
};
|
||||
|
||||
struct PrefetchVisitor :public boost::static_visitor<>
|
||||
{
|
||||
PrefetchVisitor(const ObBatchRows &brs, uint64_t *hash_vals)
|
||||
@ -552,6 +561,12 @@ public:
|
||||
return boost::apply_visitor(visitor, hash_table_ptr_);
|
||||
}
|
||||
|
||||
bool is_sstr_aggr_valid() const
|
||||
{
|
||||
IsSstrAggrValidVisitor visitor;
|
||||
return boost::apply_visitor(visitor, hash_table_ptr_);
|
||||
}
|
||||
|
||||
private:
|
||||
HashAggSetPtr hash_table_ptr_;
|
||||
void *real_ptr_;
|
||||
|
@ -1477,13 +1477,13 @@ int ObHashGroupByVecOp::batch_process_duplicate_data(
|
||||
int64_t new_group_cnt = 0;
|
||||
memset(static_cast<void *> (batch_old_rows_), 0, sizeof(char *) * MY_SPEC.max_batch_size_);
|
||||
memset(static_cast<void *> (batch_new_rows_), 0, sizeof(char *) * MY_SPEC.max_batch_size_);
|
||||
if (nullptr == store_rows && !use_sstr_aggr_) {
|
||||
if (nullptr == store_rows && !local_group_rows_.is_sstr_aggr_valid()) {
|
||||
ret = calc_groupby_exprs_hash_batch(dup_groupby_exprs_, child_brs);
|
||||
local_group_rows_.prefetch(child_brs, hash_vals_);
|
||||
}
|
||||
bool can_append_batch = (NULL == bloom_filter
|
||||
&& (!enable_dump_
|
||||
|| use_sstr_aggr_
|
||||
|| local_group_rows_.is_sstr_aggr_valid()
|
||||
|| local_group_rows_.size() < MIN_INMEM_GROUPS
|
||||
|| process_check_dump
|
||||
|| !need_start_dump(input_rows, est_part_cnt, force_check_dump)));
|
||||
@ -1721,7 +1721,7 @@ int ObHashGroupByVecOp::group_child_batch_rows(const ObCompactRow **store_rows,
|
||||
} else if ((ObThreeStageAggrStage::SECOND_STAGE == MY_SPEC.aggr_stage_ && !use_distinct_data_)
|
||||
&& FALSE_IT(aggr_code_vec = aggr_code_expr->get_vector(eval_ctx_))) {
|
||||
} else {
|
||||
if (nullptr == store_rows && !use_sstr_aggr_) {
|
||||
if (nullptr == store_rows && !local_group_rows_.is_sstr_aggr_valid()) {
|
||||
ret = calc_groupby_exprs_hash_batch(dup_groupby_exprs_, child_brs);
|
||||
local_group_rows_.prefetch(child_brs, hash_vals_);
|
||||
}
|
||||
@ -1755,7 +1755,7 @@ int ObHashGroupByVecOp::group_child_batch_rows(const ObCompactRow **store_rows,
|
||||
}
|
||||
bool can_append_batch = (NULL == bloom_filter
|
||||
&& (!enable_dump_
|
||||
|| use_sstr_aggr_
|
||||
|| local_group_rows_.is_sstr_aggr_valid()
|
||||
|| local_group_rows_.size() < MIN_INMEM_GROUPS
|
||||
|| process_check_dump
|
||||
|| !need_start_dump(input_rows, est_part_cnt, force_check_dump)));
|
||||
|
Reference in New Issue
Block a user