Skip to content

Commit 2385722

Browse files
committed
add miss unwraps
1 parent a1bcdb1 commit 2385722

File tree

7 files changed

+76
-0
lines changed

7 files changed

+76
-0
lines changed

sql/expression/function/concat_ws.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,12 @@ func (f *ConcatWithSeparator) Eval(ctx *sql.Context, row sql.Row) (interface{},
127127
return nil, err
128128
}
129129

130+
// Handle Dolt's TextStorage wrapper that doesn't convert to plain string
131+
val, err = sql.UnwrapAny(ctx, val)
132+
if err != nil {
133+
return nil, err
134+
}
135+
130136
parts = append(parts, val.(string))
131137
}
132138

sql/expression/function/export_set.go

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -171,6 +171,13 @@ func (e *ExportSet) Eval(ctx *sql.Context, row sql.Row) (interface{}, error) {
171171
if err != nil {
172172
return nil, err
173173
}
174+
175+
// Handle Dolt's TextStorage wrapper that doesn't convert to plain string
176+
sepStr, err = sql.UnwrapAny(ctx, sepStr)
177+
if err != nil {
178+
return nil, err
179+
}
180+
174181
separatorVal = sepStr.(string)
175182
}
176183

@@ -206,11 +213,23 @@ func (e *ExportSet) Eval(ctx *sql.Context, row sql.Row) (interface{}, error) {
206213
return nil, err
207214
}
208215

216+
// Handle Dolt's TextStorage wrapper that doesn't convert to plain string
217+
onStr, err = sql.UnwrapAny(ctx, onStr)
218+
if err != nil {
219+
return nil, err
220+
}
221+
209222
offStr, _, err := types.LongText.Convert(ctx, offVal)
210223
if err != nil {
211224
return nil, err
212225
}
213226

227+
// Handle Dolt's TextStorage wrapper that doesn't convert to plain string
228+
offStr, err = sql.UnwrapAny(ctx, offStr)
229+
if err != nil {
230+
return nil, err
231+
}
232+
214233
bits := bitsInt.(uint64)
215234
on := onStr.(string)
216235
off := offStr.(string)

sql/expression/function/insert.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,12 @@ func (i *Insert) Eval(ctx *sql.Context, row sql.Row) (interface{}, error) {
127127
return nil, err
128128
}
129129

130+
// Handle Dolt's TextStorage wrapper that doesn't convert to plain string
131+
strVal, err = sql.UnwrapAny(ctx, strVal)
132+
if err != nil {
133+
return nil, err
134+
}
135+
130136
posVal, _, err := types.Int64.Convert(ctx, pos)
131137
if err != nil {
132138
return nil, err
@@ -142,6 +148,12 @@ func (i *Insert) Eval(ctx *sql.Context, row sql.Row) (interface{}, error) {
142148
return nil, err
143149
}
144150

151+
// Handle Dolt's TextStorage wrapper that doesn't convert to plain string
152+
newStrVal, err = sql.UnwrapAny(ctx, newStrVal)
153+
if err != nil {
154+
return nil, err
155+
}
156+
145157
s := strVal.(string)
146158
p := posVal.(int64)
147159
l := lengthVal.(int64)

sql/expression/function/locate.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,12 @@ func (l *Locate) Eval(ctx *sql.Context, row sql.Row) (interface{}, error) {
109109
return nil, err
110110
}
111111

112+
// Handle Dolt's TextStorage wrapper that doesn't convert to plain string
113+
substrVal, err = sql.UnwrapAny(ctx, substrVal)
114+
if err != nil {
115+
return nil, err
116+
}
117+
112118
substr, ok := substrVal.(string)
113119
if !ok {
114120
return nil, sql.ErrInvalidArgumentDetails.New("locate", "substring must be a string")
@@ -128,6 +134,12 @@ func (l *Locate) Eval(ctx *sql.Context, row sql.Row) (interface{}, error) {
128134
return nil, err
129135
}
130136

137+
// Handle Dolt's TextStorage wrapper that doesn't convert to plain string
138+
strVal, err = sql.UnwrapAny(ctx, strVal)
139+
if err != nil {
140+
return nil, err
141+
}
142+
131143
str, ok := strVal.(string)
132144
if !ok {
133145
return nil, sql.ErrInvalidArgumentDetails.New("locate", "string must be a string")

sql/expression/function/make_set.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,13 @@ func (m *MakeSet) Eval(ctx *sql.Context, row sql.Row) (interface{}, error) {
143143
if err != nil {
144144
return nil, err
145145
}
146+
147+
// Handle Dolt's TextStorage wrapper that doesn't convert to plain string
148+
valStr, err = sql.UnwrapAny(ctx, valStr)
149+
if err != nil {
150+
return nil, err
151+
}
152+
146153
result = append(result, valStr.(string))
147154
}
148155
}

sql/expression/function/soundex.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,12 @@ func (s *Soundex) Eval(ctx *sql.Context, row sql.Row) (interface{}, error) {
6666
return nil, err
6767
}
6868

69+
// Handle Dolt's TextStorage wrapper that doesn't convert to plain string
70+
v, err = sql.UnwrapAny(ctx, v)
71+
if err != nil {
72+
return nil, err
73+
}
74+
6975
var b strings.Builder
7076
var last rune
7177
for _, c := range strings.ToUpper(v.(string)) {

sql/expression/function/substring.go

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -234,6 +234,13 @@ func (s *SubstringIndex) Eval(ctx *sql.Context, row sql.Row) (interface{}, error
234234
if err != nil {
235235
return nil, err
236236
}
237+
238+
// Handle Dolt's TextStorage wrapper that doesn't convert to plain string
239+
ex, err = sql.UnwrapAny(ctx, ex)
240+
if err != nil {
241+
return nil, err
242+
}
243+
237244
str, ok := ex.(string)
238245
if !ok {
239246
return nil, sql.ErrInvalidType.New(reflect.TypeOf(ex).String())
@@ -247,6 +254,13 @@ func (s *SubstringIndex) Eval(ctx *sql.Context, row sql.Row) (interface{}, error
247254
if err != nil {
248255
return nil, err
249256
}
257+
258+
// Handle Dolt's TextStorage wrapper that doesn't convert to plain string
259+
ex, err = sql.UnwrapAny(ctx, ex)
260+
if err != nil {
261+
return nil, err
262+
}
263+
250264
delim, ok := ex.(string)
251265
if !ok {
252266
return nil, sql.ErrInvalidType.New(reflect.TypeOf(ex).String())

0 commit comments

Comments
 (0)