| 87 | |
| 88 | |
| 89 | ColumnPtr 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 | |
| 134 | template <typename T> |
| 135 | bool FunctionArrayDistinct::executeNumber( |
nothing calls this directly
no test coverage detected