MCPcopy Create free account
hub / github.com/ClickHouse/ClickHouse / executeImpl

Method executeImpl

src/Functions/array/arrayDistinct.cpp:89–132  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

87
88
89ColumnPtr FunctionArrayDistinct::executeImpl(const ColumnsWithTypeAndName & arguments, const DataTypePtr & result_type, size_t /*input_rows_count*/) const
90{
91 ColumnPtr array_ptr = arguments[0].column;
92 const ColumnArray & array = checkAndGetColumn<ColumnArray>(*array_ptr);
93
94 const auto & return_type = result_type;
95
96 auto res_ptr = return_type->createColumn();
97 ColumnArray & res = assert_cast<ColumnArray &>(*res_ptr);
98
99 const IColumn & src_data = array.getData();
100 const ColumnArray::Offsets & offsets = array.getOffsets();
101
102 IColumn & res_data = res.getData();
103 ColumnArray::Offsets & res_offsets = res.getOffsets();
104
105 const ColumnNullable * nullable_col = checkAndGetColumn<ColumnNullable>(&src_data);
106
107 const IColumn * inner_col = nullptr;
108
109 if (nullable_col)
110 {
111 inner_col = &nullable_col->getNestedColumn();
112 }
113 else
114 {
115 inner_col = &src_data;
116 }
117
118 if (!(executeNumber<UInt8>(*inner_col, offsets, res_data, res_offsets, nullable_col)
119 || executeNumber<UInt16>(*inner_col, offsets, res_data, res_offsets, nullable_col)
120 || executeNumber<UInt32>(*inner_col, offsets, res_data, res_offsets, nullable_col)
121 || executeNumber<UInt64>(*inner_col, offsets, res_data, res_offsets, nullable_col)
122 || executeNumber<Int8>(*inner_col, offsets, res_data, res_offsets, nullable_col)
123 || executeNumber<Int16>(*inner_col, offsets, res_data, res_offsets, nullable_col)
124 || executeNumber<Int32>(*inner_col, offsets, res_data, res_offsets, nullable_col)
125 || executeNumber<Int64>(*inner_col, offsets, res_data, res_offsets, nullable_col)
126 || executeNumber<Float32>(*inner_col, offsets, res_data, res_offsets, nullable_col)
127 || executeNumber<Float64>(*inner_col, offsets, res_data, res_offsets, nullable_col)
128 || executeString(*inner_col, offsets, res_data, res_offsets, nullable_col)))
129 executeHashed(*inner_col, offsets, res_data, res_offsets, nullable_col);
130
131 return res_ptr;
132}
133
134template <typename T>
135bool FunctionArrayDistinct::executeNumber(

Callers

nothing calls this directly

Calls 4

executeStringFunction · 0.70
createColumnMethod · 0.45
getDataMethod · 0.45
getOffsetsMethod · 0.45

Tested by

no test coverage detected