[FEAT MERGE] implement dynamic sampling

This commit is contained in:
wangt1xiuyi
2023-04-27 12:15:28 +00:00
committed by ob-robot
parent 56f85c9c76
commit f745b47cbc
86 changed files with 6754 additions and 2282 deletions

View File

@ -651,6 +651,8 @@ int ObOptimizer::init_env_info(ObDMLStmt &stmt)
session_enable_parallel,
session_force_parallel_dop))) {
LOG_WARN("failed to get session parallel info", K(ret));
} else if (OB_FAIL(check_force_default_stat())) {
LOG_WARN("failed to check force default stat", K(ret));
} else if (OB_FAIL(calc_link_stmt_count(*target_stmt, link_stmt_count))) {
LOG_WARN("calc link stmt count failed", K(ret));
} else {
@ -1043,3 +1045,30 @@ int ObOptimizer::update_column_usage_infos()
return ret;
}
int ObOptimizer::check_force_default_stat()
{
int ret = OB_SUCCESS;
share::schema::ObSchemaGetterGuard* schema_guard = ctx_.get_schema_guard();
ObSQLSessionInfo* session = ctx_.get_session_info();
ObQueryCtx* query_ctx = ctx_.get_query_ctx();
bool is_restore = false;
bool use_default_opt_stat = false;
bool is_exists_opt = false;
if (OB_ISNULL(schema_guard) || OB_ISNULL(session) || OB_ISNULL(query_ctx)) {
ret = OB_ERR_UNEXPECTED;
LOG_WARN("get unexpected null", K(schema_guard), K(session), K(query_ctx));
} else if (OB_FAIL(schema_guard->check_tenant_is_restore(session->get_effective_tenant_id(),
is_restore))) {
LOG_WARN("fail to check if tenant is restore", K(session->get_effective_tenant_id()));
} else if (is_restore) {
ctx_.set_use_default_stat();
} else if (OB_FAIL(query_ctx->get_global_hint().opt_params_.get_bool_opt_param(ObOptParamHint::USE_DEFAULT_OPT_STAT,
use_default_opt_stat,
is_exists_opt))) {
LOG_WARN("fail to check use default opt stat", K(ret));
} else if (is_exists_opt && use_default_opt_stat) {
ctx_.set_use_default_stat();
}
return ret;
}