**Describe the situation**

```
SELECT * FROM test.hits INTO OUTFILE 'dump.csv' FORMAT CSV

8873898 rows in set. Elapsed: 32.487 sec. Processed 8.87 million rows, 8.46 GB (273.15 thousand rows/s., 260.42 MB/s.)
```

is bounded by single CPU core. Too slow :(
}
}
void ClientBase::sendData(Block & sample, const ColumnsDescription & columns_description, ASTPtr parsed_query)
{
    /// If INSERT data must be sent.
    rsed_query->as<ASTInsertQuery>(
    if (!parsed_insert_query)
        return;
    if (need_render_progress)
    {
        /// Set total_bytes_to_read for current fd.
        FileProgress file_progress(0, std_in.size()
        progress_indication.updateProgress(Progress(file_progress)
        /// Set callback to be called on file progress.
        progress_indication.setFileProgressCallback(global_context, true
    }
    /// If data fetched from file (maybe compressed file)
    if (parsed_insert_query->infile)
    {
        /// Get name of this file (path to file)
        const auto & in_file_node = parsed_insert_query->infile->as<ASTLiteral &>(
        const auto in_file = in_file_node.value.safeGet<std::string>(
        std::string compression_method;
        /// Compression method can be specified in query
        if (parsed_insert_query->compression)
        {
            const auto & compression_method_node = parsed_insert_query->compression->as<ASTLiteral &>(
            compression_method = compression_method_node.value.safeGet<std::string>(
        }
        /// Otherwise, it will be detected from file name automatically (by chooseCompressionMethod)