Fix FORWARD_NULL

This commit is contained in:
DengzhiLiu
2024-02-09 02:04:09 +00:00
committed by ob-robot
parent 3e257b3896
commit c246a053b2
6 changed files with 107 additions and 92 deletions

View File

@ -1100,7 +1100,6 @@ int ObTenantCGReadInfoMgr::construct_normal_cg_read_infos()
read_info_array = new(buf) ObCGReadInfo[array_cnt];
basic_info_array = new((char *)buf + (sizeof(ObCGReadInfo) * array_cnt)) ObReadInfoStruct[array_cnt];
alloc_buf_ = buf;
}
ObColExtend tmp_col_extend;
tmp_col_extend.skip_index_attr_.set_min_max();
int64_t idx = 0;
@ -1125,6 +1124,7 @@ int ObTenantCGReadInfoMgr::construct_normal_cg_read_infos()
} // end of for
// if failed, will call destroy outside
}
}
return ret;
}

View File

@ -491,6 +491,12 @@ int ObCOMergeBatchExeDag::create_first_task()
LOG_WARN("execute task is unexpected null", KR(ret), KP(execute_task));
} else if (OB_FAIL(create_task(execute_task/*parent*/, finish_task, *ctx, *dag_net))) {
LOG_WARN("fail to create finish task", K(ret), KPC(dag_net));
} else { // fill compaction param
// the dag_net has been set, and the dag hasn't been added to the scheduler now
param_.compaction_param_.sstable_cnt_ = ctx->get_tables_handle().get_count();
param_.compaction_param_.estimate_concurrent_cnt_ = ctx->get_concurrent_cnt();
param_.compaction_param_.add_time_ = common::ObTimeUtility::fast_current_time();
param_.compaction_param_.batch_size_ = end_cg_idx_ - start_cg_idx_;
}
if (OB_FAIL(ret)) {
@ -500,17 +506,9 @@ int ObCOMergeBatchExeDag::create_first_task()
}
if (OB_NOT_NULL(finish_task)) {
remove_task(*finish_task);
execute_task = nullptr;
finish_task = nullptr;
}
}
// the dag_net has been set, and the dag hasn't been added to the scheduler now
if (OB_SUCC(ret)) { // fill compaction param
param_.compaction_param_.sstable_cnt_ = ctx->get_tables_handle().get_count();
param_.compaction_param_.estimate_concurrent_cnt_ = ctx->get_concurrent_cnt();
param_.compaction_param_.add_time_ = common::ObTimeUtility::fast_current_time();
param_.compaction_param_.batch_size_ = end_cg_idx_ - start_cg_idx_;
}
return ret;
}

View File

