Serialization Formats for Mutation
The Mutation
class supports two serialization formats.
While it only currently serializes to the newer version 2 format, it
can read both version 1 and version 2 serialized forms.
Version 1 Format
Version 1 mutation data serialization layout
data location |
description |
bytes 0 through 3 |
4-byte integer for length of row ID |
next n bytes |
row ID |
next integer |
data length |
next n bytes |
data (see below) |
next integer |
number of entries |
next boolean |
values present flag |
next integer |
number of values (only if values present flag is set) |
next n sets of integers and byte arrays |
n value lengths and value data bytes (only if values
present flag is set) |
Version 1 "data" block layout for each entry
first integer and byte array |
column family length and bytes |
next integer and byte array |
column qualifier length and bytes |
next integer and byte array |
column visibility length and bytes |
next boolean |
has timestamp flag |
next long |
timestamp |
next boolean |
deleted flag |
next integer |
value length; if negative, value bytes are the same as those
for already-read value (-length - 1) |
next n bytes |
value bytes (only if value length is non-negative) |
Version 2 Format
Version 2 mutation data serialization layout
(variable length encoding for integers and longs)
data location |
description |
byte 0 |
control byte: top bit = 1 for version 2; bottom bit =
values present flag |
next integer
| length of row ID |
next n bytes |
row ID |
next integer |
data length |
next n bytes |
data (see below) |
next integer |
number of entries |
next integer |
number of values (only if values present flag is set) |
next n sets of integers and byte arrays |
n value lengths and value data bytes (only if values
present flag is set) |
Version 2 "data" block layout for each entry
first long and byte array |
column family length and bytes |
next long and byte array |
column qualifier length and bytes |
next long and byte array |
column visibility length and bytes |
next boolean |
has timestamp flag |
next long |
timestamp (only present if timestamp flag is set) |
next boolean |
deleted flag |
next long |
value length; if negative, value bytes are the same as those
for already-read value (-length - 1) |
next n bytes |
value bytes (only if value length is non-negative) |