**Describe the issue**

Improve feedback when trying to replace a partition with a different index

**Which ClickHouse server version to use**

21.9.5


**How to reproduce**

```
DROP DATABASE IF EXISTS test;

CREATE DATABASE test;

CREATE TABLE test.A (id UInt32, company UInt32, total UInt64) ENGINE=SummingMergeTree() PARTITION BY company PRIMARY KEY (id) ORDER BY (id, company);

INSERT INTO test.A SELECT number%10 as id, number%2 as company, count() as total FROM numbers(100) GROUP BY id,company;

CREATE TABLE test.B (id UInt32, company UInt32, total UInt64) ENGINE=SummingMergeTree() PARTITION BY company ORDER BY (id, company);

ALTER TABLE test.B REPLACE PARTITION '0' FROM test.A;

```

**Error message and/or stacktrace**

```
Received exception from server (version 21.9.5):
Code: 33. DB::Exception: Received from localhost:9000. DB::Exception: Cannot read all data. Bytes read: 0. Bytes expected: 4.. (CANNOT_READ_ALL_DATA)
(query: ALTER TABLE test.B REPLACE PARTITION '0' FROM test.A;)
````

**Expected behavior**

```
Code: 33. DB::Exception: Received from localhost:9000. DB::Exception: Cannot replace partition different index (CANNOT_REPLACE_PARTITION)
(query: ALTER TABLE test.B REPLACE PARTITION '0' FROM test.A;)
```

{
        LOG_TRACE(log, "Got move TTL entry, will try to reserver destination for move");
        SpacePtr destination_ptr = getDestinationForMoveTTL(*move_ttl_entry, is_insert);
        if (!destination_ptr)
        {
            if (move_ttl_entry->destination_type == DataDestinationType::VOLUME && !move_ttl_entry->if_exists)
                LOG_WARNING(
                    log,
                    "Would like to reserve space on volume '{}' by TTL rule of table '{}' but volume was not found or rule is not "
                    "applicable at the moment",
                    move_ttl_entry->destination_name,
                    *std::atomic_load(&log_name));
            else if (move_ttl_entry->destination_type == DataDestinationType::DISK && !move_ttl_entry->if_exists)
                LOG_WARNING(
                    log,
                    "Would like to reserve space on disk '{}' by TTL rule of table '{}' but disk was not found or rule is not applicable "
                    "at the moment",
                    move_ttl_entry->destination_name,
                    *std::atomic_load(&log_name));
        }
        else
        {
            LOG_TRACE(log, "Reserving bytes on selected destination");
            reservation = destination_ptr->reserve(expected_size);
            if (reservation)
            {
                LOG_TRACE(log, "Reservation successful");
                return reservation;
            }
            else