From 7e981f5f5e392d28cb700449bc03b893d6f04794 Mon Sep 17 00:00:00 2001 From: rosbit Date: Sun, 5 Apr 2020 04:49:44 +0000 Subject: [PATCH] fix bug for mis-converting uint64 to int64 (#1647) fix bug for mis-converting uint64 to int64 Co-authored-by: rosbit Reviewed-on: https://gitea.com/xorm/xorm/pulls/1647 --- internal/statements/statement.go | 3 +-- internal/statements/update.go | 3 +-- internal/statements/values.go | 2 +- 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/internal/statements/statement.go b/internal/statements/statement.go index 22625650..ed7bdaeb 100644 --- a/internal/statements/statement.go +++ b/internal/statements/statement.go @@ -797,8 +797,7 @@ func (statement *Statement) buildConds2(table *schemas.Table, bean interface{}, if !requiredField && fieldValue.Uint() == 0 { continue } - t := int64(fieldValue.Uint()) - val = reflect.ValueOf(&t).Interface() + val = fieldValue.Interface() case reflect.Struct: if fieldType.ConvertibleTo(schemas.TimeType) { t := fieldValue.Convert(schemas.TimeType).Interface().(time.Time) diff --git a/internal/statements/update.go b/internal/statements/update.go index 2bd7ddd3..b6ae118e 100644 --- a/internal/statements/update.go +++ b/internal/statements/update.go @@ -190,8 +190,7 @@ func (statement *Statement) BuildUpdates(tableValue reflect.Value, if !requiredField && fieldValue.Uint() == 0 { continue } - t := int64(fieldValue.Uint()) - val = reflect.ValueOf(&t).Interface() + val = fieldValue.Interface() case reflect.Struct: if fieldType.ConvertibleTo(schemas.TimeType) { t := fieldValue.Convert(schemas.TimeType).Interface().(time.Time) diff --git a/internal/statements/values.go b/internal/statements/values.go index 0ab174d6..a1102c54 100644 --- a/internal/statements/values.go +++ b/internal/statements/values.go @@ -147,7 +147,7 @@ func (statement *Statement) Value2Interface(col *schemas.Column, fieldValue refl } return nil, ErrUnSupportedType case reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uint: - return int64(fieldValue.Uint()), nil + return fieldValue.Uint(), nil default: return fieldValue.Interface(), nil }