diff --git a/src/commands/cmd_hash.cc b/src/commands/cmd_hash.cc index 3eac5ab86ef..c62aabd572c 100644 --- a/src/commands/cmd_hash.cc +++ b/src/commands/cmd_hash.cc @@ -284,7 +284,7 @@ class CommandHVals : public Commander { for (const auto &p : field_values) { values.emplace_back(p.value); } - *output = conn->MultiBulkString(values, false); + *output = ArrayOfBulkStrings(values); return Status::OK(); } @@ -350,7 +350,7 @@ class CommandHRangeByLex : public Commander { kv_pairs.emplace_back(p.field); kv_pairs.emplace_back(p.value); } - *output = conn->MultiBulkString(kv_pairs, false); + *output = ArrayOfBulkStrings(kv_pairs); return Status::OK(); } @@ -417,7 +417,7 @@ class CommandHRandField : public Commander { if (no_parameters_) *output = s.IsNotFound() ? conn->NilString() : redis::BulkString(result_entries[0]); else - *output = conn->MultiBulkString(result_entries, false); + *output = ArrayOfBulkStrings(result_entries); return Status::OK(); } diff --git a/src/commands/cmd_json.cc b/src/commands/cmd_json.cc index 5377ed31654..8cd49c51e3f 100644 --- a/src/commands/cmd_json.cc +++ b/src/commands/cmd_json.cc @@ -226,7 +226,7 @@ class CommandJsonObjkeys : public Commander { *output = redis::MultiLen(results.size()); for (const auto &item : results) { if (item.has_value()) { - *output += conn->MultiBulkString(item.value(), false); + *output += ArrayOfBulkStrings(item.value()); } else { *output += conn->NilString(); } diff --git a/src/commands/cmd_list.cc b/src/commands/cmd_list.cc index 5470d444f4f..726d2a70889 100644 --- a/src/commands/cmd_list.cc +++ b/src/commands/cmd_list.cc @@ -536,7 +536,7 @@ class CommandLRange : public Commander { return {Status::RedisExecErr, s.ToString()}; } - *output = conn->MultiBulkString(elems, false); + *output = ArrayOfBulkStrings(elems); return Status::OK(); } @@ -839,7 +839,7 @@ class CommandLPos : public Commander { for (const auto &index : indexes) { values.emplace_back(std::to_string(index)); } - *output = conn->MultiBulkString(values, false); + *output = ArrayOfBulkStrings(values); } return Status::OK(); } diff --git a/src/commands/cmd_server.cc b/src/commands/cmd_server.cc index fb6ca8a44a2..c86a152c07b 100644 --- a/src/commands/cmd_server.cc +++ b/src/commands/cmd_server.cc @@ -105,7 +105,7 @@ class CommandNamespace : public Commander { } namespaces.emplace_back(kDefaultNamespace); namespaces.emplace_back(config->requirepass); - *output = conn->MultiBulkString(namespaces, false); + *output = ArrayOfBulkStrings(namespaces); } else { auto token = srv->GetNamespace()->Get(args_[2]); if (token.Is()) { @@ -835,7 +835,7 @@ class CommandScan : public CommandScanBase { list.emplace_back(redis::BulkString("0")); } - list.emplace_back(conn->MultiBulkString(keys, false)); + list.emplace_back(ArrayOfBulkStrings(keys)); return redis::Array(list); } diff --git a/src/commands/cmd_zset.cc b/src/commands/cmd_zset.cc index a1380265175..7d80829df5c 100644 --- a/src/commands/cmd_zset.cc +++ b/src/commands/cmd_zset.cc @@ -1409,7 +1409,7 @@ class CommandZRandMember : public Commander { if (no_parameters_) *output = s.IsNotFound() ? conn->NilString() : redis::BulkString(result_entries[0]); else - *output = conn->MultiBulkString(result_entries, false); + *output = ArrayOfBulkStrings(result_entries); return Status::OK(); } diff --git a/src/commands/scan_base.h b/src/commands/scan_base.h index bab86e218a7..5fc345c94d4 100644 --- a/src/commands/scan_base.h +++ b/src/commands/scan_base.h @@ -74,7 +74,7 @@ class CommandScanBase : public Commander { list.emplace_back(redis::BulkString("0")); } - list.emplace_back(conn->MultiBulkString(keys, false)); + list.emplace_back(ArrayOfBulkStrings(keys)); return redis::Array(list); } @@ -129,7 +129,7 @@ class CommandSubkeyScanBase : public CommandScanBase { fvs.emplace_back(values[i]); } } - list.emplace_back(conn->MultiBulkString(fvs, false)); + list.emplace_back(ArrayOfBulkStrings(fvs)); return redis::Array(list); } diff --git a/src/server/redis_connection.cc b/src/server/redis_connection.cc index 83e4a1980e5..99d579fe136 100644 --- a/src/server/redis_connection.cc +++ b/src/server/redis_connection.cc @@ -137,11 +137,10 @@ std::string Connection::Bool(bool b) const { return Integer(b ? 1 : 0); } -std::string Connection::MultiBulkString(const std::vector &values, - bool output_nil_for_empty_string) const { +std::string Connection::MultiBulkString(const std::vector &values) const { std::string result = "*" + std::to_string(values.size()) + CRLF; for (const auto &value : values) { - if (value.empty() && output_nil_for_empty_string) { + if (value.empty()) { result += NilString(); } else { result += BulkString(value); diff --git a/src/server/redis_connection.h b/src/server/redis_connection.h index 47b694a0fb1..d05b2e537f4 100644 --- a/src/server/redis_connection.h +++ b/src/server/redis_connection.h @@ -70,7 +70,7 @@ class Connection : public EvbufCallbackBase { } std::string NilString() const { return redis::NilString(protocol_version_); } std::string NilArray() const { return protocol_version_ == RESP::v3 ? "_" CRLF : "*-1" CRLF; } - std::string MultiBulkString(const std::vector &values, bool output_nil_for_empty_string = true) const; + std::string MultiBulkString(const std::vector &values) const; std::string MultiBulkString(const std::vector &values, const std::vector &statuses) const; template , int> = 0>