And waits for them. That's pointless.
}
    size_t sum_input_rows_upper_bound = merge_entry->total_rows_count;
    size_t sum_compressed_bytes_upper_bound = merge_entry->total_size_bytes_compressed;
    MergeAlgorithm chosen_merge_algorithm = chooseMergeAlgorithm(
        parts, sum_input_rows_upper_bound, gathering_columns, deduplicate, need_remove_expired_values, merging_params);
    merge_entry->merge_algorithm.store(chosen_merge_algorithm, std::memory_order_relaxed);
    LOG_DEBUG(log, "Selected MergeAlgorithm: {}", toString(chosen_merge_algorithm));
    
    
    
    
    
    auto compression_codec = data.getCompressionCodecForPart(merge_entry->total_size_bytes_compressed, new_data_part->ttl_infos, time_of_merge);
    auto tmp_disk = context->getTemporaryVolume()->getDisk();
    String rows_sources_file_path;
    std::unique_ptr<WriteBufferFromFileBase> rows_sources_uncompressed_write_buf;
    std::unique_ptr<WriteBuffer> rows_sources_write_buf;
    std::optional<ColumnSizeEstimator> column_sizes;
    SyncGuardPtr sync_guard;
    if (chosen_merge_algorithm == MergeAlgorithm::Vertical)
    {
        tmp_disk->createDirectories(new_part_tmp_path);
        rows_sources_file_path = new_part_tmp_path + "rows_sources";
        rows_sources_uncompressed_write_buf = tmp_disk->writeFile(rows_sources_file_path);
        rows_sources_write_buf = std::make_unique<CompressedWriteBuffer>(*rows_sources_uncompressed_write_buf);
        MergeTreeData::DataPart::ColumnToSize merged_column_to_size;
        for (const MergeTreeData::DataPartPtr & part : parts)
            part->accumulateColumnSizes(merged_column_to_size);
        column_sizes = ColumnSizeEstimator(merged_column_to_size, merging_column_names, gathering_column_names);
        if (data.getSettings()->fsync_part_directory)