13
13
*/
14
14
package io .trino .operator .scalar ;
15
15
16
+ import com .fasterxml .jackson .core .JsonFactory ;
16
17
import com .fasterxml .jackson .core .JsonParser ;
17
18
import com .fasterxml .jackson .core .JsonToken ;
19
+ import com .fasterxml .jackson .databind .ObjectMapper ;
18
20
import com .google .common .collect .ImmutableList ;
19
21
import io .airlift .slice .Slice ;
20
22
import io .trino .annotation .UsedByGeneratedCode ;
41
43
import static io .trino .spi .type .TypeSignature .arrayType ;
42
44
import static io .trino .type .JsonType .JSON ;
43
45
import static io .trino .util .Failures .checkCondition ;
44
- import static io .trino .util .JsonUtil .JSON_FACTORY ;
45
46
import static io .trino .util .JsonUtil .canCastFromJson ;
47
+ import static io .trino .util .JsonUtil .createJsonFactory ;
46
48
import static io .trino .util .JsonUtil .createJsonParser ;
47
49
import static io .trino .util .JsonUtil .truncateIfNecessaryForErrorMessage ;
48
50
import static io .trino .util .Reflection .methodHandle ;
@@ -54,6 +56,13 @@ public class JsonToArrayCast
54
56
public static final JsonToArrayCast JSON_TO_ARRAY = new JsonToArrayCast ();
55
57
private static final MethodHandle METHOD_HANDLE = methodHandle (JsonToArrayCast .class , "toArray" , ArrayType .class , BlockBuilderAppender .class , ConnectorSession .class , Slice .class );
56
58
59
+ private static final JsonFactory JSON_FACTORY = createJsonFactory ();
60
+
61
+ static {
62
+ // Changes factory. Necessary for JsonParser.readValueAsTree to work.
63
+ new ObjectMapper (JSON_FACTORY );
64
+ }
65
+
57
66
private JsonToArrayCast ()
58
67
{
59
68
super (FunctionMetadata .scalarBuilder ()
0 commit comments