**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.
es_hint = false;
                        fmt::print(stderr,
                                   "The query succeeded but the client error '{}' was expected (query: {}).\n",
                                   test_hint.clientError(), full_query
                    }
                    if (test_hint.serverError())
                    {
                        es_hint = false;
                        fmt::print(stderr,
                                   "The query succeeded but the server error '{}' was expected (query: {}).\n",
                                   test_hint.serverError(), full_query
                    }
                }
                // If the error is expected, force reconnect and ignore it.
                if (have_error && es_hint)
                {
                    client_exception.reset(
                    server_exception.reset(
                    have_error = false;
                    if (!connection->checkConnected())
                        connect(
                }
                // For INSERTs with inline data: use the end of inline data as
                // reported by the format parser (it is saved in sendData()).
                // This allows us to handle queries like:
                //   insert into t values (1 select 1
                // , where the inline data is delimited by semicolon and not by a
                // newline.
                auto * insert_y->as<ASTInsertQuery>(
                if (insert_ast && isSyncInsertWithData(*insert_ast, global_context))