**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.
callback(ok);
        }
    }
    GRPCServer & owner;
    ThreadFromGlobalPool queue_thread;
    std::vector<std::unique_ptr<BaseResponder>> responders_for_new_calls;
    std::map<Call *, std::unique_ptr<Call>> current_calls;
    std::vector<std::unique_ptr<Call>> finished_calls;
    bool should_stop = false;
    mutable std::mutex mutex;
};
GRPCServer::GRPCServer(IServer & iserver_, const Poco::Net::SocketAddress & address_to_listen_)
    : iserver(iserver_)
    , address_to_listen(address_to_listen_)
    , log(&Poco::Logger::get("GRPCServer"))
    , runner(std::make_unique<Runner>(*this))
{}
GRPCServer::~GRPCServer()
{
    
    if (grpc_server)
        grpc_server->Shutdown();
    
    
    
    if (queue)
        queue->Shutdown();
    runner.reset();
}
void GRPCServer::start()