| 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 |  | 
|---|