@ -942,8 +942,12 @@ int ObCOSSTableRowScanner::filter_group_by_rows()
{
int ret = OB_SUCCESS;
const ObCGBitmap *result_bitmap = nullptr;
ObICGIterator *group_by_iter = nullptr;
ObICGGroupByProcessor *group_by_processor = group_by_iters_.at(0);
ObICGIterator *group_by_iter = dynamic_cast<ObICGIterator*>(group_by_processor);
if (OB_ISNULL(group_by_iter = dynamic_cast<ObICGIterator*>(group_by_processor))) {
ret = OB_ERR_UNEXPECTED;
LOG_WARN("Unexpected null group_by_iter", K(ret), KPC(group_by_processor));
} else {
while(OB_SUCC(ret)) {
if (can_forward_row_scanner() &&
OB_FAIL(row_scanner_->forward_blockscan(end_, blockscan_state_, current_))) {
@ -977,6 +981,7 @@ int ObCOSSTableRowScanner::filter_group_by_rows()
break;
}
}
}
if (OB_SUCC(ret) && OB_FAIL(project_iter_->locate(
ObCSRange(current_, group_size_),
result_bitmap))) {
@ -1135,20 +1140,21 @@ int ObCOSSTableRowScanner::init_group_by_info(ObTableAccessContext &context)
int ObCOSSTableRowScanner::push_group_by_processor(ObICGIterator *cg_iterator)
{
int ret = OB_SUCCESS;
ObICGGroupByProcessor *group_by_processor = nullptr;
if (OB_ISNULL(cg_iterator)) {
ret = OB_INVALID_ARGUMENT;
LOG_WARN("Invalid argument", K(ret));
} else if (OB_UNLIKELY(!ObICGIterator::is_valid_group_by_cg_scanner(cg_iterator->get_type()))) {
ret = OB_ERR_UNEXPECTED;
LOG_WARN("Unexpected cg scanner", K(ret), K(cg_iterator->get_type()));
} else {
ObICGGroupByProcessor *group_by_processor = dynamic_cast<ObICGGroupByProcessor*>(cg_iterator);
if (OB_FAIL(group_by_processor->init_group_by_info())) {
} else if (OB_ISNULL(group_by_processor = dynamic_cast<ObICGGroupByProcessor*>(cg_iterator))) {
ret = OB_ERR_UNEXPECTED;
LOG_WARN("Unexpected null group_by_processor", K(ret), KPC(cg_iterator));
} else if (OB_FAIL(group_by_processor->init_group_by_info())) {
LOG_WARN("Failed to init group by info", K(ret));
} else if (OB_FAIL(group_by_iters_.push_back(group_by_processor))) {
LOG_WARN("Failed to push back", K(ret));
}
}
return ret;
}

View File

@ -530,11 +530,16 @@ int ObCOSSTableRowsFilter::transform_filter_tree(
LOG_WARN("Failed to pull up common node", K(ret), K(tmp_filter_indexes));
}
if (OB_SUCC(ret)) {
if (1 < tmp_filter_indexes.count() &&
OB_FAIL(common_filter_executor->set_cg_param(*common_col_group_ids, common_col_exprs))) {
if (1 < tmp_filter_indexes.count()) {
if (OB_ISNULL(common_filter_executor)) {
ret = OB_ERR_UNEXPECTED;
LOG_WARN("Unexpected null common_filter_executor", K(ret));
} else if (OB_FAIL(common_filter_executor->set_cg_param(*common_col_group_ids, common_col_exprs))) {
LOG_WARN("Failed to set cg param to filter", K(ret), KPC(common_filter_executor),
KP(common_col_group_ids), KP(common_col_exprs));
} else {
}
}
if (OB_SUCC(ret)) {
++base_filter_idx;
if (common_filter_executor == &filter || base_filter_idx >= filter.get_child_count()) {
break;

View File

@ -91,6 +91,9 @@ int ObCOMerger::inner_prepare_merge(ObBasicTabletMergeCtx &ctx, const int64_t id
}
if (OB_FAIL(ret)) {
} else if (OB_ISNULL(table)) {
ret = OB_ERR_UNEXPECTED;
STORAGE_LOG(WARN, "Unexpected null table", K(ret));
} else if (FALSE_IT(sstable = static_cast<ObSSTable *>(table))) {
} else if (OB_FAIL(init_merge_iters(sstable))) {
STORAGE_LOG(WARN, "failed to init_merge_iters", K(ret));

View File

@ -450,7 +450,6 @@ int ObCOSSTableV2::deep_copy(
LOG_WARN("failed to deep copy co sstable", K(ret));
} else {
new_co_table = static_cast<ObCOSSTableV2 *>(meta_obj);
}
// set cg sstable addr
ObSSTableArray &new_cg_sstables = new_co_table->meta_->get_cg_sstables();
@ -464,6 +463,7 @@ int ObCOSSTableV2::deep_copy(
LOG_WARN("failed to set cg addr", K(ret));
}
}
}
if (OB_SUCC(ret)) {
dst = new_co_table;
@ -526,6 +526,9 @@ int ObCOSSTableV2::get_cg_sstable(
}
if (OB_FAIL(ret)) {
} else if (OB_ISNULL(cg_wrapper.sstable_)) {
ret = OB_ERR_UNEXPECTED;
LOG_WARN("Unexpected null sstable", K(ret));
} else if (cg_wrapper.sstable_->is_co_sstable()) {
// do nothing
} else if (cg_wrapper.sstable_->is_loaded()) {
@ -598,7 +601,7 @@ int ObCOSSTableV2::scan(
// TODO: check whether use row_store/rowkey sstable when primary keys accessed only
ObStoreRowIterator *row_scanner = nullptr;
ALLOCATE_TABLE_STORE_ROW_IETRATOR(context, ObCOSSTableRowScanner, row_scanner);
if (OB_SUCC(ret) && OB_FAIL(row_scanner->init(param, context, this, &key_range))) {
if (OB_SUCC(ret) && OB_NOT_NULL(row_scanner) && OB_FAIL(row_scanner->init(param, context, this, &key_range))) {
LOG_WARN("Fail to open row scanner", K(ret), K(param), K(context), K(key_range), K(*this));
}
@ -639,7 +642,7 @@ int ObCOSSTableV2::multi_scan(
// TODO: check whether use row_store/rowkey sstable when primary keys accessed only
ObStoreRowIterator *row_scanner = nullptr;
ALLOCATE_TABLE_STORE_ROW_IETRATOR(context, ObCOSSTableRowMultiScanner, row_scanner);
if (OB_SUCC(ret) && OB_FAIL(row_scanner->init(param, context, this, &ranges))) {
if (OB_SUCC(ret) && OB_NOT_NULL(row_scanner) && OB_FAIL(row_scanner->init(param, context, this, &ranges))) {
LOG_WARN("Fail to open row scanner", K(ret), K(param), K(context), K(ranges), K(*this));
}
@ -746,7 +749,7 @@ int ObCOSSTableV2::get(
} else {
ObStoreRowIterator *row_getter = nullptr;
ALLOCATE_TABLE_STORE_ROW_IETRATOR(context, ObCOSSTableRowGetter, row_getter);
if (OB_SUCC(ret) && OB_FAIL(row_getter->init(param, context, this, &rowkey))) {
if (OB_SUCC(ret) && OB_NOT_NULL(row_getter) && OB_FAIL(row_getter->init(param, context, this, &rowkey))) {
LOG_WARN("Fail to open row scanner", K(ret), K(param), K(context), K(rowkey), K(*this));
}
@ -786,7 +789,7 @@ int ObCOSSTableV2::multi_get(
} else {
ObStoreRowIterator *row_getter = nullptr;
ALLOCATE_TABLE_STORE_ROW_IETRATOR(context, ObCOSSTableRowMultiGetter, row_getter);
if (OB_SUCC(ret) && OB_FAIL(row_getter->init(param, context, this, &rowkeys))) {
if (OB_SUCC(ret) && OB_NOT_NULL(row_getter) && OB_FAIL(row_getter->init(param, context, this, &rowkeys))) {
LOG_WARN("Fail to open row scanner", K(ret), K(param), K(context), K(rowkeys), K(*this));
}