mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-24 16:42:05 +00:00
Nullable in ConvertImplGenericToString
This commit is contained in:
parent
3a0a456549
commit
32b174403e
@ -744,9 +744,11 @@ struct ConvertImpl<FromDataType, std::enable_if_t<!std::is_same_v<FromDataType,
|
|||||||
/// Generic conversion of any type to String.
|
/// Generic conversion of any type to String.
|
||||||
struct ConvertImplGenericToString
|
struct ConvertImplGenericToString
|
||||||
{
|
{
|
||||||
static ColumnPtr execute(const ColumnsWithTypeAndName & arguments)
|
static ColumnPtr execute(const ColumnsWithTypeAndName & arguments, const DataTypePtr & result_type)
|
||||||
{
|
{
|
||||||
const auto & col_with_type_and_name = arguments[0];
|
ColumnUInt8::MutablePtr null_map = copyNullMap(arguments[0].column);
|
||||||
|
|
||||||
|
const auto & col_with_type_and_name = columnGetNested(arguments[0]);
|
||||||
const IDataType & type = *col_with_type_and_name.type;
|
const IDataType & type = *col_with_type_and_name.type;
|
||||||
const IColumn & col_from = *col_with_type_and_name.column;
|
const IColumn & col_from = *col_with_type_and_name.column;
|
||||||
|
|
||||||
@ -772,6 +774,9 @@ struct ConvertImplGenericToString
|
|||||||
}
|
}
|
||||||
|
|
||||||
write_buffer.finalize();
|
write_buffer.finalize();
|
||||||
|
|
||||||
|
if (result_type->isNullable() && null_map)
|
||||||
|
return ColumnNullable::create(std::move(col_to), std::move(null_map));
|
||||||
return col_to;
|
return col_to;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@ -1605,7 +1610,7 @@ private:
|
|||||||
/// Generic conversion of any type to String.
|
/// Generic conversion of any type to String.
|
||||||
if (std::is_same_v<ToDataType, DataTypeString>)
|
if (std::is_same_v<ToDataType, DataTypeString>)
|
||||||
{
|
{
|
||||||
return ConvertImplGenericToString::execute(arguments);
|
return ConvertImplGenericToString::execute(arguments, result_type);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
throw Exception("Illegal type " + arguments[0].type->getName() + " of argument of function " + getName(),
|
throw Exception("Illegal type " + arguments[0].type->getName() + " of argument of function " + getName(),
|
||||||
|
Loading…
Reference in New Issue
Block a user