blob: 3585318dbda7d7e7bbcfcb6aae529bfdc706188c [file] [log] [blame]
// 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).
package org.rocksdb;
import java.util.*;
public class MutableColumnFamilyOptions {
private final static String KEY_VALUE_PAIR_SEPARATOR = ";";
private final static char KEY_VALUE_SEPARATOR = '=';
private final static String INT_ARRAY_INT_SEPARATOR = ",";
private final String[] keys;
private final String[] values;
// user must use builder pattern, or parser
private MutableColumnFamilyOptions(final String keys[],
final String values[]) {
this.keys = keys;
this.values = values;
}
String[] getKeys() {
return keys;
}
String[] getValues() {
return values;
}
/**
* Creates a builder which allows you
* to set MutableColumnFamilyOptions in a fluent
* manner
*
* @return A builder for MutableColumnFamilyOptions
*/
public static MutableColumnFamilyOptionsBuilder builder() {
return new MutableColumnFamilyOptionsBuilder();
}
/**
* Parses a String representation of MutableColumnFamilyOptions
*
* The format is: key1=value1;key2=value2;key3=value3 etc
*
* For int[] values, each int should be separated by a comma, e.g.
*
* key1=value1;intArrayKey1=1,2,3
*
* @param str The string representation of the mutable column family options
*
* @return A builder for the mutable column family options
*/
public static MutableColumnFamilyOptionsBuilder parse(final String str) {
Objects.requireNonNull(str);
final MutableColumnFamilyOptionsBuilder builder =
new MutableColumnFamilyOptionsBuilder();
final String options[] = str.trim().split(KEY_VALUE_PAIR_SEPARATOR);
for(final String option : options) {
final int equalsOffset = option.indexOf(KEY_VALUE_SEPARATOR);
if(equalsOffset <= 0) {
throw new IllegalArgumentException(
"options string has an invalid key=value pair");
}
final String key = option.substring(0, equalsOffset);
if(key == null || key.isEmpty()) {
throw new IllegalArgumentException("options string is invalid");
}
final String value = option.substring(equalsOffset + 1);
if(value == null || value.isEmpty()) {
throw new IllegalArgumentException("options string is invalid");
}
builder.fromString(key, value);
}
return builder;
}
/**
* Returns a string representation
* of MutableColumnFamilyOptions which is
* suitable for consumption by {@link #parse(String)}
*
* @return String representation of MutableColumnFamilyOptions
*/
@Override
public String toString() {
final StringBuilder buffer = new StringBuilder();
for(int i = 0; i < keys.length; i++) {
buffer
.append(keys[i])
.append(KEY_VALUE_SEPARATOR)
.append(values[i]);
if(i + 1 < keys.length) {
buffer.append(KEY_VALUE_PAIR_SEPARATOR);
}
}
return buffer.toString();
}
public enum ValueType {
DOUBLE,
LONG,
INT,
BOOLEAN,
INT_ARRAY,
ENUM
}
public enum MemtableOption implements MutableColumnFamilyOptionKey {
write_buffer_size(ValueType.LONG),
arena_block_size(ValueType.LONG),
memtable_prefix_bloom_size_ratio(ValueType.DOUBLE),
@Deprecated memtable_prefix_bloom_bits(ValueType.INT),
@Deprecated memtable_prefix_bloom_probes(ValueType.INT),
memtable_huge_page_size(ValueType.LONG),
max_successive_merges(ValueType.LONG),
@Deprecated filter_deletes(ValueType.BOOLEAN),
max_write_buffer_number(ValueType.INT),
inplace_update_num_locks(ValueType.LONG);
private final ValueType valueType;
MemtableOption(final ValueType valueType) {
this.valueType = valueType;
}
@Override
public ValueType getValueType() {
return valueType;
}
}
public enum CompactionOption implements MutableColumnFamilyOptionKey {
disable_auto_compactions(ValueType.BOOLEAN),
@Deprecated soft_rate_limit(ValueType.DOUBLE),
soft_pending_compaction_bytes_limit(ValueType.LONG),
@Deprecated hard_rate_limit(ValueType.DOUBLE),
hard_pending_compaction_bytes_limit(ValueType.LONG),
level0_file_num_compaction_trigger(ValueType.INT),
level0_slowdown_writes_trigger(ValueType.INT),
level0_stop_writes_trigger(ValueType.INT),
max_compaction_bytes(ValueType.LONG),
target_file_size_base(ValueType.LONG),
target_file_size_multiplier(ValueType.INT),
max_bytes_for_level_base(ValueType.LONG),
max_bytes_for_level_multiplier(ValueType.INT),
max_bytes_for_level_multiplier_additional(ValueType.INT_ARRAY);
private final ValueType valueType;
CompactionOption(final ValueType valueType) {
this.valueType = valueType;
}
@Override
public ValueType getValueType() {
return valueType;
}
}
public enum MiscOption implements MutableColumnFamilyOptionKey {
max_sequential_skip_in_iterations(ValueType.LONG),
paranoid_file_checks(ValueType.BOOLEAN),
report_bg_io_stats(ValueType.BOOLEAN),
compression_type(ValueType.ENUM);
private final ValueType valueType;
MiscOption(final ValueType valueType) {
this.valueType = valueType;
}
@Override
public ValueType getValueType() {
return valueType;
}
}
private interface MutableColumnFamilyOptionKey {
String name();
ValueType getValueType();
}
private static abstract class MutableColumnFamilyOptionValue<T> {
protected final T value;
MutableColumnFamilyOptionValue(final T value) {
this.value = value;
}
abstract double asDouble() throws NumberFormatException;
abstract long asLong() throws NumberFormatException;
abstract int asInt() throws NumberFormatException;
abstract boolean asBoolean() throws IllegalStateException;
abstract int[] asIntArray() throws IllegalStateException;
abstract String asString();
abstract T asObject();
}
private static class MutableColumnFamilyOptionStringValue
extends MutableColumnFamilyOptionValue<String> {
MutableColumnFamilyOptionStringValue(final String value) {
super(value);
}
@Override
double asDouble() throws NumberFormatException {
return Double.parseDouble(value);
}
@Override
long asLong() throws NumberFormatException {
return Long.parseLong(value);
}
@Override
int asInt() throws NumberFormatException {
return Integer.parseInt(value);
}
@Override
boolean asBoolean() throws IllegalStateException {
return Boolean.parseBoolean(value);
}
@Override
int[] asIntArray() throws IllegalStateException {
throw new IllegalStateException("String is not applicable as int[]");
}
@Override
String asString() {
return value;
}
@Override
String asObject() {
return value;
}
}
private static class MutableColumnFamilyOptionDoubleValue
extends MutableColumnFamilyOptionValue<Double> {
MutableColumnFamilyOptionDoubleValue(final double value) {
super(value);
}
@Override
double asDouble() {
return value;
}
@Override
long asLong() throws NumberFormatException {
return value.longValue();
}
@Override
int asInt() throws NumberFormatException {
if(value > Integer.MAX_VALUE || value < Integer.MIN_VALUE) {
throw new NumberFormatException(
"double value lies outside the bounds of int");
}
return value.intValue();
}
@Override
boolean asBoolean() throws IllegalStateException {
throw new IllegalStateException(
"double is not applicable as boolean");
}
@Override
int[] asIntArray() throws IllegalStateException {
if(value > Integer.MAX_VALUE || value < Integer.MIN_VALUE) {
throw new NumberFormatException(
"double value lies outside the bounds of int");
}
return new int[] { value.intValue() };
}
@Override
String asString() {
return Double.toString(value);
}
@Override
Double asObject() {
return value;
}
}
private static class MutableColumnFamilyOptionLongValue
extends MutableColumnFamilyOptionValue<Long> {
MutableColumnFamilyOptionLongValue(final long value) {
super(value);
}
@Override
double asDouble() {
if(value > Double.MAX_VALUE || value < Double.MIN_VALUE) {
throw new NumberFormatException(
"long value lies outside the bounds of int");
}
return value.doubleValue();
}
@Override
long asLong() throws NumberFormatException {
return value;
}
@Override
int asInt() throws NumberFormatException {
if(value > Integer.MAX_VALUE || value < Integer.MIN_VALUE) {
throw new NumberFormatException(
"long value lies outside the bounds of int");
}
return value.intValue();
}
@Override
boolean asBoolean() throws IllegalStateException {
throw new IllegalStateException(
"long is not applicable as boolean");
}
@Override
int[] asIntArray() throws IllegalStateException {
if(value > Integer.MAX_VALUE || value < Integer.MIN_VALUE) {
throw new NumberFormatException(
"long value lies outside the bounds of int");
}
return new int[] { value.intValue() };
}
@Override
String asString() {
return Long.toString(value);
}
@Override
Long asObject() {
return value;
}
}
private static class MutableColumnFamilyOptionIntValue
extends MutableColumnFamilyOptionValue<Integer> {
MutableColumnFamilyOptionIntValue(final int value) {
super(value);
}
@Override
double asDouble() {
if(value > Double.MAX_VALUE || value < Double.MIN_VALUE) {
throw new NumberFormatException("int value lies outside the bounds of int");
}
return value.doubleValue();
}
@Override
long asLong() throws NumberFormatException {
return value;
}
@Override
int asInt() throws NumberFormatException {
return value;
}
@Override
boolean asBoolean() throws IllegalStateException {
throw new IllegalStateException("int is not applicable as boolean");
}
@Override
int[] asIntArray() throws IllegalStateException {
return new int[] { value };
}
@Override
String asString() {
return Integer.toString(value);
}
@Override
Integer asObject() {
return value;
}
}
private static class MutableColumnFamilyOptionBooleanValue
extends MutableColumnFamilyOptionValue<Boolean> {
MutableColumnFamilyOptionBooleanValue(final boolean value) {
super(value);
}
@Override
double asDouble() {
throw new NumberFormatException("boolean is not applicable as double");
}
@Override
long asLong() throws NumberFormatException {
throw new NumberFormatException("boolean is not applicable as Long");
}
@Override
int asInt() throws NumberFormatException {
throw new NumberFormatException("boolean is not applicable as int");
}
@Override
boolean asBoolean() {
return value;
}
@Override
int[] asIntArray() throws IllegalStateException {
throw new IllegalStateException("boolean is not applicable as int[]");
}
@Override
String asString() {
return Boolean.toString(value);
}
@Override
Boolean asObject() {
return value;
}
}
private static class MutableColumnFamilyOptionIntArrayValue
extends MutableColumnFamilyOptionValue<int[]> {
MutableColumnFamilyOptionIntArrayValue(final int[] value) {
super(value);
}
@Override
double asDouble() {
throw new NumberFormatException("int[] is not applicable as double");
}
@Override
long asLong() throws NumberFormatException {
throw new NumberFormatException("int[] is not applicable as Long");
}
@Override
int asInt() throws NumberFormatException {
throw new NumberFormatException("int[] is not applicable as int");
}
@Override
boolean asBoolean() {
throw new NumberFormatException("int[] is not applicable as boolean");
}
@Override
int[] asIntArray() throws IllegalStateException {
return value;
}
@Override
String asString() {
final StringBuilder builder = new StringBuilder();
for(int i = 0; i < value.length; i++) {
builder.append(Integer.toString(i));
if(i + 1 < value.length) {
builder.append(INT_ARRAY_INT_SEPARATOR);
}
}
return builder.toString();
}
@Override
int[] asObject() {
return value;
}
}
private static class MutableColumnFamilyOptionEnumValue<T extends Enum<T>>
extends MutableColumnFamilyOptionValue<T> {
MutableColumnFamilyOptionEnumValue(final T value) {
super(value);
}
@Override
double asDouble() throws NumberFormatException {
throw new NumberFormatException("Enum is not applicable as double");
}
@Override
long asLong() throws NumberFormatException {
throw new NumberFormatException("Enum is not applicable as long");
}
@Override
int asInt() throws NumberFormatException {
throw new NumberFormatException("Enum is not applicable as int");
}
@Override
boolean asBoolean() throws IllegalStateException {
throw new NumberFormatException("Enum is not applicable as boolean");
}
@Override
int[] asIntArray() throws IllegalStateException {
throw new NumberFormatException("Enum is not applicable as int[]");
}
@Override
String asString() {
return value.name();
}
@Override
T asObject() {
return value;
}
}
public static class MutableColumnFamilyOptionsBuilder
implements MutableColumnFamilyOptionsInterface {
private final static Map<String, MutableColumnFamilyOptionKey> ALL_KEYS_LOOKUP = new HashMap<>();
static {
for(final MutableColumnFamilyOptionKey key : MemtableOption.values()) {
ALL_KEYS_LOOKUP.put(key.name(), key);
}
for(final MutableColumnFamilyOptionKey key : CompactionOption.values()) {
ALL_KEYS_LOOKUP.put(key.name(), key);
}
for(final MutableColumnFamilyOptionKey key : MiscOption.values()) {
ALL_KEYS_LOOKUP.put(key.name(), key);
}
}
private final Map<MutableColumnFamilyOptionKey, MutableColumnFamilyOptionValue<?>> options = new LinkedHashMap<>();
public MutableColumnFamilyOptions build() {
final String keys[] = new String[options.size()];
final String values[] = new String[options.size()];
int i = 0;
for(final Map.Entry<MutableColumnFamilyOptionKey, MutableColumnFamilyOptionValue<?>> option : options.entrySet()) {
keys[i] = option.getKey().name();
values[i] = option.getValue().asString();
i++;
}
return new MutableColumnFamilyOptions(keys, values);
}
private MutableColumnFamilyOptionsBuilder setDouble(
final MutableColumnFamilyOptionKey key, final double value) {
if(key.getValueType() != ValueType.DOUBLE) {
throw new IllegalArgumentException(
key + " does not accept a double value");
}
options.put(key, new MutableColumnFamilyOptionDoubleValue(value));
return this;
}
private double getDouble(final MutableColumnFamilyOptionKey key)
throws NoSuchElementException, NumberFormatException {
final MutableColumnFamilyOptionValue<?> value = options.get(key);
if(value == null) {
throw new NoSuchElementException(key.name() + " has not been set");
}
return value.asDouble();
}
private MutableColumnFamilyOptionsBuilder setLong(
final MutableColumnFamilyOptionKey key, final long value) {
if(key.getValueType() != ValueType.LONG) {
throw new IllegalArgumentException(
key + " does not accept a long value");
}
options.put(key, new MutableColumnFamilyOptionLongValue(value));
return this;
}
private long getLong(final MutableColumnFamilyOptionKey key)
throws NoSuchElementException, NumberFormatException {
final MutableColumnFamilyOptionValue<?> value = options.get(key);
if(value == null) {
throw new NoSuchElementException(key.name() + " has not been set");
}
return value.asLong();
}
private MutableColumnFamilyOptionsBuilder setInt(
final MutableColumnFamilyOptionKey key, final int value) {
if(key.getValueType() != ValueType.INT) {
throw new IllegalArgumentException(
key + " does not accept an integer value");
}
options.put(key, new MutableColumnFamilyOptionIntValue(value));
return this;
}
private int getInt(final MutableColumnFamilyOptionKey key)
throws NoSuchElementException, NumberFormatException {
final MutableColumnFamilyOptionValue<?> value = options.get(key);
if(value == null) {
throw new NoSuchElementException(key.name() + " has not been set");
}
return value.asInt();
}
private MutableColumnFamilyOptionsBuilder setBoolean(
final MutableColumnFamilyOptionKey key, final boolean value) {
if(key.getValueType() != ValueType.BOOLEAN) {
throw new IllegalArgumentException(
key + " does not accept a boolean value");
}
options.put(key, new MutableColumnFamilyOptionBooleanValue(value));
return this;
}
private boolean getBoolean(final MutableColumnFamilyOptionKey key)
throws NoSuchElementException, NumberFormatException {
final MutableColumnFamilyOptionValue<?> value = options.get(key);
if(value == null) {
throw new NoSuchElementException(key.name() + " has not been set");
}
return value.asBoolean();
}
private MutableColumnFamilyOptionsBuilder setIntArray(
final MutableColumnFamilyOptionKey key, final int[] value) {
if(key.getValueType() != ValueType.INT_ARRAY) {
throw new IllegalArgumentException(
key + " does not accept an int array value");
}
options.put(key, new MutableColumnFamilyOptionIntArrayValue(value));
return this;
}
private int[] getIntArray(final MutableColumnFamilyOptionKey key)
throws NoSuchElementException, NumberFormatException {
final MutableColumnFamilyOptionValue<?> value = options.get(key);
if(value == null) {
throw new NoSuchElementException(key.name() + " has not been set");
}
return value.asIntArray();
}
private <T extends Enum<T>> MutableColumnFamilyOptionsBuilder setEnum(
final MutableColumnFamilyOptionKey key, final T value) {
if(key.getValueType() != ValueType.ENUM) {
throw new IllegalArgumentException(
key + " does not accept a Enum value");
}
options.put(key, new MutableColumnFamilyOptionEnumValue<T>(value));
return this;
}
private <T extends Enum<T>> T getEnum(final MutableColumnFamilyOptionKey key)
throws NoSuchElementException, NumberFormatException {
final MutableColumnFamilyOptionValue<?> value = options.get(key);
if(value == null) {
throw new NoSuchElementException(key.name() + " has not been set");
}
if(!(value instanceof MutableColumnFamilyOptionEnumValue)) {
throw new NoSuchElementException(key.name() + " is not of Enum type");
}
return ((MutableColumnFamilyOptionEnumValue<T>)value).asObject();
}
public MutableColumnFamilyOptionsBuilder fromString(final String keyStr,
final String valueStr) throws IllegalArgumentException {
Objects.requireNonNull(keyStr);
Objects.requireNonNull(valueStr);
final MutableColumnFamilyOptionKey key = ALL_KEYS_LOOKUP.get(keyStr);
switch(key.getValueType()) {
case DOUBLE:
return setDouble(key, Double.parseDouble(valueStr));
case LONG:
return setLong(key, Long.parseLong(valueStr));
case INT:
return setInt(key, Integer.parseInt(valueStr));
case BOOLEAN:
return setBoolean(key, Boolean.parseBoolean(valueStr));
case INT_ARRAY:
final String[] strInts = valueStr
.trim().split(INT_ARRAY_INT_SEPARATOR);
if(strInts == null || strInts.length == 0) {
throw new IllegalArgumentException(
"int array value is not correctly formatted");
}
final int value[] = new int[strInts.length];
int i = 0;
for(final String strInt : strInts) {
value[i++] = Integer.parseInt(strInt);
}
return setIntArray(key, value);
}
throw new IllegalStateException(
key + " has unknown value type: " + key.getValueType());
}
@Override
public MutableColumnFamilyOptionsBuilder setWriteBufferSize(
final long writeBufferSize) {
return setLong(MemtableOption.write_buffer_size, writeBufferSize);
}
@Override
public long writeBufferSize() {
return getLong(MemtableOption.write_buffer_size);
}
@Override
public MutableColumnFamilyOptionsBuilder setArenaBlockSize(
final long arenaBlockSize) {
return setLong(MemtableOption.arena_block_size, arenaBlockSize);
}
@Override
public long arenaBlockSize() {
return getLong(MemtableOption.arena_block_size);
}
@Override
public MutableColumnFamilyOptionsBuilder setMemtablePrefixBloomSizeRatio(
final double memtablePrefixBloomSizeRatio) {
return setDouble(MemtableOption.memtable_prefix_bloom_size_ratio,
memtablePrefixBloomSizeRatio);
}
@Override
public double memtablePrefixBloomSizeRatio() {
return getDouble(MemtableOption.memtable_prefix_bloom_size_ratio);
}
@Override
public MutableColumnFamilyOptionsBuilder setMemtableHugePageSize(
final long memtableHugePageSize) {
return setLong(MemtableOption.memtable_huge_page_size,
memtableHugePageSize);
}
@Override
public long memtableHugePageSize() {
return getLong(MemtableOption.memtable_huge_page_size);
}
@Override
public MutableColumnFamilyOptionsBuilder setMaxSuccessiveMerges(
final long maxSuccessiveMerges) {
return setLong(MemtableOption.max_successive_merges, maxSuccessiveMerges);
}
@Override
public long maxSuccessiveMerges() {
return getLong(MemtableOption.max_successive_merges);
}
@Override
public MutableColumnFamilyOptionsBuilder setMaxWriteBufferNumber(
final int maxWriteBufferNumber) {
return setInt(MemtableOption.max_write_buffer_number,
maxWriteBufferNumber);
}
@Override
public int maxWriteBufferNumber() {
return getInt(MemtableOption.max_write_buffer_number);
}
@Override
public MutableColumnFamilyOptionsBuilder setInplaceUpdateNumLocks(
final long inplaceUpdateNumLocks) {
return setLong(MemtableOption.inplace_update_num_locks,
inplaceUpdateNumLocks);
}
@Override
public long inplaceUpdateNumLocks() {
return getLong(MemtableOption.inplace_update_num_locks);
}
@Override
public MutableColumnFamilyOptionsBuilder setDisableAutoCompactions(
final boolean disableAutoCompactions) {
return setBoolean(CompactionOption.disable_auto_compactions,
disableAutoCompactions);
}
@Override
public boolean disableAutoCompactions() {
return getBoolean(CompactionOption.disable_auto_compactions);
}
@Override
public MutableColumnFamilyOptionsBuilder setSoftPendingCompactionBytesLimit(
final long softPendingCompactionBytesLimit) {
return setLong(CompactionOption.soft_pending_compaction_bytes_limit,
softPendingCompactionBytesLimit);
}
@Override
public long softPendingCompactionBytesLimit() {
return getLong(CompactionOption.soft_pending_compaction_bytes_limit);
}
@Override
public MutableColumnFamilyOptionsBuilder setHardPendingCompactionBytesLimit(
final long hardPendingCompactionBytesLimit) {
return setLong(CompactionOption.hard_pending_compaction_bytes_limit,
hardPendingCompactionBytesLimit);
}
@Override
public long hardPendingCompactionBytesLimit() {
return getLong(CompactionOption.hard_pending_compaction_bytes_limit);
}
@Override
public MutableColumnFamilyOptionsBuilder setLevel0FileNumCompactionTrigger(
final int level0FileNumCompactionTrigger) {
return setInt(CompactionOption.level0_file_num_compaction_trigger,
level0FileNumCompactionTrigger);
}
@Override
public int level0FileNumCompactionTrigger() {
return getInt(CompactionOption.level0_file_num_compaction_trigger);
}
@Override
public MutableColumnFamilyOptionsBuilder setLevel0SlowdownWritesTrigger(
final int level0SlowdownWritesTrigger) {
return setInt(CompactionOption.level0_slowdown_writes_trigger,
level0SlowdownWritesTrigger);
}
@Override
public int level0SlowdownWritesTrigger() {
return getInt(CompactionOption.level0_slowdown_writes_trigger);
}
@Override
public MutableColumnFamilyOptionsBuilder setLevel0StopWritesTrigger(
final int level0StopWritesTrigger) {
return setInt(CompactionOption.level0_stop_writes_trigger,
level0StopWritesTrigger);
}
@Override
public int level0StopWritesTrigger() {
return getInt(CompactionOption.level0_stop_writes_trigger);
}
@Override
public MutableColumnFamilyOptionsBuilder setMaxCompactionBytes(final long maxCompactionBytes) {
return setLong(CompactionOption.max_compaction_bytes, maxCompactionBytes);
}
@Override
public long maxCompactionBytes() {
return getLong(CompactionOption.max_compaction_bytes);
}
@Override
public MutableColumnFamilyOptionsBuilder setTargetFileSizeBase(
final long targetFileSizeBase) {
return setLong(CompactionOption.target_file_size_base,
targetFileSizeBase);
}
@Override
public long targetFileSizeBase() {
return getLong(CompactionOption.target_file_size_base);
}
@Override
public MutableColumnFamilyOptionsBuilder setTargetFileSizeMultiplier(
final int targetFileSizeMultiplier) {
return setInt(CompactionOption.target_file_size_multiplier,
targetFileSizeMultiplier);
}
@Override
public int targetFileSizeMultiplier() {
return getInt(CompactionOption.target_file_size_multiplier);
}
@Override
public MutableColumnFamilyOptionsBuilder setMaxBytesForLevelBase(
final long maxBytesForLevelBase) {
return setLong(CompactionOption.max_bytes_for_level_base,
maxBytesForLevelBase);
}
@Override
public long maxBytesForLevelBase() {
return getLong(CompactionOption.max_bytes_for_level_base);
}
@Override
public MutableColumnFamilyOptionsBuilder setMaxBytesForLevelMultiplier(
final double maxBytesForLevelMultiplier) {
return setDouble(CompactionOption.max_bytes_for_level_multiplier, maxBytesForLevelMultiplier);
}
@Override
public double maxBytesForLevelMultiplier() {
return getDouble(CompactionOption.max_bytes_for_level_multiplier);
}
@Override
public MutableColumnFamilyOptionsBuilder setMaxBytesForLevelMultiplierAdditional(
final int[] maxBytesForLevelMultiplierAdditional) {
return setIntArray(
CompactionOption.max_bytes_for_level_multiplier_additional,
maxBytesForLevelMultiplierAdditional);
}
@Override
public int[] maxBytesForLevelMultiplierAdditional() {
return getIntArray(
CompactionOption.max_bytes_for_level_multiplier_additional);
}
@Override
public MutableColumnFamilyOptionsBuilder setMaxSequentialSkipInIterations(
final long maxSequentialSkipInIterations) {
return setLong(MiscOption.max_sequential_skip_in_iterations,
maxSequentialSkipInIterations);
}
@Override
public long maxSequentialSkipInIterations() {
return getLong(MiscOption.max_sequential_skip_in_iterations);
}
@Override
public MutableColumnFamilyOptionsBuilder setParanoidFileChecks(
final boolean paranoidFileChecks) {
return setBoolean(MiscOption.paranoid_file_checks, paranoidFileChecks);
}
@Override
public boolean paranoidFileChecks() {
return getBoolean(MiscOption.paranoid_file_checks);
}
@Override
public MutableColumnFamilyOptionsBuilder setCompressionType(
final CompressionType compressionType) {
return setEnum(MiscOption.compression_type, compressionType);
}
@Override
public CompressionType compressionType() {
return (CompressionType)getEnum(MiscOption.compression_type);
}
@Override
public MutableColumnFamilyOptionsBuilder setReportBgIoStats(
final boolean reportBgIoStats) {
return setBoolean(MiscOption.report_bg_io_stats, reportBgIoStats);
}
@Override
public boolean reportBgIoStats() {
return getBoolean(MiscOption.report_bg_io_stats);
}
}
}