org.eigenbase.rex
Class RexRangeRef
java.lang.Object
org.eigenbase.rex.RexNode
org.eigenbase.rex.RexRangeRef
public class RexRangeRef
- extends RexNode
Reference to a range of columns.
This construct is used only during the process of translating a SQL tree to a rel/rex tree. Regular rex trees do not
contain this construct.
While translating a join of EMP(EMPNO, ENAME, DEPTNO) to DEPT(DEPTNO2,
DNAME) we create RexRangeRef(DeptType,3) to represent the pair
of columns (DEPTNO2, DNAME) which came from DEPT. The type has 2 columns, and
therefore the range represents columns {3, 4} of the input.
Suppose we later create a reference to the DNAME field of this
RexRangeRef; it will return a RexInputRef(5,Integer),
and the RexRangeRef will disappear.
- Since:
- Nov 23, 2003
- Version:
- $Id: //open/dev/farrago/src/org/eigenbase/rex/RexRangeRef.java#15 $
- Author:
- jhyde
type
private final RelDataType type
offset
private final int offset
RexRangeRef
RexRangeRef(RelDataType rangeType,
int offset)
- Creates a range reference.
- Parameters:
rangeType - Type of the record returnedoffset - Offset of the first column within the input record
getType
public RelDataType getType()
- Specified by:
getType in class RexNode
getOffset
public int getOffset()
clone
public RexRangeRef clone()
- Specified by:
clone in class RexNode
accept
public <R> R accept(RexVisitor<R> visitor)
- Description copied from class:
RexNode
- Accepts a visitor, dispatching to the right overloaded
visitXxx method.
Also see RexProgram.apply(RexVisitor, RexNode[], RexNode),
which applies a visitor to several expressions simultaneously.
- Specified by:
accept in class RexNode