MCPcopy Create free account
hub / github.com/ClickHouse/ClickHouse / pushDelayedResults

Method pushDelayedResults

src/Server/HTTPHandler.cpp:1069–1106  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1067}
1068
1069void HTTPHandler::Output::pushDelayedResults() const
1070{
1071 auto * cascade_buffer = typeid_cast<CascadeWriteBuffer *>(out_maybe_delayed_and_compressed.get());
1072 if (!cascade_buffer)
1073 throw Exception(ErrorCodes::LOGICAL_ERROR, "Expected CascadeWriteBuffer");
1074
1075 cascade_buffer->finalize();
1076 auto write_buffers = cascade_buffer->getResultBuffers();
1077
1078 if (write_buffers.empty())
1079 throw Exception(ErrorCodes::LOGICAL_ERROR, "At least one buffer is expected to overwrite result into HTTP response");
1080
1081 ConcatReadBuffer::Buffers read_buffers;
1082 for (auto & write_buf : write_buffers)
1083 {
1084 if (auto * write_buf_concrete = dynamic_cast<TemporaryDataBuffer *>(write_buf.get()))
1085 {
1086 if (auto reread_buf = write_buf_concrete->read())
1087 {
1088 read_buffers.emplace_back(std::move(reread_buf));
1089 }
1090 }
1091
1092 if (auto * write_buf_concrete = dynamic_cast<IReadableWriteBuffer *>(write_buf.get()))
1093 {
1094 if (auto reread_buf = write_buf_concrete->tryGetReadBuffer())
1095 {
1096 read_buffers.emplace_back(std::move(reread_buf));
1097 }
1098 }
1099 }
1100
1101 if (!read_buffers.empty())
1102 {
1103 ConcatReadBuffer concat_read_buffer(std::move(read_buffers));
1104 copyData(concat_read_buffer, *out_maybe_compressed);
1105 }
1106}
1107
1108void HTTPHandler::Output::finalize()
1109{

Callers

nothing calls this directly

Calls 9

copyDataFunction · 0.85
getResultBuffersMethod · 0.80
tryGetReadBufferMethod · 0.80
ExceptionClass · 0.50
getMethod · 0.45
finalizeMethod · 0.45
emptyMethod · 0.45
readMethod · 0.45
emplace_backMethod · 0.45

Tested by

no test coverage detected