Skip to content

Commit 186222f

Browse files
authored
Merge pull request #3091 from dolthub/aaron/json-wrapper-thread-context
sql/types: JSONWrapper: Thread Context on some methods on JSON-related types, such as ToInterface and Compare.
2 parents 50001bd + 1c3c46f commit 186222f

37 files changed

+113
-109
lines changed

enginetest/evaluation.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -852,7 +852,7 @@ func WidenRow(t *testing.T, sch sql.Schema, row sql.Row) sql.Row {
852852
widened := make(sql.Row, len(row))
853853
for i, v := range row {
854854
if i < len(sch) && types.IsJSON(sch[i].Type) {
855-
widened[i] = widenJSONValues(v)
855+
widened[i] = widenJSONValues(t.Context(), v)
856856
continue
857857
}
858858

@@ -893,7 +893,7 @@ func widenValue(t *testing.T, v interface{}) (vw interface{}) {
893893
return vw
894894
}
895895

896-
func widenJSONValues(val interface{}) sql.JSONWrapper {
896+
func widenJSONValues(ctx context.Context, val interface{}) sql.JSONWrapper {
897897
if val == nil {
898898
return nil
899899
}
@@ -907,7 +907,7 @@ func widenJSONValues(val interface{}) sql.JSONWrapper {
907907
js = types.MustJSON(str)
908908
}
909909

910-
doc, err := js.ToInterface()
910+
doc, err := js.ToInterface(ctx)
911911
if err != nil {
912912
panic(err)
913913
}

sql/core.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
package sql
1616

1717
import (
18+
"context"
1819
"encoding/json"
1920
"fmt"
2021
trace2 "runtime/trace"
@@ -324,7 +325,7 @@ func ConvertToBool(ctx *Context, v interface{}) (bool, error) {
324325
}
325326
}
326327

327-
func ConvertToVector(v interface{}) ([]float64, error) {
328+
func ConvertToVector(ctx context.Context, v interface{}) ([]float64, error) {
328329
switch b := v.(type) {
329330
case []float64:
330331
return b, nil
@@ -336,7 +337,7 @@ func ConvertToVector(v interface{}) ([]float64, error) {
336337
}
337338
return convertJsonInterfaceToVector(val)
338339
case JSONWrapper:
339-
val, err := b.ToInterface()
340+
val, err := b.ToInterface(ctx)
340341
if err != nil {
341342
return nil, err
342343
}

sql/expression/function/aggregation/json_agg.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,7 @@ func (j *jsonObjectBuffer) Update(ctx *sql.Context, row sql.Row) error {
163163
return err
164164
}
165165
if js, ok := val.(sql.JSONWrapper); ok {
166-
val, err = js.ToInterface()
166+
val, err = js.ToInterface(ctx)
167167
if err != nil {
168168
return err
169169
}

sql/expression/function/aggregation/unary_agg_buffers.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -655,7 +655,7 @@ func (j *jsonArrayBuffer) Update(ctx *sql.Context, row sql.Row) error {
655655
return err
656656
}
657657
if js, ok := v.(sql.JSONWrapper); ok {
658-
v, err = js.ToInterface()
658+
v, err = js.ToInterface(ctx)
659659
if err != nil {
660660
return err
661661
}

sql/expression/function/aggregation/window_functions.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1055,7 +1055,7 @@ func (a *WindowedJSONArrayAgg) aggregateVals(ctx *sql.Context, interval sql.Wind
10551055
return nil, err
10561056
}
10571057
if js, ok := v.(sql.JSONWrapper); ok {
1058-
v, err = js.ToInterface()
1058+
v, err = js.ToInterface(ctx)
10591059
if err != nil {
10601060
return nil, err
10611061
}
@@ -1146,7 +1146,7 @@ func (a *WindowedJSONObjectAgg) aggregateVals(ctx *sql.Context, interval sql.Win
11461146
return nil, err
11471147
}
11481148
if js, ok := val.(sql.JSONWrapper); ok {
1149-
val, err = js.ToInterface()
1149+
val, err = js.ToInterface(ctx)
11501150
if err != nil {
11511151
return nil, err
11521152
}

sql/expression/function/json/json_array.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ func (j *JSONArray) Eval(ctx *sql.Context, row sql.Row) (interface{}, error) {
113113

114114
switch v := val.(type) {
115115
case sql.JSONWrapper:
116-
val, err = v.ToInterface()
116+
val, err = v.ToInterface(ctx)
117117
if err != nil {
118118
return nil, err
119119
}

sql/expression/function/json/json_array_append.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ func (j JSONArrayAppend) Eval(ctx *sql.Context, row sql.Row) (interface{}, error
8888

8989
// Apply the path-value pairs to the document.
9090
for _, pair := range pairs {
91-
doc, _, err = doc.ArrayAppend(pair.path, pair.val)
91+
doc, _, err = doc.ArrayAppend(ctx, pair.path, pair.val)
9292
if err != nil {
9393
return nil, err
9494
}

sql/expression/function/json/json_array_insert.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ func (j JSONArrayInsert) Eval(ctx *sql.Context, row sql.Row) (interface{}, error
8989

9090
// Apply the path-value pairs to the document.
9191
for _, pair := range pairs {
92-
doc, _, err = doc.ArrayInsert(pair.path, pair.val)
92+
doc, _, err = doc.ArrayInsert(ctx, pair.path, pair.val)
9393
if err != nil {
9494
return nil, err
9595
}

sql/expression/function/json/json_common.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ func MutableJsonDoc(ctx context.Context, wrapper sql.JSONWrapper) (types.Mutable
102102
return mutable, nil
103103
}
104104

105-
val, err := clonedJsonWrapper.ToInterface()
105+
val, err := clonedJsonWrapper.ToInterface(ctx)
106106
if err != nil {
107107
return nil, err
108108
}

sql/expression/function/json/json_contains.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,7 @@ func (j *JSONContains) Eval(ctx *sql.Context, row sql.Row) (interface{}, error)
147147
return nil, err
148148
}
149149

150-
extracted, err := types.LookupJSONValue(target, path.(string))
150+
extracted, err := types.LookupJSONValue(ctx, target, path.(string))
151151
if err != nil {
152152
return nil, err
153153
}
@@ -162,11 +162,11 @@ func (j *JSONContains) Eval(ctx *sql.Context, row sql.Row) (interface{}, error)
162162
}
163163

164164
// Now determine whether the candidate value exists in the target
165-
targetVal, err := target.ToInterface()
165+
targetVal, err := target.ToInterface(ctx)
166166
if err != nil {
167167
return nil, err
168168
}
169-
candidateVal, err := candidate.ToInterface()
169+
candidateVal, err := candidate.ToInterface(ctx)
170170
if err != nil {
171171
return nil, err
172172
}

0 commit comments

Comments
 (0)