public void set()

in odps-sdk-impl/odps-mapred-bridge/src/main/java/com/aliyun/odps/mapred/bridge/WritableRecord.java [107:206]


  public void set(int idx, Object value) {
    if (value == null || value.equals(NullWritable.get())) {
      values[idx] = null;
      return;
    }
    if (value instanceof Writable) {
      values[idx] = (Writable) value;
      return;
    }

    switch (columns[idx].getType()) {
      case STRING:
        if (value instanceof String) {
          setString(idx, (String) value);
        } else {
          setString(idx, (byte[]) value);
        }
        break;
      case BIGINT:
        if (value instanceof Long) {
          setBigint(idx, (Long) value);
        } else if (value instanceof Integer) {
          setBigint(idx, new Long((Integer) value));
        } else {
          throw new RuntimeException("Unsupported value type " + value.getClass().getName() +
              " for column type " + columns[idx].getType());
        }
        break;
      case BOOLEAN:
        setBoolean(idx, (Boolean) value);
        break;
      case DOUBLE:
        if (value instanceof Double) {
          setDouble(idx, (Double) value);
        } else if (value instanceof Float) {
          setDouble(idx, new Double((Float) value));
        } else {
          throw new RuntimeException("Unsupported value type " + value.getClass().getName() +
              " for column type " + columns[idx].getType());
        }
        break;
      case DATETIME:
        setDatetime(idx, (Date) value);
        break;
      case DECIMAL:
        if (value instanceof Long) {
          setDecimal(idx, new BigDecimal( (Long) value));
        } else if (value instanceof Integer) {
          setDecimal(idx, new BigDecimal( (Integer) value));
        } else if (value instanceof Double) {
          setDecimal(idx, new BigDecimal( (Double) value));
        } else if (value instanceof Float) {
          setDecimal(idx, new BigDecimal( (Float) value));
        } else if (value instanceof BigDecimal) {
          setDecimal(idx, (BigDecimal) value);
        } else {
          setDecimal(idx, new BigDecimal( (String) value));
        }
        break;
      case TINYINT:
        setTinyint(idx, (Byte)value);
        break;
      case SMALLINT:
        setSmallint(idx, (Short)value);
        break;
      case INT:
        setInt(idx, (Integer)value);
        break;
      case FLOAT:
        setFloat(idx, (Float)value);
        break;
      case CHAR:
        setChar(idx, (Char) value);
        break;
      case VARCHAR:
        setVarchar(idx, (Varchar) value);
        break;
      case DATE:
        setDate(idx, (java.sql.Date) value);
        break;
      case TIMESTAMP:
        setTimestamp(idx, (java.sql.Timestamp) value);
        break;
      case BINARY:
        setBinary(idx, (Binary) value);
        break;
      case INTERVAL_DAY_TIME:
        setIntervalDayTime(idx, (IntervalDayTime) value);
        break;
      case INTERVAL_YEAR_MONTH:
        setIntervalYearMonth(idx, (IntervalYearMonth) value);
        break;
      case STRUCT:
      case MAP:
      case ARRAY:
        values[idx] = (Writable)value;
      default:
        throw new RuntimeException("Unsupported type " + columns[idx].getType());
    }
  }