fix query range bug when union in node with other node

This commit is contained in:
obdev 2023-09-08 12:48:16 +08:00 committed by ob-robot
parent a444ff20ea
commit af229ed04b

View File

@ -5360,7 +5360,8 @@ int ObQueryRange::or_single_head_graphs(ObKeyPartList &or_list,
query_range_ctx_->cur_expr_is_precise_ = false;
}
}
if (OB_SUCC(ret) && !cur1->is_question_mark() && !cur2->is_question_mark()) {
if (OB_SUCC(ret) && !cur1->is_question_mark() && !cur2->is_question_mark() &&
cur1->item_next_ == NULL && cur2->item_next_ == NULL) {
if (OB_FAIL(union_in_with_in(or_list,
cur1, cur2,
exec_ctx,
@ -5383,7 +5384,8 @@ int ObQueryRange::or_single_head_graphs(ObKeyPartList &or_list,
}
}
bool need_remove_normal = false;
if (OB_SUCC(ret) && !cur1->is_question_mark() && !cur2->is_question_mark()) {
if (OB_SUCC(ret) && !cur1->is_question_mark() && !cur2->is_question_mark() &&
cur1->item_next_ == NULL && cur2->item_next_ == NULL) {
if (OB_FAIL(union_in_with_normal(cur1, cur2,
exec_ctx,
dtc_params,
@ -5409,7 +5411,8 @@ int ObQueryRange::or_single_head_graphs(ObKeyPartList &or_list,
query_range_ctx_->cur_expr_is_precise_ = false;
}
}
if (OB_SUCC(ret) && !cur1->is_question_mark() && !cur2->is_question_mark()) {
if (OB_SUCC(ret) && !cur1->is_question_mark() && !cur2->is_question_mark() &&
cur1->item_next_ == NULL && cur2->item_next_ == NULL) {
if (OB_FAIL(union_in_with_normal(cur2, cur1,
exec_ctx,
dtc_params,
@ -8273,7 +8276,7 @@ int ObQueryRange::is_strict_equal_graph(
} else { // check align
if (-1 == max_pos) {
max_pos = next_pos - 1;
} else if (cur_pos != max_pos) {
} else if (next_pos - 1 != max_pos) {
is_strict_equal = false;
}
}