From 2c96a67376107ecb8b7fef76700ed194e39cb3a9 Mon Sep 17 00:00:00 2001 From: dontknow9179 <545187809@qq.com> Date: Mon, 17 Jun 2024 22:27:43 +0000 Subject: [PATCH] bugfix: create force view on set query --- .../resolver/ddl/ob_create_view_resolver.cpp | 20 ++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/src/sql/resolver/ddl/ob_create_view_resolver.cpp b/src/sql/resolver/ddl/ob_create_view_resolver.cpp index d57a03d29a..5d8225ea2b 100644 --- a/src/sql/resolver/ddl/ob_create_view_resolver.cpp +++ b/src/sql/resolver/ddl/ob_create_view_resolver.cpp @@ -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 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 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,