**Use case**

ClickHouse already throws exception if the data for INSERT is empty:

```
Code: 108. DB::Exception: No data to insert
```

Let's introduce a setting, enabled by default, to control this behavior.
The user will be able to disable it to allow empty INSERTs.

This is useful in some batch scripts.
constexpr sival = 5000; /// in microseconds
    const size_t 
        = std::max(min_, std::min<size_t>(receive_timeout.totalMicroseconds(), default_)
    bool break_on_timeout = connection->getConnectionType() != IServerConnection::Type::LOCAL;
    std::exception_ptr local_format_error;
    while (true)
    {
        Stopwatch receive_watch(CLOCK_MONOTONIC_COARSE
        while (true)
        {
            /// Has the Ctrl+C been pressed and thus the query should be cancelled?
            /// If this is the case, inform the server about it and receive the remaining packets
            /// to avoid losing sync.
            
            {
                auto cancel_query = [&] {
                    connection->sendCancel(
                    if (is_interactive)
                    {
                        progress_indication.clearProgressOutput(
                        std::cout << "Cancelling query." << std::endl;
                    }
                    cancelled = true;
                };
                /// handler received sigint
                andler::cancelled())
                {
                    cancel_query(
                }
                else