diff --git a/be/src/olap/olap_table.cpp b/be/src/olap/olap_table.cpp index 332bf69e07..5e8ff54515 100644 --- a/be/src/olap/olap_table.cpp +++ b/be/src/olap/olap_table.cpp @@ -1867,8 +1867,19 @@ void OLAPTable::_list_files_with_suffix(const string& file_suffix, set* } } -bool OLAPTable::has_version(const Version& version) const { - return (_data_sources.find(version) != _data_sources.end()); +bool OLAPTable::has_segment_group(const Version& version, const SegmentGroup* new_segment_group) const { + auto it = _data_sources.find(version); + if (it == _data_sources.end()) { + return false; + } + bool exist = false; + for (auto segment_group : it->second) { + if (segment_group->segment_group_id() == new_segment_group->segment_group_id()) { + exist = true; + break; + } + } + return exist; } void OLAPTable::list_versions(vector* versions) const { diff --git a/be/src/olap/olap_table.h b/be/src/olap/olap_table.h index ff2d514c26..7befcc9b12 100644 --- a/be/src/olap/olap_table.h +++ b/be/src/olap/olap_table.h @@ -234,7 +234,7 @@ public: void list_index_files(std::set* filenames) const; - bool has_version(const Version& version) const; + bool has_segment_group(const Version& version, const SegmentGroup* new_segment_group) const; void list_versions(std::vector* versions) const; diff --git a/be/src/olap/schema_change.cpp b/be/src/olap/schema_change.cpp index 45963b7e90..b60f8fb30a 100644 --- a/be/src/olap/schema_change.cpp +++ b/be/src/olap/schema_change.cpp @@ -2106,7 +2106,7 @@ OLAPStatus SchemaChangeHandler::_alter_table(SchemaChangeParams* sc_params) { sc_params->ref_olap_table->obtain_header_wrlock(); sc_params->new_olap_table->obtain_header_wrlock(); - if (!sc_params->new_olap_table->has_version((*it)->version())) { + if (!sc_params->new_olap_table->has_segment_group((*it)->version(), new_segment_group)) { // register version std::vector segment_group_vec; segment_group_vec.push_back(new_segment_group);