Package com.apple.foundationdb
Enum Class MutationType
- All Implemented Interfaces:
Serializable
,Comparable<MutationType>
,Constable
A set of operations that can be performed atomically on a database. These are used as parameters to
Transaction.mutate(MutationType, byte[], byte[])
.-
Nested Class Summary
Nested classes/interfaces inherited from class java.lang.Enum
Enum.EnumDesc<E extends Enum<E>>
-
Enum Constant Summary
Enum ConstantsEnum ConstantDescriptionPerforms an addition of little-endian integers.Deprecated.Appendsparam
to the end of the existing value already in the database at the given key (or creates the key and sets the value toparam
if the key is empty).Performs a bitwiseand
operation.Performs a bitwiseor
operation.Performs a bitwisexor
operation.Performs lexicographic comparison of byte strings.Performs lexicographic comparison of byte strings.Performs an atomiccompare and clear
operation.Performs a little-endian comparison of byte strings.Performs a little-endian comparison of byte strings.Deprecated.Transformskey
using a versionstamp for the transaction.Transformsparam
using a versionstamp for the transaction.Deprecated. -
Method Summary
Modifier and TypeMethodDescriptionint
code()
Gets the FoundationDB native-level constant code for aMutationType
.static MutationType
Returns the enum constant of this class with the specified name.static MutationType[]
values()
Returns an array containing the constants of this enum class, in the order they are declared.
-
Enum Constant Details
-
ADD
Performs an addition of little-endian integers. If the existing value in the database is not present or shorter thanparam
, it is first extended to the length ofparam
with zero bytes. Ifparam
is shorter than the existing value in the database, the existing value is truncated to match the length ofparam
. The integers to be added must be stored in a little-endian representation. They can be signed in two's complement representation or unsigned. You can add to an integer at a known offset in the value by prepending the appropriate number of zero bytes toparam
and padding with zero bytes to match the length of the value. However, this offset technique requires that you know the addition will not cause the integer field within the value to overflow. -
AND
Deprecated.Deprecated. -
BIT_AND
Performs a bitwiseand
operation. If the existing value in the database is not present, thenparam
is stored in the database. If the existing value in the database is shorter thanparam
, it is first extended to the length ofparam
with zero bytes. Ifparam
is shorter than the existing value in the database, the existing value is truncated to match the length ofparam
. -
OR
Deprecated.Deprecated. -
BIT_OR
Performs a bitwiseor
operation. If the existing value in the database is not present or shorter thanparam
, it is first extended to the length ofparam
with zero bytes. Ifparam
is shorter than the existing value in the database, the existing value is truncated to match the length ofparam
. -
XOR
Deprecated.Deprecated. -
BIT_XOR
Performs a bitwisexor
operation. If the existing value in the database is not present or shorter thanparam
, it is first extended to the length ofparam
with zero bytes. Ifparam
is shorter than the existing value in the database, the existing value is truncated to match the length ofparam
. -
APPEND_IF_FITS
Appendsparam
to the end of the existing value already in the database at the given key (or creates the key and sets the value toparam
if the key is empty). This will only append the value if the final concatenated value size is less than or equal to the maximum value size (i.e., if it fits). WARNING: No error is surfaced back to the user if the final value is too large because the mutation will not be applied until after the transaction has been committed. Therefore, it is only safe to use this mutation type if one can guarantee that one will keep the total value size under the maximum size. -
MAX
Performs a little-endian comparison of byte strings. If the existing value in the database is not present or shorter thanparam
, it is first extended to the length ofparam
with zero bytes. Ifparam
is shorter than the existing value in the database, the existing value is truncated to match the length ofparam
. The larger of the two values is then stored in the database. -
MIN
Performs a little-endian comparison of byte strings. If the existing value in the database is not present, thenparam
is stored in the database. If the existing value in the database is shorter thanparam
, it is first extended to the length ofparam
with zero bytes. Ifparam
is shorter than the existing value in the database, the existing value is truncated to match the length ofparam
. The smaller of the two values is then stored in the database. -
SET_VERSIONSTAMPED_KEY
Transformskey
using a versionstamp for the transaction. Sets the transformed key in the database toparam
. The key is transformed by removing the final four bytes from the key and reading those as a little-Endian 32-bit integer to get a positionpos
. The 10 bytes of the key frompos
topos + 10
are replaced with the versionstamp of the transaction used. The first byte of the key is position 0. A versionstamp is a 10 byte, unique, monotonically (but not sequentially) increasing value for each committed transaction. The first 8 bytes are the committed version of the database (serialized in big-Endian order). The last 2 bytes are monotonic in the serialization order for transactions. WARNING: At this time, versionstamps are compatible with the Tuple layer only in the Java, Python, and Go bindings. Also, note that prior to API version 520, the offset was computed from only the final two bytes rather than the final four bytes. -
SET_VERSIONSTAMPED_VALUE
Transformsparam
using a versionstamp for the transaction. Sets thekey
given to the transformedparam
. The parameter is transformed by removing the final four bytes fromparam
and reading those as a little-Endian 32-bit integer to get a positionpos
. The 10 bytes of the parameter frompos
topos + 10
are replaced with the versionstamp of the transaction used. The first byte of the parameter is position 0. A versionstamp is a 10 byte, unique, monotonically (but not sequentially) increasing value for each committed transaction. The first 8 bytes are the committed version of the database (serialized in big-Endian order). The last 2 bytes are monotonic in the serialization order for transactions. WARNING: At this time, versionstamps are compatible with the Tuple layer only in the Java, Python, and Go bindings. Also, note that prior to API version 520, the versionstamp was always placed at the beginning of the parameter rather than computing an offset. -
BYTE_MIN
Performs lexicographic comparison of byte strings. If the existing value in the database is not present, thenparam
is stored. Otherwise the smaller of the two values is then stored in the database. -
BYTE_MAX
Performs lexicographic comparison of byte strings. If the existing value in the database is not present, thenparam
is stored. Otherwise the larger of the two values is then stored in the database. -
COMPARE_AND_CLEAR
Performs an atomiccompare and clear
operation. If the existing value in the database is equal to the given value, then given key is cleared.
-
-
Method Details
-
values
Returns an array containing the constants of this enum class, in the order they are declared.- Returns:
- an array containing the constants of this enum class, in the order they are declared
-
valueOf
Returns the enum constant of this class with the specified name. The string must match exactly an identifier used to declare an enum constant in this class. (Extraneous whitespace characters are not permitted.)- Parameters:
name
- the name of the enum constant to be returned.- Returns:
- the enum constant with the specified name
- Throws:
IllegalArgumentException
- if this enum class has no constant with the specified nameNullPointerException
- if the argument is null
-
code
public int code()Gets the FoundationDB native-level constant code for aMutationType
.- Returns:
- the native code for a FoundationDB
MutationType
constant.
-