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