bugfix: create force view on set query

This commit is contained in:
dontknow9179
2024-06-17 22:27:43 +00:00
committed by ob-robot
parent f34f2dd352
commit 2c96a67376

View File

@ -292,8 +292,17 @@ int ObCreateViewResolver::resolve(const ParseNode &parse_tree)
LOG_WARN("get unexpected null", K(ret), K(view_table_resolver.get_select_stmt()));
} else if (OB_ISNULL(select_stmt->get_real_stmt())) {
if (!resolve_succ) {
//if set query resolve failed, child stmt is null
//do not persist column schema
//if the first child stmt of set query resolve failed, real stmt is null
ObArray<SelectItem> select_items;
if (!column_list.empty() && OB_FAIL(add_undefined_column_infos(
session_info_->get_effective_tenant_id(),
select_items,
table_schema,
column_list))) {
if (OB_FAIL(try_add_error_info(ret, create_arg.error_info_))) {
LOG_WARN("failed to add error info to for force view", K(ret));
}
}
} else {
ret = OB_ERR_UNEXPECTED;
LOG_WARN("failed to get real stmt", K(ret), KPC(select_stmt));
@ -1529,7 +1538,12 @@ int ObCreateViewResolver::try_add_undefined_column_infos(const uint64_t tenant_i
int ret = OB_SUCCESS;
bool add_undefined_columns = false;
ObArray<SelectItem> select_items;
if (has_resolved_field_list) {
if (OB_ISNULL(select_stmt_node)) {
ret = OB_ERR_UNEXPECTED;
LOG_WARN("parse node is null", K(ret));
} else if (select_stmt_node->children_[PARSE_SELECT_SET] != NULL && column_list.empty()) {
// do nothing
} else if (has_resolved_field_list) {
if (OB_FAIL(add_undefined_column_infos(tenant_id,
select_stmt.get_select_items(),
table_schema,