The only columns that show what they are supposed to are `database`, `table`, `name` and `disk`.
The other columns borrow values from a neighbour.
```
┌─table────────┬─partition_id─┬─name────────────────────────────────┬─disk────┬─reason─┬─min_block_number─┬─max_block_number─┬───level─┐
│ actions_log  │ ignored      │ ignored_202107_714380_714380_0      │ default │        │           202107 │           714380 │  714380 │
│ actions_log  │ ignored      │ ignored_202107_713838_713838_0      │ default │        │           202107 │           713838 │  713838 │
│ actions_log  │ ignored      │ ignored_202107_713875_713875_0      │ default │        │           202107 │           713875 │  713875 │
│ actions_log  │ ignored      │ ignored_202107_725839_725839_0      │ default │        │           202107 │           725839 │  725839 │
│ actions_log  │ ignored      │ ignored_202107_713927_713927_0      │ default │        │           202107 │           713927 │  713927 │
│ actions_log  │ ignored      │ ignored_202107_714009_714009_0      │ default │        │           202107 │           714009 │  714009 │
```
const String & part_name,
    const UUID & part_uuid,
    const StorageMetadataPtr & metadata_snapshot,
    ContextPtr context,
    DiskPtr disk,
    PooledReadWriteBufferFromHTTP & in,
    size_t projections,
    ThrottlerPtr throttler)
{
    auto volume = std::make_shared<SingleDiskVolume>("volume_" + part_name, disk, 0);
    MergeTreeData::MutableDataPartPtr new_data_part =
        std::make_shared<MergeTreeDataPartInMemory>(data, part_name, volume);
    for (auto i = 0ul; i < projections; ++i)
    {
        String projection_name;
        readStringBinary(projection_name, in);
        MergeTreeData::DataPart::Checksums checksums;
        if (!checksums.read(in))
            throw Exception("Cannot deserialize checksums", ErrorCodes::CORRUPTED_DATA);
        NativeBlockInputStream block_in(in, 0);
        auto block = block_in.read();