Skip to content
This repository has been archived by the owner on Dec 1, 2022. It is now read-only.

fix vector.reserve usage in DataCollect #1218

Merged
merged 2 commits into from
Jul 13, 2021
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 7 additions & 1 deletion src/executor/query/DataCollectExecutor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -113,10 +113,16 @@ Status DataCollectExecutor::rowBasedMove(const std::vector<std::string>& vars) {
DataSet ds;
ds.colNames = std::move(colNames_);
DCHECK(!ds.colNames.empty());
size_t cap = 0;
for (auto& var : vars) {
auto& result = ectx_->getResult(var);
auto iter = result.iter();
cap += iter->size();
}
ds.rows.reserve(cap);
for (auto& var : vars) {
auto& result = ectx_->getResult(var);
auto iter = result.iter();
ds.rows.reserve(ds.rows.size() + iter->size());
if (iter->isSequentialIter() || iter->isPropIter()) {
auto* seqIter = static_cast<SequentialIter*>(iter.get());
for (; seqIter->valid(); seqIter->next()) {
Expand Down