|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.eigenbase.rel.AbstractRelNode org.eigenbase.rel.SingleRel org.eigenbase.rel.convert.ConverterRelImpl net.sf.farrago.query.IteratorToFennelConverter
public class IteratorToFennelConverter
IteratorToFennelConverter is a Converter from the iterator calling convention
to the fennel calling convention
.
Nested Class Summary | |
---|---|
private static class |
IteratorToFennelConverter.ChildStream
|
private static class |
IteratorToFennelConverter.IteratorToFennelPullRule
Rule which converts a RelNode of Fennel calling convention to iterator calling convention by adding a
IteratorToFennelConverter . |
Field Summary | |
---|---|
private Map<List<FarragoRelImplementor.RelPathEntry>,List<IteratorToFennelConverter.ChildStream>> |
childStreamDefsMap
|
static String |
CONNECTION_VAR_NAME
|
private Map<List<FarragoRelImplementor.RelPathEntry>,String> |
farragoTransformClassNameMap
|
(package private) List<FarragoRelImplementor.RelPathEntry> |
fennelRelPath
The RelNode path that leads to this node when invoking this node to setup the Fennel child streams |
static String |
INPUT_BINDINGS_VAR_NAME
|
(package private) List<FarragoRelImplementor.RelPathEntry> |
javaRelPath
The RelNode path that leads to this node when invoking this node to generate Java code |
static IteratorToFennelConverter.IteratorToFennelPullRule |
Rule
|
static String |
STREAM_NAME_VAR_NAME
|
protected static Logger |
tracer
|
Fields inherited from class org.eigenbase.rel.convert.ConverterRelImpl |
---|
inTraits, traitDef |
Fields inherited from class org.eigenbase.rel.AbstractRelNode |
---|
digest, id, rowType, traits |
Fields inherited from interface net.sf.farrago.query.FennelRel |
---|
FENNEL_EXEC_CONVENTION |
Fields inherited from interface org.eigenbase.rel.RelNode |
---|
emptyArray |
Fields inherited from interface org.eigenbase.rel.RelNode |
---|
emptyArray |
Constructor Summary | |
---|---|
IteratorToFennelConverter(RelOptCluster cluster,
RelNode child)
Creates a new IteratorToFennelConverter object. |
Method Summary | |
---|---|
IteratorToFennelConverter |
clone()
Clones this RelNode. |
private static ClassDeclaration |
generateTransformer(FarragoPreparingStmt stmt,
String className,
FarragoRelImplementor implementor,
Expression tupleWriterExpression,
Expression childExp)
|
static Expression |
generateTupleWriter(FarragoPreparingStmt stmt,
JavaRelImplementor implementor,
RelDataType rowType)
|
RelFieldCollation[] |
getCollations()
TODO: jhyde, 2006/3/28: unify with RelNode.getCollationList() |
Object |
implementFennelChild(FennelRelImplementor implementor)
Visits this relational expression as part of the implementation process. |
protected void |
initFennelInvocation(List<FarragoRelImplementor.RelPathEntry> relPath)
|
protected void |
initJavaInvocation(List<FarragoRelImplementor.RelPathEntry> relPath)
|
protected FemJavaTransformStreamDef |
newJavaTransformStreamDef(FennelRelImplementor implementor)
|
static void |
register(RelOptPlanner planner)
Registers this relational expression and rule(s) with the planner, as per AbstractRelNode.register(org.eigenbase.relopt.RelOptPlanner) . |
(package private) void |
registerChildStreamDef(FemExecutionStreamDef childStreamDef,
boolean implicit)
Registers the FemExecutionStreamDef(s) that provide input to this converter's FemExecutionStreamDef (either explicitly or implicitly). |
protected void |
setFarragoTransformClassName(String className)
|
FemExecutionStreamDef |
toStreamDef(FennelRelImplementor implementor)
Converts this relational expression to FemExecutionStreamDef
form. |
Methods inherited from class org.eigenbase.rel.convert.ConverterRelImpl |
---|
cannotImplement, computeSelfCost, convertTraits, getInputConvention, getInputTraits, getTraitDef, isDistinct |
Methods inherited from class org.eigenbase.rel.SingleRel |
---|
childrenAccept, deriveRowType, explain, getChild, getInputs, getRows, replaceInput |
Methods inherited from class org.eigenbase.rel.AbstractRelNode |
---|
cloneTraits, collectVariablesSet, collectVariablesUsed, computeDigest, getChildExps, getCluster, getCollationList, getConvention, getCorrelVariable, getDescription, getDigest, getExpectedInputRowType, getId, getInput, getOrCreateCorrelVariable, getQuery, getRelTypeName, getRowType, getTable, getTraits, getVariablesStopped, inheritTraitsFrom, isAccessTo, isValid, onRegister, recomputeDigest, registerCorrelVariable, setCorrelVariable, toString |
Methods inherited from class java.lang.Object |
---|
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Methods inherited from interface org.eigenbase.rel.RelNode |
---|
childrenAccept, collectVariablesSet, collectVariablesUsed, computeSelfCost, explain, getChildExps, getCluster, getCollationList, getConvention, getCorrelVariable, getDescription, getDigest, getExpectedInputRowType, getId, getInput, getInputs, getOrCreateCorrelVariable, getQuery, getRelTypeName, getRows, getRowType, getTable, getTraits, getVariablesStopped, isAccessTo, isDistinct, isValid, onRegister, recomputeDigest, registerCorrelVariable, replaceInput, setCorrelVariable |
Methods inherited from interface org.eigenbase.rel.convert.ConverterRel |
---|
getChild, getInputTraits, getTraitDef |
Methods inherited from interface org.eigenbase.rel.RelNode |
---|
childrenAccept, collectVariablesSet, collectVariablesUsed, computeSelfCost, explain, getChildExps, getCluster, getCollationList, getConvention, getCorrelVariable, getDescription, getDigest, getExpectedInputRowType, getId, getInput, getInputs, getOrCreateCorrelVariable, getQuery, getRelTypeName, getRows, getRowType, getTable, getTraits, getVariablesStopped, isAccessTo, isDistinct, isValid, onRegister, recomputeDigest, registerCorrelVariable, replaceInput, setCorrelVariable |
Field Detail |
---|
public static final String CONNECTION_VAR_NAME
public static final String INPUT_BINDINGS_VAR_NAME
public static final String STREAM_NAME_VAR_NAME
public static final IteratorToFennelConverter.IteratorToFennelPullRule Rule
protected static final Logger tracer
List<FarragoRelImplementor.RelPathEntry> javaRelPath
List<FarragoRelImplementor.RelPathEntry> fennelRelPath
private Map<List<FarragoRelImplementor.RelPathEntry>,String> farragoTransformClassNameMap
private Map<List<FarragoRelImplementor.RelPathEntry>,List<IteratorToFennelConverter.ChildStream>> childStreamDefsMap
Constructor Detail |
---|
public IteratorToFennelConverter(RelOptCluster cluster, RelNode child)
cluster
- RelOptCluster for this relchild
- input rel producing rows to be converted to FennelMethod Detail |
---|
public IteratorToFennelConverter clone()
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.
clone
in interface RelNode
clone
in class AbstractRelNode
public static Expression generateTupleWriter(FarragoPreparingStmt stmt, JavaRelImplementor implementor, RelDataType rowType)
private static ClassDeclaration generateTransformer(FarragoPreparingStmt stmt, String className, FarragoRelImplementor implementor, Expression tupleWriterExpression, Expression childExp)
protected void initJavaInvocation(List<FarragoRelImplementor.RelPathEntry> relPath)
protected void initFennelInvocation(List<FarragoRelImplementor.RelPathEntry> relPath)
public Object implementFennelChild(FennelRelImplementor implementor)
FennelRel
FennelRel.toStreamDef(net.sf.farrago.query.FennelRelImplementor)
.
implementFennelChild
in interface FennelRel
void registerChildStreamDef(FemExecutionStreamDef childStreamDef, boolean implicit)
childStreamDef
- child stream def to registerimplicit
- true if dataflow is implicit via a UDX reading from a
cursor; false if explicit as an input into this converter's
FemExecutionStreamDefprotected void setFarragoTransformClassName(String className)
public FemExecutionStreamDef toStreamDef(FennelRelImplementor implementor)
FennelRel
FemExecutionStreamDef
form. In the process, the relational expression will almost certainly
call FennelRelImplementor.visitFennelChild(net.sf.farrago.query.FennelRel, int)
on each of its
children.
toStreamDef
in interface FennelRel
implementor
- for generating Java code
protected FemJavaTransformStreamDef newJavaTransformStreamDef(FennelRelImplementor implementor)
public RelFieldCollation[] getCollations()
FennelRel
TODO: jhyde, 2006/3/28: unify with RelNode.getCollationList()
getCollations
in interface FennelRel
public static void register(RelOptPlanner planner)
AbstractRelNode.register(org.eigenbase.relopt.RelOptPlanner)
.
planner
- Planner
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |