Update MySQLOutputFormat.

This commit is contained in:
Nikolai Kochetov 2019-08-05 12:35:46 +03:00
parent b0b7ed791d
commit bd8c9733e3
3 changed files with 31 additions and 19 deletions

View File

@ -64,8 +64,8 @@ public:
void write(const Block & block) { consume(Chunk(block.getColumns(), block.rows())); } void write(const Block & block) { consume(Chunk(block.getColumns(), block.rows())); }
void doWritePrefix() {} virtual void doWritePrefix() {}
void doWriteSuffix() { finalize(); } virtual void doWriteSuffix() { finalize(); }
void setTotals(const Block & totals) { consumeTotals(Chunk(totals.getColumns(), totals.rows())); } void setTotals(const Block & totals) { consumeTotals(Chunk(totals.getColumns(), totals.rows())); }
void setExtremes(const Block & extremes) { consumeExtremes(Chunk(extremes.getColumns(), extremes.rows())); } void setExtremes(const Block & extremes) { consumeExtremes(Chunk(extremes.getColumns(), extremes.rows())); }

View File

@ -23,13 +23,14 @@ MySQLOutputFormat::MySQLOutputFormat(WriteBuffer & out_, const Block & header, c
packet_sender.max_packet_size = context.mysql.max_packet_size; packet_sender.max_packet_size = context.mysql.max_packet_size;
} }
void MySQLOutputFormat::consume(Chunk chunk) void MySQLOutputFormat::initialize()
{ {
if (initialized)
return;
initialized = true;
auto & header = getPort(PortKind::Main).getHeader(); auto & header = getPort(PortKind::Main).getHeader();
if (!initialized)
{
initialized = true;
if (header.columns()) if (header.columns())
{ {
@ -50,6 +51,13 @@ void MySQLOutputFormat::consume(Chunk chunk)
} }
} }
void MySQLOutputFormat::consume(Chunk chunk)
{
initialize();
auto & header = getPort(PortKind::Main).getHeader();
size_t rows = chunk.getNumRows(); size_t rows = chunk.getNumRows();
auto & columns = chunk.getColumns(); auto & columns = chunk.getColumns();

View File

@ -26,6 +26,10 @@ public:
void consume(Chunk) override; void consume(Chunk) override;
void finalize() override; void finalize() override;
void flush() override; void flush() override;
void doWritePrefix() override { initialize(); }
void initialize();
private: private:
bool initialized = false; bool initialized = false;