Class UncollectRel

  extended by org.eigenbase.rel.AbstractRelNode
      extended by org.eigenbase.rel.SingleRel
          extended by 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.

Dec 12, 2004
$Id: //open/dev/farrago/src/org/eigenbase/rel/ $
Wael Chatila

Field Summary
Fields inherited from class org.eigenbase.rel.AbstractRelNode
digest, id, nextId, rowType, traits
Fields inherited from interface org.eigenbase.rel.RelNode
Constructor Summary
UncollectRel(RelOptCluster cluster, RelNode child)
          Creates an UncollectRel.
Method Summary
 UncollectRel clone()
          Clones this RelNode.
protected  RelDataType deriveRowType()
static RelDataType deriveUncollectRowType(RelNode rel)
          Returns the row type returned by applying the 'UNNEST' operation to a relational expression.
Methods inherited from class org.eigenbase.rel.SingleRel
childrenAccept, explain, getChild, getInputs, getRows, replaceInput
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
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait

Constructor Detail


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.

cluster - Cluster the relational expression belongs to
child - Child relational expression
Method Detail


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(...);
         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
a clone of this RelNode


protected RelDataType deriveRowType()
deriveRowType in class SingleRel


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.