[CP] [CP] [CP] Fix rollup SIGSEGV when building stored row

This commit is contained in:
stdliu
2022-06-06 14:20:53 +08:00
committed by wangzelin.wzl
parent bc26b2f163
commit d1636b9051
24 changed files with 184 additions and 324 deletions

View File

@ -394,7 +394,7 @@ int64_t ObAggregateProcessor::ExtraResult::to_string(char* buf, const int64_t bu
return pos;
}
int ObAggrInfo::eval_aggr(ObChunkDatumStore::ShadowStoredRow<>& curr_row_results, ObEvalCtx& ctx) const
int ObAggrInfo::eval_aggr(ObChunkDatumStore::ShadowStoredRow& curr_row_results, ObEvalCtx& ctx) const
{
int ret = OB_SUCCESS;
if (param_exprs_.empty() && T_FUN_COUNT == get_expr_type()) {
@ -1908,7 +1908,7 @@ int ObAggregateProcessor::collect_aggr_result(AggrCell& aggr_cell, const ObExpr*
const ObChunkDatumStore::StoredRow* storted_row = NULL;
int64_t rank_num = 0;
bool need_check_order_equal = T_FUN_GROUP_DENSE_RANK == aggr_fun;
ObChunkDatumStore::LastStoredRow<> prev_row(aggr_alloc_);
ObChunkDatumStore::LastStoredRow prev_row(aggr_alloc_);
int64_t total_sort_row_cnt = extra->get_row_count();
bool is_first = true;
while (OB_SUCC(ret) && OB_SUCC(extra->get_next_row(storted_row))) {
@ -2044,7 +2044,7 @@ int ObAggregateProcessor::collect_aggr_result(AggrCell& aggr_cell, const ObExpr*
const int64_t total_row_count = extra->get_row_count();
char buf_alloc[number::ObNumber::MAX_CALC_BYTE_LEN];
ObDataBuffer allocator(buf_alloc, number::ObNumber::MAX_CALC_BYTE_LEN);
ObChunkDatumStore::LastStoredRow<> prev_row(aggr_alloc_);
ObChunkDatumStore::LastStoredRow prev_row(aggr_alloc_);
number::ObNumber factor;
bool need_linear_inter = false;
int64_t not_null_start_loc = 0;
@ -2163,7 +2163,7 @@ int ObAggregateProcessor::collect_aggr_result(AggrCell& aggr_cell, const ObExpr*
LOG_WARN("finish_add_row failed", KPC(extra), K(ret));
} else {
const ObChunkDatumStore::StoredRow* storted_row = NULL;
ObChunkDatumStore::LastStoredRow<> first_row(aggr_alloc_);
ObChunkDatumStore::LastStoredRow first_row(aggr_alloc_);
bool is_first = true;
while (OB_SUCC(ret) && OB_SUCC(extra->get_next_row(storted_row))) {
bool is_equal = false;
@ -2925,7 +2925,7 @@ int ObAggregateProcessor::compare_calc(const ObDatum& left_value, const ObDatum&
return ret;
}
int ObAggregateProcessor::check_rows_equal(const ObChunkDatumStore::LastStoredRow<>& prev_row,
int ObAggregateProcessor::check_rows_equal(const ObChunkDatumStore::LastStoredRow& prev_row,
const ObChunkDatumStore::StoredRow& cur_row, const ObAggrInfo& aggr_info, bool& is_equal)
{
int ret = OB_SUCCESS;
@ -3190,7 +3190,7 @@ int ObAggregateProcessor::get_wm_concat_result(
LOG_WARN("finish_add_row failed", KPC(extra), K(ret));
} else {
ObString sep_str = ObCharsetUtils::get_const_str(aggr_info.expr_->datum_meta_.cs_type_, ',');
ObChunkDatumStore::LastStoredRow<> first_row(aggr_alloc_);
ObChunkDatumStore::LastStoredRow first_row(aggr_alloc_);
const ObChunkDatumStore::StoredRow* storted_row = NULL;
bool is_first = true;
bool need_continue = true;