**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.
// Echo all queries if asked; makes for a more readable reference file.
                echo_query = test_hint.echoQueries().value_or(echo_query
                try
                {
                    processParsedSingleQuery(full_query, query_to_execute, parsed_query, echo_query, false
                }
                catch (...)
                {
                    // Surprisingly, this is a client error. A server error would
                    // have been reported without throwing (see onReceiveSeverException()).
                    client_exception = std::make_unique<Exception>(getCurrentExceptionMessage(print_stack_trace), getCurrentExceptionCode()
                    have_error = true;
                }
                // Check whether the error (or its absence) matches the test hints
                // (or their absence).
                hint = true;
                if 
                {
                    if (test_hint.serverError())
                    {
                        if (!server_exception)
                        {
                            es_hint = false;
                            fmt::print(stderr, "Expected server error code '{}' but got no server error (query: {}).\n",
                                       test_hint.serverError(), full_query
                        }
                        else if (server_exception->code() != test_hint.serverError())
                        {
                            es_hint = false;
                            fmt::print(stderr, "Expected server error code: {} but got: {} (query: {}).\n",