**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.
{
public:
    explicit Runner(GRPCServer & owner_) : owner(owner_) {}
    ~Runner()
    {
        if (queue_thread.joinable())
            queue_thread.join();
    }
    void start()
    {
        startReceivingNewCalls();
        
        auto runner_function = [this]
        {
            try
            {
                run();
            }
            catch (...)
            {
                tryLogCurrentException("GRPCServer");
            }
        };
        queue_thread = ThreadFromGlobalPool{runner_function};
    }
    void stop() { stopReceivingNewCalls(); }