From 0feea46b52f39a87713772dfaad4e147a1b6ecb5 Mon Sep 17 00:00:00 2001 From: obdev Date: Thu, 3 Nov 2022 08:37:05 +0000 Subject: [PATCH] [CP] [to #45843079] fix serval bugs found by external customers --- src/observer/mysql/obmp_stmt_execute.cpp | 6 +++++- src/pl/ob_pl_resolver.cpp | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/observer/mysql/obmp_stmt_execute.cpp b/src/observer/mysql/obmp_stmt_execute.cpp index 4fc516fde3..915b7ee26d 100644 --- a/src/observer/mysql/obmp_stmt_execute.cpp +++ b/src/observer/mysql/obmp_stmt_execute.cpp @@ -2171,7 +2171,11 @@ int ObMPStmtExecute::parse_basic_param_value(ObIAllocator &allocator, if (is_oracle_mode() && !is_complex_element) { param.set_char(dst); } else { - param.set_varchar(dst); + if (is_complex_element && dst.length()== 0) { + param.set_null(); + } else { + param.set_varchar(dst); + } } } } diff --git a/src/pl/ob_pl_resolver.cpp b/src/pl/ob_pl_resolver.cpp index 0ae3634553..52771e8b12 100644 --- a/src/pl/ob_pl_resolver.cpp +++ b/src/pl/ob_pl_resolver.cpp @@ -7136,7 +7136,7 @@ int ObPLResolver::add_pl_integer_checker_expr(ObRawExprFactory &expr_factory, if (OB_SUCC(ret)) { // 对于溢出的检查只关心双目运算符的计算 if (2 == expr->get_param_count() && !IS_COMMON_COMPARISON_OP(expr->get_expr_type()) - && !LOGIC_EXPR(expr) && CHECK_RES_TYPE(expr)) { + && !LOGIC_EXPR(expr) && expr->get_expr_type() != T_FUN_SYS_POWER && CHECK_RES_TYPE(expr)) { const ObRawExpr *left = ObRawExprUtils::skip_implicit_cast(expr->get_param_expr(0)); const ObRawExpr *right = ObRawExprUtils::skip_implicit_cast(expr->get_param_expr(1)); ObPLIntegerType left_pl_integer = PL_INTEGER_INVALID, right_pl_integer = PL_INTEGER_INVALID; -- GitLab