diff --git a/dbms/include/DB/Interpreters/sortBlock.h b/dbms/include/DB/Interpreters/sortBlock.h index e012b218aa0..4b9982bd603 100644 --- a/dbms/include/DB/Interpreters/sortBlock.h +++ b/dbms/include/DB/Interpreters/sortBlock.h @@ -15,7 +15,7 @@ void sortBlock(Block & block, const SortDescription & description, size_t limit * Сортировка стабильная. Это важно для сохранения порядка записей в движке CollapsingMergeTree * - так как на основе порядка записей определяется, удалять ли или оставлять группы строчек при коллапсировании. * Не поддерживаются collations. Не поддерживается частичная сортировка. - */ + */ void stableSortBlock(Block & block, const SortDescription & description); } diff --git a/dbms/src/DataStreams/PartialSortingBlockInputStream.cpp b/dbms/src/DataStreams/PartialSortingBlockInputStream.cpp index 40468dacc5b..8b45c6d81ec 100644 --- a/dbms/src/DataStreams/PartialSortingBlockInputStream.cpp +++ b/dbms/src/DataStreams/PartialSortingBlockInputStream.cpp @@ -11,6 +11,11 @@ Block PartialSortingBlockInputStream::readImpl() { Block res = children.back()->read(); sortBlock(res, description, limit); + + if (limit && res.rowsInFirstColumn() > limit) + for (size_t i = 0, size = res.columns(); i < size; ++i) + res.getByPosition(i).column = res.getByPosition(i).column->cut(0, limit); + return res; }