diff --git a/java/rocksjni/merge_operator.cc b/java/rocksjni/merge_operator.cc index 1b94382ef04..01779081796 100644 --- a/java/rocksjni/merge_operator.cc +++ b/java/rocksjni/merge_operator.cc @@ -26,12 +26,12 @@ /* * Class: org_rocksdb_StringAppendOperator * Method: newSharedStringAppendOperator - * Signature: ()J + * Signature: (C)J */ jlong Java_org_rocksdb_StringAppendOperator_newSharedStringAppendOperator -(JNIEnv* env, jclass jclazz) { +(JNIEnv* env, jclass jclazz, jchar jdelim) { auto* sptr_string_append_op = new std::shared_ptr( - rocksdb::MergeOperators::CreateFromStringId("stringappend")); + rocksdb::MergeOperators::CreateStringAppendOperator((char) jdelim)); return reinterpret_cast(sptr_string_append_op); } diff --git a/java/src/main/java/org/rocksdb/StringAppendOperator.java b/java/src/main/java/org/rocksdb/StringAppendOperator.java index 85c36adc7c1..978cad6ccfe 100644 --- a/java/src/main/java/org/rocksdb/StringAppendOperator.java +++ b/java/src/main/java/org/rocksdb/StringAppendOperator.java @@ -11,9 +11,13 @@ */ public class StringAppendOperator extends MergeOperator { public StringAppendOperator() { - super(newSharedStringAppendOperator()); + this(','); } - private native static long newSharedStringAppendOperator(); + public StringAppendOperator(char delim) { + super(newSharedStringAppendOperator(delim)); + } + + private native static long newSharedStringAppendOperator(final char delim); @Override protected final native void disposeInternal(final long handle); } diff --git a/utilities/merge_operators.h b/utilities/merge_operators.h index 40a19cf862a..4c720b822fe 100644 --- a/utilities/merge_operators.h +++ b/utilities/merge_operators.h @@ -19,6 +19,7 @@ class MergeOperators { static std::shared_ptr CreateDeprecatedPutOperator(); static std::shared_ptr CreateUInt64AddOperator(); static std::shared_ptr CreateStringAppendOperator(); + static std::shared_ptr CreateStringAppendOperator(char delim_char); static std::shared_ptr CreateStringAppendTESTOperator(); static std::shared_ptr CreateMaxOperator(); static std::shared_ptr CreateBytesXOROperator(); diff --git a/utilities/merge_operators/string_append/stringappend.cc b/utilities/merge_operators/string_append/stringappend.cc index e3e755dfd8c..d9c135fd371 100644 --- a/utilities/merge_operators/string_append/stringappend.cc +++ b/utilities/merge_operators/string_append/stringappend.cc @@ -52,4 +52,8 @@ std::shared_ptr MergeOperators::CreateStringAppendOperator() { return std::make_shared(','); } +std::shared_ptr MergeOperators::CreateStringAppendOperator(char delim_char) { + return std::make_shared(delim_char); +} + } // namespace rocksdb