Right now size of data parts is available only for non-detached parts in `system.parts`, but `system.detached_parts` lacks this information. It will be useful for analyzing disk space usage. 

const size_t ,
    const size_t )
{
    StoragesInfoStream stream(query_info, context);
    
    Block block = storage_snapshot->metadata->getSampleBlock();
    MutableColumns new_columns = block.cloneEmptyColumns();
    while (StoragesInfo info = stream.next())
    {
        const auto parts = info.data->getDetachedParts();
        for (const auto & p : parts)
        {
            size_t i = 0;
            new_columns[i++]->insert(info.database);
            new_columns[i++]->insert(info.table);
            new_columns[i++]->insert(p.valid_name ? p.partition_id : Field());
            new_columns[i++]->insert(p.dir_name);
            new_columns[i++]->insert(p.disk->getName());
            new_columns[i++]->insert(p.valid_name ? p.prefix : Field());
            new_columns[i++]->insert(p.valid_name ? p.min_block : Field());
            new_columns[i++]->insert(p.valid_name ? p.max_block : Field());
            new_columns[i++]->insert(p.valid_name ? p.level : Field());
        }
    }
    UInt64 num_rows = new_columns.at(0)->size();
    Chunk chunk(std::move(new_columns), num_rows);
    return Pipe(std::make_shared<SourceFromSingleChunk>(std::move(block), std::move(chunk)));
}
}