@API(value=MAINTAINED) public class RecordTypeKeyExpression extends BaseKeyExpression implements AtomKeyExpression, KeyExpressionWithoutChildren
BaseKeyExpression.IllegalSubKeyException, BaseKeyExpression.UnsplittableKeyExpressionException
KeyExpression.DeserializationException, KeyExpression.FanType, KeyExpression.InvalidExpressionException, KeyExpression.InvalidResultException, KeyExpression.NoSuchArgumentException, KeyExpression.SerializationException
Modifier and Type | Field and Description |
---|---|
static RecordTypeKeyExpression |
RECORD_TYPE_KEY |
static RecordMetaDataProto.KeyExpression |
RECORD_TYPE_KEY_PROTO |
Modifier and Type | Method and Description |
---|---|
boolean |
createsDuplicates()
This states whether the given expression type is capable of evaluating more to more than
one value when applied to a single record.
|
boolean |
equals(Object o) |
boolean |
equalsAtomic(AtomKeyExpression other) |
<M extends Message> |
evaluateMessage(FDBRecord<M> record,
Message message)
Evaluate this expression against a record or a Protobuf message.
|
int |
getColumnSize()
Returns the number of items in each KeyValue that will be returned.
|
Iterator<? extends ExpressionRef<? extends PlannerExpression>> |
getPlannerExpressionChildren()
Return an iterator of references to the children of this planner expression.
|
int |
hashCode() |
boolean |
hasRecordTypeKey()
Check whether a key expression uses record type key in some way.
|
int |
planHash()
Return a hash similar to
hashCode , but with the additional guarantee that is is stable across JVMs. |
RecordMetaDataProto.KeyExpression |
toKeyExpression() |
RecordMetaDataProto.RecordTypeKey |
toProto() |
String |
toString() |
GroupingKeyExpression |
ungrouped()
A
RecordType expression with no grouping keys (mostly for evaluating record functions). |
List<Descriptors.FieldDescriptor> |
validate(Descriptors.Descriptor descriptor)
Validate this expression against a given record type descriptor.
|
getSubKey, getSubKeyImpl, isPrefixKey
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
evaluate, evaluateSingleton, fromProto, getSubKey, hasProperInterfaces, isPrefixKey, normalizeKeyForPositions, versionColumns
iterablePlanHash, objectPlanHash, objectsPlanHash, planHash, planHash
acceptPropertyVisitor, bindTo
public static final RecordTypeKeyExpression RECORD_TYPE_KEY
public static final RecordMetaDataProto.KeyExpression RECORD_TYPE_KEY_PROTO
@Nonnull public <M extends Message> List<Key.Evaluated> evaluateMessage(@Nullable FDBRecord<M> record, @Nullable Message message)
KeyExpression
evaluateMessage
.
Under ordinary circumstances, if record
is null
, then message
will be null
.
Otherwise, message
will be record.getRecord()
or some submessage of that, possibly null
if
the corresponding field is missing.evaluateMessage
in interface KeyExpression
M
- the type of recordrecord
- the recordmessage
- the Protobuf message to evaluate againstKeyExpression.evaluate(com.apple.foundationdb.record.provider.foundationdb.FDBRecord<M>)
public boolean createsDuplicates()
KeyExpression
FanType.FanOut
set (either directly
or indirectly).createsDuplicates
in interface KeyExpression
true
if this expression can evaluate to multiple values and false
otherwisepublic List<Descriptors.FieldDescriptor> validate(@Nonnull Descriptors.Descriptor descriptor)
KeyExpression
validate
in interface KeyExpression
descriptor
- the descriptor for the record type or submessagepublic int getColumnSize()
KeyExpression
getColumnSize
in interface KeyExpression
public boolean hasRecordTypeKey()
KeyExpression
hasRecordTypeKey
in interface KeyExpression
true
if record type key is used@Nonnull public GroupingKeyExpression ungrouped()
RecordType
expression with no grouping keys (mostly for evaluating record functions).GroupingKeyExpression
with no grouping keys@Nonnull public RecordMetaDataProto.RecordTypeKey toProto() throws KeyExpression.SerializationException
toProto
in interface KeyExpression
KeyExpression.SerializationException
@Nonnull public RecordMetaDataProto.KeyExpression toKeyExpression()
toKeyExpression
in interface KeyExpression
@Nonnull @API(value=EXPERIMENTAL) public Iterator<? extends ExpressionRef<? extends PlannerExpression>> getPlannerExpressionChildren()
PlannerExpression
Collections.emptyIterator()
is returned. The returned iterator should
be treated as an immutable object and may throw an exception if Iterator.remove()
is called.
The iterator must return its elements in a consistent order.getPlannerExpressionChildren
in interface PlannerExpression
public int planHash()
PlanHashable
hashCode
, but with the additional guarantee that is is stable across JVMs.planHash
in interface PlanHashable
public boolean equalsAtomic(AtomKeyExpression other)
equalsAtomic
in interface AtomKeyExpression