#27685
{
    ColumnRawPtrs ptrs;
    ptrs.reserve(names.size());
    for (const auto & column_name : names)
    {
        auto & column = block.getByName(column_name).column;
        column = recursiveRemoveLowCardinality(column->convertToFullColumnIfConst());
        ptrs.push_back(column.get());
    }
    return ptrs;
}
ColumnPtr materializeColumn(const Block & block, const String & column_name)
{
    const auto & src_column = block.getByName(column_name).column;
    return recursiveRemoveLowCardinality(src_column->convertToFullColumnIfConst());
}
Columns materializeColumns(const Block & block, const Names & names)
{
    Columns materialized;
    materialized.reserve(names.size());
    for (const auto & column_name : names)
    {
        materialized.emplace_back(materializeColumn(block, column_name));
    }
    return materialized;
}
ColumnRawPtrs getRawPointers(const Columns & columns)