Class AbstractWriteBatch
- java.lang.Object
-
- org.rocksdb.AbstractNativeReference
-
- org.rocksdb.AbstractImmutableNativeReference
-
- org.rocksdb.RocksObject
-
- org.rocksdb.AbstractWriteBatch
-
- All Implemented Interfaces:
java.lang.AutoCloseable,WriteBatchInterface
- Direct Known Subclasses:
WriteBatch,WriteBatchWithIndex
public abstract class AbstractWriteBatch extends RocksObject implements WriteBatchInterface
-
-
Field Summary
-
Fields inherited from class org.rocksdb.RocksObject
nativeHandle_
-
Fields inherited from class org.rocksdb.AbstractImmutableNativeReference
owningHandle_
-
-
Constructor Summary
Constructors Modifier Constructor Description protectedAbstractWriteBatch(long nativeHandle)
-
Method Summary
All Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description voidclear()Clear all updates buffered in this batchintcount()Returns the number of updates in the batch.voiddelete(byte[] key)If the database contains a mapping for "key", erase it.voiddelete(ColumnFamilyHandle columnFamilyHandle, byte[] key)If column family contains a mapping for "key", erase it.voiddeleteRange(byte[] beginKey, byte[] endKey)Removes the database entries in the range ["beginKey", "endKey"), i.e., including "beginKey" and excluding "endKey".voiddeleteRange(ColumnFamilyHandle columnFamilyHandle, byte[] beginKey, byte[] endKey)Removes the database entries in the range ["beginKey", "endKey"), i.e., including "beginKey" and excluding "endKey".WriteBatchgetWriteBatch()Get the underlying Write Batch.voidmerge(byte[] key, byte[] value)Merge "value" with the existing value of "key" in the database.voidmerge(ColumnFamilyHandle columnFamilyHandle, byte[] key, byte[] value)Merge "value" with the existing value of "key" in given column family.voidpopSavePoint()Pop the most recent save point.voidput(byte[] key, byte[] value)Store the mapping "key->value" in the database.voidput(java.nio.ByteBuffer key, java.nio.ByteBuffer value)Store the mapping "key->value" within given column family.voidput(ColumnFamilyHandle columnFamilyHandle, byte[] key, byte[] value)Store the mapping "key->value" within given column family.voidput(ColumnFamilyHandle columnFamilyHandle, java.nio.ByteBuffer key, java.nio.ByteBuffer value)Store the mapping "key->value" within given column family.voidputLogData(byte[] blob)Append a blob of arbitrary size to the records in this batch.voidremove(byte[] key)Deprecated.voidremove(java.nio.ByteBuffer key)If column family contains a mapping for "key", erase it.voidremove(ColumnFamilyHandle columnFamilyHandle, byte[] key)Deprecated.voidremove(ColumnFamilyHandle columnFamilyHandle, java.nio.ByteBuffer key)If column family contains a mapping for "key", erase it.voidrollbackToSavePoint()Remove all entries in this batch (Put, Merge, Delete, PutLogData) since the most recent call to SetSavePoint() and removes the most recent save point.voidsetMaxBytes(long maxBytes)Set the maximum size of the write batch.voidsetSavePoint()Records the state of the batch for future calls to RollbackToSavePoint().voidsingleDelete(byte[] key)Remove the database entry forkey.voidsingleDelete(ColumnFamilyHandle columnFamilyHandle, byte[] key)Remove the database entry forkey.-
Methods inherited from class org.rocksdb.RocksObject
disposeInternal, disposeInternal, getNativeHandle
-
Methods inherited from class org.rocksdb.AbstractImmutableNativeReference
close, disOwnNativeHandle, isOwningHandle
-
Methods inherited from class org.rocksdb.AbstractNativeReference
dispose, finalize
-
-
-
-
Method Detail
-
count
public int count()
Description copied from interface:WriteBatchInterfaceReturns the number of updates in the batch.- Specified by:
countin interfaceWriteBatchInterface- Returns:
- number of items in WriteBatch
-
put
public void put(byte[] key, byte[] value) throws RocksDBExceptionDescription copied from interface:WriteBatchInterfaceStore the mapping "key->value" in the database.
- Specified by:
putin interfaceWriteBatchInterface- Parameters:
key- the specified key to be inserted.value- the value associated with the specified key.- Throws:
RocksDBException- thrown if error happens in underlying native library.
-
put
public void put(ColumnFamilyHandle columnFamilyHandle, byte[] key, byte[] value) throws RocksDBException
Description copied from interface:WriteBatchInterfaceStore the mapping "key->value" within given column family.
- Specified by:
putin interfaceWriteBatchInterface- Parameters:
columnFamilyHandle-ColumnFamilyHandleinstancekey- the specified key to be inserted.value- the value associated with the specified key.- Throws:
RocksDBException- thrown if error happens in underlying native library.
-
merge
public void merge(byte[] key, byte[] value) throws RocksDBExceptionDescription copied from interface:WriteBatchInterfaceMerge "value" with the existing value of "key" in the database. "key->merge(existing, value)"
- Specified by:
mergein interfaceWriteBatchInterface- Parameters:
key- the specified key to be merged.value- the value to be merged with the current value for the specified key.- Throws:
RocksDBException- thrown if error happens in underlying native library.
-
merge
public void merge(ColumnFamilyHandle columnFamilyHandle, byte[] key, byte[] value) throws RocksDBException
Description copied from interface:WriteBatchInterfaceMerge "value" with the existing value of "key" in given column family. "key->merge(existing, value)"
- Specified by:
mergein interfaceWriteBatchInterface- Parameters:
columnFamilyHandle-ColumnFamilyHandleinstancekey- the specified key to be merged.value- the value to be merged with the current value for the specified key.- Throws:
RocksDBException- thrown if error happens in underlying native library.
-
remove
@Deprecated public void remove(byte[] key) throws RocksDBExceptionDeprecated.Description copied from interface:WriteBatchInterfaceIf the database contains a mapping for "key", erase it. Else do nothing.
- Specified by:
removein interfaceWriteBatchInterface- Parameters:
key- Key to delete within database- Throws:
RocksDBException- thrown if error happens in underlying native library.
-
remove
@Deprecated public void remove(ColumnFamilyHandle columnFamilyHandle, byte[] key) throws RocksDBException
Deprecated.Description copied from interface:WriteBatchInterfaceIf column family contains a mapping for "key", erase it. Else do nothing.
- Specified by:
removein interfaceWriteBatchInterface- Parameters:
columnFamilyHandle-ColumnFamilyHandleinstancekey- Key to delete within database- Throws:
RocksDBException- thrown if error happens in underlying native library.
-
put
public void put(java.nio.ByteBuffer key, java.nio.ByteBuffer value) throws RocksDBExceptionDescription copied from interface:WriteBatchInterfaceStore the mapping "key->value" within given column family.
- Specified by:
putin interfaceWriteBatchInterface- Parameters:
key- the specified key to be inserted. It is using position and limit. Supports direct buffer only.value- the value associated with the specified key. It is using position and limit. Supports direct buffer only.- Throws:
RocksDBException
-
put
public void put(ColumnFamilyHandle columnFamilyHandle, java.nio.ByteBuffer key, java.nio.ByteBuffer value) throws RocksDBException
Description copied from interface:WriteBatchInterfaceStore the mapping "key->value" within given column family.
- Specified by:
putin interfaceWriteBatchInterface- Parameters:
columnFamilyHandle-ColumnFamilyHandleinstancekey- the specified key to be inserted. It is using position and limit. Supports direct buffer only.value- the value associated with the specified key. It is using position and limit. Supports direct buffer only.- Throws:
RocksDBException
-
delete
public void delete(byte[] key) throws RocksDBExceptionDescription copied from interface:WriteBatchInterfaceIf the database contains a mapping for "key", erase it. Else do nothing.
- Specified by:
deletein interfaceWriteBatchInterface- Parameters:
key- Key to delete within database- Throws:
RocksDBException- thrown if error happens in underlying native library.
-
delete
public void delete(ColumnFamilyHandle columnFamilyHandle, byte[] key) throws RocksDBException
Description copied from interface:WriteBatchInterfaceIf column family contains a mapping for "key", erase it. Else do nothing.
- Specified by:
deletein interfaceWriteBatchInterface- Parameters:
columnFamilyHandle-ColumnFamilyHandleinstancekey- Key to delete within database- Throws:
RocksDBException- thrown if error happens in underlying native library.
-
singleDelete
public void singleDelete(byte[] key) throws RocksDBExceptionDescription copied from interface:WriteBatchInterfaceRemove the database entry forkey. Requires that the key exists and was not overwritten. It is not an error if the key did not exist in the database. If a key is overwritten (by callingWriteBatchInterface.put(byte[], byte[])multiple times), then the result of calling SingleDelete() on this key is undefined. SingleDelete() only behaves correctly if there has been only one Put() for this key since the previous call to SingleDelete() for this key. This feature is currently an experimental performance optimization for a very specific workload. It is up to the caller to ensure that SingleDelete is only used for a key that is not deleted using Delete() or written using Merge(). Mixing SingleDelete operations with Deletes and Merges can result in undefined behavior.- Specified by:
singleDeletein interfaceWriteBatchInterface- Parameters:
key- Key to delete within database- Throws:
RocksDBException- thrown if error happens in underlying native library.
-
singleDelete
public void singleDelete(ColumnFamilyHandle columnFamilyHandle, byte[] key) throws RocksDBException
Description copied from interface:WriteBatchInterfaceRemove the database entry forkey. Requires that the key exists and was not overwritten. It is not an error if the key did not exist in the database. If a key is overwritten (by callingWriteBatchInterface.put(byte[], byte[])multiple times), then the result of calling SingleDelete() on this key is undefined. SingleDelete() only behaves correctly if there has been only one Put() for this key since the previous call to SingleDelete() for this key. This feature is currently an experimental performance optimization for a very specific workload. It is up to the caller to ensure that SingleDelete is only used for a key that is not deleted using Delete() or written using Merge(). Mixing SingleDelete operations with Deletes and Merges can result in undefined behavior.- Specified by:
singleDeletein interfaceWriteBatchInterface- Parameters:
columnFamilyHandle- The column family to delete the key fromkey- Key to delete within database- Throws:
RocksDBException- thrown if error happens in underlying native library.
-
deleteRange
public void deleteRange(byte[] beginKey, byte[] endKey) throws RocksDBExceptionDescription copied from interface:WriteBatchInterfaceRemoves the database entries in the range ["beginKey", "endKey"), i.e., including "beginKey" and excluding "endKey". a non-OK status on error. It is not an error if no keys exist in the range ["beginKey", "endKey"). Delete the database entry (if any) for "key". Returns OK on success, and a non-OK status on error. It is not an error if "key" did not exist in the database.- Specified by:
deleteRangein interfaceWriteBatchInterface- Parameters:
beginKey- First key to delete within database (included)endKey- Last key to delete within database (excluded)- Throws:
RocksDBException- thrown if error happens in underlying native library.
-
deleteRange
public void deleteRange(ColumnFamilyHandle columnFamilyHandle, byte[] beginKey, byte[] endKey) throws RocksDBException
Description copied from interface:WriteBatchInterfaceRemoves the database entries in the range ["beginKey", "endKey"), i.e., including "beginKey" and excluding "endKey". a non-OK status on error. It is not an error if no keys exist in the range ["beginKey", "endKey"). Delete the database entry (if any) for "key". Returns OK on success, and a non-OK status on error. It is not an error if "key" did not exist in the database.- Specified by:
deleteRangein interfaceWriteBatchInterface- Parameters:
columnFamilyHandle-ColumnFamilyHandleinstancebeginKey- First key to delete within database (included)endKey- Last key to delete within database (excluded)- Throws:
RocksDBException- thrown if error happens in underlying native library.
-
remove
public void remove(java.nio.ByteBuffer key) throws RocksDBExceptionDescription copied from interface:WriteBatchInterfaceIf column family contains a mapping for "key", erase it. Else do nothing.
- Specified by:
removein interfaceWriteBatchInterface- Parameters:
key- Key to delete within database. It is using position and limit. Supports direct buffer only.- Throws:
RocksDBException
-
remove
public void remove(ColumnFamilyHandle columnFamilyHandle, java.nio.ByteBuffer key) throws RocksDBException
Description copied from interface:WriteBatchInterfaceIf column family contains a mapping for "key", erase it. Else do nothing.
- Specified by:
removein interfaceWriteBatchInterface- Parameters:
columnFamilyHandle-ColumnFamilyHandleinstancekey- Key to delete within database. It is using position and limit. Supports direct buffer only.- Throws:
RocksDBException
-
putLogData
public void putLogData(byte[] blob) throws RocksDBExceptionDescription copied from interface:WriteBatchInterfaceAppend a blob of arbitrary size to the records in this batch. The blob will be stored in the transaction log but not in any other file. In particular, it will not be persisted to the SST files. When iterating over this WriteBatch, WriteBatch::Handler::LogData will be called with the contents of the blob as it is encountered. Blobs, puts, deletes, and merges will be encountered in the same order in thich they were inserted. The blob will NOT consume sequence number(s) and will NOT increase the count of the batch Example application: add timestamps to the transaction log for use in replication.- Specified by:
putLogDatain interfaceWriteBatchInterface- Parameters:
blob- binary object to be inserted- Throws:
RocksDBException- thrown if error happens in underlying native library.
-
clear
public void clear()
Description copied from interface:WriteBatchInterfaceClear all updates buffered in this batch- Specified by:
clearin interfaceWriteBatchInterface
-
setSavePoint
public void setSavePoint()
Description copied from interface:WriteBatchInterfaceRecords the state of the batch for future calls to RollbackToSavePoint(). May be called multiple times to set multiple save points.- Specified by:
setSavePointin interfaceWriteBatchInterface
-
rollbackToSavePoint
public void rollbackToSavePoint() throws RocksDBExceptionDescription copied from interface:WriteBatchInterfaceRemove all entries in this batch (Put, Merge, Delete, PutLogData) since the most recent call to SetSavePoint() and removes the most recent save point.- Specified by:
rollbackToSavePointin interfaceWriteBatchInterface- Throws:
RocksDBException- if there is no previous call to SetSavePoint()
-
popSavePoint
public void popSavePoint() throws RocksDBExceptionDescription copied from interface:WriteBatchInterfacePop the most recent save point. That is to say that it removes the last save point, which was set byWriteBatchInterface.setSavePoint().- Specified by:
popSavePointin interfaceWriteBatchInterface- Throws:
RocksDBException- If there is no previous call toWriteBatchInterface.setSavePoint(), an exception withStatus.Code.NotFoundwill be thrown.
-
setMaxBytes
public void setMaxBytes(long maxBytes)
Description copied from interface:WriteBatchInterfaceSet the maximum size of the write batch.- Specified by:
setMaxBytesin interfaceWriteBatchInterface- Parameters:
maxBytes- the maximum size in bytes.
-
getWriteBatch
public WriteBatch getWriteBatch()
Description copied from interface:WriteBatchInterfaceGet the underlying Write Batch.- Specified by:
getWriteBatchin interfaceWriteBatchInterface- Returns:
- the underlying WriteBatch.
-
-