From 7817eb2efc6fb2d527bdc381ce276b5b6f4484f0 Mon Sep 17 00:00:00 2001 From: obdev Date: Wed, 7 Feb 2024 23:45:12 +0000 Subject: [PATCH] Fix the bug of creating multiple indexes on materialized view --- src/sql/resolver/ddl/ob_create_index_resolver.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/sql/resolver/ddl/ob_create_index_resolver.cpp b/src/sql/resolver/ddl/ob_create_index_resolver.cpp index 6b17b5fa2c..9d7d0c2e0a 100644 --- a/src/sql/resolver/ddl/ob_create_index_resolver.cpp +++ b/src/sql/resolver/ddl/ob_create_index_resolver.cpp @@ -450,6 +450,7 @@ int ObCreateIndexResolver::resolve(const ParseNode &parse_tree) ParseNode &parse_node = const_cast(parse_tree); ParseNode *if_not_exist_node = NULL; const ObTableSchema *tbl_schema = NULL; + const ObTableSchema *data_tbl_schema = NULL; bool has_synonym = false; ObString new_db_name; ObString new_tbl_name; @@ -532,12 +533,14 @@ int ObCreateIndexResolver::resolve(const ParseNode &parse_tree) index_schema.set_tenant_id(session_info_->get_effective_tenant_id()); crt_idx_stmt->set_table_id(mv_container_table_schema->get_table_id()); crt_idx_stmt->set_table_name(mv_container_table_name); + data_tbl_schema = mv_container_table_schema; } } else { is_oracle_temp_table_ = (tbl_schema->is_oracle_tmp_table()); ObTableSchema &index_schema = crt_idx_stmt->get_create_index_arg().index_schema_; index_schema.set_tenant_id(session_info_->get_effective_tenant_id()); crt_idx_stmt->set_table_id(tbl_schema->get_table_id()); + data_tbl_schema = tbl_schema; } if (OB_SUCC(ret) && has_synonym) { ObString tmp_new_db_name; @@ -560,14 +563,14 @@ int ObCreateIndexResolver::resolve(const ParseNode &parse_tree) parse_tree.children_[0]->value_, parse_tree.children_[3], crt_idx_stmt, - tbl_schema))) { + data_tbl_schema))) { LOG_WARN("fail to resolve index column node", K(ret)); } else if (NULL != parse_node.children_[4] && OB_FAIL(resolve_index_method_node(parse_node.children_[4], crt_idx_stmt))) { LOG_WARN("fail to resolve index method node", K(ret)); } else if (OB_FAIL(resolve_index_option_node(parse_node.children_[3], crt_idx_stmt, - tbl_schema, + data_tbl_schema, NULL != parse_node.children_[5]))) { LOG_WARN("fail to resolve index option node", K(ret)); } else if (global_ && OB_FAIL(generate_global_index_schema(crt_idx_stmt))) {