/** * Returns a list of all atomic types in a list. */ private static void getTypeList( ImmutableList<RelDataType> inTypes, List<RelDataType> flatTypes) { for (RelDataType inType : inTypes) { if (inType instanceof RelCrossType) { getTypeList(((RelCrossType) inType).types, flatTypes); } else { flatTypes.add(inType); } } }
/** * Returns a list of all atomic types in a list. */ private static void getTypeList( ImmutableList<RelDataType> inTypes, List<RelDataType> flatTypes) { for (RelDataType inType : inTypes) { if (inType instanceof RelCrossType) { getTypeList(((RelCrossType) inType).types, flatTypes); } else { flatTypes.add(inType); } } }
public RelDataType createJoinType(RelDataType... types) { assert types != null; assert types.length >= 1; final List<RelDataType> flattenedTypes = new ArrayList<>(); getTypeList(ImmutableList.copyOf(types), flattenedTypes); return canonize( new RelCrossType(flattenedTypes, getFieldList(flattenedTypes))); }
public RelDataType createJoinType(RelDataType... types) { assert types != null; assert types.length >= 1; final List<RelDataType> flattenedTypes = new ArrayList<>(); getTypeList(ImmutableList.copyOf(types), flattenedTypes); return canonize( new RelCrossType(flattenedTypes, getFieldList(flattenedTypes))); }