Fix a dblink bug

This commit is contained in:
xianyu-w
2023-02-09 16:41:40 +00:00
committed by ob-robot
parent ddca0b032d
commit 229da88e8f
2 changed files with 25 additions and 3 deletions

View File

@ -768,8 +768,23 @@ int ObSelectStmtPrinter::print_order_by()
const OrderItem &order_item = select_stmt->get_order_item(i);
ObRawExpr *order_expr = order_item.expr_;
int64_t sel_item_pos = -1;
for (int64_t j = 0; j < select_stmt->get_select_item_size(); ++j) {
if (order_item.expr_ == select_stmt->get_select_item(j).expr_) {
if (OB_ISNULL(order_expr)) {
ret = OB_ERR_UNEXPECTED;
LOG_WARN("unexpected null", K(ret));
} else if (T_FUN_SYS_CAST == order_expr->get_expr_type() &&
CM_IS_IMPLICIT_CAST(order_expr->get_extra())) {
order_expr = order_expr->get_param_expr(0);
}
for (int64_t j = 0; OB_SUCC(ret) && j < select_stmt->get_select_item_size(); ++j) {
ObRawExpr *select_expr = select_stmt->get_select_item(j).expr_;
if (OB_ISNULL(select_expr)) {
ret = OB_ERR_UNEXPECTED;
LOG_WARN("unexpected null", K(ret));
} else if (T_FUN_SYS_CAST == select_expr->get_expr_type() &&
CM_IS_IMPLICIT_CAST(select_expr->get_extra())) {
select_expr = select_expr->get_param_expr(0);
}
if (order_expr == select_expr) {
sel_item_pos = j + 1;
break;
}