ClickHouse/dbms/src/Processors/Transforms/PartialSortingTransform.cpp

27 lines
709 B
C++
Raw Normal View History

2019-02-26 18:40:08 +00:00
#include <Processors/Transforms/PartialSortingTransform.h>
#include <Interpreters/sortBlock.h>
namespace DB
{
2019-04-09 10:17:25 +00:00
PartialSortingTransform::PartialSortingTransform(
const Block & header, SortDescription & description, UInt64 limit, bool do_count_rows)
2019-02-26 18:40:08 +00:00
: ISimpleTransform(header, header, false)
2019-04-09 10:17:25 +00:00
, description(description), limit(limit), do_count_rows(do_count_rows)
2019-02-26 18:40:08 +00:00
{
}
void PartialSortingTransform::transform(Chunk & chunk)
{
2019-04-09 10:17:25 +00:00
if (do_count_rows)
read_rows += chunk.getNumRows();
2019-04-08 14:55:20 +00:00
2019-02-26 18:40:08 +00:00
auto block = getInputPort().getHeader().cloneWithColumns(chunk.detachColumns());
chunk.clear();
2019-04-08 14:55:20 +00:00
2019-02-26 18:40:08 +00:00
sortBlock(block, description, limit);
2019-04-08 17:10:00 +00:00
chunk.setColumns(block.getColumns(), block.rows());
2019-02-26 18:40:08 +00:00
}
}