[cherry-pick](branch-21) fix append_data_by_selector_impl reserve too mush useless memory (#39581) (#39635)

## Proposed changes

cherry-pick from master #39581
This commit is contained in:
zhangstar333
2024-08-21 08:47:30 +08:00
committed by GitHub
parent 75eded04d7
commit 7bb83ae379

View File

@ -42,8 +42,11 @@ void IColumn::append_data_by_selector_impl(MutablePtr& res, const Selector& sele
"Size of selector: {} is larger than size of column: {}",
selector.size(), num_rows);
}
res->reserve(num_rows);
DCHECK_GE(end, begin);
// here wants insert some value from this column, and the nums is (end - begin)
// and many be this column num_rows is 4096, but only need insert num is (1 - 0) = 1
// so can't call res->reserve(num_rows), it's will be too mush waste memory
res->reserve(res->size() + (end - begin));
for (size_t i = begin; i < end; ++i) {
static_cast<Derived&>(*res).insert_from(*this, selector[i]);