From b1ead48e871e07ed66447257e571da0948550e1b Mon Sep 17 00:00:00 2001 From: Julien Schmidt Date: Thu, 4 Jun 2015 15:11:44 +0200 Subject: [PATCH 1/2] Use the custom converter also for pointers --- statement.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/statement.go b/statement.go index f9dae03fa..207ed6d04 100644 --- a/statement.go +++ b/statement.go @@ -119,7 +119,7 @@ func (stmt *mysqlStmt) Query(args []driver.Value) (driver.Rows, error) { type converter struct{} -func (converter) ConvertValue(v interface{}) (driver.Value, error) { +func (c converter) ConvertValue(v interface{}) (driver.Value, error) { if driver.IsValue(v) { return v, nil } @@ -131,7 +131,7 @@ func (converter) ConvertValue(v interface{}) (driver.Value, error) { if rv.IsNil() { return nil, nil } - return driver.DefaultParameterConverter.ConvertValue(rv.Elem().Interface()) + return c.ConvertValue(rv.Elem().Interface()) case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: return rv.Int(), nil case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32: From d93467bf85cfcc2952d317bc4c5e1ff83c4b1c89 Mon Sep 17 00:00:00 2001 From: Julien Schmidt Date: Thu, 4 Jun 2015 15:14:52 +0200 Subject: [PATCH 2/2] converter: Use strconv.FormatUint instead of fmt.Sprintf --- statement.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/statement.go b/statement.go index 207ed6d04..6e869b340 100644 --- a/statement.go +++ b/statement.go @@ -12,6 +12,7 @@ import ( "database/sql/driver" "fmt" "reflect" + "strconv" ) type mysqlStmt struct { @@ -139,7 +140,7 @@ func (c converter) ConvertValue(v interface{}) (driver.Value, error) { case reflect.Uint64: u64 := rv.Uint() if u64 >= 1<<63 { - return fmt.Sprintf("%d", u64), nil + return strconv.FormatUint(u64, 10), nil } return int64(u64), nil case reflect.Float32, reflect.Float64: