This commit is contained in:
chenhuiming
2023-03-27 12:01:00 +08:00
parent 28c53b41af
commit d624f1b3f2
3 changed files with 8 additions and 8 deletions

View File

@ -87,7 +87,7 @@ enum ObExprInfoFlag
IS_JOIN_COND, // column = column of different tables IS_JOIN_COND, // column = column of different tables
IS_COLUMNLIZED, // for code generator, @see ObExprGenerator IS_COLUMNLIZED, // for code generator, @see ObExprGenerator
IS_ROOT, //for code generator, @see ObExprGenerator IS_ROOT, //for code generator, @see ObExprGenerator
IS_DYNAMIC_PARAM, //for opt to distinguish normal paramaterized const and exec-params IS_DYNAMIC_PARAM, //for opt to distinguish normal parameterized const and exec-params
IS_NEW_AGG_EXPR, IS_NEW_AGG_EXPR,
IS_WITH_ALL, IS_WITH_ALL,
IS_WITH_ANY, IS_WITH_ANY,
@ -167,5 +167,5 @@ inline const char* get_expr_info_flag_str(const ObExprInfoFlag flag)
return ret; return ret;
} }
} // namespace sql } // namespace sql
} // namespace oceabase } // namespace oceanbase
#endif /* OCEANBASE_SRC_SQL_RESOLVER_EXPR_OB_EXPR_INFO_FLAG_H_ */ #endif /* OCEANBASE_SRC_SQL_RESOLVER_EXPR_OB_EXPR_INFO_FLAG_H_ */

View File

