As discussed with @kitaisreal 
}
    MergeTreeData::DataPartPtr data_part;
protected:
    
    NameAndTypePair getColumnFromPart(const NameAndTypePair & required_column) const;
    void checkNumberOfColumns(size_t num_columns_to_read) const;
    
    ValueSizeMap avg_value_size_hints;
    
    DeserializeBinaryBulkStateMap deserialize_binary_bulk_state_map;
    
    NamesAndTypesList columns;
    NamesAndTypesList part_columns;
    UncompressedCache * uncompressed_cache;
    MarkCache * mark_cache;
    MergeTreeReaderSettings settings;
    const MergeTreeData & storage;
    StorageMetadataPtr metadata_snapshot;
    MarkRanges all_mark_ranges;
    using ColumnPosition = std::optional<size_t>;
    ColumnPosition findColumnForOffsets(const String & column_name) const;
    friend class MergeTreeRangeReader::DelayedStream;
private:
    
    MergeTreeData::AlterConversions alter_conversions;
    
    DenseHashMap<StringRef, const DataTypePtr *, StringRefHash> columns_from_part;
};
}