}
private static DataType resolveType(List<Projection> projections, int projectionIdx, int columnIdx, List<DataType> inputTypes) {
Projection projection = projections.get(projectionIdx);
Symbol symbol = projection.outputs().get(columnIdx);
DataType type = DataTypeVisitor.fromSymbol(symbol);
if (type == null || (type.equals(DataTypes.UNDEFINED) && symbol instanceof InputColumn)) {
if (projectionIdx > 0) {
if (symbol instanceof InputColumn) {
columnIdx = ((InputColumn) symbol).index();
}
return resolveType(projections, projectionIdx - 1, columnIdx, inputTypes);