Merge remote-tracking branch 'origin/master' into escape-results-from-dump

This commit is contained in:
Andrew Thornton 2022-01-05 20:42:29 +00:00
commit 31415fe666
No known key found for this signature in database
GPG Key ID: 3CDE74631F13A748
1 changed files with 12 additions and 9 deletions

View File

@ -440,16 +440,14 @@ func (engine *Engine) DumpTables(tables []*schemas.Table, w io.Writer, tp ...sch
return engine.dumpTables(context.Background(), tables, w, tp...) return engine.dumpTables(context.Background(), tables, w, tp...)
} }
func formatBool(s string, dstDialect dialects.Dialect) string { func formatBool(s bool, dstDialect dialects.Dialect) string {
if dstDialect.URI().DBType == schemas.MSSQL { if dstDialect.URI().DBType != schemas.POSTGRES {
switch s { if s {
case "true":
return "1" return "1"
case "false": }
return "0" return "0"
} }
} return strconv.FormatBool(s)
return s
} }
var controlCharactersRe = regexp.MustCompile(`[\x00-\x1f\x7f]+`) var controlCharactersRe = regexp.MustCompile(`[\x00-\x1f\x7f]+`)
@ -595,8 +593,13 @@ func (engine *Engine) dumpTables(ctx context.Context, tables []*schemas.Table, w
return err return err
} }
} else { } else {
if stp.IsBool() || (dstDialect.URI().DBType == schemas.MSSQL && strings.EqualFold(stp.Name, schemas.Bit)) { if table.Columns()[i].SQLType.IsBool() || stp.IsBool() || (dstDialect.URI().DBType == schemas.MSSQL && strings.EqualFold(stp.Name, schemas.Bit)) {
if _, err = io.WriteString(w, formatBool(s.String, dstDialect)); err != nil { val, err := strconv.ParseBool(s.String)
if err != nil {
return err
}
if _, err = io.WriteString(w, formatBool(val, dstDialect)); err != nil {
return err return err
} }
} else if stp.IsNumeric() { } else if stp.IsNumeric() {