mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-23 16:12:01 +00:00
33 lines
1.8 KiB
C++
33 lines
1.8 KiB
C++
#pragma once
|
||
|
||
#include <DB/Core/Block.h>
|
||
#include <DB/Core/SortDescription.h>
|
||
|
||
|
||
namespace DB
|
||
{
|
||
|
||
/// Отсортировать один блок по описанию desc. Если limit != 0, то производится partial sort первых limit строк.
|
||
void sortBlock(Block & block, const SortDescription & description, size_t limit = 0);
|
||
|
||
|
||
/** Используется только в StorageMergeTree для сортировки данных при INSERT-е.
|
||
* Сортировка стабильная. Это важно для сохранения порядка записей в движке CollapsingMergeTree
|
||
* - так как на основе порядка записей определяется, удалять ли или оставлять группы строчек при коллапсировании.
|
||
* Не поддерживаются collations. Не поддерживается частичная сортировка.
|
||
*/
|
||
void stableSortBlock(Block & block, const SortDescription & description);
|
||
|
||
/** То же, что и stableSortBlock, но не сортировать блок, а только рассчитать перестановку значений,
|
||
* чтобы потом можно было переставить значения столбцов самостоятельно.
|
||
*/
|
||
void stableGetPermutation(const Block & block, const SortDescription & description, IColumn::Permutation & out_permutation);
|
||
|
||
|
||
/** Быстро проверить, является ли блок уже отсортированным. Если блок не отсортирован - возвращает false максимально быстро.
|
||
* Не поддерживаются collations.
|
||
*/
|
||
bool isAlreadySorted(const Block & block, const SortDescription & description);
|
||
|
||
}
|