**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.
const auto & external_options = options_description.external_description->options(
        std::transform(external_options.begin(), external_options.end(), std::back_inserter(cmd_options), getter
    }
    parseAndCheckOptions(options_description, options, common_arguments
    po::notify(options
    if (options.count("version") || options.count("V"))
    {
        showClientVersion(
        exit(0
    }
    if (options.count("version-clean"))
    {
        std::cout << VERSION_STRING;
        exit(0
    }
    /// Output of help message.
    if (options.count("help")
        || (options.count("host") && options["host"].as<std::string>() == "elp")) /// If user writes -help instead of --help.
    {
        printHelpMessage(options_description
        exit(0
    }
    /// Common options for clickhouse-client and clickhouse-local.
    if (options.count("time"))
        print_time_to_stderr = true;
    if (options.count("query"))
        config().setString("query", options["query"].as<std::string>()
    if (options.count("query_id"))
        config().setString("query_id", options["query_id"].as<std::string>()
    if (options.count("database"))