@ -240,7 +240,7 @@ int ObRawExprDeduceType::calc_result_type_with_const_arg(
/* Most expressions not accept lob type parameters. It reports an error in two situations before: /* Most expressions not accept lob type parameters. It reports an error in two situations before:
* 1. report an error in calc_result_type function of expression; * 1. report an error in calc_result_type function of expression;
* 2. cast lob to calc_type not suppoted/expected. * 2. cast lob to calc_type not supported/expected.
* Only a few expressions deal with lob type parameters in calc_result_type, so most errors caused by 2. * Only a few expressions deal with lob type parameters in calc_result_type, so most errors caused by 2.
* However, this makes some problems: * However, this makes some problems:
* For example, cast lob to number is not supported before, and this results that nvl(lob, number) * For example, cast lob to number is not supported before, and this results that nvl(lob, number)
@ -2831,7 +2831,7 @@ int ObRawExprDeduceType::set_agg_udf_result_type(ObAggFunRawExpr &expr)
int ret = OB_SUCCESS; int ret = OB_SUCCESS;
ObIArray<ObRawExpr*> &param_exprs = expr.get_real_param_exprs_for_update(); ObIArray<ObRawExpr*> &param_exprs = expr.get_real_param_exprs_for_update();
common::ObSEArray<common::ObString, 16> udf_attributes; /* udf's input args' name */ common::ObSEArray<common::ObString, 16> udf_attributes; /* udf's input args' name */
common::ObSEArray<ObExprResType, 16> udf_attributes_types; /* udf's aatribute type */ common::ObSEArray<ObExprResType, 16> udf_attributes_types; /* udf's attribute type */
common::ObSEArray<ObUdfConstArgs, 16> const_results; /* const input expr' result */ common::ObSEArray<ObUdfConstArgs, 16> const_results; /* const input expr' result */
ObAggUdfFunction udf_func; ObAggUdfFunction udf_func;
const share::schema::ObUDFMeta &udf_meta = expr.get_udf_meta(); const share::schema::ObUDFMeta &udf_meta = expr.get_udf_meta();
@ -3295,7 +3295,7 @@ int ObRawExprDeduceType::add_implicit_cast(ObAggFunRawExpr &parent,
ObRawExpr *&child_ptr = real_param_exprs.at(i); ObRawExpr *&child_ptr = real_param_exprs.at(i);
if (skip_cast_expr(parent, i)) { if (skip_cast_expr(parent, i)) {
// do nothing // do nothing
//兼容oralce行为,regr_sxx和regr_syy只需在计算的参数加cast,regr_sxy行为和regr_syy一致,比较诡异,暂时兼容 //兼容oracle行为,regr_sxx和regr_syy只需在计算的参数加cast,regr_sxy行为和regr_syy一致,比较诡异,暂时兼容
} else if ((parent.get_expr_type() == T_FUN_REGR_SXX && i == 0) || } else if ((parent.get_expr_type() == T_FUN_REGR_SXX && i == 0) ||
(parent.get_expr_type() == T_FUN_REGR_SYY && i == 1) || (parent.get_expr_type() == T_FUN_REGR_SYY && i == 1) ||
(parent.get_expr_type() == T_FUN_REGR_SXY && i == 1) || (parent.get_expr_type() == T_FUN_REGR_SXY && i == 1) ||

View File

@ -895,7 +895,7 @@ int ObRawExprUtils::resolve_udf_param_exprs(ObResolverParams &params,
// 通过名字指定参数统一记录在param_names_和param_exprs里面, 所以这里一定相等 // 通过名字指定参数统一记录在param_names_和param_exprs里面, 所以这里一定相等
if (udf_info.param_names_.count() != udf_info.param_exprs_.count()) { if (udf_info.param_names_.count() != udf_info.param_exprs_.count()) {
ret = OB_ERR_UNEXPECTED; ret = OB_ERR_UNEXPECTED;
SQL_LOG(WARN, "names array not equle to exprs array count", SQL_LOG(WARN, "names array not equal to exprs array count",
K(ret), K(udf_info.param_names_.count()), K(udf_info.param_exprs_.count())); K(ret), K(udf_info.param_names_.count()), K(udf_info.param_exprs_.count()));
} else if ((udf_info.udf_param_num_ + udf_info.param_names_.count()) > func_info->get_param_count()) { } else if ((udf_info.udf_param_num_ + udf_info.param_names_.count()) > func_info->get_param_count()) {
ret = OB_ERR_SP_WRONG_ARG_NUM; ret = OB_ERR_SP_WRONG_ARG_NUM;
@ -1701,7 +1701,7 @@ int ObRawExprUtils::build_seq_nextval_expr(ObRawExpr *&expr,
} else if (OB_FAIL(func_expr->add_flag(IS_SEQ_EXPR))) { } else if (OB_FAIL(func_expr->add_flag(IS_SEQ_EXPR))) {
LOG_WARN("failed to add flag", K(ret)); LOG_WARN("failed to add flag", K(ret));
} else if (OB_FAIL(func_expr->add_param_expr(col_id_expr))) { } else if (OB_FAIL(func_expr->add_param_expr(col_id_expr))) {
LOG_WARN("set funcation param expr failed", K(ret)); LOG_WARN("set function param expr failed", K(ret));
} else if (OB_FAIL(func_expr->formalize(session_info))) { } else if (OB_FAIL(func_expr->formalize(session_info))) {
LOG_WARN("failed to extract info", K(ret)); LOG_WARN("failed to extract info", K(ret));
} else if (NULL != stmt && OB_FAIL(stmt->get_pseudo_column_like_exprs().push_back(func_expr))) { } else if (NULL != stmt && OB_FAIL(stmt->get_pseudo_column_like_exprs().push_back(func_expr))) {
@ -7123,7 +7123,7 @@ int ObRawExprUtils::build_dup_data_expr(ObRawExprFactory &factory,
if (OB_SUCC(ret)) { if (OB_SUCC(ret)) {
if (OB_ISNULL(name = (char *)factory.get_allocator().alloc(pos + 2))) { if (OB_ISNULL(name = (char *)factory.get_allocator().alloc(pos + 2))) {
ret = OB_ALLOCATE_MEMORY_FAILED; ret = OB_ALLOCATE_MEMORY_FAILED;
LOG_WARN("falied to allocate memory", K(ret)); LOG_WARN("failed to allocate memory", K(ret));
} else { } else {
memcpy(name, name_buf, pos); memcpy(name, name_buf, pos);
name[pos] = ')'; name[pos] = ')';