public RelNode flattenTypes( RelNode rootRel, boolean restructure) { RelStructuredTypeFlattener typeFlattener = new RelStructuredTypeFlattener(rexBuilder, createToRelContext()); return typeFlattener.rewrite(rootRel, restructure); }
public RelNode flattenTypes( RelNode rootRel, boolean restructure) { RelStructuredTypeFlattener typeFlattener = new RelStructuredTypeFlattener(rexBuilder, createToRelContext()); return typeFlattener.rewrite(rootRel, restructure); }
public RelNode flattenTypes( RelNode rootRel, boolean restructure) { RelStructuredTypeFlattener typeFlattener = new RelStructuredTypeFlattener(rexBuilder); RelNode newRootRel = typeFlattener.rewrite(rootRel, restructure); // There are three maps constructed during convertQuery which need to to // be maintained for use in decorrelation. 1. mapRefRelToCorVar: - map a // rel node to the coorrelated variables it references 2. // mapCorVarToCorRel: - map a correlated variable to the correlatorRel // providing it 3. mapFieldAccessToCorVar: - map a rex field access to // the cor var it represents. because typeFlattener does not clone or // modify a correlated field access this map does not need to be // updated. typeFlattener.updateRelInMap(mapRefRelToCorVar); typeFlattener.updateRelInMap(mapCorVarToCorRel); return newRootRel; }