When user requested single column from the table we still calculating all of them. Calculation of some columns is quite expensive (need to do stat calls / read files etc). 
{
public:
    StoragesInfoStream(const SelectQueryInfo & query_info, const Context & context);
    StoragesInfo next();
private:
    String query_id;
    Settings settings;
    ColumnPtr database_column;
    ColumnPtr table_column;
    ColumnPtr active_column;
    size_t next_row;
    size_t rows;
    using StoragesMap = std::map<std::pair<String, String>, StoragePtr>;
    StoragesMap storages;
};
/** Implements system table 'parts' which allows to get information about data parts for tables of MergeTree family.
  */
class StorageSystemPartsBase : public IStorage