public final class UNGROUP_RELATION extends java.lang.Object implements OperatorImplementation_V0105
| Constructor and Description |
|---|
UNGROUP_RELATION(Heading heading,
java.util.Map<NameIdentifier,TypeDeclaration> ungroupAttributes)
Creates the UNGROUP_RELATION
|
| Modifier and Type | Method and Description |
|---|---|
static RelationBuffer |
computeUngroup(RelationBuffer relationBuffer,
java.util.Map<NameIdentifier,TypeDeclaration> ungroupAttributes) |
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
|
TypeDeclaration |
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 UNGROUPInvocationResultDetails |
validateExpressionDetails(Heading heading,
java.util.Set<NameIdentifier> ungroupAttributes,
java.lang.String inputPredicate) |
static UNGROUPInvocationResultDetails |
validateExpressionDetails(Heading heading,
java.util.Set<NameIdentifier> ungroupAttributes,
java.lang.String inputPredicate,
java.util.Collection<? extends KeyDef> inputKeySpecifications) |
void |
writeExternal(java.io.ObjectOutput out) |
public UNGROUP_RELATION(Heading heading, java.util.Map<NameIdentifier,TypeDeclaration> ungroupAttributes)
heading - the heading of the return typeungroupAttributes - The ungroup attributes. The key of the map is the name of the RVA in the input, the NonScalarTypeDeclaration holds its heading.public static RelationBuffer computeUngroup(RelationBuffer relationBuffer, java.util.Map<NameIdentifier,TypeDeclaration> ungroupAttributes)
relationBuffer - the relationBuffer holding the body/tuples to be ungrouped according to the specs in ungroupAttributesungroupAttributes - the list of relation-typed attributes to be ungrouped in the result, mapped to their (nonscalar) typedeclaration in the heading of the input relation. This map must contain ONLY the ungroup attributes.public static UNGROUPInvocationResultDetails validateExpressionDetails(Heading heading, java.util.Set<NameIdentifier> ungroupAttributes, java.lang.String inputPredicate) throws UnGroupAttributeIsNotRelationTypedException, UnGroupCausesDuplicateAttributeException, MultipleUngroupNotSupportedException, NonExistingAttributeException
heading - the heading of the relation to be ungrouped according to the specs in ungroupAttributesungroupAttributes - the list of relation-typed attributes to be ungrouped in the resultinputPredicate - The predicate of the input expression. If unknown, use the empty string.UnGroupAttributeIsNotRelationTypedException - if a non-relation-typed attribute is specified among the ungroupAttributesUnGroupCausesDuplicateAttributeException - if an attribute of a relation-typed attribute to be ungrouped also appears in the heading of the relation to be ungrouped itselfMultipleUngroupNotSupportedException - if the ungroupAttributes contain more than one attributeNonExistingAttributeException - If an attribute is specified in ingroupAttributes that is not part of the headingpublic static UNGROUPInvocationResultDetails validateExpressionDetails(Heading heading, java.util.Set<NameIdentifier> ungroupAttributes, java.lang.String inputPredicate, java.util.Collection<? extends KeyDef> inputKeySpecifications) throws UnGroupAttributeIsNotRelationTypedException, UnGroupCausesDuplicateAttributeException, MultipleUngroupNotSupportedException, NonExistingAttributeException
heading - the heading of the relation to be ungrouped according to the specs in ungroupAttributesungroupAttributes - the list of relation-typed attributes to be ungrouped in the resultinputPredicate - The predicate of the input expression. If unknown, use the empty string.inputKeySpecifications - The key specifications of the input expression. If unknown, an empty collection can be passed and the input will then be assumed to be all-key.UnGroupAttributeIsNotRelationTypedException - if a non-relation-typed attribute is specified among the ungroupAttributesUnGroupCausesDuplicateAttributeException - if an attribute of a relation-typed attribute to be ungrouped also appears in the heading of the relation to be ungrouped itselfMultipleUngroupNotSupportedException - if the ungroupAttributes contain more than one attributeNonExistingAttributeException - If an attribute is specified in ingroupAttributes that is not part of the headingpublic ValueBuffer executeOperator(java.util.LinkedList<ValueBuffer> args)
OperatorImplementation_V0104executeOperator in interface OperatorImplementation_V0104args - 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_V0104getArgumentTypeNames in interface OperatorImplementation_V0104public TypeDeclaration getReturnTypeDeclaration()
OperatorImplementation_V0105getReturnTypeDeclaration in interface OperatorImplementation_V0105public java.lang.String getReturnTypeName()
OperatorImplementation_V0104getReturnTypeName in interface OperatorImplementation_V0104public java.lang.String getSignature()
OperatorImplementation_V0104getSignature in interface OperatorImplementation_V0104public boolean isDeterministic()
OperatorImplementation_V0104isDeterministic in interface OperatorImplementation_V0104public void readExternal(java.io.ObjectInput in)
readExternal in interface java.io.Externalizablepublic void writeExternal(java.io.ObjectOutput out)
writeExternal in interface java.io.Externalizable