Fix core of missing reset nlj's server_list_ to random in px random shuffle scenario

This commit is contained in:
obdev 2024-11-20 14:45:11 +00:00 committed by ob-robot
parent ae990565ed
commit 3aecb7da09
2 changed files with 19 additions and 2 deletions

View File

@ -7490,13 +7490,22 @@ int JoinPath::compute_join_path_parallel_and_server_info(ObOptimizerContext *opt
if (OB_FAIL(server_list.push_back(local_server_addr))) {
LOG_WARN("failed to assign server list", K(ret));
}
} else if (DistAlgo::DIST_NONE_ALL == join_dist_algo ||
DistAlgo::DIST_RANDOM_ALL == join_dist_algo) {
} else if (DistAlgo::DIST_NONE_ALL == join_dist_algo) {
parallel = left_path->parallel_;
server_cnt = left_path->server_cnt_;
if (OB_FAIL(server_list.assign(left_path->server_list_))) {
LOG_WARN("failed to assign server list", K(ret));
}
} else if (DistAlgo::DIST_RANDOM_ALL == join_dist_algo) {
common::ObAddr all_server_list;
// like hash_hash, a special ALL server list indicating we would use all servers of this sql relate
all_server_list.set_max();
if (OB_FAIL(server_list.push_back(all_server_list))) {
LOG_WARN("failed to assign all server list", K(ret));
} else {
parallel = left_path->parallel_;
server_cnt = left_path->server_cnt_;
}
} else if (DistAlgo::DIST_ALL_NONE == join_dist_algo) {
parallel = right_path->parallel_;
server_cnt = right_path->server_cnt_;

View File

@ -821,6 +821,14 @@ int ObLogSubPlanFilter::compute_op_parallel_and_server_info()
int ret = OB_SUCCESS;
if (OB_FAIL(compute_normal_multi_child_parallel_and_server_info())) {
LOG_WARN("failed to compute multi child parallel and server info", K(ret), K(get_distributed_algo()));
} else if (dist_algo_ == DistAlgo::DIST_RANDOM_ALL) {
get_server_list().reuse();
common::ObAddr all_server_list;
// like hash_hash, a special ALL server list indicating we would use all servers of this sql relate
all_server_list.set_max();
if (OB_FAIL(get_server_list().push_back(all_server_list))) {
LOG_WARN("failed to assign all server list", K(ret));
}
}
return ret;
}