Skip to content

Commit fe876b2

Browse files
committed
Allow hash functions to work even when input isn't valid utf-8
1 parent 62c7e73 commit fe876b2

File tree

2 files changed

+6
-6
lines changed

2 files changed

+6
-6
lines changed

sql/expression/function/hash.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -67,13 +67,13 @@ func (f *MD5) Eval(ctx *sql.Context, row sql.Row) (interface{}, error) {
6767
return nil, nil
6868
}
6969

70-
val, _, err := types.LongText.Convert(ctx, arg)
70+
val, _, err := types.LongBlob.Convert(ctx, arg)
7171
if err != nil {
7272
return nil, err
7373
}
7474

7575
h := md5.New()
76-
_, err = io.WriteString(h, val.(string))
76+
_, err = h.Write(val.([]byte))
7777
if err != nil {
7878
return nil, err
7979
}
@@ -188,7 +188,7 @@ func (f *SHA2) Eval(ctx *sql.Context, row sql.Row) (interface{}, error) {
188188
return nil, nil
189189
}
190190

191-
val, _, err := types.LongText.Convert(ctx, arg)
191+
val, _, err := types.LongBlob.Convert(ctx, arg)
192192
if err != nil {
193193
return nil, err
194194
}
@@ -211,7 +211,7 @@ func (f *SHA2) Eval(ctx *sql.Context, row sql.Row) (interface{}, error) {
211211
return nil, nil
212212
}
213213

214-
_, err = io.WriteString(h, val.(string))
214+
_, err = h.Write(val.([]byte))
215215
if err != nil {
216216
return nil, err
217217
}

sql/expression/function/tobase64_frombase64.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,11 +77,11 @@ func (t *ToBase64) Eval(ctx *sql.Context, row sql.Row) (interface{}, error) {
7777
}
7878
strBytes = encodedBytes
7979
} else {
80-
val, _, err = types.LongText.Convert(ctx, val)
80+
val, _, err = types.LongBlob.Convert(ctx, val)
8181
if err != nil {
8282
return nil, sql.ErrInvalidType.New(reflect.TypeOf(val))
8383
}
84-
strBytes = []byte(val.(string))
84+
strBytes = val.([]byte)
8585
}
8686

8787
encoded := base64.StdEncoding.EncodeToString(strBytes)

0 commit comments

Comments
 (0)