diff options
| author | AlexSm <[email protected]> | 2024-01-04 15:09:05 +0100 |
|---|---|---|
| committer | GitHub <[email protected]> | 2024-01-04 15:09:05 +0100 |
| commit | dab291146f6cd7d35684e3a1150e5bb1c412982c (patch) | |
| tree | 36ef35f6cacb6432845a4a33f940c95871036b32 /contrib/clickhouse/src/Functions/array/arrayExists.cpp | |
| parent | 63660ad5e7512029fd0218e7a636580695a24e1f (diff) | |
Library import 5, delete go dependencies (#832)
* Library import 5, delete go dependencies
* Fix yt client
Diffstat (limited to 'contrib/clickhouse/src/Functions/array/arrayExists.cpp')
| -rw-r--r-- | contrib/clickhouse/src/Functions/array/arrayExists.cpp | 71 |
1 files changed, 0 insertions, 71 deletions
diff --git a/contrib/clickhouse/src/Functions/array/arrayExists.cpp b/contrib/clickhouse/src/Functions/array/arrayExists.cpp deleted file mode 100644 index d59425338a5..00000000000 --- a/contrib/clickhouse/src/Functions/array/arrayExists.cpp +++ /dev/null @@ -1,71 +0,0 @@ -#include <Functions/array/arrayExists.h> -#include <Functions/FunctionFactory.h> - -namespace DB -{ - -namespace ErrorCodes -{ - extern const int ILLEGAL_COLUMN; -} - -ColumnPtr ArrayExistsImpl::execute(const ColumnArray & array, ColumnPtr mapped) -{ - const ColumnUInt8 * column_filter = typeid_cast<const ColumnUInt8 *>(&*mapped); - - if (!column_filter) - { - const auto * column_filter_const = checkAndGetColumnConst<ColumnUInt8>(&*mapped); - - if (!column_filter_const) - throw Exception(ErrorCodes::ILLEGAL_COLUMN, "Unexpected type of filter column"); - - if (column_filter_const->getValue<UInt8>()) - { - const IColumn::Offsets & offsets = array.getOffsets(); - auto out_column = ColumnUInt8::create(offsets.size()); - ColumnUInt8::Container & out_exists = out_column->getData(); - - size_t pos = 0; - for (size_t i = 0; i < offsets.size(); ++i) - { - out_exists[i] = offsets[i] - pos > 0; - pos = offsets[i]; - } - - return out_column; - } - else - return DataTypeUInt8().createColumnConst(array.size(), 0u); - } - - const IColumn::Filter & filter = column_filter->getData(); - const IColumn::Offsets & offsets = array.getOffsets(); - auto out_column = ColumnUInt8::create(offsets.size()); - ColumnUInt8::Container & out_exists = out_column->getData(); - - size_t pos = 0; - for (size_t i = 0; i < offsets.size(); ++i) - { - UInt8 exists = 0; - for (; pos < offsets[i]; ++pos) - { - if (filter[pos]) - { - exists = 1; - pos = offsets[i]; - break; - } - } - out_exists[i] = exists; - } - - return out_column; -} - -REGISTER_FUNCTION(ArrayExists) -{ - factory.registerFunction<FunctionArrayExists>(); -} - -} |
