https://play.clickhouse.com/play?user=play#c2VsZWN0IAp0b1N0YXJ0T2ZEYXkoY2hlY2tfc3RhcnRfdGltZSkgYXMgZCwKY291bnQoKSwgIGdyb3VwVW5pcUFycmF5KHB1bGxfcmVxdWVzdF9udW1iZXIpLCAgYW55KHJlcG9ydF91cmwpCmZyb20gY2hlY2tzIHdoZXJlICcyMDIyLTA2LTAxJyA8PSBjaGVja19zdGFydF90aW1lIGFuZCB0ZXN0X25hbWUgbGlrZSAnJTAyNDgxX2FzeW5jX2luc2VydF9kZWR1cCUnIGFuZCB0ZXN0X3N0YXR1cyBpbiAoJ0ZBSUwnLCAnRkxBS1knKSBncm91cCBieSBkIG9yZGVyIGJ5IGQgZGVzYw==

Example: https://s3.amazonaws.com/clickhouse-test-reports/44202/ec09a66fbb074fcccfae4a743106d5e7c3b64e26/stateless_tests__debug__s3_storage__[3/6].html
size_t start_pos = idx > 0 ? offsets[idx - 1] : 0;
                size_t end_pos = offset;
                remove_count += end_pos - start_pos;
                while (start_pos < end_pos)
                {
                    *(pos + start_pos) = 0;
                    start_pos ++;
                }
                it++;
            }
            else
            {
                new_offsets.push_back(offset - remove_count);
                new_block_ids.push_back(partition.block_id[idx]);
            }
            idx++;
        }
        LOG_TRACE(log, "New block IDs: {}, new offsets: {}, size: {}", toString(new_block_ids), toString(new_offsets), new_offsets.size());
        offsets = std::move(new_offsets);
        partition.block_id = std::move(new_block_ids);
        auto cols = partition.block_with_partition.block.getColumns();
        for (auto & col : cols)
        {
            col = col->filter(vec, rows - remove_count);
        }
        partition.block_with_partition.block.setColumns(cols);
        LOG_TRACE(log, "New block rows {}", partition.block_with_partition.block.rows());
        partition.initBlockIDMap();
    }
    std::vector<String> getHashesForBlocks(BlockWithPartition & block, String partition_id)