**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.
void ClientBase::initBlockOutputStream(const Block & block, ASTPtr parsed_query)
try
{
    if (!output_format)
    {
        /// Ignore all results when fuzzing as they can be huge.
        if (query_fuzzer_runs)
        {
            output_format = std::make_shared<NullOutputFormat>(block
            return;
        }
        WriteBuffer * out_buf = nullptr;
        String pager = config().getString("pager", ""
        if (!pager.empty())
        {
            signal(SIGPIPE, SIG_IGN
            ShellCommand::Config config(pager
            config.pipe_stdin_only = true;
            pager_cmd = ShellCommand::execute(config
            out_buf = &pager_cmd->in;
        }
        else
        {
            out_buf = &std_out;
        }
        String current_format = format;
        select_into_file = false;
        /// The query can specify output format or output file.
        if (const auto * query_with_output = dynamic_cast<const ASTQueryWithOutput *>(parsed_query.get()))
        {