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());
 

Reply via email to