public RelDecorrelator(
RexBuilder rexBuilder,
Map<RelNode, SortedSet<CorrelatorRel.Correlation>> mapRefRelToCorVar,
SortedMap<CorrelatorRel.Correlation, CorrelatorRel> mapCorVarToCorRel,
Map<RexFieldAccess, CorrelatorRel.Correlation> mapFieldAccessToCorVar)
{
this.rexBuilder = rexBuilder;
this.mapRefRelToCorVar = mapRefRelToCorVar;
this.mapCorVarToCorRel = mapCorVarToCorRel;
this.mapFieldAccessToCorVar = mapFieldAccessToCorVar;
decorrelateVisitor = new DecorrelateRelVisitor();
mapOldToNewRel = new HashMap<RelNode, RelNode>();
mapNewRelToMapCorVarToOutputPos =
new HashMap<RelNode,
SortedMap<CorrelatorRel.Correlation, Integer>>();
mapNewRelToMapOldToNewOutputPos =
new HashMap<RelNode, Map<Integer, Integer>>();
}