Skip to content

Commit

Permalink
Implemented resending of data when performing a flash in buffered output
Browse files Browse the repository at this point in the history
  • Loading branch information
Dmitry Grudin committed Dec 17, 2024
1 parent 2a49a25 commit 0f1d5b9
Showing 1 changed file with 8 additions and 1 deletion.
9 changes: 8 additions & 1 deletion clickhouse/base/output.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,14 @@ void BufferedOutput::Reset() {

void BufferedOutput::DoFlush() {
if (array_output_.Data() != buffer_.data()) {
destination_->Write(buffer_.data(), array_output_.Data() - buffer_.data());
size_t len = array_output_.Data() - buffer_.data();
const uint8_t* buf = buffer_.data();
while (len > 0) {
const size_t written = destination_->Write(buf, len);
buf += written;
len -= written;
}

destination_->Flush();

array_output_.Reset(buffer_.data(), buffer_.size());
Expand Down

0 comments on commit 0f1d5b9

Please sign in to comment.