fix bug for sequence

This commit is contained in:
obdev
2021-07-15 18:39:14 +08:00
committed by wangzelin.wzl
parent 51ee0c55b2
commit 000ee98d25
7 changed files with 46 additions and 25 deletions

View File

@ -89,13 +89,18 @@ int ObAlterSequenceResolver::resolve(const ParseNode& parse_tree)
}
/* sequence options */
if (OB_SUCC(ret) && NULL != parse_tree.children_[1]) {
if (OB_UNLIKELY(T_SEQUENCE_OPTION_LIST != parse_tree.children_[1]->type_)) {
ret = OB_ERR_UNEXPECTED;
LOG_ERROR("invalid option node type", K(parse_tree.children_[1]->type_), K(ret));
if (OB_SUCC(ret)) {
if (OB_NOT_NULL(parse_tree.children_[1])) {
if (OB_UNLIKELY(T_SEQUENCE_OPTION_LIST != parse_tree.children_[1]->type_)) {
ret = OB_ERR_UNEXPECTED;
LOG_ERROR("invalid option node type", K(parse_tree.children_[1]->type_), K(ret));
} else {
ObSequenceResolver<ObAlterSequenceStmt> resolver;
ret = resolver.resolve_sequence_options(mystmt, parse_tree.children_[1]);
}
} else {
ObSequenceResolver<ObAlterSequenceStmt> resolver;
ret = resolver.resolve_sequence_options(mystmt, parse_tree.children_[1]);
ret = OB_ERR_REQUIRE_ALTER_SEQ_OPTION;
LOG_USER_ERROR(OB_ERR_REQUIRE_ALTER_SEQ_OPTION);
}
}
return ret;

View File

@ -1449,7 +1449,7 @@ int ObCreateTableResolver::resolve_table_elements_from_select(const ParseNode& p
ParseNode* sub_sel_node = parse_tree.children_[CREATE_TABLE_AS_SEL_NUM_CHILD - 1];
ObSelectStmt* select_stmt = NULL;
ObSelectResolver select_resolver(params_);
select_resolver.params_.is_from_create_view_ = true;
select_resolver.params_.is_from_create_table_ = true;
// select stmt can not see upper insert stmt.
select_resolver.set_parent_namespace_resolver(NULL);
if (OB_ISNULL(session_info_)) {
@ -1510,6 +1510,8 @@ int ObCreateTableResolver::resolve_table_elements_from_select(const ParseNode& p
LOG_WARN("invalid null expr in select_item", K(ret), K(select_item.expr_));
} else if (select_item.is_real_alias_ || T_REF_COLUMN == select_item.expr_->get_expr_type()) {
// do nothing
} else if (select_item.expr_->get_expr_type() == T_FUN_SYS_SEQ_NEXTVAL) {
// do nothing
} else {
ret = OB_NO_COLUMN_ALIAS;
LOG_USER_ERROR(OB_NO_COLUMN_ALIAS, select_item.expr_name_.length(), select_item.expr_name_.ptr());