/** * Maps the ordinal of a field pre-flattening to the ordinal of the * corresponding field post-flattening. * * @param oldOrdinal Pre-flattening ordinal * @return Post-flattening ordinal */ protected int getNewForOldInput(int oldOrdinal) { return getNewFieldForOldInput(oldOrdinal).i; }
/** * Maps the ordinal of a field pre-flattening to the ordinal of the * corresponding field post-flattening. * * @param oldOrdinal Pre-flattening ordinal * @return Post-flattening ordinal */ protected int getNewForOldInput(int oldOrdinal) { return getNewFieldForOldInput(oldOrdinal).i; }
@Override public RexNode visitInputRef(RexInputRef input) { final int oldIndex = input.getIndex(); final Ord<RelDataType> field = getNewFieldForOldInput(oldIndex); // Use the actual flattened type, which may be different from the current // type. RelDataType fieldType = removeDistinct(field.e); return new RexInputRef(field.i, fieldType); }
@Override public RexNode visitInputRef(RexInputRef input) { final int oldIndex = input.getIndex(); final Ord<RelDataType> field = getNewFieldForOldInput(oldIndex); // Use the actual flattened type, which may be different from the current // type. RelDataType fieldType = removeDistinct(field.e); return new RexInputRef(field.i, fieldType); }
for (int j = 0; j < n; ++j) { final Ord<RelDataType> newField = getNewFieldForOldInput(inputRef.getIndex()); flattenedExps.add( Pair.of(new RexInputRef(newField.i + j, newField.e), final RexInputRef inputRef = (RexInputRef) oldOperands.get(0); final Ord<RelDataType> newField = getNewFieldForOldInput(inputRef.getIndex()); newExp = rexBuilder.makeCall(exp.getType(), ((RexCall) exp).getOperator(),
for (int j = 0; j < n; ++j) { final Ord<RelDataType> newField = getNewFieldForOldInput(inputRef.getIndex()); flattenedExps.add( Pair.of(new RexInputRef(newField.i + j, newField.e), final RexInputRef inputRef = (RexInputRef) oldOperands.get(0); final Ord<RelDataType> newField = getNewFieldForOldInput(inputRef.getIndex()); newExp = rexBuilder.makeCall(exp.getType(), ((RexCall) exp).getOperator(),
getNewFieldForOldInput(inputRef.getIndex()); iInput += newField.i; return new RexInputRef(iInput, removeDistinct(newField.e));
RexInputRef inputRef = (RexInputRef) refExp; final Ord<RelDataType> newField = getNewFieldForOldInput(inputRef.getIndex()); iInput += newField.i; return new RexInputRef(iInput, removeDistinct(newField.e));
if (conditionRef != null) { final Ord<RelDataType> newField = getNewFieldForOldInput(conditionRef.getIndex()); programBuilder.addCondition(new RexLocalRef(newField.i, newField.e));
if (conditionRef != null) { final Ord<RelDataType> newField = getNewFieldForOldInput(conditionRef.getIndex()); programBuilder.addCondition(new RexLocalRef(newField.i, newField.e));