func driverTypeToGoTypeLow()

in snapshot/mysql.go [210:255]


func driverTypeToGoTypeLow(p interface{}, schema *types.ColumnSchema) (v interface{}, size int64) {
	switch f := p.(type) {
	case *sql.NullInt64:
		if f.Valid {
			if schema.DataType != "bigint" {
				v = int32(f.Int64)
				size = 4
			} else {
				v = f.Int64
				size = 8
			}
		}
	case *sql.NullBool:
		if f.Valid {
			v = f.Bool
			size = int64(1)
		}
	case *sql.NullString:
		if f.Valid {
			v = f.String
			size = int64(len(f.String))
		}
	case *sql.NullTime:
		if f.Valid {
			v = f.Time
			size = 20
		}
	case *sql.NullFloat64:
		if f.Valid {
			if schema.DataType == "float" {
				v = float32(f.Float64)
				size = 4
			} else {
				v = f.Float64
				size = 8
			}
		}
	case *sql.RawBytes:
		if f != nil {
			b := []byte(*f)
			v = b
			size = int64(len(b))
		}
	}
	return
}