Fix failed mysqltests

This commit is contained in:
2149
2023-06-02 06:42:01 +00:00
committed by ob-robot
parent 875f131512
commit 051b7be095
3 changed files with 16 additions and 19 deletions

View File

@ -28,7 +28,7 @@ namespace sql
//{}
ObExprCharset::ObExprCharset(ObIAllocator &alloc)
:ObStringExprOperator(alloc, T_FUN_SYS_CHARSET, N_CHARSET, 1, NOT_VALID_FOR_GENERATED_COL)
:ObStringExprOperator(alloc, T_FUN_SYS_CHARSET, N_CHARSET, 1, VALID_FOR_GENERATED_COL)
{}
ObExprCharset::~ObExprCharset()
@ -100,7 +100,7 @@ namespace sql
//{}
ObExprCollation::ObExprCollation(ObIAllocator &alloc)
:ObStringExprOperator(alloc, T_FUN_SYS_COLLATION, N_COLLATION, 1, NOT_VALID_FOR_GENERATED_COL)
:ObStringExprOperator(alloc, T_FUN_SYS_COLLATION, N_COLLATION, 1, VALID_FOR_GENERATED_COL)
{
need_charset_convert_ = false;
}
@ -175,7 +175,7 @@ ObExprCoercibility::ObExprCoercibility(ObIAllocator &alloc)
:ObExprOperator(alloc, T_FUN_SYS_COERCIBILITY,
N_COERCIBILITY,
1,
NOT_VALID_FOR_GENERATED_COL, NOT_ROW_DIMENSION)
VALID_FOR_GENERATED_COL, NOT_ROW_DIMENSION)
{
disable_operand_auto_cast();
}

View File

@ -2010,18 +2010,17 @@ int ObRawExprUtils::build_generated_column_expr(const obrpc::ObCreateIndexArg *a
if (OB_SUCC(ret)) {
OZ (expr->formalize(&session_info));
}
if (OB_SUCC(ret) &&
(ObResolverUtils::CHECK_FOR_FUNCTION_INDEX == check_status ||
ObResolverUtils::CHECK_FOR_GENERATED_COLUMN == check_status)) {
if (OB_FAIL(check_is_valid_generated_col(expr, expr_factory.get_allocator()))) {
if (OB_ERR_ONLY_PURE_FUNC_CANBE_VIRTUAL_COLUMN_EXPRESSION == ret
&& ObResolverUtils::CHECK_FOR_FUNCTION_INDEX == check_status) {
ret = OB_ERR_ONLY_PURE_FUNC_CANBE_INDEXED;
LOG_WARN("sysfunc in expr is not valid for generated column", K(ret), K(*expr));
} else {
LOG_WARN("fail to check if the sysfunc exprs are valid in generated columns", K(ret));
}
}
if (OB_SUCC(ret) &&
(ObResolverUtils::CHECK_FOR_FUNCTION_INDEX == check_status ||
ObResolverUtils::CHECK_FOR_GENERATED_COLUMN == check_status)) {
if (OB_FAIL(check_is_valid_generated_col(expr, expr_factory.get_allocator()))) {
if (OB_ERR_ONLY_PURE_FUNC_CANBE_VIRTUAL_COLUMN_EXPRESSION == ret
&& ObResolverUtils::CHECK_FOR_FUNCTION_INDEX == check_status) {
ret = OB_ERR_ONLY_PURE_FUNC_CANBE_INDEXED;
LOG_WARN("sysfunc in expr is not valid for generated column", K(ret), K(*expr));
} else {
LOG_WARN("fail to check if the sysfunc exprs are valid in generated columns", K(ret));
}
}
}

View File

@ -4409,8 +4409,8 @@ int ObResolverUtils::resolve_generated_column_expr(ObResolverParams &params,
*expr_factory,
expr,
expr_changed));
OZ (expr->formalize(session_info));
}
OZ (expr->formalize(session_info));
if (OB_SUCC(ret) && lib::is_oracle_mode()) {
if (OB_FAIL(ObRawExprUtils::try_modify_udt_col_expr_for_gen_col_recursively(*session_info,
tbl_schema,
@ -4423,9 +4423,7 @@ int ObResolverUtils::resolve_generated_column_expr(ObResolverParams &params,
if (OB_SUCC(ret) &&
(ObResolverUtils::CHECK_FOR_FUNCTION_INDEX == check_status ||
ObResolverUtils::CHECK_FOR_GENERATED_COLUMN == check_status)) {
if (OB_FAIL(expr->formalize(session_info))) {
LOG_WARN("fail to formalize expr", K(ret));
} else if (OB_FAIL(ObRawExprUtils::check_is_valid_generated_col(expr, expr_factory->get_allocator()))) {
if (OB_FAIL(ObRawExprUtils::check_is_valid_generated_col(expr, expr_factory->get_allocator()))) {
if (OB_ERR_ONLY_PURE_FUNC_CANBE_VIRTUAL_COLUMN_EXPRESSION == ret
&& ObResolverUtils::CHECK_FOR_FUNCTION_INDEX == check_status) {
ret = OB_ERR_ONLY_PURE_FUNC_CANBE_INDEXED;