ClickHouse/src/Interpreters/sortBlock.h

26 lines
1.0 KiB
C++
Raw Normal View History

2012-07-17 20:06:38 +00:00
#pragma once
#include <Core/Block.h>
#include <Core/SortDescription.h>
2012-07-17 20:06:38 +00:00
namespace DB
{
2017-06-02 21:37:28 +00:00
/// Sort one block by `description`. If limit != 0, then the partial sort of the first `limit` rows is produced.
2019-02-10 15:17:45 +00:00
void sortBlock(Block & block, const SortDescription & description, UInt64 limit = 0);
2012-07-17 20:06:38 +00:00
2023-06-08 09:32:33 +00:00
/** Same as sortBlock, but do not sort the block, but only calculate the permutation of the values,
* so that you can rearrange the column values yourself.
2017-06-02 21:37:28 +00:00
* Sorting is stable. This is important for keeping the order of rows in the CollapsingMergeTree engine
* - because based on the order of rows it is determined whether to delete or leave groups of rows when collapsing.
2023-06-08 09:32:33 +00:00
* Used only in StorageMergeTree to sort the data with INSERT.
*/
void stableGetPermutation(const Block & block, const SortDescription & description, IColumn::Permutation & out_permutation);
2017-06-02 21:37:28 +00:00
/** Quickly check whether the block is already sorted. If the block is not sorted - returns false as fast as possible.
*/
bool isAlreadySorted(const Block & block, const SortDescription & description);
2012-07-17 20:06:38 +00:00
}