[CP]sync bugfix from 42x. fix:json compare with const string, behavior not consistent with mysql
This commit is contained in:
		| @ -3589,6 +3589,13 @@ int ObRawExprDeduceType::try_add_cast_expr(RawExprType &parent, | ||||
|         ret = OB_ERR_INVALID_TYPE_FOR_OP; | ||||
|         LOG_WARN("cast to lob type not allowed", K(ret)); | ||||
|       } | ||||
|  | ||||
|       // for consistent with mysql, if const cast as json, should regard as scalar, don't need parse | ||||
|       if (ObStringTC == ori_tc && ObJsonTC == expect_tc | ||||
|           && IS_BASIC_CMP_OP(parent.get_expr_type())) { | ||||
|         uint64_t extra = new_expr->get_extra(); | ||||
|         new_expr->set_extra(CM_SET_SQL_AS_JSON_SCALAR(extra)); | ||||
|       } | ||||
|       OZ(parent.replace_param_expr(child_idx, new_expr)); | ||||
|       if (OB_FAIL(ret) && my_session_->is_varparams_sql_prepare()) { | ||||
|         ret = OB_SUCCESS; | ||||
|  | ||||
		Reference in New Issue
	
	Block a user
	 obdev
					obdev