net.sf.farrago.query
Interface FennelRel

All Superinterfaces:
Cloneable, RelNode
All Known Implementing Classes:
FennelAggRel, FennelBernoulliSamplingRel, FennelBufferRel, FennelCalcRel, FennelCartesianProductRel, FennelDoubleRel, FennelIdxWriteRel, FennelMergeRel, FennelMultipleRel, FennelMultiUseBufferRel, FennelNestedLoopJoinRel, FennelOptionalRel, FennelPullCollectRel, FennelPullCorrelatorRel, FennelPullUncollectRel, FennelRenameRel, FennelReshapeRel, FennelSingleRel, FennelSortRel, FennelTempIdxSearchRel, FennelValuesRel, FennelWindowRel, FlatFileFennelRel, FtrsIndexBuilderRel, FtrsIndexScanRel, FtrsIndexSearchRel, FtrsTableModificationRel, IteratorToFennelConverter, LcsIndexAggRel, LcsIndexBitOpRel, LcsIndexBuilderRel, LcsIndexIntersectRel, LcsIndexMergeRel, LcsIndexMinusRel, LcsIndexOnlyScanRel, LcsIndexSearchRel, LcsNormalizerRel, LcsRowScanRel, LcsRowScanRelBase, LcsSamplingRowScanRel, LcsTableAppendRel, LcsTableDeleteRel, LcsTableMergeRel, LhxAggRel, LhxJoinRel, MedAbstractFennelTableModRel, MedMockFennelRel

public interface FennelRel
extends RelNode

FennelRel defines the interface which must be implemented by any RelNode corresponding to a C++ physical implementation conforming to the fennel::ExecStream interface.

Version:
$Id: //open/dev/farrago/src/net/sf/farrago/query/FennelRel.java#21 $
Author:
John V. Sichi

Field Summary
static CallingConvention FENNEL_EXEC_CONVENTION
          Calling convention which transfers data as rows in Fennel tuple format (implementations must conform to the fennel::ExecStream interface).
 
Fields inherited from interface org.eigenbase.rel.RelNode
emptyArray
 
Method Summary
 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.
 FemExecutionStreamDef toStreamDef(FennelRelImplementor implementor)
          Converts this relational expression to FemExecutionStreamDef form.
 
Methods inherited from interface org.eigenbase.rel.RelNode
childrenAccept, clone, 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

FENNEL_EXEC_CONVENTION

static final CallingConvention FENNEL_EXEC_CONVENTION
Calling convention which transfers data as rows in Fennel tuple format (implementations must conform to the fennel::ExecStream interface).

Method Detail

toStreamDef

FemExecutionStreamDef toStreamDef(FennelRelImplementor implementor)
Converts this relational expression to 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.

Parameters:
implementor - for generating Java code
Returns:
generated FemExecutionStreamDef

implementFennelChild

Object implementFennelChild(FennelRelImplementor implementor)
Visits this relational expression as part of the implementation process. Fennel relational expressions are implemented in a two-phase process: first call this method, then call toStreamDef(net.sf.farrago.query.FennelRelImplementor).


getCollations

RelFieldCollation[] getCollations()

TODO: jhyde, 2006/3/28: unify with RelNode.getCollationList()

Returns:
the sort order produced by this FennelRel, or an empty array if the output is not guaranteed to be in any particular order.