diff --git a/dbms/src/Dictionaries/RedisBlockInputStream.cpp b/dbms/src/Dictionaries/RedisBlockInputStream.cpp index 56f12c74822..7f23a421989 100644 --- a/dbms/src/Dictionaries/RedisBlockInputStream.cpp +++ b/dbms/src/Dictionaries/RedisBlockInputStream.cpp @@ -192,22 +192,19 @@ namespace DB } Poco::Redis::Command commandForValues("HMGET"); - const auto & primary_key = *keys_array.begin(); - commandForValues.addRedisType(primary_key); - for (size_t i = 1; i < keys_array.size(); ++i) + for (size_t i = 0; i < keys_array.size(); ++i) { const auto & secondary_key = *(keys_array.begin() + i); - insertValueByIdx(0, primary_key); - insertValueByIdx(1, secondary_key); commandForValues.addRedisType(secondary_key); } ++cursor; Poco::Redis::Array values = client->execute(commandForValues); - if (commandForValues.size() != values.size() + 2) // 'HMGET' primary_key secondary_keys + if (keys_array.size() != values.size() + 1) // 'HMGET' primary_key secondary_keys throw Exception{"Inconsistent sizes of keys and values in Redis request", ErrorCodes::NUMBER_OF_COLUMNS_DOESNT_MATCH}; + const auto & primary_key = *keys_array.begin(); for (size_t i = 0; i < values.size(); ++i) { const auto & secondary_key = *(keys_array.begin() + i + 1); diff --git a/dbms/src/Dictionaries/RedisDictionarySource.cpp b/dbms/src/Dictionaries/RedisDictionarySource.cpp index 282f4187a45..8def8abcf0e 100644 --- a/dbms/src/Dictionaries/RedisDictionarySource.cpp +++ b/dbms/src/Dictionaries/RedisDictionarySource.cpp @@ -147,14 +147,15 @@ namespace DB { Poco::Redis::Command command_for_secondary_keys("HKEYS"); command_for_secondary_keys.addRedisType(key); + Poco::Redis::Array reply_for_primary_key = client->execute(command_for_secondary_keys); - Poco::SharedPtr primary_with_secondary; - primary_with_secondary->addRedisType(key); + Poco::Redis::Array primary_with_secondary; + primary_with_secondary.addRedisType(key); for (const auto & secondary_key : reply_for_primary_key) - primary_with_secondary->addRedisType(secondary_key); + primary_with_secondary.addRedisType(secondary_key); - hkeys.add(*primary_with_secondary); + hkeys.add(primary_with_secondary); } keys = hkeys; }