diff --git a/sql/rowexec/agg.go b/sql/rowexec/agg.go index d777ab18a4..e43911065b 100644 --- a/sql/rowexec/agg.go +++ b/sql/rowexec/agg.go @@ -257,11 +257,18 @@ func groupingKey( } } - t, isStringType := expr.Type().(sql.StringType) - if isStringType && v != nil { - v, err = types.ConvertToString(ctx, v, t, nil) + extendedType, isExtendedType := expr.Type().(types.ExtendedType) + stringType, isStringType := expr.Type().(sql.StringType) + + if isExtendedType && v != nil { + bytes, err := extendedType.SerializeValue(ctx, v) + if err == nil { + _, err = fmt.Fprint(hash, string(bytes)) + } + } else if isStringType && v != nil { + v, err = types.ConvertToString(ctx, v, stringType, nil) if err == nil { - err = t.Collation().WriteWeightString(hash, v.(string)) + err = stringType.Collation().WriteWeightString(hash, v.(string)) } } else { _, err = fmt.Fprintf(hash, "%v", v)