I have a table with one million rows of data. And It's schema is like:
```
create table redis_dictionary_test
(
	date String,
	id String,
	value Int64
)
engine = MergeTree()
partition by date
order by id
settings index_granularity = 8192;
```

I also inserted one million key-value pairs into Redis.
The dictionary is like:
```
create dictionary redis_dict
(
	date String,
	id String,
	value Int64
)
PRIMARY KEY date, id
SOURCE(REDIS(
	host '127.0.0.1'
	port 6379
	storage_type 'hash_map'
	db_index 0
))
LAYOUT(COMPLEX_KEY_DIRECT())
```
When I execute this query: `SELECT COUNT(DISTINCT dictGet('redis_dict', 'value', tuple(date, id))) FROM redis_dictionary_test;`, ClickHouse seems stuck. Progress was in this state: 122.88 thousand rows, 5.84 MB (1.20 million rows/s., 56.83 MB/s.)  12% about five minutes. Finally, I canceled query.

I am sure Redis is fine. Because I monitored Redis and it could accept read and write commands.

I also executed this query on 1000, 10000 and 100000 rows of data. They can return data normally.

What happened to ClickHouse? Where can I find out the reason?
column.getName());
            }
        }
    }
    Chunk RedisSource::generate()
    {
        if (keys.isNull() || description.sample_block.rows() == 0 || cursor >= keys.size())
            all_read = true;
        if (all_read)
            return {};
        const size_t size = description.sample_block.columns();
        MutableColumns columns(size);
        for (size_t i = 0; i < size; ++i)
            columns[i] = description.sample_block.getByPosition(i).column->cloneEmpty();
        const auto insert_value_by_idx = [this, &columns](size_t idx, const auto & value)
        {
            if (description.types[idx].second)
            {
                ColumnNullable & column_nullable = static_cast<ColumnNullable &>(*columns[idx]);
                insertValue(column_nullable.getNestedColumn(), description.types[idx].first, value);
                column_nullable.getNullMapData().emplace_back(0);
            }
            else
                insertValue(*columns[idx], description.types[idx].first, value);
        };
        if (storage_type == RedisStorageType::HASH_MAP)
        {
            size_t num_rows = 0;
            for (; cursor < keys.size(); ++cursor)
            {