Added SstFileWriter construtor without explicit comparator to JNI api
Summary:
Adding API missing after 1ffbdfd9a7 (diff-b94146418eed4a9c1bf324041b95b279)
.
adamretter IslamAbdelRahman
Tested locally.
Closes https://github.com/facebook/rocksdb/pull/2028
Differential Revision: D4762817
Pulled By: IslamAbdelRahman
fbshipit-source-id: 833f478
This commit is contained in:
parent
4fa68fb3f2
commit
491fa696fa
@ -22,7 +22,7 @@
|
|||||||
* Method: newSstFileWriter
|
* Method: newSstFileWriter
|
||||||
* Signature: (JJJ)J
|
* Signature: (JJJ)J
|
||||||
*/
|
*/
|
||||||
jlong Java_org_rocksdb_SstFileWriter_newSstFileWriter(JNIEnv *env, jclass jcls,
|
jlong Java_org_rocksdb_SstFileWriter_newSstFileWriter__JJJ(JNIEnv *env, jclass jcls,
|
||||||
jlong jenvoptions,
|
jlong jenvoptions,
|
||||||
jlong joptions,
|
jlong joptions,
|
||||||
jlong jcomparator) {
|
jlong jcomparator) {
|
||||||
@ -35,6 +35,22 @@ jlong Java_org_rocksdb_SstFileWriter_newSstFileWriter(JNIEnv *env, jclass jcls,
|
|||||||
return reinterpret_cast<jlong>(sst_file_writer);
|
return reinterpret_cast<jlong>(sst_file_writer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Class: org_rocksdb_SstFileWriter
|
||||||
|
* Method: newSstFileWriter
|
||||||
|
* Signature: (JJ)J
|
||||||
|
*/
|
||||||
|
jlong Java_org_rocksdb_SstFileWriter_newSstFileWriter__JJ(JNIEnv *env, jclass jcls,
|
||||||
|
jlong jenvoptions,
|
||||||
|
jlong joptions) {
|
||||||
|
auto *env_options =
|
||||||
|
reinterpret_cast<const rocksdb::EnvOptions *>(jenvoptions);
|
||||||
|
auto *options = reinterpret_cast<const rocksdb::Options *>(joptions);
|
||||||
|
rocksdb::SstFileWriter *sst_file_writer =
|
||||||
|
new rocksdb::SstFileWriter(*env_options, *options);
|
||||||
|
return reinterpret_cast<jlong>(sst_file_writer);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Class: org_rocksdb_SstFileWriter
|
* Class: org_rocksdb_SstFileWriter
|
||||||
* Method: open
|
* Method: open
|
||||||
|
@ -16,6 +16,11 @@ public class SstFileWriter extends RocksObject {
|
|||||||
envOptions.nativeHandle_, options.nativeHandle_, comparator.getNativeHandle()));
|
envOptions.nativeHandle_, options.nativeHandle_, comparator.getNativeHandle()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public SstFileWriter(final EnvOptions envOptions, final Options options) {
|
||||||
|
super(newSstFileWriter(
|
||||||
|
envOptions.nativeHandle_, options.nativeHandle_));
|
||||||
|
}
|
||||||
|
|
||||||
public void open(final String filePath) throws RocksDBException {
|
public void open(final String filePath) throws RocksDBException {
|
||||||
open(nativeHandle_, filePath);
|
open(nativeHandle_, filePath);
|
||||||
}
|
}
|
||||||
@ -35,6 +40,9 @@ public class SstFileWriter extends RocksObject {
|
|||||||
private native static long newSstFileWriter(
|
private native static long newSstFileWriter(
|
||||||
final long envOptionsHandle, final long optionsHandle, final long userComparatorHandle);
|
final long envOptionsHandle, final long optionsHandle, final long userComparatorHandle);
|
||||||
|
|
||||||
|
private native static long newSstFileWriter(final long envOptionsHandle,
|
||||||
|
final long optionsHandle);
|
||||||
|
|
||||||
private native void open(final long handle, final String filePath) throws RocksDBException;
|
private native void open(final long handle, final String filePath) throws RocksDBException;
|
||||||
|
|
||||||
private native void add(final long handle, final long keyHandle, final long valueHandle)
|
private native void add(final long handle, final long keyHandle, final long valueHandle)
|
||||||
|
@ -27,13 +27,23 @@ public class SstFileWriterTest {
|
|||||||
|
|
||||||
@Rule public TemporaryFolder parentFolder = new TemporaryFolder();
|
@Rule public TemporaryFolder parentFolder = new TemporaryFolder();
|
||||||
|
|
||||||
private File newSstFile(final TreeMap<String, String> keyValues)
|
private File newSstFile(final TreeMap<String, String> keyValues,
|
||||||
|
boolean useJavaBytewiseComparator)
|
||||||
throws IOException, RocksDBException {
|
throws IOException, RocksDBException {
|
||||||
final EnvOptions envOptions = new EnvOptions();
|
final EnvOptions envOptions = new EnvOptions();
|
||||||
final ComparatorOptions comparatorOptions = new ComparatorOptions();
|
final Options options = new Options();
|
||||||
final BytewiseComparator comparator = new BytewiseComparator(comparatorOptions);
|
SstFileWriter sstFileWriter = null;
|
||||||
final Options options = new Options().setComparator(comparator);
|
ComparatorOptions comparatorOptions = null;
|
||||||
final SstFileWriter sstFileWriter = new SstFileWriter(envOptions, options, comparator);
|
BytewiseComparator comparator = null;
|
||||||
|
if (useJavaBytewiseComparator) {
|
||||||
|
comparatorOptions = new ComparatorOptions();
|
||||||
|
comparator = new BytewiseComparator(comparatorOptions);
|
||||||
|
options.setComparator(comparator);
|
||||||
|
sstFileWriter = new SstFileWriter(envOptions, options, comparator);
|
||||||
|
} else {
|
||||||
|
sstFileWriter = new SstFileWriter(envOptions, options);
|
||||||
|
}
|
||||||
|
|
||||||
final File sstFile = parentFolder.newFile(SST_FILE_NAME);
|
final File sstFile = parentFolder.newFile(SST_FILE_NAME);
|
||||||
try {
|
try {
|
||||||
sstFileWriter.open(sstFile.getAbsolutePath());
|
sstFileWriter.open(sstFile.getAbsolutePath());
|
||||||
@ -50,18 +60,30 @@ public class SstFileWriterTest {
|
|||||||
sstFileWriter.close();
|
sstFileWriter.close();
|
||||||
options.close();
|
options.close();
|
||||||
envOptions.close();
|
envOptions.close();
|
||||||
comparatorOptions.close();
|
if (comparatorOptions != null) {
|
||||||
comparator.close();
|
comparatorOptions.close();
|
||||||
|
}
|
||||||
|
if (comparator != null) {
|
||||||
|
comparator.close();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return sstFile;
|
return sstFile;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void generateSstFile() throws RocksDBException, IOException {
|
public void generateSstFileWithJavaComparator() throws RocksDBException, IOException {
|
||||||
final TreeMap<String, String> keyValues = new TreeMap<>();
|
final TreeMap<String, String> keyValues = new TreeMap<>();
|
||||||
keyValues.put("key1", "value1");
|
keyValues.put("key1", "value1");
|
||||||
keyValues.put("key2", "value2");
|
keyValues.put("key2", "value2");
|
||||||
newSstFile(keyValues);
|
newSstFile(keyValues, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void generateSstFileWithNativeComparator() throws RocksDBException, IOException {
|
||||||
|
final TreeMap<String, String> keyValues = new TreeMap<>();
|
||||||
|
keyValues.put("key1", "value1");
|
||||||
|
keyValues.put("key2", "value2");
|
||||||
|
newSstFile(keyValues, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -69,7 +91,7 @@ public class SstFileWriterTest {
|
|||||||
final TreeMap<String, String> keyValues = new TreeMap<>();
|
final TreeMap<String, String> keyValues = new TreeMap<>();
|
||||||
keyValues.put("key1", "value1");
|
keyValues.put("key1", "value1");
|
||||||
keyValues.put("key2", "value2");
|
keyValues.put("key2", "value2");
|
||||||
final File sstFile = newSstFile(keyValues);
|
final File sstFile = newSstFile(keyValues, false);
|
||||||
final File dbFolder = parentFolder.newFolder(DB_DIRECTORY_NAME);
|
final File dbFolder = parentFolder.newFolder(DB_DIRECTORY_NAME);
|
||||||
final Options options = new Options().setCreateIfMissing(true);
|
final Options options = new Options().setCreateIfMissing(true);
|
||||||
final RocksDB db = RocksDB.open(options, dbFolder.getAbsolutePath());
|
final RocksDB db = RocksDB.open(options, dbFolder.getAbsolutePath());
|
||||||
|
Loading…
Reference in New Issue
Block a user