And waits for them. That's pointless.
throw Exception("Cancelled merging parts", ErrorCodes::ABORTED);
    if (need_remove_expired_values && ttl_merges_blocker.isCancelled())
        throw Exception("Cancelled merging parts with expired TTL", ErrorCodes::ABORTED);
    bool need_sync = needSyncPart(sum_input_rows_upper_bound, sum_compressed_bytes_upper_bound, *data_settings);
    MergeTreeData::DataPart::Checksums checksums_gathered_columns;
    
    if (chosen_merge_algorithm == MergeAlgorithm::Vertical)
    {
        size_t sum_input_rows_exact = merge_entry->rows_read;
        merge_entry->columns_written = merging_column_names.size();
        merge_entry->progress.store(column_sizes->keyColumnsWeight(), std::memory_order_relaxed);
        BlockInputStreams column_part_streams(parts.size());
        auto it_name_and_type = gathering_columns.cbegin();
        rows_sources_write_buf->next();
        rows_sources_uncompressed_write_buf->next();
        
        rows_sources_uncompressed_write_buf->finalize();
        size_t rows_sources_count = rows_sources_write_buf->count();
        
        
        
        if ((rows_sources_count > 0 || parts.size() > 1) && sum_input_rows_exact != rows_sources_count)
            throw Exception("Number of rows in source parts (" + toString(sum_input_rows_exact)
                + ") differs from number of bytes written to rows_sources file (" + toString(rows_sources_count)
                + "). It is a bug.", ErrorCodes::LOGICAL_ERROR);
        CompressedReadBufferFromFile rows_sources_read_buf(tmp_disk->readFile(rows_sources_file_path));
        IMergedBlockOutputStream::WrittenOffsetColumns written_offset_columns;
        for (size_t column_num = 0, gathering_column_names_size = gathering_column_names.size();
            column_num < gathering_column_names_size;
            ++column_num, ++it_name_and_type)