**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.
{
            if (str == "none")
                algorithm = GRPC_COMPRESS_NONE;
            else if (str == "deflate")
                algorithm = GRPC_COMPRESS_DEFLATE;
            else if (str == "gzip")
                algorithm = GRPC_COMPRESS_GZIP;
            else if (str == "stream_gzip")
                algorithm = GRPC_COMPRESS_STREAM_GZIP;
            else
                throw Exception(error_code, "Unknown compression algorithm: '{}'", str);
        }
        void setLevel(const String & str, int error_code)
        {
            if (str == "none")
                level = GRPC_COMPRESS_LEVEL_NONE;
            else if (str == "low")
                level = GRPC_COMPRESS_LEVEL_LOW;
            else if (str == "medium")
                level = GRPC_COMPRESS_LEVEL_MED;
            else if (str == "high")
                level = GRPC_COMPRESS_LEVEL_HIGH;
            else
                throw Exception(error_code, "Unknown compression level: '{}'", str);
        }
        void setLevel(int level_, int error_code)