As discussed with @kitaisreal 
{
    auto name_in_storage = required_column.getNameInStorage();
    decltype(columns_from_part.begin()) it;
    if (alter_conversions.isColumnRenamed(name_in_storage))
    {
        String old_name = alter_conversions.getColumnOldName(name_in_storage);
        it = columns_from_part.find(old_name);
    }
    else
    {
        it = columns_from_part.find(name_in_storage);
    }
    if (it == columns_from_part.end())
        return required_column;
    const auto & type = *it->second;
    if (required_column.isSubcolumn())
    {
        auto subcolumn_name = required_column.getSubcolumnName();
        auto subcolumn_type = type->tryGetSubcolumnType(subcolumn_name);
        if (!subcolumn_type)
            return required_column;
        return {String(it->first), subcolumn_name, type, subcolumn_type};
    }
    return {String(it->first), type};
}
void IMergeTreeReader::performRequiredConversions(Columns & res_columns)