**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 bool cancelled() { return exit_on_signal.test( }
};
/// This signal handler is set only for SIGINT.
void interruptSignalHandler(int signum)
{
    andler::stop())
        safeExit(128 + signum
}
/// To cancel the query on local format error.
class LocalFormatError : public DB::Exception
{
public:
    using Exception::Exception;
};
ClientBase::~ClientBase() = default;
ClientBase::ClientBase() = default;
void ClientBase::setupSignalHandler()
{
    QueryInterruptHandler::stop(
    struct sigaction new_act;
    memset(&new_act, 0, sizeof(new_act)
    new_act.sa_handler = interruptSignalHandler;
    new_act.sa_flags = 0;
#if defined(OS_DARWIN)
    sigemptyset(&new_act.sa_mask
#else
    if (sigemptyset(&new_act.sa_mask))
        throw Exception(ErrorCodes::CANNOT_SET_SIGNAL_HANDLER, "Cannot set signal handler."
#endif
    if (sigaction(SIGINT, &new_act, nullptr))