Fix the bug of creating multiple indexes on materialized view
This commit is contained in:
@ -450,6 +450,7 @@ int ObCreateIndexResolver::resolve(const ParseNode &parse_tree)
|
|||||||
ParseNode &parse_node = const_cast<ParseNode &>(parse_tree);
|
ParseNode &parse_node = const_cast<ParseNode &>(parse_tree);
|
||||||
ParseNode *if_not_exist_node = NULL;
|
ParseNode *if_not_exist_node = NULL;
|
||||||
const ObTableSchema *tbl_schema = NULL;
|
const ObTableSchema *tbl_schema = NULL;
|
||||||
|
const ObTableSchema *data_tbl_schema = NULL;
|
||||||
bool has_synonym = false;
|
bool has_synonym = false;
|
||||||
ObString new_db_name;
|
ObString new_db_name;
|
||||||
ObString new_tbl_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());
|
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_id(mv_container_table_schema->get_table_id());
|
||||||
crt_idx_stmt->set_table_name(mv_container_table_name);
|
crt_idx_stmt->set_table_name(mv_container_table_name);
|
||||||
|
data_tbl_schema = mv_container_table_schema;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
is_oracle_temp_table_ = (tbl_schema->is_oracle_tmp_table());
|
is_oracle_temp_table_ = (tbl_schema->is_oracle_tmp_table());
|
||||||
ObTableSchema &index_schema = crt_idx_stmt->get_create_index_arg().index_schema_;
|
ObTableSchema &index_schema = crt_idx_stmt->get_create_index_arg().index_schema_;
|
||||||
index_schema.set_tenant_id(session_info_->get_effective_tenant_id());
|
index_schema.set_tenant_id(session_info_->get_effective_tenant_id());
|
||||||
crt_idx_stmt->set_table_id(tbl_schema->get_table_id());
|
crt_idx_stmt->set_table_id(tbl_schema->get_table_id());
|
||||||
|
data_tbl_schema = tbl_schema;
|
||||||
}
|
}
|
||||||
if (OB_SUCC(ret) && has_synonym) {
|
if (OB_SUCC(ret) && has_synonym) {
|
||||||
ObString tmp_new_db_name;
|
ObString tmp_new_db_name;
|
||||||
@ -560,14 +563,14 @@ int ObCreateIndexResolver::resolve(const ParseNode &parse_tree)
|
|||||||
parse_tree.children_[0]->value_,
|
parse_tree.children_[0]->value_,
|
||||||
parse_tree.children_[3],
|
parse_tree.children_[3],
|
||||||
crt_idx_stmt,
|
crt_idx_stmt,
|
||||||
tbl_schema))) {
|
data_tbl_schema))) {
|
||||||
LOG_WARN("fail to resolve index column node", K(ret));
|
LOG_WARN("fail to resolve index column node", K(ret));
|
||||||
} else if (NULL != parse_node.children_[4]
|
} else if (NULL != parse_node.children_[4]
|
||||||
&& OB_FAIL(resolve_index_method_node(parse_node.children_[4], crt_idx_stmt))) {
|
&& OB_FAIL(resolve_index_method_node(parse_node.children_[4], crt_idx_stmt))) {
|
||||||
LOG_WARN("fail to resolve index method node", K(ret));
|
LOG_WARN("fail to resolve index method node", K(ret));
|
||||||
} else if (OB_FAIL(resolve_index_option_node(parse_node.children_[3],
|
} else if (OB_FAIL(resolve_index_option_node(parse_node.children_[3],
|
||||||
crt_idx_stmt,
|
crt_idx_stmt,
|
||||||
tbl_schema,
|
data_tbl_schema,
|
||||||
NULL != parse_node.children_[5]))) {
|
NULL != parse_node.children_[5]))) {
|
||||||
LOG_WARN("fail to resolve index option node", K(ret));
|
LOG_WARN("fail to resolve index option node", K(ret));
|
||||||
} else if (global_ && OB_FAIL(generate_global_index_schema(crt_idx_stmt))) {
|
} else if (global_ && OB_FAIL(generate_global_index_schema(crt_idx_stmt))) {
|
||||||
|
Reference in New Issue
Block a user