[FEAT MERGE]4.2 PX Feature

This commit is contained in:
qianchanger
2023-04-30 04:41:31 +00:00
committed by ob-robot
parent 09ed904b58
commit 3ae36f5774
134 changed files with 10295 additions and 1480 deletions

View File

@ -21,6 +21,14 @@ using namespace oceanbase::common;
using namespace oceanbase::sql;
using namespace oceanbase::sql::dtl;
OB_SERIALIZE_MEMBER(ObPxDetectableIds,
qc_detectable_id_,
sqc_detectable_id_);
OB_SERIALIZE_MEMBER(ObP2PDhMapInfo,
p2p_sequence_ids_,
target_addrs_);
OB_SERIALIZE_MEMBER(ObPxSqcMeta,
execution_id_,
qc_id_,
@ -52,7 +60,10 @@ OB_SERIALIZE_MEMBER(ObPxSqcMeta,
access_table_location_keys_,
adjoining_root_dfo_,
is_single_tsc_leaf_dfo_,
access_external_table_files_);
access_external_table_files_,
px_detectable_ids_,
p2p_dh_map_info_,
sqc_count_);
OB_SERIALIZE_MEMBER(ObPxTask,
qc_id_,
dfo_id_,
@ -108,6 +119,8 @@ int ObPxSqcMeta::assign(const ObPxSqcMeta &other)
LOG_WARN("failed to assgin to table location keys.", K(ret));
} else if (OB_FAIL(access_table_location_indexes_.assign(other.access_table_location_indexes_))) {
LOG_WARN("failed to assgin to table location keys.", K(ret));
} else if (OB_FAIL(p2p_dh_map_info_.assign(other.p2p_dh_map_info_))) {
LOG_WARN("fail to assign p2p dh map info", K(ret));
} else {
execution_id_ = other.execution_id_;
qc_id_ = other.qc_id_;
@ -138,6 +151,9 @@ int ObPxSqcMeta::assign(const ObPxSqcMeta &other)
server_not_alive_ = other.server_not_alive_;
adjoining_root_dfo_ = other.adjoining_root_dfo_;
is_single_tsc_leaf_dfo_ = other.is_single_tsc_leaf_dfo_;
px_detectable_ids_ = other.px_detectable_ids_;
interrupt_by_dm_ = other.interrupt_by_dm_;
sqc_count_ = other.sqc_count_;
}
access_external_table_files_.reuse();
for (int i = 0; OB_SUCC(ret) && i < other.access_external_table_files_.count(); i++) {
@ -372,40 +388,6 @@ int ObDfo::alloc_data_xchg_ch()
}
return ret;
}
int ObDfo::alloc_bloom_filter_ch()
{
int ret = OB_SUCCESS;
if (is_px_create_bloom_filter()) {
} else if (is_px_use_bloom_filter()) {
use_filter_ch_map_.set_filter_id(px_bf_id_);
}
return ret;
}
int ObDfo::condition_push_back(ObPxBloomFilterChSet &ch_set, ObPxBloomFilterChSets &ch_sets)
{
int ret = OB_SUCCESS;
bool repeat = false;
for (int i = 0;i < ch_sets.count(); ++i) {
if (ch_set.get_exec_addr() == ch_sets.at(i).get_exec_addr()) {
repeat = true;
break;
}
}
if (!repeat && OB_FAIL(ch_sets.push_back(ch_set))) {
LOG_WARN("fail to push back ch_set", K(ret));
}
return ret;
}
int ObDfo::get_use_filter_chs(ObPxBloomFilterChInfo &create_filter_ch_map)
{
int ret = OB_SUCCESS;
ret = create_filter_ch_map.assign(use_filter_ch_map_);
return ret;
}
int ObDfo::get_task_transmit_chs_for_update(ObIArray<ObPxTaskChSet *> &ch_sets)
{
@ -1002,6 +984,7 @@ void ObDfo::reset_resource(ObDfo *dfo)
}
}
dfo->transmit_ch_sets_.reset();
dfo->p2p_dh_map_info_.destroy();
dfo->~ObDfo();
dfo = nullptr;
}
@ -1023,4 +1006,4 @@ const ObPhysicalPlan* ObDfo::get_plan_by_root()
plan = root_op_spec_->get_phy_plan();
}
return plan;
}
}