**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.
* The profile can also be set using the `set` functions, like the profile setting.
     */
    void setProfile(const String & profile_name, const Poco::Util::AbstractConfiguration & config);
    /// 
    void loadSettingsFromConfig(const String & path, const Poco::Util::AbstractConfiguration & config);
    /// 
    void dumpToMapColumn(IColumn * column, bool changed_only = true);
    /// 
    /// 
    void addProgramOptions(boost::program_options::options_description & options);
    /// 
    /// 
    /// 
    void addProgramOptionsAsMultitokens(boost::program_options::options_description & options);
    /// 
    /// 
    static void checkNoSettingNamesAtTopLevel(const Poco::Util::AbstractConfiguration & config, const String & config_path);
    std::vector<String> getAllRegisteredNames() const override;
    void addProgramOption(boost::program_options::options_description & options, const SettingFieldRef & field);
    void addProgramOptionAsMultitoken(boost::program_options::options_description & options, const SettingFieldRef & field);
};
/*
 * User-specified file format settings for File and URL engines.
 */
DECLARE_SETTINGS_TRAITS(FormatFactorySettingsTraits, FORMAT_FACTORY_SETTINGS)
struct FormatFactorySettings : public BaseSettings<FormatFactorySettingsTraits>
{
};
}