From 7c655f1ea04fd28d1342f8cf85a010ed128be993 Mon Sep 17 00:00:00 2001 From: obdev Date: Tue, 8 Oct 2024 20:45:55 +0000 Subject: [PATCH] Give expected_task_load and esti_table_size correct default values when encounter too small tablet size in nlj&spf --- src/sql/optimizer/ob_optimizer_util.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/sql/optimizer/ob_optimizer_util.cpp b/src/sql/optimizer/ob_optimizer_util.cpp index 861d725e6..417cb7493 100644 --- a/src/sql/optimizer/ob_optimizer_util.cpp +++ b/src/sql/optimizer/ob_optimizer_util.cpp @@ -10089,11 +10089,12 @@ int ObOptimizerUtil::compute_nlj_spf_storage_compute_parallel_skew(ObOptimizerCo } else { ObParallelBlockRangeTaskParams params; params.parallelism_ = compute_parallel; - params.expected_task_load_ = table_schema->get_tablet_size() / 1024 / 1024; + params.expected_task_load_ = table_schema->get_tablet_size() / 1024 / 1024 <= 0 ? sql::OB_EXPECTED_TASK_LOAD : table_schema->get_tablet_size() / 1024 / 1024; //convert from B -> MB int64_t esti_table_size = (esti_table_meta_info->micro_block_count_ * esti_table_meta_info->micro_block_size_) / 1024 / 1024; double query_range_filter_ratio = esti_table_meta_info->row_count_ / esti_table_meta_info->table_row_count_; esti_table_size *= query_range_filter_ratio; + esti_table_size = MAX(0, esti_table_size); int64_t esti_task_cnt_by_data_size = 0; if (OB_FAIL(ObGranuleUtil::compute_total_task_count(params, esti_table_size, esti_task_cnt_by_data_size))) {