clear the eval flag of T_OP_ROW expr's child exprs
This commit is contained in:
		| @ -511,7 +511,10 @@ int ObSQLUtils::calc_raw_expr_without_row( | |||||||
| // it a member function of ObExpr, otherwise it will be abused in SQL Engine. | // it a member function of ObExpr, otherwise it will be abused in SQL Engine. | ||||||
| void ObSQLUtils::clear_expr_eval_flags(const ObExpr &expr, ObEvalCtx &ctx) | void ObSQLUtils::clear_expr_eval_flags(const ObExpr &expr, ObEvalCtx &ctx) | ||||||
| { | { | ||||||
|   if (expr.eval_func_ != NULL) { |   if (expr.eval_func_ != NULL || T_OP_ROW == expr.type_) { | ||||||
|  |     // The eval_func_ of the T_OP_ROW expression is null, causing the issue where the evaluation | ||||||
|  |     // flag of the child expressions is not cleared. For more detail, see issue | ||||||
|  |     // | ||||||
|     expr.get_eval_info(ctx).clear_evaluated_flag(); |     expr.get_eval_info(ctx).clear_evaluated_flag(); | ||||||
|     for (int64_t i = 0; i < expr.arg_cnt_; i++) { |     for (int64_t i = 0; i < expr.arg_cnt_; i++) { | ||||||
|       clear_expr_eval_flags(*expr.args_[i], ctx); |       clear_expr_eval_flags(*expr.args_[i], ctx); | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user
	 obdev
					obdev