column types text, varchar, *char return as strings:

As opposed to []byte arrays. This brings sqlite closer
in line with other dbs like postgres, allowing downstream
consumers to assume the scanned value is string across underlying
dbs.
This commit is contained in:
Dimitri Roche 2019-01-26 09:16:35 -05:00 committed by Yasuhiro Matsumoto
parent 3fa1c550ff
commit abc8991d4d
No known key found for this signature in database
GPG Key ID: 622DE34DC490584B
1 changed files with 8 additions and 2 deletions

View File

@ -223,6 +223,7 @@ var SQLiteTimestampFormats = []string{
const ( const (
columnDate string = "date" columnDate string = "date"
columnDatetime string = "datetime" columnDatetime string = "datetime"
columnText string = "text"
columnTimestamp string = "timestamp" columnTimestamp string = "timestamp"
) )
@ -2061,10 +2062,15 @@ func (rc *SQLiteRows) Next(dest []driver.Value) error {
t = t.In(rc.s.c.loc) t = t.In(rc.s.c.loc)
} }
dest[i] = t dest[i] = t
case columnText:
dest[i] = s
default: default:
if strings.Contains(strings.ToLower(rc.decltype[i]), "char") {
dest[i] = s
} else {
dest[i] = []byte(s) dest[i] = []byte(s)
} }
}
} }
} }
return nil return nil