improve code

This commit is contained in:
Lunny Xiao 2021-07-10 23:40:33 +08:00
parent dcf63e09ca
commit 09835b5673
2 changed files with 24 additions and 6 deletions

View File

@ -348,7 +348,6 @@ func convertAssign(dest, src interface{}, originalLocation *time.Location, conve
*d = cloneBytes(s) *d = cloneBytes(s)
return nil return nil
} }
case time.Time: case time.Time:
switch d := dest.(type) { switch d := dest.(type) {
case *string: case *string:

View File

@ -576,7 +576,6 @@ func (engine *Engine) dumpTables(tables []*schemas.Table, w io.Writer, tp ...sch
cols := table.ColumnsSeq() cols := table.ColumnsSeq()
dstCols := dstTable.ColumnsSeq() dstCols := dstTable.ColumnsSeq()
dstColumns := dstTable.Columns()
colNames := engine.dialect.Quoter().Join(cols, ", ") colNames := engine.dialect.Quoter().Join(cols, ", ")
destColNames := dstDialect.Quoter().Join(dstCols, ", ") destColNames := dstDialect.Quoter().Join(dstCols, ", ")
@ -600,15 +599,35 @@ func (engine *Engine) dumpTables(tables []*schemas.Table, w io.Writer, tp ...sch
return err return err
} }
scanResults, err := sess.engine.scanInterfaces(rows, types) scanResults, err := sess.engine.scanStringInterface(rows, types)
if err != nil { if err != nil {
return err return err
} }
for i, scanResult := range scanResults { for i, scanResult := range scanResults {
s := formatColumnValue(engine.DatabaseTZ, dstDialect, scanResult, dstColumns[i]) stp := schemas.SQLType{Name: types[i].DatabaseTypeName()}
if _, err = io.WriteString(w, s); err != nil { if stp.IsNumeric() {
s := scanResult.(*sql.NullString)
if s.Valid {
if _, err = io.WriteString(w, s.String); err != nil {
return err return err
} }
} else {
if _, err = io.WriteString(w, "NULL"); err != nil {
return err
}
}
} else {
s := scanResult.(*sql.NullString)
if s.Valid {
if _, err = io.WriteString(w, "'"+strings.ReplaceAll(s.String, "'", "''")+"'"); err != nil {
return err
}
} else {
if _, err = io.WriteString(w, "NULL"); err != nil {
return err
}
}
}
if i < len(scanResults)-1 { if i < len(scanResults)-1 {
if _, err = io.WriteString(w, ","); err != nil { if _, err = io.WriteString(w, ","); err != nil {
return err return err