fix partition filter GI report 4201 bug

This commit is contained in:
sdc
2023-08-01 15:54:45 +00:00
committed by ob-robot
parent 2cf93b6336
commit e77e3c4c76
3 changed files with 13 additions and 13 deletions

View File

@ -2665,8 +2665,8 @@ int ObStaticEngineCG::generate_spec(ObLogGranuleIterator &op, ObGranuleIteratorS
if (log_op_def::LOG_TABLE_SCAN == child_log_op->get_type()) { if (log_op_def::LOG_TABLE_SCAN == child_log_op->get_type()) {
ObLogTableScan *log_tsc = NULL; ObLogTableScan *log_tsc = NULL;
log_tsc = static_cast<ObLogTableScan*>(child_log_op); log_tsc = static_cast<ObLogTableScan*>(child_log_op);
//这里拿ref_table_id的行为是为了和table scan拿partition service的行为一致 //这里拿index_table_id和table_scan->get_loc_ref_table_id保持一致
spec.set_related_id(log_tsc->get_ref_table_id()); spec.set_related_id(log_tsc->get_index_table_id());
} }
ObPhyPlanType execute_type = spec.plan_->get_plan_type(); ObPhyPlanType execute_type = spec.plan_->get_plan_type();
if (execute_type == OB_PHY_PLAN_LOCAL) { if (execute_type == OB_PHY_PLAN_LOCAL) {

View File

@ -128,7 +128,7 @@ OB_DEF_SERIALIZE_SIZE(ObGIOpInput)
} }
OB_SERIALIZE_MEMBER((ObGranuleIteratorSpec, ObOpSpec), OB_SERIALIZE_MEMBER((ObGranuleIteratorSpec, ObOpSpec),
ref_table_id_, index_table_id_,
tablet_size_, tablet_size_,
affinitize_, affinitize_,
partition_wise_join_, partition_wise_join_,
@ -143,7 +143,7 @@ OB_SERIALIZE_MEMBER((ObGranuleIteratorSpec, ObOpSpec),
ObGranuleIteratorSpec::ObGranuleIteratorSpec(ObIAllocator &alloc, const ObPhyOperatorType type) ObGranuleIteratorSpec::ObGranuleIteratorSpec(ObIAllocator &alloc, const ObPhyOperatorType type)
: ObOpSpec(alloc, type), : ObOpSpec(alloc, type),
ref_table_id_(OB_INVALID_ID), index_table_id_(OB_INVALID_ID),
tablet_size_(common::OB_DEFAULT_TABLET_SIZE), tablet_size_(common::OB_DEFAULT_TABLET_SIZE),
affinitize_(false), affinitize_(false),
partition_wise_join_(false), partition_wise_join_(false),
@ -480,7 +480,7 @@ int ObGranuleIteratorOp::try_get_rows(const int64_t max_row_cnt)
if (!is_vectorized()) { if (!is_vectorized()) {
if (OB_FAIL(child_->get_next_row())) { if (OB_FAIL(child_->get_next_row())) {
LOG_DEBUG("failed to get new row", K(ret), LOG_DEBUG("failed to get new row", K(ret),
K(MY_SPEC.affinitize_), K(MY_SPEC.ref_table_id_), K(worker_id_)); K(MY_SPEC.affinitize_), K(MY_SPEC.index_table_id_), K(worker_id_));
if (OB_ITER_END != ret) { if (OB_ITER_END != ret) {
LOG_WARN("try fetch task failed", K(ret)); LOG_WARN("try fetch task failed", K(ret));
} else { } else {
@ -489,7 +489,7 @@ int ObGranuleIteratorOp::try_get_rows(const int64_t max_row_cnt)
} }
} else { } else {
LOG_DEBUG("get new row", K(ret), LOG_DEBUG("get new row", K(ret),
K(MY_SPEC.affinitize_), K(MY_SPEC.ref_table_id_), K(worker_id_)); K(MY_SPEC.affinitize_), K(MY_SPEC.index_table_id_), K(worker_id_));
got_next_row = true; got_next_row = true;
} }
} else { } else {
@ -1030,7 +1030,7 @@ int ObGranuleIteratorOp::fetch_normal_pw_task_infos(const common::ObIArray<int64
int ObGranuleIteratorOp::try_build_tablet2part_id_map() int ObGranuleIteratorOp::try_build_tablet2part_id_map()
{ {
int ret = OB_SUCCESS; int ret = OB_SUCCESS;
if (OB_INVALID_ID == MY_SPEC.ref_table_id_) { if (OB_INVALID_ID == MY_SPEC.index_table_id_) {
ret = OB_ERR_UNEXPECTED; ret = OB_ERR_UNEXPECTED;
LOG_WARN("loc is unexpected", K(ret)); LOG_WARN("loc is unexpected", K(ret));
} else if (tablet2part_id_map_.created()) { } else if (tablet2part_id_map_.created()) {
@ -1040,13 +1040,13 @@ int ObGranuleIteratorOp::try_build_tablet2part_id_map()
LOG_WARN("get unexpected null", K(ret), K(ctx_)); LOG_WARN("get unexpected null", K(ret), K(ctx_));
} else { } else {
const ObTableSchema *table_schema = NULL; const ObTableSchema *table_schema = NULL;
int64_t ref_table_id = MY_SPEC.ref_table_id_; int64_t index_table_id = MY_SPEC.index_table_id_;
if (OB_FAIL(ctx_.get_sql_ctx()->schema_guard_->get_table_schema( if (OB_FAIL(ctx_.get_sql_ctx()->schema_guard_->get_table_schema(
MTL_ID(), ref_table_id, table_schema))) { MTL_ID(), index_table_id, table_schema))) {
LOG_WARN("fail to get table schema", K(ret)); LOG_WARN("fail to get table schema", K(ret));
} else if (OB_ISNULL(table_schema)) { } else if (OB_ISNULL(table_schema)) {
ret = OB_SCHEMA_ERROR; ret = OB_SCHEMA_ERROR;
LOG_WARN("null table schema", K(MTL_ID()), K(ref_table_id)); LOG_WARN("null table schema", K(MTL_ID()), K(index_table_id));
} else if (PARTITION_LEVEL_TWO != table_schema->get_part_level()) { } else if (PARTITION_LEVEL_TWO != table_schema->get_part_level()) {
ret = OB_ERR_UNEXPECTED; ret = OB_ERR_UNEXPECTED;
LOG_WARN("unexpected part level", K(ret)); LOG_WARN("unexpected part level", K(ret));

View File

@ -84,9 +84,9 @@ public:
~ObGranuleIteratorSpec() {} ~ObGranuleIteratorSpec() {}
INHERIT_TO_STRING_KV("op_spec", ObOpSpec, INHERIT_TO_STRING_KV("op_spec", ObOpSpec,
K_(ref_table_id), K_(tablet_size), K_(affinitize), K_(access_all)); K_(index_table_id), K_(tablet_size), K_(affinitize), K_(access_all));
void set_related_id(uint64_t ref_id) { ref_table_id_ = ref_id; } void set_related_id(uint64_t index_id) { index_table_id_ = index_id; }
void set_tablet_size(int64_t tablet_size) { tablet_size_ = tablet_size; } void set_tablet_size(int64_t tablet_size) { tablet_size_ = tablet_size; }
int64_t get_tablet_size() { return tablet_size_; } int64_t get_tablet_size() { return tablet_size_; }
@ -104,7 +104,7 @@ public:
// 目前同时保留了这两个结构,4.2上可以直接删除pw_op_tscs_和所有引用到的地方 // 目前同时保留了这两个结构,4.2上可以直接删除pw_op_tscs_和所有引用到的地方
inline bool full_partition_wise() const { return partition_wise_join_ && (!affinitize_ || pw_op_tscs_.count() > 1 || pw_dml_tsc_ids_.count() > 1); } inline bool full_partition_wise() const { return partition_wise_join_ && (!affinitize_ || pw_op_tscs_.count() > 1 || pw_dml_tsc_ids_.count() > 1); }
public: public:
uint64_t ref_table_id_; uint64_t index_table_id_;
int64_t tablet_size_; int64_t tablet_size_;
// affinitize用于表示线程和任务是否有进行绑定。 // affinitize用于表示线程和任务是否有进行绑定。
bool affinitize_; bool affinitize_;