- 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. ...
DatabaseAndTableName original_table = task_table.table_push;
        DatabaseAndTableName helping_table = DatabaseAndTableName(original_table.first,
                                                                  original_table.second + "_piece_" +
                                                                  toString(current_piece_number));
        Settings settings_push = task_cluster->settings_push;
        
        
        
        settings_push.replication_alter_partitions_sync = 2;
        query_alter_ast_string += " ALTER TABLE " + getQuotedTable(original_table) +
                                  ((partition_name == "'all'") ? " ATTACH PARTITION ID " : " ATTACH PARTITION ") + partition_name +
                                  " FROM " + getQuotedTable(helping_table);
        LOG_DEBUG(log, "Executing ALTER query: {}", query_alter_ast_string);
        try
        {
            size_t num_nodes = executeQueryOnCluster(
                    task_table.cluster_push,
                    query_alter_ast_string,
                    settings_push,
                    PoolMode::GET_MANY,
                    ClusterExecutionMode::ON_EACH_NODE);
            LOG_INFO(log, "Number of nodes that executed ALTER query successfully : {}", toString(num_nodes));
        }
        catch (...)
        {
            LOG_DEBUG(log, "Error while moving partition {} piece {} to original table", partition_name, toString(current_piece_number));
            throw;
        }
        if (inject_fault)
            throw Exception("Copy fault injection is activated", ErrorCodes::UNFINISHED);