public final class PROJECT_RELATION extends java.lang.Object implements OperatorImplementation_V0105
Constructor and Description |
---|
PROJECT_RELATION(Heading argumentHeading,
java.util.Set<NameIdentifier> attributeNames)
Creates the PROJECT_RELATION
|
Modifier and Type | Method and Description |
---|---|
static RelationBuffer |
computeProjection(RelationBuffer relationBuffer,
NameIdentifier... attributes) |
ValueBuffer |
executeOperator(java.util.LinkedList<ValueBuffer> args)
Performs the actual logic of the operator.
|
java.lang.String[] |
getArgumentTypeNames()
Gets the list of names of types of the needed argument values
|
NonScalarTypeDeclaration |
getReturnTypeDeclaration()
Gets the full type declaration of the type of the return value.
|
java.lang.String |
getReturnTypeName()
Gets the name of the type of the return value
|
java.lang.String |
getSignature()
Gets the name of the operator implemented by this implementation object
|
boolean |
isDeterministic()
Tells whether the operator is deterministic with respect to the arguments of its invocations.
|
void |
readExternal(java.io.ObjectInput in) |
static PROJECTInvocationResultDetails |
validateExpressionDetails(Heading inputHeading,
java.util.Set<NameIdentifier> attributeNames,
java.lang.String inputPredicate,
java.util.Collection<? extends KeyDef> inputKeySpecifications) |
void |
writeExternal(java.io.ObjectOutput out) |
public PROJECT_RELATION(Heading argumentHeading, java.util.Set<NameIdentifier> attributeNames)
argumentHeading
- the argument's headingattributeNames
- the set of attribute names to project the argument ontopublic ValueBuffer executeOperator(java.util.LinkedList<ValueBuffer> args)
OperatorImplementation_V0104
executeOperator
in interface OperatorImplementation_V0104
args
- the argument list. The list must hold as many ValueBuffer objects as there are arguments to the operator, and each ValueBuffer object holds a value for some argument to the operator. ValueBuffer objects on the list must appear in the same order as the operator argument declarations. Implementations have the option, but are not required, to do a check the conformance of the argument list (the argument count, notably) to the operator signature.public java.lang.String[] getArgumentTypeNames()
OperatorImplementation_V0104
getArgumentTypeNames
in interface OperatorImplementation_V0104
public NonScalarTypeDeclaration getReturnTypeDeclaration()
OperatorImplementation_V0105
getReturnTypeDeclaration
in interface OperatorImplementation_V0105
public java.lang.String getReturnTypeName()
OperatorImplementation_V0104
getReturnTypeName
in interface OperatorImplementation_V0104
public java.lang.String getSignature()
OperatorImplementation_V0104
getSignature
in interface OperatorImplementation_V0104
public boolean isDeterministic()
OperatorImplementation_V0104
isDeterministic
in interface OperatorImplementation_V0104
public void readExternal(java.io.ObjectInput in)
readExternal
in interface java.io.Externalizable
public void writeExternal(java.io.ObjectOutput out)
writeExternal
in interface java.io.Externalizable
public static RelationBuffer computeProjection(RelationBuffer relationBuffer, NameIdentifier... attributes)
relationBuffer
- the buffer holding a relation subjected to a projectionattributes
- the attributes to be retained in the resultpublic static PROJECTInvocationResultDetails validateExpressionDetails(Heading inputHeading, java.util.Set<NameIdentifier> attributeNames, java.lang.String inputPredicate, java.util.Collection<? extends KeyDef> inputKeySpecifications) throws NonExistingAttributeException
attributeNames
- The set of projection attributesinputHeading
- The heading of a relational expression that is subjected to projectioninputPredicate
- The predicate of which the relation subjected to the projection is the extensioninputKeySpecifications
- The keys known to be satisfied by the relation that is subjected to this projectionNonExistingAttributeException
- If an attribute is mentioned in the projection attribute list that does not appear in the heading