- some copier work needs to be improved

1. clickhouse create destionation table just once if success
2. support settings_push.replication_alter_partitions_sync =1 at attach partition 
3. ...
const String & query,
            const Settings & current_settings,
            PoolMode pool_mode = PoolMode::GET_ALL,
            ClusterExecutionMode execution_mode = ClusterExecutionMode::ON_EACH_SHARD,
            UInt64 max_successful_executions_per_shard = 0) const;
private:
    String task_zookeeper_path;
    String task_description_path;
    String host_id;
    String working_database_name;
    
    UInt64 task_description_current_version = 1;
    std::atomic<UInt64> task_description_version{1};
    Coordination::WatchCallback task_description_watch_callback;
    
    zkutil::ZooKeeperPtr task_description_watch_zookeeper;
    ConfigurationPtr task_cluster_initial_config;
    ConfigurationPtr task_cluster_current_config;
    Coordination::Stat task_description_current_stat{};
    std::unique_ptr<TaskCluster> task_cluster;
    bool is_safe_mode = false;
    double copy_fault_probability = 0.0;
    double move_fault_probability = 0.0;
    bool experimental_use_sample_offset{false};
    Context & context;
    Poco::Logger * log;
    std::chrono::milliseconds default_sleep_time{1000};
};
}