clear the eval flag of T_OP_ROW expr's child exprs

This commit is contained in:
obdev
2023-11-14 12:44:59 +00:00
committed by ob-robot
parent efbd4ccfce
commit 0ad4149411

View File

@ -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.
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();
for (int64_t i = 0; i < expr.arg_cnt_; i++) {
clear_expr_eval_flags(*expr.args_[i], ctx);