From 23ffb3d2a0799ce319696d8821afd9551131ea7a Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Mon, 5 May 2014 17:56:04 +0800 Subject: [PATCH] bug fixed for dump --- engine.go | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/engine.go b/engine.go index d9d49b09..0143e5b9 100644 --- a/engine.go +++ b/engine.go @@ -297,6 +297,7 @@ func (engine *Engine) DumpAll(w io.Writer) error { if err != nil { return err } + cols, err := rows.Columns() if err != nil { return err @@ -317,15 +318,17 @@ func (engine *Engine) DumpAll(w io.Writer) error { } var temp string - for _, d := range dest { + for i, d := range dest { + col := table.GetColumn(cols[i]) if d == nil { temp += ", NULL" - } else if reflect.TypeOf(d).Kind() == reflect.String { - temp += ", '" + strings.Replace(d.(string), "'", "''", -1) + "'" - } else if reflect.TypeOf(d).Kind() == reflect.Slice { + } else if col.SQLType.IsText() || col.SQLType.IsTime() { + var v = fmt.Sprintf("%s", d) + temp += ", '" + strings.Replace(v, "'", "''", -1) + "'" + } else if col.SQLType.IsBlob() /*reflect.TypeOf(d).Kind() == reflect.Slice*/ { temp += fmt.Sprintf(", %s", engine.dialect.FormatBytes(d.([]byte))) } else { - temp += fmt.Sprintf(", %v", d) + temp += fmt.Sprintf(", %s", d) } } _, err = io.WriteString(w, temp[2:]+");\n\n")