[CP] fix: fix the core induced by spf batch rescan

This commit is contained in:
obdev
2023-12-14 15:17:31 +00:00
committed by ant-ob-hengtang
parent e250ff7f6d
commit 07edb2482e
8 changed files with 25 additions and 1 deletions

View File

@ -1311,6 +1311,9 @@ DEF_INT(open_cursors, OB_TENANT_PARAMETER, "50", "[0,65535]",
DEF_BOOL(_enable_px_batch_rescan, OB_TENANT_PARAMETER, "True", DEF_BOOL(_enable_px_batch_rescan, OB_TENANT_PARAMETER, "True",
"enable px batch rescan for nlj or subplan filter", "enable px batch rescan for nlj or subplan filter",
ObParameterAttr(Section::OBSERVER, Source::DEFAULT, EditLevel::DYNAMIC_EFFECTIVE)); ObParameterAttr(Section::OBSERVER, Source::DEFAULT, EditLevel::DYNAMIC_EFFECTIVE));
DEF_BOOL(_enable_spf_batch_rescan, OB_TENANT_PARAMETER, "False",
"enable das batch rescan for subplan filter",
ObParameterAttr(Section::OBSERVER, Source::DEFAULT, EditLevel::DYNAMIC_EFFECTIVE));
DEF_INT(_parallel_max_active_sessions, OB_TENANT_PARAMETER, "0", "[0,]", DEF_INT(_parallel_max_active_sessions, OB_TENANT_PARAMETER, "0", "[0,]",
"max active parallel sessions allowed for tenant. Range: [0,+∞)", "max active parallel sessions allowed for tenant. Range: [0,+∞)",

View File

@ -535,6 +535,7 @@ int ObSubPlanFilterOp::rescan()
//We do not need alloc memory again in rescan. //We do not need alloc memory again in rescan.
//das_batch_params_.reset(); //das_batch_params_.reset();
current_group_ = 0; current_group_ = 0;
brs_holder_.reset();
} }
if (OB_SUCC(ret) && enable_left_px_batch_) { if (OB_SUCC(ret) && enable_left_px_batch_) {

View File

@ -895,6 +895,7 @@ int ObOptimizerTraceImpl::trace_parameters()
//for tenant parameters //for tenant parameters
TRACE_PARAMETER(_rowsets_enabled, bool); TRACE_PARAMETER(_rowsets_enabled, bool);
TRACE_PARAMETER(_enable_px_batch_rescan, bool); TRACE_PARAMETER(_enable_px_batch_rescan, bool);
TRACE_PARAMETER(_enable_spf_batch_rescan, bool);
TRACE_PARAMETER(_hash_join_enabled, bool); TRACE_PARAMETER(_hash_join_enabled, bool);
TRACE_PARAMETER(_optimizer_sortmerge_join_enabled, bool); TRACE_PARAMETER(_optimizer_sortmerge_join_enabled, bool);
TRACE_PARAMETER(_nested_loop_join_enabled, bool); TRACE_PARAMETER(_nested_loop_join_enabled, bool);

View File

@ -537,6 +537,15 @@ int ObLogSubPlanFilter::check_and_set_das_group_rescan()
LOG_WARN("unexpected null", K(ret)); LOG_WARN("unexpected null", K(ret));
} else if (OB_FAIL(session_info->get_nlj_batching_enabled(enable_das_group_rescan_))) { } else if (OB_FAIL(session_info->get_nlj_batching_enabled(enable_das_group_rescan_))) {
LOG_WARN("failed to get enable batch variable", K(ret)); LOG_WARN("failed to get enable batch variable", K(ret));
} else {
omt::ObTenantConfigGuard tenant_config(TENANT_CONF(session_info->get_effective_tenant_id()));
if (tenant_config.is_valid()) {
enable_das_group_rescan_ = tenant_config->_enable_spf_batch_rescan;
LOG_TRACE("trace disable hash groupby in second stage for three-stage",
K(enable_das_group_rescan_));
} else {
enable_das_group_rescan_ = false;
}
} }
// check use batch // check use batch
for (int64_t i = 1; OB_SUCC(ret) && enable_das_group_rescan_ && i < get_num_of_child(); i++) { for (int64_t i = 1; OB_SUCC(ret) && enable_das_group_rescan_ && i < get_num_of_child(); i++) {

View File

@ -407,6 +407,7 @@ int ObConfigInfoInPC::load_influence_plan_config()
px_join_skew_handling_ = tenant_config->_px_join_skew_handling; px_join_skew_handling_ = tenant_config->_px_join_skew_handling;
px_join_skew_minfreq_ = static_cast<int8_t>(tenant_config->_px_join_skew_minfreq); px_join_skew_minfreq_ = static_cast<int8_t>(tenant_config->_px_join_skew_minfreq);
min_cluster_version_ = GET_MIN_CLUSTER_VERSION(); min_cluster_version_ = GET_MIN_CLUSTER_VERSION();
enable_spf_batch_rescan_ = tenant_config->_enable_spf_batch_rescan;
enable_var_assign_use_das_ = tenant_config->_enable_var_assign_use_das; enable_var_assign_use_das_ = tenant_config->_enable_var_assign_use_das;
} }
@ -454,6 +455,9 @@ int ObConfigInfoInPC::serialize_configs(char *buf, int buf_len, int64_t &pos)
} else if (OB_FAIL(databuff_printf(buf, buf_len, pos, } else if (OB_FAIL(databuff_printf(buf, buf_len, pos,
"%d", is_enable_px_fast_reclaim_))) { "%d", is_enable_px_fast_reclaim_))) {
SQL_PC_LOG(WARN, "failed to databuff_printf", K(ret), K(is_enable_px_fast_reclaim_)); SQL_PC_LOG(WARN, "failed to databuff_printf", K(ret), K(is_enable_px_fast_reclaim_));
} else if (OB_FAIL(databuff_printf(buf, buf_len, pos,
"%d", enable_spf_batch_rescan_))) {
SQL_PC_LOG(WARN, "failed to databuff_printf", K(ret), K(enable_spf_batch_rescan_));
} else if (OB_FAIL(databuff_printf(buf, buf_len, pos, } else if (OB_FAIL(databuff_printf(buf, buf_len, pos,
"%d", enable_var_assign_use_das_))) { "%d", enable_var_assign_use_das_))) {
SQL_PC_LOG(WARN, "failed to databuff_printf", K(ret), K(enable_var_assign_use_das_)); SQL_PC_LOG(WARN, "failed to databuff_printf", K(ret), K(enable_var_assign_use_das_));

View File

@ -1004,6 +1004,7 @@ public:
px_join_skew_minfreq_(30), px_join_skew_minfreq_(30),
min_cluster_version_(0), min_cluster_version_(0),
is_enable_px_fast_reclaim_(false), is_enable_px_fast_reclaim_(false),
enable_spf_batch_rescan_(false),
enable_var_assign_use_das_(false), enable_var_assign_use_das_(false),
cluster_config_version_(-1), cluster_config_version_(-1),
tenant_config_version_(-1), tenant_config_version_(-1),
@ -1046,6 +1047,7 @@ public:
int8_t px_join_skew_minfreq_; int8_t px_join_skew_minfreq_;
uint64_t min_cluster_version_; uint64_t min_cluster_version_;
bool is_enable_px_fast_reclaim_; bool is_enable_px_fast_reclaim_;
bool enable_spf_batch_rescan_;
bool enable_var_assign_use_das_; bool enable_var_assign_use_das_;
private: private:

View File

@ -48,3 +48,6 @@ alter system set_tp tp_no = 551, error_code = 5434, frequency = 1;
alter system set _enable_var_assign_use_das = true tenant = sys; alter system set _enable_var_assign_use_das = true tenant = sys;
alter system set _enable_var_assign_use_das = true tenant = all_user; alter system set _enable_var_assign_use_das = true tenant = all_user;
alter system set _enable_var_assign_use_das = true tenant = all_meta; alter system set _enable_var_assign_use_das = true tenant = all_meta;
alter system set _enable_spf_batch_rescan = true tenant = sys;
alter system set _enable_spf_batch_rescan = true tenant = all_user;
alter system set _enable_spf_batch_rescan = true tenant = all_meta;

View File

@ -302,6 +302,7 @@ _enable_range_extraction_for_not_in
_enable_reserved_user_dcl_restriction _enable_reserved_user_dcl_restriction
_enable_resource_limit_spec _enable_resource_limit_spec
_enable_skip_index _enable_skip_index
_enable_spf_batch_rescan
_enable_system_tenant_memory_limit _enable_system_tenant_memory_limit
_enable_tenant_sql_net_thread _enable_tenant_sql_net_thread
_enable_trace_session_leak _enable_trace_session_leak