fix bug: thread count in compile and execute time not consistent

This commit is contained in:
obdev
2023-09-21 02:47:53 +00:00
committed by ob-robot
parent 550c8ffaaf
commit 062982af03
9 changed files with 206 additions and 28 deletions

View File

@ -518,6 +518,8 @@ int ObDfoMgr::do_split(ObExecContext &exec_ctx,
gi_spec->bf_info_.p2p_dh_id_,
node))) {
LOG_WARN("fail to set p2p dh id to map", K(ret));
} else if (OB_FAIL(px_coord_info.rf_dpd_info_.rf_use_ops_.push_back(phy_op))) {
LOG_WARN("failed to push back parition filter gi op");
} else {
parent_dfo->set_need_p2p_info(true);
}

View File

@ -482,7 +482,7 @@ OB_DEF_SERIALIZE_SIZE(ObPxBloomFilter)
int ObPxBFStaticInfo::init(int64_t tenant_id, int64_t filter_id,
int64_t server_id, bool is_shared,
bool skip_subpart, int64_t p2p_dh_id,
bool is_shuffle)
bool is_shuffle, ObLogJoinFilter *log_join_filter_create_op)
{
int ret = OB_SUCCESS;
if (is_inited_){
@ -496,6 +496,7 @@ int ObPxBFStaticInfo::init(int64_t tenant_id, int64_t filter_id,
skip_subpart_ = skip_subpart;
p2p_dh_id_ = p2p_dh_id;
is_shuffle_ = is_shuffle;
log_join_filter_create_op_ = log_join_filter_create_op;
is_inited_ = true;
}
return ret;

View File

@ -130,6 +130,8 @@ public:
DISALLOW_COPY_AND_ASSIGN(ObPxBloomFilter);
};
class ObLogJoinFilter;
struct ObPxBFStaticInfo
{
OB_UNIS_VERSION(1);
@ -138,12 +140,12 @@ public:
: is_inited_(false), tenant_id_(common::OB_INVALID_TENANT_ID),
filter_id_(common::OB_INVALID_ID), server_id_(common::OB_INVALID_ID),
is_shared_(false), skip_subpart_(false),
p2p_dh_id_(OB_INVALID_ID), is_shuffle_(false)
p2p_dh_id_(OB_INVALID_ID), is_shuffle_(false), log_join_filter_create_op_(nullptr)
{}
int init(int64_t tenant_id, int64_t filter_id,
int64_t server_id, bool is_shared,
bool skip_subpart, int64_t p2p_dh_id,
bool is_shuffle);
bool is_shuffle, ObLogJoinFilter *log_join_filter_create_op);
bool is_inited_;
int64_t tenant_id_;
int64_t filter_id_;
@ -155,6 +157,7 @@ public:
TO_STRING_KV(K(is_inited_), K(tenant_id_), K(filter_id_),
K(server_id_), K(is_shared_), K(skip_subpart_),
K(is_shuffle_), K(p2p_dh_id_));
ObLogJoinFilter *log_join_filter_create_op_; // not need to serialize, only used in optimizor
};
class ObPXBloomFilterHashWrapper

View File

@ -727,11 +727,20 @@ int RuntimeFilterDependencyInfo::describe_dependency(ObDfo *root_dfo)
for (int64_t i = 0; i < rf_create_ops_.count() && OB_SUCC(ret); ++i) {
const ObJoinFilterSpec *create_op = static_cast<const ObJoinFilterSpec *>(rf_create_ops_.at(i));
for (int64_t j = 0; j < rf_use_ops_.count() && OB_SUCC(ret); ++j) {
const ObJoinFilterSpec *use_op = static_cast<const ObJoinFilterSpec *>(rf_use_ops_.at(j));
if (create_op->get_filter_id() == use_op->get_filter_id()) {
int64_t use_filter_id = common::OB_INVALID_ID;
if (IS_PX_GI(rf_use_ops_.at(j)->get_type())) {
const ObGranuleIteratorSpec *use_op =
static_cast<const ObGranuleIteratorSpec *>(rf_use_ops_.at(j));
use_filter_id = use_op->bf_info_.filter_id_;
} else {
const ObJoinFilterSpec *use_op = static_cast<const ObJoinFilterSpec *>(rf_use_ops_.at(j));
use_filter_id = use_op->get_filter_id();
}
if (create_op->get_filter_id() == use_filter_id) {
const ObOpSpec *ancestor_op = nullptr;
ObDfo *op_dfo = nullptr;;
if (OB_FAIL(LowestCommonAncestorFinder::find_op_common_ancestor(create_op, use_op, ancestor_op))) {
if (OB_FAIL(LowestCommonAncestorFinder::find_op_common_ancestor(
create_op, rf_use_ops_.at(j), ancestor_op))) {
LOG_WARN("failed to find op common ancestor");
} else if (OB_ISNULL(ancestor_op)) {
ret = OB_ERR_UNEXPECTED;