fix get unexpected error caused by getting invalid dynamic sampling table
This commit is contained in:
@ -1308,9 +1308,7 @@ int ObDynamicSamplingUtils::get_ds_table_param(ObOptimizerContext &ctx,
|
||||
table_meta->get_ref_table_id(),
|
||||
ds_table_param.degree_))) {
|
||||
LOG_WARN("failed to get ds table degree", K(ret));
|
||||
} else if (OB_FAIL(get_dynamic_sampling_max_timeout(ctx, ds_table_param.max_ds_timeout_))) {
|
||||
LOG_WARN("failed to get dynamic sampling max timeout", K(ret));
|
||||
} else {
|
||||
} else if ((ds_table_param.max_ds_timeout_ = get_dynamic_sampling_max_timeout(ctx)) > 0) {
|
||||
ds_table_param.tenant_id_ = ctx.get_session_info()->get_effective_tenant_id();
|
||||
ds_table_param.table_id_ = table_meta->get_ref_table_id();
|
||||
ds_table_param.ds_level_ = ds_level;
|
||||
@ -1521,15 +1519,11 @@ const ObDSResultItem *ObDynamicSamplingUtils::get_ds_result_item(ObDSResultItemT
|
||||
return item;
|
||||
}
|
||||
|
||||
int ObDynamicSamplingUtils::get_dynamic_sampling_max_timeout(ObOptimizerContext &ctx,
|
||||
int64_t &max_ds_timeout)
|
||||
int64_t ObDynamicSamplingUtils::get_dynamic_sampling_max_timeout(ObOptimizerContext &ctx)
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
if (OB_FAIL(THIS_WORKER.check_status())) {
|
||||
LOG_WARN("failed to check status", K(ret));
|
||||
} else {
|
||||
max_ds_timeout = THIS_WORKER.get_timeout_remain();
|
||||
max_ds_timeout = max_ds_timeout / 10;//default ds time can't exceed 10% of current sql remain timeout
|
||||
int64_t max_ds_timeout = 0;
|
||||
if (THIS_WORKER.get_timeout_remain() / 10 >= OB_DS_MIN_QUERY_TIMEOUT) {
|
||||
max_ds_timeout = THIS_WORKER.get_timeout_remain() / 10;//default ds time can't exceed 10% of current sql remain timeout
|
||||
omt::ObTenantConfigGuard tenant_config(TENANT_CONF(ctx.get_session_info()->get_effective_tenant_id()));
|
||||
if (tenant_config.is_valid()) {
|
||||
int64_t ds_maximum_time = tenant_config->_optimizer_ads_time_limit * 1000000;
|
||||
@ -1538,7 +1532,7 @@ int ObDynamicSamplingUtils::get_dynamic_sampling_max_timeout(ObOptimizerContext
|
||||
}
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
return max_ds_timeout;
|
||||
}
|
||||
|
||||
int ObDynamicSamplingUtils::add_failed_ds_table_list(const uint64_t table_id,
|
||||
|
||||
Reference in New Issue
Block a user