fix create view with rowid bug

This commit is contained in:
wangt1xiuyi
2023-01-28 18:56:45 +08:00
committed by ob-robot
parent b4b1f9c1f9
commit ccb9e555da
9 changed files with 38 additions and 21 deletions

View File

@ -1513,6 +1513,9 @@ int ObCreateTableResolver::resolve_table_elements_from_select(const ParseNode &p
ObSelectStmt *select_stmt = NULL;
ObSelectResolver select_resolver(params_);
select_resolver.params_.is_from_create_table_ = true;
select_resolver.params_.is_specified_col_name_ = parse_tree.num_child_ > 3 &&
parse_tree.children_[3] != NULL &&
T_TABLE_ELEMENT_LIST == parse_tree.children_[3]->type_;
//select层不应该看到上层的insert stmt的属性,所以upper scope stmt应该为空
select_resolver.set_parent_namespace_resolver(NULL);
if (lib::is_mysql_mode()
@ -1521,6 +1524,11 @@ int ObCreateTableResolver::resolve_table_elements_from_select(const ParseNode &p
&& !params_.is_prepare_protocol_) {
ret = OB_ERR_PARSER_SYNTAX;
LOG_WARN("not support questionmark in normal create.", K(ret));
} else if (OB_UNLIKELY(parse_tree.num_child_ <= 3 ||
(parse_tree.children_[3] != NULL &&
T_TABLE_ELEMENT_LIST != parse_tree.children_[3]->type_))) {
ret = OB_INVALID_ARGUMENT;
LOG_WARN("invalid argument.", K(ret));
} else if (OB_ISNULL(session_info_) || OB_ISNULL(allocator_) || OB_ISNULL(params_.param_list_)) {
ret = OB_NOT_INIT;
SQL_RESV_LOG(WARN, "ObCreateTableResolver is not init", K(params_.param_list_), K(allocator_),

View File

@ -126,6 +126,7 @@ int ObCreateViewResolver::resolve(const ParseNode &parse_tree)
ObViewTableResolver view_table_resolver(params_, stmt->get_database_name(),
table_schema.get_table_name());
view_table_resolver.params_.is_from_create_view_ = true;
view_table_resolver.params_.is_specified_col_name_ = parse_tree.children_[VIEW_COLUMNS_NODE] != NULL;
view_table_resolver.set_current_view_level(1);
view_table_resolver.set_is_create_view(true);
// set ObViewSchema.materialized_ in RS