rocksdb/java/rocksjni/sst_partitioner.cc
Tomas Kolda cd4592c220 SST Partitioner interface that allows to split SST files (#6957)
Summary:
SST Partitioner interface that allows to split SST files during compactions.

It basically instruct compaction to create a new file when needed. When one is using well defined prefixes and prefixed way of defining tables it is good to define also partitioning so that promotion of some SST file does not cover huge key space on next level (worst case complete space).

Pull Request resolved: https://github.com/facebook/rocksdb/pull/6957

Reviewed By: ajkr

Differential Revision: D22461239

fbshipit-source-id: 9ce07bba08b3ba89c2d45630520368f704d1316e
2020-07-24 13:44:49 -07:00

43 lines
1.4 KiB
C++

// Copyright (c) 2011-present, Facebook, Inc. All rights reserved.
// This source code is licensed under both the GPLv2 (found in the
// COPYING file in the root directory) and Apache 2.0 License
// (found in the LICENSE.Apache file in the root directory).
//
// This file implements the "bridge" between Java and C++ and enables
// calling C++ ROCKSDB_NAMESPACE::SstFileManager methods
// from Java side.
#include "rocksdb/sst_partitioner.h"
#include <jni.h>
#include <memory>
#include "include/org_rocksdb_SstPartitionerFixedPrefixFactory.h"
#include "rocksdb/sst_file_manager.h"
#include "rocksjni/portal.h"
/*
* Class: org_rocksdb_SstPartitionerFixedPrefixFactory
* Method: newSstPartitionerFixedPrefixFactory0
* Signature: (J)J
*/
jlong Java_org_rocksdb_SstPartitionerFixedPrefixFactory_newSstPartitionerFixedPrefixFactory0(
JNIEnv*, jclass, jlong prefix_len) {
auto* ptr = new std::shared_ptr<ROCKSDB_NAMESPACE::SstPartitionerFactory>(
ROCKSDB_NAMESPACE::NewSstPartitionerFixedPrefixFactory(prefix_len));
return reinterpret_cast<jlong>(ptr);
}
/*
* Class: org_rocksdb_SstPartitionerFixedPrefixFactory
* Method: disposeInternal
* Signature: (J)V
*/
void Java_org_rocksdb_SstPartitionerFixedPrefixFactory_disposeInternal(
JNIEnv*, jobject, jlong jhandle) {
auto* ptr = reinterpret_cast<
std::shared_ptr<ROCKSDB_NAMESPACE::SstPartitionerFactory>*>(jhandle);
delete ptr; // delete std::shared_ptr
}