[ 
https://issues.apache.org/jira/browse/FLINK-9477?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17267609#comment-17267609
 ] 

Jark Wu commented on FLINK-9477:
--------------------------------

I think JSON function is an important long-missing feature and we should 
support this in the next release. 

But I reconsider the API again, and have some thoughts.

Currentlly, all the json path string requires the {{lax}} or {{strict}} prefix, 
e.g. {{JSON_VALUE(json, 'lax $.foo')}}.

Strict mode is used to examine data from a strict schema perspective, for 
example, to look for data that diverges from an expected schema. Therefore, 
strict mode raises an error if the data does not strictly adhere to the 
requirements of a path expression. Lax mode is intended to be more forgiving, 
so lax mode converts errors to empty JSON sequences. 

However, Flink as a bigdata streaming processing system, an long-running 
service, the job shouldn't fail even dirty data arrives. Even if we want to 
examine dirty data, this should be a job level configuration and take effect to 
all functions. Therefore, we don't support "strict" mode and users have to 
write "lax" prefix, this sounds not useful. Why not eliminate the "lax" prefix? 

I also investivate other databases/systems, all of them don't follow the SQL 
standard, and only use the json path string without "lax" or "strict" prefix, 
e.g. MySQL[1], Oracle[2], SqlServer[3], Trino(Presto)[4].

Thus, I suggest to support the json path without "lax" or "strict" prefix and 
converts errors to empty or null json sequences. 

What do you think ? [~x1q1j1] [~lzljs3620320] [~docete] [~danny0405] (the FLIP 
voters).


[1]: 
https://dev.mysql.com/doc/refman/5.7/en/json-search-functions.html#function_json-extract
[2]: https://docs.oracle.com/database/121/ADXDB/json.htm#ADXDB6263
[3]: 
https://docs.microsoft.com/en-us/sql/t-sql/functions/json-value-transact-sql?view=sql-server-2017
[4]: https://trino.io/docs/current/functions/json.html#json-functions

> FLIP-90: Support SQL 2016 JSON functions in Flink SQL
> -----------------------------------------------------
>
>                 Key: FLINK-9477
>                 URL: https://issues.apache.org/jira/browse/FLINK-9477
>             Project: Flink
>          Issue Type: New Feature
>          Components: Table SQL / API
>            Reporter: Shuyi Chen
>            Assignee: Forward Xu
>            Priority: Major
>             Fix For: 1.13.0
>
>
> FLIP Link 
> https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=141724550



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to