diff --git a/dbms/include/DB/DataStreams/copyData.h b/dbms/include/DB/DataStreams/copyData.h index b347af27282..ee9f231b27c 100644 --- a/dbms/include/DB/DataStreams/copyData.h +++ b/dbms/include/DB/DataStreams/copyData.h @@ -15,7 +15,5 @@ namespace DB */ void copyData(IBlockInputStream & from, IBlockOutputStream & to); void copyData(IRowInputStream & from, IRowOutputStream & to); -void copyData(IBlockInputStream & from, IRowOutputStream & to); -void copyData(IRowInputStream & from, IBlockOutputStream & to, const Block & sample); } diff --git a/dbms/src/DataStreams/copyData.cpp b/dbms/src/DataStreams/copyData.cpp index d16d12b3ff2..390b4ab8404 100644 --- a/dbms/src/DataStreams/copyData.cpp +++ b/dbms/src/DataStreams/copyData.cpp @@ -15,6 +15,11 @@ void copyData(IBlockInputStream & from, IBlockOutputStream & to) while (Block block = from.read()) to.write(block); + /// Для вывода информации о количестве строк до LIMIT в некоторых форматах. + if (const IProfilingBlockInputStream * input = dynamic_cast(&from)) + if (input->getInfo().hasAppliedLimit()) + to.setRowsBeforeLimit(input->getInfo().getRowsBeforeLimit()); + from.readSuffix(); to.writeSuffix(); } diff --git a/dbms/src/Interpreters/InterpreterSelectQuery.cpp b/dbms/src/Interpreters/InterpreterSelectQuery.cpp index b54ff25ba45..6ea33ed93bd 100644 --- a/dbms/src/Interpreters/InterpreterSelectQuery.cpp +++ b/dbms/src/Interpreters/InterpreterSelectQuery.cpp @@ -581,11 +581,7 @@ BlockInputStreamPtr InterpreterSelectQuery::executeAndFormat(WriteBuffer & buf) BlockInputStreamPtr in = execute(); BlockOutputStreamPtr out = context.getFormatFactory().getOutput(format_name, buf, sample); - - if (const IProfilingBlockInputStream * input = dynamic_cast(&*in)) - if (input->getInfo().hasAppliedLimit()) - out->setRowsBeforeLimit(input->getInfo().getRowsBeforeLimit()); - + copyData(*in, *out); return in;