**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.
{
        *result.mutable_query_id() = query_context->getClientInfo().current_query_id;
        *result.mutable_time_zone() = DateLUT::instance().getTimeZone();
    }
    void Call::addOutputFormatToResult()
    {
        *result.mutable_output_format() = output_format;
    }
    void Call::addOutputColumnsNamesAndTypesToResult(const Block & header)
    {
        if (!send_output_columns_names_and_types)
            return;
        for (const auto & column : header)
        {
            auto & name_and_type = *result.add_output_columns();
            *name_and_type.mutable_name() = column.name;
            *name_and_type.mutable_type() = column.type->getName();
        }
    }
    void Call::addProgressToResult()