func castValueFromString()

in datahub/types.go [341:402]


func castValueFromString(str string, ft FieldType) (DataType, error) {
	switch ft {
	case BIGINT:
		v, err := strconv.ParseInt(str, 10, 64)
		if err == nil {
			return Bigint(v), nil
		}
		return nil, err
	case STRING:
		return String(str), nil
	case BOOLEAN:
		v, err := strconv.ParseBool(str)
		if err == nil {
			return Boolean(v), nil
		}
		return nil, err
	case DOUBLE:
		v, err := strconv.ParseFloat(str, 64)
		if err == nil {
			return Double(v), nil
		}
		return nil, err
	case TIMESTAMP:
		v, err := strconv.ParseUint(str, 10, 64)
		if err == nil {
			return Timestamp(v), nil
		}
		return nil, err
	case DECIMAL:
		v, err := decimal.NewFromString(str)
		if err == nil {
			return Decimal(v), nil
		}
		return nil, err
	case INTEGER:
		v, err := strconv.ParseInt(str, 10, 32)
		if err == nil {
			return Integer(v), nil
		}
		return nil, err
	case FLOAT:
		v, err := strconv.ParseFloat(str, 32)
		if err == nil {
			return Float(v), nil
		}
		return nil, err
	case TINYINT:
		v, err := strconv.ParseInt(str, 10, 32)
		if err == nil {
			return Tinyint(v), nil
		}
		return nil, err
	case SMALLINT:
		v, err := strconv.ParseInt(str, 10, 32)
		if err == nil {
			return Smallint(v), nil
		}
		return nil, err
	default:
		return nil, fmt.Errorf("not support field type %s", string(ft))
	}
}