| 1 | #include <Processors/Transforms/PartialSortingTransform.h> |
| 2 | #include <Interpreters/sortBlock.h> |
| 3 | |
| 4 | namespace DB |
| 5 | { |
| 6 | |
| 7 | PartialSortingTransform::PartialSortingTransform( |
| 8 | const Block & , SortDescription & description_, UInt64 limit_, bool do_count_rows_) |
| 9 | : ISimpleTransform(header_, header_, false) |
| 10 | , description(description_), limit(limit_), do_count_rows(do_count_rows_) |
| 11 | { |
| 12 | } |
| 13 | |
| 14 | void PartialSortingTransform::transform(Chunk & chunk) |
| 15 | { |
| 16 | if (do_count_rows) |
| 17 | read_rows += chunk.getNumRows(); |
| 18 | |
| 19 | auto block = getInputPort().getHeader().cloneWithColumns(chunk.detachColumns()); |
| 20 | chunk.clear(); |
| 21 | |
| 22 | sortBlock(block, description, limit); |
| 23 | chunk.setColumns(block.getColumns(), block.rows()); |
| 24 | } |
| 25 | |
| 26 | } |
| 27 | |