This is an automated email from the ASF dual-hosted git repository.
twice pushed a commit to branch unstable
in repository https://gitbox.apache.org/repos/asf/kvrocks.git
The following commit(s) were added to refs/heads/unstable by this push:
new af13343f Fix code style of Json::ArrAppend (#1846)
af13343f is described below
commit af13343f392a834085656b56511e6d9bdc0e4247
Author: Twice <[email protected]>
AuthorDate: Sun Oct 22 02:11:27 2023 +0900
Fix code style of Json::ArrAppend (#1846)
---
src/commands/cmd_json.cc | 4 ++--
src/types/json.h | 14 ++++++++------
src/types/redis_json.cc | 5 +++--
src/types/redis_json.h | 2 +-
tests/cppunit/types/json_test.cc | 4 +++-
5 files changed, 17 insertions(+), 12 deletions(-)
diff --git a/src/commands/cmd_json.cc b/src/commands/cmd_json.cc
index 34cc6415..2c0fb0c6 100644
--- a/src/commands/cmd_json.cc
+++ b/src/commands/cmd_json.cc
@@ -105,13 +105,13 @@ class CommandJsonArrAppend : public Commander {
Status Execute(Server *svr, Connection *conn, std::string *output) override {
redis::Json json(svr->storage, conn->GetNamespace());
- std::vector<uint64_t> result_count;
+ std::vector<size_t> result_count;
auto s = json.ArrAppend(args_[1], args_[2], {args_.begin() + 3,
args_.end()}, &result_count);
if (!s.ok()) return {Status::RedisExecErr, s.ToString()};
*output = redis::MultiLen(result_count.size());
- for (uint64_t c : result_count) {
+ for (size_t c : result_count) {
if (c != 0) {
*output += redis::Integer(c);
} else {
diff --git a/src/types/json.h b/src/types/json.h
index 667ce51b..a3dd4c95 100644
--- a/src/types/json.h
+++ b/src/types/json.h
@@ -114,22 +114,24 @@ struct JsonValue {
}
}
- Status ArrAppend(std::string_view path, const std::vector<jsoncons::json>
&append_values,
- std::vector<uint64_t> *result_count) {
+ StatusOr<std::vector<size_t>> ArrAppend(std::string_view path, const
std::vector<jsoncons::json> &append_values) {
+ std::vector<size_t> result_count;
+
try {
jsoncons::jsonpath::json_replace(
- value, path, [&append_values, result_count](const std::string &path,
jsoncons::json &val) {
+ value, path, [&append_values, &result_count](const std::string &
/*path*/, jsoncons::json &val) {
if (val.is_array()) {
val.insert(val.array_range().end(), append_values.begin(),
append_values.end());
- result_count->emplace_back(val.size());
+ result_count.emplace_back(val.size());
} else {
- result_count->emplace_back(0);
+ result_count.emplace_back(0);
}
});
} catch (const jsoncons::jsonpath::jsonpath_error &e) {
return {Status::NotOK, e.what()};
}
- return Status::OK();
+
+ return result_count;
}
Status Type(std::string_view path, std::vector<std::string> *types) const {
diff --git a/src/types/redis_json.cc b/src/types/redis_json.cc
index e16fc161..7381fef6 100644
--- a/src/types/redis_json.cc
+++ b/src/types/redis_json.cc
@@ -122,7 +122,7 @@ rocksdb::Status Json::Get(const std::string &user_key,
const std::vector<std::st
}
rocksdb::Status Json::ArrAppend(const std::string &user_key, const std::string
&path,
- const std::vector<std::string> &values,
std::vector<uint64_t> *result_count) {
+ const std::vector<std::string> &values,
std::vector<size_t> *result_count) {
auto ns_key = AppendNamespacePrefix(user_key);
std::vector<jsoncons::json> append_values;
@@ -141,8 +141,9 @@ rocksdb::Status Json::ArrAppend(const std::string
&user_key, const std::string &
auto s = read(ns_key, &metadata, &value);
if (!s.ok()) return s;
- auto append_res = value.ArrAppend(path, append_values, result_count);
+ auto append_res = value.ArrAppend(path, append_values);
if (!append_res) return rocksdb::Status::InvalidArgument(append_res.Msg());
+ *result_count = *append_res;
bool is_write = std::any_of(result_count->begin(), result_count->end(),
[](uint64_t c) { return c > 0; });
if (!is_write) return rocksdb::Status::OK();
diff --git a/src/types/redis_json.h b/src/types/redis_json.h
index d932d53d..d9492706 100644
--- a/src/types/redis_json.h
+++ b/src/types/redis_json.h
@@ -37,7 +37,7 @@ class Json : public Database {
rocksdb::Status Get(const std::string &user_key, const
std::vector<std::string> &paths, JsonValue *result);
rocksdb::Status Type(const std::string &user_key, const std::string &path,
std::vector<std::string> *results);
rocksdb::Status ArrAppend(const std::string &user_key, const std::string
&path,
- const std::vector<std::string> &values,
std::vector<uint64_t> *result_count);
+ const std::vector<std::string> &values,
std::vector<size_t> *result_count);
private:
rocksdb::Status write(Slice ns_key, JsonMetadata *metadata, const JsonValue
&json_val);
diff --git a/tests/cppunit/types/json_test.cc b/tests/cppunit/types/json_test.cc
index 3f3db030..e3be9774 100644
--- a/tests/cppunit/types/json_test.cc
+++ b/tests/cppunit/types/json_test.cc
@@ -22,6 +22,8 @@
#include <gtest/gtest.h>
#include <types/redis_json.h>
+#include <cstddef>
+
#include "test_base.h"
class RedisJsonTest : public TestBase {
@@ -139,7 +141,7 @@ TEST_F(RedisJsonTest, Print) {
}
TEST_F(RedisJsonTest, ArrAppend) {
- std::vector<uint64_t> res;
+ std::vector<size_t> res;
ASSERT_FALSE(json_->ArrAppend(key_, "$", {"1"}, &res).ok());