fix old query range bug with row expr
This commit is contained in:
@ -4428,6 +4428,20 @@ int ObQueryRange::set_partial_row_border(
|
|||||||
} else if (OB_ISNULL(new_key_part) || OB_UNLIKELY(!new_key_part->is_normal_key())) {
|
} else if (OB_ISNULL(new_key_part) || OB_UNLIKELY(!new_key_part->is_normal_key())) {
|
||||||
ret = OB_ERR_UNEXPECTED;
|
ret = OB_ERR_UNEXPECTED;
|
||||||
LOG_WARN("new_key_part is null.");
|
LOG_WARN("new_key_part is null.");
|
||||||
|
} else if (((ObQueryRange::OB_FROM_LEFT == start_border_type || ObQueryRange::OB_FROM_LEFT == end_border_type) && l_cur->is_in_key()) ||
|
||||||
|
((ObQueryRange::OB_FROM_RIGHT == start_border_type || ObQueryRange::OB_FROM_RIGHT == end_border_type) && r_cur->is_in_key())) {
|
||||||
|
if (start_border_type != end_border_type) {
|
||||||
|
// in key must from one side
|
||||||
|
b_flag = true;
|
||||||
|
} else if (ObQueryRange::OB_FROM_LEFT == start_border_type) {
|
||||||
|
if (OB_FAIL(new_key_part->deep_node_copy(*l_cur))) {
|
||||||
|
LOG_WARN("Copy key part node failed", K(ret));
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (OB_FAIL(new_key_part->deep_node_copy(*r_cur))) {
|
||||||
|
LOG_WARN("Copy key part node failed", K(ret));
|
||||||
|
}
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
new_key_part->normal_keypart_->always_true_ = false;
|
new_key_part->normal_keypart_->always_true_ = false;
|
||||||
if (ObQueryRange::OB_FROM_LEFT == start_border_type && l_cur) {
|
if (ObQueryRange::OB_FROM_LEFT == start_border_type && l_cur) {
|
||||||
|
|||||||
Reference in New Issue
Block a user