Fix failed mysqltests
This commit is contained in:
@ -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();
|
||||
}
|
||||
|
||||
@ -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));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -4409,8 +4409,8 @@ int ObResolverUtils::resolve_generated_column_expr(ObResolverParams ¶ms,
|
||||
*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 ¶ms,
|
||||
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;
|
||||
|
||||
Reference in New Issue
Block a user