Class FDBSyntheticRecord
- java.lang.Object
-
- com.apple.foundationdb.record.provider.foundationdb.FDBSyntheticRecord
-
- All Implemented Interfaces:
FDBIndexableRecord<Message>
,FDBRecord<Message>
,FDBStoredSizes
@API(EXPERIMENTAL) public class FDBSyntheticRecord extends Object implements FDBIndexableRecord<Message>
A record synthesized from stored records. AFDBSyntheticRecord
isFDBIndexableRecord
, so that indexes can be defined on synthetic records, but notFDBStoredRecord
, since it is not stored separately.
-
-
Constructor Summary
Constructors Modifier Constructor Description protected
FDBSyntheticRecord(Tuple primaryKey, SyntheticRecordType<?> recordType, Message record, FDBStoredSizes size, Map<String,FDBStoredRecord<? extends Message>> constituents)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
equals(Object o)
FDBStoredRecord<? extends Message>
getConstituent(String name)
Map<String,FDBStoredRecord<? extends Message>>
getConstituents()
int
getKeyCount()
Get the number of keys used to store this record.int
getKeySize()
Get the size in bytes of all keys used to store this record.Tuple
getPrimaryKey()
Get the primary key for this synthetic record.Message
getRecord()
Get the Protobuf message form of this record.SyntheticRecordType<?>
getRecordType()
Get the record type for this record.int
getValueSize()
Get the size in bytes of all values used to store this record.FDBRecordVersion
getVersion()
Get theFDBRecordVersion
associated with this record (ornull
).int
hashCode()
boolean
hasVersion()
Get whether aFDBRecordVersion
has been set for thisStoredRecord
.boolean
isSplit()
Get whether this record is split between two or more key-value pairs.boolean
isVersionedInline()
Get whether this record was stored with an associated version.static FDBSyntheticRecord
of(SyntheticRecordType<?> recordType, Map<String,FDBStoredRecord<? extends Message>> constituents)
String
toString()
-
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface com.apple.foundationdb.record.provider.foundationdb.FDBStoredSizes
addSizeLogInfo
-
-
-
-
Constructor Detail
-
FDBSyntheticRecord
protected FDBSyntheticRecord(@Nonnull Tuple primaryKey, @Nonnull SyntheticRecordType<?> recordType, @Nonnull Message record, @Nonnull FDBStoredSizes size, @Nonnull Map<String,FDBStoredRecord<? extends Message>> constituents)
-
-
Method Detail
-
of
@Nonnull public static FDBSyntheticRecord of(@Nonnull SyntheticRecordType<?> recordType, @Nonnull Map<String,FDBStoredRecord<? extends Message>> constituents)
-
getPrimaryKey
@Nonnull public Tuple getPrimaryKey()
Get the primary key for this synthetic record. The primary key is the record type key for the synthetic record type, followed by the primary keys of each of the constituent records as nested tuples.- Specified by:
getPrimaryKey
in interfaceFDBRecord<Message>
- Returns:
- primary key for this record
-
getRecordType
@Nonnull public SyntheticRecordType<?> getRecordType()
Description copied from interface:FDBRecord
Get the record type for this record.- Specified by:
getRecordType
in interfaceFDBRecord<Message>
- Returns:
- record type for this record
-
getRecord
@Nonnull public Message getRecord()
Description copied from interface:FDBRecord
Get the Protobuf message form of this record.
-
getKeyCount
public int getKeyCount()
Get the number of keys used to store this record. For a synthetic record, this is the sum of the number of keys used to store each of the constituent records.- Specified by:
getKeyCount
in interfaceFDBStoredSizes
- Returns:
- number of keys
-
getKeySize
public int getKeySize()
Get the size in bytes of all keys used to store this record. For a synthetic record, this is the sum of the sizes used to store each of the constituent records.- Specified by:
getKeySize
in interfaceFDBStoredSizes
- Returns:
- size in bytes
-
getValueSize
public int getValueSize()
Get the size in bytes of all values used to store this record. For a synthetic record, this is the sum of the sizes used to store each of the constituent records.- Specified by:
getValueSize
in interfaceFDBStoredSizes
- Returns:
- size in bytes
-
isSplit
public boolean isSplit()
Description copied from interface:FDBStoredSizes
Get whether this record is split between two or more key-value pairs.- Specified by:
isSplit
in interfaceFDBStoredSizes
- Returns:
true
if split
-
hasVersion
public boolean hasVersion()
Description copied from interface:FDBRecord
Get whether aFDBRecordVersion
has been set for thisStoredRecord
.- Specified by:
hasVersion
in interfaceFDBRecord<Message>
- Returns:
true
if this record has a version
-
getVersion
@Nullable public FDBRecordVersion getVersion()
Description copied from interface:FDBRecord
Get theFDBRecordVersion
associated with this record (ornull
).- Specified by:
getVersion
in interfaceFDBRecord<Message>
- Returns:
- the version for this record
-
isVersionedInline
public boolean isVersionedInline()
Description copied from interface:FDBStoredSizes
Get whether this record was stored with an associated version. In particular, this states whether there was a version stored directly with the record in the database, which should only be true if the format version of the database is greater than or equal toFDBRecordStore.SAVE_VERSION_WITH_RECORD_FORMAT_VERSION
.- Specified by:
isVersionedInline
in interfaceFDBStoredSizes
- Returns:
true
if this record is stored with a version in-line
-
getConstituents
@Nonnull public Map<String,FDBStoredRecord<? extends Message>> getConstituents()
-
getConstituent
@Nullable public FDBStoredRecord<? extends Message> getConstituent(@Nonnull String name)
-
-