diff --git a/src/Processors/Formats/Impl/ParquetBlockOutputFormat.cpp b/src/Processors/Formats/Impl/ParquetBlockOutputFormat.cpp index 0c86689e8bdc..fc94cedfc00d 100644 --- a/src/Processors/Formats/Impl/ParquetBlockOutputFormat.cpp +++ b/src/Processors/Formats/Impl/ParquetBlockOutputFormat.cpp @@ -306,13 +306,17 @@ void ParquetBlockOutputFormat::writeRowGroup(std::vector chunks) else { Chunk concatenated; - while (!chunks.empty()) + for (auto & chunk : chunks) { if (concatenated.empty()) - concatenated.swap(chunks.back()); + { + concatenated.swap(chunk); + } else - concatenated.append(chunks.back()); - chunks.pop_back(); + { + concatenated.append(chunk); + chunk.clear(); // free chunk's buffers so memory is release earlier + } } writeRowGroupInOneThread(std::move(concatenated)); }