**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.
{
    public:
        Call(CallType call_type_, std::unique_ptr<BaseResponder> responder_, IServer & iserver_, Poco::Logger * log_);
        ~Call();
        void start(const std::function<void(void)> & on_finish_call_callback);
    private:
        void run();
        void receiveQuery();
        void executeQuery();
        void processInput();
        void initializeBlockInputStream(const Block & header);
        void createExternalTables();
        void generateOutput();
        void finishQuery();
        void onException(const Exception & exception);
        void onFatalError();
        void releaseQueryIDAndSessionID();
        void close();
        void readQueryInfo();
        void throwIfFailedToReadQueryInfo();
        bool isQueryCancelled();
        void addQueryDetailsToResult();
        void addOutputFormatToResult();
        void addOutputColumnsNamesAndTypesToResult(const Block & headers);
        void addProgressToResult();
        void addTotalsToResult(const Block & totals);