**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.
data = last_token->end;
        
        if (data < end && *data == ';')
            throw Exception("You have excessive ';' symbol before data for INSERT.\n"
                                    "Example:\n\n"
                                    "INSERT INTO t (x, y) FORMAT TabSeparated\n"
                                    ";\tHello\n"
                                    "2\tWorld\n"
                                    "\n"
                                    "Note that there is no ';' just after format name, "
                                    "you need to put at least one whitespace symbol before the data.", ErrorCodes::SYNTAX_ERROR);
        while (data < end && (*data == ' ' || *data == '\t' || *data == '\f'))
            ++data;
        
        if (data < end && *data == '\r')
            ++data;
        if (data < end && *data == '\n')
            ++data;
    }
    
    auto query = std::make_shared<ASTInsertQuery>();
    node = query;
    if (infile)
    {
        query->infile = infile;
        if (compression)
            query->compression = compression;
    }
    if (table_function)
    {