fix const_name function error checking
This commit is contained in:
@ -5817,7 +5817,7 @@ int ObRawExprResolverImpl::process_fun_sys_node(const ParseNode *node, ObRawExpr
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (OB_SUCC(ret)) {
|
if (OB_SUCC(ret)) {
|
||||||
if (OB_FAIL(process_sys_func_params(*func_expr))) {
|
if (OB_FAIL(process_sys_func_params(*func_expr, current_columns_count))) {
|
||||||
LOG_WARN("fail process sys func params", K(ret));
|
LOG_WARN("fail process sys func params", K(ret));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -5867,12 +5867,19 @@ int ObRawExprResolverImpl::process_fun_sys_node(const ParseNode *node, ObRawExpr
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
int ObRawExprResolverImpl::process_sys_func_params(ObSysFunRawExpr &func_expr)
|
int ObRawExprResolverImpl::process_sys_func_params(ObSysFunRawExpr &func_expr, int current_columns_count)
|
||||||
{
|
{
|
||||||
int ret = OB_SUCCESS;
|
int ret = OB_SUCCESS;
|
||||||
const ObExprOperatorType expr_type = ObExprOperatorFactory::get_type_by_name(func_expr.get_func_name());
|
const ObExprOperatorType expr_type = ObExprOperatorFactory::get_type_by_name(func_expr.get_func_name());
|
||||||
switch (expr_type)
|
switch (expr_type)
|
||||||
{
|
{
|
||||||
|
case T_FUN_SYS_NAME_CONST:
|
||||||
|
if (current_columns_count != ctx_.columns_->count()) {
|
||||||
|
ret = OB_INVALID_ARGUMENT;
|
||||||
|
LOG_USER_ERROR(OB_INVALID_ARGUMENT, N_NAME_CONST);
|
||||||
|
LOG_WARN("params of name_const contain column references", K(ret));
|
||||||
|
}
|
||||||
|
break;
|
||||||
case T_FUN_SYS_UUID2BIN:
|
case T_FUN_SYS_UUID2BIN:
|
||||||
case T_FUN_SYS_BIN2UUID:
|
case T_FUN_SYS_BIN2UUID:
|
||||||
if (2 == func_expr.get_param_count()) {
|
if (2 == func_expr.get_param_count()) {
|
||||||
|
|||||||
@ -202,7 +202,7 @@ private:
|
|||||||
const ParseNode *expr_node,
|
const ParseNode *expr_node,
|
||||||
ObRawExpr *&expr);
|
ObRawExpr *&expr);
|
||||||
private:
|
private:
|
||||||
int process_sys_func_params(ObSysFunRawExpr &func_expr);
|
int process_sys_func_params(ObSysFunRawExpr &func_expr, int current_columns_count);
|
||||||
int transform_ratio_afun_to_arg_div_sum(const ParseNode *ratio_to_report, ParseNode *&div);
|
int transform_ratio_afun_to_arg_div_sum(const ParseNode *ratio_to_report, ParseNode *&div);
|
||||||
int convert_any_or_all_expr(ObRawExpr *&expr, bool &happened);
|
int convert_any_or_all_expr(ObRawExpr *&expr, bool &happened);
|
||||||
int get_opposite_string(const common::ObString &orig_string, common::ObString &new_string, common::ObIAllocator &allocator);
|
int get_opposite_string(const common::ObString &orig_string, common::ObString &new_string, common::ObIAllocator &allocator);
|
||||||
|
|||||||
Reference in New Issue
Block a user