mirror of
https://github.com/facebook/rocksdb.git
synced 2024-11-26 16:30:56 +00:00
add GetAggregatedLongProperty for Java API (#4379)
Summary: Add Java API `getAggregatedLongProperty(final String property)` Pull Request resolved: https://github.com/facebook/rocksdb/pull/4379 Differential Revision: D9921463 Pulled By: sagar0 fbshipit-source-id: a02512e1b2aff4765a10b77de9a7bf7b1909d954
This commit is contained in:
parent
519f8b145f
commit
02dc074916
|
@ -1844,6 +1844,32 @@ jlong Java_org_rocksdb_RocksDB_getLongProperty__JJLjava_lang_String_2I(
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Class: org_rocksdb_RocksDB
|
||||||
|
* Method: getAggregatedLongProperty
|
||||||
|
* Signature: (JLjava/lang/String;I)J
|
||||||
|
*/
|
||||||
|
jlong Java_org_rocksdb_RocksDB_getAggregatedLongProperty(
|
||||||
|
JNIEnv* env, jobject, jlong db_handle, jstring jproperty, jint jproperty_len) {
|
||||||
|
const char* property = env->GetStringUTFChars(jproperty, nullptr);
|
||||||
|
if (property == nullptr) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
rocksdb::Slice property_slice(property, jproperty_len);
|
||||||
|
auto* db = reinterpret_cast<rocksdb::DB*>(db_handle);
|
||||||
|
uint64_t property_value = 0;
|
||||||
|
bool retCode = db->GetAggregatedIntProperty(property_slice, &property_value);
|
||||||
|
env->ReleaseStringUTFChars(jproperty, property);
|
||||||
|
|
||||||
|
if (retCode) {
|
||||||
|
return property_value;
|
||||||
|
}
|
||||||
|
|
||||||
|
rocksdb::RocksDBExceptionJni::ThrowNew(env, rocksdb::Status::NotFound());
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////////
|
||||||
// rocksdb::DB::Flush
|
// rocksdb::DB::Flush
|
||||||
|
|
||||||
|
|
|
@ -1518,6 +1518,31 @@ public class RocksDB extends RocksObject {
|
||||||
property, property.length());
|
property, property.length());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p> Return sum of the getLongProperty of all the column families</p>
|
||||||
|
*
|
||||||
|
* <p><strong>Note</strong>: As the returned property is of type
|
||||||
|
* {@code uint64_t} on C++ side the returning value can be negative
|
||||||
|
* because Java supports in Java 7 only signed long values.</p>
|
||||||
|
*
|
||||||
|
* <p><strong>Java 7</strong>: To mitigate the problem of the non
|
||||||
|
* existent unsigned long tpye, values should be encapsulated using
|
||||||
|
* {@link java.math.BigInteger} to reflect the correct value. The correct
|
||||||
|
* behavior is guaranteed if {@code 2^64} is added to negative values.</p>
|
||||||
|
*
|
||||||
|
* <p><strong>Java 8</strong>: In Java 8 the value should be treated as
|
||||||
|
* unsigned long using provided methods of type {@link Long}.</p>
|
||||||
|
*
|
||||||
|
* @param property to be fetched.
|
||||||
|
*
|
||||||
|
* @return numerical property value
|
||||||
|
*
|
||||||
|
* @throws RocksDBException if an error happens in the underlying native code.
|
||||||
|
*/
|
||||||
|
public long getAggregatedLongProperty(final String property) throws RocksDBException {
|
||||||
|
return getAggregatedLongProperty(nativeHandle_, property, property.length());
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>Return a heap-allocated iterator over the contents of the
|
* <p>Return a heap-allocated iterator over the contents of the
|
||||||
* database. The result of newIterator() is initially invalid
|
* database. The result of newIterator() is initially invalid
|
||||||
|
@ -2383,6 +2408,8 @@ public class RocksDB extends RocksObject {
|
||||||
int propertyLength) throws RocksDBException;
|
int propertyLength) throws RocksDBException;
|
||||||
protected native long getLongProperty(long nativeHandle, long cfHandle,
|
protected native long getLongProperty(long nativeHandle, long cfHandle,
|
||||||
String property, int propertyLength) throws RocksDBException;
|
String property, int propertyLength) throws RocksDBException;
|
||||||
|
protected native long getAggregatedLongProperty(long nativeHandle, String property,
|
||||||
|
int propertyLength) throws RocksDBException;
|
||||||
protected native long iterator(long handle);
|
protected native long iterator(long handle);
|
||||||
protected native long iterator(long handle, long readOptHandle);
|
protected native long iterator(long handle, long readOptHandle);
|
||||||
protected native long iteratorCF(long handle, long cfHandle);
|
protected native long iteratorCF(long handle, long cfHandle);
|
||||||
|
|
|
@ -404,6 +404,10 @@ public class ColumnFamilyTest {
|
||||||
"rocksdb.stats")).isNotNull();
|
"rocksdb.stats")).isNotNull();
|
||||||
assertThat(db.getProperty(columnFamilyHandleList.get(1),
|
assertThat(db.getProperty(columnFamilyHandleList.get(1),
|
||||||
"rocksdb.sstables")).isNotNull();
|
"rocksdb.sstables")).isNotNull();
|
||||||
|
assertThat(db.getAggregatedLongProperty("rocksdb.estimate-num-keys")).
|
||||||
|
isNotNull();
|
||||||
|
assertThat(db.getAggregatedLongProperty("rocksdb.estimate-num-keys")).
|
||||||
|
isGreaterThanOrEqualTo(0);
|
||||||
} finally {
|
} finally {
|
||||||
for (final ColumnFamilyHandle columnFamilyHandle :
|
for (final ColumnFamilyHandle columnFamilyHandle :
|
||||||
columnFamilyHandleList) {
|
columnFamilyHandleList) {
|
||||||
|
|
Loading…
Reference in a new issue