**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.
{
        static std::once_flag once_flag;
        std::call_once(once_flag, [&config]
        {
            static Poco::Logger * logger = &Poco::Logger::get("grpc");
            gpr_set_log_function([](gpr_log_func_args* args)
            {
                if (args->severity == GPR_LOG_SEVERITY_DEBUG)
                    LOG_DEBUG(logger, "{} ({}:{})", args->message, args->file, args->line);
                else if (args->severity == GPR_LOG_SEVERITY_INFO)
                    LOG_INFO(logger, "{} ({}:{})", args->message, args->file, args->line);
                else if (args->severity == GPR_LOG_SEVERITY_ERROR)
                    LOG_ERROR(logger, "{} ({}:{})", args->message, args->file, args->line);
            });
            if (config.getBool("grpc.verbose_logs", false))
            {
                gpr_set_log_verbosity(GPR_LOG_SEVERITY_DEBUG);
                grpc_tracer_set_enabled("all", true);
            }
            else if (logger->is(Poco::Message::PRIO_DEBUG))
            {
                gpr_set_log_verbosity(GPR_LOG_SEVERITY_DEBUG);
            }
            else if (logger->is(Poco::Message::PRIO_INFORMATION))
            {
                gpr_set_log_verbosity(GPR_LOG_SEVERITY_INFO);
            }
        });