org.eigenbase.rel
Class UncollectRel
java.lang.Object
org.eigenbase.rel.AbstractRelNode
org.eigenbase.rel.SingleRel
org.eigenbase.rel.UncollectRel
- All Implemented Interfaces:
- Cloneable, RelNode
public final class UncollectRel
- extends SingleRel
A relational expression which unnests its input's sole column into a
relation.
Like its inverse operation CollectRel
, UncollectRel is generally
invoked in a nested loop, driven by CorrelatorRel
or similar.
- Since:
- Dec 12, 2004
- Version:
- $Id: //open/dev/farrago/src/org/eigenbase/rel/UncollectRel.java#17 $
- Author:
- Wael Chatila
Methods inherited from class org.eigenbase.rel.AbstractRelNode |
cloneTraits, collectVariablesSet, collectVariablesUsed, computeDigest, computeSelfCost, getChildExps, getCluster, getCollationList, getConvention, getCorrelVariable, getDescription, getDigest, getExpectedInputRowType, getId, getInput, getOrCreateCorrelVariable, getQuery, getRelTypeName, getRowType, getTable, getTraits, getVariablesStopped, inheritTraitsFrom, isAccessTo, isDistinct, isValid, onRegister, recomputeDigest, register, registerCorrelVariable, setCorrelVariable, toString |
UncollectRel
public UncollectRel(RelOptCluster cluster,
RelNode child)
- Creates an UncollectRel.
The row type of the child relational expression must contain precisely
one column, that column must be a multiset of records.
- Parameters:
cluster
- Cluster the relational expression belongs tochild
- Child relational expression
clone
public UncollectRel clone()
- Description copied from interface:
RelNode
- Clones this RelNode.
Traits of the RelNode must be explicitly cloned, using AbstractRelNode.inheritTraitsFrom(AbstractRelNode)
, as the RelNode may
have traits of which it has no knowledge. Example implementation:
public MyRelNode clone()
{
MyRelNode clone = new MyRelNode(...);
clone.inheritTraitsFrom(this);
return clone;
}
N.B.: This method must be overridden whenever an existing,
concrete RelNode is extended. Otherwise, calling clone() will produce a
differently typed RelNode, resulting in invalid or incorrect query plans.
- Specified by:
clone
in interface RelNode
- Specified by:
clone
in class AbstractRelNode
- Returns:
- a clone of this RelNode
deriveRowType
protected RelDataType deriveRowType()
- Overrides:
deriveRowType
in class SingleRel
deriveUncollectRowType
public static RelDataType deriveUncollectRowType(RelNode rel)
- Returns the row type returned by applying the 'UNNEST' operation to a
relational expression. The relational expression must have precisely one
column, whose type must be a multiset of structs. The return type is the
type of that column.