- 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. ...
else
                    {
                        LOG_DEBUG(log, "Found that shard {} does not contain current partition {}", shard->getDescription(), partition_name);
                        continue;
                    }
                }
                else
                {
                    
                    previous_shard_is_instantly_finished = true;
                    continue;
                }
            }
            auto it_shard_partition = shard->partition_tasks.find(partition_name);
            
            
            if (it_shard_partition == shard->partition_tasks.end())
                throw Exception("There are no such partition in a shard. This is a bug.", ErrorCodes::LOGICAL_ERROR);
            auto & partition = it_shard_partition->second;
            expected_shards.emplace_back(shard);
            
            bool is_unprioritized_task = !previous_shard_is_instantly_finished && shard->priority.is_remote;
            TaskStatus task_status = TaskStatus::Error;
            bool was_error = false;
            has_shard_to_process = true;
            for (UInt64 try_num = 0; try_num < max_shard_partition_tries; ++try_num)
            {
                task_status = tryProcessPartitionTask(timeouts, partition, is_unprioritized_task);
                
                if (task_status == TaskStatus::Finished)