2015-11-21 03:19:43 +00:00
|
|
|
#pragma once
|
|
|
|
|
2017-04-01 09:19:00 +00:00
|
|
|
#include <Columns/IColumn.h>
|
2015-11-21 03:19:43 +00:00
|
|
|
|
|
|
|
|
2017-03-09 00:56:38 +00:00
|
|
|
/// Common helper methods for implementation of different columns.
|
2015-11-21 03:19:43 +00:00
|
|
|
|
|
|
|
namespace DB
|
|
|
|
{
|
|
|
|
|
2017-03-09 00:56:38 +00:00
|
|
|
/// Counts how many bytes of `filt` are greater than zero.
|
2015-11-21 03:19:43 +00:00
|
|
|
size_t countBytesInFilter(const IColumn::Filter & filt);
|
|
|
|
|
2017-06-23 06:45:48 +00:00
|
|
|
/// Returns true, if the memory contains only zeros.
|
|
|
|
bool memoryIsZero(const void * data, size_t size);
|
|
|
|
|
2015-11-21 03:19:43 +00:00
|
|
|
|
2017-03-09 00:56:38 +00:00
|
|
|
/// The general implementation of `filter` function for ColumnArray and ColumnString.
|
2015-11-21 03:19:43 +00:00
|
|
|
template <typename T>
|
|
|
|
void filterArraysImpl(
|
2017-04-01 07:20:54 +00:00
|
|
|
const PaddedPODArray<T> & src_elems, const IColumn::Offsets_t & src_offsets,
|
|
|
|
PaddedPODArray<T> & res_elems, IColumn::Offsets_t & res_offsets,
|
|
|
|
const IColumn::Filter & filt, ssize_t result_size_hint);
|
2015-11-21 03:19:43 +00:00
|
|
|
|
2017-04-18 03:03:39 +00:00
|
|
|
/// Same as above, but not fills res_offsets.
|
|
|
|
template <typename T>
|
|
|
|
void filterArraysImplOnlyData(
|
|
|
|
const PaddedPODArray<T> & src_elems, const IColumn::Offsets_t & src_offsets,
|
|
|
|
PaddedPODArray<T> & res_elems,
|
|
|
|
const IColumn::Filter & filt, ssize_t result_size_hint);
|
|
|
|
|
2015-11-21 03:19:43 +00:00
|
|
|
}
|