From 875f96c37cebddfc0d637ebd0c807881d48bef07 Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Sat, 9 Sep 2017 18:29:26 +0800 Subject: [PATCH] fix error on mysql --- convert.go | 12 ++++++++++++ session.go | 1 - session_convert.go | 3 +-- 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/convert.go b/convert.go index fbd24b5b..0504bef1 100644 --- a/convert.go +++ b/convert.go @@ -334,3 +334,15 @@ func convertInt(v interface{}) (int64, error) { } return 0, fmt.Errorf("unsupported type: %v", v) } + +func asBool(bs []byte) (bool, error) { + if len(bs) == 0 { + return false, nil + } + if bs[0] == 0x00 { + return false, nil + } else if bs[0] == 0x01 { + return true, nil + } + return strconv.ParseBool(string(bs)) +} diff --git a/session.go b/session.go index 45c1dcb6..c69ac9e5 100644 --- a/session.go +++ b/session.go @@ -313,7 +313,6 @@ func (session *Session) rows2Beans(rows *core.Rows, fields []string, fieldsCount if err != nil { return err } - err = sliceValueSetFunc(&newValue, pk) if err != nil { return err diff --git a/session_convert.go b/session_convert.go index fc244e60..f2c949ba 100644 --- a/session_convert.go +++ b/session_convert.go @@ -144,8 +144,7 @@ func (session *Session) bytes2Value(col *core.Column, fieldValue *reflect.Value, case reflect.String: fieldValue.SetString(string(data)) case reflect.Bool: - d := string(data) - v, err := strconv.ParseBool(d) + v, err := asBool(data) if err != nil { return fmt.Errorf("arg %v as bool: %s", key, err.Error()) }