richardstartin commented on a change in pull request #7412:
URL: https://github.com/apache/pinot/pull/7412#discussion_r704476933



##########
File path: 
pinot-common/src/main/java/org/apache/pinot/common/function/scalar/JsonFunctions.java
##########
@@ -97,9 +102,9 @@ public static String jsonFormat(Object object)
   @ScalarFunction
   public static Object jsonPath(Object object, String jsonPath) {
     if (object instanceof String) {
-      return JsonPath.read((String) object, jsonPath);
+      return PARSE_CONTEXT.parse((String) object).read(jsonPath, 
NO_PREDICATES);

Review comment:
       yes, I don't know why it's allocated each time in the library, it just 
builds a `Configuration` each time (also thread-safe) which makes a wrapper 
around a Jackson `ObjectMapper` (thread-safe) available via 
`configuration.jsonProvider()`:
   
   ```java
       private final Configuration configuration;
   
       public ParseContextImpl() {
           this(Configuration.defaultConfiguration());
       }
   
       public ParseContextImpl(Configuration configuration) {
           this.configuration = configuration;
       }
   
       @Override
       public DocumentContext parse(String json) {
           notEmpty(json, "json string can not be null or empty");
           Object obj = configuration.jsonProvider().parse(json);
           return new JsonContext(obj, configuration);
       }
   ```
   
   It might be best to fix this in the library but there's no guarantee on if 
or when that will get merged...




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to