Fix expression precomputation does not handle ignore statement

This commit is contained in:
obdev
2023-03-27 14:18:05 +00:00
committed by ob-robot
parent 04efb2a763
commit 399b29e4ba

View File

@ -785,7 +785,7 @@ int eval_assign_question_mark_func(const ObExpr &expr, ObEvalCtx &ctx, ObDatum &
cast_mode = lib::is_oracle_mode() ? cast_mode = lib::is_oracle_mode() ?
(cast_mode | CM_CHARSET_CONVERT_IGNORE_ERR) : (cast_mode | CM_COLUMN_CONVERT); (cast_mode | CM_CHARSET_CONVERT_IGNORE_ERR) : (cast_mode | CM_COLUMN_CONVERT);
if (ctx.exec_ctx_.get_physical_plan_ctx()->is_ignore_stmt()) { if (ctx.exec_ctx_.get_physical_plan_ctx()->is_ignore_stmt()) {
cast_mode = cast_mode | CM_WARN_ON_FAIL; cast_mode = cast_mode | CM_WARN_ON_FAIL | CM_CHARSET_CONVERT_IGNORE_ERR;
} }
ObCastCtx cast_ctx(&allocator, &dtc_params, cast_mode, dst_meta.get_collation_type()); ObCastCtx cast_ctx(&allocator, &dtc_params, cast_mode, dst_meta.get_collation_type());
if (OB_FAIL(ObObjCaster::to_type(dst_meta.get_type(), cast_ctx, v, dst_obj))) { if (OB_FAIL(ObObjCaster::to_type(dst_meta.get_type(), cast_ctx, v, dst_obj))) {