private DataType determineType()

in tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/eval/BinaryEval.java [76:120]


  private DataType determineType(DataType left, DataType right) throws InvalidEvalException {
    switch (left.getType()) {
    case INT4: {
      switch(right.getType()) {
      case INT2:
      case INT4: return CatalogUtil.newSimpleDataType(Type.INT4);
      case INT8: return CatalogUtil.newSimpleDataType(Type.INT8);
      case FLOAT4: return CatalogUtil.newSimpleDataType(Type.FLOAT4);
      case FLOAT8: return CatalogUtil.newSimpleDataType(Type.FLOAT8);
      }
    }

    case INT8: {
      switch(right.getType()) {
      case INT2:
      case INT4:
      case INT8: return CatalogUtil.newSimpleDataType(Type.INT8);
      case FLOAT4:
      case FLOAT8: return CatalogUtil.newSimpleDataType(Type.FLOAT8);
      }
    }

    case FLOAT4: {
      switch(right.getType()) {
      case INT2:
      case INT4:
      case INT8:
      case FLOAT4:
      case FLOAT8: return CatalogUtil.newSimpleDataType(Type.FLOAT8);
      }
    }

    case FLOAT8: {
      switch(right.getType()) {
      case INT2:
      case INT4:
      case INT8:
      case FLOAT4:
      case FLOAT8: return CatalogUtil.newSimpleDataType(Type.FLOAT8);
      }
    }

    default: return left;
    }
  }