Skip to content

Commit 6be806a

Browse files
author
lichaoyong
authored
Fix creating rollup bug from multi SegmentGroups generated streaming … (#1287)
In streaming load, one version will generate multi SegmentGroups. Upon creating rollup, the previous code only check version exists or not. Instead, every SegmentGroup should be checked independently.
1 parent 5dea4fb commit 6be806a

File tree

3 files changed

+15
-4
lines changed

3 files changed

+15
-4
lines changed

be/src/olap/olap_table.cpp

+13-2
Original file line numberDiff line numberDiff line change
@@ -1867,8 +1867,19 @@ void OLAPTable::_list_files_with_suffix(const string& file_suffix, set<string>*
18671867
}
18681868
}
18691869

1870-
bool OLAPTable::has_version(const Version& version) const {
1871-
return (_data_sources.find(version) != _data_sources.end());
1870+
bool OLAPTable::has_segment_group(const Version& version, const SegmentGroup* new_segment_group) const {
1871+
auto it = _data_sources.find(version);
1872+
if (it == _data_sources.end()) {
1873+
return false;
1874+
}
1875+
bool exist = false;
1876+
for (auto segment_group : it->second) {
1877+
if (segment_group->segment_group_id() == new_segment_group->segment_group_id()) {
1878+
exist = true;
1879+
break;
1880+
}
1881+
}
1882+
return exist;
18721883
}
18731884

18741885
void OLAPTable::list_versions(vector<Version>* versions) const {

be/src/olap/olap_table.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -234,7 +234,7 @@ class OLAPTable : public std::enable_shared_from_this<OLAPTable> {
234234

235235
void list_index_files(std::set<std::string>* filenames) const;
236236

237-
bool has_version(const Version& version) const;
237+
bool has_segment_group(const Version& version, const SegmentGroup* new_segment_group) const;
238238

239239
void list_versions(std::vector<Version>* versions) const;
240240

be/src/olap/schema_change.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -2106,7 +2106,7 @@ OLAPStatus SchemaChangeHandler::_alter_table(SchemaChangeParams* sc_params) {
21062106
sc_params->ref_olap_table->obtain_header_wrlock();
21072107
sc_params->new_olap_table->obtain_header_wrlock();
21082108

2109-
if (!sc_params->new_olap_table->has_version((*it)->version())) {
2109+
if (!sc_params->new_olap_table->has_segment_group((*it)->version(), new_segment_group)) {
21102110
// register version
21112111
std::vector<SegmentGroup*> segment_group_vec;
21122112
segment_group_vec.push_back(new_segment_group);

0 commit comments

Comments
 (0)