net.sf.farrago.fennel
Class FennelDynamicParamId

java.lang.Object
  extended by net.sf.farrago.fennel.FennelDynamicParamId

public class FennelDynamicParamId
extends Object

FennelDynamicParamId is an opaque type for the 32-bit integers used to uniquely identify dynamic parameters within a FennelStreamGraph. Fennel dynamic parameters may be used to implement user-level dynamic parameters (represented as question marks in SQL text); they may also be generated internally by the optimizer as part of physical implementation. In the latter case, they are used for out-of-band communication between ExecStreams which cannot be expressed via the usual producer/consumer dataflow mechanisms (e.g. when the streams are not adjacent, or when communication is required from consumer back to producer).

Version:
$Id: //open/dev/farrago/src/net/sf/farrago/fennel/FennelDynamicParamId.java#8 $
Author:
John V. Sichi

Nested Class Summary
static class FennelDynamicParamId.StreamType
          Indicates whether a stream that accesses a dynamic parameter produces or consumes the dynamic parameter
 
Field Summary
private  FemExecutionStreamDef consumerStream
           
private  int id
           
private  FemExecutionStreamDef producerStream
           
 
Constructor Summary
FennelDynamicParamId(int id)
           
FennelDynamicParamId(int id, FemExecutionStreamDef streamDef, FennelDynamicParamId.StreamType streamType)
           
 
Method Summary
 void associateStream(FemExecutionStreamDef streamDef, FennelDynamicParamId.StreamType streamType)
          Associates a stream with the dynamic parameter.
 boolean equals(Object other)
           
 FemExecutionStreamDef getConsumerStream()
           
 FemExecutionStreamDef getProducerStream()
           
 int hashCode()
           
 int intValue()
           
 String toString()
           
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

id

private final int id

producerStream

private FemExecutionStreamDef producerStream

consumerStream

private FemExecutionStreamDef consumerStream
Constructor Detail

FennelDynamicParamId

public FennelDynamicParamId(int id)

FennelDynamicParamId

public FennelDynamicParamId(int id,
                            FemExecutionStreamDef streamDef,
                            FennelDynamicParamId.StreamType streamType)
Method Detail

intValue

public int intValue()
Returns:
the underlying int value

associateStream

public void associateStream(FemExecutionStreamDef streamDef,
                            FennelDynamicParamId.StreamType streamType)
Associates a stream with the dynamic parameter. The stream either produces or consumes the dynamic parameter.

Parameters:
streamDef - the stream
streamType - whether the stream produces or consumes the parameter

getProducerStream

public FemExecutionStreamDef getProducerStream()
Returns:
the stream that produces this dynamic parameter

getConsumerStream

public FemExecutionStreamDef getConsumerStream()
Returns:
the stream that consumes this dynamic parameter

equals

public boolean equals(Object other)
Overrides:
equals in class Object

hashCode

public int hashCode()
Overrides:
hashCode in class Object

toString

public String toString()
Overrides:
toString in class Object