ColumnPtr executeImpl(const ColumnsWithTypeAndName & arguments, const DataTypePtr & result_type, size_t ) const override
    {
        const IColumn & src = *arguments[0].column;
        MutableColumnPtr dst = result_type->createColumn();
        if (ColumnString * dst_concrete = typeid_cast<ColumnString *>(dst.get()))
            executeToString(src, *dst_concrete);
        else
            throw Exception("Illegal column " + src.getName() + " of argument of function " + getName(), ErrorCodes::ILLEGAL_COLUMN);
        return dst;
    }
};
}
void registerFunctionReinterpretAsString(FunctionFactory & factory)
{
    factory.registerFunction<FunctionReinterpretAsString>();
}
}