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_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)); | ||||
|           } | ||||
|         } | ||||
| @ -5867,12 +5867,19 @@ int ObRawExprResolverImpl::process_fun_sys_node(const ParseNode *node, ObRawExpr | ||||
|   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; | ||||
|   const ObExprOperatorType expr_type = ObExprOperatorFactory::get_type_by_name(func_expr.get_func_name()); | ||||
|   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_BIN2UUID: | ||||
|       if (2 == func_expr.get_param_count()) { | ||||
|  | ||||
| @ -202,7 +202,7 @@ private: | ||||
|                                  const ParseNode *expr_node, | ||||
|                                  ObRawExpr *&expr); | ||||
| 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 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); | ||||
|  | ||||
		Reference in New Issue
	
	Block a user
	 raywill
					raywill